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