kernel: Sync ACPICA with Intel's version 20140424.
[dragonfly.git] / sys / contrib / dev / acpica / changes.txt
1 ----------------------------------------
2 24 April 2014. Summary of changes for version 20140424:
3
4 1) ACPICA kernel-resident subsystem:
5
6 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 
7 Some of these tables are known to contain a trailing NULL entry. Lv 
8 Zheng.
9
10 Removed an extraneous error message for the case where there are a large 
11 number of system GPEs (> 124). This was the "32-bit FADT register is too 
12 long to convert to GAS struct" message, which is irrelevant for GPEs 
13 since the GPEx_BLK_LEN fields of the FADT are always used instead of the 
14 (limited capacity) GAS bit length. Also, several changes to ensure proper 
15 support for GPE numbers > 255, where some "GPE number" fields were 8-bits 
16 internally.
17
18 Implemented and deployed additional configuration support for the public 
19 ACPICA external interfaces. Entire classes of interfaces can now be 
20 easily modified or configured out, replaced by stubbed inline functions 
21 by default. Lv Zheng.
22
23 Moved all public ACPICA runtime configuration globals to the public 
24 ACPICA external interface file for convenience. Also, removed some 
25 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
26
27 Documentation: Added a new section to the ACPICA reference describing the 
28 maximum number of GPEs that can be supported by the FADT-defined GPEs in 
29 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 
30 reference.
31
32 Example Code and Data Size: These are the sizes for the OS-independent 
33 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
34 debug version of the code includes the debug output trace mechanism and 
35 has a much larger code and data size.
36
37   Current Release:
38     Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
39     Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
40   Previous Release:
41     Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
42     Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
43
44
45 2) iASL Compiler/Disassembler and Tools:
46
47 iASL and disassembler: Add full support for the LPIT table (Low Power 
48 Idle Table). Includes support in the disassembler, data table compiler, 
49 and template generator.
50
51 AcpiDump utility:
52 1) Add option to force the use of the RSDT (over the XSDT).
53 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
54
55 iASL: Add check for predefined packages that are too large.  For 
56 predefined names that contain subpackages, check if each subpackage is 
57 too large. (Check for too small already exists.)
58
59 Debugger: Updated the GPE command (which simulates a GPE by executing the 
60 GPE code paths in ACPICA). The GPE device is now optional, and defaults 
61 to the GPE 0/1 FADT-defined blocks.
62
63 Unix application OSL: Update line-editing support. Add additional error 
64 checking and take care not to reset terminal attributes on exit if they 
65 were never set. This should help guarantee that the terminal is always 
66 left in the previous state on program exit.
67
68 ----------------------------------------
69 25 March 2014. Summary of changes for version 20140325:
70
71 1) ACPICA kernel-resident subsystem:
72
73 Updated the auto-serialize feature for control methods. This feature 
74 automatically serializes all methods that create named objects in order 
75 to prevent runtime errors. The update adds support to ignore the 
76 currently executing AML SyncLevel when invoking such a method, in order 
77 to prevent disruption of any existing SyncLevel priorities that may exist 
78 in the AML code. Although the use of SyncLevels is relatively rare, this 
79 change fixes a regression where an AE_AML_MUTEX_ORDER exception can 
80 appear on some machines starting with the 20140214 release.
81
82 Added a new external interface to allow the host to install ACPI tables 
83 very early, before the namespace is even created. AcpiInstallTable gives 
84 the host additional flexibility for ACPI table management. Tables can be 
85 installed directly by the host as if they had originally appeared in the 
86 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 
87 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along 
88 with additional internal restructuring and cleanup. See the ACPICA 
89 Reference for interface details. Lv Zheng.
90
91 Added validation of the checksum for all incoming dynamically loaded 
92 tables (via external interfaces or via AML Load/LoadTable operators). Lv 
93 Zheng.
94
95 Updated the use of the AcpiOsWaitEventsComplete interface during Notify 
96 and GPE handler removal. Restructured calls to eliminate possible race 
97 conditions. Lv Zheng.
98
99 Added a warning for the use/execution of the ASL/AML Unload (table) 
100 operator. This will help detect and identify machines that use this 
101 operator if and when it is ever used. This operator has never been seen 
102 in the field and the usage model and possible side-effects of the drastic 
103 runtime action of a full table removal are unknown.
104
105 Reverted the use of #pragma push/pop which was introduced in the 20140214 
106 release. It appears that push and pop are not implemented by enough 
107 compilers to make the use of this feature feasible for ACPICA at this 
108 time. However, these operators may be deployed in a future ACPICA 
109 release.
110
111 Added the missing EXPORT_SYMBOL macros for the install and remove SCI 
112 handler interfaces.
113
114 Source code generation:
115 1) Disabled the use of the "strchr" macro for the gcc-specific 
116 generation. For some versions of gcc, this macro can periodically expose 
117 a compiler bug which in turn causes compile-time error(s).
118 2) Added support for PPC64 compilation. Colin Ian King.
119
120 Example Code and Data Size: These are the sizes for the OS-independent 
121 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
122 debug version of the code includes the debug output trace mechanism and 
123 has a much larger code and data size.
124
125   Current Release:
126     Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
127     Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
128   Previous Release:
129     Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
130     Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
131
132
133 2) iASL Compiler/Disassembler and Tools:
134
135 Disassembler: Added several new features to improve the readability of 
136 the resulting ASL code. Extra information is emitted within comment 
137 fields in the ASL code:
138 1) Known _HID/_CID values are decoded to descriptive text.
139 2) Standard values for the Notify() operator are decoded to descriptive 
140 text.
141 3) Target operands are expanded to full pathnames (in a comment) when 
142 possible.
143
144 Disassembler: Miscellaneous updates for extern() handling:
145 1) Abort compiler if file specified by -fe option does not exist.
146 2) Silence unnecessary warnings about argument count mismatches.
147 3) Update warning messages concerning unresolved method externals.
148 4) Emit "UnknownObj" keyword for externals whose type cannot be 
149 determined.
150
151 AcpiHelp utility:
152 1) Added the -a option to display both the ASL syntax and the AML 
153 encoding for an input ASL operator. This effectively displays all known 
154 information about an ASL operator with one AcpiHelp invocation.
155 2) Added substring match support (similar to a wildcard) for the -i 
156 (_HID/PNP IDs) option.
157
158 iASL/Disassembler: Since this tool does not yet support execution on big-
159 endian machines, added detection of endianness and an error message if 
160 execution is attempted on big-endian. Support for big-endian within iASL 
161 is a feature that is on the ACPICA to-be-done list.
162
163 AcpiBin utility:
164 1) Remove option to extract binary files from an acpidump; this function 
165 is made obsolete by the AcpiXtract utility.
166 2) General cleanup of open files and allocated buffers.
167
168 ----------------------------------------
169 14 February 2014. Summary of changes for version 20140214:
170
171 1) ACPICA kernel-resident subsystem:
172
173 Implemented a new mechanism to proactively prevent problems with ill-
174 behaved reentrant control methods that create named ACPI objects. This 
175 behavior is illegal as per the ACPI specification, but is nonetheless 
176 frequently seen in the field. Previously, this could lead to an 
177 AE_ALREADY_EXISTS exception if the method was actually entered by more 
178 than one thread. This new mechanism detects such methods at table load 
179 time and marks them "serialized" to prevent reentrancy. A new global 
180 option, AcpiGbl_AutoSerializeMethods, has been added to disable this 
181 feature if desired. This mechanism and global option obsoletes and 
182 supersedes the previous AcpiGbl_SerializeAllMethods option.
183
184 Added the "Windows 2013" string to the _OSI support. ACPICA will now 
185 respond TRUE to _OSI queries with this string. It is the stated policy of 
186 ACPICA to add new strings to the _OSI support as soon as possible after 
187 they are defined. See the full ACPICA _OSI policy which has been added to 
188 the utilities/utosi.c file.
189
190 Hardened/updated the _PRT return value auto-repair code:
191 1) Do not abort the repair on a single subpackage failure, continue to 
192 check all subpackages.
193 2) Add check for the minimum subpackage length (4).
194 3) Properly handle extraneous NULL package elements.
195
196 Added support to avoid the possibility of infinite loops when traversing 
197 object linked lists. Never allow an infinite loop, even in the face of 
198 corrupted object lists.
199
200 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 
201 pack(pop) directives to ensure that the ACPICA headers are independent of 
202 compiler settings or other host headers.
203
204 Example Code and Data Size: These are the sizes for the OS-independent 
205 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
206 debug version of the code includes the debug output trace mechanism and 
207 has a much larger code and data size.
208
209   Current Release:
210     Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
211     Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
212   Previous Release:
213     Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
214     Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
215
216
217 2) iASL Compiler/Disassembler and Tools:
218
219 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 
220 first reserved field was incorrectly forced to have a value of zero. This 
221 change correctly forces the field to have a value of one. ACPICA BZ 1081.
222
223 Debugger: Added missing support for the "Extra" and "Data" subobjects 
224 when displaying object data.
225
226 Debugger: Added support to display entire object linked lists when 
227 displaying object data.
228
229 iASL: Removed the obsolete -g option to obtain ACPI tables from the 
230 Windows registry. This feature has been superseded by the acpidump 
231 utility. 
232
233 ----------------------------------------
234 14 January 2014. Summary of changes for version 20140114:
235
236 1) ACPICA kernel-resident subsystem:
237
238 Updated all ACPICA copyrights and signons to 2014. Added the 2014 
239 copyright to all module headers and signons, including the standard Linux 
240 header. This affects virtually every file in the ACPICA core subsystem, 
241 iASL compiler, all ACPICA utilities, and the test suites.
242
243 Improved parameter validation for AcpiInstallGpeBlock. Added the 
244 following checks:
245 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
246 2) There is not already a GPE block attached to the device.
247 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 
248 device.
249
250 Correctly support "references" in the ACPI_OBJECT. This change fixes the 
251 support to allow references (namespace nodes) to be passed as arguments 
252 to control methods via the evaluate object interface. This is probably 
253 most useful for testing purposes, however.
254
255 Improved support for 32/64 bit physical addresses in printf()-like 
256 output. This change improves the support for physical addresses in printf 
257 debug statements and other output on both 32-bit and 64-bit hosts. It 
258 consistently outputs the appropriate number of bytes for each host. The 
259 %p specifier is unsatisfactory since it does not emit uniform output on 
260 all hosts/clib implementations (on some, leading zeros are not supported, 
261 leading to difficult-to-read output).
262
263 Example Code and Data Size: These are the sizes for the OS-independent 
264 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
265 debug version of the code includes the debug output trace mechanism and 
266 has a much larger code and data size.
267
268   Current Release:
269     Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
270     Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
271   Previous Release:
272     Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
273     Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
274
275
276 2) iASL Compiler/Disassembler and Tools:
277
278 iASL: Fix a possible fault when using the Connection() operator. Fixes a 
279 problem if the parent Field definition for the Connection operator refers 
280 to an operation region that does not exist. ACPICA BZ 1064.
281
282 AcpiExec: Load of local test tables is now optional. The utility has the 
283 capability to load some various tables to test features of ACPICA. 
284 However, there are enough of them that the output of the utility became 
285 confusing. With this change, only the required local tables are displayed 
286 (RSDP, XSDT, etc.) along with the actual tables loaded via the command 
287 line specification. This makes the default output simler and easier to 
288 understand. The -el command line option restores the original behavior 
289 for testing purposes.
290
291 AcpiExec: Added support for overlapping operation regions. This change 
292 expands the simulation of operation regions by supporting regions that 
293 overlap within the given address space. Supports SystemMemory and 
294 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
295
296 AcpiExec: Added region handler support for PCI_Config and EC spaces. This 
297 allows AcpiExec to simulate these address spaces, similar to the current 
298 support for SystemMemory and SystemIO.
299
300 Debugger: Added new command to read/write/compare all namespace objects. 
301 The command "test objects" will exercise the entire namespace by writing 
302 new values to each data object, and ensuring that the write was 
303 successful. The original value is then restored and verified.
304
305 Debugger: Added the "test predefined" command. This change makes this 
306 test public and puts it under the new "test" command. The test executes 
307 each and every predefined name within the current namespace.
308
309 ----------------------------------------
310 18 December 2013. Summary of changes for version 20131218:
311
312 Global note: The ACPI 5.0A specification was released this month. There 
313 are no changes needed for ACPICA since this release of ACPI is an 
314 errata/clarification release. The specification is available at 
315 acpi.info. 
316
317
318 1) ACPICA kernel-resident subsystem:
319
320 Added validation of the XSDT root table if it is present. Some older 
321 platforms contain an XSDT that is ill-formed or otherwise invalid (such 
322 as containing some or all entries that are NULL pointers). This change 
323 adds a new function to validate the XSDT before actually using it. If the 
324 XSDT is found to be invalid, ACPICA will now automatically fall back to 
325 using the RSDT instead. Original implementation by Zhao Yakui. Ported to 
326 ACPICA and enhanced by Lv Zheng and Bob Moore.
327
328 Added a runtime option to ignore the XSDT and force the use of the RSDT. 
329 This change adds a runtime option that will force ACPICA to use the RSDT 
330 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 
331 requires that an XSDT be used instead of the RSDT, the XSDT has been 
332 found to be corrupt or ill-formed on some machines. Lv Zheng.
333
334 Added a runtime option to favor 32-bit FADT register addresses over the 
335 64-bit addresses. This change adds an option to favor 32-bit FADT 
336 addresses when there is a conflict between the 32-bit and 64-bit versions 
337 of the same register. The default behavior is to use the 64-bit version 
338 in accordance with the ACPI specification. This can now be overridden via 
339 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
340
341 During the change above, the internal "Convert FADT" and "Verify FADT" 
342 functions have been merged to simplify the code, making it easier to 
343 understand and maintain. ACPICA BZ 933.
344
345 Improve exception reporting and handling for GPE block installation. 
346 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 
347 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
348
349 Added helper macros to extract bus/segment numbers from the HEST table. 
350 This change adds two macros to extract the encoded bus and segment 
351 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 
352 Betty Dall <betty.dall@hp.com>
353
354 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 
355 by ACPICA. It is not a public macro, so it should have no effect on 
356 existing OSV code. Lv Zheng.
357
358 Example Code and Data Size: These are the sizes for the OS-independent 
359 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
360 debug version of the code includes the debug output trace mechanism and 
361 has a much larger code and data size.
362
363   Current Release:
364     Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
365     Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
366   Previous Release:
367     Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
368     Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
369
370
371 2) iASL Compiler/Disassembler and Tools:
372
373 Disassembler: Improved pathname support for emitted External() 
374 statements. This change adds full pathname support for external names 
375 that have been resolved internally by the inclusion of additional ACPI 
376 tables (via the iASL -e option). Without this change, the disassembler 
377 can emit multiple externals for the same object, or it become confused 
378 when the Scope() operator is used on an external object. Overall, greatly 
379 improves the ability to actually recompile the emitted ASL code when 
380 objects a referenced across multiple ACPI tables. Reported by Michael 
381 Tsirkin (mst@redhat.com).
382
383 Tests/ASLTS: Updated functional control suite to execute with no errors. 
384 David Box. Fixed several errors related to the testing of the interpreter 
385 slack mode. Lv Zheng.
386
387 iASL: Added support to detect names that are declared within a control 
388 method, but are unused (these are temporary names that are only valid 
389 during the time the method is executing). A remark is issued for these 
390 cases. ACPICA BZ 1022.
391
392 iASL: Added full support for the DBG2 table. Adds full disassembler, 
393 table compiler, and template generator support for the DBG2 table (Debug 
394 Port 2 table).
395
396 iASL: Added full support for the PCCT table, update the table definition. 
397 Updates the PCCT table definition in the actbl3.h header and adds table 
398 compiler and template generator support.
399
400 iASL: Added an option to emit only error messages (no warnings/remarks). 
401 The -ve option will enable only error messages, warnings and remarks are 
402 suppressed. This can simplify debugging when only the errors are 
403 important, such as when an ACPI table is disassembled and there are many 
404 warnings and remarks -- but only the actual errors are of real interest.
405
406 Example ACPICA code (source/tools/examples): Updated the example code so 
407 that it builds to an actual working program, not just example code. Added 
408 ACPI tables and execution of an example control method in the DSDT. Added 
409 makefile support for Unix generation.
410
411 ----------------------------------------
412 15 November 2013. Summary of changes for version 20131115:
413
414 This release is available at https://acpica.org/downloads
415
416
417 1) ACPICA kernel-resident subsystem:
418
419 Resource Manager: Fixed loop termination for the "get AML length" 
420 function. The loop previously had an error termination on a NULL resource 
421 pointer, which can never happen since the loop simply increments a valid 
422 resource pointer. This fix changes the loop to terminate with an error on 
423 an invalid end-of-buffer condition. The problem can be seen as an 
424 infinite loop by callers to AcpiSetCurrentResources with an invalid or 
425 corrupted resource descriptor, or a resource descriptor that is missing 
426 an END_TAG descriptor. Reported by Dan Carpenter 
427 <dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
428
429 Table unload and ACPICA termination: Delete all attached data objects 
430 during namespace node deletion. This fix updates namespace node deletion 
431 to delete the entire list of attached objects (attached via 
432 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 
433 1024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
434
435 ACPICA termination: Added support to delete all objects attached to the 
436 root namespace node. This fix deletes any and all objects that have been 
437 attached to the root node via AcpiAttachData. Previously, none of these 
438 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
439
440 Debug output: Do not emit the function nesting level for the in-kernel 
441 build. The nesting level is really only useful during a single-thread 
442 execution. Therefore, only enable this output for the AcpiExec utility. 
443 Also, only emit the thread ID when executing under AcpiExec (Context 
444 switches are still always detected and a message is emitted). ACPICA BZ 
445 972.
446
447 Example Code and Data Size: These are the sizes for the OS-independent 
448 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
449 debug version of the code includes the debug output trace mechanism and 
450 has a much larger code and data size.
451
452   Current Release:
453     Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
454     Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
455   Previous Release:
456     Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
457     Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
458
459
460 2) iASL Compiler/Disassembler and Tools:
461
462 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 
463 correct portable POSIX header for terminal control functions.
464
465 Disassembler: Fixed control method invocation issues related to the use 
466 of the CondRefOf() operator. The problem is seen in the disassembly where 
467 control method invocations may not be disassembled properly if the 
468 control method name has been used previously as an argument to CondRefOf. 
469 The solution is to not attempt to emit an external declaration for the 
470 CondRefOf target (it is not necessary in the first place). This prevents 
471 disassembler object type confusion. ACPICA BZ 988.
472
473 Unix Makefiles: Added an option to disable compiler optimizations and the 
474 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 
475 with optimizations (reportedly, gcc 4.4 for example). This change adds a 
476 command line option for make (NOOPT) that disables all compiler 
477 optimizations and the _FORTIFY_SOURCE compiler flag. The default 
478 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 
479 1034. Lv Zheng, Bob Moore.
480
481 Tests/ASLTS: Added options to specify individual test cases and modes. 
482 This allows testers running aslts.sh to optionally specify individual 
483 test modes and test cases. Also added an option to disable the forced 
484 generation of the ACPICA tools from source if desired. Lv Zheng.
485
486 ----------------------------------------
487 27 September 2013. Summary of changes for version 20130927:
488
489 This release is available at https://acpica.org/downloads
490
491
492 1) ACPICA kernel-resident subsystem:
493
494 Fixed a problem with store operations to reference objects. This change 
495 fixes a problem where a Store operation to an ArgX object that contained 
496
497 reference to a field object did not complete the automatic dereference 
498 and 
499 then write to the actual field object. Instead, the object type of the 
500 field object was inadvertently changed to match the type of the source 
501 operand. The new behavior will actually write to the field object (buffer 
502 field or field unit), thus matching the correct ACPI-defined behavior.
503
504 Implemented support to allow the host to redefine individual OSL 
505 prototypes. This change enables the host to redefine OSL prototypes found 
506 in the acpiosxf.h file. This allows the host to implement OSL interfaces 
507 with a macro or inlined function. Further, it allows the host to add any 
508 additional required modifiers such as __iomem, __init, __exit, etc., as 
509 necessary on a per-interface basis. Enables maximum flexibility for the 
510 OSL interfaces. Lv Zheng.
511
512 Hardcoded the access width for the FADT-defined reset register. The ACPI 
513 specification requires the reset register width to be 8 bits. ACPICA now 
514 hardcodes the width to 8 and ignores the FADT width value. This provides 
515 compatibility with other ACPI implementations that have allowed BIOS code 
516 with bad register width values to go unnoticed. Matthew Garett, Bob 
517 Moore, 
518 Lv Zheng.
519
520 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 
521 used 
522 in the OSL header (acpiosxf). The change modifies the position of this 
523 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 
524 build issues if the OSL defines the implementation of the interface to be 
525 an inline stub function. Lv Zheng.
526
527 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 
528 initialization interfaces. This change adds a new macro for the main init 
529 and terminate external interfaces in order to support hosts that require 
530 additional or different processing for these functions. Changed from 
531 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 
532 Zheng, Bob Moore.
533
534 Cleaned up the memory allocation macros for configurability. In the 
535 common 
536 case, the ACPI_ALLOCATE and related macros now resolve directly to their 
537 respective AcpiOs* OSL interfaces. Two options:
538 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 
539 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
540 2) For AcpiExec (and for debugging), the macros can optionally be 
541 resolved 
542 to the local ACPICA interfaces that track each allocation (local tracking 
543 is used to immediately detect memory leaks).
544 Lv Zheng.
545
546 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 
547 to predefine this macro to either TRUE or FALSE during the system build.
548
549 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
550
551 Example Code and Data Size: These are the sizes for the OS-independent 
552 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
553 debug version of the code includes the debug output trace mechanism and 
554 has a much larger code and data size.
555
556   Current Release:
557     Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
558     Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
559   Previous Release:
560     Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
561     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
562
563
564 2) iASL Compiler/Disassembler and Tools:
565
566 iASL: Implemented wildcard support for the -e option. This simplifies use 
567 when there are many SSDTs that must be included to resolve external 
568 method 
569 declarations. ACPICA BZ 1041. Example:
570     iasl -e ssdt*.dat -d dsdt.dat
571
572 AcpiExec: Add history/line-editing for Unix/Linux systems. This change 
573 adds a portable module that implements full history and limited line 
574 editing for Unix and Linux systems. It does not use readline() due to 
575 portability issues. Instead it uses the POSIX termio interface to put the 
576 terminal in raw input mode so that the various special keys can be 
577 trapped 
578 (such as up/down-arrow for history support and left/right-arrow for line 
579 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
580
581 AcpiXtract: Add support to handle (ignore) "empty" lines containing only 
582 one or more spaces. This provides compatible with early or different 
583 versions of the AcpiDump utility. ACPICA BZ 1044.
584
585 AcpiDump: Do not ignore tables that contain only an ACPI table header. 
586 Apparently, some BIOSs create SSDTs that contain an ACPI table header but 
587 no other data. This change adds support to dump these tables. Any tables 
588 shorter than the length of an ACPI table header remain in error (an error 
589 message is emitted). Reported by Yi Li.
590
591 Debugger: Echo actual command along with the "unknown command" message.
592
593 ----------------------------------------
594 23 August 2013. Summary of changes for version 20130823:
595
596 1) ACPICA kernel-resident subsystem:
597
598 Implemented support for host-installed System Control Interrupt (SCI) 
599 handlers. Certain ACPI functionality requires the host to handle raw 
600 SCIs. For example, the "SCI Doorbell" that is defined for memory power 
601 state support requires the host device driver to handle SCIs to examine 
602 if the doorbell has been activated. Multiple SCI handlers can be 
603 installed to allow for future expansion. New external interfaces are 
604 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 
605 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
606
607 Operation region support: Never locally free the handler "context" 
608 pointer. This change removes some dangerous code that attempts to free 
609 the handler context pointer in some (rare) circumstances. The owner of 
610 the handler owns this pointer and the ACPICA code should never touch it. 
611 Although not seen to be an issue in any kernel, it did show up as a 
612 problem (fault) under AcpiExec. Also, set the internal storage field for 
613 the context pointer to zero when the region is deactivated, simply for 
614 sanity. David Box. ACPICA BZ 1039.
615
616 AcpiRead: On error, do not modify the return value target location. If an 
617 error happens in the middle of a split 32/32 64-bit I/O operation, do not 
618 modify the target of the return value pointer. Makes the code consistent 
619 with the rest of ACPICA. Bjorn Helgaas.
620
621 Example Code and Data Size: These are the sizes for the OS-independent 
622 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
623 debug version of the code includes the debug output trace mechanism and 
624 has a much larger code and data size.
625
626   Current Release:
627     Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
628     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
629   Previous Release:
630     Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
631     Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
632
633
634 2) iASL Compiler/Disassembler and Tools:
635
636 AcpiDump: Implemented several new features and fixed some problems:
637 1) Added support to dump the RSDP, RSDT, and XSDT tables.
638 2) Added support for multiple table instances (SSDT, UEFI).
639 3) Added option to dump "customized" (overridden) tables (-c).
640 4) Fixed a problem where some table filenames were improperly 
641 constructed.
642 5) Improved some error messages, removed some unnecessary messages.
643
644 iASL: Implemented additional support for disassembly of ACPI tables that 
645 contain invocations of external control methods. The -fe<file> option 
646 allows the import of a file that specifies the external methods along 
647 with the required number of arguments for each -- allowing for the 
648 correct disassembly of the table. This is a workaround for a limitation 
649 of AML code where the disassembler often cannot determine the number of 
650 arguments required for an external control method and generates incorrect 
651 ASL code. See the iASL reference for details. ACPICA BZ 1030.
652
653 Debugger: Implemented a new command (paths) that displays the full 
654 pathnames (namepaths) and object types of all objects in the namespace. 
655 This is an alternative to the namespace command.
656
657 Debugger: Implemented a new command (sci) that invokes the SCI dispatch 
658 mechanism and any installed handlers.
659
660 iASL: Fixed a possible segfault for "too many parent prefixes" condition. 
661 This can occur if there are too many parent prefixes in a namepath (for 
662 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
663
664 Application OSLs: Set the return value for the PCI read functions. These 
665 functions simply return AE_OK, but should set the return value to zero 
666 also. This change implements this. ACPICA BZ 1038.
667
668 Debugger: Prevent possible command line buffer overflow. Increase the 
669 size of a couple of the debugger line buffers, and ensure that overflow 
670 cannot happen. ACPICA BZ 1037.
671
672 iASL: Changed to abort immediately on serious errors during the parsing 
673 phase. Due to the nature of ASL, there is no point in attempting to 
674 compile these types of errors, and they typically end up causing a 
675 cascade of hundreds of errors which obscure the original problem.
676
677 ----------------------------------------
678 25 July 2013. Summary of changes for version 20130725:
679
680 1) ACPICA kernel-resident subsystem:
681
682 Fixed a problem with the DerefOf operator where references to FieldUnits 
683 and BufferFields incorrectly returned the parent object, not the actual 
684 value of the object. After this change, a dereference of a FieldUnit 
685 reference results in a read operation on the field to get the value, and 
686 likewise, the appropriate BufferField value is extracted from the target 
687 buffer.
688
689 Fixed a problem where the _WAK method could cause a fault under these 
690 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 
691 method returned no value. The problem is rarely seen because most kernels 
692 run ACPICA in slack mode.
693
694 For the DerefOf operator, a fatal error now results if an attempt is made 
695 to dereference a reference (created by the Index operator) to a NULL 
696 package element. Provides compatibility with other ACPI implementations, 
697 and this behavior will be added to a future version of the ACPI 
698 specification.
699
700 The ACPI Power Management Timer (defined in the FADT) is now optional. 
701 This provides compatibility with other ACPI implementations and will 
702 appear in the next version of the ACPI specification. If there is no PM 
703 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 
704 zero in the FADT indicates no PM timer.
705
706 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 
707 allows the host to globally enable/disable all vendor strings, all 
708 feature strings, or both. Intended to be primarily used for debugging 
709 purposes only. Lv Zheng.
710
711 Expose the collected _OSI data to the host via a global variable. This 
712 data tracks the highest level vendor ID that has been invoked by the BIOS 
713 so that the host (and potentially ACPICA itself) can change behaviors 
714 based upon the age of the BIOS.
715
716 Example Code and Data Size: These are the sizes for the OS-independent 
717 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
718 debug version of the code includes the debug output trace mechanism and 
719 has a much larger code and data size.
720
721   Current Release:
722     Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
723     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
724   Previous Release:
725     Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
726     Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
727
728
729 2) iASL Compiler/Disassembler and Tools:
730
731 iASL: Created the following enhancements for the -so option (create 
732 offset table):
733 1)Add offsets for the last nameseg in each namepath for every supported 
734 object type
735 2)Add support for Processor, Device, Thermal Zone, and Scope objects
736 3)Add the actual AML opcode for the parent object of every supported 
737 object type
738 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
739
740 Disassembler: Emit all unresolved external symbols in a single block. 
741 These are external references to control methods that could not be 
742 resolved, and thus, the disassembler had to make a guess at the number of 
743 arguments to parse.
744
745 iASL: The argument to the -T option (create table template) is now 
746 optional. If not specified, the default table is a DSDT, typically the 
747 most common case.
748
749 ----------------------------------------
750 26 June 2013. Summary of changes for version 20130626:
751
752 1) ACPICA kernel-resident subsystem:
753
754 Fixed an issue with runtime repair of the _CST object. Null or invalid 
755 elements were not always removed properly. Lv Zheng. 
756
757 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 
758 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 
759 the maximum number of GPEs is 1016. Use of multiple GPE block devices 
760 makes the system-wide number of GPEs essentially unlimited.
761
762 Example Code and Data Size: These are the sizes for the OS-independent 
763 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
764 debug version of the code includes the debug output trace mechanism and 
765 has a much larger code and data size.
766
767   Current Release:
768     Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
769     Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
770   Previous Release:
771     Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
772     Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
773
774
775 2) iASL Compiler/Disassembler and Tools:
776
777 Portable AcpiDump: Implemented full support for the Linux and FreeBSD 
778 hosts. Now supports Linux, FreeBSD, and Windows.
779
780 Disassembler: Added some missing types for the HEST and EINJ tables: "Set 
781 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
782
783 iASL/Preprocessor: Implemented full support for nested 
784 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
785
786 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 
787 max. The original purpose of this constraint was to limit the amount of 
788 debug output. However, the string function in question (UtPrintString) is 
789 now used for the disassembler also, where 256 bytes is insufficient. 
790 Reported by RehabMan@GitHub.
791
792 iASL/DataTables: Fixed some problems and issues with compilation of DMAR 
793 tables. ACPICA BZ 999. Lv Zheng.
794
795 iASL: Fixed a couple of error exit issues that could result in a "Could 
796 not delete <file>" message during ASL compilation.
797
798 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 
799 the actual signatures for these tables are "FACP" and "APIC", 
800 respectively.
801
802 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 
803 tables are allowed to have multiple instances.
804
805 ----------------------------------------
806 17 May 2013. Summary of changes for version 20130517:
807
808 1) ACPICA kernel-resident subsystem:
809
810 Fixed a regression introduced in version 20130328 for _INI methods. This 
811 change fixes a problem introduced in 20130328 where _INI methods are no 
812 longer executed properly because of a memory block that was not 
813 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 
814 <tomasz.nowicki@linaro.org>.
815
816 Fixed a possible problem with the new extended sleep registers in the 
817 ACPI 
818 5.0 FADT. Do not use these registers (even if populated) unless the HW-
819 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 
820 1020. Lv Zheng.
821
822 Implemented return value repair code for _CST predefined objects: Sort 
823 the 
824 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
825
826 Implemented a debug-only option to disable loading of SSDTs from the 
827 RSDT/XSDT during ACPICA initialization. This can be useful for debugging 
828 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 
829 acglobal.h - ACPICA BZ 1005. Lv Zheng.
830
831 Fixed some issues in the ACPICA initialization and termination code: 
832 Tomasz Nowicki <tomasz.nowicki@linaro.org>
833 1) Clear events initialized flag upon event component termination. ACPICA 
834 BZ 1013.
835 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 
836 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
837 4) Clear debug buffer global on termination to prevent possible multiple 
838 delete. ACPICA BZ 1010.
839
840 Standardized all switch() blocks across the entire source base. After 
841 many 
842 years, different formatting for switch() had crept in. This change makes 
843 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
844
845 Split some files to enhance ACPICA modularity and configurability:
846 1) Split buffer dump routines into utilities/utbuffer.c
847 2) Split internal error message routines into utilities/uterror.c
848 3) Split table print utilities into tables/tbprint.c
849 4) Split iASL command-line option processing into asloptions.c
850
851 Makefile enhancements:
852 1) Support for all new files above.
853 2) Abort make on errors from any subcomponent. Chao Guan.
854 3) Add build support for Apple Mac OS X. Liang Qi.
855
856 Example Code and Data Size: These are the sizes for the OS-independent 
857 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
858 debug version of the code includes the debug output trace mechanism and 
859 has a much larger code and data size.
860
861   Current Release:
862     Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
863     Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
864   Previous Release:
865     Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
866     Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
867
868
869 2) iASL Compiler/Disassembler and Tools:
870
871 New utility: Implemented an easily portable version of the acpidump 
872 utility to extract ACPI tables from the system (or a file) in an ASCII 
873 hex 
874 dump format. The top-level code implements the various command line 
875 options, file I/O, and table dump routines. To port to a new host, only 
876 three functions need to be implemented to get tables -- since this 
877 functionality is OS-dependent. See the tools/acpidump/apmain.c module and 
878 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
879 1) The Windows version obtains the ACPI tables from the Registry.
880 2) The Linux version is under development.
881 3) Other hosts - If an OS-dependent module is submitted, it will be 
882 distributed with ACPICA.
883
884 iASL: Fixed a regression for -D preprocessor option (define symbol). A 
885 restructuring/change to the initialization sequence caused this option to 
886 no longer work properly.
887
888 iASL: Implemented a mechanism to disable specific warnings and remarks. 
889 Adds a new command line option, "-vw <messageid> as well as "#pragma 
890 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
891
892 iASL: Fix for too-strict package object validation. The package object 
893 validation for return values from the predefined names is a bit too 
894 strict, it does not allow names references within the package (which will 
895 be resolved at runtime.) These types of references cannot be validated at 
896 compile time. This change ignores named references within package objects 
897 for names that return or define static packages.
898
899 Debugger: Fixed the 80-character command line limitation for the History 
900 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
901
902 iASL: Added control method and package support for the -so option 
903 (generates AML offset table for BIOS support.)
904
905 iASL: issue a remark if a non-serialized method creates named objects. If 
906 a thread blocks within the method for any reason, and another thread 
907 enters the method, the method will fail because an attempt will be made 
908 to 
909 create the same (named) object twice. In this case, issue a remark that 
910 the method should be marked serialized. NOTE: may become a warning later. 
911 ACPICA BZ 909.
912
913 ----------------------------------------
914 18 April 2013. Summary of changes for version 20130418:
915
916 1) ACPICA kernel-resident subsystem:
917
918 Fixed a possible buffer overrun during some rare but specific field unit 
919 read operations. This overrun can only happen if the DSDT version is 1 -- 
920 meaning that all AML integers are 32 bits -- and the field length is 
921 between 33 and 55 bits long. During the read, an internal buffer object 
922 is 
923 created for the field unit because the field is larger than an integer 
924 (32 
925 bits). However, in this case, the buffer will be incorrectly written 
926 beyond the end because the buffer length is less than the internal 
927 minimum 
928 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 
929 long, but a full 8 bytes will be written.
930
931 Updated the Embedded Controller "orphan" _REG method support. This refers 
932 to _REG methods under the EC device that have no corresponding operation 
933 region. This is allowed by the ACPI specification. This update removes a 
934 dependency on the existence an ECDT table. It will execute an orphan _REG 
935 method as long as the operation region handler for the EC is installed at 
936 the EC device node and not the namespace root. Rui Zhang (original 
937 update), Bob Moore (update/integrate).
938
939 Implemented run-time argument typechecking for all predefined ACPI names 
940 (_STA, _BIF, etc.) This change performs object typechecking on all 
941 incoming arguments for all predefined names executed via 
942 AcpiEvaluateObject. This ensures that ACPI-related device drivers are 
943 passing correct object types as well as the correct number of arguments 
944 (therefore identifying any issues immediately). Also, the ASL/namespace 
945 definition of the predefined name is checked against the ACPI 
946 specification for the proper argument count. Adds one new file, 
947 nsarguments.c
948
949 Changed an exception code for the ASL UnLoad() operator. Changed the 
950 exception code for the case where the input DdbHandle is invalid, from 
951 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
952
953 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 
954 global makefile. The use of this flag causes compiler errors on earlier 
955 versions of GCC, so it has been removed for compatibility.
956
957 Miscellaneous cleanup:
958 1) Removed some unused/obsolete macros
959 2) Fixed a possible memory leak in the _OSI support
960 3) Removed an unused variable in the predefined name support
961 4) Windows OSL: remove obsolete reference to a memory list field
962
963 Example Code and Data Size: These are the sizes for the OS-independent 
964 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
965 debug version of the code includes the debug output trace mechanism and 
966 has a much larger code and data size.
967
968   Current Release:
969     Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
970     Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
971   Previous Release:
972     Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
973     Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
974
975
976 2) iASL Compiler/Disassembler and Tools:
977
978 AcpiExec: Added installation of a handler for the SystemCMOS address 
979 space. This prevents control method abort if a method accesses this 
980 space.
981
982 AcpiExec: Added support for multiple EC devices, and now install EC 
983 operation region handler(s) at the actual EC device instead of the 
984 namespace root. This reflects the typical behavior of host operating 
985 systems.
986
987 AcpiExec: Updated to ensure that all operation region handlers are 
988 installed before the _REG methods are executed. This prevents a _REG 
989 method from aborting if it accesses an address space has no handler. 
990 AcpiExec installs a handler for every possible address space.
991
992 Debugger: Enhanced the "handlers" command to display non-root handlers. 
993 This change enhances the handlers command to display handlers associated 
994 with individual devices throughout the namespace, in addition to the 
995 currently supported display of handlers associated with the root 
996 namespace 
997 node.
998
999 ASL Test Suite: Several test suite errors have been identified and 
1000 resolved, reducing the total error count during execution. Chao Guan.
1001
1002 ----------------------------------------
1003 28 March 2013. Summary of changes for version 20130328:
1004
1005 1) ACPICA kernel-resident subsystem:
1006
1007 Fixed several possible race conditions with the internal object reference 
1008 counting mechanism. Some of the external ACPICA interfaces update object 
1009 reference counts without holding the interpreter or namespace lock. This 
1010 change adds a spinlock to protect reference count updates on the internal 
1011 ACPICA objects. Reported by and with assistance from Andriy Gapon 
1012 (avg@FreeBSD.org).
1013
1014 FADT support: Removed an extraneous warning for very large GPE register 
1015 sets. This change removes a size mismatch warning if the legacy length 
1016 field for a GPE register set is larger than the 64-bit GAS structure can 
1017 accommodate. GPE register sets can be larger than the 255-bit width 
1018 limitation of the GAS structure. Linn Crosetto (linn@hp.com).
1019
1020 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 
1021 return from this interface. Handles a possible timeout case if 
1022 ACPI_WAIT_FOREVER is modified by the host to be a value less than 
1023 "forever". Jung-uk Kim.
1024
1025 Predefined name support: Add allowed/required argument type information 
1026 to 
1027 the master predefined info table. This change adds the infrastructure to 
1028 enable typechecking on incoming arguments for all predefined 
1029 methods/objects. It does not actually contain the code that will fully 
1030 utilize this information, this is still under development. Also condenses 
1031 some duplicate code for the predefined names into a new module, 
1032 utilities/utpredef.c
1033
1034 Example Code and Data Size: These are the sizes for the OS-independent 
1035 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1036 debug version of the code includes the debug output trace mechanism and 
1037 has a much larger code and data size.
1038
1039   Previous Release:
1040     Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1041     Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1042   Current Release:
1043     Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1044     Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1045
1046
1047 2) iASL Compiler/Disassembler and Tools:
1048
1049 iASL: Implemented a new option to simplify the development of ACPI-
1050 related 
1051 BIOS code. Adds support for a new "offset table" output file. The -so 
1052 option will create a C table containing the AML table offsets of various 
1053 named objects in the namespace so that BIOS code can modify them easily 
1054 at 
1055 boot time. This can simplify BIOS runtime code by eliminating expensive 
1056 searches for "magic values", enhancing boot times and adding greater 
1057 reliability. With assistance from Lee Hamel.
1058
1059 iASL: Allow additional predefined names to return zero-length packages. 
1060 Now, all predefined names that are defined by the ACPI specification to 
1061 return a "variable-length package of packages" are allowed to return a 
1062 zero length top-level package. This allows the BIOS to tell the host that 
1063 the requested feature is not supported, and supports existing BIOS/ASL 
1064 code and practices.
1065
1066 iASL: Changed the "result not used" warning to an error. This is the case 
1067 where an ASL operator is effectively a NOOP because the result of the 
1068 operation is not stored anywhere. For example:
1069     Add (4, Local0)
1070 There is no target (missing 3rd argument), nor is the function return 
1071 value used. This is potentially a very serious problem -- since the code 
1072 was probably intended to do something, but for whatever reason, the value 
1073 was not stored. Therefore, this issue has been upgraded from a warning to 
1074 an error.
1075
1076 AcpiHelp: Added allowable/required argument types to the predefined names 
1077 info display. This feature utilizes the recent update to the predefined 
1078 names table (above).
1079
1080 ----------------------------------------
1081 14 February 2013. Summary of changes for version 20130214:
1082
1083 1) ACPICA Kernel-resident Subsystem:
1084
1085 Fixed a possible regression on some hosts: Reinstated the safe return 
1086 macros (return_ACPI_STATUS, etc.) that ensure that the argument is 
1087 evaluated only once. Although these macros are not needed for the ACPICA 
1088 code itself, they are often used by ACPI-related host device drivers 
1089 where 
1090 the safe feature may be necessary.
1091
1092 Fixed several issues related to the ACPI 5.0 reduced hardware support 
1093 (SOC): Now ensure that if the platform declares itself as hardware-
1094 reduced 
1095 via the FADT, the following functions become NOOPs (and always return 
1096 AE_OK) because ACPI is always enabled by definition on these machines:
1097   AcpiEnable
1098   AcpiDisable
1099   AcpiHwGetMode
1100   AcpiHwSetMode
1101
1102 Dynamic Object Repair: Implemented additional runtime repairs for 
1103 predefined name return values. Both of these repairs can simplify code in 
1104 the related device drivers that invoke these methods:
1105 1) For the _STR and _MLS names, automatically repair/convert an ASCII 
1106 string to a Unicode buffer. 
1107 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 
1108
1109 lone end tag descriptor in the following cases: A Return(0) was executed, 
1110 a null buffer was returned, or no object at all was returned (non-slack 
1111 mode only). Adds a new file, nsconvert.c
1112 ACPICA BZ 998. Bob Moore, Lv Zheng.
1113
1114 Resource Manager: Added additional code to prevent possible infinite 
1115 loops 
1116 while traversing corrupted or ill-formed resource template buffers. Check 
1117 for zero-length resource descriptors in all code that loops through 
1118 resource templates (the length field is used to index through the 
1119 template). This change also hardens the external AcpiWalkResources and 
1120 AcpiWalkResourceBuffer interfaces.
1121
1122 Local Cache Manager: Enhanced the main data structure to eliminate an 
1123 unnecessary mechanism to access the next object in the list. Actually 
1124 provides a small performance enhancement for hosts that use the local 
1125 ACPICA cache manager. Jung-uk Kim.
1126
1127 Example Code and Data Size: These are the sizes for the OS-independent 
1128 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1129 debug version of the code includes the debug output trace mechanism and 
1130 has a much larger code and data size.
1131
1132   Previous Release:
1133     Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1134     Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1135   Current Release:
1136     Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1137     Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1138
1139
1140 2) iASL Compiler/Disassembler and Tools:
1141
1142 iASL/Disassembler: Fixed several issues with the definition of the ACPI 
1143 5.0 RASF table (RAS Feature Table). This change incorporates late changes 
1144 that were made to the ACPI 5.0 specification.
1145
1146 iASL/Disassembler: Added full support for the following new ACPI tables:
1147   1) The MTMR table (MID Timer Table)
1148   2) The VRTC table (Virtual Real Time Clock Table).
1149 Includes header file, disassembler, table compiler, and template support 
1150 for both tables.
1151
1152 iASL: Implemented compile-time validation of package objects returned by 
1153 predefined names. This new feature validates static package objects 
1154 returned by the various predefined names defined to return packages. Both 
1155 object types and package lengths are validated, for both parent packages 
1156 and sub-packages, if any. The code is similar in structure and behavior 
1157 to 
1158 the runtime repair mechanism within the AML interpreter and uses the 
1159 existing predefined name information table. Adds a new file, aslprepkg.c. 
1160 ACPICA BZ 938.
1161
1162 iASL: Implemented auto-detection of binary ACPI tables for disassembly. 
1163 This feature detects a binary file with a valid ACPI table header and 
1164 invokes the disassembler automatically. Eliminates the need to 
1165 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
1166
1167 iASL/Disassembler: Added several warnings for the case where there are 
1168 unresolved control methods during the disassembly. This can potentially 
1169 cause errors when the output file is compiled, because the disassembler 
1170 assumes zero method arguments in these cases (it cannot determine the 
1171 actual number of arguments without resolution/definition of the method).
1172
1173 Debugger: Added support to display all resources with a single command. 
1174 Invocation of the resources command with no arguments will now display 
1175 all 
1176 resources within the current namespace.
1177
1178 AcpiHelp: Added descriptive text for each ACPICA exception code displayed 
1179 via the -e option.
1180
1181 ----------------------------------------
1182 17 January 2013. Summary of changes for version 20130117:
1183
1184 1) ACPICA Kernel-resident Subsystem:
1185
1186 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 
1187 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 
1188 objects to return a package containing one integer, most BIOS code 
1189 returns 
1190 two integers and the previous code reflects that. However, we also need 
1191 to 
1192 support BIOS code that actually implements to the ACPI spec, and this 
1193 change reflects this.
1194
1195 Fixed two issues with the ACPI_DEBUG_PRINT macros:
1196 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 
1197 C compilers that require this support.
1198 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 
1199 ACPI_DEBUG is already used by many of the various hosts.
1200
1201 Updated all ACPICA copyrights and signons to 2013. Added the 2013 
1202 copyright to all module headers and signons, including the standard Linux 
1203 header. This affects virtually every file in the ACPICA core subsystem, 
1204 iASL compiler, all ACPICA utilities, and the test suites.
1205
1206 Example Code and Data Size: These are the sizes for the OS-independent 
1207 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1208 debug version of the code includes the debug output trace mechanism and 
1209 has a much larger code and data size.
1210
1211   Previous Release:
1212     Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1213     Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1214   Current Release:
1215     Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1216     Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1217
1218
1219 2) iASL Compiler/Disassembler and Tools:
1220
1221 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 
1222 prevent a possible fault on some hosts. Some C libraries modify the arg 
1223 pointer parameter to vfprintf making it difficult to call it twice in the 
1224 AcpiOsVprintf function. Use a local buffer to workaround this issue. This 
1225 does not affect the Windows OSL since the Win C library does not modify 
1226 the arg pointer. Chao Guan, Bob Moore.
1227
1228 iASL: Fixed a possible infinite loop when the maximum error count is 
1229 reached. If an output file other than the .AML file is specified (such as 
1230 a listing file), and the maximum number of errors is reached, do not 
1231 attempt to flush data to the output file(s) as the compiler is aborting. 
1232 This can cause an infinite loop as the max error count code essentially 
1233 keeps calling itself.
1234
1235 iASL/Disassembler: Added an option (-in) to ignore NOOP 
1236 opcodes/operators. 
1237 Implemented for both the compiler and the disassembler. Often, the NOOP 
1238 opcode is used as padding for packages that are changed dynamically by 
1239 the 
1240 BIOS. When disassembled and recompiled, these NOOPs will cause syntax 
1241 errors. This option causes the disassembler to ignore all NOOP opcodes 
1242 (0xA3), and it also causes the compiler to ignore all ASL source code 
1243 NOOP 
1244 statements as well.
1245
1246 Debugger: Enhanced the Sleep command to execute all sleep states. This 
1247 change allows Sleep to be invoked with no arguments and causes the 
1248 debugger to execute all of the sleep states, 0-5, automatically.
1249
1250 ----------------------------------------
1251 20 December 2012. Summary of changes for version 20121220:
1252
1253 1) ACPICA Kernel-resident Subsystem:
1254
1255 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 
1256 alternate entry point for AcpiWalkResources and improves the usability of 
1257 the resource manager by accepting as input a buffer containing the output 
1258 of either a _CRS, _PRS, or _AEI method. The key functionality is that the 
1259 input buffer is not deleted by this interface so that it can be used by 
1260 the host later. See the ACPICA reference for details.
1261
1262 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 
1263 (DSDT version < 2). The constant will be truncated and this warning 
1264 reflects that behavior.
1265
1266 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 
1267 ExtendedInterrupt, and GpioInt descriptors. This change adds support to 
1268 both get and set the new wake bit in these descriptors, separately from 
1269 the existing share bit. Reported by Aaron Lu.
1270
1271 Interpreter: Fix Store() when an implicit conversion is not possible. For 
1272 example, in the cases such as a store of a string to an existing package 
1273 object, implement the store as a CopyObject(). This is a small departure 
1274 from the ACPI specification which states that the control method should 
1275 be 
1276 aborted in this case. However, the ASLTS suite depends on this behavior.
1277
1278 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 
1279 macros: check if debug output is currently enabled as soon as possible to 
1280 minimize performance impact if debug is in fact not enabled.
1281
1282 Source code restructuring: Cleanup to improve modularity. The following 
1283 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 
1284 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 
1285 Associated makefiles and project files have been updated.
1286
1287 Changed an exception code for LoadTable operator. For the case where one 
1288 of the input strings is too long, change the returned exception code from 
1289 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
1290
1291 Fixed a possible memory leak in dispatcher error path. On error, delete 
1292 the mutex object created during method mutex creation. Reported by 
1293 tim.gardner@canonical.com.
1294
1295 Example Code and Data Size: These are the sizes for the OS-independent 
1296 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1297 debug version of the code includes the debug output trace mechanism and 
1298 has a much larger code and data size.
1299
1300   Previous Release:
1301     Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1302     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1303   Current Release:
1304     Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1305     Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1306
1307
1308 2) iASL Compiler/Disassembler and Tools:
1309
1310 iASL: Disallow a method call as argument to the ObjectType ASL operator. 
1311 This change tracks an errata to the ACPI 5.0 document. The AML grammar 
1312 will not allow the interpreter to differentiate between a method and a 
1313 method invocation when these are used as an argument to the ObjectType 
1314 operator. The ACPI specification change is to disallow a method 
1315 invocation 
1316 (UserTerm) for the ObjectType operator.
1317
1318 Finish support for the TPM2 and CSRT tables in the headers, table 
1319 compiler, and disassembler.
1320
1321 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 
1322 always expires immediately if the semaphore is not available. The 
1323 original 
1324 code was using a relative-time timeout, but sem_timedwait requires the 
1325 use 
1326 of an absolute time.
1327
1328 iASL: Added a remark if the Timer() operator is used within a 32-bit 
1329 table. This operator returns a 64-bit time value that will be truncated 
1330 within a 32-bit table.
1331
1332 iASL Source code restructuring: Cleanup to improve modularity. The 
1333 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 
1334 aslmethod.c, and aslfileio.c. Associated makefiles and project files have 
1335 been updated.
1336
1337
1338 ----------------------------------------
1339 14 November 2012. Summary of changes for version 20121114:
1340
1341 1) ACPICA Kernel-resident Subsystem:
1342
1343 Implemented a performance enhancement for ACPI/AML Package objects. This 
1344 change greatly increases the performance of Package objects within the 
1345 interpreter. It changes the processing of reference counts for packages 
1346 by 
1347 optimizing for the most common case where the package sub-objects are 
1348 either Integers, Strings, or Buffers. Increases the overall performance 
1349 of 
1350 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 
1351 2X.) 
1352 Chao Guan. ACPICA BZ 943.
1353
1354 Implemented and deployed common macros to extract flag bits from resource 
1355 descriptors. Improves readability and maintainability of the code. Fixes 
1356
1357 problem with the UART serial bus descriptor for the number of data bits 
1358 flags (was incorrectly 2 bits, should be 3).
1359
1360 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 
1361 of the macros and changed the SETx macros to the style of (destination, 
1362 source). Also added ACPI_CASTx companion macros. Lv Zheng.
1363
1364 Example Code and Data Size: These are the sizes for the OS-independent 
1365 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1366 debug version of the code includes the debug output trace mechanism and 
1367 has a much larger code and data size.
1368
1369   Previous Release:
1370     Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1371     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1372   Current Release:
1373     Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1374     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1375
1376
1377 2) iASL Compiler/Disassembler and Tools:
1378
1379 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 
1380 adds the ShareAndWake and ExclusiveAndWake flags which were added to the 
1381 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
1382
1383 Disassembler: Fixed a problem with external declaration generation. Fixes 
1384 a problem where an incorrect pathname could be generated for an external 
1385 declaration if the original reference to the object includes leading 
1386 carats (^). ACPICA BZ 984.
1387
1388 Debugger: Completed a major update for the Disassemble<method> command. 
1389 This command was out-of-date and did not properly disassemble control 
1390 methods that had any reasonable complexity. This fix brings the command 
1391 up 
1392 to the same level as the rest of the disassembler. Adds one new file, 
1393 dmdeferred.c, which is existing code that is now common with the main 
1394 disassembler and the debugger disassemble command. ACPICA MZ 978.
1395
1396 iASL: Moved the parser entry prototype to avoid a duplicate declaration. 
1397 Newer versions of Bison emit this prototype, so moved the prototype out 
1398 of 
1399 the iASL header to where it is actually used in order to avoid a 
1400 duplicate 
1401 declaration.
1402
1403 iASL/Tools: Standardized use of the stream I/O functions:
1404   1) Ensure check for I/O error after every fopen/fread/fwrite
1405   2) Ensure proper order of size/count arguments for fread/fwrite
1406   3) Use test of (Actual != Requested) after all fwrite, and most fread
1407   4) Standardize I/O error messages
1408 Improves reliability and maintainability of the code. Bob Moore, Lv 
1409 Zheng. 
1410 ACPICA BZ 981.
1411
1412 Disassembler: Prevent duplicate External() statements. During generation 
1413 of external statements, detect similar pathnames that are actually 
1414 duplicates such as these:
1415   External (\ABCD)
1416   External (ABCD)
1417 Remove all leading '\' characters from pathnames during the external 
1418 statement generation so that duplicates will be detected and tossed. 
1419 ACPICA BZ 985.
1420
1421 Tools: Replace low-level I/O with stream I/O functions. Replace 
1422 open/read/write/close with the stream I/O equivalents 
1423 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 
1424 Moore.
1425
1426 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 
1427 name header so that AcpiXtract recognizes the output file/table.
1428
1429 iASL: Remove obsolete -2 option flag. Originally intended to force the 
1430 compiler/disassembler into an ACPI 2.0 mode, this was never implemented 
1431 and the entire concept is now obsolete.
1432
1433 ----------------------------------------
1434 18 October 2012. Summary of changes for version 20121018:
1435
1436
1437 1) ACPICA Kernel-resident Subsystem:
1438
1439 Updated support for the ACPI 5.0 MPST table. Fixes some problems 
1440 introduced by late changes to the table as it was added to the ACPI 5.0 
1441 specification. Includes header, disassembler, and data table compiler 
1442 support as well as a new version of the MPST template.
1443
1444 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 
1445 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 
1446 methods: _HID, _CID, and _UID.
1447
1448 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 
1449 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 
1450 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 
1451 names for their various drivers. Affects the AcpiGetObjectInfo external 
1452 interface, and other internal interfaces as well.
1453
1454 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 
1455 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 
1456 on machines that support non-aligned transfers. Optimizes for this case 
1457 rather than using a strncpy. With assistance from Zheng Lv.
1458
1459 Resource Manager: Small fix for buffer size calculation. Fixed a one byte 
1460 error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
1461
1462 Added a new debug print message for AML mutex objects that are force-
1463 released. At control method termination, any currently acquired mutex 
1464 objects are force-released. Adds a new debug-only message for each one 
1465 that is released.
1466
1467 Audited/updated all ACPICA return macros and the function debug depth 
1468 counter: 1) Ensure that all functions that use the various TRACE macros 
1469 also use the appropriate ACPICA return macros. 2) Ensure that all normal 
1470 return statements surround the return expression (value) with parens to 
1471 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 
1472 Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
1473
1474 Global source code changes/maintenance: All extra lines at the start and 
1475 end of each source file have been removed for consistency. Also, within 
1476 comments, all new sentences start with a single space instead of a double 
1477 space, again for consistency across the code base.
1478
1479 Example Code and Data Size: These are the sizes for the OS-independent 
1480 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1481 debug version of the code includes the debug output trace mechanism and 
1482 has a much larger code and data size.
1483
1484   Previous Release:
1485     Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
1486     Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
1487   Current Release:
1488     Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1489     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1490
1491
1492 2) iASL Compiler/Disassembler and Tools:
1493
1494 AcpiExec: Improved the algorithm used for memory leak/corruption 
1495 detection. Added some intelligence to the code that maintains the global 
1496 list of allocated memory. The list is now ordered by allocated memory 
1497 address, significantly improving performance. When running AcpiExec on 
1498 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 
1499 on the platform and/or the environment. Note, this performance 
1500 enhancement affects the AcpiExec utility only, not the kernel-resident 
1501 ACPICA code.
1502
1503 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 
1504 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 
1505 incorrect table offset reported for invalid opcodes. Report the original 
1506 32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
1507
1508 Disassembler: Enhanced the -vt option to emit the binary table data in 
1509 hex format to assist with debugging.
1510
1511 Fixed a potential filename buffer overflow in osunixdir.c. Increased the 
1512 size of file structure. Colin Ian King.
1513
1514 ----------------------------------------
1515 13 September 2012. Summary of changes for version 20120913:
1516
1517
1518 1) ACPICA Kernel-resident Subsystem:
1519
1520 ACPI 5.0: Added two new notify types for the Hardware Error Notification 
1521 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 
1522 and 
1523 MCE(6).
1524  
1525 Table Manager: Merged/removed duplicate code in the root table resize 
1526 functions. One function is external, the other is internal. Lv Zheng, 
1527 ACPICA 
1528 BZ 846.
1529
1530 Makefiles: Completely removed the obsolete "Linux" makefiles under 
1531 acpica/generate/linux. These makefiles are obsolete and have been 
1532 replaced 
1533 by 
1534 the generic unix makefiles under acpica/generate/unix.
1535
1536 Makefiles: Ensure that binary files always copied properly. Minor rule 
1537 change 
1538 to ensure that the final binary output files are always copied up to the 
1539 appropriate binary directory (bin32 or bin64.)
1540
1541 Example Code and Data Size: These are the sizes for the OS-independent 
1542 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1543 debug 
1544 version of the code includes the debug output trace mechanism and has a 
1545 much 
1546 larger code and data size.
1547
1548   Previous Release:
1549     Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
1550     Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
1551   Current Release:
1552     Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
1553     Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
1554
1555
1556 2) iASL Compiler/Disassembler and Tools:
1557
1558 Disassembler: Fixed a possible fault during the disassembly of resource 
1559 descriptors when a second parse is required because of the invocation of 
1560 external control methods within the table. With assistance from 
1561 adq@lidskialf.net. ACPICA BZ 976.
1562
1563 iASL: Fixed a namepath optimization problem. An error can occur if the 
1564 parse 
1565 node that contains the namepath to be optimized does not have a parent 
1566 node 
1567 that is a named object. This change fixes the problem.
1568
1569 iASL: Fixed a regression where the AML file is not deleted on errors. The 
1570 AML 
1571 output file should be deleted if there are any errors during the 
1572 compiler. 
1573 The 
1574 only exception is if the -f (force output) option is used. ACPICA BZ 974.
1575
1576 iASL: Added a feature to automatically increase internal line buffer 
1577 sizes. 
1578 Via realloc(), automatically increase the internal line buffer sizes as 
1579 necessary to support very long source code lines. The current version of 
1580 the 
1581 preprocessor requires a buffer long enough to contain full source code 
1582 lines. 
1583 This change increases the line buffer(s) if the input lines go beyond the 
1584 current buffer size. This eliminates errors that occurred when a source 
1585 code 
1586 line was longer than the buffer.
1587
1588 iASL: Fixed a problem with constant folding in method declarations. The 
1589 SyncLevel term is a ByteConstExpr, and incorrect code would be generated 
1590 if a 
1591 Type3 opcode was used.
1592
1593 Debugger: Improved command help support. For incorrect argument count, 
1594 display 
1595 full help for the command. For help command itself, allow an argument to 
1596 specify a command.
1597
1598 Test Suites: Several bug fixes for the ASLTS suite reduces the number of 
1599 errors during execution of the suite. Guan Chao.
1600
1601 ----------------------------------------
1602 16 August 2012. Summary of changes for version 20120816:
1603
1604
1605 1) ACPICA Kernel-resident Subsystem:
1606
1607 Removed all use of the deprecated _GTS and _BFS predefined methods. The 
1608 _GTS 
1609 (Going To Sleep) and _BFS (Back From Sleep) methods are essentially 
1610 deprecated and will probably be removed from the ACPI specification. 
1611 Windows 
1612 does not invoke them, and reportedly never will. The final nail in the 
1613 coffin 
1614 is that the ACPI specification states that these methods must be run with 
1615 interrupts off, which is not going to happen in a kernel interpreter. 
1616 Note: 
1617 Linux has removed all use of the methods also. It was discovered that 
1618 invoking these functions caused failures on some machines, probably 
1619 because 
1620 they were never tested since Windows does not call them. Affects two 
1621 external 
1622 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 
1623 ACPICA BZ 969.
1624
1625 Implemented support for complex bit-packed buffers returned from the _PLD 
1626 (Physical Location of Device) predefined method. Adds a new external 
1627 interface, AcpiDecodePldBuffer that parses the buffer into a more usable 
1628
1629 structure. Note: C Bitfields cannot be used for this type of predefined 
1630 structure since the memory layout of individual bitfields is not defined 
1631 by 
1632 the C language. In addition, there are endian concerns where a compiler 
1633 will 
1634 change the bitfield ordering based on the machine type. The new ACPICA 
1635 interface eliminates these issues, and should be called after _PLD is 
1636 executed. ACPICA BZ 954.
1637
1638 Implemented a change to allow a scope change to root (via "Scope (\)") 
1639 during 
1640 execution of module-level ASL code (code that is executed at table load 
1641 time.) Lin Ming.
1642
1643 Added the Windows8/Server2012 string for the _OSI method. This change 
1644 adds 
1645
1646 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 
1647 2012.
1648
1649 Added header support for the new ACPI tables DBG2 (Debug Port Table Type 
1650 2) 
1651 and CSRT (Core System Resource Table).
1652
1653 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 
1654 names. This simplifies access to the buffers returned by these predefined 
1655 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
1656
1657 GPE support: Removed an extraneous parameter from the various low-level 
1658 internal GPE functions. Tang Feng.
1659
1660 Removed the linux makefiles from the unix packages. The generate/linux 
1661 makefiles are obsolete and have been removed from the unix tarball 
1662 release 
1663 packages. The replacement makefiles are under generate/unix, and there is 
1664
1665 top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
1666
1667 Updates for Unix makefiles:
1668 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
1669 2) Update linker flags (move to end of command line) for AcpiExec 
1670 utility. 
1671 Guan Chao.
1672
1673 Split ACPICA initialization functions to new file, utxfinit.c. Split from 
1674 utxface.c to improve modularity and reduce file size.
1675
1676 Example Code and Data Size: These are the sizes for the OS-independent 
1677 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1678 debug version of the code includes the debug output trace mechanism and 
1679 has a 
1680 much larger code and data size.
1681
1682   Previous Release:
1683     Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
1684     Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
1685   Current Release:
1686     Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
1687     Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
1688
1689
1690 2) iASL Compiler/Disassembler and Tools:
1691
1692 iASL: Fixed a problem with constant folding for fixed-length constant 
1693 expressions. The constant-folding code was not being invoked for constant 
1694 expressions that allow the use of type 3/4/5 opcodes to generate 
1695 constants 
1696 for expressions such as ByteConstExpr, WordConstExpr, etc. This could 
1697 result 
1698 in the generation of invalid AML bytecode. ACPICA BZ 970.
1699
1700 iASL: Fixed a generation issue on newer versions of Bison. Newer versions 
1701 apparently automatically emit some of the necessary externals. This 
1702 change 
1703 handles these versions in order to eliminate generation warnings.
1704
1705 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
1706
1707 Disassembler: Add support to decode _PLD buffers. The decoded buffer 
1708 appears 
1709 within comments in the output file.
1710
1711 Debugger: Fixed a regression with the "Threads" command where 
1712 AE_BAD_PARAMETER was always returned.
1713
1714 ----------------------------------------
1715 11 July 2012. Summary of changes for version 20120711:
1716
1717 1) ACPICA Kernel-resident Subsystem:
1718
1719 Fixed a possible fault in the return package object repair code. Fixes a 
1720 problem that can occur when a lone package object is wrapped with an 
1721 outer 
1722 package object in order to force conformance to the ACPI specification. 
1723 Can 
1724 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 
1725 _DLM, 
1726 _CSD, _PSD, _TSD.
1727
1728 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 
1729 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 
1730 ARB_DIS bit must be implemented in the host-dependent C3 processor power 
1731 state 
1732 support. Note, ARB_DIS is obsolete and only applies to older chipsets, 
1733 both 
1734 Intel and other vendors. (for Intel: ICH4-M and earlier)
1735
1736 This change removes the code to disable/enable bus master arbitration 
1737 during 
1738 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 
1739 causes 
1740 resume problems on some machines. The change has been in use for over 
1741 seven 
1742 years within Linux.
1743
1744 Implemented two new external interfaces to support host-directed dynamic 
1745 ACPI 
1746 table load and unload. They are intended to simplify the host 
1747 implementation 
1748 of hot-plug support:
1749   AcpiLoadTable: Load an SSDT from a buffer into the namespace.
1750   AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 
1751 table.
1752 See the ACPICA reference for additional details. Adds one new file, 
1753 components/tables/tbxfload.c
1754
1755 Implemented and deployed two new interfaces for errors and warnings that 
1756 are 
1757 known to be caused by BIOS/firmware issues:
1758   AcpiBiosError: Prints "ACPI Firmware Error" message.
1759   AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
1760 Deployed these new interfaces in the ACPICA Table Manager code for ACPI 
1761 table 
1762 and FADT errors. Additional deployment to be completed as appropriate in 
1763 the 
1764 future. The associated conditional macros are ACPI_BIOS_ERROR and 
1765 ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 
1766 ACPICA 
1767 BZ 
1768 843.
1769
1770 Implicit notify support: ensure that no memory allocation occurs within a 
1771 critical region. This fix moves a memory allocation outside of the time 
1772 that a 
1773 spinlock is held. Fixes issues on systems that do not allow this 
1774 behavior. 
1775 Jung-uk Kim.
1776
1777 Split exception code utilities and tables into a new file, 
1778 utilities/utexcep.c
1779
1780 Example Code and Data Size: These are the sizes for the OS-independent 
1781 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1782 debug 
1783 version of the code includes the debug output trace mechanism and has a 
1784 much 
1785 larger code and data size.
1786
1787   Previous Release:
1788     Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
1789     Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
1790   Current Release:
1791     Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
1792     Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
1793
1794
1795 2) iASL Compiler/Disassembler and Tools:
1796
1797 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 
1798 of 
1799 0. Jung-uk Kim.
1800
1801 Debugger: Enhanced the "tables" command to emit additional information 
1802 about 
1803 the current set of ACPI tables, including the owner ID and flags decode.
1804
1805 Debugger: Reimplemented the "unload" command to use the new 
1806 AcpiUnloadParentTable external interface. This command was disable 
1807 previously 
1808 due to need for an unload interface.
1809
1810 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 
1811 option 
1812 will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
1813
1814 ----------------------------------------
1815 20 June 2012. Summary of changes for version 20120620:
1816
1817
1818 1) ACPICA Kernel-resident Subsystem:
1819
1820 Implemented support to expand the "implicit notify" feature to allow 
1821 multiple 
1822 devices to be notified by a single GPE. This feature automatically 
1823 generates a 
1824 runtime device notification in the absence of a BIOS-provided GPE control 
1825 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 
1826 notify is 
1827 provided by ACPICA for Windows compatibility, and is a workaround for 
1828 BIOS 
1829 AML 
1830 code errors. See the description of the AcpiSetupGpeForWake interface in 
1831 the 
1832 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
1833
1834 Changed some comments and internal function names to simplify and ensure 
1835 correctness of the Linux code translation. No functional changes.
1836
1837 Example Code and Data Size: These are the sizes for the OS-independent 
1838 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1839 debug 
1840 version of the code includes the debug output trace mechanism and has a 
1841 much 
1842 larger code and data size.
1843
1844   Previous Release:
1845     Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
1846     Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
1847   Current Release:
1848     Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
1849     Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
1850
1851
1852 2) iASL Compiler/Disassembler and Tools:
1853
1854 Disassembler: Added support to emit short, commented descriptions for the 
1855 ACPI 
1856 predefined names in order to improve the readability of the disassembled 
1857 output. ACPICA BZ 959. Changes include:
1858   1) Emit descriptions for all standard predefined names (_INI, _STA, 
1859 _PRW, 
1860 etc.)
1861   2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
1862   3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 
1863 etc.)
1864
1865 AcpiSrc: Fixed several long-standing Linux code translation issues. 
1866 Argument 
1867 descriptions in function headers are now translated properly to lower 
1868 case 
1869 and 
1870 underscores. ACPICA BZ 961. Also fixes translation problems such as 
1871 these: 
1872 (old -> new)
1873   i_aSL -> iASL
1874   00-7_f -> 00-7F
1875   16_k -> 16K
1876   local_fADT -> local_FADT
1877   execute_oSI -> execute_OSI
1878
1879 iASL: Fixed a problem where null bytes were inadvertently emitted into 
1880 some 
1881 listing files.
1882
1883 iASL: Added the existing debug options to the standard help screen. There 
1884 are 
1885 no longer two different help screens. ACPICA BZ 957.
1886
1887 AcpiHelp: Fixed some typos in the various predefined name descriptions. 
1888 Also 
1889 expand some of the descriptions where appropriate.
1890
1891 iASL: Fixed the -ot option (display compile times/statistics). Was not 
1892 working 
1893 properly for standard output; only worked for the debug file case.
1894
1895 ----------------------------------------
1896 18 May 2012. Summary of changes for version 20120518:
1897
1898
1899 1) ACPICA Core Subsystem:
1900
1901 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 
1902 defined 
1903 to block until asynchronous events such as notifies and GPEs have 
1904 completed. 
1905 Within ACPICA, it is only called before a notify or GPE handler is 
1906 removed/uninstalled. It also may be useful for the host OS within related 
1907 drivers such as the Embedded Controller driver. See the ACPICA reference 
1908 for 
1909 additional information. ACPICA BZ 868.
1910
1911 ACPI Tables: Added a new error message for a possible overflow failure 
1912 during 
1913 the conversion of FADT 32-bit legacy register addresses to internal 
1914 common 
1915 64-
1916 bit GAS structure representation. The GAS has a one-byte "bit length" 
1917 field, 
1918 thus limiting the register length to 255 bits. ACPICA BZ 953.
1919
1920 Example Code and Data Size: These are the sizes for the OS-independent 
1921 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1922 debug 
1923 version of the code includes the debug output trace mechanism and has a 
1924 much 
1925 larger code and data size.
1926
1927   Previous Release:
1928     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
1929     Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
1930   Current Release:
1931     Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
1932     Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
1933
1934
1935 2) iASL Compiler/Disassembler and Tools:
1936
1937 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 
1938 macro. 
1939 This keyword was added late in the ACPI 5.0 release cycle and was not 
1940 implemented until now.
1941
1942 Disassembler: Added support for Operation Region externals. Adds missing 
1943 support for operation regions that are defined in another table, and 
1944 referenced locally via a Field or BankField ASL operator. Now generates 
1945 the 
1946 correct External statement.
1947
1948 Disassembler: Several additional fixes for the External() statement 
1949 generation 
1950 related to some ASL operators. Also, order the External() statements 
1951 alphabetically in the disassembler output. Fixes the External() 
1952 generation 
1953 for 
1954 the Create* field, Alias, and Scope operators:
1955  1) Create* buffer field operators - fix type mismatch warning on 
1956 disassembly
1957  2) Alias - implement missing External support
1958  3) Scope - fix to make sure all necessary externals are emitted.
1959
1960 iASL: Improved pathname support. For include files, merge the prefix 
1961 pathname 
1962 with the file pathname and eliminate unnecessary components. Convert 
1963 backslashes in all pathnames to forward slashes, for readability. Include 
1964 file 
1965 pathname changes affect both #include and Include() type operators.
1966
1967 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 
1968 end 
1969 of a valid line by inserting a newline and then returning the EOF during 
1970 the 
1971 next call to GetNextLine. Prevents the line from being ignored due to EOF 
1972 condition.
1973
1974 iASL: Implemented some changes to enhance the IDE support (-vi option.) 
1975 Error 
1976 and Warning messages are now correctly recognized for both the source 
1977 code 
1978 browser and the global error and warning counts.
1979
1980 ----------------------------------------
1981 20 April 2012. Summary of changes for version 20120420:
1982
1983
1984 1) ACPICA Core Subsystem:
1985
1986 Implemented support for multiple notify handlers. This change adds 
1987 support 
1988 to 
1989 allow multiple system and device notify handlers on Device, Thermal Zone, 
1990 and 
1991 Processor objects. This can simplify the host OS notification 
1992 implementation. 
1993 Also re-worked and restructured the entire notify support code to 
1994 simplify 
1995 handler installation, handler removal, notify event queuing, and notify 
1996 dispatch to handler(s). Note: there can still only be two global notify 
1997 handlers - one for system notifies and one for device notifies. There are 
1998 no 
1999 changes to the existing handler install/remove interfaces. Lin Ming, Bob 
2000 Moore, Rafael Wysocki.
2001
2002 Fixed a regression in the package repair code where the object reference 
2003 count was calculated incorrectly. Regression was introduced in the commit 
2004 "Support to add Package wrappers".
2005
2006 Fixed a couple possible memory leaks in the AML parser, in the error 
2007 recovery 
2008 path. Jesper Juhl, Lin Ming.
2009
2010 Example Code and Data Size: These are the sizes for the OS-independent 
2011 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2012 debug version of the code includes the debug output trace mechanism and 
2013 has a 
2014 much larger code and data size.
2015
2016   Previous Release:
2017     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2018     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2019   Current Release:
2020     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2021     Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2022
2023
2024 2) iASL Compiler/Disassembler and Tools:
2025
2026 iASL: Fixed a problem with the resource descriptor support where the 
2027 length 
2028 of the StartDependentFn and StartDependentFnNoPrio descriptors were not 
2029 included in cumulative descriptor offset, resulting in incorrect values 
2030 for 
2031 resource tags within resource descriptors appearing after a 
2032 StartDependent* 
2033 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
2034
2035 iASL and Preprocessor: Implemented full support for the #line directive 
2036 to 
2037 correctly track original source file line numbers through the .i 
2038 preprocessor 
2039 output file - for error and warning messages.
2040
2041 iASL: Expand the allowable byte constants for address space IDs. 
2042 Previously, 
2043 the allowable range was 0x80-0xFF (user-defined spaces), now the range is 
2044 0x0A-0xFF to allow for custom and new IDs without changing the compiler.
2045
2046 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
2047
2048 iASL: Add option to completely disable the preprocessor (-Pn).
2049
2050 iASL: Now emit all error/warning messages to standard error (stderr) by 
2051 default (instead of the previous stdout).
2052
2053 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 
2054 Update 
2055 for resource descriptor offset fix above. Update/cleanup error output 
2056 routines. Enable and send iASL errors/warnings to an error logfile 
2057 (error.txt). Send all other iASL output to a logfile (compiler.txt). 
2058 Fixed 
2059 several extraneous "unrecognized operator" messages.
2060
2061 ----------------------------------------
2062 20 March 2012. Summary of changes for version 20120320:
2063
2064
2065 1) ACPICA Core Subsystem:
2066
2067 Enhanced the sleep/wake interfaces to optionally execute the _GTS method 
2068 (Going To Sleep) and the _BFS method (Back From Sleep). Windows 
2069 apparently 
2070 does not execute these methods, and therefore these methods are often 
2071 untested. It has been seen on some systems where the execution of these 
2072 methods causes errors and also prevents the machine from entering S5. It 
2073 is 
2074 therefore suggested that host operating systems do not execute these 
2075 methods 
2076 by default. In the future, perhaps these methods can be optionally 
2077 executed 
2078 based on the age of the system and/or what is the newest version of 
2079 Windows 
2080 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 
2081 and 
2082 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 
2083 Ming.
2084
2085 Fixed a problem where the length of the local/common FADT was set too 
2086 early. 
2087 The local FADT table length cannot be set to the common length until the 
2088 original length has been examined. There is code that checks the table 
2089 length 
2090 and sets various fields appropriately. This can affect older machines 
2091 with 
2092 early FADT versions. For example, this can cause inadvertent writes to 
2093 the 
2094 CST_CNT register. Julian Anastasov.
2095
2096 Fixed a mapping issue related to a physical table override. Use the 
2097 deferred 
2098 mapping mechanism for tables loaded via the physical override OSL 
2099 interface. 
2100 This allows for early mapping before the virtual memory manager is 
2101 available. 
2102 Thomas Renninger, Bob Moore.
2103
2104 Enhanced the automatic return-object repair code: Repair a common problem 
2105 with 
2106 predefined methods that are defined to return a variable-length Package 
2107 of 
2108 sub-objects. If there is only one sub-object, some BIOS ASL code 
2109 mistakenly 
2110 simply returns the single object instead of a Package with one sub-
2111 object. 
2112 This new support will repair this error by wrapping a Package object 
2113 around 
2114 the original object, creating the correct and expected Package with one 
2115 sub-
2116 object. Names that can be repaired in this manner include: _ALR, _CSD, 
2117 _HPX, 
2118 _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 
2119 939.
2120
2121 Changed the exception code returned for invalid ACPI paths passed as 
2122 parameters to external interfaces such as AcpiEvaluateObject. Was 
2123 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
2124
2125 Example Code and Data Size: These are the sizes for the OS-independent 
2126 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2127 debug 
2128 version of the code includes the debug output trace mechanism and has a 
2129 much 
2130 larger code and data size.
2131
2132   Previous Release:
2133     Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2134     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2135   Current Release:
2136     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2137     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2138
2139
2140 2) iASL Compiler/Disassembler and Tools:
2141
2142 iASL: Added the infrastructure and initial implementation of a integrated 
2143 C-
2144 like preprocessor. This will simplify BIOS development process by 
2145 eliminating 
2146 the need for a separate preprocessing step during builds. On Windows, it 
2147 also 
2148 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 
2149 features including full #define() macro support are still under 
2150 development. 
2151 These preprocessor directives are supported:
2152     #define
2153     #elif
2154     #else
2155     #endif
2156     #error
2157     #if
2158     #ifdef
2159     #ifndef
2160     #include
2161     #pragma message
2162     #undef
2163     #warning
2164 In addition, these new command line options are supported:
2165     -D <symbol> Define symbol for preprocessor use
2166     -li         Create preprocessed output file (*.i)
2167     -P          Preprocess only and create preprocessor output file (*.i)
2168
2169 Table Compiler: Fixed a problem where the equals operator within an 
2170 expression 
2171 did not work properly.
2172
2173 Updated iASL to use the current versions of Bison/Flex. Updated the 
2174 Windows 
2175 project file to invoke these tools from the standard location. ACPICA BZ 
2176 904. 
2177 Versions supported:
2178     Flex for Windows:  V2.5.4
2179     Bison for Windows: V2.4.1
2180
2181 ----------------------------------------
2182 15 February 2012. Summary of changes for version 20120215:
2183
2184
2185 1) ACPICA Core Subsystem:
2186
2187 There have been some major changes to the sleep/wake support code, as 
2188 described below (a - e).
2189
2190 a) The AcpiLeaveSleepState has been split into two interfaces, similar to 
2191 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 
2192 AcpiLeaveSleepStatePrep. This allows the host to perform actions between 
2193 the 
2194 time the _BFS method is called and the _WAK method is called. NOTE: all 
2195 hosts 
2196 must update their wake/resume code or else sleep/wake will not work 
2197 properly. 
2198 Rafael Wysocki.
2199
2200 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 
2201 _WAK 
2202 method. Some machines require that the GPEs are enabled before the _WAK 
2203 method 
2204 is executed. Thomas Renninger.
2205
2206 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 
2207 bit. 
2208 Some BIOS code assumes that WAK_STS will be cleared on resume and use it 
2209 to 
2210 determine whether the system is rebooting or resuming. Matthew Garrett.
2211
2212 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 
2213 Sleep) to 
2214 match the ACPI specification requirement. Rafael Wysocki.
2215
2216 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 
2217 registers within the V5 FADT. This support adds two new files: 
2218 hardware/hwesleep.c implements the support for the new registers. Moved 
2219 all 
2220 sleep/wake external interfaces to hardware/hwxfsleep.c.
2221
2222
2223 Added a new OSL interface for ACPI table overrides, 
2224 AcpiOsPhysicalTableOverride. This interface allows the host to override a 
2225 table via a physical address, instead of the logical address required by 
2226 AcpiOsTableOverride. This simplifies the host implementation. Initial 
2227 implementation by Thomas Renninger. The ACPICA implementation creates a 
2228 single 
2229 shared function for table overrides that attempts both a logical and a 
2230 physical override.
2231
2232 Expanded the OSL memory read/write interfaces to 64-bit data 
2233 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 
2234 transfer support for GAS register structures passed to AcpiRead and 
2235 AcpiWrite.
2236
2237 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 
2238 custom 
2239 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 
2240 model. 
2241 See the ACPICA reference for details. ACPICA BZ 942. This option removes 
2242 about 
2243 10% of the code and 5% of the static data, and the following hardware 
2244 ACPI 
2245 features become unavailable:
2246     PM Event and Control registers
2247     SCI interrupt (and handler)
2248     Fixed Events
2249     General Purpose Events (GPEs)
2250     Global Lock
2251     ACPI PM timer
2252     FACS table (Waking vectors and Global Lock)
2253
2254 Updated the unix tarball directory structure to match the ACPICA git 
2255 source 
2256 tree. This ensures that the generic unix makefiles work properly (in 
2257 generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ 
2258 867.
2259
2260 Updated the return value of the _REV predefined method to integer value 5 
2261 to 
2262 reflect ACPI 5.0 support.
2263
2264 Moved the external ACPI PM timer interface prototypes to the public 
2265 acpixf.h 
2266 file where they belong.
2267
2268 Example Code and Data Size: These are the sizes for the OS-independent 
2269 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2270 debug 
2271 version of the code includes the debug output trace mechanism and has a 
2272 much 
2273 larger code and data size.
2274
2275   Previous Release:
2276     Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2277     Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2278   Current Release:
2279     Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2280     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2281
2282
2283 2) iASL Compiler/Disassembler and Tools:
2284
2285 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 
2286 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 
2287 incorrectly displayed.
2288
2289 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 
2290 specification.
2291
2292 ----------------------------------------
2293 11 January 2012. Summary of changes for version 20120111:
2294
2295
2296 1) ACPICA Core Subsystem:
2297
2298 Implemented a new mechanism to allow host device drivers to check for 
2299 address 
2300 range conflicts with ACPI Operation Regions. Both SystemMemory and 
2301 SystemIO 
2302 address spaces are supported. A new external interface, 
2303 AcpiCheckAddressRange, 
2304 allows drivers to check an address range against the ACPI namespace. See 
2305 the 
2306 ACPICA reference for additional details. Adds one new file, 
2307 utilities/utaddress.c. Lin Ming, Bob Moore.
2308
2309 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 
2310 Control 
2311 and 
2312 Status registers, update the ACPI 5.0 flags, and update internal data 
2313 structures to handle an FADT larger than 256 bytes. The size of the ACPI 
2314 5.0 
2315 FADT is 268 bytes.
2316
2317 Updated all ACPICA copyrights and signons to 2012. Added the 2012 
2318 copyright to 
2319 all module headers and signons, including the standard Linux header. This 
2320 affects virtually every file in the ACPICA core subsystem, iASL compiler, 
2321 and 
2322 all ACPICA utilities.
2323
2324 Example Code and Data Size: These are the sizes for the OS-independent 
2325 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2326 debug 
2327 version of the code includes the debug output trace mechanism and has a 
2328 much 
2329 larger code and data size.
2330
2331   Previous Release:
2332     Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2333     Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2334   Current Release:
2335     Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2336     Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2337
2338
2339 2) iASL Compiler/Disassembler and Tools:
2340
2341 Disassembler: fixed a problem with the automatic resource tag generation 
2342 support. Fixes a problem where the resource tags are inadvertently not 
2343 constructed if the table being disassembled contains external references 
2344 to 
2345 control methods. Moved the actual construction of the tags to after the 
2346 final 
2347 namespace is constructed (after 2nd parse is invoked due to external 
2348 control 
2349 method references.) ACPICA BZ 941.
2350
2351 Table Compiler: Make all "generic" operators caseless. These are the 
2352 operators 
2353 like UINT8, String, etc. Making these caseless improves ease-of-use. 
2354 ACPICA BZ 
2355 934.
2356
2357 ----------------------------------------
2358 23 November 2011. Summary of changes for version 20111123:
2359
2360 0) ACPI 5.0 Support:
2361
2362 This release contains full support for the ACPI 5.0 specification, as 
2363 summarized below.
2364
2365 Reduced Hardware Support:
2366 -------------------------
2367
2368 This support allows for ACPI systems without the usual ACPI hardware. 
2369 This 
2370 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 
2371 will 
2372 not attempt to initialize or use any of the usual ACPI hardware. Note, 
2373 when 
2374 this flag is set, all of the following ACPI hardware is assumed to be not 
2375 present and is not initialized or accessed:
2376
2377     General Purpose Events (GPEs)
2378     Fixed Events (PM1a/PM1b and PM Control)
2379     Power Management Timer and Console Buttons (power/sleep)
2380     Real-time Clock Alarm
2381     Global Lock
2382     System Control Interrupt (SCI)
2383     The FACS is assumed to be non-existent
2384
2385 ACPI Tables:
2386 ------------
2387
2388 All new tables and updates to existing tables are fully supported in the 
2389 ACPICA headers (for use by device drivers), the disassembler, and the 
2390 iASL 
2391 Data Table Compiler. ACPI 5.0 defines these new tables:
2392
2393     BGRT        /* Boot Graphics Resource Table */
2394     DRTM        /* Dynamic Root of Trust for Measurement table */
2395     FPDT        /* Firmware Performance Data Table */
2396     GTDT        /* Generic Timer Description Table */
2397     MPST        /* Memory Power State Table */
2398     PCCT        /* Platform Communications Channel Table */
2399     PMTT        /* Platform Memory Topology Table */
2400     RASF        /* RAS Feature table */
2401
2402 Operation Regions/SpaceIDs:
2403 ---------------------------
2404
2405 All new operation regions are fully supported by the iASL compiler, the 
2406 disassembler, and the ACPICA runtime code (for dispatch to region 
2407 handlers.) 
2408 The new operation region Space IDs are:
2409
2410     GeneralPurposeIo
2411     GenericSerialBus
2412
2413 Resource Descriptors:
2414 ---------------------
2415
2416 All new ASL resource descriptors are fully supported by the iASL 
2417 compiler, 
2418 the 
2419 ASL/AML disassembler, and the ACPICA runtime Resource Manager code 
2420 (including 
2421 all new predefined resource tags). New descriptors are:
2422
2423     FixedDma
2424     GpioIo
2425     GpioInt
2426     I2cSerialBus
2427     SpiSerialBus
2428     UartSerialBus
2429
2430 ASL/AML Operators, New and Modified:
2431 ------------------------------------
2432
2433 One new operator is added, the Connection operator, which is used to 
2434 associate 
2435 a GeneralPurposeIo or GenericSerialBus resource descriptor with 
2436 individual 
2437 field objects within an operation region. Several new protocols are 
2438 associated 
2439 with the AccessAs operator. All are fully supported by the iASL compiler, 
2440 disassembler, and runtime ACPICA AML interpreter:
2441
2442     Connection                      // Declare Field Connection 
2443 attributes
2444     AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
2445     AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes 
2446 Protocol
2447     AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
2448     RawDataBuffer                       // Data type for Vendor Data 
2449 fields
2450
2451 Predefined ASL/AML Objects:
2452 ---------------------------
2453
2454 All new predefined objects/control-methods are supported by the iASL 
2455 compiler 
2456 and the ACPICA runtime validation/repair (arguments and return values.) 
2457 New 
2458 predefined names include the following:
2459
2460 Standard Predefined Names (Objects or Control Methods):
2461     _AEI, _CLS, _CPC, _CWS, _DEP,
2462     _DLM, _EVT, _GCP, _CRT, _GWS,
2463     _HRV, _PRE, _PSE, _SRT, _SUB.
2464
2465 Resource Tags (Names used to access individual fields within resource 
2466 descriptors):
2467     _DBT, _DPL, _DRS, _END, _FLC,
2468     _IOR, _LIN, _MOD, _PAR, _PHA,
2469     _PIN, _PPI, _POL, _RXL, _SLV,
2470     _SPE, _STB, _TXL, _VEN.
2471
2472 ACPICA External Interfaces:
2473 ---------------------------
2474
2475 Several new interfaces have been defined for use by ACPI-related device 
2476 drivers and other host OS services:
2477
2478 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 
2479 to 
2480 acquire and release AML mutexes that are defined in the DSDT/SSDT tables 
2481 provided by the BIOS. They are intended to be used in conjunction with 
2482 the 
2483 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 
2484 mutual exclusion with the AML code/interpreter.
2485
2486 AcpiGetEventResources: Returns the (formatted) resource descriptors as 
2487 defined 
2488 by the ACPI 5.0 _AEI object (ACPI Event Information).  This object 
2489 provides 
2490 resource descriptors associated with hardware-reduced platform events, 
2491 similar 
2492 to the AcpiGetCurrentResources interface.
2493
2494 Operation Region Handlers: For General Purpose IO and Generic Serial Bus 
2495 operation regions, information about the Connection() object and any 
2496 optional 
2497 length information is passed to the region handler within the Context 
2498 parameter.
2499
2500 AcpiBufferToResource: This interface converts a raw AML buffer containing 
2501
2502 resource template or resource descriptor to the ACPI_RESOURCE internal 
2503 format 
2504 suitable for use by device drivers. Can be used by an operation region 
2505 handler 
2506 to convert the Connection() buffer object into a ACPI_RESOURCE.
2507
2508 Miscellaneous/Tools/TestSuites: 
2509 -------------------------------
2510
2511 Support for extended _HID names (Four alpha characters instead of three).
2512 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
2513 Support for ACPI 5.0 features in the ASLTS test suite.
2514 Fully updated documentation (ACPICA and iASL reference documents.)
2515
2516 ACPI Table Definition Language:
2517 -------------------------------
2518
2519 Support for this language was implemented and released as a subsystem of 
2520 the 
2521 iASL compiler in 2010. (See the iASL compiler User Guide.)
2522
2523
2524 Non-ACPI 5.0 changes for this release:
2525 --------------------------------------
2526
2527 1) ACPICA Core Subsystem:
2528
2529 Fix a problem with operation region declarations where a failure can 
2530 occur 
2531 if 
2532 the region name and an argument that evaluates to an object (such as the 
2533 region address) are in different namespace scopes. Lin Ming, ACPICA BZ 
2534 937.
2535
2536 Do not abort an ACPI table load if an invalid space ID is found within. 
2537 This 
2538 will be caught later if the offending method is executed. ACPICA BZ 925.
2539
2540 Fixed an issue with the FFixedHW space ID where the ID was not always 
2541 recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
2542
2543 Fixed a problem with the 32-bit generation of the unix-specific OSL 
2544 (osunixxf.c). Lin Ming, ACPICA BZ 936.
2545
2546 Several changes made to enable generation with the GCC 4.6 compiler. 
2547 ACPICA BZ 
2548 935.
2549
2550 New error messages: Unsupported I/O requests (not 8/16/32 bit), and 
2551 Index/Bank 
2552 field registers out-of-range.
2553
2554 2) iASL Compiler/Disassembler and Tools:
2555
2556 iASL: Implemented the __PATH__ operator, which returns the full pathname 
2557 of 
2558 the current source file.
2559
2560 AcpiHelp: Automatically display expanded keyword information for all ASL 
2561 operators.
2562
2563 Debugger: Add "Template" command to disassemble/dump resource template 
2564 buffers.
2565
2566 Added a new master script to generate and execute the ASLTS test suite. 
2567 Automatically handles 32- and 64-bit generation. See tests/aslts.sh
2568
2569 iASL: Fix problem with listing generation during processing of the 
2570 Switch() 
2571 operator where AML listing was disabled until the entire Switch block was 
2572 completed.
2573
2574 iASL: Improve support for semicolon statement terminators. Fix "invalid 
2575 character" message for some cases when the semicolon is used. Semicolons 
2576 are 
2577 now allowed after every <Term> grammar element. ACPICA BZ 927.
2578
2579 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 
2580 923.
2581
2582 Disassembler: Fix problem with disassembly of the DataTableRegion 
2583 operator 
2584 where an inadvertent "Unhandled deferred opcode" message could be 
2585 generated.
2586
2587 3) Example Code and Data Size
2588
2589 These are the sizes for the OS-independent acpica.lib produced by the 
2590 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
2591 includes the debug output trace mechanism and has a much larger code and 
2592 data 
2593 size.
2594
2595   Previous Release:
2596     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2597     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2598   Current Release:
2599     Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2600     Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2601
2602 ----------------------------------------
2603 22 September 2011. Summary of changes for version 20110922:
2604
2605 0) ACPI 5.0 News:
2606
2607 Support for ACPI 5.0 in ACPICA has been underway for several months and 
2608 will 
2609 be released at the same time that ACPI 5.0 is officially released.
2610
2611 The ACPI 5.0 specification is on track for release in the next few 
2612 months.
2613  
2614 1) ACPICA Core Subsystem:
2615
2616 Fixed a problem where the maximum sleep time for the Sleep() operator was 
2617 intended to be limited to two seconds, but was inadvertently limited to 
2618 20 
2619 seconds instead.
2620
2621 Linux and Unix makefiles: Added header file dependencies to ensure 
2622 correct 
2623 generation of ACPICA core code and utilities. Also simplified the 
2624 makefiles 
2625 considerably through the use of the vpath variable to specify search 
2626 paths. 
2627 ACPICA BZ 924.
2628
2629 2) iASL Compiler/Disassembler and Tools:
2630
2631 iASL: Implemented support to check the access length for all fields 
2632 created to 
2633 access named Resource Descriptor fields. For example, if a resource field 
2634 is 
2635 defined to be two bits, a warning is issued if a CreateXxxxField() is 
2636 used 
2637 with an incorrect bit length. This is implemented for all current 
2638 resource 
2639 descriptor names. ACPICA BZ 930.
2640   
2641 Disassembler: Fixed a byte ordering problem with the output of 24-bit and 
2642 56-
2643 bit integers.
2644
2645 iASL: Fixed a couple of issues associated with variable-length package 
2646 objects. 1) properly handle constants like One, Ones, Zero -- do not make 
2647
2648 VAR_PACKAGE when these are used as a package length. 2) Allow the 
2649 VAR_PACKAGE 
2650 opcode (in addition to PACKAGE) when validating object types for 
2651 predefined 
2652 names.
2653
2654 iASL: Emit statistics for all output files (instead of just the ASL input 
2655 and 
2656 AML output). Includes listings, hex files, etc.
2657
2658 iASL: Added -G option to the table compiler to allow the compilation of 
2659 custom 
2660 ACPI tables. The only part of a table that is required is the standard 
2661 36-
2662 byte 
2663 ACPI header.
2664
2665 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 
2666 headers), 
2667 which also adds correct 64-bit support. Also, now all output filenames 
2668 are 
2669 completely lower case.
2670
2671 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 
2672 loading table files. A warning is issued for any such tables. The only 
2673 exception is an FADT. This also fixes a possible fault when attempting to 
2674 load 
2675 non-AML tables. ACPICA BZ 932.
2676
2677 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 
2678
2679 missing table terminator could cause a fault when using the -p option.
2680
2681 AcpiSrc: Fixed a possible divide-by-zero fault when generating file 
2682 statistics.
2683
2684 3) Example Code and Data Size
2685
2686 These are the sizes for the OS-independent acpica.lib produced by the 
2687 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
2688 includes the debug output trace mechanism and has a much larger code and 
2689 data 
2690 size.
2691
2692   Previous Release (VC 9.0):
2693     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2694     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2695   Current Release (VC 9.0):
2696     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2697     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2698
2699
2700 ----------------------------------------
2701 23 June 2011. Summary of changes for version 20110623:
2702
2703 1) ACPI CA Core Subsystem:
2704
2705 Updated the predefined name repair mechanism to not attempt repair of a 
2706 _TSS 
2707 return object if a _PSS object is present. We can only sort the _TSS 
2708 return 
2709 package if there is no _PSS within the same scope. This is because if 
2710 _PSS 
2711 is 
2712 present, the ACPI specification dictates that the _TSS Power Dissipation 
2713 field 
2714 is to be ignored, and therefore some BIOSs leave garbage values in the 
2715 _TSS 
2716 Power field(s). In this case, it is best to just return the _TSS package 
2717 as-
2718 is. Reported by, and fixed with assistance from Fenghua Yu.
2719
2720 Added an option to globally disable the control method return value 
2721 validation 
2722 and repair. This runtime option can be used to disable return value 
2723 repair 
2724 if 
2725 this is causing a problem on a particular machine. Also added an option 
2726 to 
2727 AcpiExec (-dr) to set this disable flag.
2728
2729 All makefiles and project files: Major changes to improve generation of 
2730 ACPICA 
2731 tools. ACPICA BZ 912:
2732     Reduce default optimization levels to improve compatibility
2733     For Linux, add strict-aliasing=0 for gcc 4
2734     Cleanup and simplify use of command line defines
2735     Cleanup multithread library support
2736     Improve usage messages
2737
2738 Linux-specific header: update handling of THREAD_ID and pthread. For the 
2739 32-
2740 bit case, improve casting to eliminate possible warnings, especially with 
2741 the 
2742 acpica tools.
2743
2744 Example Code and Data Size: These are the sizes for the OS-independent 
2745 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2746 debug 
2747 version of the code includes the debug output trace mechanism and has a 
2748 much 
2749 larger code and data size.
2750
2751   Previous Release (VC 9.0):
2752     Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
2753     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2754   Current Release (VC 9.0):
2755     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2756     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2757
2758 2) iASL Compiler/Disassembler and Tools:
2759
2760 With this release, a new utility named "acpihelp" has been added to the 
2761 ACPICA 
2762 package. This utility summarizes the ACPI specification chapters for the 
2763 ASL 
2764 and AML languages. It generates under Linux/Unix as well as Windows, and 
2765 provides the following functionality:
2766     Find/display ASL operator(s) -- with description and syntax.
2767     Find/display ASL keyword(s) -- with exact spelling and descriptions.
2768     Find/display ACPI predefined name(s) -- with description, number
2769         of arguments, and the return value data type.
2770     Find/display AML opcode name(s) -- with opcode, arguments, and 
2771 grammar.
2772     Decode/display AML opcode -- with opcode name, arguments, and 
2773 grammar.
2774
2775 Service Layers: Make multi-thread support configurable. Conditionally 
2776 compile 
2777 the multi-thread support so that threading libraries will not be linked 
2778 if 
2779 not 
2780 necessary. The only tool that requires multi-thread support is AcpiExec.
2781
2782 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 
2783 of 
2784 Bison appear to want the interface to yyerror to be a const char * (or at 
2785 least this is a problem when generating iASL on some systems.) ACPICA BZ 
2786 923 
2787 Pierre Lejeune.
2788
2789 Tools: Fix for systems where O_BINARY is not defined. Only used for 
2790 Windows 
2791 versions of the tools.
2792
2793 ----------------------------------------
2794 27 May 2011. Summary of changes for version 20110527:
2795
2796 1) ACPI CA Core Subsystem:
2797
2798 ASL Load() operator: Reinstate most restrictions on the incoming ACPI 
2799 table 
2800 signature. Now, only allow SSDT, OEMx, and a null signature. History:
2801     1) Originally, we checked the table signature for "SSDT" or "PSDT".
2802        (PSDT is now obsolete.)
2803     2) We added support for OEMx tables, signature "OEM" plus a fourth
2804        "don't care" character.
2805     3) Valid tables were encountered with a null signature, so we just
2806        gave up on validating the signature, (05/2008).
2807     4) We encountered non-AML tables such as the MADT, which caused
2808        interpreter errors and kernel faults. So now, we once again allow
2809        only SSDT, OEMx, and now, also a null signature. (05/2011).
2810
2811 Added the missing _TDL predefined name to the global name list in order 
2812 to 
2813 enable validation. Affects both the core ACPICA code and the iASL 
2814 compiler.
2815
2816 Example Code and Data Size: These are the sizes for the OS-independent 
2817 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2818 debug 
2819 version of the code includes the debug output trace mechanism and has a 
2820 much 
2821 larger code and data size.
2822
2823   Previous Release (VC 9.0):
2824     Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
2825     Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
2826   Current Release (VC 9.0):
2827     Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
2828     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2829
2830 2) iASL Compiler/Disassembler and Tools:
2831
2832 Debugger/AcpiExec: Implemented support for "complex" method arguments on 
2833 the 
2834 debugger command line. This adds support beyond simple integers -- 
2835 including 
2836 Strings, Buffers, and Packages. Includes support for nested packages. 
2837 Increased the default command line buffer size to accommodate these 
2838 arguments. 
2839 See the ACPICA reference for details and syntax. ACPICA BZ 917.
2840  
2841 Debugger/AcpiExec: Implemented support for "default" method arguments for 
2842 the 
2843 Execute/Debug command. Now, the debugger will always invoke a control 
2844 method 
2845 with the required number of arguments -- even if the command line 
2846 specifies 
2847 none or insufficient arguments. It uses default integer values for any 
2848 missing 
2849 arguments. Also fixes a bug where only six method arguments maximum were 
2850 supported instead of the required seven.
2851
2852 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 
2853 and 
2854 also return status in order to prevent buffer overruns. See the ACPICA 
2855 reference for details and syntax. ACPICA BZ 921
2856
2857 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 
2858 makefiles to simplify support for the two different but similar parser 
2859 generators, bison and yacc.
2860
2861 Updated the generic unix makefile for gcc 4. The default gcc version is 
2862 now 
2863 expected to be 4 or greater, since options specific to gcc 4 are used.
2864
2865 ----------------------------------------
2866 13 April 2011. Summary of changes for version 20110413:
2867
2868 1) ACPI CA Core Subsystem:
2869
2870 Implemented support to execute a so-called "orphan" _REG method under the 
2871 EC 
2872 device. This change will force the execution of a _REG method underneath 
2873 the 
2874 EC 
2875 device even if there is no corresponding operation region of type 
2876 EmbeddedControl. Fixes a problem seen on some machines and apparently is 
2877 compatible with Windows behavior. ACPICA BZ 875.
2878
2879 Added more predefined methods that are eligible for automatic NULL 
2880 package 
2881 element removal. This change adds another group of predefined names to 
2882 the 
2883 list 
2884 of names that can be repaired by having NULL package elements dynamically 
2885 removed. This group are those methods that return a single variable-
2886 length 
2887 package containing simple data types such as integers, buffers, strings. 
2888 This 
2889 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 
2890 _PSL, 
2891 _Sx, 
2892 and _TZD. ACPICA BZ 914.
2893
2894 Split and segregated all internal global lock functions to a new file, 
2895 evglock.c.
2896
2897 Updated internal address SpaceID for DataTable regions. Moved this 
2898 internal 
2899 space 
2900 id in preparation for ACPI 5.0 changes that will include some new space 
2901 IDs. 
2902 This 
2903 change should not affect user/host code.
2904
2905 Example Code and Data Size: These are the sizes for the OS-independent 
2906 acpica.lib 
2907 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
2908 version of 
2909 the code includes the debug output trace mechanism and has a much larger 
2910 code 
2911 and 
2912 data size.
2913
2914   Previous Release (VC 9.0):
2915     Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
2916     Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
2917   Current Release (VC 9.0):
2918     Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
2919     Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
2920
2921 2) iASL Compiler/Disassembler and Tools:
2922
2923 iASL/DTC: Major update for new grammar features. Allow generic data types 
2924 in 
2925 custom ACPI tables. Field names are now optional. Any line can be split 
2926 to 
2927 multiple lines using the continuation char (\). Large buffers now use 
2928 line-
2929 continuation character(s) and no colon on the continuation lines. See the 
2930 grammar 
2931 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 
2932 Moore.
2933
2934 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 
2935 statements. 
2936 Since the parser stuffs a "zero" as the return value for these statements 
2937 (due 
2938 to 
2939 the underlying AML grammar), they were seen as "return with value" by the 
2940 iASL 
2941 semantic checking. They are now seen correctly as "null" return 
2942 statements.
2943
2944 iASL: Check if a_REG declaration has a corresponding Operation Region. 
2945 Adds a 
2946 check for each _REG to ensure that there is in fact a corresponding 
2947 operation 
2948 region declaration in the same scope. If not, the _REG method is not very 
2949 useful 
2950 since it probably won't be executed. ACPICA BZ 915.
2951
2952 iASL/DTC: Finish support for expression evaluation. Added a new 
2953 expression 
2954 parser 
2955 that implements c-style operator precedence and parenthesization. ACPICA 
2956 bugzilla 
2957 908.
2958
2959 Disassembler/DTC: Remove support for () and <> style comments in data 
2960 tables. 
2961 Now 
2962 that DTC has full expression support, we don't want to have comment 
2963 strings 
2964 that 
2965 start with a parentheses or a less-than symbol. Now, only the standard /* 
2966 and 
2967 // 
2968 comments are supported, as well as the bracket [] comments.
2969
2970 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 
2971 "unusual" 
2972 headers in the acpidump file. Update the header validation to support 
2973 these 
2974 tables. Problem introduced in previous AcpiXtract version in the change 
2975 to 
2976 support "wrong checksum" error messages emitted by acpidump utility.
2977
2978 iASL: Add a * option to generate all template files (as a synonym for 
2979 ALL) 
2980 as 
2981 in 
2982 "iasl -T *" or "iasl -T ALL".
2983
2984 iASL/DTC: Do not abort compiler on fatal errors. We do not want to 
2985 completely 
2986 abort the compiler on "fatal" errors, simply should abort the current 
2987 compile. 
2988 This allows multiple compiles with a single (possibly wildcard) compiler 
2989 invocation.
2990
2991 ----------------------------------------
2992 16 March 2011. Summary of changes for version 20110316:
2993
2994 1) ACPI CA Core Subsystem:
2995
2996 Fixed a problem caused by a _PRW method appearing at the namespace root 
2997 scope 
2998 during the setup of wake GPEs. A fault could occur if a _PRW directly 
2999 under 
3000 the 
3001 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
3002
3003 Implemented support for "spurious" Global Lock interrupts. On some 
3004 systems, a 
3005 global lock interrupt can occur without the pending flag being set. Upon 
3006
3007 GL 
3008 interrupt, we now ensure that a thread is actually waiting for the lock 
3009 before 
3010 signaling GL availability. Rafael Wysocki, Bob Moore.
3011
3012 Example Code and Data Size: These are the sizes for the OS-independent 
3013 acpica.lib 
3014 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
3015 version of 
3016 the code includes the debug output trace mechanism and has a much larger 
3017 code 
3018 and 
3019 data size.
3020
3021   Previous Release (VC 9.0):
3022     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3023     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3024   Current Release (VC 9.0):
3025     Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3026     Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3027
3028 2) iASL Compiler/Disassembler and Tools:
3029
3030 Implemented full support for the "SLIC" ACPI table. Includes support in 
3031 the 
3032 header files, disassembler, table compiler, and template generator. Bob 
3033 Moore, 
3034 Lin Ming.
3035
3036 AcpiXtract: Correctly handle embedded comments and messages from 
3037 AcpiDump. 
3038 Apparently some or all versions of acpidump will occasionally emit a 
3039 comment 
3040 like 
3041 "Wrong checksum", etc., into the dump file. This was causing problems for 
3042 AcpiXtract. ACPICA BZ 905.
3043
3044 iASL: Fix the Linux makefile by removing an inadvertent double file 
3045 inclusion. 
3046 ACPICA BZ 913.
3047
3048 AcpiExec: Update installation of operation region handlers. Install one 
3049 handler 
3050 for a user-defined address space. This is used by the ASL test suite 
3051 (ASLTS).
3052
3053 ----------------------------------------
3054 11 February 2011. Summary of changes for version 20110211:
3055
3056 1) ACPI CA Core Subsystem:
3057
3058 Added a mechanism to defer _REG methods for some early-installed 
3059 handlers. 
3060 Most user handlers should be installed before call to 
3061 AcpiEnableSubsystem. 
3062 However, Event handlers and region handlers should be installed after 
3063 AcpiInitializeObjects. Override handlers for the "default" regions should 
3064 be 
3065 installed early, however. This change executes all _REG methods for the 
3066 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 
3067 chicken/egg issues between them. ACPICA BZ 848.
3068
3069 Implemented an optimization for GPE detection. This optimization will 
3070 simply 
3071 ignore GPE registers that contain no enabled GPEs -- there is no need to 
3072 read the register since this information is available internally. This 
3073 becomes more important on machines with a large GPE space. ACPICA 
3074 bugzilla 
3075 884. Lin Ming. Suggestion from Joe Liu.
3076
3077 Removed all use of the highly unreliable FADT revision field. The 
3078 revision 
3079 number in the FADT has been found to be completely unreliable and cannot 
3080 be 
3081 trusted. Only the actual table length can be used to infer the version. 
3082 This 
3083 change updates the ACPICA core and the disassembler so that both no 
3084 longer 
3085 even look at the FADT version and instead depend solely upon the FADT 
3086 length.
3087
3088 Fix an unresolved name issue for the no-debug and no-error-message source 
3089 generation cases. The _AcpiModuleName was left undefined in these cases, 
3090 but 
3091 it is actually needed as a parameter to some interfaces. Define 
3092 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
3093
3094 Split several large files (makefiles and project files updated)
3095   utglobal.c   -> utdecode.c
3096   dbcomds.c    -> dbmethod.c dbnames.c
3097   dsopcode.c   -> dsargs.c dscontrol.c
3098   dsload.c     -> dsload2.c
3099   aslanalyze.c -> aslbtypes.c aslwalks.c
3100
3101 Example Code and Data Size: These are the sizes for the OS-independent 
3102 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3103 debug version of the code includes the debug output trace mechanism and 
3104 has 
3105 a much larger code and data size.
3106
3107   Previous Release (VC 9.0):
3108     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3109     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3110   Current Release (VC 9.0):
3111     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3112     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3113
3114 2) iASL Compiler/Disassembler and Tools:
3115
3116 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 
3117 These are useful C-style macros with the standard definitions. ACPICA 
3118 bugzilla 898.
3119
3120 iASL/DTC: Added support for integer expressions and labels. Support for 
3121 full 
3122 expressions for all integer fields in all ACPI tables. Support for labels 
3123 in 
3124 "generic" portions of tables such as UEFI. See the iASL reference manual.
3125
3126 Debugger: Added a command to display the status of global handlers. The 
3127 "handlers" command will display op region, fixed event, and miscellaneous 
3128 global handlers. installation status -- and for op regions, whether 
3129 default 
3130 or user-installed handler will be used.
3131
3132 iASL: Warn if reserved method incorrectly returns a value. Many 
3133 predefined 
3134 names are defined such that they do not return a value. If implemented as 
3135
3136 method, issue a warning if such a name explicitly returns a value. ACPICA 
3137 Bugzilla 855.
3138
3139 iASL: Added detection of GPE method name conflicts. Detects a conflict 
3140 where 
3141 there are two GPE methods of the form _Lxy and _Exy in the same scope. 
3142 (For 
3143 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
3144
3145 iASL/DTC: Fixed a couple input scanner issues with comments and line 
3146 numbers. Comment remover could get confused and miss a comment ending. 
3147 Fixed 
3148 a problem with line counter maintenance.
3149
3150 iASL/DTC: Reduced the severity of some errors from fatal to error. There 
3151 is 
3152 no need to abort on simple errors within a field definition.
3153
3154 Debugger: Simplified the output of the help command. All help output now 
3155 in 
3156 a single screen, instead of help subcommands. ACPICA Bugzilla 897.
3157
3158 ----------------------------------------
3159 12 January 2011. Summary of changes for version 20110112:
3160
3161 1) ACPI CA Core Subsystem:
3162
3163 Fixed a race condition between method execution and namespace walks that 
3164 can 
3165 possibly cause a fault. The problem was apparently introduced in version 
3166 20100528 as a result of a performance optimization that reduces the 
3167 number 
3168 of 
3169 namespace walks upon method exit by using the delete_namespace_subtree 
3170 function instead of the delete_namespace_by_owner function used 
3171 previously. 
3172 Bug is a missing namespace lock in the delete_namespace_subtree function. 
3173 dana.myers@oracle.com
3174
3175 Fixed several issues and a possible fault with the automatic "serialized" 
3176 method support. History: This support changes a method to "serialized" on 
3177 the 
3178 fly if the method generates an AE_ALREADY_EXISTS error, indicating the 
3179 possibility that it cannot handle reentrancy. This fix repairs a couple 
3180 of 
3181 issues seen in the field, especially on machines with many cores:
3182
3183     1) Delete method children only upon the exit of the last thread,
3184        so as to not delete objects out from under other running threads
3185       (and possibly causing a fault.)
3186     2) Set the "serialized" bit for the method only upon the exit of the
3187        Last thread, so as to not cause deadlock when running threads
3188        attempt to exit.
3189     3) Cleanup the use of the AML "MethodFlags" and internal method flags
3190        so that there is no longer any confusion between the two.
3191
3192     Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
3193
3194 Debugger: Now lock the namespace for duration of a namespace dump. 
3195 Prevents 
3196 issues if the namespace is changing dynamically underneath the debugger. 
3197 Especially affects temporary namespace nodes, since the debugger displays 
3198 these also.
3199
3200 Updated the ordering of include files. The ACPICA headers should appear 
3201 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 
3202 set 
3203 any necessary compiler-specific defines, etc. Affects the ACPI-related 
3204 tools 
3205 and utilities.
3206
3207 Updated all ACPICA copyrights and signons to 2011. Added the 2011 
3208 copyright 
3209 to all module headers and signons, including the Linux header. This 
3210 affects 
3211 virtually every file in the ACPICA core subsystem, iASL compiler, and all 
3212 utilities.
3213
3214 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 
3215 project files for VC++ 6.0 are now obsolete. New project files can be 
3216 found 
3217 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 
3218 details.
3219
3220 Example Code and Data Size: These are the sizes for the OS-independent 
3221 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3222 debug version of the code includes the debug output trace mechanism and 
3223 has a 
3224 much larger code and data size.
3225
3226   Previous Release (VC 6.0):
3227     Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3228     Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3229   Current Release (VC 9.0):
3230     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3231     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3232
3233 2) iASL Compiler/Disassembler and Tools:
3234
3235 iASL: Added generic data types to the Data Table compiler. Add "generic" 
3236 data 
3237 types such as UINT32, String, Unicode, etc., to simplify the generation 
3238 of 
3239 platform-defined tables such as UEFI. Lin Ming.
3240
3241 iASL: Added listing support for the Data Table Compiler. Adds listing 
3242 support 
3243 (-l) to display actual binary output for each line of input code.
3244
3245 ----------------------------------------
3246 09 December 2010. Summary of changes for version 20101209:
3247
3248 1) ACPI CA Core Subsystem:
3249
3250 Completed the major overhaul of the GPE support code that was begun in 
3251 July 
3252 2010. Major features include: removal of _PRW execution in ACPICA (host 
3253 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 
3254 changes to existing interfaces, simplification of GPE handler operation, 
3255 and 
3256 a handful of new interfaces:
3257
3258     AcpiUpdateAllGpes
3259     AcpiFinishGpe
3260     AcpiSetupGpeForWake
3261     AcpiSetGpeWakeMask
3262     One new file, evxfgpe.c to consolidate all external GPE interfaces.
3263
3264 See the ACPICA Programmer Reference for full details and programming 
3265 information. See the new section 4.4 "General Purpose Event (GPE) 
3266 Support" 
3267 for a full overview, and section 8.7 "ACPI General Purpose Event 
3268 Management" 
3269 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 
3270 Ming, 
3271 Bob Moore, Rafael Wysocki.
3272
3273 Implemented a new GPE feature for Windows compatibility, the "Implicit 
3274 Wake 
3275 GPE Notify". This feature will automatically issue a Notify(2) on a 
3276 device 
3277 when a Wake GPE is received if there is no corresponding GPE method or 
3278 handler. ACPICA BZ 870.
3279
3280 Fixed a problem with the Scope() operator during table parse and load 
3281 phase. 
3282 During load phase (table load or method execution), the scope operator 
3283 should 
3284 not enter the target into the namespace. Instead, it should open a new 
3285 scope 
3286 at the target location. Linux BZ 19462, ACPICA BZ 882.
3287
3288 Example Code and Data Size: These are the sizes for the OS-independent 
3289 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3290 debug version of the code includes the debug output trace mechanism and 
3291 has a 
3292 much larger code and data size.
3293
3294   Previous Release:
3295     Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3296     Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3297   Current Release:
3298     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3299     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3300
3301 2) iASL Compiler/Disassembler and Tools:
3302
3303 iASL: Relax the alphanumeric restriction on _CID strings. These strings 
3304 are 
3305 "bus-specific" per the ACPI specification, and therefore any characters 
3306 are 
3307 acceptable. The only checks that can be performed are for a null string 
3308 and 
3309 perhaps for a leading asterisk. ACPICA BZ 886.
3310
3311 iASL: Fixed a problem where a syntax error that caused a premature EOF 
3312 condition on the source file emitted a very confusing error message. The 
3313 premature EOF is now detected correctly. ACPICA BZ 891.
3314
3315 Disassembler: Decode the AccessSize within a Generic Address Structure 
3316 (byte 
3317 access, word access, etc.) Note, this field does not allow arbitrary bit 
3318 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
3319
3320 New: AcpiNames utility - Example namespace dump utility. Shows an example 
3321 of 
3322 ACPICA configuration for a minimal namespace dump utility. Uses table and 
3323 namespace managers, but no AML interpreter. Does not add any 
3324 functionality 
3325 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 
3326 partition and configure ACPICA. ACPICA BZ 883.
3327
3328 AML Debugger: Increased the debugger buffer size for method return 
3329 objects. 
3330 Was 4K, increased to 16K. Also enhanced error messages for debugger 
3331 method 
3332 execution, including the buffer overflow case.
3333
3334 ----------------------------------------
3335 13 October 2010. Summary of changes for version 20101013:
3336
3337 1) ACPI CA Core Subsystem:
3338
3339 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 
3340 now 
3341 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 
3342 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
3343
3344 Changed the type of the predefined namespace object _TZ from ThermalZone 
3345 to 
3346 Device. This was found to be confusing to the host software that 
3347 processes 
3348 the various thermal zones, since _TZ is not really a ThermalZone. 
3349 However, 
3350
3351 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 
3352 Zhang.
3353
3354 Added Windows Vista SP2 to the list of supported _OSI strings. The actual 
3355 string is "Windows 2006 SP2".
3356
3357 Eliminated duplicate code in AcpiUtExecute* functions. Now that the 
3358 nsrepair 
3359 code automatically repairs _HID-related strings, this type of code is no 
3360 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 
3361 878.
3362
3363 Example Code and Data Size: These are the sizes for the OS-independent 
3364 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3365 debug version of the code includes the debug output trace mechanism and 
3366 has a 
3367 much larger code and data size.
3368
3369   Previous Release:
3370     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3371     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3372   Current Release:
3373     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3374     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3375
3376 2) iASL Compiler/Disassembler and Tools:
3377
3378 iASL: Implemented additional compile-time validation for _HID strings. 
3379 The 
3380 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 
3381 length 
3382 of 
3383 the string must be exactly seven or eight characters. For both _HID and 
3384 _CID 
3385 strings, all characters must be alphanumeric. ACPICA BZ 874.
3386
3387 iASL: Allow certain "null" resource descriptors. Some BIOS code creates 
3388 descriptors that are mostly or all zeros, with the expectation that they 
3389 will 
3390 be filled in at runtime. iASL now allows this as long as there is a 
3391 "resource 
3392 tag" (name) associated with the descriptor, which gives the ASL a handle 
3393 needed to modify the descriptor. ACPICA BZ 873.
3394
3395 Added single-thread support to the generic Unix application OSL. 
3396 Primarily 
3397 for iASL support, this change removes the use of semaphores in the 
3398 single-
3399 threaded ACPICA tools/applications - increasing performance. The 
3400 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 
3401 option. ACPICA BZ 879.
3402
3403 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 
3404 support 
3405 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
3406
3407 iASL: Moved all compiler messages to a new file, aslmessages.h.
3408
3409 ----------------------------------------
3410 15 September 2010. Summary of changes for version 20100915:
3411
3412 1) ACPI CA Core Subsystem:
3413
3414 Removed the AcpiOsDerivePciId OSL interface. The various host 
3415 implementations 
3416 of this function were not OS-dependent and are now obsolete and can be 
3417 removed from all host OSLs. This function has been replaced by 
3418 AcpiHwDerivePciId, which is now part of the ACPICA core code. 
3419 AcpiHwDerivePciId has been implemented without recursion. Adds one new 
3420 module, hwpci.c. ACPICA BZ 857.
3421
3422 Implemented a dynamic repair for _HID and _CID strings. The following 
3423 problems are now repaired at runtime: 1) Remove a leading asterisk in the 
3424 string, and 2) the entire string is uppercased. Both repairs are in 
3425 accordance with the ACPI specification and will simplify host driver 
3426 code. 
3427 ACPICA BZ 871.
3428
3429 The ACPI_THREAD_ID type is no longer configurable, internally it is now 
3430 always UINT64. This simplifies the ACPICA code, especially any printf 
3431 output. 
3432 UINT64 is the only common data type for all thread_id types across all 
3433 operating systems. It is now up to the host OSL to cast the native 
3434 thread_id 
3435 type to UINT64 before returning the value to ACPICA (via 
3436 AcpiOsGetThreadId). 
3437 Lin Ming, Bob Moore.
3438
3439 Added the ACPI_INLINE type to enhance the ACPICA configuration. The 
3440 "inline" 
3441 keyword is not standard across compilers, and this type allows inline to 
3442 be 
3443 configured on a per-compiler basis. Lin Ming.
3444
3445 Made the system global AcpiGbl_SystemAwakeAndRunning publically 
3446 available. 
3447 Added an extern for this boolean in acpixf.h. Some hosts utilize this 
3448 value 
3449 during suspend/restore operations. ACPICA BZ 869.
3450
3451 All code that implements error/warning messages with the "ACPI:" prefix 
3452 has 
3453 been moved to a new module, utxferror.c.
3454
3455 The UINT64_OVERLAY was moved to utmath.c, which is the only module where 
3456 it 
3457 is used. ACPICA BZ 829. Lin Ming, Bob Moore.
3458
3459 Example Code and Data Size: These are the sizes for the OS-independent 
3460 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3461 debug version of the code includes the debug output trace mechanism and 
3462 has a 
3463 much larger code and data size.
3464
3465   Previous Release:
3466     Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
3467     Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
3468   Current Release:
3469     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3470     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3471
3472 2) iASL Compiler/Disassembler and Tools:
3473
3474 iASL/Disassembler: Write ACPI errors to stderr instead of the output 
3475 file. 
3476 This keeps the output files free of random error messages that may 
3477 originate 
3478 from within the namespace/interpreter code. Used this opportunity to 
3479 merge 
3480 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 
3481 866. Lin Ming, Bob Moore.
3482
3483 Tools: update some printfs for ansi warnings on size_t. Handle width 
3484 change 
3485 of size_t on 32-bit versus 64-bit generations. Lin Ming.
3486
3487 ----------------------------------------
3488 06 August 2010. Summary of changes for version 20100806:
3489
3490 1) ACPI CA Core Subsystem:
3491
3492 Designed and implemented a new host interface to the _OSI support code. 
3493 This 
3494 will allow the host to dynamically add or remove multiple _OSI strings, 
3495 as 
3496 well as install an optional handler that is called for each _OSI 
3497 invocation. 
3498 Also added a new AML debugger command, 'osi' to display and modify the 
3499 global 
3500 _OSI string table, and test support in the AcpiExec utility. See the 
3501 ACPICA 
3502 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
3503 New Functions:
3504     AcpiInstallInterface - Add an _OSI string.
3505     AcpiRemoveInterface - Delete an _OSI string.
3506     AcpiInstallInterfaceHandler - Install optional _OSI handler.
3507 Obsolete Functions:
3508     AcpiOsValidateInterface - no longer used.
3509 New Files:
3510     source/components/utilities/utosi.c
3511
3512 Re-introduced the support to enable multi-byte transfers for Embedded 
3513 Controller (EC) operation regions. A reported problem was found to be a 
3514 bug 
3515 in the host OS, not in the multi-byte support. Previously, the maximum 
3516 data 
3517 size passed to the EC operation region handler was a single byte. There 
3518 are 
3519 often EC Fields larger than one byte that need to be transferred, and it 
3520 is 
3521 useful for the EC driver to lock these as a single transaction. This 
3522 change 
3523 enables single transfers larger than 8 bits. This effectively changes the 
3524 access to the EC space from ByteAcc to AnyAcc, and will probably require 
3525 changes to the host OS Embedded Controller driver to enable 16/32/64/256-
3526 bit 
3527 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
3528
3529 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 
3530 prototype in acpiosxf.h had the output value pointer as a (void *).
3531 It should be a (UINT64 *). This may affect some host OSL code.
3532
3533 Fixed a couple problems with the recently modified Linux makefiles for 
3534 iASL 
3535 and AcpiExec. These new makefiles place the generated object files in the 
3536 local directory so that there can be no collisions between the files that 
3537 are 
3538 shared between them that are compiled with different options.
3539
3540 Example Code and Data Size: These are the sizes for the OS-independent 
3541 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3542 debug version of the code includes the debug output trace mechanism and 
3543 has a 
3544 much larger code and data size.
3545
3546   Previous Release:
3547     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3548     Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
3549   Current Release:
3550     Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
3551     Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
3552
3553 2) iASL Compiler/Disassembler and Tools:
3554
3555 iASL/Disassembler: Added a new option (-da, "disassemble all") to load 
3556 the 
3557 namespace from and disassemble an entire group of AML files. Useful for 
3558 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 
3559 and 
3560 disassembling with one simple command. ACPICA BZ 865. Lin Ming.
3561
3562 iASL: Allow multiple invocations of -e option. This change allows 
3563 multiple 
3564 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 
3565 834. 
3566 Lin Ming.
3567
3568 ----------------------------------------
3569 02 July 2010. Summary of changes for version 20100702:
3570
3571 1) ACPI CA Core Subsystem:
3572
3573 Implemented several updates to the recently added GPE reference count 
3574 support. The model for "wake" GPEs is changing to give the host OS 
3575 complete 
3576 control of these GPEs. Eventually, the ACPICA core will not execute any 
3577 _PRW 
3578 methods, since the host already must execute them. Also, additional 
3579 changes 
3580 were made to help ensure that the reference counts are kept in proper 
3581 synchronization with reality. Rafael J. Wysocki.
3582
3583 1) Ensure that GPEs are not enabled twice during initialization.
3584 2) Ensure that GPE enable masks stay in sync with the reference count.
3585 3) Do not inadvertently enable GPEs when writing GPE registers.
3586 4) Remove the internal wake reference counter and add new AcpiGpeWakeup 
3587 interface. This interface will set or clear individual GPEs for wakeup.
3588 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These 
3589 interfaces 
3590 are now used for "runtime" GPEs only.
3591
3592 Changed the behavior of the GPE install/remove handler interfaces. The 
3593 GPE 
3594 is 
3595 no longer disabled during this process, as it was found to cause problems 
3596 on 
3597 some machines. Rafael J. Wysocki.
3598
3599 Reverted a change introduced in version 20100528 to enable Embedded 
3600 Controller multi-byte transfers. This change was found to cause problems 
3601 with 
3602 Index Fields and possibly Bank Fields. It will be reintroduced when these 
3603 problems have been resolved.
3604
3605 Fixed a problem with references to Alias objects within Package Objects. 
3606
3607 reference to an Alias within the definition of a Package was not always 
3608 resolved properly. Aliases to objects like Processors, Thermal zones, 
3609 etc. 
3610 were resolved to the actual object instead of a reference to the object 
3611 as 
3612 it 
3613 should be. Package objects are only allowed to contain integer, string, 
3614 buffer, package, and reference objects. Redhat bugzilla 608648.
3615
3616 Example Code and Data Size: These are the sizes for the OS-independent 
3617 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3618 debug version of the code includes the debug output trace mechanism and 
3619 has a 
3620 much larger code and data size.
3621
3622   Previous Release:
3623     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3624     Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
3625   Current Release:
3626     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3627     Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
3628
3629 2) iASL Compiler/Disassembler and Tools:
3630
3631 iASL: Implemented a new compiler subsystem to allow definition and 
3632 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 
3633 These 
3634 are called "ACPI Data Tables", and the new compiler is the "Data Table 
3635 Compiler". This compiler is intended to simplify the existing error-prone 
3636 process of creating these tables for the BIOS, as well as allowing the 
3637 disassembly, modification, recompilation, and override of existing ACPI 
3638 data 
3639 tables. See the iASL User Guide for detailed information.
3640
3641 iASL: Implemented a new Template Generator option in support of the new 
3642 Data 
3643 Table Compiler. This option will create examples of all known ACPI tables 
3644 that can be used as the basis for table development. See the iASL 
3645 documentation and the -T option.
3646
3647 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 
3648 Descriptor Table).
3649
3650 Updated the Linux makefiles for iASL and AcpiExec to place the generated 
3651 object files in the local directory so that there can be no collisions 
3652 between the shared files between them that are generated with different 
3653 options.
3654
3655 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 
3656 Use 
3657 the #define __APPLE__ to enable this support.
3658
3659 ----------------------------------------
3660 28 May 2010. Summary of changes for version 20100528:
3661
3662 Note: The ACPI 4.0a specification was released on April 5, 2010 and is 
3663 available at www.acpi.info. This is primarily an errata release.
3664
3665 1) ACPI CA Core Subsystem:
3666
3667 Undefined ACPI tables: We are looking for the definitions for the 
3668 following 
3669 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
3670
3671 Implemented support to enable multi-byte transfers for Embedded 
3672 Controller 
3673 (EC) operation regions. Previously, the maximum data size passed to the 
3674 EC 
3675 operation region handler was a single byte. There are often EC Fields 
3676 larger 
3677 than one byte that need to be transferred, and it is useful for the EC 
3678 driver 
3679 to lock these as a single transaction. This change enables single 
3680 transfers 
3681 larger than 8 bits. This effectively changes the access to the EC space 
3682 from 
3683 ByteAcc to AnyAcc, and will probably require changes to the host OS 
3684 Embedded 
3685 Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
3686 bit 
3687 transfers. Alexey Starikovskiy, Lin Ming
3688
3689 Implemented a performance enhancement for namespace search and access. 
3690 This 
3691 change enhances the performance of namespace searches and walks by adding 
3692
3693 backpointer to the parent in each namespace node. On large namespaces, 
3694 this 
3695 change can improve overall ACPI performance by up to 9X. Adding a pointer 
3696 to 
3697 each namespace node increases the overall size of the internal namespace 
3698 by 
3699 about 5%, since each namespace entry usually consists of both a namespace 
3700 node and an ACPI operand object. However, this is the first growth of the 
3701 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
3702
3703 Implemented a performance optimization that reduces the number of 
3704 namespace 
3705 walks. On control method exit, only walk the namespace if the method is 
3706 known 
3707 to have created namespace objects outside of its local scope. Previously, 
3708 the 
3709 entire namespace was traversed on each control method exit. This change 
3710 can 
3711 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 
3712 Moore.
3713
3714 Added support to truncate I/O addresses to 16 bits for Windows 
3715 compatibility. 
3716 Some ASL code has been seen in the field that inadvertently has bits set 
3717 above bit 15. This feature is optional and is enabled if the BIOS 
3718 requests 
3719 any Windows OSI strings. It can also be enabled by the host OS. Matthew 
3720 Garrett, Bob Moore.
3721
3722 Added support to limit the maximum time for the ASL Sleep() operator. To 
3723 prevent accidental deep sleeps, limit the maximum time that Sleep() will 
3724 actually sleep. Configurable, the default maximum is two seconds. ACPICA 
3725 bugzilla 854.
3726
3727 Added run-time validation support for the _WDG and_WED Microsoft 
3728 predefined 
3729 methods. These objects are defined by "Windows Instrumentation", and are 
3730 not 
3731 part of the ACPI spec. ACPICA BZ 860.
3732
3733 Expanded all statistic counters used during namespace and device 
3734 initialization from 16 to 32 bits in order to support very large 
3735 namespaces.
3736
3737 Replaced all instances of %d in printf format specifiers with %u since 
3738 nearly 
3739 all integers in ACPICA are unsigned.
3740
3741 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 
3742 returned 
3743 as AE_NO_HANDLER.
3744
3745 Example Code and Data Size: These are the sizes for the OS-independent 
3746 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3747 debug version of the code includes the debug output trace mechanism and 
3748 has a 
3749 much larger code and data size.
3750
3751   Previous Release:
3752     Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
3753     Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
3754   Current Release:
3755     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3756     Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
3757
3758 2) iASL Compiler/Disassembler and Tools:
3759
3760 iASL: Added compiler support for the _WDG and_WED Microsoft predefined 
3761 methods. These objects are defined by "Windows Instrumentation", and are 
3762 not 
3763 part of the ACPI spec. ACPICA BZ 860.
3764
3765 AcpiExec: added option to disable the memory tracking mechanism. The -dt 
3766 option will disable the tracking mechanism, which improves performance 
3767 considerably.
3768
3769 AcpiExec: Restructured the command line options into -d (disable) and -e 
3770 (enable) options.
3771
3772 ----------------------------------------
3773 28 April 2010. Summary of changes for version 20100428:
3774
3775 1) ACPI CA Core Subsystem:
3776
3777 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 
3778 including FADT-based and GPE Block Devices, execute any _PRW methods in 
3779 the 
3780 new table, and process any _Lxx/_Exx GPE methods in the new table. Any 
3781 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 
3782 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 
3783 Devices. Provides compatibility with other ACPI implementations. Two new 
3784 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 
3785 Moore.
3786
3787 Fixed a regression introduced in version 20100331 within the table 
3788 manager 
3789 where initial table loading could fail. This was introduced in the fix 
3790 for 
3791 AcpiReallocateRootTable. Also, renamed some of fields in the table 
3792 manager 
3793 data structures to clarify their meaning and use.
3794
3795 Fixed a possible allocation overrun during internal object copy in 
3796 AcpiUtCopySimpleObject. The original code did not correctly handle the 
3797 case 
3798 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 
3799 847.
3800
3801 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 
3802 possible access beyond end-of-allocation. Also, now fully validate 
3803 descriptor 
3804 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
3805
3806 Example Code and Data Size: These are the sizes for the OS-independent 
3807 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3808 debug version of the code includes the debug output trace mechanism and 
3809 has a 
3810 much larger code and data size.
3811
3812   Previous Release:
3813     Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
3814     Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
3815   Current Release:
3816     Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
3817     Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
3818
3819 2) iASL Compiler/Disassembler and Tools:
3820
3821 iASL: Implemented Min/Max/Len/Gran validation for address resource 
3822 descriptors. This change implements validation for the address fields 
3823 that 
3824 are common to all address-type resource descriptors. These checks are 
3825 implemented: Checks for valid Min/Max, length within the Min/Max window, 
3826 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 
3827 per 
3828 table 6-40 in the ACPI 4.0a specification. Also split the large 
3829 aslrestype1.c 
3830 and aslrestype2.c files into five new files. ACPICA BZ 840.
3831
3832 iASL: Added support for the _Wxx predefined names. This support was 
3833 missing 
3834 and these names were not recognized by the compiler as valid predefined 
3835 names. ACPICA BZ 851.
3836
3837 iASL: Added an error for all predefined names that are defined to return 
3838 no 
3839 value and thus must be implemented as Control Methods. These include all 
3840 of 
3841 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 
3842 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
3843
3844 iASL: Implemented the -ts option to emit hex AML data in ASL format, as 
3845 an 
3846 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 
3847 be 
3848 dynamically loaded via the Load() operator. Also cleaned up output for 
3849 the 
3850 -
3851 ta and -tc options. ACPICA BZ 853.
3852
3853 Tests: Added a new file with examples of extended iASL error checking. 
3854 Demonstrates the advanced error checking ability of the iASL compiler. 
3855 Available at tests/misc/badcode.asl.
3856
3857 ----------------------------------------
3858 31 March 2010. Summary of changes for version 20100331:
3859
3860 1) ACPI CA Core Subsystem:
3861
3862 Completed a major update for the GPE support in order to improve support 
3863 for 
3864 shared GPEs and to simplify both host OS and ACPICA code. Added a 
3865 reference 
3866 count mechanism to support shared GPEs that require multiple device 
3867 drivers. 
3868 Several external interfaces have changed. One external interface has been 
3869 removed. One new external interface was added. Most of the GPE external 
3870 interfaces now use the GPE spinlock instead of the events mutex (and the 
3871 Flags parameter for many GPE interfaces has been removed.) See the 
3872 updated 
3873 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 
3874 Rafael 
3875 Wysocki. ACPICA BZ 831.
3876
3877 Changed:
3878     AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
3879 Removed:
3880     AcpiSetGpeType
3881 New:
3882     AcpiSetGpe
3883
3884 Implemented write support for DataTable operation regions. These regions 
3885 are 
3886 defined via the DataTableRegion() operator. Previously, only read support 
3887 was 
3888 implemented. The ACPI specification allows DataTableRegions to be 
3889 read/write, 
3890 however.
3891
3892 Implemented a new subsystem option to force a copy of the DSDT to local 
3893 memory. Optionally copy the entire DSDT to local memory (instead of 
3894 simply 
3895 mapping it.) There are some (albeit very rare) BIOSs that corrupt or 
3896 replace 
3897 the original DSDT, creating the need for this option. Default is FALSE, 
3898 do 
3899 not copy the DSDT.
3900
3901 Implemented detection of a corrupted or replaced DSDT. This change adds 
3902 support to detect a DSDT that has been corrupted and/or replaced from 
3903 outside 
3904 the OS (by firmware). This is typically catastrophic for the system, but 
3905 has 
3906 been seen on some machines. Once this problem has been detected, the DSDT 
3907 copy option can be enabled via system configuration. Lin Ming, Bob Moore.
3908
3909 Fixed two problems with AcpiReallocateRootTable during the root table 
3910 copy. 
3911 When copying the root table to the new allocation, the length used was 
3912 incorrect. The new size was used instead of the current table size, 
3913 meaning 
3914 too much data was copied. Also, the count of available slots for ACPI 
3915 tables 
3916 was not set correctly. Alexey Starikovskiy, Bob Moore.
3917
3918 Example Code and Data Size: These are the sizes for the OS-independent 
3919 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3920 debug version of the code includes the debug output trace mechanism and 
3921 has a 
3922 much larger code and data size.
3923
3924   Previous Release:
3925     Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
3926     Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
3927   Current Release:
3928     Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
3929     Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
3930
3931 2) iASL Compiler/Disassembler and Tools:
3932
3933 iASL: Implement limited typechecking for values returned from predefined 
3934 control methods. The type of any returned static (unnamed) object is now 
3935 validated. For example, Return(1). ACPICA BZ 786.
3936
3937 iASL: Fixed a predefined name object verification regression. Fixes a 
3938 problem 
3939 introduced in version 20100304. An error is incorrectly generated if a 
3940 predefined name is declared as a static named object with a value defined 
3941 using the keywords "Zero", "One", or "Ones". Lin Ming.
3942
3943 iASL: Added Windows 7 support for the -g option (get local ACPI tables) 
3944 by 
3945 reducing the requested registry access rights. ACPICA BZ 842.
3946
3947 Disassembler: fixed a possible fault when generating External() 
3948 statements. 
3949 Introduced in commit ae7d6fd: Properly handle externals with parent-
3950 prefix 
3951 (carat). Fixes a string length allocation calculation. Lin Ming.
3952
3953 ----------------------------------------
3954 04 March 2010. Summary of changes for version 20100304:
3955
3956 1) ACPI CA Core Subsystem:
3957
3958 Fixed a possible problem with the AML Mutex handling function 
3959 AcpiExReleaseMutex where the function could fault under the very rare 
3960 condition when the interpreter has blocked, the interpreter lock is 
3961 released, 
3962 the interpreter is then reentered via the same thread, and attempts to 
3963 acquire an AML mutex that was previously acquired. FreeBSD report 140979. 
3964 Lin 
3965 Ming.
3966
3967 Implemented additional configuration support for the AML "Debug Object". 
3968 Output from the debug object can now be enabled via a global variable, 
3969 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 
3970 debugging. 
3971 This debug output is now available in the release version of ACPICA 
3972 instead 
3973 of just the debug version. Also, the entire debug output module can now 
3974 be 
3975 configured out of the ACPICA build if desired. One new file added, 
3976 executer/exdebug.c. Lin Ming, Bob Moore.
3977
3978 Added header support for the ACPI MCHI table (Management Controller Host 
3979 Interface Table). This table was added in ACPI 4.0, but the defining 
3980 document 
3981 has only recently become available.
3982
3983 Standardized output of integer values for ACPICA warnings/errors. Always 
3984 use 
3985 0x prefix for hex output, always use %u for unsigned integer decimal 
3986 output. 
3987 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 
3988 400 
3989 invocations.) These invocations were converted from the original 
3990 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
3991
3992 Example Code and Data Size: These are the sizes for the OS-independent 
3993 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3994 debug version of the code includes the debug output trace mechanism and 
3995 has a 
3996 much larger code and data size.
3997
3998   Previous Release:
3999     Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4000     Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4001   Current Release:
4002     Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4003     Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4004
4005 2) iASL Compiler/Disassembler and Tools:
4006
4007 iASL: Implemented typechecking support for static (non-control method) 
4008 predefined named objects that are declared with the Name() operator. For 
4009 example, the type of this object is now validated to be of type Integer: 
4010 Name(_BBN, 1). This change migrates the compiler to using the core 
4011 predefined 
4012 name table instead of maintaining a local version. Added a new file, 
4013 aslpredef.c. ACPICA BZ 832.
4014
4015 Disassembler: Added support for the ACPI 4.0 MCHI table.
4016
4017 ----------------------------------------
4018 21 January 2010. Summary of changes for version 20100121:
4019
4020 1) ACPI CA Core Subsystem:
4021
4022 Added the 2010 copyright to all module headers and signons. This affects 
4023 virtually every file in the ACPICA core subsystem, the iASL compiler, the 
4024 tools/utilities, and the test suites.
4025
4026 Implemented a change to the AcpiGetDevices interface to eliminate 
4027 unnecessary 
4028 invocations of the _STA method. In the case where a specific _HID is 
4029 requested, do not run _STA until a _HID match is found. This eliminates 
4030 potentially dozens of _STA calls during a search for a particular 
4031 device/HID, 
4032 which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
4033
4034 Implemented an additional repair for predefined method return values. 
4035 Attempt 
4036 to repair unexpected NULL elements within returned Package objects. 
4037 Create 
4038 an 
4039 Integer of value zero, a NULL String, or a zero-length Buffer as 
4040 appropriate. 
4041 ACPICA BZ 818. Lin Ming, Bob Moore.
4042
4043 Removed the obsolete ACPI_INTEGER data type. This type was introduced as 
4044 the 
4045 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 
4046 (with 
4047 64-bit AML integers). It is now obsolete and this change removes it from 
4048 the 
4049 ACPICA code base, replaced by UINT64. The original typedef has been 
4050 retained 
4051 for now for compatibility with existing device driver code. ACPICA BZ 
4052 824.
4053
4054 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 
4055 in 
4056 the parse tree object.
4057
4058 Added additional warning options for the gcc-4 generation. Updated the 
4059 source 
4060 accordingly. This includes some code restructuring to eliminate 
4061 unreachable 
4062 code, elimination of some gotos, elimination of unused return values, 
4063 some 
4064 additional casting, and removal of redundant declarations.
4065
4066 Example Code and Data Size: These are the sizes for the OS-independent 
4067 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4068 debug version of the code includes the debug output trace mechanism and 
4069 has a 
4070 much larger code and data size.
4071
4072   Previous Release:
4073     Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4074     Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4075   Current Release:
4076     Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4077     Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4078
4079 2) iASL Compiler/Disassembler and Tools:
4080
4081 No functional changes for this release.
4082
4083 ----------------------------------------
4084 14 December 2009. Summary of changes for version 20091214:
4085
4086 1) ACPI CA Core Subsystem:
4087
4088 Enhanced automatic data type conversions for predefined name repairs. 
4089 This 
4090 change expands the automatic repairs/conversions for predefined name 
4091 return 
4092 values to make Integers, Strings, and Buffers fully interchangeable. 
4093 Also, 
4094
4095 Buffer can be converted to a Package of Integers if necessary. The 
4096 nsrepair.c 
4097 module was completely restructured. Lin Ming, Bob Moore.
4098
4099 Implemented automatic removal of null package elements during predefined 
4100 name 
4101 repairs. This change will automatically remove embedded and trailing NULL 
4102 package elements from returned package objects that are defined to 
4103 contain 
4104
4105 variable number of sub-packages. The driver is then presented with a 
4106 package 
4107 with no null elements to deal with. ACPICA BZ 819.
4108
4109 Implemented a repair for the predefined _FDE and _GTM names. The expected 
4110 return value for both names is a Buffer of 5 DWORDs. This repair fixes 
4111 two 
4112 possible problems (both seen in the field), where a package of integers 
4113 is 
4114 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 
4115 Kim.
4116
4117 Implemented additional module-level code support. This change will 
4118 properly 
4119 execute module-level code that is not at the root of the namespace (under 
4120
4121 Device object, etc.). Now executes the code within the current scope 
4122 instead 
4123 of the root. ACPICA BZ 762. Lin Ming.
4124
4125 Fixed possible mutex acquisition errors when running _REG methods. Fixes 
4126
4127 problem where mutex errors can occur when running a _REG method that is 
4128 in 
4129 the same scope as a method-defined operation region or an operation 
4130 region 
4131 under a module-level IF block. This type of code is rare, so the problem 
4132 has 
4133 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
4134
4135 Fixed a possible memory leak during module-level code execution. An 
4136 object 
4137 could be leaked for each block of executed module-level code if the 
4138 interpreter slack mode is enabled This change deletes any implicitly 
4139 returned 
4140 object from the module-level code block. Lin Ming.
4141
4142 Removed messages for successful predefined repair(s). The repair 
4143 mechanism 
4144 was considered too wordy. Now, messages are only unconditionally emitted 
4145 if 
4146 the return object cannot be repaired. Existing messages for successful 
4147 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 
4148 827.
4149
4150 Example Code and Data Size: These are the sizes for the OS-independent 
4151 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4152 debug version of the code includes the debug output trace mechanism and 
4153 has a 
4154 much larger code and data size.
4155
4156   Previous Release:
4157     Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4158     Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4159   Current Release:
4160     Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4161     Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4162
4163 2) iASL Compiler/Disassembler and Tools:
4164
4165 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 
4166 files 
4167 were no longer automatically removed at the termination of the compile.
4168
4169 acpiexec: Implemented the -f option to specify default region fill value. 
4170 This option specifies the value used to initialize buffers that simulate 
4171 operation regions. Default value is zero. Useful for debugging problems 
4172 that 
4173 depend on a specific initial value for a region or field.
4174
4175 ----------------------------------------
4176 12 November 2009. Summary of changes for version 20091112:
4177
4178 1) ACPI CA Core Subsystem:
4179
4180 Implemented a post-order callback to AcpiWalkNamespace. The existing 
4181 interface only has a pre-order callback. This change adds an additional 
4182 parameter for a post-order callback which will be more useful for bus 
4183 scans. 
4184 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
4185
4186 Modified the behavior of the operation region memory mapping cache for 
4187 SystemMemory. Ensure that the memory mappings created for operation 
4188 regions 
4189 do not cross 4K page boundaries. Crossing a page boundary while mapping 
4190 regions can cause kernel warnings on some hosts if the pages have 
4191 different 
4192 attributes. Such regions are probably BIOS bugs, and this is the 
4193 workaround. 
4194 Linux BZ 14445. Lin Ming.
4195
4196 Implemented an automatic repair for predefined methods that must return 
4197 sorted lists. This change will repair (by sorting) packages returned by 
4198 _ALR, 
4199 _PSS, and _TSS. Drivers can now assume that the packages are correctly 
4200 sorted 
4201 and do not contain NULL package elements. Adds one new file, 
4202 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
4203
4204 Fixed a possible fault during predefined name validation if a return 
4205 Package 
4206 object contains NULL elements. Also adds a warning if a NULL element is 
4207 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 
4208 may 
4209 include repair or removal of all such NULL elements where possible.
4210
4211 Implemented additional module-level executable AML code support. This 
4212 change 
4213 will execute module-level code that is not at the root of the namespace 
4214 (under a Device object, etc.) at table load time. Module-level executable 
4215 AML 
4216 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
4217
4218 Implemented a new internal function to create Integer objects. This 
4219 function 
4220 simplifies miscellaneous object creation code. ACPICA BZ 823.
4221
4222 Reduced the severity of predefined repair messages, Warning to Info. 
4223 Since 
4224 the object was successfully repaired, a warning is too severe. Reduced to 
4225 an 
4226 info message for now. These messages may eventually be changed to debug-
4227 only. 
4228 ACPICA BZ 812.
4229
4230 Example Code and Data Size: These are the sizes for the OS-independent 
4231 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4232 debug version of the code includes the debug output trace mechanism and 
4233 has a 
4234 much larger code and data size.
4235
4236   Previous Release:
4237     Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4238     Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4239   Current Release:
4240     Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4241     Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4242
4243 2) iASL Compiler/Disassembler and Tools:
4244
4245 iASL: Implemented Switch() with While(1) so that Break works correctly. 
4246 This 
4247 change correctly implements the Switch operator with a surrounding 
4248 While(1) 
4249 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
4250
4251 iASL: Added a message if a package initializer list is shorter than 
4252 package 
4253 length. Adds a new remark for a Package() declaration if an initializer 
4254 list 
4255 exists, but is shorter than the declared length of the package. Although 
4256 technically legal, this is probably a coding error and it is seen in the 
4257 field. ACPICA BZ 815. Lin Ming, Bob Moore.
4258
4259 iASL: Fixed a problem where the compiler could fault after the maximum 
4260 number 
4261 of errors was reached (200).
4262
4263 acpixtract: Fixed a possible warning for pointer cast if the compiler 
4264 warning 
4265 level set very high.
4266
4267 ----------------------------------------
4268 13 October 2009. Summary of changes for version 20091013:
4269
4270 1) ACPI CA Core Subsystem:
4271
4272 Fixed a problem where an Operation Region _REG method could be executed 
4273 more 
4274 than once. If a custom address space handler is installed by the host 
4275 before 
4276 the "initialize operation regions" phase of the ACPICA initialization, 
4277 any 
4278 _REG methods for that address space could be executed twice. This change 
4279 fixes the problem. ACPICA BZ 427. Lin Ming.
4280
4281 Fixed a possible memory leak for the Scope() ASL operator. When the exact 
4282 invocation of "Scope(\)" is executed (change scope to root), one internal 
4283 operand object was leaked. Lin Ming.
4284
4285 Implemented a run-time repair for the _MAT predefined method. If the _MAT 
4286 return value is defined as a Field object in the AML, and the field
4287 size is less than or equal to the default width of an integer (32 or 
4288 64),_MAT 
4289 can incorrectly return an Integer instead of a Buffer. ACPICA now 
4290 automatically repairs this problem. ACPICA BZ 810.
4291
4292 Implemented a run-time repair for the _BIF and _BIX predefined methods. 
4293 The 
4294 "OEM Information" field is often incorrectly returned as an Integer with 
4295 value zero if the field is not supported by the platform. This is due to 
4296 an 
4297 ambiguity in the ACPI specification. The field should always be a string. 
4298 ACPICA now automatically repairs this problem by returning a NULL string 
4299 within the returned Package. ACPICA BZ 807.
4300
4301 Example Code and Data Size: These are the sizes for the OS-independent 
4302 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4303 debug version of the code includes the debug output trace mechanism and 
4304 has a 
4305 much larger code and data size.
4306
4307   Previous Release:
4308     Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4309     Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4310   Current Release:
4311     Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4312     Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4313
4314 2) iASL Compiler/Disassembler and Tools:
4315
4316 Disassembler: Fixed a problem where references to external symbols that 
4317 contained one or more parent-prefixes (carats) were not handled 
4318 correctly, 
4319 possibly causing a fault. ACPICA BZ 806. Lin Ming.
4320
4321 Disassembler: Restructured the code so that all functions that handle 
4322 external symbols are in a single module. One new file is added, 
4323 common/dmextern.c.
4324
4325 AML Debugger: Added a max count argument for the Batch command (which