Sync ACPICA with Intel's version 20161117.
[dragonfly.git] / sys / contrib / dev / acpica / changes.txt
1 ----------------------------------------
2 17 November 2016. Summary of changes for version 20161117:
3
4
5 1) ACPICA kernel-resident subsystem:
6
7 Table Manager: Fixed a regression introduced in 20160729, "FADT support 
8 cleanup". This was an attempt to remove all references in the source to 
9 the FADT version 2, which never was a legal version number. It was 
10 skipped because it was an early version of 64-bit support that was 
11 eventually abandoned for the current 64-bit support.
12
13 Interpreter: Fixed a problem where runtime implicit conversion was 
14 incorrectly disabled for the ASL operators below. This brings the 
15 behavior into compliance with the ACPI specification:
16     FromBCD
17     ToBCD
18     ToDecimalString
19     ToHexString
20     ToInteger
21     ToBuffer
22
23 Table Manager: Added a new public interface, AcpiPutTable, used to 
24 release and free an ACPI table returned by AcpiGetTable and related 
25 interfaces. Lv Zheng.
26
27 Example Code and Data Size: These are the sizes for the OS-independent 
28 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
29 debug version of the code includes the debug output trace mechanism and 
30 has a much larger code and data size.
31
32   Current Release:
33     Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
34     Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
35   Previous Release:
36     Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
37     Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
38
39
40 2) iASL Compiler/Disassembler and Tools:
41
42 Disassembler: Fixed a regression for disassembly of Resource Template. 
43 Detection of templates in the AML stream missed some types of templates.
44
45 iASL: Fixed a problem where an Access Size error was returned for the PCC 
46 address space when the AccessSize of the GAS register is greater than a 
47 DWORD. Hoan Tran.
48
49 iASL: Implemented several grammar changes for the operators below. These 
50 changes are slated for the next version of the ACPI specification:
51     RefOf        - Disallow method invocation as an operand
52     CondRefOf    - Disallow method invocation as an operand
53     DerefOf      - Disallow operands that use the result from operators 
54 that
55                    do not return a reference (Changed TermArg to 
56 SuperName).
57
58 iASL: Control method invocations are now allowed for Target operands, as 
59 per the ACPI specification. Removed error for using a control method 
60 invocation as a Target operand.
61
62 Disassembler: Improved detection of Resource Templates, Unicode, and 
63 Strings within Buffer objects. These subtypes do not contain a specific 
64 opcode to indicate the originating ASL code, and they must be detected by 
65 other means within the disassembler. 
66
67 iASL: Implemented an optimization improvement for 32-bit ACPI tables 
68 (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 
69 only after 64-bit to 32-bit truncation. A truncation warning message is 
70 still emitted, however.
71
72 AcpiXtract: Implemented handling for both types of line terminators (LF 
73 or CR/LF) so that it can accept AcpiDump output files from any system. 
74 Peter Wu.
75
76 AcpiBin: Added two new options for comparing AML files:
77     -a: compare and display ALL mismatches
78     -o: start compare at this offset into the second file
79
80 ----------------------------------------
81 30 September 2016. Summary of changes for version 20160930:
82
83
84 1) ACPICA kernel-resident subsystem:
85
86 Fixed a regression in the internal AcpiTbFindTable function where a non 
87 AE_OK exception could inadvertently be returned even if the function did 
88 not fail. This problem affects the following operators:
89     DataTableRegion
90     LoadTable
91
92 Fixed a regression in the LoadTable operator where a load to any 
93 namespace location other than the root no longer worked properly.
94
95 Increased the maximum loop count value that will result in the 
96 AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 
97 prevent infinite loops within the AML interpreter and thus the host OS 
98 kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 
99 1,048,575).
100
101 Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 
102 acpixf.h file. This allows hosts to easily configure the maximum loop 
103 count at runtime.
104
105 Removed an illegal character in the strtoul64.c file. This character 
106 caused errors with some C compilers.
107
108 Example Code and Data Size: These are the sizes for the OS-independent 
109 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
110 debug version of the code includes the debug output trace mechanism and 
111 has a much larger code and data size.
112
113   Current Release:
114     Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
115     Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
116   Previous Release:
117     Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
118     Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
119
120
121 2) iASL Compiler/Disassembler and Tools:
122
123 Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 
124 the simpler ASL ElseIf keyword. During the conversion, a trailing If 
125 block could be lost and missing from the disassembled output.
126
127 iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 
128 the missing rule caused a parse error when using the Index operator as an 
129 operand to ObjectType. This construct now compiles properly. Example:
130     ObjectType(PKG1[4]).
131
132 iASL: Correctly handle unresolved symbols in the hardware map file (-lm 
133 option). Previously, unresolved symbols could cause a protection fault. 
134 Such symbols are now marked as unresolved in the map file.
135
136 iASL: Implemented support to allow control method invocations as an 
137 operand to the ASL DeRefOf operator. Example:
138     DeRefOf(MTH1(Local0))
139
140 Disassembler: Improved support for the ToPLD ASL macro. Detection of a 
141 possible _PLD buffer now includes examination of both the normal buffer 
142 length (16 or 20) as well as the surrounding AML package length.
143
144 Disassembler: Fixed a problem with the decoding of complex expressions 
145 within the Divide operator for ASL+. For the case where both the quotient 
146 and remainder targets are specified, the entire statement cannot be 
147 disassembled. Previously, the output incorrectly contained a mix of ASL- 
148 and ASL+ operators. This mixed statement causes a syntax error when 
149 compiled. Example:
150     Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly 
151 disassembled to:
152     Divide (INT1 + 6, 128, RSLT, QUOT)
153
154 iASL/Tools: Added support to process AML and non-AML ACPI tables 
155 consistently. For the disassembler and AcpiExec, allow all types of ACPI 
156 tables (AML and data tables). For the iASL -e option, allow only AML 
157 tables (DSDT/SSDT).
158
159 ----------------------------------------
160 31 August 2016. Summary of changes for version 20160831:
161
162
163 1) ACPICA kernel-resident subsystem:
164
165 Improve support for the so-called "module-level code", which is defined 
166 to be math, logical and control AML opcodes that appear outside of any 
167 control method. This change improves the support by adding more opcodes 
168 that can be executed in the manner. Some other issues have been solved, 
169 and the ASL grammar changes to support such code under all scope 
170 operators (Device, etc.) are complete. Lv Zheng.
171
172 UEFI support: these OSL functions have been implemented. This is an 
173 additional step toward supporting the AcpiExec utility natively (with 
174 full hardware access) under UEFI. Marcelo Ferreira.
175     AcpiOsReadPciConfiguration
176     AcpiOsWritePciConfiguration
177
178 Fixed a possible mutex error during control method auto-serialization. Lv 
179 Zheng. 
180
181 Updated support for the Generic Address Structure by fully implementing 
182 all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 
183 Zheng.
184
185 Updated the return value for the internal _OSI method. Instead of 
186 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 
187 for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 
188 implementations, and will be reflected and clarified in the next version 
189 of the ACPI specification.
190
191 Implemented two new table events that can be passed to an ACPICA table 
192 handler. These events are used to indicate a table installation or 
193 uninstallation. These events are used in addition to existed table load 
194 and unload events. Lv Zheng.
195
196 Implemented a cleanup for all internal string-to-integer conversions. 
197 Consolidate multiple versions of this functionality and limit possible 
198 bases to either 10 or 16 to simplify the code. Adds a new file, 
199 utstrtoul64.
200
201 Cleanup the inclusion order of the various compiler-specific headers. 
202 This simplifies build configuration management. The compiler-specific 
203 headers are now split out from the host-specific headers. Lv Zheng.
204
205 Example Code and Data Size: These are the sizes for the OS-independent 
206 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
207 debug version of the code includes the debug output trace mechanism and 
208 has a much larger code and data size.
209
210   Current Release:
211     Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
212     Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
213
214
215 2) iASL Compiler/Disassembler and Tools:
216
217 iASL/AcpiExec: Added a command line option to display the build date/time 
218 of the tool (-vd). This can be useful to verify that the correct version 
219 of the tools are being used.
220
221 AML Debugger: Implemented a new subcommand ("execute predef") to execute 
222 all predefined control methods and names within the current namespace. 
223 This can be useful for debugging problems with ACPI tables and the ACPI 
224 namespace.
225
226 ----------------------------------------
227 29 July 2016. Summary of changes for version 20160729:
228
229
230 1) ACPICA kernel-resident subsystem:
231
232 Implemented basic UEFI support for the various ACPICA tools. This 
233 includes:
234 1) An OSL to implement the various AcpiOs* interfaces on UEFI.
235 2) Support to obtain the ACPI tables on UEFI.
236 3) Local implementation of required C library functions not available on 
237 UEFI.
238 4) A front-end (main) function for the tools for UEFI-related 
239 initialization.
240
241 The initial deployment of this support is the AcpiDump utility executing 
242 as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 
243 Current environments supported are Linux/Unix. MSVC generation is not 
244 supported at this time. See the generate/efi/README file for build 
245 instructions. Lv Zheng.
246
247 Future plans include porting the AcpiExec utility to execute natively on 
248 the platform with I/O and memory access. This will allow viewing/dump of 
249 the platform namespace and native execution of ACPI control methods that 
250 access the actual hardware. To fully implement this support, the OSL 
251 functions below must be implemented with UEFI interfaces. Any community 
252 help in the implementation of these functions would be appreciated:
253     AcpiOsReadPort
254     AcpiOsWritePort
255     AcpiOsReadMemory
256     AcpiOsWriteMemory
257     AcpiOsReadPciConfiguration
258     AcpiOsWritePciConfiguration
259
260 Restructured and standardized the C library configuration for ACPICA, 
261 resulting in the various configuration options below. This includes a 
262 global restructuring of the compiler-dependent and platform-dependent 
263 include files. These changes may affect the existing platform-dependent 
264 configuration files on some hosts. Lv Zheng. 
265
266 The current C library configuration options appear below. For any issues, 
267 it may be helpful to examine the existing compiler-dependent and 
268 platform-dependent files as examples. Lv Zheng. 
269
270 1) Linux kernel:
271     ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 
272 library.
273     ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
274 2) Unix/Windows/BSD applications:
275     ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 
276 library.
277     ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
278 3) UEFI applications:
279     ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 
280 library.
281     ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
282 4) UEFI applications (EDK2/StdLib):
283     ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
284     ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
285
286
287 AML interpreter: "module-level code" support. Allows for execution of so-
288 called "executable" AML code (math/logical operations, etc.) outside of 
289 control methods not just at the module level (top level) but also within 
290 any scope declared outside of a control method - Scope{}, Device{}, 
291 Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 
292
293 Simplified the configuration of the "maximum AML loops" global option by 
294 adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 
295 modified at runtime.
296
297
298 Example Code and Data Size: These are the sizes for the OS-independent 
299 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
300 debug version of the code includes the debug output trace mechanism and 
301 has a much larger code and data size.
302
303   Current Release:
304     Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
305     Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
306
307
308 2) iASL Compiler/Disassembler and Tools:
309
310 iASL: Add full support for the RASF ACPI table (RAS Features Table). 
311 Includes disassembler, data table compiler, and header support.
312
313 iASL Expand "module-level code" support. Allows for 
314 compilation/disassembly of so-called "executable" AML code (math/logical 
315 operations, etc.) outside of control methods not just at the module level 
316 (top level) but also within any scope declared outside of a control 
317 method - Scope{}, Device{}, Processor{}, PowerResource{}, and 
318 ThermalZone{}.
319
320 AcpiDump: Added support for dumping all SSDTs on newer versions of 
321 Windows. These tables are now easily available -- SSDTs are not available 
322 through the registry on older versions.
323
324 ----------------------------------------
325 27 May 2016. Summary of changes for version 20160527:
326
327
328 1) ACPICA kernel-resident subsystem:
329
330 Temporarily reverted the new arbitrary bit length/alignment support in 
331 AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 
332 a number of regressions with the new code that need to be fully resolved 
333 and tested before this support can be finally integrated into ACPICA. 
334 Apologies for any inconveniences these issues may have caused.
335
336 The ACPI message macros are not configurable (ACPI_MSG_ERROR, 
337 ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 
338 and ACPI_MSG_BIOS_WARNING). Lv Zheng.
339
340 Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 
341 option. Adds a new return macro, return_STR. Junk-uk Kim.
342
343 Example Code and Data Size: These are the sizes for the OS-independent 
344 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
345 debug version of the code includes the debug output trace mechanism and 
346 has a much larger code and data size.
347
348   Current Release:
349     Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
350     Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
351   Previous Release:
352     Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
353     Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
354
355 ----------------------------------------
356 22 April 2016. Summary of changes for version 20160422:
357
358 1) ACPICA kernel-resident subsystem:
359
360 Fixed a regression in the GAS (generic address structure) arbitrary bit 
361 support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 
362 and incorrect return values. Lv Zheng. ACPICA BZ 1270.
363
364 ACPI 6.0: Added support for new/renamed resource macros. One new argument 
365 was added to each of these macros, and the original name has been 
366 deprecated. The AML disassembler will always disassemble to the new 
367 names. Support for the new macros was added to iASL, disassembler, 
368 resource manager, and the acpihelp utility. ACPICA BZ 1274.
369
370     I2cSerialBus  -> I2cSerialBusV2
371     SpiSerialBus  -> SpiSerialBusV2
372     UartSerialBus -> UartSerialBusV2
373
374 ACPI 6.0: Added support for a new integer field that was appended to the 
375 package object returned by the _BIX method. This adds iASL compile-time 
376 and AML runtime error checking. ACPICA BZ 1273.
377
378 ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 
379 Subspace Type2" (Headers, Disassembler, and data table compiler).
380
381 Example Code and Data Size: These are the sizes for the OS-independent 
382 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
383 debug version of the code includes the debug output trace mechanism and 
384 has a much larger code and data size.
385
386   Current Release:
387     Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
388     Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
389   Previous Release:
390     Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
391     Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
392
393
394 2) iASL Compiler/Disassembler and Tools:
395
396 iASL: Implemented an ASL grammar extension to allow/enable executable 
397 "module-level code" to be created and executed under the various 
398 operators that create new scopes. This type of AML code is already 
399 supported in all known AML interpreters, and the grammar change will 
400 appear in the next version of the ACPI specification. Simplifies the 
401 conditional runtime creation of named objects under these object types: 
402
403     Device
404     PowerResource
405     Processor
406     Scope
407     ThermalZone
408
409 iASL: Implemented a new ASL extension, a "For" loop macro to add greater 
410 ease-of-use to the ASL language. The syntax is similar to the 
411 corresponding C operator, and is implemented with the existing AML While 
412 opcode -- thus requiring no changes to existing AML interpreters.
413
414     For (Initialize, Predicate, Update) {TermList}
415
416 Grammar:
417     ForTerm :=
418         For (
419             Initializer    // Nothing | TermArg => ComputationalData
420             Predicate      // Nothing | TermArg => ComputationalData
421             Update         // Nothing | TermArg => ComputationalData
422         ) {TermList}
423
424
425 iASL: The _HID/_ADR detection and validation has been enhanced to search 
426 under conditionals in order to allow these objects to be conditionally 
427 created at runtime.
428
429 iASL: Fixed several issues with the constant folding feature. The 
430 improvement allows better detection and resolution of statements that can 
431 be folded at compile time. ACPICA BZ 1266. 
432
433 iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 
434 conversion to the ASL ElseIf operator where incorrect ASL code could be 
435 generated.
436
437 iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 
438 sometimes an extra (and extraneous) set of parentheses were emitted for 
439 some combinations of operators. Although this did not cause any problems 
440 with recompilation of the disassembled code, it made the code more 
441 difficult to read. David Box. ACPICA BZ 1231.
442
443 iASL: Changed to ignore the unreferenced detection for predefined names 
444 of resource descriptor elements, when the resource descriptor is 
445 created/defined within a control method.
446
447 iASL: Disassembler: Fix a possible fault with externally declared Buffer 
448 objects.
449
450 ----------------------------------------
451 18 March 2016. Summary of changes for version 20160318:
452
453 1) ACPICA kernel-resident subsystem:
454
455 Added support for arbitrary bit lengths and bit offsets for registers 
456 defined by the Generic Address Structure. Previously, only aligned bit 
457 lengths of 8/16/32/64 were supported. This was sufficient for many years, 
458 but recently some machines have been seen that require arbitrary bit-
459 level support. ACPICA BZ 1240. Lv Zheng.
460
461 Fixed an issue where the \_SB._INI method sometimes must be evaluated 
462 before any _REG methods are evaluated. Lv Zheng.
463
464 Implemented several changes related to ACPI table support 
465 (Headers/Disassembler/TableCompiler):
466 NFIT: For ACPI 6.1, updated to add some additional new fields and 
467 constants.
468 FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 
469 6).
470 DMAR: Added new constants per the 10/2014 DMAR spec.
471 IORT: Added new subtable per the 10/2015 IORT spec.
472 HEST: For ACPI 6.1, added new constants and new subtable.
473 DBG2: Added new constants per the 12/2015 DBG2 spec.
474 FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 
475 ACPICA BZ 1249.
476 ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
477
478 Updated header support for the DMAR table to match the current version of 
479 the related spec.
480
481 Added extensions to the ASL Concatenate operator to allow any ACPI object 
482 to be passed as an operand. Any object other than Integer/String/Buffer 
483 simply returns a string containing the object type. This extends the 
484 usefulness of the Printf macros. Previously, Concatenate would abort the 
485 control method if a non-data object was encountered.
486
487 ACPICA source code: Deployed the C "const" keyword across the source code 
488 where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
489
490 Example Code and Data Size: These are the sizes for the OS-independent 
491 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
492 debug version of the code includes the debug output trace mechanism and 
493 has a much larger code and data size.
494
495   Current Release:
496     Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
497     Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
498   Previous Release:
499     Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
500     Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
501
502
503 2) iASL Compiler/Disassembler and Tools:
504
505 iASL/Disassembler: Improved the heuristic used to determine the number of 
506 arguments for an externally defined control method (a method in another 
507 table). Although this is an improvement, there is no deterministic way to 
508 "guess" the number of method arguments. Only the ACPI 6.0 External opcode 
509 will completely solve this problem as it is deployed (automatically) in 
510 newer BIOS code.
511
512 iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 
513 statements that could cause errors when the disassembled file is 
514 compiled. ACPICA BZ 1243. David Box.
515
516 iASL: Fixed a regression caused by the merger of the two versions of the 
517 local strtoul64. Because of a dependency on a global variable, strtoul64 
518 could return an error for integers greater than a 32-bit value. ACPICA BZ 
519 1260.
520
521 iASL: Fixed a regression where a fault could occur for an ASL Return 
522 statement if it invokes a control method that is not resolved. ACPICA BZ 
523 1264.
524
525 AcpiXtract: Improved input file validation: detection of binary files and 
526 non-acpidump text files.
527
528 ----------------------------------------
529 12 February 2016. Summary of changes for version 20160212:
530
531 1) ACPICA kernel-resident subsystem:
532
533 Implemented full support for the ACPI 6.1 specification (released in 
534 January). This version of the specification is available at:  
535 http://www.uefi.org/specifications
536
537 Only a relatively small number of changes were required in ACPICA to 
538 support ACPI 6.1, in these areas:
539 - New predefined names
540 - New _HID values
541 - A new subtable for HEST
542 - A few other header changes for new values
543
544 Ensure \_SB_._INI is executed before any _REG methods are executed. There 
545 appears to be existing BIOS code that relies on this behavior. Lv Zheng.
546
547 Reverted a change made in version 20151218 which enabled method 
548 invocations to be targets of various ASL operators (SuperName and Target 
549 grammar elements). While the new behavior is supported by the ACPI 
550 specification, other AML interpreters do not support this behavior and 
551 never will. The ACPI specification will be updated for ACPI 6.2 to remove 
552 this support. Therefore, the change was reverted to the original ACPICA 
553 behavior.
554
555 ACPICA now supports the GCC 6 compiler.
556
557 Current Release: (Note: build changes increased sizes)
558     Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
559     Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
560 Previous Release:
561     Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
562     Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
563
564
565 2) iASL Compiler/Disassembler and Tools:
566
567 Completed full support for the ACPI 6.0 External() AML opcode. The 
568 compiler emits an external AML opcode for each ASL External statement. 
569 This opcode is used by the disassembler to assist with the disassembly of 
570 external control methods by specifying the required number of arguments 
571 for the method. AML interpreters do not use this opcode. To ensure that 
572 interpreters do not even see the opcode, a block of one or more external 
573 opcodes is surrounded by an "If(0)" construct. As this feature becomes 
574 commonly deployed in BIOS code, the ability of disassemblers to correctly 
575 disassemble AML code will be greatly improved. David Box.
576
577 iASL: Implemented support for an optional cross-reference output file. 
578 The -lx option will create a the cross-reference file with the suffix 
579 "xrf". Three different types of cross-reference are created in this file:
580 - List of object references made from within each control method
581 - Invocation (caller) list for each user-defined control method
582 - List of references to each non-method object in the namespace
583
584 iASL: Method invocations as ASL Target operands are now disallowed and 
585 flagged as errors in preparation for ACPI 6.2 (see the description of the 
586 problem above).
587
588 ----------------------------------------
589 8 January 2016. Summary of changes for version 20160108:
590
591 1) ACPICA kernel-resident subsystem:
592
593 Updated all ACPICA copyrights and signons to 2016: Added the 2016 
594 copyright to all source code module headers and utility/tool signons. 
595 This includes the standard Linux dual-license header. This affects 
596 virtually every file in the ACPICA core subsystem, iASL compiler, all 
597 ACPICA utilities, and the ACPICA test suite.
598
599 Fixed a regression introduced in version 20151218 concerning the 
600 execution of so-called module-level ASL/AML code. Namespace objects 
601 created under a module-level If() construct were not properly/fully 
602 entered into the namespace and could cause an interpreter fault when 
603 accessed.
604
605 Example Code and Data Size: These are the sizes for the OS-independent 
606 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
607 debug version of the code includes the debug output trace mechanism and 
608 has a much larger code and data size.
609
610 Current Release:
611     Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
612     Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
613   Previous Release:
614     Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
615     Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
616
617
618 2) iASL Compiler/Disassembler and Tools:
619
620 Fixed a problem with the compilation of the GpioIo and GpioInt resource 
621 descriptors. The _PIN field name was incorrectly defined to be an array 
622 of 32-bit values, but the _PIN values are in fact 16 bits each. This 
623 would cause incorrect bit width warnings when using Word (16-bit) fields 
624 to access the descriptors.
625
626
627 ----------------------------------------
628 18 December 2015. Summary of changes for version 20151218:
629
630 1) ACPICA kernel-resident subsystem:
631
632 Implemented per-AML-table execution of "module-level code" as individual 
633 ACPI tables are loaded into the namespace during ACPICA initialization. 
634 In other words, any module-level code within an AML table is executed 
635 immediately after the table is loaded, instead of batched and executed 
636 after all of the tables have been loaded. This provides compatibility 
637 with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 
638 David Box.
639
640 To fully support the feature above, the default operation region handlers 
641 for the SystemMemory, SystemIO, and PCI_Config address spaces are now 
642 installed before any ACPI tables are loaded. This enables module-level 
643 code to access these address spaces during the table load and module-
644 level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 
645 Box.
646
647 Implemented several changes to the internal _REG support in conjunction 
648 with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 
649 utilities for the changes above. Although these tools were changed, host 
650 operating systems that simply use the default handlers for SystemMemory, 
651 SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
652
653 For example, in the code below, DEV1 is conditionally added to the 
654 namespace by the DSDT via module-level code that accesses an operation 
655 region. The SSDT references DEV1 via the Scope operator. DEV1 must be 
656 created immediately after the DSDT is loaded in order for the SSDT to 
657 successfully reference DEV1. Previously, this code would cause an 
658 AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 
659 fully supported by ACPICA.
660
661     DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
662     {
663         OperationRegion (OPR1, SystemMemory, 0x400, 32)
664         Field (OPR1, AnyAcc, NoLock, Preserve)
665         {
666             FLD1, 1
667         }
668         If (FLD1)
669         {
670             Device (\DEV1)
671             {
672             }
673         }
674     }
675     DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
676     {
677         External (\DEV1, DeviceObj)
678         Scope (\DEV1)
679         {
680         }
681     }
682
683 Fixed an AML interpreter problem where control method invocations were 
684 not handled correctly when the invocation was itself a SuperName argument 
685 to another ASL operator. In these cases, the method was not invoked. 
686 ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 
687 argument:
688     Store
689     Acquire, Wait
690     CondRefOf, RefOf
691     Decrement, Increment
692     Load, Unload
693     Notify
694     Signal, Release, Reset
695     SizeOf
696
697 Implemented automatic String-to-ObjectReference conversion support for 
698 packages returned by predefined names (such as _DEP). A common BIOS error 
699 is to add double quotes around an ObjectReference namepath, which turns 
700 the reference into an unexpected string object. This support detects the 
701 problem and corrects it before the package is returned to the caller that 
702 invoked the method. Lv Zheng.
703
704 Implemented extensions to the Concatenate operator. Concatenate now 
705 accepts any type of object, it is not restricted to simply 
706 Integer/String/Buffer. For objects other than these 3 basic data types, 
707 the argument is treated as a string containing the name of the object 
708 type. This expands the utility of Concatenate and the Printf/Fprintf 
709 macros. ACPICA BZ 1222.
710
711 Cleaned up the output of the ASL Debug object. The timer() value is now 
712 optional and no longer emitted by default. Also, the basic data types of 
713 Integer/String/Buffer are simply emitted as their values, without a data 
714 type string -- since the data type is obvious from the output. ACPICA BZ 
715 1221.
716
717 Example Code and Data Size: These are the sizes for the OS-independent 
718 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
719 debug version of the code includes the debug output trace mechanism and 
720 has a much larger code and data size.
721
722   Current Release:
723     Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
724     Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
725   Previous Release:
726     Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
727     Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
728
729
730 2) iASL Compiler/Disassembler and Tools:
731
732 iASL: Fixed some issues with the ASL Include() operator. This operator 
733 was incorrectly defined in the iASL parser rules, causing a new scope to 
734 be opened for the code within the include file. This could lead to 
735 several issues, including allowing ASL code that is technically illegal 
736 and not supported by AML interpreters. Note, this does not affect the 
737 related #include preprocessor operator. ACPICA BZ 1212.
738
739 iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 
740 operator is essentially an ASL macro since there is no AML opcode 
741 associated with it. The code emitted by the iASL compiler for ElseIf is 
742 an Else opcode followed immediately by an If opcode. The disassembler 
743 will now emit an ElseIf if it finds an Else immediately followed by an 
744 If. This simplifies the decoded ASL, especially for deeply nested 
745 If..Else and large Switch constructs. Thus, the disassembled code more 
746 closely follows the original source ASL. ACPICA BZ 1211. Example:
747
748     Old disassembly:
749         Else
750         {
751             If (Arg0 == 0x02)
752             {
753                 Local0 = 0x05
754             }
755         }
756
757     New disassembly:
758         ElseIf (Arg0 == 0x02)
759         {
760             Local0 = 0x05
761         }
762
763 AcpiExec: Added support for the new module level code behavior and the 
764 early region installation. This required a small change to the 
765 initialization, since AcpiExec must install its own operation region 
766 handlers.
767
768 AcpiExec: Added support to make the debug object timer optional. Default 
769 is timer disabled. This cleans up the debug object output -- the timer 
770 data is rarely used.
771
772 AcpiExec: Multiple ACPI tables are now loaded in the order that they 
773 appear on the command line. This can be important when there are 
774 interdependencies/references between the tables.
775
776 iASL/Templates. Add support to generate template files with multiple 
777 SSDTs within a single output file. Also added ommand line support to 
778 specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 
779 1223, 1225.
780
781
782 ----------------------------------------
783 24 November 2015. Summary of changes for version 20151124:
784
785 1) ACPICA kernel-resident subsystem:
786
787 Fixed a possible regression for a previous update to FADT handling. The 
788 FADT no longer has a fixed table ID, causing some issues with code that 
789 was hardwired to a specific ID. Lv Zheng.
790
791 Fixed a problem where the method auto-serialization could interfere with 
792 the current SyncLevel. This change makes the auto-serialization support 
793 transparent to the SyncLevel support and management.
794
795 Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 
796 interface is intended for early access to the namespace during the 
797 initial namespace device discovery walk. The _SUB method has been seen to 
798 access operation regions in some cases, causing errors because the 
799 operation regions are not fully initialized.
800
801 AML Debugger: Fixed some issues with the terminate/quit/exit commands 
802 that can cause faults. Lv Zheng.
803
804 AML Debugger: Add thread ID support so that single-step mode only applies 
805 to the AML Debugger thread. This prevents runtime errors within some 
806 kernels. Lv Zheng. 
807
808 Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 
809 methods that are invoked by this interface are optional, removed warnings 
810 emitted for the case where one or more of these methods do not exist. 
811 ACPICA BZ 1208, original change by Prarit Bhargava.
812
813 Made a major pass through the entire ACPICA source code base to 
814 standardize formatting that has diverged a bit over time. There are no 
815 functional changes, but this will of course cause quite a few code 
816 differences from the previous ACPICA release.
817
818 Example Code and Data Size: These are the sizes for the OS-independent 
819 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
820 debug version of the code includes the debug output trace mechanism and 
821 has a much larger code and data size.
822
823   Current Release:
824     Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
825     Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
826   Previous Release:
827     Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
828     Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
829
830
831 2) iASL Compiler/Disassembler and Tools:
832
833 iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 
834 definition blocks within a single ASL file and the resulting AML file. 
835 Support for this type of file was also added to the various tools that 
836 use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 
837 example code below shows two definition blocks within the same file:
838
839     DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 
840 0x12345678)
841     {
842     }
843     DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
844     {
845     }
846
847 iASL: Enhanced typechecking for the Name() operator. All expressions for 
848 the value of the named object must be reduced/folded to a single constant 
849 at compile time, as per the ACPI specification (the AML definition of 
850 Name()).
851
852 iASL: Fixed some code indentation issues for the -ic and -ia options (C 
853 and assembly headers). Now all emitted code correctly begins in column 1.
854
855 iASL: Added an error message for an attempt to open a Scope() on an 
856 object defined in an SSDT. The DSDT is always loaded into the namespace 
857 first, so any attempt to open a Scope on an SSDT object will fail at 
858 runtime.
859
860
861 ----------------------------------------
862 30 September 2015. Summary of changes for version 20150930:
863
864 1) ACPICA kernel-resident subsystem:
865
866 Debugger: Implemented several changes and bug fixes to assist support for 
867 the in-kernel version of the AML debugger. Lv Zheng.
868 - Fix the "predefined" command for in-kernel debugger.
869 - Do not enter debug command loop for the help and version commands.
870 - Disallow "execute" command during execution/single-step of a method.
871
872 Interpreter: Updated runtime typechecking for all operators that have 
873 target operands. The operand is resolved and validated that it is legal. 
874 For example, the target cannot be a non-data object such as a Device, 
875 Mutex, ThermalZone, etc., as per the ACPI specification.
876
877 Debugger: Fixed the double-mutex user I/O handshake to work when local 
878 deadlock detection is enabled.
879
880 Debugger: limited display of method locals and arguments (LocalX and 
881 ArgX) to only those that have actually been initialized. This prevents 
882 lines of extraneous output.
883
884 Updated the definition of the NFIT table to correct the bit polarity of 
885 one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
886
887 Example Code and Data Size: These are the sizes for the OS-independent 
888 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
889 debug version of the code includes the debug output trace mechanism and 
890 has a much larger code and data size.
891
892   Current Release:
893     Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
894     Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
895   Previous Release:
896     Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
897     Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
898
899
900 2) iASL Compiler/Disassembler and Tools:
901
902 iASL: Improved the compile-time typechecking for operands of many of the 
903 ASL operators:
904
905 -- Added an option to disable compiler operand/operator typechecking (-
906 ot).
907
908 -- For the following operators, the TermArg operands are now validated 
909 when possible to be Integer data objects: BankField, OperationRegion, 
910 DataTableRegion, Buffer, and Package.
911
912 -- Store (Source, Target): Both the source and target operands are 
913 resolved and checked that the operands are both legal. For example, 
914 neither operand can be a non-data object such as a Device, Mutex, 
915 ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 
916 operator can be used to store an object to any type of target object.
917
918 -- Store (Source, Target): If the source is a Package object, the target 
919 must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 
920 is a Package, the source must also be a Package.
921
922 -- Store (Source, Target): A warning is issued if the source and target 
923 resolve to the identical named object.
924
925 -- Store (Source, <method invocation>): An error is generated for the 
926 target method invocation, as this construct is not supported by the AML 
927 interpreter.
928
929 -- For all ASL math and logic operators, the target operand must be a 
930 data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 
931 includes the function return value also.
932
933 -- External declarations are also included in the typechecking where 
934 possible. External objects defined using the UnknownObj keyword cannot be 
935 typechecked, however.
936
937 iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 
938 operator:
939 - Legacy code: Index(PKG1, 3)
940 - New ASL+ code: PKG1[3]
941 This completes the ACPI 6.0 ASL+ support as it was the only operator not 
942 supported.
943
944 iASL: Fixed the file suffix for the preprocessor output file (.i). Two 
945 spaces were inadvertently appended to the filename, causing file access 
946 and deletion problems on some systems.
947
948 ASL Test Suite (ASLTS): Updated the master makefile to generate all 
949 possible compiler output files when building the test suite -- thus 
950 exercising these features of the compiler. These files are automatically 
951 deleted when the test suite exits.
952
953
954 ----------------------------------------
955 18 August 2015. Summary of changes for version 20150818:
956
957 1) ACPICA kernel-resident subsystem:
958
959 Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 
960 Zheng. ACPICA BZ 1186.
961
962 Completed development to ensure that the ACPICA Disassembler and Debugger 
963 are fully standalone components of ACPICA. Removed cross-component 
964 dependences. Lv Zheng.
965
966 The max-number-of-AML-loops is now runtime configurable (previously was 
967 compile-time only). This is essentially a loop timeout to force-abort 
968 infinite AML loops. ACPCIA BZ 1192.
969
970 Debugger: Cleanup output to dump ACPI names and namepaths without any 
971 trailing underscores. Lv Zheng. ACPICA BZ 1135.
972
973 Removed unnecessary conditional compilations across the Debugger and 
974 Disassembler components where entire modules could be left uncompiled.
975
976 The aapits test is deprecated and has been removed from the ACPICA git 
977 tree. The test has never been completed and has not been maintained, thus 
978 becoming rather useless. ACPICA BZ 1015, 794.
979
980 A batch of small changes to close bugzilla and other reports:
981 - Remove duplicate code for _PLD processing. ACPICA BZ 1176.
982 - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
983 - iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
984 - ACPI table support: general cleanup and simplification. Lv Zheng, Bob 
985 Moore.
986 - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 
987 ACPICA BZ 1184.
988 - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 
989 operators.
990 - Debugger: Split debugger initialization/termination interfaces. Lv 
991 Zheng.
992 - AcpiExec: Emit OemTableId for SSDTs during the load phase for table 
993 identification.
994 - AcpiExec: Add debug message during _REG method phase during table 
995 load/init.
996 - AcpiNames: Fix a regression where some output was missing and no longer 
997 emitted.
998 - Debugger: General cleanup and simplification. Lv Zheng.
999 - Disassembler: Cleanup use of several global option variables. Lv Zheng.
1000
1001 Example Code and Data Size: These are the sizes for the OS-independent 
1002 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1003 debug version of the code includes the debug output trace mechanism and 
1004 has a much larger code and data size.
1005
1006   Current Release:
1007     Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1008     Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
1009   Previous Release:
1010     Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1011     Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1012
1013
1014 2) iASL Compiler/Disassembler and Tools:
1015
1016 AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 
1017 were not handled properly and caused load errors. Now, properly invoke 
1018 and use the ACPICA auto-reallocate mechanism for ACPI table data 
1019 structures. ACPICA BZ 1188
1020
1021 AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 
1022 BZ 1190.
1023
1024 AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 
1025 AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 
1026 executed during initialization. ACPICA BZ 1187, 1189.
1027
1028 iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 
1029 that corresponds to each disassembled ASL statement, to simplify 
1030 debugging. ACPICA BZ 1191.
1031
1032 Debugger: Add option to the "objects" command to display a summary of the 
1033 current namespace objects (Object type and count). This is displayed if 
1034 the command is entered with no arguments.
1035
1036 AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
1037
1038
1039 ----------------------------------------
1040 17 July 2015. Summary of changes for version 20150717:
1041
1042 1) ACPICA kernel-resident subsystem:
1043
1044 Improved the partitioning between the Debugger and Disassembler 
1045 components. This allows the Debugger to be used standalone within kernel 
1046 code without the Disassembler (which is used for single stepping also). 
1047 This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
1048
1049 Debugger: Implemented a new command to trace the execution of control 
1050 methods (Trace). This is especially useful for the in-kernel version of 
1051 the debugger when file I/O may not be available for method trace output. 
1052 See the ACPICA reference for more information. Lv Zheng.
1053
1054 Moved all C library prototypes (used for the local versions of these 
1055 functions when requested) to a new header, acclib.h
1056 Cleaned up the use of non-ANSI C library functions. These functions are 
1057 implemented locally in ACPICA. Moved all such functions to a common 
1058 source file, utnonansi.c
1059
1060 Debugger: Fixed a problem with the "!!" command (get last command 
1061 executed) where the debugger could enter an infinite loop and eventually 
1062 crash.
1063
1064 Removed the use of local macros that were used for some of the standard C 
1065 library functions to automatically cast input parameters. This mostly 
1066 affected the is* functions where the input parameter is defined to be an 
1067 int. This required a few modifications to the main ACPICA source code to 
1068 provide casting for these functions and eliminate possible compiler 
1069 warnings for these parameters.
1070
1071 Across the source code, added additional status/error checking to resolve 
1072 issues discovered by static source code analysis tools such as Coverity.
1073
1074 Example Code and Data Size: These are the sizes for the OS-independent 
1075 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1076 debug version of the code includes the debug output trace mechanism and 
1077 has a much larger code and data size.
1078
1079   Current Release:
1080     Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1081     Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1082   Previous Release:
1083     Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
1084     Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
1085
1086
1087 2) iASL Compiler/Disassembler and Tools:
1088
1089 iASL: Fixed a regression where the device map file feature no longer 
1090 worked properly when used in conjunction with the disassembler. It only 
1091 worked properly with the compiler itself.
1092
1093 iASL: Implemented a new warning for method LocalX variables that are set 
1094 but never used (similar to a C compiler such as gcc). This also applies 
1095 to ArgX variables that are not defined by the parent method, and are 
1096 instead (legally) used as local variables.
1097
1098 iASL/Preprocessor: Finished the pass-through of line numbers from the 
1099 preprocessor to the compiler. This ensures that compiler errors/warnings 
1100 have the correct original line numbers and filenames, regardless of any 
1101 #include files.
1102
1103 iASL/Preprocessor: Fixed a couple of issues with comment handling and the 
1104 pass-through of comments to the preprocessor output file (which becomes 
1105 the compiler input file). Also fixed a problem with // comments that 
1106 appear after a math expression.
1107
1108 iASL: Added support for the TCPA server table to the table compiler and 
1109 template generator. (The client table was already previously supported)
1110
1111 iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 
1112 identify the iASL compiler.
1113
1114 Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 
1115 multiple times. The new names are ACPI_SIGN_NEGATIVE and 
1116 ACPI_SIGN_POSITIVE.
1117
1118 AcpiHelp: Update to expand help messages for the iASL preprocessor 
1119 directives.
1120
1121
1122 ----------------------------------------
1123 19 June 2015. Summary of changes for version 20150619:
1124
1125 Two regressions in version 20150616 have been addressed:
1126
1127 Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 
1128 etc.) This update changes ACPICA to only use the standard headers for 
1129 functions, or the prototypes for the local versions of the C library 
1130 functions. Across the source code, this required some additional casts 
1131 for some Clib invocations for portability. Moved all local prototypes to 
1132 a new file, acclib.h
1133
1134 Fixes several problems with recent changes to the handling of the FACS 
1135 table that could cause some systems not to boot.
1136
1137
1138 ----------------------------------------
1139 16 June 2015. Summary of changes for version 20150616:
1140
1141
1142 1) ACPICA kernel-resident subsystem:
1143
1144 Across the entire ACPICA source code base, the various macros for the C 
1145 library functions (such as ACPI_STRLEN, etc.) have been removed and 
1146 replaced by the standard C library names (strlen, etc.) The original 
1147 purpose for these macros is no longer applicable. This simplification 
1148 reduces the number of macros used in the ACPICA source code 
1149 significantly, improving readability and maintainability.
1150
1151 Implemented support for a new ACPI table, the OSDT. This table, the 
1152 "override" SDT, can be loaded directly by the host OS at boot time. It 
1153 enables the replacement of existing namespace objects that were installed 
1154 via the DSDT and/or SSDTs. The primary purpose for this is to replace 
1155 buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 
1156 for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 
1157 Moore.
1158
1159 Added support for systems with (improperly) two FACS tables -- a "32-bit" 
1160 table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 
1161 X field). This change will support both automatically. There continues to 
1162 be systems found with this issue. This support requires a change to the 
1163 AcpiSetFirmwareWakingVector interface. Also, a public global variable has 
1164 been added to allow the host to select which FACS is desired 
1165 (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 
1166 details Lv Zheng.
1167
1168 Added a new feature to allow for systems that do not contain an FACS. 
1169 Although this is already supported on hardware-reduced platforms, the 
1170 feature has been extended for all platforms. The reasoning is that we do 
1171 not want to abort the entire ACPICA initialization just because the 
1172 system is seriously buggy and has no FACS.
1173
1174 Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 
1175 not correctly transcribed from the ACPI specification in ACPICA version 
1176 20150515.
1177
1178 Implemented support for the _CLS object in the AcpiGetObjectInfo external 
1179 interface.
1180
1181 Updated the definitions of the TCPA and TPM2 ACPI tables to the more 
1182 recent TCG ACPI Specification, December 14, 2014. Table disassembler and 
1183 compiler also updated. Note: The TCPA "server" table is not supported by 
1184 the disassembler/table-compiler at this time.
1185
1186 ACPI 6.0: Added definitions for the new GIC version field in the MADT.
1187
1188 Example Code and Data Size: These are the sizes for the OS-independent 
1189 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1190 debug version of the code includes the debug output trace mechanism and 
1191 has a much larger code and data size.
1192
1193   Current Release:
1194     Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
1195     Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
1196   Previous Release:
1197     Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
1198     Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
1199
1200
1201 2) iASL Compiler/Disassembler and Tools:
1202
1203 Disassembler: Fixed a problem with the new symbolic operator disassembler 
1204 where incorrect ASL code could be emitted in some cases for the "non-
1205 commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 
1206 ShiftRight. The actual problem cases seem to be rather unusual in common 
1207 ASL code, however. David Box.
1208
1209 Modified the linux version of acpidump to obtain ACPI tables from not 
1210 just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 
1211 Zheng.
1212
1213 iASL: Fixed a problem where the user preprocessor output file (.i) 
1214 contained extra data that was not expected. The compiler was using this 
1215 file as a temporary file and passed through #line directives in order to 
1216 keep compiler error messages in sync with the input file and line number 
1217 across multiple include files. The (.i) is no longer a temporary file as 
1218 the compiler uses a new, different file for the original purpose.
1219
1220 iASL: Fixed a problem where comments within the original ASL source code 
1221 file were not passed through to the preprocessor output file, nor any 
1222 listing files.
1223
1224 iASL: Fixed some issues for the handling of the "#include" preprocessor 
1225 directive and the similar (but not the same) "Include" ASL operator.
1226
1227 iASL: Add support for the new OSDT in both the disassembler and compiler.
1228
1229 iASL: Fixed a problem with the constant folding support where a Buffer 
1230 object could be incorrectly generated (incorrectly formed) during a 
1231 conversion to a Store() operator.
1232
1233 AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 
1234 description text for the _REV predefined name. _REV now permanently 
1235 returns 2, as per the ACPI 6.0 specification.
1236
1237 Debugger: Enhanced the output of the Debug ASL object for references 
1238 produced by the Index operator. For Buffers and strings, only output the 
1239 actual byte pointed to by the index. For packages, only print the single 
1240 package element decoded by the index. Previously, the entire 
1241 buffer/string/package was emitted.
1242
1243 iASL/Table-compiler: Fixed a regression where the "generic" data types 
1244 were no longer recognized, causing errors.
1245
1246
1247 ----------------------------------------
1248 15 May 2015. Summary of changes for version 20150515:
1249
1250 This release implements most of ACPI 6.0 as described below.
1251
1252 1) ACPICA kernel-resident subsystem:
1253
1254 Implemented runtime argument checking and return value checking for all 
1255 new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 
1256 _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
1257
1258 Example Code and Data Size: These are the sizes for the OS-independent 
1259 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1260 debug version of the code includes the debug output trace mechanism and 
1261 has a much larger code and data size.
1262
1263   Current Release:
1264     Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
1265     Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
1266   Previous Release:
1267     Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
1268     Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
1269
1270
1271 2) iASL Compiler/Disassembler and Tools:
1272
1273 iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 
1274 names (argument count validation and return value typechecking.)
1275
1276 iASL disassembler and table compiler: implemented support for all new 
1277 ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 
1278
1279 iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 
1280 tables: FADT, MADT.
1281
1282 iASL preprocessor: Added a new directive to enable inclusion of binary 
1283 blobs into ASL code. The new directive is #includebuffer. It takes a 
1284 binary file as input and emits a named ascii buffer object into the ASL 
1285 code.
1286
1287 AcpiHelp: Added support for all new ACPI 6.0 predefined names.
1288
1289 AcpiHelp: Added a new option, -d, to display all iASL preprocessor 
1290 directives.
1291
1292 AcpiHelp: Added a new option, -t, to display all known/supported ACPI 
1293 tables.
1294
1295
1296 ----------------------------------------
1297 10 April 2015. Summary of changes for version 20150410:
1298
1299 Reverted a change introduced in version 20150408 that caused
1300 a regression in the disassembler where incorrect operator
1301 symbols could be emitted.
1302
1303
1304 ----------------------------------------
1305 08 April 2015. Summary of changes for version 20150408:
1306
1307
1308 1) ACPICA kernel-resident subsystem:
1309
1310 Permanently set the return value for the _REV predefined name. It now 
1311 returns 2 (was 5). This matches other ACPI implementations. _REV will be 
1312 deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 
1313 for ACPI 2.0 and later. It should never be used to differentiate or 
1314 identify operating systems.
1315
1316 Added the "Windows 2015" string to the _OSI support. ACPICA will now 
1317 return TRUE to a query with this string.
1318
1319 Fixed several issues with the local version of the printf function.
1320
1321 Added the C99 compiler option (-std=c99) to the Unix makefiles.
1322
1323   Current Release:
1324     Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
1325     Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
1326   Previous Release:
1327     Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1328     Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1329
1330
1331 2) iASL Compiler/Disassembler and Tools:
1332
1333 iASL: Implemented an enhancement to the constant folding feature to 
1334 transform the parse tree to a simple Store operation whenever possible:
1335     Add (2, 3, X) ==> is converted to: Store (5, X)
1336     X = 2 + 3     ==> is converted to: Store (5, X)
1337
1338 Updated support for the SLIC table (Software Licensing Description Table) 
1339 in both the Data Table compiler and the disassembler. The SLIC table 
1340 support now conforms to "Microsoft Software Licensing Tables (SLIC and 
1341 MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 
1342 following the ACPI header is now defined to be "Proprietary Data", and as 
1343 such, can only be entered or displayed as a hex data block.
1344
1345 Implemented full support for the MSDM table as described in the document 
1346 above. Note: The format of MSDM is similar to SLIC. Any MSDM data 
1347 following the ACPI header is defined to be "Proprietary Data", and can 
1348 only be entered or displayed as a hex data block.
1349
1350 Implemented the -Pn option for the iASL Table Compiler (was only 
1351 implemented for the ASL compiler). This option disables the iASL 
1352 preprocessor.
1353
1354 Disassembler: For disassembly of Data Tables, added a comment field 
1355 around the Ascii equivalent data that is emitted as part of the "Raw 
1356 Table Data" block. This prevents the iASL Preprocessor from possible 
1357 confusion if/when the table is compiled.
1358
1359 Disassembler: Added an option (-df) to force the disassembler to assume 
1360 that the table being disassembled contains valid AML. This feature is 
1361 useful for disassembling AML files that contain ACPI signatures other 
1362 than DSDT or SSDT (such as OEMx or other signatures).
1363
1364 Changes for the EFI version of the tools:
1365 1) Fixed a build error/issue
1366 2) Fixed a cast warning
1367
1368 iASL: Fixed a path issue with the __FILE__ operator by making the 
1369 directory prefix optional within the internal SplitInputFilename 
1370 function.
1371
1372 Debugger: Removed some unused global variables.
1373
1374 Tests: Updated the makefile for proper generation of the AAPITS suite.
1375
1376
1377 ----------------------------------------
1378 04 February 2015. Summary of changes for version 20150204:
1379
1380 ACPICA kernel-resident subsystem:
1381
1382 Updated all ACPICA copyrights and signons to 2014. Added the 2014 
1383 copyright to all module headers and signons, including the standard Linux 
1384 header. This affects virtually every file in the ACPICA core subsystem, 
1385 iASL compiler, all ACPICA utilities, and the test suites.
1386
1387 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
1388 A raw gpe handling mechanism was created to allow better handling of GPE
1389 storms that aren't easily managed by the normal handler. The raw handler
1390 allows disabling/renabling of the the GPE so that interrupt storms can be
1391 avoided in cases where events cannot be timely serviced. In this 
1392 scenario, handlers should use the AcpiSetGpe() API to disable/enable the 
1393 GPE. This API will leave the reference counts undisturbed, thereby 
1394 preventing unintentional clearing of the GPE when the intent in only to 
1395 temporarily disable it. Raw handlers allow enabling and disabling of a 
1396 GPE by removing GPE register locking. As such, raw handlers much provide 
1397 their own locks while using GPE API's to protect access to GPE data 
1398 structures.
1399 Lv Zheng
1400
1401 Events: Always modify GPE registers under the GPE lock.
1402 Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
1403 values. Reported as bug by joe.liu@apple.com.
1404
1405 Unix makefiles: Separate option to disable optimizations and 
1406 _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 
1407 NOOPT disable option and creates a separate flag (NOFORTIFY) for this 
1408 purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 
1409 errors when building ACPICA. This allows disabling the option without 
1410 also having to disable optimazations.
1411 David Box
1412
1413   Current Release:
1414     Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1415     Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
1416
1417 --
1418 --------------------------------------
1419 07 November 2014. Summary of changes for version 20141107:
1420
1421 This release is available at https://acpica.org/downloads
1422
1423 This release introduces and implements language extensions to ASL that 
1424 provide support for symbolic ("C-style") operators and expressions. These 
1425 language extensions are known collectively as ASL+.
1426
1427
1428 1) iASL Compiler/Disassembler and Tools:
1429
1430 Disassembler: Fixed a problem with disassembly of the UartSerialBus 
1431 macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 
1432 Box.
1433
1434 Disassembler: Fixed the Unicode macro support to add escape sequences. 
1435 All non-printable ASCII values are emitted as escape sequences, as well 
1436 as the standard escapes for quote and backslash. Ensures that the 
1437 disassembled macro can be correctly recompiled.
1438
1439 iASL: Added Printf/Fprintf macros for formatted output. These macros are 
1440 translated to existing AML Concatenate and Store operations. Printf 
1441 writes to the ASL Debug object. Fprintf allows the specification of an 
1442 ASL name as the target. Only a single format specifier is required, %o, 
1443 since the AML interpreter dynamically converts objects to the required 
1444 type. David E. Box.
1445
1446     (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
1447                  (Concatenate (Concatenate (Concatenate ("", Arg0),
1448                  ": Unexpected value for "), Arg1), ", "), Arg2),
1449                  " at line "), Arg3), Debug)
1450
1451     (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
1452                  Arg0, Arg1, Arg2, Arg3)
1453
1454     (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
1455                  ("", Arg1), ": "), Arg0), " Successful"), STR1)
1456
1457     (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
1458
1459 iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 
1460 ASL parse tree before the AML code is generated. This allows blocks of 
1461 ASL code to be removed in order to help locate and identify problem 
1462 devices and/or code. David E. Box.
1463
1464 AcpiExec: Added support (-fi) for an optional namespace object 
1465 initialization file. This file specifies initial values for namespace 
1466 objects as necessary for debugging and testing different ASL code paths 
1467 that may be taken as a result of BIOS options.
1468
1469
1470 2) Overview of symbolic operator support for ASL (ASL+)
1471 -------------------------------------------------------
1472
1473 As an extension to the ASL language, iASL implements support for symbolic 
1474 (C-style) operators for math and logical expressions. This can greatly 
1475 simplify ASL code as well as improve both readability and 
1476 maintainability. These language extensions can exist concurrently with 
1477 all legacy ASL code and expressions.
1478
1479 The symbolic extensions are 100% compatible with existing AML 
1480 interpreters, since no new AML opcodes are created. To implement the 
1481 extensions, the iASL compiler transforms the symbolic expressions into 
1482 the legacy ASL/AML equivalents at compile time.
1483
1484 Full symbolic expressions are supported, along with the standard C 
1485 precedence and associativity rules.
1486
1487 Full disassembler support for the symbolic expressions is provided, and 
1488 creates an automatic migration path for existing ASL code to ASL+ code 
1489 via the disassembly process. By default, the disassembler now emits ASL+ 
1490 code with symbolic expressions. An option (-dl) is provided to force the 
1491 disassembler to emit legacy ASL code if desired.
1492
1493 Below is the complete list of the currently supported symbolic operators 
1494 with examples. See the iASL User Guide for additional information.
1495
1496
1497 ASL+ Syntax      Legacy ASL Equivalent
1498 -----------      ---------------------
1499
1500     // Math operators
1501
1502 Z = X + Y        Add (X, Y, Z)
1503 Z = X - Y        Subtract (X, Y, Z)
1504 Z = X * Y        Multiply (X, Y, Z)
1505 Z = X / Y        Divide (X, Y, , Z)
1506 Z = X % Y        Mod (X, Y, Z)
1507 Z = X << Y       ShiftLeft (X, Y, Z)
1508 Z = X >> Y       ShiftRight (X, Y, Z)
1509 Z = X & Y        And (X, Y, Z)
1510 Z = X | Y        Or (X, Y, Z)
1511 Z = X ^ Y        Xor (X, Y, Z)
1512 Z = ~X           Not (X, Z)
1513 X++              Increment (X)
1514 X--              Decrement (X)
1515
1516     // Logical operators
1517
1518 (X == Y)         LEqual (X, Y)
1519 (X != Y)         LNotEqual (X, Y)
1520 (X < Y)          LLess (X, Y)
1521 (X > Y)          LGreater (X, Y)
1522 (X <= Y)         LLessEqual (X, Y)
1523 (X >= Y)         LGreaterEqual (X, Y)
1524 (X && Y)         LAnd (X, Y)
1525 (X || Y)         LOr (X, Y)
1526 (!X)             LNot (X)
1527
1528     // Assignment and compound assignment operations
1529
1530 X = Y           Store (Y, X)
1531 X += Y          Add (X, Y, X)
1532 X -= Y          Subtract (X, Y, X)
1533 X *= Y          Multiply (X, Y, X)
1534 X /= Y          Divide (X, Y, , X)
1535 X %= Y          Mod (X, Y, X)
1536 X <<= Y         ShiftLeft (X, Y, X)
1537 X >>= Y         ShiftRight (X, Y, X)
1538 X &= Y          And (X, Y, X)
1539 X |= Y          Or (X, Y, X)
1540 X ^= Y          Xor (X, Y, X)
1541
1542
1543 3) ASL+ Examples:
1544 -----------------
1545
1546 Legacy ASL:
1547         If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
1548             And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 
1549 0x03FB), 
1550             0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
1551         {
1552             And (MEMB, 0xFFFFFFF0, SRMB)
1553             Store (MEMB, Local2)
1554             Store (PDBM, Local1)
1555             And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
1556             Store (SRMB, MEMB)
1557             Or (PDBM, 0x02, PDBM)
1558         }
1559
1560 ASL+ version:
1561         If (((R510 & 0x03FB) == 0x02E0) ||
1562             ((R520 & 0x03FB) == 0x02E0) ||
1563             ((R530 & 0x03FB) == 0x02E0) || 
1564             ((R540 & 0x03FB) == 0x02E0))
1565         {
1566             SRMB = (MEMB & 0xFFFFFFF0)
1567             Local2 = MEMB
1568             Local1 = PDBM
1569             PDBM &= 0xFFFFFFFFFFFFFFF9
1570             MEMB = SRMB
1571             PDBM |= 0x02
1572         }
1573
1574 Legacy ASL:
1575         Store (0x1234, Local1)
1576         Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
1577         Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
1578         Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
1579         Store (Index (PKG1, 0x03), Local6)
1580         Store (Add (Local3, Local2), Debug)
1581         Add (Local1, 0x0F, Local2)
1582         Add (Local1, Multiply (Local2, Local3), Local2)
1583         Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
1584
1585 ASL+ version:
1586         Local1 = 0x1234
1587         Local3 = (((Local1 + TEST) + 0x20) * Local2)
1588         Local3 = (Local2 * ((Local1 + TEST) + 0x20))
1589         Local3 = (Local1 + (TEST + (0x20 * Local2)))
1590         Local6 = Index (PKG1, 0x03)
1591         Debug = (Local3 + Local2)
1592         Local2 = (Local1 + 0x0F)
1593         Local2 = (Local1 + (Local2 * Local3))
1594         Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
1595
1596
1597 ----------------------------------------
1598 26 September 2014. Summary of changes for version 20140926:
1599
1600 1) ACPICA kernel-resident subsystem:
1601
1602 Updated the GPIO operation region handler interface (GeneralPurposeIo). 
1603 In order to support GPIO Connection objects with multiple pins, along 
1604 with the related Field objects, the following changes to the interface 
1605 have been made: The Address is now defined to be the offset in bits of 
1606 the field unit from the previous invocation of a Connection. It can be 
1607 viewed as a "Pin Number Index" into the connection resource descriptor. 
1608 The BitWidth is the exact bit width of the field. It is usually one bit, 
1609 but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 
1610 additional information and examples.
1611
1612 GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 
1613 corresponding _Lxx/_Exx methods are disabled (they may have been enabled 
1614 by the firmware), so that they cannot fire until they are enabled via 
1615 AcpiUpdateAllGpes. Rafael J. Wysocki.
1616
1617 Added a new return flag for the Event/GPE status interfaces -- 
1618 AcpiGetEventStatus and AcpiGetGpeStatus. The new 
1619 ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 
1620 GPE currently has a handler associated with it, and can thus actually 
1621 affect the system. Lv Zheng.
1622
1623 Example Code and Data Size: These are the sizes for the OS-independent 
1624 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1625 debug version of the code includes the debug output trace mechanism and 
1626 has a much larger code and data size.
1627
1628   Current Release:
1629     Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
1630     Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
1631   Previous Release:
1632     Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1633     Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1634
1635 2) iASL Compiler/Disassembler and Tools:
1636
1637 iASL: Fixed a memory allocation/free regression introduced in 20140828 
1638 that could cause the compiler to crash. This was introduced inadvertently 
1639 during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 
1640 1113.
1641
1642 iASL: Removed two error messages that have been found to create false 
1643 positives, until they can be fixed and fully validated (ACPICA BZ 1112):
1644 1) Illegal forward reference within a method
1645 2) Illegal reference across two methods
1646
1647 iASL: Implemented a new option (-lm) to create a hardware mapping file 
1648 that summarizes all GPIO, I2C, SPI, and UART connections. This option 
1649 works for both the compiler and disassembler. See the iASL compiler user 
1650 guide for additional information and examples (section 6.4.6).
1651
1652 AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 
1653 version 2. This corrects the AE_BAD_HEADER exception seen on systems with 
1654 a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
1655
1656 AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 
1657 unless STDIN is actually a terminal. Assists with batch-mode processing. 
1658 ACPICA BZ 1114.
1659
1660 Disassembler/AcpiHelp: Added another large group of recognized _HID 
1661 values.
1662
1663
1664 ----------------------------------------
1665 28 August 2014. Summary of changes for version 20140828:
1666
1667 1) ACPICA kernel-resident subsystem:
1668
1669 Fixed a problem related to the internal use of the Timer() operator where 
1670 a 64-bit divide could cause an attempted link to a double-precision math 
1671 library. This divide is not actually necessary, so the code was 
1672 restructured to eliminate it. Lv Zheng.
1673
1674 ACPI 5.1: Added support for the runtime validation of the _DSD package 
1675 (similar to the iASL support).
1676
1677 ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 
1678 SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
1679
1680 Example Code and Data Size: These are the sizes for the OS-independent 
1681 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1682 debug version of the code includes the debug output trace mechanism and 
1683 has a much larger code and data size.
1684
1685   Current Release:
1686     Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1687     Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1688   Previous Release:
1689     Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
1690     Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
1691
1692 2) iASL Compiler/Disassembler and Tools:
1693
1694 AcpiExec: Fixed a problem on unix systems where the original terminal 
1695 state was not always properly restored upon exit. Seen when using the -v 
1696 option. ACPICA BZ 1104.
1697
1698 iASL: Fixed a problem with the validation of the ranges/length within the 
1699 Memory24 resource descriptor. There was a boundary condition when the 
1700 range was equal to the (length -1) caused by the fact that these values 
1701 are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
1702
1703 Disassembler: Fixed a problem with the GpioInt descriptor interrupt 
1704 polarity 
1705 flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 
1706 is 
1707 now supported properly.
1708
1709 ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 
1710 in the disassembler, data table compiler, and table template generator.
1711
1712 iASL: Added a requirement for Device() objects that one of either a _HID 
1713 or _ADR must exist within the scope of a Device, as per the ACPI 
1714 specification. Remove a similar requirement that was incorrectly in place 
1715 for the _DSD object.
1716
1717 iASL: Added error detection for illegal named references within control 
1718 methods that would cause runtime failures. Now trapped as errors are: 1) 
1719 References to objects within a non-parent control method. 2) Forward 
1720 references (within a method) -- for control methods, AML interpreters use 
1721 a one-pass parse of control methods. ACPICA BZ 1008.
1722
1723 iASL: Added error checking for dependencies related to the _PSx power 
1724 methods. ACPICA BZ 1029.
1725 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 
1726 _PS3.
1727 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 
1728 scope.
1729
1730 iASL and table compiler: Cleanup miscellaneous memory leaks by fully 
1731 deploying the existing object and string caches and adding new caches for 
1732 the table compiler.
1733
1734 iASL: Split the huge parser source file into multiple subfiles to improve 
1735 manageability. Generation now requires the M4 macro preprocessor, which 
1736 is part of the Bison distribution on both unix and windows platforms.
1737
1738 AcpiSrc: Fixed and removed all extraneous warnings generated during 
1739 entire ACPICA source code scan and/or conversion.
1740
1741
1742 ----------------------------------------
1743
1744 24 July 2014. Summary of changes for version 20140724: 
1745
1746 The ACPI 5.1 specification has been released and is available at: 
1747 http://uefi.org/specs/access
1748
1749
1750 0) ACPI 5.1 support in ACPICA:
1751
1752 ACPI 5.1 is fully supported in ACPICA as of this release.
1753
1754 New predefined names. Support includes iASL and runtime ACPICA 
1755 validation.
1756     _CCA (Cache Coherency Attribute).
1757     _DSD (Device-Specific Data). David Box.
1758
1759 Modifications to existing ACPI tables. Support includes headers, iASL 
1760 Data Table compiler, disassembler, and the template generator.
1761     FADT - New fields and flags. Graeme Gregory.
1762     GTDT - One new subtable and new fields. Tomasz Nowicki.
1763     MADT - Two new subtables. Tomasz Nowicki.
1764     PCCT - One new subtable.
1765
1766 Miscellaneous.
1767     New notification type for System Resource Affinity change events.
1768
1769
1770 1) ACPICA kernel-resident subsystem:
1771
1772 Fixed a regression introduced in 20140627 where a fault can happen during 
1773 the deletion of Alias AML namespace objects. The problem affected both 
1774 the core ACPICA and the ACPICA tools including iASL and AcpiExec.
1775
1776 Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 
1777 simple mechanism to enable wake GPEs that have no associated handler or 
1778 control method. Rafael Wysocki.
1779
1780 Updated the AcpiEnableGpe interface to disallow the enable if there is no 
1781 handler or control method associated with the particular GPE. This will 
1782 help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
1783
1784 Updated GPE handling and dispatch by disabling the GPE before clearing 
1785 the status bit for edge-triggered GPEs. Lv Zheng.
1786
1787 Added Timer() support to the AML Debug object. The current timer value is 
1788 now displayed with each invocation of (Store to) the debug object to 
1789 enable simple generation of execution times for AML code (method 
1790 execution for example.) ACPICA BZ 1093.
1791
1792 Example Code and Data Size: These are the sizes for the OS-independent 
1793 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1794 debug version of the code includes the debug output trace mechanism and 
1795 has a much larger code and data size.
1796
1797   Current Release:
1798     Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
1799     Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
1800   Previous Release:
1801     Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
1802     Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
1803
1804
1805 2) iASL Compiler/Disassembler and Tools:
1806
1807 Fixed an issue with the recently added local printf implementation, 
1808 concerning width/precision specifiers that could cause incorrect output. 
1809 Lv Zheng. ACPICA BZ 1094.
1810
1811 Disassembler: Added support to detect buffers that contain UUIDs and 
1812 disassemble them to an invocation of the ToUUID operator. Also emit 
1813 commented descriptions of known ACPI-related UUIDs.
1814
1815 AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 
1816 -u. Adds three new files. 
1817
1818 iASL: Update table compiler and disassembler for DMAR table changes that 
1819 were introduced in September 2013. With assistance by David Woodhouse.
1820
1821 ----------------------------------------
1822 27 June 2014. Summary of changes for version 20140627:
1823
1824 1) ACPICA kernel-resident subsystem:
1825
1826 Formatted Output: Implemented local versions of standard formatted output 
1827 utilities such as printf, etc. Over time, it has been discovered that 
1828 there are in fact many portability issues with printf, and the addition 
1829 of this feature will fix/prevent these issues once and for all. Some 
1830 known issues are summarized below:
1831
1832 1) Output of 64-bit values is not portable. For example, UINT64 is %ull 
1833 for the Linux kernel and is %uI64 for some MSVC versions.
1834 2) Invoking printf consistently in a manner that is portable across both 
1835 32-bit and 64-bit platforms is difficult at best in many situations.
1836 3) The output format for pointers varies from system to system (leading 
1837 zeros especially), and leads to inconsistent output from ACPICA across 
1838 platforms.
1839 4) Certain platform-specific printf formats may conflict with ACPICA use.
1840 5) If there is no local C library available, ACPICA now has local support 
1841 for printf.
1842
1843 -- To address these printf issues in a complete manner, ACPICA now 
1844 directly implements a small subset of printf format specifiers, only 
1845 those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
1846
1847 Implemented support for ACPICA generation within the EFI environment. 
1848 Initially, the AcpiDump utility is supported in the UEFI shell 
1849 environment. Lv Zheng.
1850
1851 Added a new external interface, AcpiLogError, to improve ACPICA 
1852 portability. This allows the host to redirect error messages from the 
1853 ACPICA utilities. Lv Zheng.
1854
1855 Added and deployed new OSL file I/O interfaces to improve ACPICA 
1856 portability:
1857   AcpiOsOpenFile
1858   AcpiOsCloseFile
1859   AcpiOsReadFile
1860   AcpiOsWriteFile
1861   AcpiOsGetFileOffset
1862   AcpiOsSetFileOffset
1863 There are C library implementations of these functions in the new file 
1864 service_layers/oslibcfs.c -- however, the functions can be implemented by 
1865 the local host in any way necessary. Lv Zheng.
1866
1867 Implemented a mechanism to disable/enable ACPI table checksum validation 
1868 at runtime. This can be useful when loading tables very early during OS 
1869 initialization when it may not be possible to map the entire table in 
1870 order to compute the checksum. Lv Zheng.
1871
1872 Fixed a buffer allocation issue for the Generic Serial Bus support. 
1873 Originally, a fixed buffer length was used. This change allows for 
1874 variable-length buffers based upon the protocol indicated by the field 
1875 access attributes. Reported by Lan Tianyu. Lv Zheng.
1876
1877 Fixed a problem where an object detached from a namespace node was not 
1878 properly terminated/cleared and could cause a circular list problem if 
1879 reattached. ACPICA BZ 1063. David Box.
1880
1881 Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
1882
1883 Fixed a possible memory leak in an error return path within the function 
1884 AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
1885
1886 Example Code and Data Size: These are the sizes for the OS-independent 
1887 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1888 debug version of the code includes the debug output trace mechanism and 
1889 has a much larger code and data size.
1890
1891   Current Release:
1892     Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
1893     Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
1894   Previous Release:
1895     Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
1896     Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
1897
1898
1899 2) iASL Compiler/Disassembler and Tools:
1900
1901 Disassembler: Add dump of ASCII equivalent text within a comment at the 
1902 end of each line of the output for the Buffer() ASL operator.
1903
1904 AcpiDump: Miscellaneous changes:
1905   Fixed repetitive table dump in -n mode.
1906   For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 
1907 the ACPI 2.0 GUID fails.
1908
1909 iASL: Fixed a problem where the compiler could fault if incorrectly given 
1910 an acpidump output file as input. ACPICA BZ 1088. David Box.
1911
1912 AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 
1913 they are invoked without any arguments.
1914
1915 Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 
1916 1086. Colin Ian King.
1917
1918 Disassembler: Cleaned up a block of code that extracts a parent Op 
1919 object. Added a comment that explains that the parent is guaranteed to be 
1920 valid in this case. ACPICA BZ 1069.
1921
1922
1923 ----------------------------------------
1924 24 April 2014. Summary of changes for version 20140424:
1925
1926 1) ACPICA kernel-resident subsystem:
1927
1928 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 
1929 Some of these tables are known to contain a trailing NULL entry. Lv 
1930 Zheng.
1931
1932 Removed an extraneous error message for the case where there are a large 
1933 number of system GPEs (> 124). This was the "32-bit FADT register is too 
1934 long to convert to GAS struct" message, which is irrelevant for GPEs 
1935 since the GPEx_BLK_LEN fields of the FADT are always used instead of the 
1936 (limited capacity) GAS bit length. Also, several changes to ensure proper 
1937 support for GPE numbers > 255, where some "GPE number" fields were 8-bits 
1938 internally.
1939
1940 Implemented and deployed additional configuration support for the public 
1941 ACPICA external interfaces. Entire classes of interfaces can now be 
1942 easily modified or configured out, replaced by stubbed inline functions 
1943 by default. Lv Zheng.
1944
1945 Moved all public ACPICA runtime configuration globals to the public 
1946 ACPICA external interface file for convenience. Also, removed some 
1947 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
1948
1949 Documentation: Added a new section to the ACPICA reference describing the 
1950 maximum number of GPEs that can be supported by the FADT-defined GPEs in 
1951 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 
1952 reference.
1953
1954 Example Code and Data Size: These are the sizes for the OS-independent 
1955 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1956 debug version of the code includes the debug output trace mechanism and 
1957 has a much larger code and data size.
1958
1959   Current Release:
1960     Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
1961     Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
1962   Previous Release:
1963     Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
1964     Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
1965
1966
1967 2) iASL Compiler/Disassembler and Tools:
1968
1969 iASL and disassembler: Add full support for the LPIT table (Low Power 
1970 Idle Table). Includes support in the disassembler, data table compiler, 
1971 and template generator.
1972
1973 AcpiDump utility:
1974 1) Add option to force the use of the RSDT (over the XSDT).
1975 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
1976
1977 iASL: Add check for predefined packages that are too large.  For 
1978 predefined names that contain subpackages, check if each subpackage is 
1979 too large. (Check for too small already exists.)
1980
1981 Debugger: Updated the GPE command (which simulates a GPE by executing the 
1982 GPE code paths in ACPICA). The GPE device is now optional, and defaults 
1983 to the GPE 0/1 FADT-defined blocks.
1984
1985 Unix application OSL: Update line-editing support. Add additional error 
1986 checking and take care not to reset terminal attributes on exit if they 
1987 were never set. This should help guarantee that the terminal is always 
1988 left in the previous state on program exit.
1989
1990
1991 ----------------------------------------
1992 25 March 2014. Summary of changes for version 20140325:
1993
1994 1) ACPICA kernel-resident subsystem:
1995
1996 Updated the auto-serialize feature for control methods. This feature 
1997 automatically serializes all methods that create named objects in order 
1998 to prevent runtime errors. The update adds support to ignore the 
1999 currently executing AML SyncLevel when invoking such a method, in order 
2000 to prevent disruption of any existing SyncLevel priorities that may exist 
2001 in the AML code. Although the use of SyncLevels is relatively rare, this 
2002 change fixes a regression where an AE_AML_MUTEX_ORDER exception can 
2003 appear on some machines starting with the 20140214 release.
2004
2005 Added a new external interface to allow the host to install ACPI tables 
2006 very early, before the namespace is even created. AcpiInstallTable gives 
2007 the host additional flexibility for ACPI table management. Tables can be 
2008 installed directly by the host as if they had originally appeared in the 
2009 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 
2010 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along 
2011 with additional internal restructuring and cleanup. See the ACPICA 
2012 Reference for interface details. Lv Zheng.
2013
2014 Added validation of the checksum for all incoming dynamically loaded 
2015 tables (via external interfaces or via AML Load/LoadTable operators). Lv 
2016 Zheng.
2017
2018 Updated the use of the AcpiOsWaitEventsComplete interface during Notify 
2019 and GPE handler removal. Restructured calls to eliminate possible race 
2020 conditions. Lv Zheng.
2021
2022 Added a warning for the use/execution of the ASL/AML Unload (table) 
2023 operator. This will help detect and identify machines that use this 
2024 operator if and when it is ever used. This operator has never been seen 
2025 in the field and the usage model and possible side-effects of the drastic 
2026 runtime action of a full table removal are unknown.
2027
2028 Reverted the use of #pragma push/pop which was introduced in the 20140214 
2029 release. It appears that push and pop are not implemented by enough 
2030 compilers to make the use of this feature feasible for ACPICA at this 
2031 time. However, these operators may be deployed in a future ACPICA 
2032 release.
2033
2034 Added the missing EXPORT_SYMBOL macros for the install and remove SCI 
2035 handler interfaces.
2036
2037 Source code generation:
2038 1) Disabled the use of the "strchr" macro for the gcc-specific 
2039 generation. For some versions of gcc, this macro can periodically expose 
2040 a compiler bug which in turn causes compile-time error(s).
2041 2) Added support for PPC64 compilation. Colin Ian King.
2042
2043 Example Code and Data Size: These are the sizes for the OS-independent 
2044 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2045 debug version of the code includes the debug output trace mechanism and 
2046 has a much larger code and data size.
2047
2048   Current Release:
2049     Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
2050     Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
2051   Previous Release:
2052     Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
2053     Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
2054
2055
2056 2) iASL Compiler/Disassembler and Tools:
2057
2058 Disassembler: Added several new features to improve the readability of 
2059 the resulting ASL code. Extra information is emitted within comment 
2060 fields in the ASL code:
2061 1) Known _HID/_CID values are decoded to descriptive text.
2062 2) Standard values for the Notify() operator are decoded to descriptive 
2063 text.
2064 3) Target operands are expanded to full pathnames (in a comment) when 
2065 possible.
2066
2067 Disassembler: Miscellaneous updates for extern() handling:
2068 1) Abort compiler if file specified by -fe option does not exist.
2069 2) Silence unnecessary warnings about argument count mismatches.
2070 3) Update warning messages concerning unresolved method externals.
2071 4) Emit "UnknownObj" keyword for externals whose type cannot be 
2072 determined.
2073
2074 AcpiHelp utility:
2075 1) Added the -a option to display both the ASL syntax and the AML 
2076 encoding for an input ASL operator. This effectively displays all known 
2077 information about an ASL operator with one AcpiHelp invocation.
2078 2) Added substring match support (similar to a wildcard) for the -i 
2079 (_HID/PNP IDs) option.
2080
2081 iASL/Disassembler: Since this tool does not yet support execution on big-
2082 endian machines, added detection of endianness and an error message if 
2083 execution is attempted on big-endian. Support for big-endian within iASL 
2084 is a feature that is on the ACPICA to-be-done list.
2085
2086 AcpiBin utility:
2087 1) Remove option to extract binary files from an acpidump; this function 
2088 is made obsolete by the AcpiXtract utility.
2089 2) General cleanup of open files and allocated buffers.
2090
2091
2092 ----------------------------------------
2093 14 February 2014. Summary of changes for version 20140214:
2094
2095 1) ACPICA kernel-resident subsystem:
2096
2097 Implemented a new mechanism to proactively prevent problems with ill-
2098 behaved reentrant control methods that create named ACPI objects. This 
2099 behavior is illegal as per the ACPI specification, but is nonetheless 
2100 frequently seen in the field. Previously, this could lead to an 
2101 AE_ALREADY_EXISTS exception if the method was actually entered by more 
2102 than one thread. This new mechanism detects such methods at table load 
2103 time and marks them "serialized" to prevent reentrancy. A new global 
2104 option, AcpiGbl_AutoSerializeMethods, has been added to disable this 
2105 feature if desired. This mechanism and global option obsoletes and 
2106 supersedes the previous AcpiGbl_SerializeAllMethods option.
2107
2108 Added the "Windows 2013" string to the _OSI support. ACPICA will now 
2109 respond TRUE to _OSI queries with this string. It is the stated policy of 
2110 ACPICA to add new strings to the _OSI support as soon as possible after 
2111 they are defined. See the full ACPICA _OSI policy which has been added to 
2112 the utilities/utosi.c file.
2113
2114 Hardened/updated the _PRT return value auto-repair code:
2115 1) Do not abort the repair on a single subpackage failure, continue to 
2116 check all subpackages.
2117 2) Add check for the minimum subpackage length (4).
2118 3) Properly handle extraneous NULL package elements.
2119
2120 Added support to avoid the possibility of infinite loops when traversing 
2121 object linked lists. Never allow an infinite loop, even in the face of 
2122 corrupted object lists.
2123
2124 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 
2125 pack(pop) directives to ensure that the ACPICA headers are independent of 
2126 compiler settings or other host headers.
2127
2128 Example Code and Data Size: These are the sizes for the OS-independent 
2129 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2130 debug version of the code includes the debug output trace mechanism and 
2131 has a much larger code and data size.
2132
2133   Current Release:
2134     Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
2135     Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
2136   Previous Release:
2137     Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
2138     Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
2139
2140
2141 2) iASL Compiler/Disassembler and Tools:
2142
2143 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 
2144 first reserved field was incorrectly forced to have a value of zero. This 
2145 change correctly forces the field to have a value of one. ACPICA BZ 1081.
2146
2147 Debugger: Added missing support for the "Extra" and "Data" subobjects 
2148 when displaying object data.
2149
2150 Debugger: Added support to display entire object linked lists when 
2151 displaying object data.
2152
2153 iASL: Removed the obsolete -g option to obtain ACPI tables from the 
2154 Windows registry. This feature has been superseded by the acpidump 
2155 utility. 
2156
2157
2158 ----------------------------------------
2159 14 January 2014. Summary of changes for version 20140114:
2160
2161 1) ACPICA kernel-resident subsystem:
2162
2163 Updated all ACPICA copyrights and signons to 2014. Added the 2014 
2164 copyright to all module headers and signons, including the standard Linux 
2165 header. This affects virtually every file in the ACPICA core subsystem, 
2166 iASL compiler, all ACPICA utilities, and the test suites.
2167
2168 Improved parameter validation for AcpiInstallGpeBlock. Added the 
2169 following checks:
2170 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
2171 2) There is not already a GPE block attached to the device.
2172 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 
2173 device.
2174
2175 Correctly support "references" in the ACPI_OBJECT. This change fixes the 
2176 support to allow references (namespace nodes) to be passed as arguments 
2177 to control methods via the evaluate object interface. This is probably 
2178 most useful for testing purposes, however.
2179
2180 Improved support for 32/64 bit physical addresses in printf()-like 
2181 output. This change improves the support for physical addresses in printf 
2182 debug statements and other output on both 32-bit and 64-bit hosts. It 
2183 consistently outputs the appropriate number of bytes for each host. The 
2184 %p specifier is unsatisfactory since it does not emit uniform output on 
2185 all hosts/clib implementations (on some, leading zeros are not supported, 
2186 leading to difficult-to-read output).
2187
2188 Example Code and Data Size: These are the sizes for the OS-independent 
2189 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2190 debug version of the code includes the debug output trace mechanism and 
2191 has a much larger code and data size.
2192
2193   Current Release:
2194     Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
2195     Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
2196   Previous Release:
2197     Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
2198     Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
2199
2200
2201 2) iASL Compiler/Disassembler and Tools:
2202
2203 iASL: Fix a possible fault when using the Connection() operator. Fixes a 
2204 problem if the parent Field definition for the Connection operator refers 
2205 to an operation region that does not exist. ACPICA BZ 1064.
2206
2207 AcpiExec: Load of local test tables is now optional. The utility has the 
2208 capability to load some various tables to test features of ACPICA. 
2209 However, there are enough of them that the output of the utility became 
2210 confusing. With this change, only the required local tables are displayed 
2211 (RSDP, XSDT, etc.) along with the actual tables loaded via the command 
2212 line specification. This makes the default output simler and easier to 
2213 understand. The -el command line option restores the original behavior 
2214 for testing purposes.
2215
2216 AcpiExec: Added support for overlapping operation regions. This change 
2217 expands the simulation of operation regions by supporting regions that 
2218 overlap within the given address space. Supports SystemMemory and 
2219 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
2220
2221 AcpiExec: Added region handler support for PCI_Config and EC spaces. This 
2222 allows AcpiExec to simulate these address spaces, similar to the current 
2223 support for SystemMemory and SystemIO.
2224
2225 Debugger: Added new command to read/write/compare all namespace objects. 
2226 The command "test objects" will exercise the entire namespace by writing 
2227 new values to each data object, and ensuring that the write was 
2228 successful. The original value is then restored and verified.
2229
2230 Debugger: Added the "test predefined" command. This change makes this 
2231 test public and puts it under the new "test" command. The test executes 
2232 each and every predefined name within the current namespace.
2233
2234
2235 ----------------------------------------
2236 18 December 2013. Summary of changes for version 20131218:
2237
2238 Global note: The ACPI 5.0A specification was released this month. There 
2239 are no changes needed for ACPICA since this release of ACPI is an 
2240 errata/clarification release. The specification is available at 
2241 acpi.info. 
2242
2243
2244 1) ACPICA kernel-resident subsystem:
2245
2246 Added validation of the XSDT root table if it is present. Some older 
2247 platforms contain an XSDT that is ill-formed or otherwise invalid (such 
2248 as containing some or all entries that are NULL pointers). This change 
2249 adds a new function to validate the XSDT before actually using it. If the 
2250 XSDT is found to be invalid, ACPICA will now automatically fall back to 
2251 using the RSDT instead. Original implementation by Zhao Yakui. Ported to 
2252 ACPICA and enhanced by Lv Zheng and Bob Moore.
2253
2254 Added a runtime option to ignore the XSDT and force the use of the RSDT. 
2255 This change adds a runtime option that will force ACPICA to use the RSDT 
2256 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 
2257 requires that an XSDT be used instead of the RSDT, the XSDT has been 
2258 found to be corrupt or ill-formed on some machines. Lv Zheng.
2259
2260 Added a runtime option to favor 32-bit FADT register addresses over the 
2261 64-bit addresses. This change adds an option to favor 32-bit FADT 
2262 addresses when there is a conflict between the 32-bit and 64-bit versions 
2263 of the same register. The default behavior is to use the 64-bit version 
2264 in accordance with the ACPI specification. This can now be overridden via 
2265 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
2266
2267 During the change above, the internal "Convert FADT" and "Verify FADT" 
2268 functions have been merged to simplify the code, making it easier to 
2269 understand and maintain. ACPICA BZ 933.
2270
2271 Improve exception reporting and handling for GPE block installation. 
2272 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 
2273 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
2274
2275 Added helper macros to extract bus/segment numbers from the HEST table. 
2276 This change adds two macros to extract the encoded bus and segment 
2277 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 
2278 Betty Dall <betty.dall@hp.com>
2279
2280 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 
2281 by ACPICA. It is not a public macro, so it should have no effect on 
2282 existing OSV code. Lv Zheng.
2283
2284 Example Code and Data Size: These are the sizes for the OS-independent 
2285 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2286 debug version of the code includes the debug output trace mechanism and 
2287 has a much larger code and data size.
2288
2289   Current Release:
2290     Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
2291     Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
2292   Previous Release:
2293     Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
2294     Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
2295
2296
2297 2) iASL Compiler/Disassembler and Tools:
2298
2299 Disassembler: Improved pathname support for emitted External() 
2300 statements. This change adds full pathname support for external names 
2301 that have been resolved internally by the inclusion of additional ACPI 
2302 tables (via the iASL -e option). Without this change, the disassembler 
2303 can emit multiple externals for the same object, or it become confused 
2304 when the Scope() operator is used on an external object. Overall, greatly 
2305 improves the ability to actually recompile the emitted ASL code when 
2306 objects a referenced across multiple ACPI tables. Reported by Michael 
2307 Tsirkin (mst@redhat.com).
2308
2309 Tests/ASLTS: Updated functional control suite to execute with no errors. 
2310 David Box. Fixed several errors related to the testing of the interpreter 
2311 slack mode. Lv Zheng.
2312
2313 iASL: Added support to detect names that are declared within a control 
2314 method, but are unused (these are temporary names that are only valid 
2315 during the time the method is executing). A remark is issued for these 
2316 cases. ACPICA BZ 1022.
2317
2318 iASL: Added full support for the DBG2 table. Adds full disassembler, 
2319 table compiler, and template generator support for the DBG2 table (Debug 
2320 Port 2 table).
2321
2322 iASL: Added full support for the PCCT table, update the table definition. 
2323 Updates the PCCT table definition in the actbl3.h header and adds table 
2324 compiler and template generator support.
2325
2326 iASL: Added an option to emit only error messages (no warnings/remarks). 
2327 The -ve option will enable only error messages, warnings and remarks are 
2328 suppressed. This can simplify debugging when only the errors are 
2329 important, such as when an ACPI table is disassembled and there are many 
2330 warnings and remarks -- but only the actual errors are of real interest.
2331
2332 Example ACPICA code (source/tools/examples): Updated the example code so 
2333 that it builds to an actual working program, not just example code. Added 
2334 ACPI tables and execution of an example control method in the DSDT. Added 
2335 makefile support for Unix generation.
2336
2337
2338 ----------------------------------------
2339 15 November 2013. Summary of changes for version 20131115:
2340
2341 This release is available at https://acpica.org/downloads
2342
2343
2344 1) ACPICA kernel-resident subsystem:
2345
2346 Resource Manager: Fixed loop termination for the "get AML length" 
2347 function. The loop previously had an error termination on a NULL resource 
2348 pointer, which can never happen since the loop simply increments a valid 
2349 resource pointer. This fix changes the loop to terminate with an error on 
2350 an invalid end-of-buffer condition. The problem can be seen as an 
2351 infinite loop by callers to AcpiSetCurrentResources with an invalid or 
2352 corrupted resource descriptor, or a resource descriptor that is missing 
2353 an END_TAG descriptor. Reported by Dan Carpenter 
2354 <dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
2355
2356 Table unload and ACPICA termination: Delete all attached data objects 
2357 during namespace node deletion. This fix updates namespace node deletion 
2358 to delete the entire list of attached objects (attached via 
2359 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 
2360 1024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
2361
2362 ACPICA termination: Added support to delete all objects attached to the 
2363 root namespace node. This fix deletes any and all objects that have been 
2364 attached to the root node via AcpiAttachData. Previously, none of these 
2365 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
2366
2367 Debug output: Do not emit the function nesting level for the in-kernel 
2368 build. The nesting level is really only useful during a single-thread 
2369 execution. Therefore, only enable this output for the AcpiExec utility. 
2370 Also, only emit the thread ID when executing under AcpiExec (Context 
2371 switches are still always detected and a message is emitted). ACPICA BZ 
2372 972.
2373
2374 Example Code and Data Size: These are the sizes for the OS-independent 
2375 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2376 debug version of the code includes the debug output trace mechanism and 
2377 has a much larger code and data size.
2378
2379   Current Release:
2380     Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
2381     Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
2382   Previous Release:
2383     Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
2384     Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
2385
2386
2387 2) iASL Compiler/Disassembler and Tools:
2388
2389 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 
2390 correct portable POSIX header for terminal control functions.
2391
2392 Disassembler: Fixed control method invocation issues related to the use 
2393 of the CondRefOf() operator. The problem is seen in the disassembly where 
2394 control method invocations may not be disassembled properly if the 
2395 control method name has been used previously as an argument to CondRefOf. 
2396 The solution is to not attempt to emit an external declaration for the 
2397 CondRefOf target (it is not necessary in the first place). This prevents 
2398 disassembler object type confusion. ACPICA BZ 988.
2399
2400 Unix Makefiles: Added an option to disable compiler optimizations and the 
2401 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 
2402 with optimizations (reportedly, gcc 4.4 for example). This change adds a 
2403 command line option for make (NOOPT) that disables all compiler 
2404 optimizations and the _FORTIFY_SOURCE compiler flag. The default 
2405 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 
2406 1034. Lv Zheng, Bob Moore.
2407
2408 Tests/ASLTS: Added options to specify individual test cases and modes. 
2409 This allows testers running aslts.sh to optionally specify individual 
2410 test modes and test cases. Also added an option to disable the forced 
2411 generation of the ACPICA tools from source if desired. Lv Zheng.
2412
2413 ----------------------------------------
2414 27 September 2013. Summary of changes for version 20130927:
2415
2416 This release is available at https://acpica.org/downloads
2417
2418
2419 1) ACPICA kernel-resident subsystem:
2420
2421 Fixed a problem with store operations to reference objects. This change 
2422 fixes a problem where a Store operation to an ArgX object that contained 
2423
2424 reference to a field object did not complete the automatic dereference 
2425 and 
2426 then write to the actual field object. Instead, the object type of the 
2427 field object was inadvertently changed to match the type of the source 
2428 operand. The new behavior will actually write to the field object (buffer 
2429 field or field unit), thus matching the correct ACPI-defined behavior.
2430
2431 Implemented support to allow the host to redefine individual OSL 
2432 prototypes. This change enables the host to redefine OSL prototypes found 
2433 in the acpiosxf.h file. This allows the host to implement OSL interfaces 
2434 with a macro or inlined function. Further, it allows the host to add any 
2435 additional required modifiers such as __iomem, __init, __exit, etc., as 
2436 necessary on a per-interface basis. Enables maximum flexibility for the 
2437 OSL interfaces. Lv Zheng.
2438
2439 Hardcoded the access width for the FADT-defined reset register. The ACPI 
2440 specification requires the reset register width to be 8 bits. ACPICA now 
2441 hardcodes the width to 8 and ignores the FADT width value. This provides 
2442 compatibility with other ACPI implementations that have allowed BIOS code 
2443 with bad register width values to go unnoticed. Matthew Garett, Bob 
2444 Moore, 
2445 Lv Zheng.
2446
2447 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 
2448 used 
2449 in the OSL header (acpiosxf). The change modifies the position of this 
2450 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 
2451 build issues if the OSL defines the implementation of the interface to be 
2452 an inline stub function. Lv Zheng.
2453
2454 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 
2455 initialization interfaces. This change adds a new macro for the main init 
2456 and terminate external interfaces in order to support hosts that require 
2457 additional or different processing for these functions. Changed from 
2458 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 
2459 Zheng, Bob Moore.
2460
2461 Cleaned up the memory allocation macros for configurability. In the 
2462 common 
2463 case, the ACPI_ALLOCATE and related macros now resolve directly to their 
2464 respective AcpiOs* OSL interfaces. Two options:
2465 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 
2466 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
2467 2) For AcpiExec (and for debugging), the macros can optionally be 
2468 resolved 
2469 to the local ACPICA interfaces that track each allocation (local tracking 
2470 is used to immediately detect memory leaks).
2471 Lv Zheng.
2472
2473 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 
2474 to predefine this macro to either TRUE or FALSE during the system build.
2475
2476 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
2477
2478 Example Code and Data Size: These are the sizes for the OS-independent 
2479 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2480 debug version of the code includes the debug output trace mechanism and 
2481 has a much larger code and data size.
2482
2483   Current Release:
2484     Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
2485     Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
2486   Previous Release:
2487     Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
2488     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2489
2490
2491 2) iASL Compiler/Disassembler and Tools:
2492
2493 iASL: Implemented wildcard support for the -e option. This simplifies use 
2494 when there are many SSDTs that must be included to resolve external 
2495 method 
2496 declarations. ACPICA BZ 1041. Example:
2497     iasl -e ssdt*.dat -d dsdt.dat
2498
2499 AcpiExec: Add history/line-editing for Unix/Linux systems. This change 
2500 adds a portable module that implements full history and limited line 
2501 editing for Unix and Linux systems. It does not use readline() due to 
2502 portability issues. Instead it uses the POSIX termio interface to put the 
2503 terminal in raw input mode so that the various special keys can be 
2504 trapped 
2505 (such as up/down-arrow for history support and left/right-arrow for line 
2506 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
2507
2508 AcpiXtract: Add support to handle (ignore) "empty" lines containing only 
2509 one or more spaces. This provides compatible with early or different 
2510 versions of the AcpiDump utility. ACPICA BZ 1044.
2511
2512 AcpiDump: Do not ignore tables that contain only an ACPI table header. 
2513 Apparently, some BIOSs create SSDTs that contain an ACPI table header but 
2514 no other data. This change adds support to dump these tables. Any tables 
2515 shorter than the length of an ACPI table header remain in error (an error 
2516 message is emitted). Reported by Yi Li.
2517
2518 Debugger: Echo actual command along with the "unknown command" message.
2519
2520 ----------------------------------------
2521 23 August 2013. Summary of changes for version 20130823:
2522
2523 1) ACPICA kernel-resident subsystem:
2524
2525 Implemented support for host-installed System Control Interrupt (SCI) 
2526 handlers. Certain ACPI functionality requires the host to handle raw 
2527 SCIs. For example, the "SCI Doorbell" that is defined for memory power 
2528 state support requires the host device driver to handle SCIs to examine 
2529 if the doorbell has been activated. Multiple SCI handlers can be 
2530 installed to allow for future expansion. New external interfaces are 
2531 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 
2532 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
2533
2534 Operation region support: Never locally free the handler "context" 
2535 pointer. This change removes some dangerous code that attempts to free 
2536 the handler context pointer in some (rare) circumstances. The owner of 
2537 the handler owns this pointer and the ACPICA code should never touch it. 
2538 Although not seen to be an issue in any kernel, it did show up as a 
2539 problem (fault) under AcpiExec. Also, set the internal storage field for 
2540 the context pointer to zero when the region is deactivated, simply for 
2541 sanity. David Box. ACPICA BZ 1039.
2542
2543 AcpiRead: On error, do not modify the return value target location. If an 
2544 error happens in the middle of a split 32/32 64-bit I/O operation, do not 
2545 modify the target of the return value pointer. Makes the code consistent 
2546 with the rest of ACPICA. Bjorn Helgaas.
2547
2548 Example Code and Data Size: These are the sizes for the OS-independent 
2549 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2550 debug version of the code includes the debug output trace mechanism and 
2551 has a much larger code and data size.
2552
2553   Current Release:
2554     Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
2555     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2556   Previous Release:
2557     Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
2558     Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
2559
2560
2561 2) iASL Compiler/Disassembler and Tools:
2562
2563 AcpiDump: Implemented several new features and fixed some problems:
2564 1) Added support to dump the RSDP, RSDT, and XSDT tables.
2565 2) Added support for multiple table instances (SSDT, UEFI).
2566 3) Added option to dump "customized" (overridden) tables (-c).
2567 4) Fixed a problem where some table filenames were improperly 
2568 constructed.
2569 5) Improved some error messages, removed some unnecessary messages.
2570
2571 iASL: Implemented additional support for disassembly of ACPI tables that 
2572 contain invocations of external control methods. The -fe<file> option 
2573 allows the import of a file that specifies the external methods along 
2574 with the required number of arguments for each -- allowing for the 
2575 correct disassembly of the table. This is a workaround for a limitation 
2576 of AML code where the disassembler often cannot determine the number of 
2577 arguments required for an external control method and generates incorrect 
2578 ASL code. See the iASL reference for details. ACPICA BZ 1030.
2579
2580 Debugger: Implemented a new command (paths) that displays the full 
2581 pathnames (namepaths) and object types of all objects in the namespace. 
2582 This is an alternative to the namespace command.
2583
2584 Debugger: Implemented a new command (sci) that invokes the SCI dispatch 
2585 mechanism and any installed handlers.
2586
2587 iASL: Fixed a possible segfault for "too many parent prefixes" condition. 
2588 This can occur if there are too many parent prefixes in a namepath (for 
2589 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
2590
2591 Application OSLs: Set the return value for the PCI read functions. These 
2592 functions simply return AE_OK, but should set the return value to zero 
2593 also. This change implements this. ACPICA BZ 1038.
2594
2595 Debugger: Prevent possible command line buffer overflow. Increase the 
2596 size of a couple of the debugger line buffers, and ensure that overflow 
2597 cannot happen. ACPICA BZ 1037.
2598
2599 iASL: Changed to abort immediately on serious errors during the parsing 
2600 phase. Due to the nature of ASL, there is no point in attempting to 
2601 compile these types of errors, and they typically end up causing a 
2602 cascade of hundreds of errors which obscure the original problem.
2603
2604 ----------------------------------------
2605 25 July 2013. Summary of changes for version 20130725:
2606
2607 1) ACPICA kernel-resident subsystem:
2608
2609 Fixed a problem with the DerefOf operator where references to FieldUnits 
2610 and BufferFields incorrectly returned the parent object, not the actual 
2611 value of the object. After this change, a dereference of a FieldUnit 
2612 reference results in a read operation on the field to get the value, and 
2613 likewise, the appropriate BufferField value is extracted from the target 
2614 buffer.
2615
2616 Fixed a problem where the _WAK method could cause a fault under these 
2617 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 
2618 method returned no value. The problem is rarely seen because most kernels 
2619 run ACPICA in slack mode.
2620
2621 For the DerefOf operator, a fatal error now results if an attempt is made 
2622 to dereference a reference (created by the Index operator) to a NULL 
2623 package element. Provides compatibility with other ACPI implementations, 
2624 and this behavior will be added to a future version of the ACPI 
2625 specification.
2626
2627 The ACPI Power Management Timer (defined in the FADT) is now optional. 
2628 This provides compatibility with other ACPI implementations and will 
2629 appear in the next version of the ACPI specification. If there is no PM 
2630 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 
2631 zero in the FADT indicates no PM timer.
2632
2633 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 
2634 allows the host to globally enable/disable all vendor strings, all 
2635 feature strings, or both. Intended to be primarily used for debugging 
2636 purposes only. Lv Zheng.
2637
2638 Expose the collected _OSI data to the host via a global variable. This 
2639 data tracks the highest level vendor ID that has been invoked by the BIOS 
2640 so that the host (and potentially ACPICA itself) can change behaviors 
2641 based upon the age of the BIOS.
2642
2643 Example Code and Data Size: These are the sizes for the OS-independent 
2644 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2645 debug version of the code includes the debug output trace mechanism and 
2646 has a much larger code and data size.
2647
2648   Current Release:
2649     Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
2650     Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2651   Previous Release:
2652     Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
2653     Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
2654
2655
2656 2) iASL Compiler/Disassembler and Tools:
2657
2658 iASL: Created the following enhancements for the -so option (create 
2659 offset table):
2660 1)Add offsets for the last nameseg in each namepath for every supported 
2661 object type
2662 2)Add support for Processor, Device, Thermal Zone, and Scope objects
2663 3)Add the actual AML opcode for the parent object of every supported 
2664 object type
2665 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
2666
2667 Disassembler: Emit all unresolved external symbols in a single block. 
2668 These are external references to control methods that could not be 
2669 resolved, and thus, the disassembler had to make a guess at the number of 
2670 arguments to parse.
2671
2672 iASL: The argument to the -T option (create table template) is now 
2673 optional. If not specified, the default table is a DSDT, typically the 
2674 most common case.
2675
2676 ----------------------------------------
2677 26 June 2013. Summary of changes for version 20130626:
2678
2679 1) ACPICA kernel-resident subsystem:
2680
2681 Fixed an issue with runtime repair of the _CST object. Null or invalid 
2682 elements were not always removed properly. Lv Zheng. 
2683
2684 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 
2685 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 
2686 the maximum number of GPEs is 1016. Use of multiple GPE block devices 
2687 makes the system-wide number of GPEs essentially unlimited.
2688
2689 Example Code and Data Size: These are the sizes for the OS-independent 
2690 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2691 debug version of the code includes the debug output trace mechanism and 
2692 has a much larger code and data size.
2693
2694   Current Release:
2695     Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
2696     Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
2697   Previous Release:
2698     Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
2699     Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
2700
2701
2702 2) iASL Compiler/Disassembler and Tools:
2703
2704 Portable AcpiDump: Implemented full support for the Linux and FreeBSD 
2705 hosts. Now supports Linux, FreeBSD, and Windows.
2706
2707 Disassembler: Added some missing types for the HEST and EINJ tables: "Set 
2708 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
2709
2710 iASL/Preprocessor: Implemented full support for nested 
2711 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
2712
2713 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 
2714 max. The original purpose of this constraint was to limit the amount of 
2715 debug output. However, the string function in question (UtPrintString) is 
2716 now used for the disassembler also, where 256 bytes is insufficient. 
2717 Reported by RehabMan@GitHub.
2718
2719 iASL/DataTables: Fixed some problems and issues with compilation of DMAR 
2720 tables. ACPICA BZ 999. Lv Zheng.
2721
2722 iASL: Fixed a couple of error exit issues that could result in a "Could 
2723 not delete <file>" message during ASL compilation.
2724
2725 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 
2726 the actual signatures for these tables are "FACP" and "APIC", 
2727 respectively.
2728
2729 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 
2730 tables are allowed to have multiple instances.
2731
2732 ----------------------------------------
2733 17 May 2013. Summary of changes for version 20130517:
2734
2735 1) ACPICA kernel-resident subsystem:
2736
2737 Fixed a regression introduced in version 20130328 for _INI methods. This 
2738 change fixes a problem introduced in 20130328 where _INI methods are no 
2739 longer executed properly because of a memory block that was not 
2740 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 
2741 <tomasz.nowicki@linaro.org>.
2742
2743 Fixed a possible problem with the new extended sleep registers in the 
2744 ACPI 
2745 5.0 FADT. Do not use these registers (even if populated) unless the HW-
2746 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 
2747 1020. Lv Zheng.
2748
2749 Implemented return value repair code for _CST predefined objects: Sort 
2750 the 
2751 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
2752
2753 Implemented a debug-only option to disable loading of SSDTs from the 
2754 RSDT/XSDT during ACPICA initialization. This can be useful for debugging 
2755 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 
2756 acglobal.h - ACPICA BZ 1005. Lv Zheng.
2757
2758 Fixed some issues in the ACPICA initialization and termination code: 
2759 Tomasz Nowicki <tomasz.nowicki@linaro.org>
2760 1) Clear events initialized flag upon event component termination. ACPICA 
2761 BZ 1013.
2762 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 
2763 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
2764 4) Clear debug buffer global on termination to prevent possible multiple 
2765 delete. ACPICA BZ 1010.
2766
2767 Standardized all switch() blocks across the entire source base. After 
2768 many 
2769 years, different formatting for switch() had crept in. This change makes 
2770 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
2771
2772 Split some files to enhance ACPICA modularity and configurability:
2773 1) Split buffer dump routines into utilities/utbuffer.c
2774 2) Split internal error message routines into utilities/uterror.c
2775 3) Split table print utilities into tables/tbprint.c
2776 4) Split iASL command-line option processing into asloptions.c
2777
2778 Makefile enhancements:
2779 1) Support for all new files above.
2780 2) Abort make on errors from any subcomponent. Chao Guan.
2781 3) Add build support for Apple Mac OS X. Liang Qi.
2782
2783 Example Code and Data Size: These are the sizes for the OS-independent 
2784 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2785 debug version of the code includes the debug output trace mechanism and 
2786 has a much larger code and data size.
2787
2788   Current Release:
2789     Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
2790     Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
2791   Previous Release:
2792     Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
2793     Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
2794
2795
2796 2) iASL Compiler/Disassembler and Tools:
2797
2798 New utility: Implemented an easily portable version of the acpidump 
2799 utility to extract ACPI tables from the system (or a file) in an ASCII 
2800 hex 
2801 dump format. The top-level code implements the various command line 
2802 options, file I/O, and table dump routines. To port to a new host, only 
2803 three functions need to be implemented to get tables -- since this 
2804 functionality is OS-dependent. See the tools/acpidump/apmain.c module and 
2805 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
2806 1) The Windows version obtains the ACPI tables from the Registry.
2807 2) The Linux version is under development.
2808 3) Other hosts - If an OS-dependent module is submitted, it will be 
2809 distributed with ACPICA.
2810
2811 iASL: Fixed a regression for -D preprocessor option (define symbol). A 
2812 restructuring/change to the initialization sequence caused this option to 
2813 no longer work properly.
2814
2815 iASL: Implemented a mechanism to disable specific warnings and remarks. 
2816 Adds a new command line option, "-vw <messageid> as well as "#pragma 
2817 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
2818
2819 iASL: Fix for too-strict package object validation. The package object 
2820 validation for return values from the predefined names is a bit too 
2821 strict, it does not allow names references within the package (which will 
2822 be resolved at runtime.) These types of references cannot be validated at 
2823 compile time. This change ignores named references within package objects 
2824 for names that return or define static packages.
2825
2826 Debugger: Fixed the 80-character command line limitation for the History 
2827 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
2828
2829 iASL: Added control method and package support for the -so option 
2830 (generates AML offset table for BIOS support.)
2831
2832 iASL: issue a remark if a non-serialized method creates named objects. If 
2833 a thread blocks within the method for any reason, and another thread 
2834 enters the method, the method will fail because an attempt will be made 
2835 to 
2836 create the same (named) object twice. In this case, issue a remark that 
2837 the method should be marked serialized. NOTE: may become a warning later. 
2838 ACPICA BZ 909.
2839
2840 ----------------------------------------
2841 18 April 2013. Summary of changes for version 20130418:
2842
2843 1) ACPICA kernel-resident subsystem:
2844
2845 Fixed a possible buffer overrun during some rare but specific field unit 
2846 read operations. This overrun can only happen if the DSDT version is 1 -- 
2847 meaning that all AML integers are 32 bits -- and the field length is 
2848 between 33 and 55 bits long. During the read, an internal buffer object 
2849 is 
2850 created for the field unit because the field is larger than an integer 
2851 (32 
2852 bits). However, in this case, the buffer will be incorrectly written 
2853 beyond the end because the buffer length is less than the internal 
2854 minimum 
2855 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 
2856 long, but a full 8 bytes will be written.
2857
2858 Updated the Embedded Controller "orphan" _REG method support. This refers 
2859 to _REG methods under the EC device that have no corresponding operation 
2860 region. This is allowed by the ACPI specification. This update removes a 
2861 dependency on the existence an ECDT table. It will execute an orphan _REG 
2862 method as long as the operation region handler for the EC is installed at 
2863 the EC device node and not the namespace root. Rui Zhang (original 
2864 update), Bob Moore (update/integrate).
2865
2866 Implemented run-time argument typechecking for all predefined ACPI names 
2867 (_STA, _BIF, etc.) This change performs object typechecking on all 
2868 incoming arguments for all predefined names executed via 
2869 AcpiEvaluateObject. This ensures that ACPI-related device drivers are 
2870 passing correct object types as well as the correct number of arguments 
2871 (therefore identifying any issues immediately). Also, the ASL/namespace 
2872 definition of the predefined name is checked against the ACPI 
2873 specification for the proper argument count. Adds one new file, 
2874 nsarguments.c
2875
2876 Changed an exception code for the ASL UnLoad() operator. Changed the 
2877 exception code for the case where the input DdbHandle is invalid, from 
2878 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
2879
2880 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 
2881 global makefile. The use of this flag causes compiler errors on earlier 
2882 versions of GCC, so it has been removed for compatibility.
2883
2884 Miscellaneous cleanup:
2885 1) Removed some unused/obsolete macros
2886 2) Fixed a possible memory leak in the _OSI support
2887 3) Removed an unused variable in the predefined name support
2888 4) Windows OSL: remove obsolete reference to a memory list field
2889
2890 Example Code and Data Size: These are the sizes for the OS-independent 
2891 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2892 debug version of the code includes the debug output trace mechanism and 
2893 has a much larger code and data size.
2894
2895   Current Release:
2896     Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
2897     Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
2898   Previous Release:
2899     Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
2900     Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
2901
2902
2903 2) iASL Compiler/Disassembler and Tools:
2904
2905 AcpiExec: Added installation of a handler for the SystemCMOS address 
2906 space. This prevents control method abort if a method accesses this 
2907 space.
2908
2909 AcpiExec: Added support for multiple EC devices, and now install EC 
2910 operation region handler(s) at the actual EC device instead of the 
2911 namespace root. This reflects the typical behavior of host operating 
2912 systems.
2913
2914 AcpiExec: Updated to ensure that all operation region handlers are 
2915 installed before the _REG methods are executed. This prevents a _REG 
2916 method from aborting if it accesses an address space has no handler. 
2917 AcpiExec installs a handler for every possible address space.
2918
2919 Debugger: Enhanced the "handlers" command to display non-root handlers. 
2920 This change enhances the handlers command to display handlers associated 
2921 with individual devices throughout the namespace, in addition to the 
2922 currently supported display of handlers associated with the root 
2923 namespace 
2924 node.
2925
2926 ASL Test Suite: Several test suite errors have been identified and 
2927 resolved, reducing the total error count during execution. Chao Guan.
2928
2929 ----------------------------------------
2930 28 March 2013. Summary of changes for version 20130328:
2931
2932 1) ACPICA kernel-resident subsystem:
2933
2934 Fixed several possible race conditions with the internal object reference 
2935 counting mechanism. Some of the external ACPICA interfaces update object 
2936 reference counts without holding the interpreter or namespace lock. This 
2937 change adds a spinlock to protect reference count updates on the internal 
2938 ACPICA objects. Reported by and with assistance from Andriy Gapon 
2939 (avg@FreeBSD.org).
2940
2941 FADT support: Removed an extraneous warning for very large GPE register 
2942 sets. This change removes a size mismatch warning if the legacy length 
2943 field for a GPE register set is larger than the 64-bit GAS structure can 
2944 accommodate. GPE register sets can be larger than the 255-bit width 
2945 limitation of the GAS structure. Linn Crosetto (linn@hp.com).
2946
2947 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 
2948 return from this interface. Handles a possible timeout case if 
2949 ACPI_WAIT_FOREVER is modified by the host to be a value less than 
2950 "forever". Jung-uk Kim.
2951
2952 Predefined name support: Add allowed/required argument type information 
2953 to 
2954 the master predefined info table. This change adds the infrastructure to 
2955 enable typechecking on incoming arguments for all predefined 
2956 methods/objects. It does not actually contain the code that will fully 
2957 utilize this information, this is still under development. Also condenses 
2958 some duplicate code for the predefined names into a new module, 
2959 utilities/utpredef.c
2960
2961 Example Code and Data Size: These are the sizes for the OS-independent 
2962 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2963 debug version of the code includes the debug output trace mechanism and 
2964 has a much larger code and data size.
2965
2966   Previous Release:
2967     Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
2968     Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
2969   Current Release:
2970     Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
2971     Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
2972
2973
2974 2) iASL Compiler/Disassembler and Tools:
2975
2976 iASL: Implemented a new option to simplify the development of ACPI-
2977 related 
2978 BIOS code. Adds support for a new "offset table" output file. The -so 
2979 option will create a C table containing the AML table offsets of various 
2980 named objects in the namespace so that BIOS code can modify them easily 
2981 at 
2982 boot time. This can simplify BIOS runtime code by eliminating expensive 
2983 searches for "magic values", enhancing boot times and adding greater 
2984 reliability. With assistance from Lee Hamel.
2985
2986 iASL: Allow additional predefined names to return zero-length packages. 
2987 Now, all predefined names that are defined by the ACPI specification to 
2988 return a "variable-length package of packages" are allowed to return a 
2989 zero length top-level package. This allows the BIOS to tell the host that 
2990 the requested feature is not supported, and supports existing BIOS/ASL 
2991 code and practices.
2992
2993 iASL: Changed the "result not used" warning to an error. This is the case 
2994 where an ASL operator is effectively a NOOP because the result of the 
2995 operation is not stored anywhere. For example:
2996     Add (4, Local0)
2997 There is no target (missing 3rd argument), nor is the function return 
2998 value used. This is potentially a very serious problem -- since the code 
2999 was probably intended to do something, but for whatever reason, the value 
3000 was not stored. Therefore, this issue has been upgraded from a warning to 
3001 an error.
3002
3003 AcpiHelp: Added allowable/required argument types to the predefined names 
3004 info display. This feature utilizes the recent update to the predefined 
3005 names table (above).
3006
3007 ----------------------------------------
3008 14 February 2013. Summary of changes for version 20130214:
3009
3010 1) ACPICA Kernel-resident Subsystem:
3011
3012 Fixed a possible regression on some hosts: Reinstated the safe return 
3013 macros (return_ACPI_STATUS, etc.) that ensure that the argument is 
3014 evaluated only once. Although these macros are not needed for the ACPICA 
3015 code itself, they are often used by ACPI-related host device drivers 
3016 where 
3017 the safe feature may be necessary.
3018
3019 Fixed several issues related to the ACPI 5.0 reduced hardware support 
3020 (SOC): Now ensure that if the platform declares itself as hardware-
3021 reduced 
3022 via the FADT, the following functions become NOOPs (and always return 
3023 AE_OK) because ACPI is always enabled by definition on these machines:
3024   AcpiEnable
3025   AcpiDisable
3026   AcpiHwGetMode
3027   AcpiHwSetMode
3028
3029 Dynamic Object Repair: Implemented additional runtime repairs for 
3030 predefined name return values. Both of these repairs can simplify code in 
3031 the related device drivers that invoke these methods:
3032 1) For the _STR and _MLS names, automatically repair/convert an ASCII 
3033 string to a Unicode buffer. 
3034 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 
3035
3036 lone end tag descriptor in the following cases: A Return(0) was executed, 
3037 a null buffer was returned, or no object at all was returned (non-slack 
3038 mode only). Adds a new file, nsconvert.c
3039 ACPICA BZ 998. Bob Moore, Lv Zheng.
3040
3041 Resource Manager: Added additional code to prevent possible infinite 
3042 loops 
3043 while traversing corrupted or ill-formed resource template buffers. Check 
3044 for zero-length resource descriptors in all code that loops through 
3045 resource templates (the length field is used to index through the 
3046 template). This change also hardens the external AcpiWalkResources and 
3047 AcpiWalkResourceBuffer interfaces.
3048
3049 Local Cache Manager: Enhanced the main data structure to eliminate an 
3050 unnecessary mechanism to access the next object in the list. Actually 
3051 provides a small performance enhancement for hosts that use the local 
3052 ACPICA cache manager. Jung-uk Kim.
3053
3054 Example Code and Data Size: These are the sizes for the OS-independent 
3055 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3056 debug version of the code includes the debug output trace mechanism and 
3057 has a much larger code and data size.
3058
3059   Previous Release:
3060     Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
3061     Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
3062   Current Release:
3063     Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
3064     Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
3065
3066
3067 2) iASL Compiler/Disassembler and Tools:
3068
3069 iASL/Disassembler: Fixed several issues with the definition of the ACPI 
3070 5.0 RASF table (RAS Feature Table). This change incorporates late changes 
3071 that were made to the ACPI 5.0 specification.
3072
3073 iASL/Disassembler: Added full support for the following new ACPI tables:
3074   1) The MTMR table (MID Timer Table)
3075   2) The VRTC table (Virtual Real Time Clock Table).
3076 Includes header file, disassembler, table compiler, and template support 
3077 for both tables.
3078
3079 iASL: Implemented compile-time validation of package objects returned by 
3080 predefined names. This new feature validates static package objects 
3081 returned by the various predefined names defined to return packages. Both 
3082 object types and package lengths are validated, for both parent packages 
3083 and sub-packages, if any. The code is similar in structure and behavior 
3084 to 
3085 the runtime repair mechanism within the AML interpreter and uses the 
3086 existing predefined name information table. Adds a new file, aslprepkg.c. 
3087 ACPICA BZ 938.
3088
3089 iASL: Implemented auto-detection of binary ACPI tables for disassembly. 
3090 This feature detects a binary file with a valid ACPI table header and 
3091 invokes the disassembler automatically. Eliminates the need to 
3092 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
3093
3094 iASL/Disassembler: Added several warnings for the case where there are 
3095 unresolved control methods during the disassembly. This can potentially 
3096 cause errors when the output file is compiled, because the disassembler 
3097 assumes zero method arguments in these cases (it cannot determine the 
3098 actual number of arguments without resolution/definition of the method).
3099
3100 Debugger: Added support to display all resources with a single command. 
3101 Invocation of the resources command with no arguments will now display 
3102 all 
3103 resources within the current namespace.
3104
3105 AcpiHelp: Added descriptive text for each ACPICA exception code displayed 
3106 via the -e option.
3107
3108 ----------------------------------------
3109 17 January 2013. Summary of changes for version 20130117:
3110
3111 1) ACPICA Kernel-resident Subsystem:
3112
3113 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 
3114 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 
3115 objects to return a package containing one integer, most BIOS code 
3116 returns 
3117 two integers and the previous code reflects that. However, we also need 
3118 to 
3119 support BIOS code that actually implements to the ACPI spec, and this 
3120 change reflects this.
3121
3122 Fixed two issues with the ACPI_DEBUG_PRINT macros:
3123 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 
3124 C compilers that require this support.
3125 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 
3126 ACPI_DEBUG is already used by many of the various hosts.
3127
3128 Updated all ACPICA copyrights and signons to 2013. Added the 2013 
3129 copyright to all module headers and signons, including the standard Linux 
3130 header. This affects virtually every file in the ACPICA core subsystem, 
3131 iASL compiler, all ACPICA utilities, and the test suites.
3132
3133 Example Code and Data Size: These are the sizes for the OS-independent 
3134 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3135 debug version of the code includes the debug output trace mechanism and 
3136 has a much larger code and data size.
3137
3138   Previous Release:
3139     Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
3140     Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
3141   Current Release:
3142     Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
3143     Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
3144
3145
3146 2) iASL Compiler/Disassembler and Tools:
3147
3148 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 
3149 prevent a possible fault on some hosts. Some C libraries modify the arg 
3150 pointer parameter to vfprintf making it difficult to call it twice in the 
3151 AcpiOsVprintf function. Use a local buffer to workaround this issue. This 
3152 does not affect the Windows OSL since the Win C library does not modify 
3153 the arg pointer. Chao Guan, Bob Moore.
3154
3155 iASL: Fixed a possible infinite loop when the maximum error count is 
3156 reached. If an output file other than the .AML file is specified (such as 
3157 a listing file), and the maximum number of errors is reached, do not 
3158 attempt to flush data to the output file(s) as the compiler is aborting. 
3159 This can cause an infinite loop as the max error count code essentially 
3160 keeps calling itself.
3161
3162 iASL/Disassembler: Added an option (-in) to ignore NOOP 
3163 opcodes/operators. 
3164 Implemented for both the compiler and the disassembler. Often, the NOOP 
3165 opcode is used as padding for packages that are changed dynamically by 
3166 the 
3167 BIOS. When disassembled and recompiled, these NOOPs will cause syntax 
3168 errors. This option causes the disassembler to ignore all NOOP opcodes 
3169 (0xA3), and it also causes the compiler to ignore all ASL source code 
3170 NOOP 
3171 statements as well.
3172
3173 Debugger: Enhanced the Sleep command to execute all sleep states. This 
3174 change allows Sleep to be invoked with no arguments and causes the 
3175 debugger to execute all of the sleep states, 0-5, automatically.
3176
3177 ----------------------------------------
3178 20 December 2012. Summary of changes for version 20121220:
3179
3180 1) ACPICA Kernel-resident Subsystem:
3181
3182 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 
3183 alternate entry point for AcpiWalkResources and improves the usability of 
3184 the resource manager by accepting as input a buffer containing the output 
3185 of either a _CRS, _PRS, or _AEI method. The key functionality is that the 
3186 input buffer is not deleted by this interface so that it can be used by 
3187 the host later. See the ACPICA reference for details.
3188
3189 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 
3190 (DSDT version < 2). The constant will be truncated and this warning 
3191 reflects that behavior.
3192
3193 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 
3194 ExtendedInterrupt, and GpioInt descriptors. This change adds support to 
3195 both get and set the new wake bit in these descriptors, separately from 
3196 the existing share bit. Reported by Aaron Lu.
3197
3198 Interpreter: Fix Store() when an implicit conversion is not possible. For 
3199 example, in the cases such as a store of a string to an existing package 
3200 object, implement the store as a CopyObject(). This is a small departure 
3201 from the ACPI specification which states that the control method should 
3202 be 
3203 aborted in this case. However, the ASLTS suite depends on this behavior.
3204
3205 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 
3206 macros: check if debug output is currently enabled as soon as possible to 
3207 minimize performance impact if debug is in fact not enabled.
3208
3209 Source code restructuring: Cleanup to improve modularity. The following 
3210 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 
3211 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 
3212 Associated makefiles and project files have been updated.
3213
3214 Changed an exception code for LoadTable operator. For the case where one 
3215 of the input strings is too long, change the returned exception code from 
3216 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
3217
3218 Fixed a possible memory leak in dispatcher error path. On error, delete 
3219 the mutex object created during method mutex creation. Reported by 
3220 tim.gardner@canonical.com.
3221
3222 Example Code and Data Size: These are the sizes for the OS-independent 
3223 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3224 debug version of the code includes the debug output trace mechanism and 
3225 has a much larger code and data size.
3226
3227   Previous Release:
3228     Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
3229     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3230   Current Release:
3231     Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
3232     Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
3233
3234
3235 2) iASL Compiler/Disassembler and Tools:
3236
3237 iASL: Disallow a method call as argument to the ObjectType ASL operator. 
3238 This change tracks an errata to the ACPI 5.0 document. The AML grammar 
3239 will not allow the interpreter to differentiate between a method and a 
3240 method invocation when these are used as an argument to the ObjectType 
3241 operator. The ACPI specification change is to disallow a method 
3242 invocation 
3243 (UserTerm) for the ObjectType operator.
3244
3245 Finish support for the TPM2 and CSRT tables in the headers, table 
3246 compiler, and disassembler.
3247
3248 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 
3249 always expires immediately if the semaphore is not available. The 
3250 original 
3251 code was using a relative-time timeout, but sem_timedwait requires the 
3252 use 
3253 of an absolute time.
3254
3255 iASL: Added a remark if the Timer() operator is used within a 32-bit 
3256 table. This operator returns a 64-bit time value that will be truncated 
3257 within a 32-bit table.
3258
3259 iASL Source code restructuring: Cleanup to improve modularity. The 
3260 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 
3261 aslmethod.c, and aslfileio.c. Associated makefiles and project files have 
3262 been updated.
3263
3264
3265 ----------------------------------------
3266 14 November 2012. Summary of changes for version 20121114:
3267
3268 1) ACPICA Kernel-resident Subsystem:
3269
3270 Implemented a performance enhancement for ACPI/AML Package objects. This 
3271 change greatly increases the performance of Package objects within the 
3272 interpreter. It changes the processing of reference counts for packages 
3273 by 
3274 optimizing for the most common case where the package sub-objects are 
3275 either Integers, Strings, or Buffers. Increases the overall performance 
3276 of 
3277 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 
3278 2X.) 
3279 Chao Guan. ACPICA BZ 943.
3280
3281 Implemented and deployed common macros to extract flag bits from resource 
3282 descriptors. Improves readability and maintainability of the code. Fixes 
3283
3284 problem with the UART serial bus descriptor for the number of data bits 
3285 flags (was incorrectly 2 bits, should be 3).
3286
3287 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 
3288 of the macros and changed the SETx macros to the style of (destination, 
3289 source). Also added ACPI_CASTx companion macros. Lv Zheng.
3290
3291 Example Code and Data Size: These are the sizes for the OS-independent 
3292 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3293 debug version of the code includes the debug output trace mechanism and 
3294 has a much larger code and data size.
3295
3296   Previous Release:
3297     Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
3298     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3299   Current Release:
3300     Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
3301     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3302
3303
3304 2) iASL Compiler/Disassembler and Tools:
3305
3306 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 
3307 adds the ShareAndWake and ExclusiveAndWake flags which were added to the 
3308 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
3309
3310 Disassembler: Fixed a problem with external declaration generation. Fixes 
3311 a problem where an incorrect pathname could be generated for an external 
3312 declaration if the original reference to the object includes leading 
3313 carats (^). ACPICA BZ 984.
3314
3315 Debugger: Completed a major update for the Disassemble<method> command. 
3316 This command was out-of-date and did not properly disassemble control 
3317 methods that had any reasonable complexity. This fix brings the command 
3318 up 
3319 to the same level as the rest of the disassembler. Adds one new file, 
3320 dmdeferred.c, which is existing code that is now common with the main 
3321 disassembler and the debugger disassemble command. ACPICA MZ 978.
3322
3323 iASL: Moved the parser entry prototype to avoid a duplicate declaration. 
3324 Newer versions of Bison emit this prototype, so moved the prototype out 
3325 of 
3326 the iASL header to where it is actually used in order to avoid a 
3327 duplicate 
3328 declaration.
3329
3330 iASL/Tools: Standardized use of the stream I/O functions:
3331   1) Ensure check for I/O error after every fopen/fread/fwrite
3332   2) Ensure proper order of size/count arguments for fread/fwrite
3333   3) Use test of (Actual != Requested) after all fwrite, and most fread
3334   4) Standardize I/O error messages
3335 Improves reliability and maintainability of the code. Bob Moore, Lv 
3336 Zheng. 
3337 ACPICA BZ 981.
3338
3339 Disassembler: Prevent duplicate External() statements. During generation 
3340 of external statements, detect similar pathnames that are actually 
3341 duplicates such as these:
3342   External (\ABCD)
3343   External (ABCD)
3344 Remove all leading '\' characters from pathnames during the external 
3345 statement generation so that duplicates will be detected and tossed. 
3346 ACPICA BZ 985.
3347
3348 Tools: Replace low-level I/O with stream I/O functions. Replace 
3349 open/read/write/close with the stream I/O equivalents 
3350 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 
3351 Moore.
3352
3353 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 
3354 name header so that AcpiXtract recognizes the output file/table.
3355
3356 iASL: Remove obsolete -2 option flag. Originally intended to force the 
3357 compiler/disassembler into an ACPI 2.0 mode, this was never implemented 
3358 and the entire concept is now obsolete.
3359
3360 ----------------------------------------
3361 18 October 2012. Summary of changes for version 20121018:
3362
3363
3364 1) ACPICA Kernel-resident Subsystem:
3365
3366 Updated support for the ACPI 5.0 MPST table. Fixes some problems 
3367 introduced by late changes to the table as it was added to the ACPI 5.0 
3368 specification. Includes header, disassembler, and data table compiler 
3369 support as well as a new version of the MPST template.
3370
3371 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 
3372 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 
3373 methods: _HID, _CID, and _UID.
3374
3375 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 
3376 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 
3377 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 
3378 names for their various drivers. Affects the AcpiGetObjectInfo external 
3379 interface, and other internal interfaces as well.
3380
3381 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 
3382 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 
3383 on machines that support non-aligned transfers. Optimizes for this case 
3384 rather than using a strncpy. With assistance from Zheng Lv.
3385
3386 Resource Manager: Small fix for buffer size calculation. Fixed a one byte 
3387 error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
3388
3389 Added a new debug print message for AML mutex objects that are force-
3390 released. At control method termination, any currently acquired mutex 
3391 objects are force-released. Adds a new debug-only message for each one 
3392 that is released.
3393
3394 Audited/updated all ACPICA return macros and the function debug depth 
3395 counter: 1) Ensure that all functions that use the various TRACE macros 
3396 also use the appropriate ACPICA return macros. 2) Ensure that all normal 
3397 return statements surround the return expression (value) with parens to 
3398 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 
3399 Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
3400
3401 Global source code changes/maintenance: All extra lines at the start and 
3402 end of each source file have been removed for consistency. Also, within 
3403 comments, all new sentences start with a single space instead of a double 
3404 space, again for consistency across the code base.
3405
3406 Example Code and Data Size: These are the sizes for the OS-independent 
3407 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3408 debug version of the code includes the debug output trace mechanism and 
3409 has a much larger code and data size.
3410
3411   Previous Release:
3412     Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
3413     Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
3414   Current Release:
3415     Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
3416     Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3417
3418
3419 2) iASL Compiler/Disassembler and Tools:
3420
3421 AcpiExec: Improved the algorithm used for memory leak/corruption 
3422 detection. Added some intelligence to the code that maintains the global 
3423 list of allocated memory. The list is now ordered by allocated memory 
3424 address, significantly improving performance. When running AcpiExec on 
3425 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 
3426 on the platform and/or the environment. Note, this performance 
3427 enhancement affects the AcpiExec utility only, not the kernel-resident 
3428 ACPICA code.
3429
3430 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 
3431 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 
3432 incorrect table offset reported for invalid opcodes. Report the original 
3433 32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
3434
3435 Disassembler: Enhanced the -vt option to emit the binary table data in 
3436 hex format to assist with debugging.
3437
3438 Fixed a potential filename buffer overflow in osunixdir.c. Increased the 
3439 size of file structure. Colin Ian King.
3440
3441 ----------------------------------------
3442 13 September 2012. Summary of changes for version 20120913:
3443
3444
3445 1) ACPICA Kernel-resident Subsystem:
3446
3447 ACPI 5.0: Added two new notify types for the Hardware Error Notification 
3448 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 
3449 and 
3450 MCE(6).
3451  
3452 Table Manager: Merged/removed duplicate code in the root table resize 
3453 functions. One function is external, the other is internal. Lv Zheng, 
3454 ACPICA 
3455 BZ 846.
3456
3457 Makefiles: Completely removed the obsolete "Linux" makefiles under 
3458 acpica/generate/linux. These makefiles are obsolete and have been 
3459 replaced 
3460 by 
3461 the generic unix makefiles under acpica/generate/unix.
3462
3463 Makefiles: Ensure that binary files always copied properly. Minor rule 
3464 change 
3465 to ensure that the final binary output files are always copied up to the 
3466 appropriate binary directory (bin32 or bin64.)
3467
3468 Example Code and Data Size: These are the sizes for the OS-independent 
3469 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3470 debug 
3471 version of the code includes the debug output trace mechanism and has a 
3472 much 
3473 larger code and data size.
3474
3475   Previous Release:
3476     Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
3477     Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
3478   Current Release:
3479     Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
3480     Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
3481
3482
3483 2) iASL Compiler/Disassembler and Tools:
3484
3485 Disassembler: Fixed a possible fault during the disassembly of resource 
3486 descriptors when a second parse is required because of the invocation of 
3487 external control methods within the table. With assistance from 
3488 adq@lidskialf.net. ACPICA BZ 976.
3489
3490 iASL: Fixed a namepath optimization problem. An error can occur if the 
3491 parse 
3492 node that contains the namepath to be optimized does not have a parent 
3493 node 
3494 that is a named object. This change fixes the problem.
3495
3496 iASL: Fixed a regression where the AML file is not deleted on errors. The 
3497 AML 
3498 output file should be deleted if there are any errors during the 
3499 compiler. 
3500 The 
3501 only exception is if the -f (force output) option is used. ACPICA BZ 974.
3502
3503 iASL: Added a feature to automatically increase internal line buffer 
3504 sizes. 
3505 Via realloc(), automatically increase the internal line buffer sizes as 
3506 necessary to support very long source code lines. The current version of 
3507 the 
3508 preprocessor requires a buffer long enough to contain full source code 
3509 lines. 
3510 This change increases the line buffer(s) if the input lines go beyond the 
3511 current buffer size. This eliminates errors that occurred when a source 
3512 code 
3513 line was longer than the buffer.
3514
3515 iASL: Fixed a problem with constant folding in method declarations. The 
3516 SyncLevel term is a ByteConstExpr, and incorrect code would be generated 
3517 if a 
3518 Type3 opcode was used.
3519
3520 Debugger: Improved command help support. For incorrect argument count, 
3521 display 
3522 full help for the command. For help command itself, allow an argument to 
3523 specify a command.
3524
3525 Test Suites: Several bug fixes for the ASLTS suite reduces the number of 
3526 errors during execution of the suite. Guan Chao.
3527
3528 ----------------------------------------
3529 16 August 2012. Summary of changes for version 20120816:
3530
3531
3532 1) ACPICA Kernel-resident Subsystem:
3533
3534 Removed all use of the deprecated _GTS and _BFS predefined methods. The 
3535 _GTS 
3536 (Going To Sleep) and _BFS (Back From Sleep) methods are essentially 
3537 deprecated and will probably be removed from the ACPI specification. 
3538 Windows 
3539 does not invoke them, and reportedly never will. The final nail in the 
3540 coffin 
3541 is that the ACPI specification states that these methods must be run with 
3542 interrupts off, which is not going to happen in a kernel interpreter. 
3543 Note: 
3544 Linux has removed all use of the methods also. It was discovered that 
3545 invoking these functions caused failures on some machines, probably 
3546 because 
3547 they were never tested since Windows does not call them. Affects two 
3548 external 
3549 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 
3550 ACPICA BZ 969.
3551
3552 Implemented support for complex bit-packed buffers returned from the _PLD 
3553 (Physical Location of Device) predefined method. Adds a new external 
3554 interface, AcpiDecodePldBuffer that parses the buffer into a more usable 
3555
3556 structure. Note: C Bitfields cannot be used for this type of predefined 
3557 structure since the memory layout of individual bitfields is not defined 
3558 by 
3559 the C language. In addition, there are endian concerns where a compiler 
3560 will 
3561 change the bitfield ordering based on the machine type. The new ACPICA 
3562 interface eliminates these issues, and should be called after _PLD is 
3563 executed. ACPICA BZ 954.
3564
3565 Implemented a change to allow a scope change to root (via "Scope (\)") 
3566 during 
3567 execution of module-level ASL code (code that is executed at table load 
3568 time.) Lin Ming.
3569
3570 Added the Windows8/Server2012 string for the _OSI method. This change 
3571 adds 
3572
3573 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 
3574 2012.
3575
3576 Added header support for the new ACPI tables DBG2 (Debug Port Table Type 
3577 2) 
3578 and CSRT (Core System Resource Table).
3579
3580 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 
3581 names. This simplifies access to the buffers returned by these predefined 
3582 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
3583
3584 GPE support: Removed an extraneous parameter from the various low-level 
3585 internal GPE functions. Tang Feng.
3586
3587 Removed the linux makefiles from the unix packages. The generate/linux 
3588 makefiles are obsolete and have been removed from the unix tarball 
3589 release 
3590 packages. The replacement makefiles are under generate/unix, and there is 
3591
3592 top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
3593
3594 Updates for Unix makefiles:
3595 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
3596 2) Update linker flags (move to end of command line) for AcpiExec 
3597 utility. 
3598 Guan Chao.
3599
3600 Split ACPICA initialization functions to new file, utxfinit.c. Split from 
3601 utxface.c to improve modularity and reduce file size.
3602
3603 Example Code and Data Size: These are the sizes for the OS-independent 
3604 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3605 debug version of the code includes the debug output trace mechanism and 
3606 has a 
3607 much larger code and data size.
3608
3609   Previous Release:
3610     Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
3611     Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
3612   Current Release:
3613     Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
3614     Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
3615
3616
3617 2) iASL Compiler/Disassembler and Tools:
3618
3619 iASL: Fixed a problem with constant folding for fixed-length constant 
3620 expressions. The constant-folding code was not being invoked for constant 
3621 expressions that allow the use of type 3/4/5 opcodes to generate 
3622 constants 
3623 for expressions such as ByteConstExpr, WordConstExpr, etc. This could 
3624 result 
3625 in the generation of invalid AML bytecode. ACPICA BZ 970.
3626
3627 iASL: Fixed a generation issue on newer versions of Bison. Newer versions 
3628 apparently automatically emit some of the necessary externals. This 
3629 change 
3630 handles these versions in order to eliminate generation warnings.
3631
3632 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
3633
3634 Disassembler: Add support to decode _PLD buffers. The decoded buffer 
3635 appears 
3636 within comments in the output file.
3637
3638 Debugger: Fixed a regression with the "Threads" command where 
3639 AE_BAD_PARAMETER was always returned.
3640
3641 ----------------------------------------
3642 11 July 2012. Summary of changes for version 20120711:
3643
3644 1) ACPICA Kernel-resident Subsystem:
3645
3646 Fixed a possible fault in the return package object repair code. Fixes a 
3647 problem that can occur when a lone package object is wrapped with an 
3648 outer 
3649 package object in order to force conformance to the ACPI specification. 
3650 Can 
3651 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 
3652 _DLM, 
3653 _CSD, _PSD, _TSD.
3654
3655 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 
3656 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 
3657 ARB_DIS bit must be implemented in the host-dependent C3 processor power 
3658 state 
3659 support. Note, ARB_DIS is obsolete and only applies to older chipsets, 
3660 both 
3661 Intel and other vendors. (for Intel: ICH4-M and earlier)
3662
3663 This change removes the code to disable/enable bus master arbitration 
3664 during 
3665 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 
3666 causes 
3667 resume problems on some machines. The change has been in use for over 
3668 seven 
3669 years within Linux.
3670
3671 Implemented two new external interfaces to support host-directed dynamic 
3672 ACPI 
3673 table load and unload. They are intended to simplify the host 
3674 implementation 
3675 of hot-plug support:
3676   AcpiLoadTable: Load an SSDT from a buffer into the namespace.
3677   AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 
3678 table.
3679 See the ACPICA reference for additional details. Adds one new file, 
3680 components/tables/tbxfload.c
3681
3682 Implemented and deployed two new interfaces for errors and warnings that 
3683 are 
3684 known to be caused by BIOS/firmware issues:
3685   AcpiBiosError: Prints "ACPI Firmware Error" message.
3686   AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
3687 Deployed these new interfaces in the ACPICA Table Manager code for ACPI 
3688 table 
3689 and FADT errors. Additional deployment to be completed as appropriate in 
3690 the 
3691 future. The associated conditional macros are ACPI_BIOS_ERROR and 
3692 ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 
3693 ACPICA 
3694 BZ 
3695 843.
3696
3697 Implicit notify support: ensure that no memory allocation occurs within a 
3698 critical region. This fix moves a memory allocation outside of the time 
3699 that a 
3700 spinlock is held. Fixes issues on systems that do not allow this 
3701 behavior. 
3702 Jung-uk Kim.
3703
3704 Split exception code utilities and tables into a new file, 
3705 utilities/utexcep.c
3706
3707 Example Code and Data Size: These are the sizes for the OS-independent 
3708 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3709 debug 
3710 version of the code includes the debug output trace mechanism and has a 
3711 much 
3712 larger code and data size.
3713
3714   Previous Release:
3715     Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
3716     Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
3717   Current Release:
3718     Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
3719     Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
3720
3721
3722 2) iASL Compiler/Disassembler and Tools:
3723
3724 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 
3725 of 
3726 0. Jung-uk Kim.
3727
3728 Debugger: Enhanced the "tables" command to emit additional information 
3729 about 
3730 the current set of ACPI tables, including the owner ID and flags decode.
3731
3732 Debugger: Reimplemented the "unload" command to use the new 
3733 AcpiUnloadParentTable external interface. This command was disable 
3734 previously 
3735 due to need for an unload interface.
3736
3737 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 
3738 option 
3739 will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
3740
3741 ----------------------------------------
3742 20 June 2012. Summary of changes for version 20120620:
3743
3744
3745 1) ACPICA Kernel-resident Subsystem:
3746
3747 Implemented support to expand the "implicit notify" feature to allow 
3748 multiple 
3749 devices to be notified by a single GPE. This feature automatically 
3750 generates a 
3751 runtime device notification in the absence of a BIOS-provided GPE control 
3752 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 
3753 notify is 
3754 provided by ACPICA for Windows compatibility, and is a workaround for 
3755 BIOS 
3756 AML 
3757 code errors. See the description of the AcpiSetupGpeForWake interface in 
3758 the 
3759 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
3760
3761 Changed some comments and internal function names to simplify and ensure 
3762 correctness of the Linux code translation. No functional changes.
3763
3764 Example Code and Data Size: These are the sizes for the OS-independent 
3765 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3766 debug 
3767 version of the code includes the debug output trace mechanism and has a 
3768 much 
3769 larger code and data size.
3770
3771   Previous Release:
3772     Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
3773     Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
3774   Current Release:
3775     Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
3776     Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
3777
3778
3779 2) iASL Compiler/Disassembler and Tools:
3780
3781 Disassembler: Added support to emit short, commented descriptions for the 
3782 ACPI 
3783 predefined names in order to improve the readability of the disassembled 
3784 output. ACPICA BZ 959. Changes include:
3785   1) Emit descriptions for all standard predefined names (_INI, _STA, 
3786 _PRW, 
3787 etc.)
3788   2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
3789   3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 
3790 etc.)
3791
3792 AcpiSrc: Fixed several long-standing Linux code translation issues. 
3793 Argument 
3794 descriptions in function headers are now translated properly to lower 
3795 case 
3796 and 
3797 underscores. ACPICA BZ 961. Also fixes translation problems such as 
3798 these: 
3799 (old -> new)
3800   i_aSL -> iASL
3801   00-7_f -> 00-7F
3802   16_k -> 16K
3803   local_fADT -> local_FADT
3804   execute_oSI -> execute_OSI
3805
3806 iASL: Fixed a problem where null bytes were inadvertently emitted into 
3807 some 
3808 listing files.
3809
3810 iASL: Added the existing debug options to the standard help screen. There 
3811 are 
3812 no longer two different help screens. ACPICA BZ 957.
3813
3814 AcpiHelp: Fixed some typos in the various predefined name descriptions. 
3815 Also 
3816 expand some of the descriptions where appropriate.
3817
3818 iASL: Fixed the -ot option (display compile times/statistics). Was not 
3819 working 
3820 properly for standard output; only worked for the debug file case.
3821
3822 ----------------------------------------
3823 18 May 2012. Summary of changes for version 20120518:
3824
3825
3826 1) ACPICA Core Subsystem:
3827
3828 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 
3829 defined 
3830 to block until asynchronous events such as notifies and GPEs have 
3831 completed. 
3832 Within ACPICA, it is only called before a notify or GPE handler is 
3833 removed/uninstalled. It also may be useful for the host OS within related 
3834 drivers such as the Embedded Controller driver. See the ACPICA reference 
3835 for 
3836 additional information. ACPICA BZ 868.
3837
3838 ACPI Tables: Added a new error message for a possible overflow failure 
3839 during 
3840 the conversion of FADT 32-bit legacy register addresses to internal 
3841 common 
3842 64-
3843 bit GAS structure representation. The GAS has a one-byte "bit length" 
3844 field, 
3845 thus limiting the register length to 255 bits. ACPICA BZ 953.
3846
3847 Example Code and Data Size: These are the sizes for the OS-independent 
3848 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3849 debug 
3850 version of the code includes the debug output trace mechanism and has a 
3851 much 
3852 larger code and data size.
3853
3854   Previous Release:
3855     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3856     Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
3857   Current Release:
3858     Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
3859     Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
3860
3861
3862 2) iASL Compiler/Disassembler and Tools:
3863
3864 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 
3865 macro. 
3866 This keyword was added late in the ACPI 5.0 release cycle and was not 
3867 implemented until now.
3868
3869 Disassembler: Added support for Operation Region externals. Adds missing 
3870 support for operation regions that are defined in another table, and 
3871 referenced locally via a Field or BankField ASL operator. Now generates 
3872 the 
3873 correct External statement.
3874
3875 Disassembler: Several additional fixes for the External() statement 
3876 generation 
3877 related to some ASL operators. Also, order the External() statements 
3878 alphabetically in the disassembler output. Fixes the External() 
3879 generation 
3880 for 
3881 the Create* field, Alias, and Scope operators:
3882  1) Create* buffer field operators - fix type mismatch warning on 
3883 disassembly
3884  2) Alias - implement missing External support
3885  3) Scope - fix to make sure all necessary externals are emitted.
3886
3887 iASL: Improved pathname support. For include files, merge the prefix 
3888 pathname 
3889 with the file pathname and eliminate unnecessary components. Convert 
3890 backslashes in all pathnames to forward slashes, for readability. Include 
3891 file 
3892 pathname changes affect both #include and Include() type operators.
3893
3894 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 
3895 end 
3896 of a valid line by inserting a newline and then returning the EOF during 
3897 the 
3898 next call to GetNextLine. Prevents the line from being ignored due to EOF 
3899 condition.
3900
3901 iASL: Implemented some changes to enhance the IDE support (-vi option.) 
3902 Error 
3903 and Warning messages are now correctly recognized for both the source 
3904 code 
3905 browser and the global error and warning counts.
3906
3907 ----------------------------------------
3908 20 April 2012. Summary of changes for version 20120420:
3909
3910
3911 1) ACPICA Core Subsystem:
3912
3913 Implemented support for multiple notify handlers. This change adds 
3914 support 
3915 to 
3916 allow multiple system and device notify handlers on Device, Thermal Zone, 
3917 and 
3918 Processor objects. This can simplify the host OS notification 
3919 implementation. 
3920 Also re-worked and restructured the entire notify support code to 
3921 simplify 
3922 handler installation, handler removal, notify event queuing, and notify 
3923 dispatch to handler(s). Note: there can still only be two global notify 
3924 handlers - one for system notifies and one for device notifies. There are 
3925 no 
3926 changes to the existing handler install/remove interfaces. Lin Ming, Bob 
3927 Moore, Rafael Wysocki.
3928
3929 Fixed a regression in the package repair code where the object reference 
3930 count was calculated incorrectly. Regression was introduced in the commit 
3931 "Support to add Package wrappers".
3932
3933 Fixed a couple possible memory leaks in the AML parser, in the error 
3934 recovery 
3935 path. Jesper Juhl, Lin Ming.
3936
3937 Example Code and Data Size: These are the sizes for the OS-independent 
3938 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3939 debug version of the code includes the debug output trace mechanism and 
3940 has a 
3941 much larger code and data size.
3942
3943   Previous Release:
3944     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3945     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3946   Current Release:
3947     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3948     Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
3949
3950
3951 2) iASL Compiler/Disassembler and Tools:
3952
3953 iASL: Fixed a problem with the resource descriptor support where the 
3954 length 
3955 of the StartDependentFn and StartDependentFnNoPrio descriptors were not 
3956 included in cumulative descriptor offset, resulting in incorrect values 
3957 for 
3958 resource tags within resource descriptors appearing after a 
3959 StartDependent* 
3960 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
3961
3962 iASL and Preprocessor: Implemented full support for the #line directive 
3963 to 
3964 correctly track original source file line numbers through the .i 
3965 preprocessor 
3966 output file - for error and warning messages.
3967
3968 iASL: Expand the allowable byte constants for address space IDs. 
3969 Previously, 
3970 the allowable range was 0x80-0xFF (user-defined spaces), now the range is 
3971 0x0A-0xFF to allow for custom and new IDs without changing the compiler.
3972
3973 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
3974
3975 iASL: Add option to completely disable the preprocessor (-Pn).
3976
3977 iASL: Now emit all error/warning messages to standard error (stderr) by 
3978 default (instead of the previous stdout).
3979
3980 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 
3981 Update 
3982 for resource descriptor offset fix above. Update/cleanup error output 
3983 routines. Enable and send iASL errors/warnings to an error logfile 
3984 (error.txt). Send all other iASL output to a logfile (compiler.txt). 
3985 Fixed 
3986 several extraneous "unrecognized operator" messages.
3987
3988 ----------------------------------------
3989 20 March 2012. Summary of changes for version 20120320:
3990
3991
3992 1) ACPICA Core Subsystem:
3993
3994 Enhanced the sleep/wake interfaces to optionally execute the _GTS method 
3995 (Going To Sleep) and the _BFS method (Back From Sleep). Windows 
3996 apparently 
3997 does not execute these methods, and therefore these methods are often 
3998 untested. It has been seen on some systems where the execution of these 
3999 methods causes errors and also prevents the machine from entering S5. It 
4000 is 
4001 therefore suggested that host operating systems do not execute these 
4002 methods 
4003 by default. In the future, perhaps these methods can be optionally 
4004 executed 
4005 based on the age of the system and/or what is the newest version of 
4006 Windows 
4007 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 
4008 and 
4009 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 
4010 Ming.
4011
4012 Fixed a problem where the length of the local/common FADT was set too 
4013 early. 
4014 The local FADT table length cannot be set to the common length until the 
4015 original length has been examined. There is code that checks the table 
4016 length 
4017 and sets various fields appropriately. This can affect older machines 
4018 with 
4019 early FADT versions. For example, this can cause inadvertent writes to 
4020 the 
4021 CST_CNT register. Julian Anastasov.
4022
4023 Fixed a mapping issue related to a physical table override. Use the 
4024 deferred 
4025 mapping mechanism for tables loaded via the physical override OSL 
4026 interface. 
4027 This allows for early mapping before the virtual memory manager is 
4028 available. 
4029 Thomas Renninger, Bob Moore.
4030
4031 Enhanced the automatic return-object repair code: Repair a common problem 
4032 with 
4033 predefined methods that are defined to return a variable-length Package 
4034 of 
4035 sub-objects. If there is only one sub-object, some BIOS ASL code 
4036 mistakenly 
4037 simply returns the single object instead of a Package with one sub-
4038 object. 
4039 This new support will repair this error by wrapping a Package object 
4040 around 
4041 the original object, creating the correct and expected Package with one 
4042 sub-
4043 object. Names that can be repaired in this manner include: _ALR, _CSD, 
4044 _HPX, 
4045 _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 
4046 939.
4047
4048 Changed the exception code returned for invalid ACPI paths passed as 
4049 parameters to external interfaces such as AcpiEvaluateObject. Was 
4050 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
4051
4052 Example Code and Data Size: These are the sizes for the OS-independent 
4053 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4054 debug 
4055 version of the code includes the debug output trace mechanism and has a 
4056 much 
4057 larger code and data size.
4058
4059   Previous Release:
4060     Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
4061     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4062   Current Release:
4063     Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4064     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4065
4066
4067 2) iASL Compiler/Disassembler and Tools:
4068
4069 iASL: Added the infrastructure and initial implementation of a integrated 
4070 C-
4071 like preprocessor. This will simplify BIOS development process by 
4072 eliminating 
4073 the need for a separate preprocessing step during builds. On Windows, it 
4074 also 
4075 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 
4076 features including full #define() macro support are still under 
4077 development. 
4078 These preprocessor directives are supported:
4079     #define
4080     #elif
4081     #else
4082     #endif
4083     #error
4084     #if
4085     #ifdef
4086     #ifndef
4087     #include
4088     #pragma message
4089     #undef
4090     #warning
4091 In addition, these new command line options are supported:
4092     -D <symbol> Define symbol for preprocessor use
4093     -li         Create preprocessed output file (*.i)
4094     -P          Preprocess only and create preprocessor output file (*.i)
4095
4096 Table Compiler: Fixed a problem where the equals operator within an 
4097 expression 
4098 did not work properly.
4099
4100 Updated iASL to use the current versions of Bison/Flex. Updated the 
4101 Windows 
4102 project file to invoke these tools from the standard location. ACPICA BZ 
4103 904. 
4104 Versions supported:
4105     Flex for Windows:  V2.5.4
4106     Bison for Windows: V2.4.1
4107
4108 ----------------------------------------
4109 15 February 2012. Summary of changes for version 20120215:
4110
4111
4112 1) ACPICA Core Subsystem:
4113
4114 There have been some major changes to the sleep/wake support code, as 
4115 described below (a - e).
4116
4117 a) The AcpiLeaveSleepState has been split into two interfaces, similar to 
4118 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 
4119 AcpiLeaveSleepStatePrep. This allows the host to perform actions between 
4120 the 
4121 time the _BFS method is called and the _WAK method is called. NOTE: all 
4122 hosts 
4123 must update their wake/resume code or else sleep/wake will not work 
4124 properly. 
4125 Rafael Wysocki.
4126
4127 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 
4128 _WAK 
4129 method. Some machines require that the GPEs are enabled before the _WAK 
4130 method 
4131 is executed. Thomas Renninger.
4132
4133 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 
4134 bit. 
4135 Some BIOS code assumes that WAK_STS will be cleared on resume and use it 
4136 to 
4137 determine whether the system is rebooting or resuming. Matthew Garrett.
4138
4139 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 
4140 Sleep) to 
4141 match the ACPI specification requirement. Rafael Wysocki.
4142
4143 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 
4144 registers within the V5 FADT. This support adds two new files: 
4145 hardware/hwesleep.c implements the support for the new registers. Moved 
4146 all 
4147 sleep/wake external interfaces to hardware/hwxfsleep.c.
4148
4149
4150 Added a new OSL interface for ACPI table overrides, 
4151 AcpiOsPhysicalTableOverride. This interface allows the host to override a 
4152 table via a physical address, instead of the logical address required by 
4153 AcpiOsTableOverride. This simplifies the host implementation. Initial 
4154 implementation by Thomas Renninger. The ACPICA implementation creates a 
4155 single 
4156 shared function for table overrides that attempts both a logical and a 
4157 physical override.
4158
4159 Expanded the OSL memory read/write interfaces to 64-bit data 
4160 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 
4161 transfer support for GAS register structures passed to AcpiRead and 
4162 AcpiWrite.
4163
4164 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 
4165 custom 
4166 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 
4167 model. 
4168 See the ACPICA reference for details. ACPICA BZ 942. This option removes 
4169 about 
4170 10% of the code and 5% of the static data, and the following hardware 
4171 ACPI 
4172 features become unavailable:
4173     PM Event and Control registers
4174     SCI interrupt (and handler)
4175     Fixed Events
4176     General Purpose Events (GPEs)
4177     Global Lock
4178     ACPI PM timer
4179     FACS table (Waking vectors and Global Lock)
4180
4181 Updated the unix tarball directory structure to match the ACPICA git 
4182 source 
4183 tree. This ensures that the generic unix makefiles work properly (in 
4184 generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ 
4185 867.
4186
4187 Updated the return value of the _REV predefined method to integer value 5 
4188 to 
4189 reflect ACPI 5.0 support.
4190
4191 Moved the external ACPI PM timer interface prototypes to the public 
4192 acpixf.h 
4193 file where they belong.
4194
4195 Example Code and Data Size: These are the sizes for the OS-independent 
4196 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4197 debug 
4198 version of the code includes the debug output trace mechanism and has a 
4199 much 
4200 larger code and data size.
4201
4202   Previous Release:
4203     Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
4204     Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
4205   Current Release:
4206     Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
4207     Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4208
4209
4210 2) iASL Compiler/Disassembler and Tools:
4211
4212 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 
4213 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 
4214 incorrectly displayed.
4215
4216 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 
4217 specification.
4218
4219 ----------------------------------------
4220 11 January 2012. Summary of changes for version 20120111:
4221
4222
4223 1) ACPICA Core Subsystem:
4224
4225 Implemented a new mechanism to allow host device drivers to check for 
4226 address 
4227 range conflicts with ACPI Operation Regions. Both SystemMemory and 
4228 SystemIO 
4229 address spaces are supported. A new external interface, 
4230 AcpiCheckAddressRange, 
4231 allows drivers to check an address range against the ACPI namespace. See 
4232 the 
4233 ACPICA reference for additional details. Adds one new file, 
4234 utilities/utaddress.c. Lin Ming, Bob Moore.
4235
4236 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 
4237 Control 
4238 and 
4239 Status registers, update the ACPI 5.0 flags, and update internal data 
4240 structures to handle an FADT larger than 256 bytes. The size of the ACPI 
4241 5.0 
4242 FADT is 268 bytes.
4243
4244 Updated all ACPICA copyrights and signons to 2012. Added the 2012 
4245 copyright to 
4246 all module headers and signons, including the standard Linux header. This 
4247 affects virtually every file in the ACPICA core subsystem, iASL compiler, 
4248 and 
4249 all ACPICA utilities.
4250
4251 Example Code and Data Size: These are the sizes for the OS-independent 
4252 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4253 debug 
4254 version of the code includes the debug output trace mechanism and has a 
4255 much 
4256 larger code and data size.
4257
4258   Previous Release:
4259     Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
4260     Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
4261   Current Release:
4262     Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
4263     Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
4264
4265
4266 2) iASL Compiler/Disassembler and Tools:
4267
4268 Disassembler: fixed a problem with the automatic resource tag generation 
4269 support. Fixes a problem where the resource tags are inadvertently not 
4270 constructed if the table being disassembled contains external references 
4271 to 
4272 control methods. Moved the actual construction of the tags to after the 
4273 final 
4274 namespace is constructed (after 2nd parse is invoked due to external 
4275 control 
4276 method references.) ACPICA BZ 941.
4277
4278 Table Compiler: Make all "generic" operators caseless. These are the 
4279 operators 
4280 like UINT8, String, etc. Making these caseless improves ease-of-use. 
4281 ACPICA BZ 
4282 934.
4283
4284 ----------------------------------------
4285 23 November 2011. Summary of changes for version 20111123:
4286
4287 0) ACPI 5.0 Support:
4288
4289 This release contains full support for the ACPI 5.0 specification, as 
4290 summarized below.
4291
4292 Reduced Hardware Support:
4293 -------------------------
4294
4295 This support allows for ACPI systems without the usual ACPI hardware. 
4296 This 
4297 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 
4298 will 
4299 not attempt to initialize or use any of the usual ACPI hardware. Note, 
4300 when 
4301 this flag is set, all of the following ACPI hardware is assumed to be not 
4302 present and is not initialized or accessed:
4303
4304     General Purpose Events (GPEs)
4305     Fixed Events (PM1a/PM1b and PM Control)
4306     Power Management Timer and Console Buttons (power/sleep)
4307     Real-time Clock Alarm
4308     Global Lock
4309     System Control Interrupt (SCI)
4310     The FACS is assumed to be non-existent
4311
4312 ACPI Tables:
4313 ------------
4314
4315 All new tables and updates to existing tables are fully supported in the 
4316 ACPICA headers (for use by device drivers), the disassembler, and the 
4317 iASL 
4318 Data Table Compiler. ACPI 5.0 defines these new tables:
4319
4320     BGRT        /* Boot Graphics Resource Table */
4321     DRTM        /* Dynamic Root of Trust for Measurement table */
4322     FPDT        /* Firmware Performance Data Table */
4323     GTDT        /* Generic Timer Description Table */
4324     MPST        /* Memory Power State Table */
4325     PCCT        /* Platform Communications Channel Table */
4326     PMTT        /* Platform Memory Topology Table */
4327     RASF        /* RAS Feature table */
4328
4329 Operation Regions/SpaceIDs:
4330 ---------------------------
4331
4332 All new operation regions are fully supported by the iASL compiler, the 
4333 disassembler, and the ACPICA runtime code (for dispatch to region 
4334 handlers.) 
4335 The new operation region Space IDs are:
4336
4337     GeneralPurposeIo
4338     GenericSerialBus
4339
4340 Resource Descriptors:
4341 ---------------------
4342
4343 All new ASL resource descriptors are fully supported by the iASL 
4344 compiler, 
4345 the 
4346 ASL/AML disassembler, and the ACPICA runtime Resource Manager code 
4347 (including 
4348 all new predefined resource tags). New descriptors are:
4349
4350     FixedDma
4351     GpioIo
4352     GpioInt
4353     I2cSerialBus
4354     SpiSerialBus
4355     UartSerialBus
4356
4357 ASL/AML Operators, New and Modified:
4358 ------------------------------------
4359
4360 One new operator is added, the Connection operator, which is used to 
4361 associate 
4362 a GeneralPurposeIo or GenericSerialBus resource descriptor with 
4363 individual 
4364 field objects within an operation region. Several new protocols are 
4365 associated 
4366 with the AccessAs operator. All are fully supported by the iASL compiler, 
4367 disassembler, and runtime ACPICA AML interpreter:
4368
4369     Connection                      // Declare Field Connection 
4370 attributes
4371     AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
4372     AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes 
4373 Protocol
4374     AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
4375     RawDataBuffer                       // Data type for Vendor Data 
4376 fields
4377
4378 Predefined ASL/AML Objects:
4379 ---------------------------
4380
4381 All new predefined objects/control-methods are supported by the iASL 
4382 compiler 
4383 and the ACPICA runtime validation/repair (arguments and return values.) 
4384 New 
4385 predefined names include the following:
4386
4387 Standard Predefined Names (Objects or Control Methods):
4388     _AEI, _CLS, _CPC, _CWS, _DEP,
4389     _DLM, _EVT, _GCP, _CRT, _GWS,
4390     _HRV, _PRE, _PSE, _SRT, _SUB.
4391
4392 Resource Tags (Names used to access individual fields within resource 
4393 descriptors):
4394     _DBT, _DPL, _DRS, _END, _FLC,
4395     _IOR, _LIN, _MOD, _PAR, _PHA,
4396     _PIN, _PPI, _POL, _RXL, _SLV,
4397     _SPE, _STB, _TXL, _VEN.
4398
4399 ACPICA External Interfaces:
4400 ---------------------------
4401
4402 Several new interfaces have been defined for use by ACPI-related device 
4403 drivers and other host OS services:
4404
4405 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 
4406 to 
4407 acquire and release AML mutexes that are defined in the DSDT/SSDT tables 
4408 provided by the BIOS. They are intended to be used in conjunction with 
4409 the 
4410 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 
4411 mutual exclusion with the AML code/interpreter.
4412
4413 AcpiGetEventResources: Returns the (formatted) resource descriptors as 
4414 defined 
4415 by the ACPI 5.0 _AEI object (ACPI Event Information).  This object 
4416 provides 
4417 resource descriptors associated with hardware-reduced platform events, 
4418 similar 
4419 to the AcpiGetCurrentResources interface.
4420
4421 Operation Region Handlers: For General Purpose IO and Generic Serial Bus 
4422 operation regions, information about the Connection() object and any 
4423 optional 
4424 length information is passed to the region handler within the Context 
4425 parameter.
4426
4427 AcpiBufferToResource: This interface converts a raw AML buffer containing 
4428
4429 resource template or resource descriptor to the ACPI_RESOURCE internal 
4430 format 
4431 suitable for use by device drivers. Can be used by an operation region 
4432 handler 
4433 to convert the Connection() buffer object into a ACPI_RESOURCE.
4434
4435 Miscellaneous/Tools/TestSuites: 
4436 -------------------------------
4437
4438 Support for extended _HID names (Four alpha characters instead of three).
4439 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
4440 Support for ACPI 5.0 features in the ASLTS test suite.
4441 Fully updated documentation (ACPICA and iASL reference documents.)
4442
4443 ACPI Table Definition Language:
4444 -------------------------------
4445
4446 Support for this language was implemented and released as a subsystem of 
4447 the 
4448 iASL compiler in 2010. (See the iASL compiler User Guide.)
4449
4450
4451 Non-ACPI 5.0 changes for this release:
4452 --------------------------------------
4453
4454 1) ACPICA Core Subsystem:
4455
4456 Fix a problem with operation region declarations where a failure can 
4457 occur 
4458 if 
4459 the region name and an argument that evaluates to an object (such as the 
4460 region address) are in different namespace scopes. Lin Ming, ACPICA BZ 
4461 937.
4462
4463 Do not abort an ACPI table load if an invalid space ID is found within. 
4464 This 
4465 will be caught later if the offending method is executed. ACPICA BZ 925.
4466
4467 Fixed an issue with the FFixedHW space ID where the ID was not always 
4468 recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
4469
4470 Fixed a problem with the 32-bit generation of the unix-specific OSL 
4471 (osunixxf.c). Lin Ming, ACPICA BZ 936.
4472
4473 Several changes made to enable generation with the GCC 4.6 compiler. 
4474 ACPICA BZ 
4475 935.
4476
4477 New error messages: Unsupported I/O requests (not 8/16/32 bit), and 
4478 Index/Bank 
4479 field registers out-of-range.
4480
4481 2) iASL Compiler/Disassembler and Tools:
4482
4483 iASL: Implemented the __PATH__ operator, which returns the full pathname 
4484 of 
4485 the current source file.
4486
4487 AcpiHelp: Automatically display expanded keyword information for all ASL 
4488 operators.
4489
4490 Debugger: Add "Template" command to disassemble/dump resource template 
4491 buffers.
4492
4493 Added a new master script to generate and execute the ASLTS test suite. 
4494 Automatically handles 32- and 64-bit generation. See tests/aslts.sh
4495
4496 iASL: Fix problem with listing generation during processing of the 
4497 Switch() 
4498 operator where AML listing was disabled until the entire Switch block was 
4499 completed.
4500
4501 iASL: Improve support for semicolon statement terminators. Fix "invalid 
4502 character" message for some cases when the semicolon is used. Semicolons 
4503 are 
4504 now allowed after every <Term> grammar element. ACPICA BZ 927.
4505
4506 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 
4507 923.
4508
4509 Disassembler: Fix problem with disassembly of the DataTableRegion 
4510 operator 
4511 where an inadvertent "Unhandled deferred opcode" message could be 
4512 generated.
4513
4514 3) Example Code and Data Size
4515
4516 These are the sizes for the OS-independent acpica.lib produced by the 
4517 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
4518 includes the debug output trace mechanism and has a much larger code and 
4519 data 
4520 size.
4521
4522   Previous Release:
4523     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4524     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4525   Current Release:
4526     Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
4527     Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
4528
4529 ----------------------------------------
4530 22 September 2011. Summary of changes for version 20110922:
4531
4532 0) ACPI 5.0 News:
4533
4534 Support for ACPI 5.0 in ACPICA has been underway for several months and 
4535 will 
4536 be released at the same time that ACPI 5.0 is officially released.
4537
4538 The ACPI 5.0 specification is on track for release in the next few 
4539 months.
4540  
4541 1) ACPICA Core Subsystem:
4542
4543 Fixed a problem where the maximum sleep time for the Sleep() operator was 
4544 intended to be limited to two seconds, but was inadvertently limited to 
4545 20 
4546 seconds instead.
4547
4548 Linux and Unix makefiles: Added header file dependencies to ensure 
4549 correct 
4550 generation of ACPICA core code and utilities. Also simplified the 
4551 makefiles 
4552 considerably through the use of the vpath variable to specify search 
4553 paths. 
4554 ACPICA BZ 924.
4555
4556 2) iASL Compiler/Disassembler and Tools:
4557
4558 iASL: Implemented support to check the access length for all fields 
4559 created to 
4560 access named Resource Descriptor fields. For example, if a resource field 
4561 is 
4562 defined to be two bits, a warning is issued if a CreateXxxxField() is 
4563 used 
4564 with an incorrect bit length. This is implemented for all current 
4565 resource 
4566 descriptor names. ACPICA BZ 930.
4567   
4568 Disassembler: Fixed a byte ordering problem with the output of 24-bit and 
4569 56-
4570 bit integers.
4571
4572 iASL: Fixed a couple of issues associated with variable-length package 
4573 objects. 1) properly handle constants like One, Ones, Zero -- do not make 
4574
4575 VAR_PACKAGE when these are used as a package length. 2) Allow the 
4576 VAR_PACKAGE 
4577 opcode (in addition to PACKAGE) when validating object types for 
4578 predefined 
4579 names.
4580
4581 iASL: Emit statistics for all output files (instead of just the ASL input 
4582 and 
4583 AML output). Includes listings, hex files, etc.
4584
4585 iASL: Added -G option to the table compiler to allow the compilation of 
4586 custom 
4587 ACPI tables. The only part of a table that is required is the standard 
4588 36-
4589 byte 
4590 ACPI header.
4591
4592 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 
4593 headers), 
4594 which also adds correct 64-bit support. Also, now all output filenames 
4595 are 
4596 completely lower case.
4597
4598 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 
4599 loading table files. A warning is issued for any such tables. The only 
4600 exception is an FADT. This also fixes a possible fault when attempting to 
4601 load 
4602 non-AML tables. ACPICA BZ 932.
4603
4604 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 
4605
4606 missing table terminator could cause a fault when using the -p option.
4607
4608 AcpiSrc: Fixed a possible divide-by-zero fault when generating file 
4609 statistics.
4610
4611 3) Example Code and Data Size
4612
4613 These are the sizes for the OS-independent acpica.lib produced by the 
4614 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
4615 includes the debug output trace mechanism and has a much larger code and 
4616 data 
4617 size.
4618
4619   Previous Release (VC 9.0):
4620     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4621     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4622   Current Release (VC 9.0):
4623     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4624     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4625
4626
4627 ----------------------------------------
4628 23 June 2011. Summary of changes for version 20110623:
4629
4630 1) ACPI CA Core Subsystem:
4631
4632 Updated the predefined name repair mechanism to not attempt repair of a 
4633 _TSS 
4634 return object if a _PSS object is present. We can only sort the _TSS 
4635 return 
4636 package if there is no _PSS within the same scope. This is because if 
4637 _PSS 
4638 is 
4639 present, the ACPI specification dictates that the _TSS Power Dissipation 
4640 field 
4641 is to be ignored, and therefore some BIOSs leave garbage values in the 
4642 _TSS 
4643 Power field(s). In this case, it is best to just return the _TSS package 
4644 as-
4645 is. Reported by, and fixed with assistance from Fenghua Yu.
4646
4647 Added an option to globally disable the control method return value 
4648 validation 
4649 and repair. This runtime option can be used to disable return value 
4650 repair 
4651 if 
4652 this is causing a problem on a particular machine. Also added an option 
4653 to 
4654 AcpiExec (-dr) to set this disable flag.
4655
4656 All makefiles and project files: Major changes to improve generation of 
4657 ACPICA 
4658 tools. ACPICA BZ 912:
4659     Reduce default optimization levels to improve compatibility
4660     For Linux, add strict-aliasing=0 for gcc 4
4661     Cleanup and simplify use of command line defines
4662     Cleanup multithread library support
4663     Improve usage messages
4664
4665 Linux-specific header: update handling of THREAD_ID and pthread. For the 
4666 32-
4667 bit case, improve casting to eliminate possible warnings, especially with 
4668 the 
4669 acpica tools.
4670
4671 Example Code and Data Size: These are the sizes for the OS-independent 
4672 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4673 debug 
4674 version of the code includes the debug output trace mechanism and has a 
4675 much 
4676 larger code and data size.
4677
4678   Previous Release (VC 9.0):
4679     Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
4680     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4681   Current Release (VC 9.0):
4682     Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4683     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4684
4685 2) iASL Compiler/Disassembler and Tools:
4686
4687 With this release, a new utility named "acpihelp" has been added to the 
4688 ACPICA 
4689 package. This utility summarizes the ACPI specification chapters for the 
4690 ASL 
4691 and AML languages. It generates under Linux/Unix as well as Windows, and 
4692 provides the following functionality:
4693     Find/display ASL operator(s) -- with description and syntax.
4694     Find/display ASL keyword(s) -- with exact spelling and descriptions.
4695     Find/display ACPI predefined name(s) -- with description, number
4696         of arguments, and the return value data type.
4697     Find/display AML opcode name(s) -- with opcode, arguments, and 
4698 grammar.
4699     Decode/display AML opcode -- with opcode name, arguments, and 
4700 grammar.
4701
4702 Service Layers: Make multi-thread support configurable. Conditionally 
4703 compile 
4704 the multi-thread support so that threading libraries will not be linked 
4705 if 
4706 not 
4707 necessary. The only tool that requires multi-thread support is AcpiExec.
4708
4709 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 
4710 of 
4711 Bison appear to want the interface to yyerror to be a const char * (or at 
4712 least this is a problem when generating iASL on some systems.) ACPICA BZ 
4713 923 
4714 Pierre Lejeune.
4715
4716 Tools: Fix for systems where O_BINARY is not defined. Only used for 
4717 Windows 
4718 versions of the tools.
4719
4720 ----------------------------------------
4721 27 May 2011. Summary of changes for version 20110527:
4722
4723 1) ACPI CA Core Subsystem:
4724
4725 ASL Load() operator: Reinstate most restrictions on the incoming ACPI 
4726 table 
4727 signature. Now, only allow SSDT, OEMx, and a null signature. History:
4728     1) Originally, we checked the table signature for "SSDT" or "PSDT".
4729        (PSDT is now obsolete.)
4730     2) We added support for OEMx tables, signature "OEM" plus a fourth
4731        "don't care" character.
4732     3) Valid tables were encountered with a null signature, so we just
4733        gave up on validating the signature, (05/2008).
4734     4) We encountered non-AML tables such as the MADT, which caused
4735        interpreter errors and kernel faults. So now, we once again allow
4736        only SSDT, OEMx, and now, also a null signature. (05/2011).
4737
4738 Added the missing _TDL predefined name to the global name list in order 
4739 to 
4740 enable validation. Affects both the core ACPICA code and the iASL 
4741 compiler.
4742
4743 Example Code and Data Size: These are the sizes for the OS-independent 
4744 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
4745 debug 
4746 version of the code includes the debug output trace mechanism and has a 
4747 much 
4748 larger code and data size.
4749
4750   Previous Release (VC 9.0):
4751     Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
4752     Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
4753   Current Release (VC 9.0):
4754     Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
4755     Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4756
4757 2) iASL Compiler/Disassembler and Tools:
4758
4759 Debugger/AcpiExec: Implemented support for "complex" method arguments on 
4760 the 
4761 debugger command line. This adds support beyond simple integers -- 
4762 including 
4763 Strings, Buffers, and Packages. Includes support for nested packages. 
4764 Increased the default command line buffer size to accommodate these 
4765 arguments. 
4766 See the ACPICA reference for details and syntax. ACPICA BZ 917.
4767  
4768 Debugger/AcpiExec: Implemented support for "default" method arguments for 
4769 the 
4770 Execute/Debug command. Now, the debugger will always invoke a control 
4771 method 
4772 with the required number of arguments -- even if the command line 
4773 specifies 
4774 none or insufficient arguments. It uses default integer values for any 
4775 missing 
4776 arguments. Also fixes a bug where only six method arguments maximum were 
4777 supported instead of the required seven.
4778
4779 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 
4780 and 
4781 also return status in order to prevent buffer overruns. See the ACPICA 
4782 reference for details and syntax. ACPICA BZ 921
4783
4784 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 
4785 makefiles to simplify support for the two different but similar parser 
4786 generators, bison and yacc.
4787
4788 Updated the generic unix makefile for gcc 4. The default gcc version is 
4789 now 
4790 expected to be 4 or greater, since options specific to gcc 4 are used.
4791
4792 ----------------------------------------
4793 13 April 2011. Summary of changes for version 20110413:
4794
4795 1) ACPI CA Core Subsystem:
4796
4797 Implemented support to execute a so-called "orphan" _REG method under the 
4798 EC 
4799 device. This change will force the execution of a _REG method underneath 
4800 the 
4801 EC 
4802 device even if there is no corresponding operation region of type 
4803 EmbeddedControl. Fixes a problem seen on some machines and apparently is 
4804 compatible with Windows behavior. ACPICA BZ 875.
4805
4806 Added more predefined methods that are eligible for automatic NULL 
4807 package 
4808 element removal. This change adds another group of predefined names to 
4809 the 
4810 list 
4811 of names that can be repaired by having NULL package elements dynamically 
4812 removed. This group are those methods that return a single variable-
4813 length 
4814 package containing simple data types such as integers, buffers, strings. 
4815 This 
4816 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 
4817 _PSL, 
4818 _Sx, 
4819 and _TZD. ACPICA BZ 914.
4820
4821 Split and segregated all internal global lock functions to a new file, 
4822 evglock.c.
4823
4824 Updated internal address SpaceID for DataTable regions. Moved this 
4825 internal 
4826 space 
4827 id in preparation for ACPI 5.0 changes that will include some new space 
4828 IDs. 
4829 This 
4830 change should not affect user/host code.
4831
4832 Example Code and Data Size: These are the sizes for the OS-independent 
4833 acpica.lib 
4834 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
4835 version of 
4836 the code includes the debug output trace mechanism and has a much larger 
4837 code 
4838 and 
4839 data size.
4840
4841   Previous Release (VC 9.0):
4842     Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
4843     Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
4844   Current Release (VC 9.0):
4845     Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
4846     Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
4847
4848 2) iASL Compiler/Disassembler and Tools:
4849
4850 iASL/DTC: Major update for new grammar features. Allow generic data types 
4851 in 
4852 custom ACPI tables. Field names are now optional. Any line can be split 
4853 to 
4854 multiple lines using the continuation char (\). Large buffers now use 
4855 line-
4856 continuation character(s) and no colon on the continuation lines. See the 
4857 grammar 
4858 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 
4859 Moore.
4860
4861 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 
4862 statements. 
4863 Since the parser stuffs a "zero" as the return value for these statements 
4864 (due 
4865 to 
4866 the underlying AML grammar), they were seen as "return with value" by the 
4867 iASL 
4868 semantic checking. They are now seen correctly as "null" return 
4869 statements.
4870
4871 iASL: Check if a_REG declaration has a corresponding Operation Region. 
4872 Adds a 
4873 check for each _REG to ensure that there is in fact a corresponding 
4874 operation 
4875 region declaration in the same scope. If not, the _REG method is not very 
4876 useful 
4877 since it probably won't be executed. ACPICA BZ 915.
4878
4879 iASL/DTC: Finish support for expression evaluation. Added a new 
4880 expression 
4881 parser 
4882 that implements c-style operator precedence and parenthesization. ACPICA 
4883 bugzilla 
4884 908.
4885
4886 Disassembler/DTC: Remove support for () and <> style comments in data 
4887 tables. 
4888 Now 
4889 that DTC has full expression support, we don't want to have comment 
4890 strings 
4891 that 
4892 start with a parentheses or a less-than symbol. Now, only the standard /* 
4893 and 
4894 // 
4895 comments are supported, as well as the bracket [] comments.
4896
4897 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 
4898 "unusual" 
4899 headers in the acpidump file. Update the header validation to support 
4900 these 
4901 tables. Problem introduced in previous AcpiXtract version in the change 
4902 to 
4903 support "wrong checksum" error messages emitted by acpidump utility.
4904
4905 iASL: Add a * option to generate all template files (as a synonym for 
4906 ALL) 
4907 as 
4908 in 
4909 "iasl -T *" or "iasl -T ALL".
4910
4911 iASL/DTC: Do not abort compiler on fatal errors. We do not want to 
4912 completely 
4913 abort the compiler on "fatal" errors, simply should abort the current 
4914 compile. 
4915 This allows multiple compiles with a single (possibly wildcard) compiler 
4916 invocation.
4917
4918 ----------------------------------------
4919 16 March 2011. Summary of changes for version 20110316:
4920
4921 1) ACPI CA Core Subsystem:
4922
4923 Fixed a problem caused by a _PRW method appearing at the namespace root 
4924 scope 
4925 during the setup of wake GPEs. A fault could occur if a _PRW directly 
4926 under 
4927 the 
4928 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
4929
4930 Implemented support for "spurious" Global Lock interrupts. On some 
4931 systems, a 
4932 global lock interrupt can occur without the pending flag being set. Upon 
4933
4934 GL 
4935 interrupt, we now ensure that a thread is actually waiting for the lock 
4936 before 
4937 signaling GL availability. Rafael Wysocki, Bob Moore.
4938
4939 Example Code and Data Size: These are the sizes for the OS-independent 
4940 acpica.lib 
4941 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
4942 version of 
4943 the code includes the debug output trace mechanism and has a much larger 
4944 code 
4945 and 
4946 data size.
4947
4948   Previous Release (VC 9.0):
4949     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4950     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4951   Current Release (VC 9.0):
4952     Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
4953     Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
4954
4955 2) iASL Compiler/Disassembler and Tools:
4956
4957 Implemented full support for the "SLIC" ACPI table. Includes support in 
4958 the 
4959 header files, disassembler, table compiler, and template generator. Bob 
4960 Moore, 
4961 Lin Ming.
4962
4963 AcpiXtract: Correctly handle embedded comments and messages from 
4964 AcpiDump. 
4965 Apparently some or all versions of acpidump will occasionally emit a 
4966 comment 
4967 like 
4968 "Wrong checksum", etc., into the dump file. This was causing problems for 
4969 AcpiXtract. ACPICA BZ 905.
4970
4971 iASL: Fix the Linux makefile by removing an inadvertent double file 
4972 inclusion. 
4973 ACPICA BZ 913.
4974
4975 AcpiExec: Update installation of operation region handlers. Install one 
4976 handler 
4977 for a user-defined address space. This is used by the ASL test suite 
4978 (ASLTS).
4979
4980 ----------------------------------------
4981 11 February 2011. Summary of changes for version 20110211:
4982
4983 1) ACPI CA Core Subsystem:
4984
4985 Added a mechanism to defer _REG methods for some early-installed 
4986 handlers. 
4987 Most user handlers should be installed before call to 
4988 AcpiEnableSubsystem. 
4989 However, Event handlers and region handlers should be installed after 
4990 AcpiInitializeObjects. Override handlers for the "default" regions should 
4991 be 
4992 installed early, however. This change executes all _REG methods for the 
4993 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 
4994 chicken/egg issues between them. ACPICA BZ 848.
4995
4996 Implemented an optimization for GPE detection. This optimization will 
4997 simply 
4998 ignore GPE registers that contain no enabled GPEs -- there is no need to 
4999 read the register since this information is available internally. This 
5000 becomes more important on machines with a large GPE space. ACPICA 
5001 bugzilla 
5002 884. Lin Ming. Suggestion from Joe Liu.
5003
5004 Removed all use of the highly unreliable FADT revision field. The 
5005 revision 
5006 number in the FADT has been found to be completely unreliable and cannot 
5007 be 
5008 trusted. Only the actual table length can be used to infer the version. 
5009 This 
5010 change updates the ACPICA core and the disassembler so that both no 
5011 longer 
5012 even look at the FADT version and instead depend solely upon the FADT 
5013 length.
5014
5015 Fix an unresolved name issue for the no-debug and no-error-message source 
5016 generation cases. The _AcpiModuleName was left undefined in these cases, 
5017 but 
5018 it is actually needed as a parameter to some interfaces. Define 
5019 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
5020
5021 Split several large files (makefiles and project files updated)
5022   utglobal.c   -> utdecode.c
5023   dbcomds.c    -> dbmethod.c dbnames.c
5024   dsopcode.c   -> dsargs.c dscontrol.c
5025   dsload.c     -> dsload2.c
5026   aslanalyze.c -> aslbtypes.c aslwalks.c
5027
5028 Example Code and Data Size: These are the sizes for the OS-independent 
5029 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5030 debug version of the code includes the debug output trace mechanism and 
5031 has 
5032 a much larger code and data size.
5033
5034   Previous Release (VC 9.0):
5035     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5036     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5037   Current Release (VC 9.0):
5038     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5039     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5040
5041 2) iASL Compiler/Disassembler and Tools:
5042
5043 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 
5044 These are useful C-style macros with the standard definitions. ACPICA 
5045 bugzilla 898.
5046
5047 iASL/DTC: Added support for integer expressions and labels. Support for 
5048 full 
5049 expressions for all integer fields in all ACPI tables. Support for labels 
5050 in 
5051 "generic" portions of tables such as UEFI. See the iASL reference manual.
5052
5053 Debugger: Added a command to display the status of global handlers. The 
5054 "handlers" command will display op region, fixed event, and miscellaneous 
5055 global handlers. installation status -- and for op regions, whether 
5056 default 
5057 or user-installed handler will be used.
5058
5059 iASL: Warn if reserved method incorrectly returns a value. Many 
5060 predefined 
5061 names are defined such that they do not return a value. If implemented as 
5062
5063 method, issue a warning if such a name explicitly returns a value. ACPICA 
5064 Bugzilla 855.
5065
5066 iASL: Added detection of GPE method name conflicts. Detects a conflict 
5067 where 
5068 there are two GPE methods of the form _Lxy and _Exy in the same scope. 
5069 (For 
5070 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
5071
5072 iASL/DTC: Fixed a couple input scanner issues with comments and line 
5073 numbers. Comment remover could get confused and miss a comment ending. 
5074 Fixed 
5075 a problem with line counter maintenance.
5076
5077 iASL/DTC: Reduced the severity of some errors from fatal to error. There 
5078 is 
5079 no need to abort on simple errors within a field definition.
5080
5081 Debugger: Simplified the output of the help command. All help output now 
5082 in 
5083 a single screen, instead of help subcommands. ACPICA Bugzilla 897.
5084
5085 ----------------------------------------
5086 12 January 2011. Summary of changes for version 20110112:
5087
5088 1) ACPI CA Core Subsystem:
5089
5090 Fixed a race condition between method execution and namespace walks that 
5091 can 
5092 possibly cause a fault. The problem was apparently introduced in version 
5093 20100528 as a result of a performance optimization that reduces the 
5094 number 
5095 of 
5096 namespace walks upon method exit by using the delete_namespace_subtree 
5097 function instead of the delete_namespace_by_owner function used 
5098 previously. 
5099 Bug is a missing namespace lock in the delete_namespace_subtree function. 
5100 dana.myers@oracle.com
5101
5102 Fixed several issues and a possible fault with the automatic "serialized" 
5103 method support. History: This support changes a method to "serialized" on 
5104 the 
5105 fly if the method generates an AE_ALREADY_EXISTS error, indicating the 
5106 possibility that it cannot handle reentrancy. This fix repairs a couple 
5107 of 
5108 issues seen in the field, especially on machines with many cores:
5109
5110     1) Delete method children only upon the exit of the last thread,
5111        so as to not delete objects out from under other running threads
5112       (and possibly causing a fault.)
5113     2) Set the "serialized" bit for the method only upon the exit of the
5114        Last thread, so as to not cause deadlock when running threads
5115        attempt to exit.
5116     3) Cleanup the use of the AML "MethodFlags" and internal method flags
5117        so that there is no longer any confusion between the two.
5118
5119     Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
5120
5121 Debugger: Now lock the namespace for duration of a namespace dump. 
5122 Prevents 
5123 issues if the namespace is changing dynamically underneath the debugger. 
5124 Especially affects temporary namespace nodes, since the debugger displays 
5125 these also.
5126
5127 Updated the ordering of include files. The ACPICA headers should appear 
5128 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 
5129 set 
5130 any necessary compiler-specific defines, etc. Affects the ACPI-related 
5131 tools 
5132 and utilities.
5133
5134 Updated all ACPICA copyrights and signons to 2011. Added the 2011 
5135 copyright 
5136 to all module headers and signons, including the Linux header. This 
5137 affects 
5138 virtually every file in the ACPICA core subsystem, iASL compiler, and all 
5139 utilities.
5140
5141 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 
5142 project files for VC++ 6.0 are now obsolete. New project files can be 
5143 found 
5144 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 
5145 details.
5146
5147 Example Code and Data Size: These are the sizes for the OS-independent 
5148 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
5149 debug version of the code includes the debug output trace mechanism and 
5150 has a 
5151 much larger code and data size.
5152
5153   Previous Release (VC 6.0):
5154     Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
5155     Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
5156   Current Release (VC 9.0):
5157     Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5158     Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5159
5160 2) iASL Compiler/Disassembler and Tools:
5161
5162 iASL: Added generic data types to the Data Table compiler. Add "generic" 
5163 data 
5164 types such as UINT32, String, Unicode, etc., to simplify the generation 
5165 of 
5166 platform-defined tables such as UEFI. Lin Ming.
5167
5168 iASL: Added listing support for the Data Table Compiler. Adds listing 
5169 support 
5170 (-l) to display actual binary output for each line of input code.
5171
5172 ----------------------------------------
5173 09 December 2010. Summary of changes for version 20101209:
5174
5175 1) ACPI CA Core Subsystem:
5176
5177 Completed the major overhaul of the GPE support code that was begun in 
5178 July 
5179 2010. Major features include: removal of _PRW execution in ACPICA (host 
5180 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 
5181 changes to existing interfaces, simplification of GPE handler operation, 
5182 and 
5183 a handful of new interfaces:
5184
5185     AcpiUpdateAllGpes
5186     AcpiFinishGpe
5187     AcpiSetupGpeForWake
5188     AcpiSetGpeWakeMask
5189     One new file, evxfgpe.c to consolidate all external GPE interfaces.
5190
5191 See the ACPICA Programmer Reference for full details and programming 
5192 information. See the new section 4.4 "General Purpose Event (GPE) 
5193 Support" 
5194 for a full overview, and section 8.7 "ACPI General Purpose Event 
5195 Management" 
5196 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 
5197 Ming, 
5198 Bob Moore, Rafael Wysocki.
5199
5200 Implemented a new GPE feature for Windows compatibility, the "Implicit 
5201 Wake 
5202 GPE Notify". This feature will automatically issue a Notify(2) on a 
5203 device 
5204 when a Wake GPE is received if there is no corresponding GPE method or 
5205 handler. ACPICA BZ 870.
5206
5207 Fixed a problem with the Scope() operator during table parse and load 
5208 phase. 
5209 During load phase (table load or method execution), the scope operator 
5210 should 
5211 not enter the target into the namespace. Instead, it should open a new 
5212 scope 
5213 at the target location. Linux BZ 19462, ACPICA BZ 882.
5214
5215 Example Code and Data Size: These are the sizes for the OS-independent 
5216 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5217 debug version of the code includes the debug output trace mechanism and 
5218 has a 
5219 much larger code and data size.
5220
5221   Previous Release:
5222     Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
5223     Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
5224   Current Release:
5225     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5226     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5227
5228 2) iASL Compiler/Disassembler and Tools:
5229
5230 iASL: Relax the alphanumeric restriction on _CID strings. These strings 
5231 are 
5232 "bus-specific" per the ACPI specification, and therefore any characters 
5233 are 
5234 acceptable. The only checks that can be performed are for a null string 
5235 and 
5236 perhaps for a leading asterisk. ACPICA BZ 886.
5237
5238 iASL: Fixed a problem where a syntax error that caused a premature EOF 
5239 condition on the source file emitted a very confusing error message. The 
5240 premature EOF is now detected correctly. ACPICA BZ 891.
5241
5242 Disassembler: Decode the AccessSize within a Generic Address Structure 
5243 (byte 
5244 access, word access, etc.) Note, this field does not allow arbitrary bit 
5245 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
5246
5247 New: AcpiNames utility - Example namespace dump utility. Shows an example 
5248 of 
5249 ACPICA configuration for a minimal namespace dump utility. Uses table and 
5250 namespace managers, but no AML interpreter. Does not add any 
5251 functionality 
5252 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 
5253 partition and configure ACPICA. ACPICA BZ 883.
5254
5255 AML Debugger: Increased the debugger buffer size for method return 
5256 objects. 
5257 Was 4K, increased to 16K. Also enhanced error messages for debugger 
5258 method 
5259 execution, including the buffer overflow case.
5260
5261 ----------------------------------------
5262 13 October 2010. Summary of changes for version 20101013:
5263
5264 1) ACPI CA Core Subsystem:
5265
5266 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 
5267 now 
5268 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 
5269 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
5270
5271 Changed the type of the predefined namespace object _TZ from ThermalZone 
5272 to 
5273 Device. This was found to be confusing to the host software that 
5274 processes 
5275 the various thermal zones, since _TZ is not really a ThermalZone. 
5276 However, 
5277
5278 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 
5279 Zhang.
5280
5281 Added Windows Vista SP2 to the list of supported _OSI strings. The actual 
5282 string is "Windows 2006 SP2".
5283
5284 Eliminated duplicate code in AcpiUtExecute* functions. Now that the 
5285 nsrepair 
5286 code automatically repairs _HID-related strings, this type of code is no 
5287 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 
5288 878.
5289
5290 Example Code and Data Size: These are the sizes for the OS-independent 
5291 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5292 debug version of the code includes the debug output trace mechanism and 
5293 has a 
5294 much larger code and data size.
5295
5296   Previous Release:
5297     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5298     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5299   Current Release:
5300     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5301     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5302
5303 2) iASL Compiler/Disassembler and Tools:
5304
5305 iASL: Implemented additional compile-time validation for _HID strings. 
5306 The 
5307 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 
5308 length 
5309 of 
5310 the string must be exactly seven or eight characters. For both _HID and 
5311 _CID 
5312 strings, all characters must be alphanumeric. ACPICA BZ 874.
5313
5314 iASL: Allow certain "null" resource descriptors. Some BIOS code creates 
5315 descriptors that are mostly or all zeros, with the expectation that they 
5316 will 
5317 be filled in at runtime. iASL now allows this as long as there is a 
5318 "resource 
5319 tag" (name) associated with the descriptor, which gives the ASL a handle 
5320 needed to modify the descriptor. ACPICA BZ 873.
5321
5322 Added single-thread support to the generic Unix application OSL. 
5323 Primarily 
5324 for iASL support, this change removes the use of semaphores in the 
5325 single-
5326 threaded ACPICA tools/applications - increasing performance. The 
5327 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 
5328 option. ACPICA BZ 879.
5329
5330 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 
5331 support 
5332 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
5333
5334 iASL: Moved all compiler messages to a new file, aslmessages.h.
5335
5336 ----------------------------------------
5337 15 September 2010. Summary of changes for version 20100915:
5338
5339 1) ACPI CA Core Subsystem:
5340
5341 Removed the AcpiOsDerivePciId OSL interface. The various host 
5342 implementations 
5343 of this function were not OS-dependent and are now obsolete and can be 
5344 removed from all host OSLs. This function has been replaced by 
5345 AcpiHwDerivePciId, which is now part of the ACPICA core code. 
5346 AcpiHwDerivePciId has been implemented without recursion. Adds one new 
5347 module, hwpci.c. ACPICA BZ 857.
5348
5349 Implemented a dynamic repair for _HID and _CID strings. The following 
5350 problems are now repaired at runtime: 1) Remove a leading asterisk in the 
5351 string, and 2) the entire string is uppercased. Both repairs are in 
5352 accordance with the ACPI specification and will simplify host driver 
5353 code. 
5354 ACPICA BZ 871.
5355
5356 The ACPI_THREAD_ID type is no longer configurable, internally it is now 
5357 always UINT64. This simplifies the ACPICA code, especially any printf 
5358 output. 
5359 UINT64 is the only common data type for all thread_id types across all 
5360 operating systems. It is now up to the host OSL to cast the native 
5361 thread_id 
5362 type to UINT64 before returning the value to ACPICA (via 
5363 AcpiOsGetThreadId). 
5364 Lin Ming, Bob Moore.
5365
5366 Added the ACPI_INLINE type to enhance the ACPICA configuration. The 
5367 "inline" 
5368 keyword is not standard across compilers, and this type allows inline to 
5369 be 
5370 configured on a per-compiler basis. Lin Ming.
5371
5372 Made the system global AcpiGbl_SystemAwakeAndRunning publically 
5373 available. 
5374 Added an extern for this boolean in acpixf.h. Some hosts utilize this 
5375 value 
5376 during suspend/restore operations. ACPICA BZ 869.
5377
5378 All code that implements error/warning messages with the "ACPI:" prefix 
5379 has 
5380 been moved to a new module, utxferror.c.
5381
5382 The UINT64_OVERLAY was moved to utmath.c, which is the only module where 
5383 it 
5384 is used. ACPICA BZ 829. Lin Ming, Bob Moore.
5385
5386 Example Code and Data Size: These are the sizes for the OS-independent 
5387 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5388 debug version of the code includes the debug output trace mechanism and 
5389 has a 
5390 much larger code and data size.
5391
5392   Previous Release:
5393     Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
5394     Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
5395   Current Release:
5396     Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5397     Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5398
5399 2) iASL Compiler/Disassembler and Tools:
5400
5401 iASL/Disassembler: Write ACPI errors to stderr instead of the output 
5402 file. 
5403 This keeps the output files free of random error messages that may 
5404 originate 
5405 from within the namespace/interpreter code. Used this opportunity to 
5406 merge 
5407 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 
5408 866. Lin Ming, Bob Moore.
5409
5410 Tools: update some printfs for ansi warnings on size_t. Handle width 
5411 change 
5412 of size_t on 32-bit versus 64-bit generations. Lin Ming.
5413
5414 ----------------------------------------
5415 06 August 2010. Summary of changes for version 20100806:
5416
5417 1) ACPI CA Core Subsystem:
5418
5419 Designed and implemented a new host interface to the _OSI support code. 
5420 This 
5421 will allow the host to dynamically add or remove multiple _OSI strings, 
5422 as 
5423 well as install an optional handler that is called for each _OSI 
5424 invocation. 
5425 Also added a new AML debugger command, 'osi' to display and modify the 
5426 global 
5427 _OSI string table, and test support in the AcpiExec utility. See the 
5428 ACPICA 
5429 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
5430 New Functions:
5431     AcpiInstallInterface - Add an _OSI string.
5432     AcpiRemoveInterface - Delete an _OSI string.
5433     AcpiInstallInterfaceHandler - Install optional _OSI handler.
5434 Obsolete Functions:
5435     AcpiOsValidateInterface - no longer used.
5436 New Files:
5437     source/components/utilities/utosi.c
5438
5439 Re-introduced the support to enable multi-byte transfers for Embedded 
5440 Controller (EC) operation regions. A reported problem was found to be a 
5441 bug 
5442 in the host OS, not in the multi-byte support. Previously, the maximum 
5443 data 
5444 size passed to the EC operation region handler was a single byte. There 
5445 are 
5446 often EC Fields larger than one byte that need to be transferred, and it 
5447 is 
5448 useful for the EC driver to lock these as a single transaction. This 
5449 change 
5450 enables single transfers larger than 8 bits. This effectively changes the 
5451 access to the EC space from ByteAcc to AnyAcc, and will probably require 
5452 changes to the host OS Embedded Controller driver to enable 16/32/64/256-
5453 bit 
5454 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
5455
5456 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 
5457 prototype in acpiosxf.h had the output value pointer as a (void *).
5458 It should be a (UINT64 *). This may affect some host OSL code.
5459
5460 Fixed a couple problems with the recently modified Linux makefiles for 
5461 iASL 
5462 and AcpiExec. These new makefiles place the generated object files in the 
5463 local directory so that there can be no collisions between the files that 
5464 are 
5465 shared between them that are compiled with different options.
5466
5467 Example Code and Data Size: These are the sizes for the OS-independent 
5468 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5469 debug version of the code includes the debug output trace mechanism and 
5470 has a 
5471 much larger code and data size.
5472
5473   Previous Release:
5474     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5475     Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
5476   Current Release:
5477     Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
5478     Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
5479
5480 2) iASL Compiler/Disassembler and Tools:
5481
5482 iASL/Disassembler: Added a new option (-da, "disassemble all") to load 
5483 the 
5484 namespace from and disassemble an entire group of AML files. Useful for 
5485 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 
5486 and 
5487 disassembling with one simple command. ACPICA BZ 865. Lin Ming.
5488
5489 iASL: Allow multiple invocations of -e option. This change allows 
5490 multiple 
5491 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 
5492 834. 
5493 Lin Ming.
5494
5495 ----------------------------------------
5496 02 July 2010. Summary of changes for version 20100702:
5497
5498 1) ACPI CA Core Subsystem:
5499
5500 Implemented several updates to the recently added GPE reference count 
5501 support. The model for "wake" GPEs is changing to give the host OS 
5502 complete 
5503 control of these GPEs. Eventually, the ACPICA core will not execute any 
5504 _PRW 
5505 methods, since the host already must execute them. Also, additional 
5506 changes 
5507 were made to help ensure that the reference counts are kept in proper 
5508 synchronization with reality. Rafael J. Wysocki.
5509
5510 1) Ensure that GPEs are not enabled twice during initialization.
5511 2) Ensure that GPE enable masks stay in sync with the reference count.
5512 3) Do not inadvertently enable GPEs when writing GPE registers.
5513 4) Remove the internal wake reference counter and add new AcpiGpeWakeup 
5514 interface. This interface will set or clear individual GPEs for wakeup.
5515 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These 
5516 interfaces 
5517 are now used for "runtime" GPEs only.
5518
5519 Changed the behavior of the GPE install/remove handler interfaces. The 
5520 GPE 
5521 is 
5522 no longer disabled during this process, as it was found to cause problems 
5523 on 
5524 some machines. Rafael J. Wysocki.
5525
5526 Reverted a change introduced in version 20100528 to enable Embedded 
5527 Controller multi-byte transfers. This change was found to cause problems 
5528 with 
5529 Index Fields and possibly Bank Fields. It will be reintroduced when these 
5530 problems have been resolved.
5531
5532 Fixed a problem with references to Alias objects within Package Objects. 
5533
5534 reference to an Alias within the definition of a Package was not always 
5535 resolved properly. Aliases to objects like Processors, Thermal zones, 
5536 etc. 
5537 were resolved to the actual object instead of a reference to the object 
5538 as 
5539 it 
5540 should be. Package objects are only allowed to contain integer, string, 
5541 buffer, package, and reference objects. Redhat bugzilla 608648.
5542
5543 Example Code and Data Size: These are the sizes for the OS-independent 
5544 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5545 debug version of the code includes the debug output trace mechanism and 
5546 has a 
5547 much larger code and data size.
5548
5549   Previous Release:
5550     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5551     Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
5552   Current Release:
5553     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5554     Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
5555
5556 2) iASL Compiler/Disassembler and Tools:
5557
5558 iASL: Implemented a new compiler subsystem to allow definition and 
5559 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 
5560 These 
5561 are called "ACPI Data Tables", and the new compiler is the "Data Table 
5562 Compiler". This compiler is intended to simplify the existing error-prone 
5563 process of creating these tables for the BIOS, as well as allowing the 
5564 disassembly, modification, recompilation, and override of existing ACPI 
5565 data 
5566 tables. See the iASL User Guide for detailed information.
5567
5568 iASL: Implemented a new Template Generator option in support of the new 
5569 Data 
5570 Table Compiler. This option will create examples of all known ACPI tables 
5571 that can be used as the basis for table development. See the iASL 
5572 documentation and the -T option.
5573
5574 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 
5575 Descriptor Table).
5576
5577 Updated the Linux makefiles for iASL and AcpiExec to place the generated 
5578 object files in the local directory so that there can be no collisions 
5579 between the shared files between them that are generated with different 
5580 options.
5581
5582 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 
5583 Use 
5584 the #define __APPLE__ to enable this support.
5585
5586 ----------------------------------------
5587 28 May 2010. Summary of changes for version 20100528:
5588
5589 Note: The ACPI 4.0a specification was released on April 5, 2010 and is 
5590 available at www.acpi.info. This is primarily an errata release.
5591
5592 1) ACPI CA Core Subsystem:
5593
5594 Undefined ACPI tables: We are looking for the definitions for the 
5595 following 
5596 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
5597
5598 Implemented support to enable multi-byte transfers for Embedded 
5599 Controller 
5600 (EC) operation regions. Previously, the maximum data size passed to the 
5601 EC 
5602 operation region handler was a single byte. There are often EC Fields 
5603 larger 
5604 than one byte that need to be transferred, and it is useful for the EC 
5605 driver 
5606 to lock these as a single transaction. This change enables single 
5607 transfers 
5608 larger than 8 bits. This effectively changes the access to the EC space 
5609 from 
5610 ByteAcc to AnyAcc, and will probably require changes to the host OS 
5611 Embedded 
5612 Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
5613 bit 
5614 transfers. Alexey Starikovskiy, Lin Ming
5615
5616 Implemented a performance enhancement for namespace search and access. 
5617 This 
5618 change enhances the performance of namespace searches and walks by adding 
5619
5620 backpointer to the parent in each namespace node. On large namespaces, 
5621 this 
5622 change can improve overall ACPI performance by up to 9X. Adding a pointer 
5623 to 
5624 each namespace node increases the overall size of the internal namespace 
5625 by 
5626 about 5%, since each namespace entry usually consists of both a namespace 
5627 node and an ACPI operand object. However, this is the first growth of the 
5628 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
5629
5630 Implemented a performance optimization that reduces the number of 
5631 namespace 
5632 walks. On control method exit, only walk the namespace if the method is 
5633 known 
5634 to have created namespace objects outside of its local scope. Previously, 
5635 the 
5636 entire namespace was traversed on each control method exit. This change 
5637 can 
5638 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 
5639 Moore.
5640
5641 Added support to truncate I/O addresses to 16 bits for Windows 
5642 compatibility. 
5643 Some ASL code has been seen in the field that inadvertently has bits set 
5644 above bit 15. This feature is optional and is enabled if the BIOS 
5645 requests 
5646 any Windows OSI strings. It can also be enabled by the host OS. Matthew 
5647 Garrett, Bob Moore.
5648
5649 Added support to limit the maximum time for the ASL Sleep() operator. To 
5650 prevent accidental deep sleeps, limit the maximum time that Sleep() will 
5651 actually sleep. Configurable, the default maximum is two seconds. ACPICA 
5652 bugzilla 854.
5653
5654 Added run-time validation support for the _WDG and_WED Microsoft 
5655 predefined 
5656 methods. These objects are defined by "Windows Instrumentation", and are 
5657 not 
5658 part of the ACPI spec. ACPICA BZ 860.
5659
5660 Expanded all statistic counters used during namespace and device 
5661 initialization from 16 to 32 bits in order to support very large 
5662 namespaces.
5663
5664 Replaced all instances of %d in printf format specifiers with %u since 
5665 nearly 
5666 all integers in ACPICA are unsigned.
5667
5668 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 
5669 returned 
5670 as AE_NO_HANDLER.
5671
5672 Example Code and Data Size: These are the sizes for the OS-independent 
5673 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5674 debug version of the code includes the debug output trace mechanism and 
5675 has a 
5676 much larger code and data size.
5677
5678   Previous Release:
5679     Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
5680     Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
5681   Current Release:
5682     Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5683     Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
5684
5685 2) iASL Compiler/Disassembler and Tools:
5686
5687 iASL: Added compiler support for the _WDG and_WED Microsoft predefined 
5688 methods. These objects are defined by "Windows Instrumentation", and are 
5689 not 
5690 part of the ACPI spec. ACPICA BZ 860.
5691
5692 AcpiExec: added option to disable the memory tracking mechanism. The -dt 
5693 option will disable the tracking mechanism, which improves performance 
5694 considerably.
5695
5696 AcpiExec: Restructured the command line options into -d (disable) and -e 
5697 (enable) options.
5698
5699 ----------------------------------------
5700 28 April 2010. Summary of changes for version 20100428:
5701
5702 1) ACPI CA Core Subsystem:
5703
5704 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 
5705 including FADT-based and GPE Block Devices, execute any _PRW methods in 
5706 the 
5707 new table, and process any _Lxx/_Exx GPE methods in the new table. Any 
5708 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 
5709 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 
5710 Devices. Provides compatibility with other ACPI implementations. Two new 
5711 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 
5712 Moore.
5713
5714 Fixed a regression introduced in version 20100331 within the table 
5715 manager 
5716 where initial table loading could fail. This was introduced in the fix 
5717 for 
5718 AcpiReallocateRootTable. Also, renamed some of fields in the table 
5719 manager 
5720 data structures to clarify their meaning and use.
5721
5722 Fixed a possible allocation overrun during internal object copy in 
5723 AcpiUtCopySimpleObject. The original code did not correctly handle the 
5724 case 
5725 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 
5726 847.
5727
5728 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 
5729 possible access beyond end-of-allocation. Also, now fully validate 
5730 descriptor 
5731 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
5732
5733 Example Code and Data Size: These are the sizes for the OS-independent 
5734 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5735 debug version of the code includes the debug output trace mechanism and 
5736 has a 
5737 much larger code and data size.
5738
5739   Previous Release:
5740     Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
5741     Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
5742   Current Release:
5743     Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
5744     Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
5745
5746 2) iASL Compiler/Disassembler and Tools:
5747
5748 iASL: Implemented Min/Max/Len/Gran validation for address resource 
5749 descriptors. This change implements validation for the address fields 
5750 that 
5751 are common to all address-type resource descriptors. These checks are 
5752 implemented: Checks for valid Min/Max, length within the Min/Max window, 
5753 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 
5754 per 
5755 table 6-40 in the ACPI 4.0a specification. Also split the large 
5756 aslrestype1.c 
5757 and aslrestype2.c files into five new files. ACPICA BZ 840.
5758
5759 iASL: Added support for the _Wxx predefined names. This support was 
5760 missing 
5761 and these names were not recognized by the compiler as valid predefined 
5762 names. ACPICA BZ 851.
5763
5764 iASL: Added an error for all predefined names that are defined to return 
5765 no 
5766 value and thus must be implemented as Control Methods. These include all 
5767 of 
5768 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 
5769 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
5770
5771 iASL: Implemented the -ts option to emit hex AML data in ASL format, as 
5772 an 
5773 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 
5774 be 
5775 dynamically loaded via the Load() operator. Also cleaned up output for 
5776 the 
5777 -
5778 ta and -tc options. ACPICA BZ 853.
5779
5780 Tests: Added a new file with examples of extended iASL error checking. 
5781 Demonstrates the advanced error checking ability of the iASL compiler. 
5782 Available at tests/misc/badcode.asl.
5783
5784 ----------------------------------------
5785 31 March 2010. Summary of changes for version 20100331:
5786
5787 1) ACPI CA Core Subsystem:
5788
5789 Completed a major update for the GPE support in order to improve support 
5790 for 
5791 shared GPEs and to simplify both host OS and ACPICA code. Added a 
5792 reference 
5793 count mechanism to support shared GPEs that require multiple device 
5794 drivers. 
5795 Several external interfaces have changed. One external interface has been 
5796 removed. One new external interface was added. Most of the GPE external 
5797 interfaces now use the GPE spinlock instead of the events mutex (and the 
5798 Flags parameter for many GPE interfaces has been removed.) See the 
5799 updated 
5800 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 
5801 Rafael 
5802 Wysocki. ACPICA BZ 831.
5803
5804 Changed:
5805     AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
5806 Removed:
5807     AcpiSetGpeType
5808 New:
5809     AcpiSetGpe
5810
5811 Implemented write support for DataTable operation regions. These regions 
5812 are 
5813 defined via the DataTableRegion() operator. Previously, only read support 
5814 was 
5815 implemented. The ACPI specification allows DataTableRegions to be 
5816 read/write, 
5817 however.
5818
5819 Implemented a new subsystem option to force a copy of the DSDT to local 
5820 memory. Optionally copy the entire DSDT to local memory (instead of 
5821 simply 
5822 mapping it.) There are some (albeit very rare) BIOSs that corrupt or 
5823 replace 
5824 the original DSDT, creating the need for this option. Default is FALSE, 
5825 do 
5826 not copy the DSDT.
5827
5828 Implemented detection of a corrupted or replaced DSDT. This change adds 
5829 support to detect a DSDT that has been corrupted and/or replaced from 
5830 outside 
5831 the OS (by firmware). This is typically catastrophic for the system, but 
5832 has 
5833 been seen on some machines. Once this problem has been detected, the DSDT 
5834 copy option can be enabled via system configuration. Lin Ming, Bob Moore.
5835
5836 Fixed two problems with AcpiReallocateRootTable during the root table 
5837 copy. 
5838 When copying the root table to the new allocation, the length used was 
5839 incorrect. The new size was used instead of the current table size, 
5840 meaning 
5841 too much data was copied. Also, the count of available slots for ACPI 
5842 tables 
5843 was not set correctly. Alexey Starikovskiy, Bob Moore.
5844
5845 Example Code and Data Size: These are the sizes for the OS-independent 
5846 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5847 debug version of the code includes the debug output trace mechanism and 
5848 has a 
5849 much larger code and data size.
5850
5851   Previous Release:
5852     Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
5853     Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
5854   Current Release:
5855     Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
5856     Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
5857
5858 2) iASL Compiler/Disassembler and Tools:
5859
5860 iASL: Implement limited typechecking for values returned from predefined 
5861 control methods. The type of any returned static (unnamed) object is now 
5862 validated. For example, Return(1). ACPICA BZ 786.
5863
5864 iASL: Fixed a predefined name object verification regression. Fixes a 
5865 problem 
5866 introduced in version 20100304. An error is incorrectly generated if a 
5867 predefined name is declared as a static named object with a value defined 
5868 using the keywords "Zero", "One", or "Ones". Lin Ming.
5869
5870 iASL: Added Windows 7 support for the -g option (get local ACPI tables) 
5871 by 
5872 reducing the requested registry access rights. ACPICA BZ 842.
5873
5874 Disassembler: fixed a possible fault when generating External() 
5875 statements. 
5876 Introduced in commit ae7d6fd: Properly handle externals with parent-
5877 prefix 
5878 (carat). Fixes a string length allocation calculation. Lin Ming.
5879
5880 ----------------------------------------
5881 04 March 2010. Summary of changes for version 20100304:
5882
5883 1) ACPI CA Core Subsystem:
5884
5885 Fixed a possible problem with the AML Mutex handling function 
5886 AcpiExReleaseMutex where the function could fault under the very rare 
5887 condition when the interpreter has blocked, the interpreter lock is 
5888 released, 
5889 the interpreter is then reentered via the same thread, and attempts to 
5890 acquire an AML mutex that was previously acquired. FreeBSD report 140979. 
5891 Lin 
5892 Ming.
5893
5894 Implemented additional configuration support for the AML "Debug Object". 
5895 Output from the debug object can now be enabled via a global variable, 
5896 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 
5897 debugging. 
5898 This debug output is now available in the release version of ACPICA 
5899 instead 
5900 of just the debug version. Also, the entire debug output module can now 
5901 be 
5902 configured out of the ACPICA build if desired. One new file added, 
5903 executer/exdebug.c. Lin Ming, Bob Moore.
5904
5905 Added header support for the ACPI MCHI table (Management Controller Host 
5906 Interface Table). This table was added in ACPI 4.0, but the defining 
5907 document 
5908 has only recently become available.
5909
5910 Standardized output of integer values for ACPICA warnings/errors. Always 
5911 use 
5912 0x prefix for hex output, always use %u for unsigned integer decimal 
5913 output. 
5914 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 
5915 400 
5916 invocations.) These invocations were converted from the original 
5917 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
5918
5919 Example Code and Data Size: These are the sizes for the OS-independent 
5920 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5921 debug version of the code includes the debug output trace mechanism and 
5922 has a 
5923 much larger code and data size.
5924
5925   Previous Release:
5926     Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
5927     Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
5928   Current Release:
5929     Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
5930     Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
5931
5932 2) iASL Compiler/Disassembler and Tools:
5933
5934 iASL: Implemented typechecking support for static (non-control method) 
5935 predefined named objects that are declared with the Name() operator. For 
5936 example, the type of this object is now validated to be of type Integer: 
5937 Name(_BBN, 1). This change migrates the compiler to using the core 
5938 predefined 
5939 name table instead of maintaining a local version. Added a new file, 
5940 aslpredef.c. ACPICA BZ 832.
5941
5942 Disassembler: Added support for the ACPI 4.0 MCHI table.
5943
5944 ----------------------------------------
5945 21 January 2010. Summary of changes for version 20100121:
5946
5947 1) ACPI CA Core Subsystem:
5948
5949 Added the 2010 copyright to all module headers and signons. This affects 
5950 virtually every file in the ACPICA core subsystem, the iASL compiler, the 
5951 tools/utilities, and the test suites.
5952
5953 Implemented a change to the AcpiGetDevices interface to eliminate 
5954 unnecessary 
5955 invocations of the _STA method. In the case where a specific _HID is 
5956 requested, do not run _STA until a _HID match is found. This eliminates 
5957 potentially dozens of _STA calls during a search for a particular 
5958 device/HID, 
5959 which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
5960
5961 Implemented an additional repair for predefined method return values. 
5962 Attempt 
5963 to repair unexpected NULL elements within returned Package objects. 
5964 Create 
5965 an 
5966 Integer of value zero, a NULL String, or a zero-length Buffer as 
5967 appropriate. 
5968 ACPICA BZ 818. Lin Ming, Bob Moore.
5969
5970 Removed the obsolete ACPI_INTEGER data type. This type was introduced as 
5971 the 
5972 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 
5973 (with 
5974 64-bit AML integers). It is now obsolete and this change removes it from 
5975 the 
5976 ACPICA code base, replaced by UINT64. The original typedef has been 
5977 retained 
5978 for now for compatibility with existing device driver code. ACPICA BZ 
5979 824.
5980
5981 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 
5982 in 
5983 the parse tree object.
5984
5985 Added additional warning options for the gcc-4 generation. Updated the 
5986 source 
5987 accordingly. This includes some code restructuring to eliminate 
5988 unreachable 
5989 code, elimination of some gotos, elimination of unused return values, 
5990 some 
5991 additional casting, and removal of redundant declarations.
5992
5993 Example Code and Data Size: These are the sizes for the OS-independent 
5994 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5995 debug version of the code includes the debug output trace mechanism and 
5996 has a 
5997 much larger code and data size.
5998
5999   Previous Release:
6000     Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6001     Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6002   Current Release:
6003     Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
6004     Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
6005
6006 2) iASL Compiler/Disassembler and Tools:
6007
6008 No functional changes for this release.
6009
6010 ----------------------------------------
6011 14 December 2009. Summary of changes for version 20091214:
6012
6013 1) ACPI CA Core Subsystem:
6014
6015 Enhanced automatic data type conversions for predefined name repairs. 
6016 This 
6017 change expands the automatic repairs/conversions for predefined name 
6018 return 
6019 values to make Integers, Strings, and Buffers fully interchangeable. 
6020 Also, 
6021
6022 Buffer can be converted to a Package of Integers if necessary. The 
6023 nsrepair.c 
6024 module was completely restructured. Lin Ming, Bob Moore.
6025
6026 Implemented automatic removal of null package elements during predefined 
6027 name 
6028 repairs. This change will automatically remove embedded and trailing NULL 
6029 package elements from returned package objects that are defined to 
6030 contain 
6031
6032 variable number of sub-packages. The driver is then presented with a 
6033 package 
6034 with no null elements to deal with. ACPICA BZ 819.
6035
6036 Implemented a repair for the predefined _FDE and _GTM names. The expected 
6037 return value for both names is a Buffer of 5 DWORDs. This repair fixes 
6038 two 
6039 possible problems (both seen in the field), where a package of integers 
6040 is 
6041 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 
6042 Kim.
6043
6044 Implemented additional module-level code support. This change will 
6045 properly 
6046 execute module-level code that is not at the root of the namespace (under 
6047
6048 Device object, etc.). Now executes the code within the current scope 
6049 instead 
6050 of the root. ACPICA BZ 762. Lin Ming.
6051
6052 Fixed possible mutex acquisition errors when running _REG methods. Fixes 
6053
6054 problem where mutex errors can occur when running a _REG method that is 
6055 in 
6056 the same scope as a method-defined operation region or an operation 
6057 region 
6058 under a module-level IF block. This type of code is rare, so the problem 
6059 has 
6060 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
6061
6062 Fixed a possible memory leak during module-level code execution. An 
6063 object 
6064 could be leaked for each block of executed module-level code if the 
6065 interpreter slack mode is enabled This change deletes any implicitly 
6066 returned 
6067 object from the module-level code block. Lin Ming.
6068
6069 Removed messages for successful predefined repair(s). The repair 
6070 mechanism 
6071 was considered too wordy. Now, messages are only unconditionally emitted 
6072 if 
6073 the return object cannot be repaired. Existing messages for successful 
6074 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 
6075 827.
6076
6077 Example Code and Data Size: These are the sizes for the OS-independent 
6078 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6079 debug version of the code includes the debug output trace mechanism and 
6080 has a 
6081 much larger code and data size.
6082
6083   Previous Release:
6084     Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
6085     Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
6086   Current Release:
6087     Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6088     Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6089
6090 2) iASL Compiler/Disassembler and Tools:
6091
6092 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 
6093 files 
6094 were no longer automatically removed at the termination of the compile.
6095
6096 acpiexec: Implemented the -f option to specify default region fill value. 
6097 This option specifies the value used to initialize buffers that simulate 
6098 operation regions. Default value is zero. Useful for debugging problems 
6099 that 
6100 depend on a specific initial value for a region or field.
6101
6102 ----------------------------------------
6103 12 November 2009. Summary of changes for version 20091112:
6104
6105 1) ACPI CA Core Subsystem:
6106
6107 Implemented a post-order callback to AcpiWalkNamespace. The existing 
6108 interface only has a pre-order callback. This change adds an additional 
6109 parameter for a post-order callback which will be more useful for bus 
6110 scans. 
6111 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
6112
6113 Modified the behavior of the operation region memory mapping cache for 
6114 SystemMemory. Ensure that the memory mappings created for operation 
6115 regions 
6116 do not cross 4K page boundaries. Crossing a page boundary while mapping 
6117 regions can cause kernel warnings on some hosts if the pages have 
6118 different 
6119 attributes. Such regions are probably BIOS bugs, and this is the 
6120 workaround. 
6121 Linux BZ 14445. Lin Ming.
6122
6123 Implemented an automatic repair for predefined methods that must return 
6124 sorted lists. This change will repair (by sorting) packages returned by 
6125 _ALR, 
6126 _PSS, and _TSS. Drivers can now assume that the packages are correctly 
6127 sorted 
6128 and do not contain NULL package elements. Adds one new file, 
6129 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
6130
6131 Fixed a possible fault during predefined name validation if a return 
6132 Package 
6133 object contains NULL elements. Also adds a warning if a NULL element is 
6134 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 
6135 may 
6136 include repair or removal of all such NULL elements where possible.
6137
6138 Implemented additional module-level executable AML code support. This 
6139 change 
6140 will execute module-level code that is not at the root of the namespace 
6141 (under a Device object, etc.) at table load time. Module-level executable 
6142 AML 
6143 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
6144
6145 Implemented a new internal function to create Integer objects. This 
6146 function 
6147 simplifies miscellaneous object creation code. ACPICA BZ 823.
6148
6149 Reduced the severity of predefined repair messages, Warning to Info. 
6150 Since 
6151 the object was successfully repaired, a warning is too severe. Reduced to 
6152 an 
6153 info message for now. These messages may eventually be changed to debug-
6154 only. 
6155 ACPICA BZ 812.
6156
6157 Example Code and Data Size: These are the sizes for the OS-independent 
6158 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6159 debug version of the code includes the debug output trace mechanism and 
6160 has a 
6161 much larger code and data size.
6162
6163   Previous Release:
6164     Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
6165     Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
6166   Current Release:
6167     Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
6168     Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
6169
6170 2) iASL Compiler/Disassembler and Tools:
6171
6172 iASL: Implemented Switch() with While(1) so that Break works correctly. 
6173 This 
6174 change correctly implements the Switch operator with a surrounding 
6175 While(1) 
6176 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
6177
6178 iASL: Added a message if a package initializer list is shorter than 
6179 package 
6180 length. Adds a new remark for a Package() declaration if an initializer 
6181 list 
6182 exists, but is shorter than the declared length of the package. Although 
6183 technically legal, this is probably a coding error and it is seen in the 
6184 field. ACPICA BZ 815. Lin Ming, Bob Moore.
6185
6186 iASL: Fixed a problem where the compiler could fault after the maximum 
6187 number 
6188 of errors was reached (200).
6189
6190 acpixtract: Fixed a possible warning for pointer cast if the compiler 
6191 warning 
6192 level set very high.
6193
6194 ----------------------------------------
6195 13 October 2009. Summary of changes for version 20091013:
6196
6197 1) ACPI CA Core Subsystem:
6198
6199 Fixed a problem where an Operation Region _REG method could be executed 
6200 more 
6201 than once. If a custom address space handler is installed by the host 
6202 before 
6203 the "initialize operation regions" phase of the ACPICA initialization, 
6204 any 
6205 _REG methods for that address space could be executed twice. This change 
6206 fixes the problem. ACPICA BZ 427. Lin Ming.
6207
6208 Fixed a possible memory leak for the Scope() ASL operator. When the exact 
6209 invocation of "Scope(\)" is executed (change scope to root), one internal 
6210 operand object was leaked. Lin Ming.
6211
6212 Implemented a run-time repair for the _MAT predefined method. If the _MAT 
6213 return value is defined as a Field object in the AML, and the field
6214 size is less than or equal to the default width of an integer (32 or 
6215 64),_MAT 
6216 can incorrectly return an Integer instead of a Buffer. ACPICA now 
6217 automatically repairs this problem. ACPICA BZ 810.
6218
6219 Implemented a run-time repair for the _BIF and _BIX predefined methods. 
6220 The 
6221 "OEM Information" field is often incorrectly returned as an Integer with 
6222 value zero if the field is not supported by the platform. This is due to 
6223 an 
6224 ambiguity in the ACPI specification. The field should always be a string. 
6225 ACPICA now automatically repairs this problem by returning a NULL string 
6226 within the returned Package. ACPICA BZ 807.
6227
6228 Example Code and Data Size: These are the sizes for the OS-independent 
6229 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6230 debug version of the code includes the debug output trace mechanism and 
6231 has a 
6232 much larger code and data size.
6233
6234   Previous Release:
6235     Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
6236     Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
6237   Current Release:
6238     Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
6239     Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
6240
6241 2) iASL Compiler/Disassembler and Tools:
6242
6243 Disassembler: Fixed a problem where references to external symbols that 
6244 contained one or more parent-prefixes (carats) were not handled 
6245 correctly, 
6246 possibly causing a fault. ACPICA BZ 806. Lin Ming.
6247
6248 Disassembler: Restructured the code so that all functions that handle 
6249 external symbols are in a single module. One new file is added, 
6250 common/dmextern.c.
6251
6252 AML Debugger: Added a max count argument for the Batch command (which 
6253 executes multiple predefined methods within the namespace.)
6254
6255 iASL: Updated the compiler documentation (User Reference.) Available at 
6256 http://www.acpica.org/documentation/. ACPICA BZ 750.
6257
6258 AcpiXtract: Updated for Lint and other formatting changes. Close all open 
6259 files.
6260
6261 ----------------------------------------
6262 03 September 2009. Summary of changes for version 20090903:
6263
6264 1) ACPI CA Core Subsystem:
6265
6266 For Windows Vista compatibility, added the automatic execution of an _INI 
6267 method located at the namespace root (\_INI). This method is executed at 
6268 table load time. This support is in addition to the automatic execution 
6269 of 
6270 \_SB._INI. Lin Ming.
6271
6272 Fixed a possible memory leak in the interpreter for AML package objects 
6273 if 
6274 the package initializer list is longer than the defined size of the 
6275 package. 
6276 This apparently can only happen if the BIOS changes the package size on 
6277 the 
6278 fly (seen in a _PSS object), as ASL compilers do not allow this. The 
6279 interpreter will truncate the package to the defined size (and issue an 
6280 error 
6281 message), but previously could leave the extra objects undeleted if they 
6282 were 
6283 pre-created during the argument processing (such is the case if the 
6284 package 
6285 consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
6286
6287 Fixed a problem seen when a Buffer or String is stored to itself via ASL. 
6288 This has been reported in the field. Previously, ACPICA would zero out 
6289 the 
6290 buffer/string. Now, the operation is treated as a noop. Provides Windows 
6291 compatibility. ACPICA BZ 803. Lin Ming.
6292
6293 Removed an extraneous error message for ASL constructs of the form 
6294 Store(LocalX,LocalX) when LocalX is uninitialized. These curious 
6295 statements 
6296 are seen in many BIOSs and are once again treated as NOOPs and no error 
6297 is 
6298 emitted when they are encountered. ACPICA BZ 785.
6299
6300 Fixed an extraneous warning message if a _DSM reserved method returns a 
6301 Package object. _DSM can return any type of object, so validation on the 
6302 return type cannot be performed. ACPICA BZ 802.
6303
6304 Example Code and Data Size: These are the sizes for the OS-independent 
6305 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6306 debug version of the code includes the debug output trace mechanism and 
6307 has a 
6308 much larger code and data size.
6309
6310   Previous Release:
6311     Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
6312     Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
6313   Current Release:
6314     Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
6315     Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
6316
6317 2) iASL Compiler/Disassembler and Tools:
6318
6319 iASL: Fixed a problem with the use of the Alias operator and Resource 
6320 Templates. The correct alias is now constructed and no error is emitted. 
6321 ACPICA BZ 738.
6322
6323 iASL: Implemented the -I option to specify additional search directories 
6324 for 
6325 include files. Allows multiple additional search paths for include files. 
6326 Directories are searched in the order specified on the command line 
6327 (after 
6328 the local directory is searched.) ACPICA BZ 800.
6329
6330 iASL: Fixed a problem where the full pathname for include files was not 
6331 emitted for warnings/errors. This caused the IDE support to not work 
6332 properly. ACPICA BZ 765.
6333
6334 iASL: Implemented the -@ option to specify a Windows-style response file 
6335 containing additional command line options. ACPICA BZ 801.
6336
6337 AcpiExec: Added support to load multiple AML files simultaneously (such 
6338 as 
6339
6340 DSDT and multiple SSDTs). Also added support for wildcards within the AML 
6341 pathname. These features allow all machine tables to be easily loaded and 
6342 debugged together. ACPICA BZ 804.
6343
6344 Disassembler: Added missing support for disassembly of HEST table Error 
6345 Bank 
6346 subtables. 
6347
6348 ----------------------------------------
6349 30 July 2009. Summary of changes for version 20090730:
6350
6351 The ACPI 4.0 implementation for ACPICA is complete with this release.
6352
6353 1) ACPI CA Core Subsystem:
6354
6355 ACPI 4.0: Added header file support for all new and changed ACPI tables. 
6356 Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 
6357 new 
6358 for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 
6359 BERT, 
6360 EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 
6361 There 
6362 have been some ACPI 4.0 changes to other existing tables. Split the large 
6363 actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
6364
6365 ACPI 4.0: Implemented predefined name validation for all new names. There 
6366 are 
6367 31 new names in ACPI 4.0. The predefined validation module was split into 
6368 two 
6369 files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
6370
6371 Implemented support for so-called "module-level executable code". This is 
6372 executable AML code that exists outside of any control method and is 
6373 intended 
6374 to be executed at table load time. Although illegal since ACPI 2.0, this 
6375 type 
6376 of code still exists and is apparently still being created. Blocks of 
6377 this 
6378 code are now detected and executed as intended. Currently, the code 
6379 blocks 
6380 must exist under either an If, Else, or While construct; these are the 
6381 typical cases seen in the field. ACPICA BZ 762. Lin Ming.
6382
6383 Implemented an automatic dynamic repair for predefined names that return 
6384 nested Package objects. This applies to predefined names that are defined 
6385 to 
6386 return a variable-length Package of sub-packages. If the number of sub-
6387 packages is one, BIOS code is occasionally seen that creates a simple 
6388 single 
6389 package with no sub-packages. This code attempts to fix the problem by 
6390 wrapping a new package object around the existing package. These methods 
6391 can 
6392 be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 
6393 BZ 
6394 790.
6395
6396 Fixed a regression introduced in 20090625 for the AcpiGetDevices 
6397 interface. 
6398 The _HID/_CID matching was broken and no longer matched IDs correctly. 
6399 ACPICA 
6400 BZ 793.
6401
6402 Fixed a problem with AcpiReset where the reset would silently fail if the 
6403 register was one of the protected I/O ports. AcpiReset now bypasses the 
6404 port 
6405 validation mechanism. This may eventually be driven into the 
6406 AcpiRead/Write 
6407 interfaces.
6408
6409 Fixed a regression related to the recent update of the AcpiRead/Write 
6410 interfaces. A sleep/suspend could fail if the optional PM2 Control 
6411 register 
6412 does not exist during an attempt to write the Bus Master Arbitration bit. 
6413 (However, some hosts already delete the code that writes this bit, and 
6414 the 
6415 code may in fact be obsolete at this date.) ACPICA BZ 799.
6416
6417 Fixed a problem where AcpiTerminate could fault if inadvertently called 
6418 twice 
6419 in succession. ACPICA BZ 795.
6420
6421 Example Code and Data Size: These are the sizes for the OS-independent 
6422 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6423 debug version of the code includes the debug output trace mechanism and 
6424 has a 
6425 much larger code and data size.
6426
6427   Previous Release:
6428     Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
6429     Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
6430   Current Release:
6431     Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
6432     Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
6433
6434 2) iASL Compiler/Disassembler and Tools:
6435
6436 ACPI 4.0: Implemented disassembler support for all new ACPI tables and 
6437 changes to existing tables. ACPICA BZ 775.
6438
6439 ----------------------------------------
6440 25 June 2009. Summary of changes for version 20090625:
6441
6442 The ACPI 4.0 Specification was released on June 16 and is available at 
6443 www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 
6444 continue for the next few releases.
6445
6446 1) ACPI CA Core Subsystem:
6447
6448 ACPI 4.0: Implemented interpreter support for the IPMI operation region 
6449 address space. Includes support for bi-directional data buffers and an 
6450 IPMI 
6451 address space handler (to be installed by an IPMI device driver.) ACPICA 
6452 BZ 
6453 773. Lin Ming.
6454
6455 ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 
6456 Includes 
6457 support in both the header files and the disassembler.
6458
6459 Completed a major update for the AcpiGetObjectInfo external interface. 
6460 Changes include:
6461  - Support for variable, unlimited length HID, UID, and CID strings.
6462  - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 
6463 etc.)
6464  - Call the _SxW power methods on behalf of a device object.
6465  - Determine if a device is a PCI root bridge.
6466  - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
6467 These changes will require an update to all callers of this interface. 
6468 See 
6469 the updated ACPICA Programmer Reference for details. One new source file 
6470 has 
6471 been added - utilities/utids.c. ACPICA BZ 368, 780.
6472
6473 Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 
6474 transfers. The Value parameter has been extended from 32 bits to 64 bits 
6475 in 
6476 order to support new ACPI 4.0 tables. These changes will require an 
6477 update 
6478 to 
6479 all callers of these interfaces. See the ACPICA Programmer Reference for 
6480 details. ACPICA BZ 768.
6481
6482 Fixed several problems with AcpiAttachData. The handler was not invoked 
6483 when 
6484 the host node was deleted. The data sub-object was not automatically 
6485 deleted 
6486 when the host node was deleted. The interface to the handler had an 
6487 unused 
6488 parameter, this was removed. ACPICA BZ 778.
6489
6490 Enhanced the function that dumps ACPI table headers. All non-printable 
6491 characters in the string fields are now replaced with '?' (Signature, 
6492 OemId, 
6493 OemTableId, and CompilerId.) ACPI tables with non-printable characters in 
6494 these fields are occasionally seen in the field. ACPICA BZ 788.
6495
6496 Fixed a problem with predefined method repair code where the code that 
6497 attempts to repair/convert an object of incorrect type is only executed 
6498 on 
6499 the first time the predefined method is called. The mechanism that 
6500 disables 
6501 warnings on subsequent calls was interfering with the repair mechanism. 
6502 ACPICA BZ 781.
6503
6504 Fixed a possible memory leak in the predefined validation/repair code 
6505 when 
6506
6507 buffer is automatically converted to an expected string object.
6508
6509 Removed obsolete 16-bit files from the distribution and from the current 
6510 git 
6511 tree head. ACPICA BZ 776.
6512
6513 Example Code and Data Size: These are the sizes for the OS-independent 
6514 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6515 debug version of the code includes the debug output trace mechanism and 
6516 has a 
6517 much larger code and data size.
6518
6519   Previous Release:
6520     Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
6521     Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
6522   Current Release:
6523     Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
6524     Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
6525
6526 2) iASL Compiler/Disassembler and Tools:
6527
6528 ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 
6529 operation region keyword. ACPICA BZ 771, 772. Lin Ming.
6530
6531 ACPI 4.0: iASL - implemented compile-time validation support for all new 
6532 predefined names and control methods (31 total). ACPICA BZ 769.
6533
6534 ----------------------------------------
6535 21 May 2009. Summary of changes for version 20090521:
6536
6537 1) ACPI CA Core Subsystem:
6538
6539 Disabled the preservation of the SCI enable bit in the PM1 control 
6540 register. 
6541 The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 
6542 to 
6543 be 
6544 a "preserved" bit - "OSPM always preserves this bit position", section 
6545 4.7.3.2.1. However, some machines fail if this bit is in fact preserved 
6546 because the bit needs to be explicitly set by the OS as a workaround. No 
6547 machines fail if the bit is not preserved. Therefore, ACPICA no longer 
6548 attempts to preserve this bit.
6549
6550 Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 
6551 incorrectly formed _PRT package could cause a fault. Added validation to 
6552 ensure that each package element is actually a sub-package.
6553
6554 Implemented a new interface to install or override a single control 
6555 method, 
6556 AcpiInstallMethod. This interface is useful when debugging in order to 
6557 repair 
6558 an existing method or to install a missing method without having to 
6559 override 
6560 the entire ACPI table. See the ACPICA Programmer Reference for use and 
6561 examples. Lin Ming, Bob Moore.
6562
6563 Fixed several reference count issues with the DdbHandle object that is 
6564 created from a Load or LoadTable operator. Prevent premature deletion of 
6565 the 
6566 object. Also, mark the object as invalid once the table has been 
6567 unloaded. 
6568 This is needed because the handle itself may not be deleted after the 
6569 table 
6570 unload, depending on whether it has been stored in a named object by the 
6571 caller. Lin Ming.
6572
6573 Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 
6574 mutexes of the same sync level are acquired but then not released in 
6575 strict 
6576 opposite order, the internally maintained Current Sync Level becomes 
6577 confused 
6578 and can cause subsequent execution errors. ACPICA BZ 471.
6579
6580 Changed the allowable release order for ASL mutex objects. The ACPI 4.0 
6581 specification has been changed to make the SyncLevel for mutex objects 
6582 more 
6583 useful. When releasing a mutex, the SyncLevel of the mutex must now be 
6584 the 
6585 same as the current sync level. This makes more sense than the previous 
6586 rule 
6587 (SyncLevel less than or equal). This change updates the code to match the 
6588 specification.
6589
6590 Fixed a problem with the local version of the AcpiOsPurgeCache function. 
6591 The 
6592 (local) cache must be locked during all cache object deletions. Andrew 
6593 Baumann.
6594
6595 Updated the Load operator to use operation region interfaces. This 
6596 replaces 
6597 direct memory mapping with region access calls. Now, all region accesses 
6598 go 
6599 through the installed region handler as they should.
6600
6601 Simplified and optimized the NsGetNextNode function. Reduced parameter 
6602 count 
6603 and reduced code for this frequently used function.
6604
6605 Example Code and Data Size: These are the sizes for the OS-independent 
6606 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6607 debug version of the code includes the debug output trace mechanism and 
6608 has a 
6609 much larger code and data size.
6610
6611   Previous Release:
6612     Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
6613     Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
6614   Current Release:
6615     Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
6616     Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
6617
6618 2) iASL Compiler/Disassembler and Tools:
6619
6620 Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 
6621 problems 
6622 with sub-table disassembly and handling invalid sub-tables. Attempt 
6623 recovery 
6624 after an invalid sub-table ID.
6625
6626 ----------------------------------------
6627 22 April 2009. Summary of changes for version 20090422:
6628
6629 1) ACPI CA Core Subsystem:
6630
6631 Fixed a compatibility issue with the recently released I/O port 
6632 protection 
6633 mechanism. For windows compatibility, 1) On a port protection violation, 
6634 simply ignore the request and do not return an exception (allow the 
6635 control 
6636 method to continue execution.) 2) If only part of the request overlaps a 
6637 protected port, read/write the individual ports that are not protected. 
6638 Linux 
6639 BZ 13036. Lin Ming
6640
6641 Enhanced the execution of the ASL/AML BreakPoint operator so that it 
6642 actually 
6643 breaks into the AML debugger if the debugger is present. This matches the 
6644 ACPI-defined behavior.
6645
6646 Fixed several possible warnings related to the use of the configurable 
6647 ACPI_THREAD_ID. This type can now be configured as either an integer or a 
6648 pointer with no warnings. Also fixes several warnings in printf-like 
6649 statements for the 64-bit build when the type is configured as a pointer. 
6650 ACPICA BZ 766, 767.
6651
6652 Fixed a number of possible warnings when compiling with gcc 4+ (depending 
6653 on 
6654 warning options.) Examples include printf formats, aliasing, unused 
6655 globals, 
6656 missing prototypes, missing switch default statements, use of non-ANSI 
6657 library functions, use of non-ANSI constructs. See generate/unix/Makefile 
6658 for 
6659 a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
6660
6661 Example Code and Data Size: These are the sizes for the OS-independent 
6662 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6663 debug version of the code includes the debug output trace mechanism and 
6664 has a 
6665 much larger code and data size.
6666
6667   Previous Release:
6668     Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
6669     Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
6670   Current Release:
6671     Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
6672     Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
6673
6674 2) iASL Compiler/Disassembler and Tools:
6675
6676 iASL: Fixed a generation warning from Bison 2.3 and fixed several 
6677 warnings 
6678 on 
6679 the 64-bit build.
6680
6681 iASL: Fixed a problem where the Unix/Linux versions of the compiler could 
6682 not 
6683 correctly digest Windows/DOS formatted files (with CR/LF).
6684
6685 iASL: Added a new option for "quiet mode" (-va) that produces only the 
6686 compilation summary, not individual errors and warnings. Useful for large 
6687 batch compilations.
6688
6689 AcpiExec: Implemented a new option (-z) to enable a forced 
6690 semaphore/mutex 
6691 timeout that can be used to detect hang conditions during execution of 
6692 AML 
6693 code (includes both internal semaphores and AML-defined mutexes and 
6694 events.)
6695
6696 Added new makefiles for the generation of acpica in a generic unix-like 
6697 environment. These makefiles are intended to generate the acpica tools 
6698 and 
6699 utilities from the original acpica git source tree structure.
6700
6701 Test Suites: Updated and cleaned up the documentation files. Updated the 
6702 copyrights to 2009, affecting all source files. Use the new version of 
6703 iASL 
6704 with quiet mode. Increased the number of available semaphores in the 
6705 Windows 
6706 OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 
6707 added 
6708 an alternate implementation of the semaphore timeout to allow aslts to 
6709 execute fully on Cygwin.
6710
6711 ----------------------------------------
6712 20 March 2009. Summary of changes for version 20090320:
6713
6714 1) ACPI CA Core Subsystem:
6715
6716 Fixed a possible race condition between AcpiWalkNamespace and dynamic 
6717 table 
6718 unloads. Added a reader/writer locking mechanism to allow multiple 
6719 concurrent 
6720 namespace walks (readers), but block a dynamic table unload until it can 
6721 gain 
6722 exclusive write access to the namespace. This fixes a problem where a 
6723 table 
6724 unload could (possibly catastrophically) delete the portion of the 
6725 namespace 
6726 that is currently being examined by a walk. Adds a new file, utlock.c, 
6727 that 
6728 implements the reader/writer lock mechanism. ACPICA BZ 749.
6729
6730 Fixed a regression introduced in version 20090220 where a change to the 
6731 FADT 
6732 handling could cause the ACPICA subsystem to access non-existent I/O 
6733 ports.
6734
6735 Modified the handling of FADT register and table (FACS/DSDT) addresses. 
6736 The 
6737 FADT can contain both 32-bit and 64-bit versions of these addresses. 
6738 Previously, the 64-bit versions were favored, meaning that if both 32 and 
6739 64 
6740 versions were valid, but not equal, the 64-bit version was used. This was 
6741 found to cause some machines to fail. Now, in this case, the 32-bit 
6742 version 
6743 is used instead. This now matches the Windows behavior.
6744
6745 Implemented a new mechanism to protect certain I/O ports. Provides 
6746 Microsoft 
6747 compatibility and protects the standard PC I/O ports from access via AML 
6748 code. Adds a new file, hwvalid.c
6749
6750 Fixed a possible extraneous warning message from the FADT support. The 
6751 message warns of a 32/64 length mismatch between the legacy and GAS 
6752 definitions for a register.
6753
6754 Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 
6755 is 
6756 made obsolete by the port protection mechanism above. It was previously 
6757 used 
6758 to validate the entire address range of an operation region, which could 
6759 be 
6760 incorrect if the range included illegal ports, but fields within the 
6761 operation region did not actually access those ports. Validation is now 
6762 performed on a per-field basis instead of the entire region.
6763
6764 Modified the handling of the PM1 Status Register ignored bit (bit 11.) 
6765 Ignored bits must be "preserved" according to the ACPI spec. Usually, 
6766 this 
6767 means a read/modify/write when writing to the register. However, for 
6768 status 
6769 registers, writing a one means clear the event. Writing a zero means 
6770 preserve 
6771 the event (do not clear.) This behavior is clarified in the ACPI 4.0 
6772 spec, 
6773 and the ACPICA code now simply always writes a zero to the ignored bit.
6774
6775 Modified the handling of ignored bits for the PM1 A/B Control Registers. 
6776 As 
6777 per the ACPI specification, for the control registers, preserve 
6778 (read/modify/write) all bits that are defined as either reserved or 
6779 ignored.
6780
6781 Updated the handling of write-only bits in the PM1 A/B Control Registers. 
6782 When reading the register, zero the write-only bits as per the ACPI spec. 
6783 ACPICA BZ 443. Lin Ming.
6784
6785 Removed "Linux" from the list of supported _OSI strings. Linux no longer 
6786 wants to reply true to this request. The Windows strings are the only 
6787 paths 
6788 through the AML that are tested and known to work properly.
6789
6790   Previous Release:
6791     Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
6792     Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
6793   Current Release:
6794     Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
6795     Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
6796
6797 2) iASL Compiler/Disassembler and Tools:
6798
6799 Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 
6800 and 
6801 aetables.c
6802
6803 ----------------------------------------
6804 20 February 2009. Summary of changes for version 20090220:
6805
6806 1) ACPI CA Core Subsystem:
6807
6808 Optimized the ACPI register locking. Removed locking for reads from the 
6809 ACPI 
6810 bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 
6811 is 
6812 not required when reading the single-bit registers. The 
6813 AcpiGetRegisterUnlocked function is no longer needed and has been 
6814 removed. 
6815 This will improve performance for reads on these registers. ACPICA BZ 
6816 760.
6817
6818 Fixed the parameter validation for AcpiRead/Write. Now return 
6819 AE_BAD_PARAMETER if the input register pointer is null, and 
6820 AE_BAD_ADDRESS 
6821 if 
6822 the register has an address of zero. Previously, these cases simply 
6823 returned 
6824 AE_OK. For optional registers such as PM1B status/enable/control, the 
6825 caller 
6826 should check for a valid register address before calling. ACPICA BZ 748.
6827
6828 Renamed the external ACPI bit register access functions. Renamed 
6829 AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 
6830 functions. The new names are AcpiReadBitRegister and 
6831 AcpiWriteBitRegister. 
6832 Also, restructured the code for these functions by simplifying the code 
6833 path 
6834 and condensing duplicate code to reduce code size.
6835
6836 Added new functions to transparently handle the possibly split PM1 A/B 
6837 registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 
6838 functions 
6839 now handle the split registers for PM1 Status, Enable, and Control. 
6840 ACPICA 
6841 BZ 
6842 746.
6843
6844 Added a function to handle the PM1 control registers, 
6845 AcpiHwWritePm1Control. 
6846 This function writes both of the PM1 control registers (A/B). These 
6847 registers 
6848 are different than the PM1 A/B status and enable registers in that 
6849 different 
6850 values can be written to the A/B registers. Most notably, the SLP_TYP 
6851 bits 
6852 can be different, as per the values returned from the _Sx predefined 
6853 methods.
6854
6855 Removed an extra register write within AcpiHwClearAcpiStatus. This 
6856 function 
6857 was writing an optional PM1B status register twice. The existing call to 
6858 the 
6859 low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 
6860 A/B 
6861 register. ACPICA BZ 751.
6862
6863 Split out the PM1 Status registers from the FADT. Added new globals for 
6864 these 
6865 registers (A/B), similar to the way the PM1 Enable registers are handled. 
6866 Instead of overloading the FADT Event Register blocks. This makes the 
6867 code 
6868 clearer and less prone to error.
6869
6870 Fixed the warning message for when the platform contains too many ACPI 
6871 tables 
6872 for the default size of the global root table data structure. The 
6873 calculation 
6874 for the truncation value was incorrect.
6875
6876 Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 
6877 obsolete macro, since it is now a simple reference to ->common.type. 
6878 There 
6879 were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
6880
6881 Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 
6882 TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 
6883 simply SLEEP_TYPE. ACPICA BZ 754.
6884
6885 Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 
6886 function is only needed on 64-bit host operating systems and is thus not 
6887 included for 32-bit hosts.
6888
6889 Debug output: print the input and result for invocations of the _OSI 
6890 reserved 
6891 control method via the ACPI_LV_INFO debug level. Also, reduced some of 
6892 the 
6893 verbosity of this debug level. Len Brown.
6894
6895 Example Code and Data Size: These are the sizes for the OS-independent 
6896 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6897 debug version of the code includes the debug output trace mechanism and 
6898 has a 
6899 much larger code and data size.
6900
6901   Previous Release:
6902     Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
6903     Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
6904   Current Release:
6905     Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
6906     Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
6907
6908 2) iASL Compiler/Disassembler and Tools:
6909
6910 Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 
6911 various legal performance profiles.
6912
6913 ----------------------------------------
6914 23 January 2009. Summary of changes for version 20090123:
6915
6916 1) ACPI CA Core Subsystem:
6917
6918 Added the 2009 copyright to all module headers and signons. This affects 
6919 virtually every file in the ACPICA core subsystem, the iASL compiler, and 
6920 the tools/utilities.
6921
6922 Implemented a change to allow the host to override any ACPI table, 
6923 including 
6924 dynamically loaded tables. Previously, only the DSDT could be replaced by 
6925 the 
6926 host. With this change, the AcpiOsTableOverride interface is called for 
6927 each 
6928 table found in the RSDT/XSDT during ACPICA initialization, and also 
6929 whenever 
6930 a table is dynamically loaded via the AML Load operator.
6931
6932 Updated FADT flag definitions, especially the Boot Architecture flags.
6933
6934 Debugger: For the Find command, automatically pad the input ACPI name 
6935 with 
6936 underscores if the name is shorter than 4 characters. This enables a 
6937 match 
6938 with the actual namespace entry which is itself padded with underscores.
6939
6940 Example Code and Data Size: These are the sizes for the OS-independent 
6941 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6942 debug version of the code includes the debug output trace mechanism and 
6943 has a 
6944 much larger code and data size.
6945
6946   Previous Release:
6947     Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
6948     Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
6949   Current Release:
6950     Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
6951     Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
6952
6953 2) iASL Compiler/Disassembler and Tools:
6954
6955 Fix build error under Bison-2.4.
6956
6957 Dissasembler: Enhanced FADT support. Added decoding of the Boot 
6958 Architecture 
6959 flags. Now decode all flags, regardless of the FADT version. Flag output 
6960 includes the FADT version which first defined each flag.
6961
6962 The iASL -g option now dumps the RSDT to a file (in addition to the FADT 
6963 and 
6964 DSDT). Windows only.
6965
6966 ----------------------------------------
6967 04 December 2008. Summary of changes for version 20081204:
6968
6969 1) ACPI CA Core Subsystem:
6970
6971 The ACPICA Programmer Reference has been completely updated and revamped 
6972 for 
6973 this release. This includes updates to the external interfaces, OSL 
6974 interfaces, the overview sections, and the debugger reference.
6975
6976 Several new ACPICA interfaces have been implemented and documented in the 
6977 programmer reference:
6978 AcpiReset - Writes the reset value to the FADT-defined reset register.
6979 AcpiDisableAllGpes - Disable all available GPEs.
6980 AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
6981 AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
6982 AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
6983 AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
6984 AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
6985
6986 Most of the public ACPI hardware-related interfaces have been moved to a 
6987 new 
6988 file, components/hardware/hwxface.c
6989
6990 Enhanced the FADT parsing and low-level ACPI register access: The ACPI 
6991 register lengths within the FADT are now used, and the low level ACPI 
6992 register access no longer hardcodes the ACPI register lengths. Given that 
6993 there may be some risk in actually trusting the FADT register lengths, a 
6994 run-
6995 time option was added to fall back to the default hardcoded lengths if 
6996 the 
6997 FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 
6998 option is set to true for now, and a warning is issued if a suspicious 
6999 FADT 
7000 register length is overridden with the default value.
7001
7002 Fixed a reference count issue in NsRepairObject. This problem was 
7003 introduced 
7004 in version 20081031 as part of a fix to repair Buffer objects within 
7005 Packages. Lin Ming.
7006
7007 Added semaphore support to the Linux/Unix application OS-services layer 
7008 (OSL). ACPICA BZ 448. Lin Ming.
7009
7010 Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 
7011 will 
7012 be implemented in the OSL, or will binary semaphores be used instead.
7013
7014 Example Code and Data Size: These are the sizes for the OS-independent 
7015 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7016 debug version of the code includes the debug output trace mechanism and 
7017 has a 
7018 much larger code and data size.
7019
7020   Previous Release:
7021     Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
7022     Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
7023   Current Release:
7024     Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
7025     Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
7026
7027 2) iASL Compiler/Disassembler and Tools:
7028
7029 iASL: Completed the '-e' option to include additional ACPI tables in 
7030 order 
7031 to 
7032 aid with disassembly and External statement generation. ACPICA BZ 742. 
7033 Lin 
7034 Ming.
7035
7036 iASL: Removed the "named object in while loop" error. The compiler cannot 
7037 determine how many times a loop will execute. ACPICA BZ 730.
7038
7039 Disassembler: Implemented support for FADT revision 2 (MS extension). 
7040 ACPICA 
7041 BZ 743.
7042
7043 Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 
7044 MCFG).
7045
7046 ----------------------------------------
7047 31 October 2008. Summary of changes for version 20081031:
7048
7049 1) ACPI CA Core Subsystem:
7050
7051 Restructured the ACPICA header files into public/private. acpi.h now 
7052 includes 
7053 only the "public" acpica headers. All other acpica headers are "private" 
7054 and 
7055 should not be included by acpica users. One new file, accommon.h is used 
7056 to 
7057 include the commonly used private headers for acpica code generation. 
7058 Future 
7059 plans include moving all private headers to a new subdirectory.
7060
7061 Implemented an automatic Buffer->String return value conversion for 
7062 predefined ACPI methods. For these methods (such as _BIF), added 
7063 automatic 
7064 conversion for return objects that are required to be a String, but a 
7065 Buffer 
7066 was found instead. This can happen when reading string battery data from 
7067 an 
7068 operation region, because it used to be difficult to convert the data 
7069 from 
7070 buffer to string from within the ASL. Ensures that the host OS is 
7071 provided 
7072 with a valid null-terminated string. Linux BZ 11822.
7073
7074 Updated the FACS waking vector interfaces. Split 
7075 AcpiSetFirmwareWakingVector 
7076 into two: one for the 32-bit vector, another for the 64-bit vector. This 
7077 is 
7078 required because the host OS must setup the wake much differently for 
7079 each 
7080 vector (real vs. protected mode, etc.) and the interface itself should 
7081 not 
7082 be 
7083 deciding which vector to use. Also, eliminated the 
7084 GetFirmwareWakingVector 
7085 interface, as it served no purpose (only the firmware reads the vector, 
7086 OS 
7087 only writes the vector.) ACPICA BZ 731.
7088
7089 Implemented a mechanism to escape infinite AML While() loops. Added a 
7090 loop 
7091 counter to force exit from AML While loops if the count becomes too 
7092 large. 
7093 This can occur in poorly written AML when the hardware does not respond 
7094 within a while loop and the loop does not implement a timeout. The 
7095 maximum 
7096 loop count is configurable. A new exception code is returned when a loop 
7097 is 
7098 broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
7099
7100 Optimized the execution of AML While loops. Previously, a control state 
7101 object was allocated and freed for each execution of the loop. The 
7102 optimization is to simply reuse the control state for each iteration. 
7103 This 
7104 speeds up the raw loop execution time by about 5%.
7105
7106 Enhanced the implicit return mechanism. For Windows compatibility, return 
7107 an 
7108 implicit integer of value zero for methods that contain no executable 
7109 code. 
7110 Such methods are seen in the field as stubs (presumably), and can cause 
7111 drivers to fail if they expect a return value. Lin Ming.
7112
7113 Allow multiple backslashes as root prefixes in namepaths. In a fully 
7114 qualified namepath, allow multiple backslash prefixes. This can happen 
7115 (and 
7116 is seen in the field) because of the use of a double-backslash in strings 
7117 (since backslash is the escape character) causing confusion. ACPICA BZ 
7118 739 
7119 Lin Ming.
7120
7121 Emit a warning if two different FACS or DSDT tables are discovered in the 
7122 FADT. Checks if there are two valid but different addresses for the FACS 
7123 and 
7124 DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
7125
7126 Consolidated the method argument count validation code. Merged the code 
7127 that 
7128 validates control method argument counts into the predefined validation 
7129 module. Eliminates possible multiple warnings for incorrect argument 
7130 counts.
7131
7132 Implemented ACPICA example code. Includes code for ACPICA initialization, 
7133 handler installation, and calling a control method. Available at 
7134 source/tools/examples.
7135
7136 Added a global pointer for FACS table to simplify internal FACS access. 
7137 Use 
7138 the global pointer instead of using AcpiGetTableByIndex for each FACS 
7139 access. 
7140 This simplifies the code for the Global Lock and the Firmware Waking 
7141 Vector(s).
7142
7143 Example Code and Data Size: These are the sizes for the OS-independent 
7144 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7145 debug version of the code includes the debug output trace mechanism and 
7146 has a 
7147 much larger code and data size.
7148
7149   Previous Release:
7150     Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
7151     Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
7152   Current Release:
7153     Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
7154     Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
7155
7156 2) iASL Compiler/Disassembler and Tools:
7157
7158 iASL: Improved disassembly of external method calls. Added the -e option 
7159 to 
7160 allow the inclusion of additional ACPI tables to help with the 
7161 disassembly 
7162 of 
7163 method invocations and the generation of external declarations during the 
7164 disassembly. Certain external method invocations cannot be disassembled 
7165 properly without the actual declaration of the method. Use the -e option 
7166 to 
7167 include the table where the external method(s) are actually declared. 
7168 Most 
7169 useful for disassembling SSDTs that make method calls back to the master 
7170 DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl 
7171 -d 
7172 -e dsdt.aml ssdt1.aml
7173
7174 iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 
7175 problem where the use of an alias within a namepath would result in a not 
7176 found error or cause the compiler to fault. Also now allows forward 
7177 references from the Alias operator itself. ACPICA BZ 738.
7178
7179 ----------------------------------------
7180 26 September 2008. Summary of changes for version 20080926:
7181
7182 1) ACPI CA Core Subsystem:
7183
7184 Designed and implemented a mechanism to validate predefined ACPI methods 
7185 and 
7186 objects. This code validates the predefined ACPI objects (objects whose 
7187 names 
7188 start with underscore) that appear in the namespace, at the time they are 
7189 evaluated. The argument count and the type of the returned object are 
7190 validated against the ACPI specification. The purpose of this validation 
7191 is 
7192 to detect problems with the BIOS-implemented predefined ACPI objects 
7193 before 
7194 the results are returned to the ACPI-related drivers. Future enhancements 
7195 may 
7196 include actual repair of incorrect return objects where possible. Two new 
7197 files are nspredef.c and acpredef.h.
7198
7199 Fixed a fault in the AML parser if a memory allocation fails during the 
7200 Op 
7201 completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
7202
7203 Fixed an issue with implicit return compatibility. This change improves 
7204 the 
7205 implicit return mechanism to be more compatible with the MS interpreter. 
7206 Lin 
7207 Ming, ACPICA BZ 349.
7208
7209 Implemented support for zero-length buffer-to-string conversions. Allow 
7210 zero 
7211 length strings during interpreter buffer-to-string conversions. For 
7212 example, 
7213 during the ToDecimalString and ToHexString operators, as well as implicit 
7214 conversions. Fiodor Suietov, ACPICA BZ 585.
7215
7216 Fixed two possible memory leaks in the error exit paths of 
7217 AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 
7218 are 
7219 similar in that they use a stack of state objects in order to eliminate 
7220 recursion. The stack must be fully unwound and deallocated if an error 
7221 occurs. Lin Ming. ACPICA BZ 383.
7222
7223 Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 
7224 global 
7225 ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 
7226 Moore ACPICA BZ 442.
7227
7228 Removed the obsolete version number in module headers. Removed the 
7229 "$Revision" number that appeared in each module header. This version 
7230 number 
7231 was useful under SourceSafe and CVS, but has no meaning under git. It is 
7232 not 
7233 only incorrect, it could also be misleading.
7234
7235 Example Code and Data Size: These are the sizes for the OS-independent 
7236 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7237 debug version of the code includes the debug output trace mechanism and 
7238 has a 
7239 much larger code and data size.
7240
7241   Previous Release:
7242     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7243     Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
7244   Current Release:
7245     Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
7246     Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
7247
7248 ----------------------------------------
7249 29 August 2008. Summary of changes for version 20080829:
7250
7251 1) ACPI CA Core Subsystem:
7252
7253 Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 
7254 Reference. Changes include the elimination of cheating on the Object 
7255 field 
7256 for the DdbHandle subtype, addition of a reference class field to 
7257 differentiate the various reference types (instead of an AML opcode), and 
7258 the 
7259 cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
7260
7261 Reduce an error to a warning for an incorrect method argument count. 
7262 Previously aborted with an error if too few arguments were passed to a 
7263 control method via the external ACPICA interface. Now issue a warning 
7264 instead 
7265 and continue. Handles the case where the method inadvertently declares 
7266 too 
7267 many arguments, but does not actually use the extra ones. Applies mainly 
7268 to 
7269 the predefined methods. Lin Ming. Linux BZ 11032.
7270
7271 Disallow the evaluation of named object types with no intrinsic value. 
7272 Return 
7273 AE_TYPE for objects that have no value and therefore evaluation is 
7274 undefined: 
7275 Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 
7276 of 
7277 these types were allowed, but an exception would be generated at some 
7278 point 
7279 during the evaluation. Now, the error is generated up front.
7280
7281 Fixed a possible memory leak in the AcpiNsGetExternalPathname function 
7282 (nsnames.c). Fixes a leak in the error exit path.
7283
7284 Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 
7285 debug 
7286 levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 
7287 ACPI_EXCEPTION 
7288 interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 
7289 ACPI_LV_EVENTS.
7290
7291 Removed obsolete and/or unused exception codes from the acexcep.h header. 
7292 There is the possibility that certain device drivers may be affected if 
7293 they 
7294 use any of these exceptions.
7295
7296 The ACPICA documentation has been added to the public git source tree, 
7297 under 
7298 acpica/documents. Included are the ACPICA programmer reference, the iASL 
7299 compiler reference, and the changes.txt release logfile.
7300
7301 Example Code and Data Size: These are the sizes for the OS-independent 
7302 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7303 debug version of the code includes the debug output trace mechanism and 
7304 has a 
7305 much larger code and data size.
7306
7307   Previous Release:
7308     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7309     Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
7310   Current Release:
7311     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7312     Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
7313
7314 2) iASL Compiler/Disassembler and Tools:
7315
7316 Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 
7317 defines _SCP with 3 arguments. Previous versions defined it with only 1 
7318 argument. iASL now allows both definitions.
7319
7320 iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 
7321 zero-
7322 length subtables when disassembling ACPI tables. Also fixed a couple of 
7323 errors where a full 16-bit table type field was not extracted from the 
7324 input 
7325 properly.
7326
7327 acpisrc: Improve comment counting mechanism for generating source code 
7328 statistics. Count first and last lines of multi-line comments as 
7329 whitespace, 
7330 not comment lines. Handle Linux legal header in addition to standard 
7331 acpica 
7332 header.
7333
7334 ----------------------------------------
7335
7336 29 July 2008. Summary of changes for version 20080729:
7337
7338 1) ACPI CA Core Subsystem:
7339
7340 Fix a possible deadlock in the GPE dispatch. Remove call to 
7341 AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 
7342 attempt 
7343 to acquire the GPE lock but can deadlock since the GPE lock is already 
7344 held 
7345 at dispatch time. This code was introduced in version 20060831 as a 
7346 response 
7347 to Linux BZ 6881 and has since been removed from Linux.
7348
7349 Add a function to dereference returned reference objects. Examines the 
7350 return 
7351 object from a call to AcpiEvaluateObject. Any Index or RefOf references 
7352 are 
7353 automatically dereferenced in an attempt to return something useful 
7354 (these 
7355 reference types cannot be converted into an external ACPI_OBJECT.) 
7356 Provides 
7357 MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
7358
7359 x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 
7360 subtables for the MADT and one new subtable for the SRAT. Includes 
7361 disassembler and AcpiSrc support. Data from the Intel 64 Architecture 
7362 x2APIC 
7363 Specification, June 2008.
7364
7365 Additional error checking for pathname utilities. Add error check after 
7366 all 
7367 calls to AcpiNsGetPathnameLength. Add status return from 
7368 AcpiNsBuildExternalPath and check after all calls. Add parameter 
7369 validation 
7370 to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
7371
7372 Return status from the global init function AcpiUtGlobalInitialize. This 
7373 is 
7374 used by both the kernel subsystem and the utilities such as iASL 
7375 compiler. 
7376 The function could possibly fail when the caches are initialized. Yang 
7377 Yi.
7378
7379 Add a function to decode reference object types to strings. Created for 
7380 improved error messages. 
7381
7382 Improve object conversion error messages. Better error messages during 
7383 object 
7384 conversion from internal to the external ACPI_OBJECT. Used for external 
7385 calls 
7386 to AcpiEvaluateObject.
7387
7388 Example Code and Data Size: These are the sizes for the OS-independent 
7389 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7390 debug version of the code includes the debug output trace mechanism and 
7391 has a 
7392 much larger code and data size.
7393
7394   Previous Release:
7395     Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
7396     Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
7397   Current Release:
7398     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7399     Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
7400
7401 2) iASL Compiler/Disassembler and Tools:
7402
7403 Debugger: fix a possible hang when evaluating non-methods. Fixes a 
7404 problem 
7405 introduced in version 20080701. If the object being evaluated (via 
7406 execute 
7407 command) is not a method, the debugger can hang while trying to obtain 
7408 non-
7409 existent parameters.
7410
7411 iASL: relax error for using reserved "_T_x" identifiers. These names can 
7412 appear in a disassembled ASL file if they were emitted by the original 
7413 compiler. Instead of issuing an error or warning and forcing the user to 
7414 manually change these names, issue a remark instead.
7415
7416 iASL: error if named object created in while loop. Emit an error if any 
7417 named 
7418 object is created within a While loop. If allowed, this code will 
7419 generate 
7420
7421 run-time error on the second iteration of the loop when an attempt is 
7422 made 
7423 to 
7424 create the same named object twice. ACPICA bugzilla 730.
7425
7426 iASL: Support absolute pathnames for include files. Add support for 
7427 absolute 
7428 pathnames within the Include operator. previously, only relative 
7429 pathnames 
7430 were supported.
7431
7432 iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 
7433 Descriptor. 
7434 The ACPI spec requires one interrupt minimum. BZ 423
7435
7436 iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 
7437 Handles the case for the Interrupt Resource Descriptor where
7438 the ResourceSource argument is omitted but ResourceSourceIndex
7439 is present. Now leave room for the Index. BZ 426
7440
7441 iASL: Prevent error message if CondRefOf target does not exist. Fixes 
7442 cases 
7443 where an error message is emitted if the target does not exist. BZ 516
7444
7445 iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 
7446 (get ACPI tables on Windows). This was apparently broken in version 
7447 20070919.
7448
7449 AcpiXtract: Handle EOF while extracting data. Correctly handle the case 
7450 where 
7451 the EOF happens immediately after the last table in the input file. Print 
7452 completion message. Previously, no message was displayed in this case.
7453
7454 ----------------------------------------
7455 01 July 2008. Summary of changes for version 20080701:
7456
7457 0) Git source tree / acpica.org
7458
7459 Fixed a problem where a git-clone from http would not transfer the entire 
7460 source tree.
7461
7462 1) ACPI CA Core Subsystem:
7463
7464 Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 
7465 enable bit. Now performs a read-change-write of the enable register 
7466 instead 
7467 of simply writing out the cached enable mask. This will prevent 
7468 inadvertent 
7469 enabling of GPEs if a rogue GPE is received during initialization (before 
7470 GPE 
7471 handlers are installed.)
7472
7473 Implemented a copy for dynamically loaded tables. Previously, dynamically 
7474 loaded tables were simply mapped - but on some machines this memory is 
7475 corrupted after suspend. Now copy the table to a local buffer. For the 
7476 OpRegion case, added checksum verify. Use the table length from the table 
7477 header, not the region length. For the Buffer case, use the table length 
7478 also. Dennis Noordsij, Bob Moore. BZ 10734
7479
7480 Fixed a problem where the same ACPI table could not be dynamically loaded 
7481 and 
7482 unloaded more than once. Without this change, a table cannot be loaded 
7483 again 
7484 once it has been loaded/unloaded one time. The current mechanism does not 
7485 unregister a table upon an unload. During a load, if the same table is 
7486 found, 
7487 this no longer returns an exception. BZ 722
7488
7489 Fixed a problem where the wrong descriptor length was calculated for the 
7490 EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 
7491 EndTag 
7492 are calculated as 12 bytes long, but the actual length in the internal 
7493 descriptor is 16 because of the round-up to 8 on the 64-bit build. 
7494 Reported 
7495 by Linn Crosetto. BZ 728
7496
7497 Fixed a possible memory leak in the Unload operator. The DdbHandle 
7498 returned 
7499 by Load() did not have its reference count decremented during unload, 
7500 leading 
7501 to a memory leak. Lin Ming. BZ 727
7502
7503 Fixed a possible memory leak when deleting thermal/processor objects. Any 
7504 associated notify handlers (and objects) were not being deleted. Fiodor 
7505 Suietov. BZ 506
7506
7507 Fixed the ordering of the ASCII names in the global mutex table to match 
7508 the 
7509 actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 
7510 only. 
7511 Vegard Nossum. BZ 726
7512
7513 Enhanced the AcpiGetObjectInfo interface to return the number of required 
7514 arguments if the object is a control method. Added this call to the 
7515 debugger 
7516 so the proper number of default arguments are passed to a method. This 
7517 prevents a warning when executing methods from AcpiExec.
7518
7519 Added a check for an invalid handle in AcpiGetObjectInfo. Return 
7520 AE_BAD_PARAMETER if input handle is invalid. BZ 474
7521
7522 Fixed an extraneous warning from exconfig.c on the 64-bit build.
7523
7524 Example Code and Data Size: These are the sizes for the OS-independent 
7525 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7526 debug version of the code includes the debug output trace mechanism and 
7527 has a 
7528 much larger code and data size.
7529
7530   Previous Release:
7531     Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7532     Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7533   Current Release:
7534     Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
7535     Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
7536
7537 2) iASL Compiler/Disassembler and Tools:
7538
7539 iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 
7540 resource descriptor names.
7541
7542 iASL: Detect invalid ASCII characters in input (windows version). Removed 
7543 the 
7544 "-CF" flag from the flex compile, enables correct detection of non-ASCII 
7545 characters in the input. BZ 441
7546
7547 iASL: Eliminate warning when result of LoadTable is not used. Eliminate 
7548 the 
7549 "result of operation not used" warning when the DDB handle returned from 
7550 LoadTable is not used. The warning is not needed. BZ 590
7551
7552 AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 
7553 method 
7554 to 
7555 pass address of table to the AML. Added option to disable OpRegion 
7556 simulation 
7557 to allow creation of an OpRegion with a real address that was passed to 
7558 _CFG. 
7559 All of this allows testing of the Load and Unload operators from 
7560 AcpiExec.
7561
7562 Debugger: update tables command for unloaded tables. Handle unloaded 
7563 tables 
7564 and use the standard table header output routine.
7565
7566 ----------------------------------------
7567 09 June 2008. Summary of changes for version 20080609:
7568
7569 1) ACPI CA Core Subsystem:
7570
7571 Implemented a workaround for reversed _PRT entries. A significant number 
7572 of 
7573 BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 
7574 change dynamically detects and repairs this problem. Provides 
7575 compatibility 
7576 with MS ACPI. BZ 6859
7577
7578 Simplified the internal ACPI hardware interfaces to eliminate the locking 
7579 flag parameter from Register Read/Write. Added a new external interface, 
7580 AcpiGetRegisterUnlocked.
7581
7582 Fixed a problem where the invocation of a GPE control method could hang. 
7583 This 
7584 was a regression introduced in 20080514. The new method argument count 
7585 validation mechanism can enter an infinite loop when a GPE method is 
7586 dispatched. Problem fixed by removing the obsolete code that passed GPE 
7587 block 
7588 information to the notify handler via the control method parameter 
7589 pointer.
7590
7591 Fixed a problem where the _SST execution status was incorrectly returned 
7592 to 
7593 the caller of AcpiEnterSleepStatePrep. This was a regression introduced 
7594 in 
7595 20080514. _SST is optional and a NOT_FOUND exception should never be 
7596 returned. BZ 716
7597
7598 Fixed a problem where a deleted object could be accessed from within the 
7599 AML 
7600 parser. This was a regression introduced in version 20080123 as a fix for 
7601 the 
7602 Unload operator. Lin Ming. BZ 10669
7603
7604 Cleaned up the debug operand dump mechanism. Eliminated unnecessary 
7605 operands 
7606 and eliminated the use of a negative index in a loop. Operands are now 
7607 displayed in the correct order, not backwards. This also fixes a 
7608 regression 
7609 introduced in 20080514 on 64-bit systems where the elimination of 
7610 ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 
7611 715
7612
7613 Fixed a possible memory leak in EvPciConfigRegionSetup where the error 
7614 exit 
7615 path did not delete a locally allocated structure.
7616
7617 Updated definitions for the DMAR and SRAT tables to synchronize with the 
7618 current specifications. Includes disassembler support.
7619
7620 Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 
7621 loop termination value was used. Loop terminated on iteration early, 
7622 missing 
7623 one mutex. Linn Crosetto
7624
7625 Example Code and Data Size: These are the sizes for the OS-independent 
7626 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7627 debug version of the code includes the debug output trace mechanism and 
7628 has a 
7629 much larger code and data size.
7630
7631   Previous Release:
7632     Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
7633     Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
7634   Current Release:
7635     Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7636     Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7637
7638 2) iASL Compiler/Disassembler and Tools:
7639
7640 Disassembler: Implemented support for EisaId() within _CID objects. Now 
7641 disassemble integer _CID objects back to EisaId invocations, including 
7642 multiple integers within _CID packages. Includes single-step support for 
7643 debugger also.
7644
7645 Disassembler: Added support for DMAR and SRAT table definition changes.
7646
7647 ----------------------------------------
7648 14 May 2008. Summary of changes for version 20080514:
7649
7650 1) ACPI CA Core Subsystem:
7651
7652 Fixed a problem where GPEs were enabled too early during the ACPICA 
7653 initialization. This could lead to "handler not installed" errors on some 
7654 machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 
7655 This 
7656 ensures that all operation regions and devices throughout the namespace 
7657 have 
7658 been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
7659
7660 Implemented a change to the enter sleep code. Moved execution of the _GTS 
7661 method to just before setting sleep enable bit. The execution was moved 
7662 from 
7663 AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 
7664 immediately before the SLP_EN bit is set, as per the ACPI specification. 
7665 Luming Yu, BZ 1653.
7666
7667 Implemented a fix to disable unknown GPEs (2nd version). Now always 
7668 disable 
7669 the GPE, even if ACPICA thinks that that it is already disabled. It is 
7670 possible that the AML or some other code has enabled the GPE unbeknownst 
7671 to 
7672 the ACPICA code.
7673
7674 Fixed a problem with the Field operator where zero-length fields would 
7675 return 
7676 an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 
7677 ASL 
7678 field declarations in Field(), BankField(), and IndexField(). BZ 10606.
7679
7680 Implemented a fix for the Load operator, now load the table at the 
7681 namespace 
7682 root. This reverts a change introduced in version 20071019. The table is 
7683 now 
7684 loaded at the namespace root even though this goes against the ACPI 
7685 specification. This provides compatibility with other ACPI 
7686 implementations. 
7687 The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 
7688 Ming.
7689
7690 Fixed a problem where ACPICA would not Load() tables with unusual 
7691 signatures. 
7692 Now ignore ACPI table signature for Load() operator. Only "SSDT" is 
7693 acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 
7694 Therefore, signature validation is worthless. Apparently MS ACPI accepts 
7695 such 
7696 signatures, ACPICA must be compatible. BZ 10454.
7697
7698 Fixed a possible negative array index in AcpiUtValidateException. Added 
7699 NULL 
7700 fields to the exception string arrays to eliminate a -1 subtraction on 
7701 the 
7702 SubStatus field.
7703
7704 Updated the debug tracking macros to reduce overall code and data size. 
7705 Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 
7706 instead of pointers to static strings. Jan Beulich and Bob Moore.
7707
7708 Implemented argument count checking in control method invocation via 
7709 AcpiEvaluateObject. Now emit an error if too few arguments, warning if 
7710 too 
7711 many. This applies only to extern programmatic control method execution, 
7712 not 
7713 method-to-method calls within the AML. Lin Ming.
7714
7715 Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 
7716 no 
7717 longer needed, especially with the removal of 16-bit support. It was 
7718 replaced 
7719 mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 
7720 bit 
7721 on 
7722 32/64-bit platforms is required.
7723
7724 Added the C const qualifier for appropriate string constants -- mostly 
7725 MODULE_NAME and printf format strings. Jan Beulich.
7726
7727 Example Code and Data Size: These are the sizes for the OS-independent 
7728 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7729 debug version of the code includes the debug output trace mechanism and 
7730 has a 
7731 much larger code and data size.
7732
7733   Previous Release:
7734     Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
7735     Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
7736   Current Release:
7737     Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
7738     Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
7739
7740 2) iASL Compiler/Disassembler and Tools:
7741
7742 Implemented ACPI table revision ID validation in the disassembler. Zero 
7743 is 
7744 always invalid. For DSDTs, the ID controls the interpreter integer width. 
7745
7746 means 32-bit and this is unusual. 2 or greater is 64-bit.
7747
7748 ----------------------------------------
7749 21 March 2008. Summary of changes for version 20080321:
7750
7751 1) ACPI CA Core Subsystem:
7752
7753 Implemented an additional change to the GPE support in order to suppress 
7754 spurious or stray GPEs. The AcpiEvDisableGpe function will now 
7755 permanently 
7756 disable incoming GPEs that are neither enabled nor disabled -- meaning 
7757 that 
7758 the GPE is unknown to the system. This should prevent future interrupt 
7759 floods 
7760 from that GPE. BZ 6217 (Zhang Rui)
7761
7762 Fixed a problem where NULL package elements were not returned to the 
7763 AcpiEvaluateObject interface correctly. The element was simply ignored 
7764 instead of returning a NULL ACPI_OBJECT package element, potentially 
7765 causing 
7766 a buffer overflow and/or confusing the caller who expected a fixed number 
7767 of 
7768 elements. BZ 10132 (Lin Ming, Bob Moore)
7769
7770 Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 
7771 Dword, 
7772 Qword), Field, BankField, and IndexField operators when invoked from 
7773 inside 
7774 an executing control method. In this case, these operators created 
7775 namespace 
7776 nodes that were incorrectly left marked as permanent nodes instead of 
7777 temporary nodes. This could cause a problem if there is race condition 
7778 between an exiting control method and a running namespace walk. (Reported 
7779 by 
7780 Linn Crosetto)
7781
7782 Fixed a problem where the CreateField and CreateXXXField operators would 
7783 incorrectly allow duplicate names (the name of the field) with no 
7784 exception 
7785 generated.
7786
7787 Implemented several changes for Notify handling. Added support for new 
7788 Notify 
7789 values (ACPI 2.0+) and improved the Notify debug output. Notify on 
7790 PowerResource objects is no longer allowed, as per the ACPI 
7791 specification. 
7792 (Bob Moore, Zhang Rui)
7793
7794 All Reference Objects returned via the AcpiEvaluateObject interface are 
7795 now 
7796 marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 
7797 for 
7798 NULL objects - either NULL package elements or unresolved named 
7799 references.
7800
7801 Fixed a problem where an extraneous debug message was produced for 
7802 package 
7803 objects (when debugging enabled). The message "Package List length larger 
7804 than NumElements count" is now produced in the correct case, and is now 
7805 an 
7806 error message rather than a debug message. Added a debug message for the 
7807 opposite case, where NumElements is larger than the Package List (the 
7808 package 
7809 will be padded out with NULL elements as per the ACPI spec.)
7810
7811 Implemented several improvements for the output of the ASL "Debug" object 
7812 to 
7813 clarify and keep all data for a given object on one output line.
7814
7815 Fixed two size calculation issues with the variable-length Start 
7816 Dependent 
7817 resource descriptor.
7818
7819 Example Code and Data Size: These are the sizes for the OS-independent 
7820 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7821 debug version of the code includes the debug output trace mechanism and 
7822 has 
7823 a much larger code and data size.
7824
7825   Previous Release:
7826     Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
7827     Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
7828   Current Release:
7829     Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
7830     Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
7831
7832 2) iASL Compiler/Disassembler and Tools:
7833
7834 Fixed a problem with the use of the Switch operator where execution of 
7835 the 
7836 containing method by multiple concurrent threads could cause an 
7837 AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 
7838 actual Switch opcode, it must be simulated with local named temporary 
7839 variables and if/else pairs. The solution chosen was to mark any method 
7840 that 
7841 uses Switch as Serialized, thus preventing multiple thread entries. BZ 
7842 469.
7843
7844 ----------------------------------------
7845 13 February 2008. Summary of changes for version 20080213:
7846
7847 1) ACPI CA Core Subsystem:
7848
7849 Implemented another MS compatibility design change for GPE/Notify 
7850 handling. 
7851 GPEs are now cleared/enabled asynchronously to allow all pending notifies 
7852 to 
7853 complete first. It is expected that the OSL will queue the enable request 
7854 behind all pending notify requests (may require changes to the local host 
7855 OSL 
7856 in AcpiOsExecute). Alexey Starikovskiy.
7857
7858 Fixed a problem where buffer and package objects passed as arguments to a 
7859 control method via the external AcpiEvaluateObject interface could cause 
7860 an 
7861 AE_AML_INTERNAL exception depending on the order and type of operators 
7862 executed by the target control method.
7863
7864 Fixed a problem where resource descriptor size optimization could cause a 
7865 problem when a _CRS resource template is passed to a _SRS method. The 
7866 _SRS 
7867 resource template must use the same descriptors (with the same size) as 
7868 returned from _CRS. This change affects the following resource 
7869 descriptors: 
7870 IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 
7871 9487)
7872
7873 Fixed a problem where a CopyObject to RegionField, BankField, and 
7874 IndexField 
7875 objects did not perform an implicit conversion as it should. These types 
7876 must 
7877 retain their initial type permanently as per the ACPI specification. 
7878 However, 
7879 a CopyObject to all other object types should not perform an implicit 
7880 conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
7881
7882 Fixed a problem with the AcpiGetDevices interface where the mechanism to 
7883 match device CIDs did not examine the entire list of available CIDs, but 
7884 instead aborted on the first non-matching CID. Andrew Patterson.
7885
7886 Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 
7887 was 
7888 inadvertently changed to return a 16-bit value instead of a 32-bit value, 
7889 truncating the upper dword of a 64-bit value. This macro is only used to 
7890 display debug output, so no incorrect calculations were made. Also, 
7891 reimplemented the macro so that a 64-bit shift is not performed by 
7892 inefficient compilers.
7893
7894 Added missing va_end statements that should correspond with each va_start 
7895 statement.
7896
7897 Example Code and Data Size: These are the sizes for the OS-independent 
7898 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7899 debug version of the code includes the debug output trace mechanism and 
7900 has 
7901 a much larger code and data size.
7902
7903   Previous Release:
7904     Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
7905     Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
7906   Current Release:
7907     Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
7908     Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
7909
7910 2) iASL Compiler/Disassembler and Tools:
7911
7912 Implemented full disassembler support for the following new ACPI tables: 
7913 BERT, EINJ, and ERST. Implemented partial disassembler support for the 
7914 complicated HEST table. These tables support the Windows Hardware Error 
7915 Architecture (WHEA).
7916
7917 ----------------------------------------
7918 23 January 2008. Summary of changes for version 20080123:
7919
7920 1) ACPI CA Core Subsystem:
7921
7922 Added the 2008 copyright to all module headers and signons. This affects 
7923 virtually every file in the ACPICA core subsystem, the iASL compiler, and 
7924 the tools/utilities.
7925
7926 Fixed a problem with the SizeOf operator when used with Package and 
7927 Buffer 
7928 objects. These objects have deferred execution for some arguments, and 
7929 the 
7930 execution is now completed before the SizeOf is executed. This problem 
7931 caused 
7932 unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 
7933 BZ 
7934 9558
7935
7936 Implemented an enhancement to the interpreter "slack mode". In the 
7937 absence 
7938 of 
7939 an explicit return or an implicitly returned object from the last 
7940 executed 
7941 opcode, a control method will now implicitly return an integer of value 0 
7942 for 
7943 Microsoft compatibility. (Lin Ming) BZ 392
7944
7945 Fixed a problem with the Load operator where an exception was not 
7946 returned 
7947 in 
7948 the case where the table is already loaded. (Lin Ming) BZ 463
7949
7950 Implemented support for the use of DDBHandles as an Indexed Reference, as 
7951 per 
7952 the ACPI spec. (Lin Ming) BZ 486
7953
7954 Implemented support for UserTerm (Method invocation) for the Unload 
7955 operator 
7956 as per the ACPI spec. (Lin Ming) BZ 580
7957
7958 Fixed a problem with the LoadTable operator where the OemId and 
7959 OemTableId 
7960 input strings could cause unexpected failures if they were shorter than 
7961 the 
7962 maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
7963
7964 Implemented support for UserTerm (Method invocation) for the Unload 
7965 operator 
7966 as per the ACPI spec. (Lin Ming) BZ 580
7967
7968 Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 
7969 HEST, 
7970 IBFT, UEFI, WDAT. Disassembler support is forthcoming.
7971
7972 Example Code and Data Size: These are the sizes for the OS-independent 
7973 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7974 debug version of the code includes the debug output trace mechanism and 
7975 has 
7976 a much larger code and data size.
7977
7978   Previous Release:
7979     Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
7980     Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
7981   Current Release:
7982     Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
7983     Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
7984
7985 2) iASL Compiler/Disassembler and Tools:
7986
7987 Implemented support in the disassembler for checksum validation on 
7988 incoming 
7989 binary DSDTs and SSDTs. If incorrect, a message is displayed within the 
7990 table 
7991 header dump at the start of the disassembly.
7992
7993 Implemented additional debugging information in the namespace listing 
7994 file 
7995 created during compilation. In addition to the namespace hierarchy, the 
7996 full 
7997 pathname to each namespace object is displayed.
7998
7999 Fixed a problem with the disassembler where invalid ACPI tables could 
8000 cause 
8001 faults or infinite loops.
8002
8003 Fixed an unexpected parse error when using the optional "parameter types" 
8004 list in a control method declaration. (Lin Ming) BZ 397
8005
8006 Fixed a problem where two External declarations with the same name did 
8007 not 
8008 cause an error (Lin Ming) BZ 509
8009
8010 Implemented support for full TermArgs (adding Argx, Localx and method 
8011 invocation) for the ParameterData parameter to the LoadTable operator. 
8012 (Lin 
8013 Ming) BZ 583,587
8014
8015 ----------------------------------------
8016 19 December 2007. Summary of changes for version 20071219:
8017
8018 1) ACPI CA Core Subsystem:
8019
8020 Implemented full support for deferred execution for the TermArg string 
8021 arguments for DataTableRegion. This enables forward references and full 
8022 operand resolution for the three string arguments. Similar to 
8023 OperationRegion 
8024 deferred argument execution.) Lin Ming. BZ 430
8025
8026 Implemented full argument resolution support for the BankValue argument 
8027 to 
8028 BankField. Previously, only constants were supported, now any TermArg may 
8029 be 
8030 used. Lin Ming BZ 387, 393
8031
8032 Fixed a problem with AcpiGetDevices where the search of a branch of the 
8033 device tree could be terminated prematurely. In accordance with the ACPI 
8034 specification, the search down the current branch is terminated if a 
8035 device 
8036 is both not present and not functional (instead of just not present.) 
8037 Yakui 
8038 Zhao.
8039
8040 Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 
8041 if 
8042 the underlying AML code changed the GPE enable registers. Now, any 
8043 unknown 
8044 incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 
8045 disabled 
8046 instead of simply ignored. Rui Zhang.
8047
8048 Fixed a problem with Index Fields where the Index register was 
8049 incorrectly 
8050 limited to a maximum of 32 bits. Now any size may be used.
8051
8052 Fixed a couple memory leaks associated with "implicit return" objects 
8053 when 
8054 the AML Interpreter slack mode is enabled. Lin Ming BZ 349
8055
8056 Example Code and Data Size: These are the sizes for the OS-independent 
8057 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8058 debug version of the code includes the debug output trace mechanism and 
8059 has 
8060 a much larger code and data size.
8061
8062   Previous Release:
8063     Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
8064     Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
8065   Current Release:
8066     Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
8067     Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
8068
8069 ----------------------------------------
8070 14 November 2007. Summary of changes for version 20071114:
8071
8072 1) ACPI CA Core Subsystem:
8073
8074 Implemented event counters for each of the Fixed Events, the ACPI SCI 
8075 (interrupt) itself, and control methods executed. Named 
8076 AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 
8077 These 
8078 should be useful for debugging and statistics.
8079
8080 Implemented a new external interface, AcpiGetStatistics, to retrieve the 
8081 contents of the various event counters. Returns the current values for 
8082 AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 
8083 AcpiMethodCount. The interface can be expanded in the future if new 
8084 counters 
8085 are added. Device drivers should use this interface rather than access 
8086 the 
8087 counters directly.
8088
8089 Fixed a problem with the FromBCD and ToBCD operators. With some 
8090 compilers, 
8091 the ShortDivide function worked incorrectly, causing problems with the 
8092 BCD 
8093 functions with large input values. A truncation from 64-bit to 32-bit 
8094 inadvertently occurred. Internal BZ 435. Lin Ming
8095
8096 Fixed a problem with Index references passed as method arguments. 
8097 References 
8098 passed as arguments to control methods were dereferenced immediately 
8099 (before 
8100 control was passed to the called method). The references are now 
8101 correctly 
8102 passed directly to the called method. BZ 5389. Lin Ming
8103
8104 Fixed a problem with CopyObject used in conjunction with the Index 
8105 operator. 
8106 The reference was incorrectly dereferenced before the copy. The reference 
8107 is 
8108 now correctly copied. BZ 5391. Lin Ming
8109
8110 Fixed a problem with Control Method references within Package objects. 
8111 These 
8112 references are now correctly generated. This completes the package 
8113 construction overhaul that began in version 20071019.
8114
8115 Example Code and Data Size: These are the sizes for the OS-independent 
8116 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8117 debug version of the code includes the debug output trace mechanism and 
8118 has 
8119 a much larger code and data size.
8120
8121   Previous Release:
8122     Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
8123     Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
8124   Current Release:
8125     Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
8126     Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
8127
8128
8129 2) iASL Compiler/Disassembler and Tools:
8130
8131 The AcpiExec utility now installs handlers for all of the predefined 
8132 Operation Region types. New types supported are: PCI_Config, CMOS, and 
8133 PCIBARTarget.
8134
8135 Fixed a problem with the 64-bit version of AcpiExec where the extended 
8136 (64-
8137 bit) address fields for the DSDT and FACS within the FADT were not being 
8138 used, causing truncation of the upper 32-bits of these addresses. Lin 
8139 Ming 
8140 and Bob Moore
8141
8142 ----------------------------------------
8143 19 October 2007. Summary of changes for version 20071019:
8144
8145 1) ACPI CA Core Subsystem:
8146
8147 Fixed a problem with the Alias operator when the target of the alias is a 
8148 named ASL operator that opens a new scope -- Scope, Device, 
8149 PowerResource, 
8150 Processor, and ThermalZone. In these cases, any children of the original 
8151 operator could not be accessed via the alias, potentially causing 
8152 unexpected 
8153 AE_NOT_FOUND exceptions. (BZ 9067)
8154
8155 Fixed a problem with the Package operator where all named references were 
8156 created as object references and left otherwise unresolved. According to 
8157 the 
8158 ACPI specification, a Package can only contain Data Objects or references 
8159 to 
8160 control methods. The implication is that named references to Data Objects 
8161 (Integer, Buffer, String, Package, BufferField, Field) should be resolved 
8162 immediately upon package creation. This is the approach taken with this 
8163 change. References to all other named objects (Methods, Devices, Scopes, 
8164 etc.) are all now properly created as reference objects. (BZ 5328)
8165
8166 Reverted a change to Notify handling that was introduced in version 
8167 20070508. This version changed the Notify handling from asynchronous to 
8168 fully synchronous (Device driver Notify handling with respect to the 
8169 Notify 
8170 ASL operator). It was found that this change caused more problems than it 
8171 solved and was removed by most users.
8172
8173 Fixed a problem with the Increment and Decrement operators where the type 
8174 of 
8175 the target object could be unexpectedly and incorrectly changed. (BZ 353) 
8176 Lin Ming.
8177
8178 Fixed a problem with the Load and LoadTable operators where the table 
8179 location within the namespace was ignored. Instead, the table was always 
8180 loaded into the root or current scope. Lin Ming.
8181
8182 Fixed a problem with the Load operator when loading a table from a buffer 
8183 object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
8184
8185 Fixed a problem with the Debug object where a store of a DdbHandle 
8186 reference 
8187 object to the Debug object could cause a fault.
8188
8189 Added a table checksum verification for the Load operator, in the case 
8190 where 
8191 the load is from a buffer. (BZ 578).
8192
8193 Implemented additional parameter validation for the LoadTable operator. 
8194 The 
8195 length of the input strings SignatureString, OemIdString, and OemTableId 
8196 are 
8197 now checked for maximum lengths. (BZ 582) Lin Ming.
8198
8199 Example Code and Data Size: These are the sizes for the OS-independent 
8200 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8201 debug version of the code includes the debug output trace mechanism and 
8202 has 
8203 a much larger code and data size.
8204
8205   Previous Release:
8206     Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
8207     Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
8208   Current Release:
8209     Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
8210     Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
8211
8212
8213 2) iASL Compiler/Disassembler:
8214
8215 Fixed a problem where if a single file was specified and the file did not 
8216 exist, no error message was emitted. (Introduced with wildcard support in 
8217 version 20070917.)
8218
8219 ----------------------------------------
8220 19 September 2007. Summary of changes for version 20070919:
8221
8222 1) ACPI CA Core Subsystem:
8223
8224 Designed and implemented new external interfaces to install and remove 
8225 handlers for ACPI table-related events. Current events that are defined 
8226 are 
8227 LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 
8228 they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 
8229 AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
8230
8231 Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 
8232 (acpi_serialized option on Linux) could cause some systems to hang during 
8233 initialization. (Bob Moore) BZ 8171
8234
8235 Fixed a problem where objects of certain types (Device, ThermalZone, 
8236 Processor, PowerResource) can be not found if they are declared and 
8237 referenced from within the same control method (Lin Ming) BZ 341
8238
8239 Example Code and Data Size: These are the sizes for the OS-independent 
8240 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8241 debug version of the code includes the debug output trace mechanism and 
8242 has 
8243 a much larger code and data size.
8244
8245   Previous Release:
8246     Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
8247     Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
8248   Current Release:
8249     Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
8250     Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
8251
8252
8253 2) iASL Compiler/Disassembler:
8254
8255 Implemented support to allow multiple files to be compiled/disassembled 
8256 in 
8257
8258 single invocation. This includes command line wildcard support for both 
8259 the 
8260 Windows and Unix versions of the compiler. This feature simplifies the 
8261 disassembly and compilation of multiple ACPI tables in a single 
8262 directory.
8263
8264 ----------------------------------------
8265 08 May 2007. Summary of changes for version 20070508:
8266
8267 1) ACPI CA Core Subsystem:
8268
8269 Implemented a Microsoft compatibility design change for the handling of 
8270 the 
8271 Notify AML operator. Previously, notify handlers were dispatched and 
8272 executed completely asynchronously in a deferred thread. The new design 
8273 still executes the notify handlers in a different thread, but the 
8274 original 
8275 thread that executed the Notify() now waits at a synchronization point 
8276 for 
8277 the notify handler to complete. Some machines depend on a synchronous 
8278 Notify 
8279 operator in order to operate correctly.
8280
8281 Implemented support to allow Package objects to be passed as method 
8282 arguments to the external AcpiEvaluateObject interface. Previously, this 
8283 would return the AE_NOT_IMPLEMENTED exception. This feature had not been 
8284 implemented since there were no reserved control methods that required it 
8285 until recently.
8286
8287 Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 
8288 that 
8289 contained invalid non-zero values in reserved fields could cause later 
8290 failures because these fields have meaning in later revisions of the 
8291 FADT. 
8292 For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 
8293 fields 
8294 are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
8295
8296 Fixed a problem where the Global Lock handle was not properly updated if 
8297
8298 thread that acquired the Global Lock via executing AML code then 
8299 attempted 
8300 to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 
8301 Joe 
8302 Liu.
8303
8304 Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 
8305 could be corrupted if the interrupt being removed was at the head of the 
8306 list. Reported by Linn Crosetto.
8307
8308 Example Code and Data Size: These are the sizes for the OS-independent 
8309 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8310 debug version of the code includes the debug output trace mechanism and 
8311 has 
8312 a much larger code and data size.
8313
8314   Previous Release:
8315     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8316     Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
8317   Current Release:
8318     Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
8319     Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
8320
8321 ----------------------------------------
8322 20 March 2007. Summary of changes for version 20070320:
8323
8324 1) ACPI CA Core Subsystem:
8325
8326 Implemented a change to the order of interpretation and evaluation of AML 
8327 operand objects within the AML interpreter. The interpreter now evaluates 
8328 operands in the order that they appear in the AML stream (and the 
8329 corresponding ASL code), instead of in the reverse order (after the 
8330 entire 
8331 operand list has been parsed). The previous behavior caused several 
8332 subtle 
8333 incompatibilities with the Microsoft AML interpreter as well as being 
8334 somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
8335
8336 Implemented a change to the ACPI Global Lock support. All interfaces to 
8337 the 
8338 global lock now allow the same thread to acquire the lock multiple times. 
8339 This affects the AcpiAcquireGlobalLock external interface to the global 
8340 lock 
8341 as well as the internal use of the global lock to support AML fields -- a 
8342 control method that is holding the global lock can now simultaneously 
8343 access 
8344 AML fields that require global lock protection. Previously, in both 
8345 cases, 
8346 this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 
8347 to 
8348 AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 
8349 Controller. There is no change to the behavior of the AML Acquire 
8350 operator, 
8351 as this can already be used to acquire a mutex multiple times by the same 
8352 thread. BZ 8066. With assistance from Alexey Starikovskiy.
8353
8354 Fixed a problem where invalid objects could be referenced in the AML 
8355 Interpreter after error conditions. During operand evaluation, ensure 
8356 that 
8357 the internal "Return Object" field is cleared on error and only valid 
8358 pointers are stored there. Caused occasional access to deleted objects 
8359 that 
8360 resulted in "large reference count" warning messages. Valery Podrezov.
8361
8362 Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 
8363 on 
8364 deeply nested control method invocations. BZ 7873, local BZ 487. Valery 
8365 Podrezov.
8366
8367 Fixed an internal problem with the handling of result objects on the 
8368 interpreter result stack. BZ 7872. Valery Podrezov.
8369
8370 Removed obsolete code that handled the case where AML_NAME_OP is the 
8371 target 
8372 of a reference (Reference.Opcode). This code was no longer necessary. BZ 
8373 7874. Valery Podrezov.
8374
8375 Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 
8376 was 
8377
8378 remnant from the previously discontinued 16-bit support.
8379
8380 Example Code and Data Size: These are the sizes for the OS-independent 
8381 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8382 debug version of the code includes the debug output trace mechanism and 
8383 has 
8384 a much larger code and data size.
8385
8386   Previous Release:
8387     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8388     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8389   Current Release:
8390     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8391     Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
8392
8393 ----------------------------------------
8394 26 January 2007. Summary of changes for version 20070126:
8395
8396 1) ACPI CA Core Subsystem:
8397
8398 Added the 2007 copyright to all module headers and signons. This affects 
8399 virtually every file in the ACPICA core subsystem, the iASL compiler, and 
8400 the utilities.
8401
8402 Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 
8403 during a table load. A bad pointer was passed in the case where the DSDT 
8404 is 
8405 overridden, causing a fault in this case.
8406
8407 Example Code and Data Size: These are the sizes for the OS-independent 
8408 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8409 debug version of the code includes the debug output trace mechanism and 
8410 has 
8411 a much larger code and data size.
8412
8413   Previous Release:
8414     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8415     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8416   Current Release:
8417     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8418     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8419
8420 ----------------------------------------
8421 15 December 2006. Summary of changes for version 20061215:
8422
8423 1) ACPI CA Core Subsystem:
8424
8425 Support for 16-bit ACPICA has been completely removed since it is no 
8426 longer 
8427 necessary and it clutters the code. All 16-bit macros, types, and 
8428 conditional compiles have been removed, cleaning up and simplifying the 
8429 code 
8430 across the entire subsystem. DOS support is no longer needed since the 
8431 bootable Linux firmware kit is now available.
8432
8433 The handler for the Global Lock is now removed during AcpiTerminate to 
8434 enable a clean subsystem restart, via the implementation of the 
8435 AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 
8436 HP)
8437
8438 Implemented enhancements to the multithreading support within the 
8439 debugger 
8440 to enable improved multithreading debugging and evaluation of the 
8441 subsystem. 
8442 (Valery Podrezov)
8443
8444 Debugger: Enhanced the Statistics/Memory command to emit the total 
8445 (maximum) 
8446 memory used during the execution, as well as the maximum memory consumed 
8447 by 
8448 each of the various object types. (Valery Podrezov)
8449
8450 Example Code and Data Size: These are the sizes for the OS-independent 
8451 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8452 debug version of the code includes the debug output trace mechanism and 
8453 has 
8454 a much larger code and data size.
8455
8456   Previous Release:
8457     Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
8458     Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
8459   Current Release:
8460     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8461     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8462
8463
8464 2) iASL Compiler/Disassembler and Tools:
8465
8466 AcpiExec: Implemented a new option (-m) to display full memory use 
8467 statistics upon subsystem/program termination. (Valery Podrezov)
8468
8469 ----------------------------------------
8470 09 November 2006. Summary of changes for version 20061109:
8471
8472 1) ACPI CA Core Subsystem:
8473
8474 Optimized the Load ASL operator in the case where the source operand is 
8475 an 
8476 operation region. Simply map the operation region memory, instead of 
8477 performing a bytewise read. (Region must be of type SystemMemory, see 
8478 below.)
8479
8480 Fixed the Load ASL operator for the case where the source operand is a 
8481 region field. A buffer object is also allowed as the source operand. BZ 
8482 480
8483
8484 Fixed a problem where the Load ASL operator allowed the source operand to 
8485 be 
8486 an operation region of any type. It is now restricted to regions of type 
8487 SystemMemory, as per the ACPI specification. BZ 481
8488
8489 Additional cleanup and optimizations for the new Table Manager code.
8490
8491 AcpiEnable will now fail if all of the required ACPI tables are not 
8492 loaded 
8493 (FADT, FACS, DSDT). BZ 477
8494
8495 Added #pragma pack(8/4) to acobject.h to ensure that the structures in 
8496 this 
8497 header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 
8498 manually optimized to be aligned and will not work if it is byte-packed. 
8499
8500 Example Code and Data Size: These are the sizes for the OS-independent 
8501 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8502 debug version of the code includes the debug output trace mechanism and 
8503 has 
8504 a much larger code and data size.
8505
8506   Previous Release:
8507     Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
8508     Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
8509   Current Release:
8510     Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
8511     Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
8512
8513
8514 2) iASL Compiler/Disassembler and Tools:
8515
8516 Fixed a problem where the presence of the _OSI predefined control method 
8517 within complex expressions could cause an internal compiler error.
8518
8519 AcpiExec: Implemented full region support for multiple address spaces. 
8520 SpaceId is now part of the REGION object. BZ 429
8521
8522 ----------------------------------------
8523 11 October 2006. Summary of changes for version 20061011:
8524
8525 1) ACPI CA Core Subsystem:
8526
8527 Completed an AML interpreter performance enhancement for control method 
8528 execution. Previously a 2-pass parse/execution, control methods are now 
8529 completely parsed and executed in a single pass. This improves overall 
8530 interpreter performance by ~25%, reduces code size, and reduces CPU stack 
8531 use. (Valery Podrezov + interpreter changes in version 20051202 that 
8532 eliminated namespace loading during the pass one parse.)
8533
8534 Implemented _CID support for PCI Root Bridge detection. If the _HID does 
8535 not 
8536 match the predefined PCI Root Bridge IDs, the _CID list (if present) is 
8537 now 
8538 obtained and also checked for an ID match.
8539
8540 Implemented additional support for the PCI _ADR execution: upsearch until 
8541
8542 device scope is found before executing _ADR. This allows PCI_Config 
8543 operation regions to be declared locally within control methods 
8544 underneath 
8545 PCI device objects.
8546
8547 Fixed a problem with a possible race condition between threads executing 
8548 AcpiWalkNamespace and the AML interpreter. This condition was removed by 
8549 modifying AcpiWalkNamespace to (by default) ignore all temporary 
8550 namespace 
8551 entries created during any concurrent control method execution. An 
8552 additional namespace race condition is known to exist between 
8553 AcpiWalkNamespace and the Load/Unload ASL operators and is still under 
8554 investigation.
8555
8556 Restructured the AML ParseLoop function, breaking it into several 
8557 subfunctions in order to reduce CPU stack use and improve 
8558 maintainability. 
8559 (Mikhail Kouzmich)
8560
8561 AcpiGetHandle: Fix for parameter validation to detect invalid 
8562 combinations 
8563 of prefix handle and pathname. BZ 478
8564
8565 Example Code and Data Size: These are the sizes for the OS-independent 
8566 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8567 debug version of the code includes the debug output trace mechanism and 
8568 has 
8569 a much larger code and data size.
8570
8571   Previous Release:
8572     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8573     Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8574   Current Release:
8575     Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
8576     Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
8577
8578 2) iASL Compiler/Disassembler and Tools:
8579
8580 Ported the -g option (get local ACPI tables) to the new ACPICA Table 
8581 Manager 
8582 to restore original behavior.
8583
8584 ----------------------------------------
8585 27 September 2006. Summary of changes for version 20060927:
8586
8587 1) ACPI CA Core Subsystem:
8588
8589 Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 
8590 These functions now use a spinlock for mutual exclusion and the interrupt 
8591 level indication flag is not needed.
8592
8593 Fixed a problem with the Global Lock where the lock could appear to be 
8594 obtained before it is actually obtained. The global lock semaphore was 
8595 inadvertently created with one unit instead of zero units. (BZ 464) 
8596 Fiodor 
8597 Suietov.
8598
8599 Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 
8600 during 
8601 a read from a buffer or region field. (BZ 458) Fiodor Suietov.
8602
8603 Example Code and Data Size: These are the sizes for the OS-independent 
8604 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8605 debug version of the code includes the debug output trace mechanism and 
8606 has 
8607 a much larger code and data size.
8608
8609   Previous Release:
8610     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8611     Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
8612   Current Release:
8613     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8614     Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8615
8616
8617 2) iASL Compiler/Disassembler and Tools:
8618
8619 Fixed a compilation problem with the pre-defined Resource Descriptor 
8620 field 
8621 names where an "object does not exist" error could be incorrectly 
8622 generated 
8623 if the parent ResourceTemplate pathname places the template within a 
8624 different namespace scope than the current scope. (BZ 7212)
8625
8626 Fixed a problem where the compiler could hang after syntax errors 
8627 detected 
8628 in an ElseIf construct. (BZ 453)
8629
8630 Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 
8631 operator. An incorrect output filename was produced when this parameter 
8632 was 
8633 a null string (""). Now, the original input filename is used as the AML 
8634 output filename, with an ".aml" extension.
8635
8636 Implemented a generic batch command mode for the AcpiExec utility 
8637 (execute 
8638 any AML debugger command) (Valery Podrezov).
8639
8640 ----------------------------------------
8641 12 September 2006. Summary of changes for version 20060912:
8642
8643 1) ACPI CA Core Subsystem:
8644
8645 Enhanced the implementation of the "serialized mode" of the interpreter 
8646 (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 
8647 specified, instead of creating a serialization semaphore per control 
8648 method, 
8649 the interpreter lock is simply no longer released before a blocking 
8650 operation during control method execution. This effectively makes the AML 
8651 Interpreter single-threaded. The overhead of a semaphore per-method is 
8652 eliminated.
8653
8654 Fixed a regression where an error was no longer emitted if a control 
8655 method 
8656 attempts to create 2 objects of the same name. This once again returns 
8657 AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 
8658 that 
8659 will dynamically serialize the control method to possible prevent future 
8660 errors. (BZ 440)
8661
8662 Integrated a fix for a problem with PCI Express HID detection in the PCI 
8663 Config Space setup procedure. (BZ 7145)
8664
8665 Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 
8666 AcpiHwInitialize function - the FADT registers are now validated when the 
8667 table is loaded.
8668
8669 Added two new warnings during FADT verification - 1) if the FADT is 
8670 larger 
8671 than the largest known FADT version, and 2) if there is a mismatch 
8672 between 
8673
8674 32-bit block address and the 64-bit X counterpart (when both are non-
8675 zero.)
8676
8677 Example Code and Data Size: These are the sizes for the OS-independent 
8678 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8679 debug version of the code includes the debug output trace mechanism and 
8680 has 
8681 a much larger code and data size.
8682
8683   Previous Release:
8684     Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
8685     Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
8686   Current Release:
8687     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8688     Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
8689
8690
8691 2) iASL Compiler/Disassembler and Tools:
8692
8693 Fixed a problem with the implementation of the Switch() operator where 
8694 the 
8695 temporary variable was declared too close to the actual Switch, instead 
8696 of 
8697 at method level. This could cause a problem if the Switch() operator is 
8698 within a while loop, causing an error on the second iteration. (BZ 460)
8699
8700 Disassembler - fix for error emitted for unknown type for target of scope 
8701 operator. Now, ignore it and continue.
8702
8703 Disassembly of an FADT now verifies the input FADT and reports any errors 
8704 found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
8705
8706 Disassembly of raw data buffers with byte initialization data now 
8707 prefixes 
8708 each output line with the current buffer offset.
8709
8710 Disassembly of ASF! table now includes all variable-length data fields at 
8711 the end of some of the subtables.
8712
8713 The disassembler now emits a comment if a buffer appears to be a 
8714 ResourceTemplate, but cannot be disassembled as such because the EndTag 
8715 does 
8716 not appear at the very end of the buffer.
8717
8718 AcpiExec - Added the "-t" command line option to enable the serialized 
8719 mode 
8720 of the AML interpreter.
8721
8722 ----------------------------------------
8723 31 August 2006. Summary of changes for version 20060831:
8724
8725 1) ACPI CA Core Subsystem:
8726
8727 Miscellaneous fixes for the Table Manager:
8728 - Correctly initialize internal common FADT for all 64-bit "X" fields
8729 - Fixed a couple table mapping issues during table load
8730 - Fixed a couple alignment issues for IA64
8731 - Initialize input array to zero in AcpiInitializeTables
8732 - Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 
8733 AcpiGetTableByIndex
8734
8735 Change for GPE support: when a "wake" GPE is received, all wake GPEs are 
8736 now 
8737 immediately disabled to prevent the waking GPE from firing again and to 
8738 prevent other wake GPEs from interrupting the wake process.
8739
8740 Added the AcpiGpeCount global that tracks the number of processed GPEs, 
8741 to 
8742 be used for debugging systems with a large number of ACPI interrupts.
8743
8744 Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 
8745 both the ACPICA headers and the disassembler.
8746
8747 Example Code and Data Size: These are the sizes for the OS-independent 
8748 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8749 debug version of the code includes the debug output trace mechanism and 
8750 has 
8751 a much larger code and data size.
8752
8753   Previous Release:
8754     Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
8755     Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
8756   Current Release:
8757     Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
8758     Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
8759
8760
8761 2) iASL Compiler/Disassembler and Tools:
8762
8763 Disassembler support for the DMAR ACPI table.
8764
8765 ----------------------------------------
8766 23 August 2006. Summary of changes for version 20060823:
8767
8768 1) ACPI CA Core Subsystem:
8769
8770 The Table Manager component has been completely redesigned and 
8771 reimplemented. The new design is much simpler, and reduces the overall 
8772 code 
8773 and data size of the kernel-resident ACPICA by approximately 5%. Also, it 
8774 is 
8775 now possible to obtain the ACPI tables very early during kernel 
8776 initialization, even before dynamic memory management is initialized. 
8777 (Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
8778
8779 Obsolete ACPICA interfaces:
8780
8781 - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 
8782 init 
8783 time).
8784 - AcpiLoadTable: Not needed.
8785 - AcpiUnloadTable: Not needed.
8786
8787 New ACPICA interfaces:
8788
8789 - AcpiInitializeTables: Must be called before the table manager can be 
8790 used.
8791 - AcpiReallocateRootTable: Used to transfer the root table to dynamically 
8792 allocated memory after it becomes available.
8793 - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 
8794 tables 
8795 in the RSDT/XSDT.
8796
8797 Other ACPICA changes:
8798
8799 - AcpiGetTableHeader returns the actual mapped table header, not a copy. 
8800 Use 
8801 AcpiOsUnmapMemory to free this mapping.
8802 - AcpiGetTable returns the actual mapped table. The mapping is managed 
8803 internally and must not be deleted by the caller. Use of this interface 
8804 causes no additional dynamic memory allocation.
8805 - AcpiFindRootPointer: Support for physical addressing has been 
8806 eliminated, 
8807 it appeared to be unused.
8808 - The interface to AcpiOsMapMemory has changed to be consistent with the 
8809 other allocation interfaces.
8810 - The interface to AcpiOsGetRootPointer has changed to eliminate 
8811 unnecessary 
8812 parameters.
8813 - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 
8814 64-
8815 bit platforms. Was previously 64 bits on all platforms.
8816 - The interface to the ACPI Global Lock acquire/release macros have 
8817 changed 
8818 slightly since ACPICA no longer keeps a local copy of the FACS with a 
8819 constructed pointer to the actual global lock.
8820
8821 Porting to the new table manager:
8822
8823 - AcpiInitializeTables: Must be called once, and can be called anytime 
8824 during the OS initialization process. It allows the host to specify an 
8825 area 
8826 of memory to be used to store the internal version of the RSDT/XSDT (root 
8827 table). This allows the host to access ACPI tables before memory 
8828 management 
8829 is initialized and running.
8830 - AcpiReallocateRootTable: Can be called after memory management is 
8831 running 
8832 to copy the root table to a dynamically allocated array, freeing up the 
8833 scratch memory specified in the call to AcpiInitializeTables.
8834 - AcpiSubsystemInitialize: This existing interface is independent of the 
8835 Table Manager, and does not have to be called before the Table Manager 
8836 can 
8837 be used, it only must be called before the rest of ACPICA can be used.
8838 - ACPI Tables: Some changes have been made to the names and structure of 
8839 the 
8840 actbl.h and actbl1.h header files and may require changes to existing 
8841 code. 
8842 For example, bitfields have been completely removed because of their lack 
8843 of 
8844 portability across C compilers.
8845 - Update interfaces to the Global Lock acquire/release macros if local 
8846 versions are used. (see acwin.h)
8847
8848 Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
8849
8850 New files: tbfind.c
8851
8852 Example Code and Data Size: These are the sizes for the OS-independent 
8853 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8854 debug version of the code includes the debug output trace mechanism and 
8855 has 
8856 a much larger code and data size.
8857
8858   Previous Release:
8859     Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8860     Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8861   Current Release:
8862     Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
8863     Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
8864
8865
8866 2) iASL Compiler/Disassembler and Tools:
8867
8868 No changes for this release.
8869
8870 ----------------------------------------
8871 21 July 2006. Summary of changes for version 20060721:
8872
8873 1) ACPI CA Core Subsystem:
8874
8875 The full source code for the ASL test suite used to validate the iASL 
8876 compiler and the ACPICA core subsystem is being released with the ACPICA 
8877 source for the first time. The source is contained in a separate package 
8878 and 
8879 consists of over 1100 files that exercise all ASL/AML operators. The 
8880 package 
8881 should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 
8882 Fiodor 
8883 Suietov)
8884
8885 Completed a new design and implementation for support of the ACPI Global 
8886 Lock. On the OS side, the global lock is now treated as a standard AML 
8887 mutex. Previously, multiple OS threads could "acquire" the global lock 
8888 simultaneously. However, this could cause the BIOS to be starved out of 
8889 the 
8890 lock - especially in cases such as the Embedded Controller driver where 
8891 there is a tight coupling between the OS and the BIOS.
8892
8893 Implemented an optimization for the ACPI Global Lock interrupt mechanism. 
8894 The Global Lock interrupt handler no longer queues the execution of a 
8895 separate thread to signal the global lock semaphore. Instead, the 
8896 semaphore 
8897 is signaled directly from the interrupt handler.
8898
8899 Implemented support within the AML interpreter for package objects that 
8900 contain a larger AML length (package list length) than the package 
8901 element 
8902 count. In this case, the length of the package is truncated to match the 
8903 package element count. Some BIOS code apparently modifies the package 
8904 length 
8905 on the fly, and this change supports this behavior. Provides 
8906 compatibility 
8907 with the MS AML interpreter. (With assistance from Fiodor Suietov)
8908
8909 Implemented a temporary fix for the BankValue parameter of a Bank Field 
8910 to 
8911 support all constant values, now including the Zero and One opcodes. 
8912 Evaluation of this parameter must eventually be converted to a full 
8913 TermArg 
8914 evaluation. A not-implemented error is now returned (temporarily) for 
8915 non-
8916 constant values for this parameter.
8917
8918 Fixed problem reports (Fiodor Suietov) integrated:
8919 - Fix for premature object deletion after CopyObject on Operation Region 
8920 (BZ 
8921 350)
8922
8923 Example Code and Data Size: These are the sizes for the OS-independent 
8924 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8925 debug version of the code includes the debug output trace mechanism and 
8926 has 
8927 a much larger code and data size.
8928
8929   Previous Release:
8930     Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
8931     Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
8932   Current Release:
8933     Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8934     Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8935
8936
8937 2) iASL Compiler/Disassembler and Tools:
8938
8939 No changes for this release.
8940
8941 ----------------------------------------
8942 07 July 2006. Summary of changes for version 20060707:
8943
8944 1) ACPI CA Core Subsystem:
8945
8946 Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 
8947 that do not allow the initialization of address pointers within packed 
8948 structures - even though the hardware itself may support misaligned 
8949 transfers. Some of the debug data structures are packed by default to 
8950 minimize size.
8951
8952 Added an error message for the case where AcpiOsGetThreadId() returns 
8953 zero. 
8954 A non-zero value is required by the core ACPICA code to ensure the proper 
8955 operation of AML mutexes and recursive control methods.
8956
8957 The DSDT is now the only ACPI table that determines whether the AML 
8958 interpreter is in 32-bit or 64-bit mode. Not really a functional change, 
8959 but 
8960 the hooks for per-table 32/64 switching have been removed from the code. 
8961
8962 clarification to the ACPI specification is forthcoming in ACPI 3.0B.
8963
8964 Fixed a possible leak of an OwnerID in the error path of 
8965 AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 
8966 deletion to a single place in AcpiTbUninstallTable to correct possible 
8967 leaks 
8968 when using the AcpiTbDeleteTablesByType interface (with assistance from 
8969 Lance Ortiz.)
8970
8971 Fixed a problem with Serialized control methods where the semaphore 
8972 associated with the method could be over-signaled after multiple method 
8973 invocations.
8974
8975 Fixed two issues with the locking of the internal namespace data 
8976 structure. 
8977 Both the Unload() operator and AcpiUnloadTable interface now lock the 
8978 namespace during the namespace deletion associated with the table unload 
8979 (with assistance from Linn Crosetto.)
8980
8981 Fixed problem reports (Valery Podrezov) integrated:
8982 - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
8983
8984 Fixed problem reports (Fiodor Suietov) integrated:
8985 - Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
8986 - On Address Space handler deletion, needless deactivation call (BZ 374)
8987 - AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 
8988 375)
8989 - Possible memory leak, Notify sub-objects of Processor, Power, 
8990 ThermalZone 
8991 (BZ 376)
8992 - AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
8993 - Minimum Length of RSDT should be validated (BZ 379)
8994 - AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 
8995 Handler (BZ (380)
8996 - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 
8997 loaded 
8998 (BZ 381)
8999
9000 Example Code and Data Size: These are the sizes for the OS-independent 
9001 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9002 debug version of the code includes the debug output trace mechanism and 
9003 has 
9004 a much larger code and data size.
9005
9006   Previous Release:
9007     Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
9008     Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9009   Current Release:
9010     Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9011     Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9012
9013
9014 2) iASL Compiler/Disassembler and Tools:
9015
9016 Fixed problem reports:
9017 Compiler segfault when ASL contains a long (>1024) String declaration (BZ 
9018 436)
9019
9020 ----------------------------------------
9021 23 June 2006. Summary of changes for version 20060623:
9022
9023 1) ACPI CA Core Subsystem:
9024
9025 Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 
9026 allows the type to be customized to the host OS for improved efficiency 
9027 (since a spinlock is usually a very small object.)
9028
9029 Implemented support for "ignored" bits in the ACPI registers. According 
9030 to 
9031 the ACPI specification, these bits should be preserved when writing the 
9032 registers via a read/modify/write cycle. There are 3 bits preserved in 
9033 this 
9034 manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
9035
9036 Implemented the initial deployment of new OSL mutex interfaces. Since 
9037 some 
9038 host operating systems have separate mutex and semaphore objects, this 
9039 feature was requested. The base code now uses mutexes (and the new mutex 
9040 interfaces) wherever a binary semaphore was used previously. However, for 
9041 the current release, the mutex interfaces are defined as macros to map 
9042 them 
9043 to the existing semaphore interfaces. Therefore, no OSL changes are 
9044 required 
9045 at this time. (See acpiosxf.h)
9046
9047 Fixed several problems with the support for the control method SyncLevel 
9048 parameter. The SyncLevel now works according to the ACPI specification 
9049 and 
9050 in concert with the Mutex SyncLevel parameter, since the current 
9051 SyncLevel 
9052 is a property of the executing thread. Mutual exclusion for control 
9053 methods 
9054 is now implemented with a mutex instead of a semaphore.
9055
9056 Fixed three instances of the use of the C shift operator in the bitfield 
9057 support code (exfldio.c) to avoid the use of a shift value larger than 
9058 the 
9059 target data width. The behavior of C compilers is undefined in this case 
9060 and 
9061 can cause unpredictable results, and therefore the case must be detected 
9062 and 
9063 avoided. (Fiodor Suietov)
9064
9065 Added an info message whenever an SSDT or OEM table is loaded dynamically 
9066 via the Load() or LoadTable() ASL operators. This should improve 
9067 debugging 
9068 capability since it will show exactly what tables have been loaded 
9069 (beyond 
9070 the tables present in the RSDT/XSDT.)
9071
9072 Example Code and Data Size: These are the sizes for the OS-independent 
9073 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9074 debug version of the code includes the debug output trace mechanism and 
9075 has 
9076 a much larger code and data size.
9077
9078   Previous Release:
9079     Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
9080     Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
9081   Current Release:
9082     Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
9083     Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9084
9085
9086 2) iASL Compiler/Disassembler and Tools:
9087
9088 No changes for this release.
9089
9090 ----------------------------------------
9091 08 June 2006. Summary of changes for version 20060608:
9092
9093 1) ACPI CA Core Subsystem:
9094
9095 Converted the locking mutex used for the ACPI hardware to a spinlock. 
9096 This 
9097 change should eliminate all problems caused by attempting to acquire a 
9098 semaphore at interrupt level, and it means that all ACPICA external 
9099 interfaces that directly access the ACPI hardware can be safely called 
9100 from 
9101 interrupt level. OSL code that implements the semaphore interfaces should 
9102 be 
9103 able to eliminate any workarounds for being called at interrupt level.
9104
9105 Fixed a regression introduced in 20060526 where the ACPI device 
9106 initialization could be prematurely aborted with an AE_NOT_FOUND if a 
9107 device 
9108 did not have an optional _INI method.
9109
9110 Fixed an IndexField issue where a write to the Data Register should be 
9111 limited in size to the AccessSize (width) of the IndexField itself. (BZ 
9112 433, 
9113 Fiodor Suietov)
9114
9115 Fixed problem reports (Valery Podrezov) integrated:
9116 - Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
9117
9118 Fixed problem reports (Fiodor Suietov) integrated:
9119 - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
9120
9121 Removed four global mutexes that were obsolete and were no longer being 
9122 used.
9123
9124 Example Code and Data Size: These are the sizes for the OS-independent 
9125 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9126 debug version of the code includes the debug output trace mechanism and 
9127 has 
9128 a much larger code and data size.
9129
9130   Previous Release:
9131     Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
9132     Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
9133   Current Release:
9134     Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
9135     Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
9136
9137
9138 2) iASL Compiler/Disassembler and Tools:
9139
9140 Fixed a fault when using -g option (get tables from registry) on Windows 
9141 machines.
9142
9143 Fixed problem reports integrated:
9144 - Generate error if CreateField NumBits parameter is zero. (BZ 405)
9145 - Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 
9146 Suietov)
9147 - Global table revision override (-r) is ignored (BZ 413)
9148
9149 ----------------------------------------
9150 26 May 2006. Summary of changes for version 20060526:
9151
9152 1) ACPI CA Core Subsystem:
9153
9154 Restructured, flattened, and simplified the internal interfaces for 
9155 namespace object evaluation - resulting in smaller code, less CPU stack 
9156 use, 
9157 and fewer interfaces. (With assistance from Mikhail Kouzmich)
9158
9159 Fixed a problem with the CopyObject operator where the first parameter 
9160 was 
9161 not typed correctly for the parser, interpreter, compiler, and 
9162 disassembler. 
9163 Caused various errors and unexpected behavior.
9164
9165 Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 
9166 produced incorrect results with some C compilers. Since the behavior of C 
9167 compilers when the shift value is larger than the datatype width is 
9168 apparently not well defined, the interpreter now detects this condition 
9169 and 
9170 simply returns zero as expected in all such cases. (BZ 395)
9171
9172 Fixed problem reports (Valery Podrezov) integrated:
9173 - Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
9174 - Allow interpreter to handle nested method declarations (BZ 5361)
9175
9176 Fixed problem reports (Fiodor Suietov) integrated:
9177 - AcpiTerminate doesn't free debug memory allocation list objects (BZ 
9178 355)
9179 - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 
9180 356)
9181 - AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
9182 - Resource Manager should return AE_TYPE for non-device objects (BZ 358)
9183 - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
9184 - Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
9185 - Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
9186 - Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
9187 - AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 
9188 365)
9189 - Status of the Global Initialization Handler call not used (BZ 366)
9190 - Incorrect object parameter to Global Initialization Handler (BZ 367)
9191
9192 Example Code and Data Size: These are the sizes for the OS-independent 
9193 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9194 debug version of the code includes the debug output trace mechanism and 
9195 has 
9196 a much larger code and data size.
9197
9198   Previous Release:
9199     Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
9200     Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
9201   Current Release:
9202     Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
9203     Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
9204
9205
9206 2) iASL Compiler/Disassembler and Tools:
9207
9208 Modified the parser to allow the names IO, DMA, and IRQ to be used as 
9209 namespace identifiers with no collision with existing resource descriptor 
9210 macro names. This provides compatibility with other ASL compilers and is 
9211 most useful for disassembly/recompilation of existing tables without 
9212 parse 
9213 errors. (With assistance from Thomas Renninger)
9214
9215 Disassembler: fixed an incorrect disassembly problem with the 
9216 DataTableRegion and CopyObject operators. Fixed a possible fault during 
9217 disassembly of some Alias operators.
9218
9219 ----------------------------------------
9220 12 May 2006. Summary of changes for version 20060512:
9221
9222 1) ACPI CA Core Subsystem:
9223
9224 Replaced the AcpiOsQueueForExecution interface with a new interface named 
9225 AcpiOsExecute. The major difference is that the new interface does not 
9226 have 
9227 a Priority parameter, this appeared to be useless and has been replaced 
9228 by 
9229
9230 Type parameter. The Type tells the host what type of execution is being 
9231 requested, such as global lock handler, notify handler, GPE handler, etc. 
9232 This allows the host to queue and execute the request as appropriate for 
9233 the 
9234 request type, possibly using different work queues and different 
9235 priorities 
9236 for the various request types. This enables fixes for multithreading 
9237 deadlock problems such as BZ #5534, and will require changes to all 
9238 existing 
9239 OS interface layers. (Alexey Starikovskiy and Bob Moore)
9240
9241 Fixed a possible memory leak associated with the support for the so-
9242 called 
9243 "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 
9244 Suietov)
9245
9246 Fixed a problem with the Load() operator where a table load from an 
9247 operation region could overwrite an internal table buffer by up to 7 
9248 bytes 
9249 and cause alignment faults on IPF systems. (With assistance from Luming 
9250 Yu)
9251
9252 Example Code and Data Size: These are the sizes for the OS-independent 
9253 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9254 debug version of the code includes the debug output trace mechanism and 
9255 has 
9256 a much larger code and data size.
9257
9258   Previous Release:
9259     Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
9260     Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
9261   Current Release:
9262     Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
9263     Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
9264
9265
9266
9267 2) iASL Compiler/Disassembler and Tools:
9268
9269 Disassembler: Implemented support to cross reference the internal 
9270 namespace 
9271 and automatically generate ASL External() statements for symbols not 
9272 defined 
9273 within the current table being disassembled. This will simplify the 
9274 disassembly and recompilation of interdependent tables such as SSDTs 
9275 since 
9276 these statements will no longer have to be added manually.
9277
9278 Disassembler: Implemented experimental support to automatically detect 
9279 invocations of external control methods and generate appropriate 
9280 External() 
9281 statements. This is problematic because the AML cannot be correctly 
9282 parsed 
9283 until the number of arguments for each control method is known. 
9284 Currently, 
9285 standalone method invocations and invocations as the source operand of a 
9286 Store() statement are supported.
9287
9288 Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 
9289 LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 
9290 LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 
9291 more readable and likely closer to the original ASL source.
9292
9293 ----------------------------------------
9294 21 April 2006. Summary of changes for version 20060421:
9295
9296 1) ACPI CA Core Subsystem:
9297
9298 Removed a device initialization optimization introduced in 20051216 where 
9299 the _STA method was not run unless an _INI was also present for the same 
9300 device. This optimization could cause problems because it could allow 
9301 _INI 
9302 methods to be run within a not-present device subtree. (If a not-present 
9303 device had no _INI, _STA would not be run, the not-present status would 
9304 not 
9305 be discovered, and the children of the device would be incorrectly 
9306 traversed.)
9307
9308 Implemented a new _STA optimization where namespace subtrees that do not 
9309 contain _INI are identified and ignored during device initialization. 
9310 Selectively running _STA can significantly improve boot time on large 
9311 machines (with assistance from Len Brown.)
9312
9313 Implemented support for the device initialization case where the returned 
9314 _STA flags indicate a device not-present but functioning. In this case, 
9315 _INI 
9316 is not run, but the device children are examined for presence, as per the 
9317 ACPI specification.
9318
9319 Implemented an additional change to the IndexField support in order to 
9320 conform to MS behavior. The value written to the Index Register is not 
9321 simply a byte offset, it is a byte offset in units of the access width of 
9322 the parent Index Field. (Fiodor Suietov)
9323
9324 Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 
9325 interface is called during the creation of all AML operation regions, and 
9326 allows the host OS to exert control over what addresses it will allow the 
9327 AML code to access. Operation Regions whose addresses are disallowed will 
9328 cause a runtime exception when they are actually accessed (will not 
9329 affect 
9330 or abort table loading.) See oswinxf or osunixxf for an example 
9331 implementation.
9332
9333 Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 
9334 interface allows the host OS to match the various "optional" 
9335 interface/behavior strings for the _OSI predefined control method as 
9336 appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 
9337 for an example implementation.
9338
9339 Restructured and corrected various problems in the exception handling 
9340 code 
9341 paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 
9342 (with assistance from Takayoshi Kochi.)
9343
9344 Modified the Linux source converter to ignore quoted string literals 
9345 while 
9346 converting identifiers from mixed to lower case. This will correct 
9347 problems 
9348 with the disassembler and other areas where such strings must not be 
9349 modified.
9350
9351 The ACPI_FUNCTION_* macros no longer require quotes around the function 
9352 name. This allows the Linux source converter to convert the names, now 
9353 that 
9354 the converter ignores quoted strings.
9355
9356 Example Code and Data Size: These are the sizes for the OS-independent 
9357 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9358 debug version of the code includes the debug output trace mechanism and 
9359 has 
9360 a much larger code and data size.
9361
9362   Previous Release:
9363
9364     Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
9365     Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
9366   Current Release:
9367     Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
9368     Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
9369
9370
9371 2) iASL Compiler/Disassembler and Tools:
9372
9373 Implemented 3 new warnings for iASL, and implemented multiple warning 
9374 levels 
9375 (w2 flag).
9376
9377 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 
9378 not 
9379 WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 
9380 check for the possible timeout, a warning is issued.
9381
9382 2) Useless operators: If an ASL operator does not specify an optional 
9383 target 
9384 operand and it also does not use the function return value from the 
9385 operator, a warning is issued since the operator effectively does 
9386 nothing.
9387
9388 3) Unreferenced objects: If a namespace object is created, but never 
9389 referenced, a warning is issued. This is a warning level 2 since there 
9390 are 
9391 cases where this is ok, such as when a secondary table is loaded that 
9392 uses 
9393 the unreferenced objects. Even so, care is taken to only flag objects 
9394 that 
9395 don't look like they will ever be used. For example, the reserved methods 
9396 (starting with an underscore) are usually not referenced because it is 
9397 expected that the OS will invoke them.
9398
9399 ----------------------------------------
9400 31 March 2006. Summary of changes for version 20060331:
9401
9402 1) ACPI CA Core Subsystem:
9403
9404 Implemented header file support for the following additional ACPI tables: 
9405 ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 
9406 support, 
9407 all current and known ACPI tables are now defined in the ACPICA headers 
9408 and 
9409 are available for use by device drivers and other software.
9410
9411 Implemented support to allow tables that contain ACPI names with invalid 
9412 characters to be loaded. Previously, this would cause the table load to 
9413 fail, but since there are several known cases of such tables on existing 
9414 machines, this change was made to enable ACPI support for them. Also, 
9415 this 
9416 matches the behavior of the Microsoft ACPI implementation.
9417
9418 Fixed a couple regressions introduced during the memory optimization in 
9419 the 
9420 20060317 release. The namespace node definition required additional 
9421 reorganization and an internal datatype that had been changed to 8-bit 
9422 was 
9423 restored to 32-bit. (Valery Podrezov)
9424
9425 Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 
9426 could be passed through to AcpiOsReleaseObject which is unexpected. Such 
9427 null pointers are now trapped and ignored, matching the behavior of the 
9428 previous implementation before the deployment of AcpiOsReleaseObject.
9429 (Valery Podrezov, Fiodor Suietov)
9430
9431 Fixed a memory mapping leak during the deletion of a SystemMemory 
9432 operation 
9433 region where a cached memory mapping was not deleted. This became a 
9434 noticeable problem for operation regions that are defined within 
9435 frequently 
9436 used control methods. (Dana Meyers)
9437
9438 Reorganized the ACPI table header files into two main files: one for the 
9439 ACPI tables consumed by the ACPICA core, and another for the 
9440 miscellaneous 
9441 ACPI tables that are consumed by the drivers and other software. The 
9442 various 
9443 FADT definitions were merged into one common section and three different 
9444 tables (ACPI 1.0, 1.0+, and 2.0)
9445
9446 Example Code and Data Size: These are the sizes for the OS-independent 
9447 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
9448 debug version of the code includes the debug output trace mechanism and 
9449 has 
9450 a much larger code and data size.
9451
9452   Previous Release:
9453     Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
9454     Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
9455   Current Release:
9456     Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
9457     Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
9458
9459
9460 2) iASL Compiler/Disassembler and Tools:
9461
9462 Disassembler: Implemented support to decode and format all non-AML ACPI 
9463 tables (tables other than DSDTs and SSDTs.) This includes the new tables 
9464 added to the ACPICA headers, therefore all current and known ACPI tables 
9465 are 
9466 supported.
9467
9468 Disassembler: The change to allow ACPI names with invalid characters also 
9469 enables the disassembly of such tables. Invalid characters within names 
9470 are 
9471 changed to '*' to make the name printable; the iASL compiler will still 
9472 generate an error for such names, however, since this is an invalid ACPI 
9473 character.
9474
9475 Implemented an option for AcpiXtract (-a) to extract all tables found in 
9476 the 
9477 input file. The default invocation extracts only the DSDTs and SSDTs.
9478
9479 Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 
9480 makefile for the AcpiXtract utility.
9481
9482 ----------------------------------------
9483 17 March 2006. Summary of changes for version 20060317:
9484
9485 1) ACPI CA Core Subsystem:
9486
9487 Implemented the use of a cache object for all internal namespace nodes. 
9488 Since there are about 1000 static nodes in a typical system, this will 
9489 decrease memory use for cache implementations that minimize per-
9490 allocation 
9491 overhead (such as a slab allocator.)
9492
9493 Removed the reference count mechanism for internal namespace nodes, since 
9494 it 
9495 was deemed unnecessary. This reduces the size of each namespace node by 
9496 about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 
9497 case, 
9498 and 32 bytes for the 64-bit case.
9499
9500 Optimized several internal data structures to reduce object size on 64-
9501 bit 
9502 platforms by packing data within the 64-bit alignment. This includes the 
9503 frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 
9504 instances corresponding to the namespace objects.
9505
9506 Added two new strings for the predefined _OSI method: "Windows 2001.1 
9507 SP1" 
9508 and "Windows 2006".
9509
9510 Split the allocation tracking mechanism out to a separate file, from 
9511 utalloc.c to uttrack.c. This mechanism appears to be only useful for 
9512 application-level code. Kernels may wish to not include uttrack.c in 
9513 distributions.
9514
9515 Removed all remnants of the obsolete ACPI_REPORT_* macros and the 
9516 associated 
9517 code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 
9518 macros.)
9519
9520 Code and Data Size: These are the sizes for the acpica.lib produced by 
9521 the 
9522 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 
9523 ACPI 
9524 driver or OSPM code. The debug version of the code includes the debug 
9525 output 
9526 trace mechanism and has a much larger code and data size. Note that these 
9527 values will vary depending on the efficiency of the compiler and the 
9528 compiler options used during generation.
9529
9530   Previous Release:
9531     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9532     Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9533   Current Release:
9534     Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
9535     Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
9536
9537
9538 2) iASL Compiler/Disassembler and Tools:
9539
9540 Implemented an ANSI C version of the acpixtract utility. This version 
9541 will 
9542 automatically extract the DSDT and all SSDTs from the input acpidump text 
9543 file and dump the binary output to separate files. It can also display a 
9544 summary of the input file including the headers for each table found and 
9545 will extract any single ACPI table, with any signature. (See 
9546 source/tools/acpixtract)
9547
9548 ----------------------------------------
9549 10 March 2006. Summary of changes for version 20060310:
9550
9551 1) ACPI CA Core Subsystem:
9552
9553 Tagged all external interfaces to the subsystem with the new 
9554 ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 
9555 assist 
9556 kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 
9557 macro. The default definition is NULL.
9558
9559 Added the ACPI_THREAD_ID type for the return value from 
9560 AcpiOsGetThreadId. 
9561 This allows the host to define this as necessary to simplify kernel 
9562 integration. The default definition is ACPI_NATIVE_UINT.
9563
9564 Fixed two interpreter problems related to error processing, the deletion 
9565 of 
9566 objects, and placing invalid pointers onto the internal operator result 
9567 stack. BZ 6028, 6151 (Valery Podrezov)
9568
9569 Increased the reference count threshold where a warning is emitted for 
9570 large 
9571 reference counts in order to eliminate unnecessary warnings on systems 
9572 with 
9573 large namespaces (especially 64-bit.) Increased the value from 0x400 to 
9574 0x800.
9575
9576 Due to universal disagreement as to the meaning of the 'c' in the 
9577 calloc() 
9578 function, the ACPI_MEM_CALLOCATE macro has been renamed to 
9579 ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 
9580 ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 
9581 ACPI_FREE.
9582
9583 Code and Data Size: These are the sizes for the acpica.lib produced by 
9584 the 
9585 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 
9586 ACPI 
9587 driver or OSPM code. The debug version of the code includes the debug 
9588 output 
9589 trace mechanism and has a much larger code and data size. Note that these 
9590 values will vary depending on the efficiency of the compiler and the 
9591 compiler options used during generation.
9592
9593   Previous Release:
9594     Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
9595     Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
9596   Current Release:
9597     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9598     Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9599
9600
9601 2) iASL Compiler/Disassembler:
9602
9603 Disassembler: implemented support for symbolic resource descriptor 
9604 references. If a CreateXxxxField operator references a fixed offset 
9605 within 
9606
9607 resource descriptor, a name is assigned to the descriptor and the offset 
9608 is 
9609 translated to the appropriate resource tag and pathname. The addition of 
9610 this support brings the disassembled code very close to the original ASL 
9611 source code and helps eliminate run-time errors when the disassembled 
9612 code 
9613 is modified (and recompiled) in such a way as to invalidate the original 
9614 fixed offsets.
9615
9616 Implemented support for a Descriptor Name as the last parameter to the 
9617 ASL 
9618 Register() macro. This parameter was inadvertently left out of the ACPI 
9619 specification, and will be added for ACPI 3.0b.
9620
9621 Fixed a problem where the use of the "_OSI" string (versus the full path 
9622 "\_OSI") caused an internal compiler error. ("No back ptr to op")
9623
9624 Fixed a problem with the error message that occurs when an invalid string 
9625 is 
9626 used for a _HID object (such as one with an embedded asterisk: 
9627 "*PNP010A".) 
9628 The correct message is now displayed.
9629
9630 ----------------------------------------
9631 17 February 2006. Summary of changes for version 20060217:
9632
9633 1) ACPI CA Core Subsystem:
9634
9635 Implemented a change to the IndexField support to match the behavior of 
9636 the 
9637 Microsoft AML interpreter. The value written to the Index register is now 
9638
9639 byte offset, no longer an index based upon the width of the Data 
9640 register. 
9641 This should fix IndexField problems seen on some machines where the Data 
9642 register is not exactly one byte wide. The ACPI specification will be 
9643 clarified on this point.
9644
9645 Fixed a problem where several resource descriptor types could overrun the 
9646 internal descriptor buffer due to size miscalculation: VendorShort, 
9647 VendorLong, and Interrupt. This was noticed on IA64 machines, but could 
9648 affect all platforms.
9649
9650 Fixed a problem where individual resource descriptors were misaligned 
9651 within 
9652 the internal buffer, causing alignment faults on IA64 platforms.
9653
9654 Code and Data Size: These are the sizes for the acpica.lib produced by 
9655 the 
9656 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 
9657 ACPI 
9658 driver or OSPM code. The debug version of the code includes the debug 
9659 output 
9660 trace mechanism and has a much larger code and data size. Note that these 
9661 values will vary depending on the efficiency of the compiler and the 
9662 compiler options used during generation.
9663
9664   Previous Release:
9665     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9666     Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
9667   Current Release:
9668     Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
9669     Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
9670
9671
9672 2) iASL Compiler/Disassembler:
9673
9674 Implemented support for new reserved names: _WDG and _WED are Microsoft 
9675 extensions for Windows Instrumentation Management, _TDL is a new ACPI-
9676 defined method (Throttling Depth Limit.)
9677
9678 Fixed a problem where a zero-length VendorShort or VendorLong resource 
9679 descriptor was incorrectly emitted as a descriptor of length one.
9680
9681 ----------------------------------------
9682 10 February 2006. Summary of changes for version 20060210:
9683
9684 1) ACPI CA Core Subsystem:
9685
9686 Removed a couple of extraneous ACPI_ERROR messages that appeared during 
9687 normal execution. These became apparent after the conversion from 
9688 ACPI_DEBUG_PRINT.
9689
9690 Fixed a problem where the CreateField operator could hang if the BitIndex 
9691 or 
9692 NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
9693
9694 Fixed a problem where a DeRefOf operation on a buffer object incorrectly 
9695 failed with an exception. This also fixes a couple of related RefOf and 
9696 DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
9697
9698 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 
9699 of 
9700 AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 
9701 BZ 
9702 5480)
9703
9704 Implemented a memory cleanup at the end of the execution of each 
9705 iteration 
9706 of an AML While() loop, preventing the accumulation of outstanding 
9707 objects. 
9708 (Valery Podrezov, BZ 5427)
9709
9710 Eliminated a chunk of duplicate code in the object resolution code. 
9711 (Valery 
9712 Podrezov, BZ 5336)
9713
9714 Fixed several warnings during the 64-bit code generation.
9715
9716 The AcpiSrc source code conversion tool now inserts one line of 
9717 whitespace 
9718 after an if() statement that is followed immediately by a comment, 
9719 improving 
9720 readability of the Linux code.
9721
9722 Code and Data Size: The current and previous library sizes for the core 
9723 subsystem are shown below. These are the code and data sizes for the 
9724 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
9725 These 
9726 values do not include any ACPI driver or OSPM code. The debug version of 
9727 the 
9728 code includes the debug output trace mechanism and has a much larger code 
9729 and data size. Note that these values will vary depending on the 
9730 efficiency 
9731 of the compiler and the compiler options used during generation.
9732
9733   Previous Release:
9734     Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
9735     Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
9736   Current Release:
9737     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9738     Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
9739
9740
9741 2) iASL Compiler/Disassembler:
9742
9743 Fixed a problem with the disassembly of a BankField operator with a 
9744 complex 
9745 expression for the BankValue parameter.
9746
9747 ----------------------------------------
9748 27 January 2006. Summary of changes for version 20060127:
9749
9750 1) ACPI CA Core Subsystem:
9751
9752 Implemented support in the Resource Manager to allow unresolved 
9753 namestring 
9754 references within resource package objects for the _PRT method. This 
9755 support 
9756 is in addition to the previously implemented unresolved reference support 
9757 within the AML parser. If the interpreter slack mode is enabled, these 
9758 unresolved references will be passed through to the caller as a NULL 
9759 package 
9760 entry.
9761
9762 Implemented and deployed new macros and functions for error and warning 
9763 messages across the subsystem. These macros are simpler and generate less 
9764 code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 
9765 ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 
9766 macros remain defined to allow ACPI drivers time to migrate to the new 
9767 macros.
9768
9769 Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 
9770 the 
9771 Acquire/Release Lock OSL interfaces.
9772
9773 Fixed a problem where Alias ASL operators are sometimes not correctly 
9774 resolved, in both the interpreter and the iASL compiler.
9775
9776 Fixed several problems with the implementation of the 
9777 ConcatenateResTemplate 
9778 ASL operator. As per the ACPI specification, zero length buffers are now 
9779 treated as a single EndTag. One-length buffers always cause a fatal 
9780 exception. Non-zero length buffers that do not end with a full 2-byte 
9781 EndTag 
9782 cause a fatal exception.
9783
9784 Fixed a possible structure overwrite in the AcpiGetObjectInfo external 
9785 interface. (With assistance from Thomas Renninger)
9786
9787 Code and Data Size: The current and previous library sizes for the core 
9788 subsystem are shown below. These are the code and data sizes for the 
9789 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
9790 These 
9791 values do not include any ACPI driver or OSPM code. The debug version of 
9792 the 
9793 code includes the debug output trace mechanism and has a much larger code 
9794 and data size. Note that these values will vary depending on the 
9795 efficiency 
9796 of the compiler and the compiler options used during generation.
9797
9798   Previous Release:
9799     Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9800     Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9801   Current Release:
9802     Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
9803     Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
9804
9805
9806 2) iASL Compiler/Disassembler:
9807
9808 Fixed an internal error that was generated for any forward references to 
9809 ASL 
9810 Alias objects.
9811
9812 ----------------------------------------
9813 13 January 2006. Summary of changes for version 20060113:
9814
9815 1) ACPI CA Core Subsystem:
9816
9817 Added 2006 copyright to all module headers and signons. This affects 
9818 virtually every file in the ACPICA core subsystem, iASL compiler, and the 
9819 utilities.
9820  
9821 Enhanced the ACPICA error reporting in order to simplify user migration 
9822 to 
9823 the non-debug version of ACPICA. Replaced all instances of the 
9824 ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 
9825 debug 
9826 levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 
9827 respectively. This preserves all error and warning messages in the non-
9828 debug 
9829 version of the ACPICA code (this has been referred to as the "debug lite" 
9830 option.) Over 200 cases were converted to create a total of over 380 
9831 error/warning messages across the ACPICA code. This increases the code 
9832 and 
9833 data size of the default non-debug version of the code somewhat (about 
9834 13K), 
9835 but all error/warning reporting may be disabled if desired (and code 
9836 eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 
9837 configuration option. The size of the debug version of ACPICA remains 
9838 about 
9839 the same.
9840
9841 Fixed a memory leak within the AML Debugger "Set" command. One object was 
9842 not properly deleted for every successful invocation of the command.
9843
9844 Code and Data Size: The current and previous library sizes for the core 
9845 subsystem are shown below. These are the code and data sizes for the 
9846 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
9847 These 
9848 values do not include any ACPI driver or OSPM code. The debug version of 
9849 the 
9850 code includes the debug output trace mechanism and has a much larger code 
9851 and data size. Note that these values will vary depending on the 
9852 efficiency 
9853 of the compiler and the compiler options used during generation.
9854
9855   Previous Release:
9856     Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
9857     Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
9858   Current Release:
9859     Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9860     Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9861
9862
9863 2) iASL Compiler/Disassembler:
9864
9865 The compiler now officially supports the ACPI 3.0a specification that was 
9866 released on December 30, 2005. (Specification is available at 
9867 www.acpi.info)
9868
9869 ----------------------------------------
9870 16 December 2005. Summary of changes for version 20051216:
9871
9872 1) ACPI CA Core Subsystem:
9873
9874 Implemented optional support to allow unresolved names within ASL Package 
9875 objects. A null object is inserted in the package when a named reference 
9876 cannot be located in the current namespace. Enabled via the interpreter 
9877 slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 
9878 machines 
9879 that contain such code.
9880
9881 Implemented an optimization to the initialization sequence that can 
9882 improve 
9883 boot time. During ACPI device initialization, the _STA method is now run 
9884 if 
9885 and only if the _INI method exists. The _STA method is used to determine 
9886 if 
9887 the device is present; An _INI can only be run if _STA returns present, 
9888 but 
9889 it is a waste of time to run the _STA method if the _INI does not exist. 
9890 (Prototype and assistance from Dong Wei)
9891
9892 Implemented use of the C99 uintptr_t for the pointer casting macros if it 
9893 is 
9894 available in the current compiler. Otherwise, the default (void *) cast 
9895 is 
9896 used as before.
9897
9898 Fixed some possible memory leaks found within the execution path of the 
9899 Break, Continue, If, and CreateField operators. (Valery Podrezov)
9900
9901 Fixed a problem introduced in the 20051202 release where an exception is 
9902 generated during method execution if a control method attempts to declare 
9903 another method.
9904
9905 Moved resource descriptor string constants that are used by both the AML 
9906 disassembler and AML debugger to the common utilities directory so that 
9907 these components are independent.
9908
9909 Implemented support in the AcpiExec utility (-e switch) to globally 
9910 ignore 
9911 exceptions during control method execution (method is not aborted.)
9912
9913 Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 
9914 generation.
9915
9916 Code and Data Size: The current and previous library sizes for the core 
9917 subsystem are shown below. These are the code and data sizes for the 
9918 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
9919 These 
9920 values do not include any ACPI driver or OSPM code. The debug version of 
9921 the 
9922 code includes the debug output trace mechanism and has a much larger code 
9923 and data size. Note that these values will vary depending on the 
9924 efficiency 
9925 of the compiler and the compiler options used during generation.
9926
9927   Previous Release:
9928     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9929     Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
9930   Current Release:
9931     Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
9932     Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
9933
9934
9935 2) iASL Compiler/Disassembler:
9936
9937 Fixed a problem where a CPU stack overflow fault could occur if a 
9938 recursive 
9939 method call was made from within a Return statement.
9940
9941 ----------------------------------------
9942 02 December 2005. Summary of changes for version 20051202:
9943
9944 1) ACPI CA Core Subsystem:
9945
9946 Modified the parsing of control methods to no longer create namespace 
9947 objects during the first pass of the parse. Objects are now created only 
9948 during the execute phase, at the moment the namespace creation operator 
9949 is 
9950 encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 
9951 This 
9952 should eliminate ALREADY_EXISTS exceptions seen on some machines where 
9953 reentrant control methods are protected by an AML mutex. The mutex will 
9954 now 
9955 correctly block multiple threads from attempting to create the same 
9956 object 
9957 more than once.
9958
9959 Increased the number of available Owner Ids for namespace object tracking 
9960 from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 
9961 on 
9962 some machines with a large number of ACPI tables (either static or 
9963 dynamic).
9964
9965 Fixed a problem with the AcpiExec utility where a fault could occur when 
9966 the 
9967 -b switch (batch mode) is used.
9968
9969 Enhanced the namespace dump routine to output the owner ID for each 
9970 namespace object.
9971
9972 Code and Data Size: The current and previous library sizes for the core 
9973 subsystem are shown below. These are the code and data sizes for the 
9974 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
9975 These 
9976 values do not include any ACPI driver or OSPM code. The debug version of 
9977 the 
9978 code includes the debug output trace mechanism and has a much larger code 
9979 and data size. Note that these values will vary depending on the 
9980 efficiency 
9981 of the compiler and the compiler options used during generation.
9982
9983   Previous Release:
9984     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9985     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9986   Current Release:
9987     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9988     Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
9989
9990
9991 2) iASL Compiler/Disassembler:
9992
9993 Fixed a parse error during compilation of certain Switch/Case constructs. 
9994 To 
9995 simplify the parse, the grammar now allows for multiple Default 
9996 statements 
9997 and this error is now detected and flagged during the analysis phase.
9998
9999 Disassembler: The disassembly now includes the contents of the original 
10000 table header within a comment at the start of the file. This includes the 
10001 name and version of the original ASL compiler.
10002
10003 ----------------------------------------
10004 17 November 2005. Summary of changes for version 20051117:
10005
10006 1) ACPI CA Core Subsystem:
10007
10008 Fixed a problem in the AML parser where the method thread count could be 
10009 decremented below zero if any errors occurred during the method parse 
10010 phase. 
10011 This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 
10012 machines. 
10013 This also fixed a related regression with the mechanism that detects and 
10014 corrects methods that cannot properly handle reentrancy (related to the 
10015 deployment of the new OwnerId mechanism.)
10016
10017 Eliminated the pre-parsing of control methods (to detect errors) during 
10018 table load. Related to the problem above, this was causing unwind issues 
10019 if 
10020 any errors occurred during the parse, and it seemed to be overkill. A 
10021 table 
10022 load should not be aborted if there are problems with any single control 
10023 method, thus rendering this feature rather pointless.
10024
10025 Fixed a problem with the new table-driven resource manager where an 
10026 internal 
10027 buffer overflow could occur for small resource templates.
10028
10029 Implemented a new external interface, AcpiGetVendorResource. This 
10030 interface 
10031 will find and return a vendor-defined resource descriptor within a _CRS 
10032 or 
10033 _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 
10034 Helgaas.
10035
10036 Removed the length limit (200) on string objects as per the upcoming ACPI 
10037 3.0A specification. This affects the following areas of the interpreter: 
10038 1) 
10039 any implicit conversion of a Buffer to a String, 2) a String object 
10040 result 
10041 of the ASL Concatentate operator, 3) the String object result of the ASL 
10042 ToString operator.
10043
10044 Fixed a problem in the Windows OS interface layer (OSL) where a 
10045 WAIT_FOREVER 
10046 on a semaphore object would incorrectly timeout. This allows the 
10047 multithreading features of the AcpiExec utility to work properly under 
10048 Windows.
10049
10050 Updated the Linux makefiles for the iASL compiler and AcpiExec to include 
10051 the recently added file named "utresrc.c".
10052
10053 Code and Data Size: The current and previous library sizes for the core 
10054 subsystem are shown below. These are the code and data sizes for the 
10055 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
10056 These 
10057 values do not include any ACPI driver or OSPM code. The debug version of 
10058 the 
10059 code includes the debug output trace mechanism and has a much larger code 
10060 and data size. Note that these values will vary depending on the 
10061 efficiency 
10062 of the compiler and the compiler options used during generation.
10063
10064   Previous Release:
10065     Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
10066     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10067   Current Release:
10068     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10069     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10070
10071
10072 2) iASL Compiler/Disassembler:
10073
10074 Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 
10075 specification. For the iASL compiler, this means that string literals 
10076 within 
10077 the source ASL can be of any length. 
10078
10079 Enhanced the listing output to dump the AML code for resource descriptors 
10080 immediately after the ASL code for each descriptor, instead of in a block 
10081 at 
10082 the end of the entire resource template.
10083
10084 Enhanced the compiler debug output to dump the entire original parse tree 
10085 constructed during the parse phase, before any transforms are applied to 
10086 the 
10087 tree. The transformed tree is dumped also.
10088
10089 ----------------------------------------
10090 02 November 2005. Summary of changes for version 20051102:
10091
10092 1) ACPI CA Core Subsystem:
10093
10094 Modified the subsystem initialization sequence to improve GPE support. 
10095 The 
10096 GPE initialization has been split into two parts in order to defer 
10097 execution 
10098 of the _PRW methods (Power Resources for Wake) until after the hardware 
10099 is 
10100 fully initialized and the SCI handler is installed. This allows the _PRW 
10101 methods to access fields protected by the Global Lock. This will fix 
10102 systems 
10103 where a NO_GLOBAL_LOCK exception has been seen during initialization.
10104
10105 Converted the ACPI internal object disassemble and display code within 
10106 the 
10107 AML debugger to fully table-driven operation, reducing code size and 
10108 increasing maintainability.
10109
10110 Fixed a regression with the ConcatenateResTemplate() ASL operator 
10111 introduced 
10112 in the 20051021 release.
10113
10114 Implemented support for "local" internal ACPI object types within the 
10115 debugger "Object" command and the AcpiWalkNamespace external interfaces. 
10116 These local types include RegionFields, BankFields, IndexFields, Alias, 
10117 and 
10118 reference objects.
10119
10120 Moved common AML resource handling code into a new file, "utresrc.c". 
10121 This 
10122 code is shared by both the Resource Manager and the AML Debugger.
10123
10124 Code and Data Size: The current and previous library sizes for the core 
10125 subsystem are shown below. These are the code and data sizes for the 
10126 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
10127 These 
10128 values do not include any ACPI driver or OSPM code. The debug version of 
10129 the 
10130 code includes the debug output trace mechanism and has a much larger code 
10131 and data size. Note that these values will vary depending on the 
10132 efficiency 
10133 of the compiler and the compiler options used during generation.
10134
10135   Previous Release:
10136     Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
10137     Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
10138   Current Release:
10139     Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
10140     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10141
10142
10143 2) iASL Compiler/Disassembler:
10144
10145 Fixed a problem with very large initializer lists (more than 4000 
10146 elements) 
10147 for both Buffer and Package objects where the parse stack could overflow.
10148
10149 Enhanced the pre-compile source code scan for non-ASCII characters to 
10150 ignore 
10151 characters within comment fields. The scan is now always performed and is 
10152 no 
10153 longer optional, detecting invalid characters within a source file 
10154 immediately rather than during the parse phase or later.
10155
10156 Enhanced the ASL grammar definition to force early reductions on all 
10157 list-
10158 style grammar elements so that the overall parse stack usage is greatly 
10159 reduced. This should improve performance and reduce the possibility of 
10160 parse 
10161 stack overflow.
10162
10163 Eliminated all reduce/reduce conflicts in the iASL parser generation. 
10164 Also, 
10165 with the addition of a %expected statement, the compiler generates from 
10166 source with no warnings.
10167
10168 Fixed a possible segment fault in the disassembler if the input filename 
10169 does not contain a "dot" extension (Thomas Renninger).
10170
10171 ----------------------------------------
10172 21 October 2005. Summary of changes for version 20051021:
10173
10174 1) ACPI CA Core Subsystem:
10175
10176 Implemented support for the EM64T and other x86-64 processors. This 
10177 essentially entails recognizing that these processors support non-aligned 
10178 memory transfers. Previously, all 64-bit processors were assumed to lack 
10179 hardware support for non-aligned transfers.
10180
10181 Completed conversion of the Resource Manager to nearly full table-driven 
10182 operation. Specifically, the resource conversion code (convert AML to 
10183 internal format and the reverse) and the debug code to dump internal 
10184 resource descriptors are fully table-driven, reducing code and data size 
10185 and 
10186 improving maintainability.
10187
10188 The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 
10189 word 
10190 on 64-bit processors instead of a fixed 32-bit word. (With assistance 
10191 from 
10192 Alexey Starikovskiy)
10193
10194 Implemented support within the resource conversion code for the Type-
10195 Specific byte within the various ACPI 3.0 *WordSpace macros.
10196
10197 Fixed some issues within the resource conversion code for the type-
10198 specific 
10199 flags for both Memory and I/O address resource descriptors. For Memory, 
10200 implemented support for the MTP and TTP flags. For I/O, split the TRS and 
10201 TTP flags into two separate fields.
10202
10203 Code and Data Size: The current and previous library sizes for the core 
10204 subsystem are shown below. These are the code and data sizes for the 
10205 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
10206 These 
10207 values do not include any ACPI driver or OSPM code. The debug version of 
10208 the 
10209 code includes the debug output trace mechanism and has a much larger code 
10210 and data size. Note that these values will vary depending on the 
10211 efficiency 
10212 of the compiler and the compiler options used during generation.
10213
10214   Previous Release:
10215     Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
10216     Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
10217   Current Release:
10218     Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
10219     Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
10220
10221
10222
10223 2) iASL Compiler/Disassembler:
10224
10225 Relaxed a compiler restriction that disallowed a ResourceIndex byte if 
10226 the 
10227 corresponding ResourceSource string was not also present in a resource 
10228 descriptor declaration. This restriction caused problems with existing 
10229 AML/ASL code that includes the Index byte without the string. When such 
10230 AML 
10231 was disassembled, it could not be compiled without modification. Further, 
10232 the modified code created a resource template with a different size than 
10233 the 
10234 original, breaking code that used fixed offsets into the resource 
10235 template 
10236 buffer.
10237
10238 Removed a recent feature of the disassembler to ignore a lone 
10239 ResourceIndex 
10240 byte. This byte is now emitted if present so that the exact AML can be 
10241 reproduced when the disassembled code is recompiled.
10242
10243 Improved comments and text alignment for the resource descriptor code 
10244 emitted by the disassembler.
10245
10246 Implemented disassembler support for the ACPI 3.0 AccessSize field within 
10247
10248 Register() resource descriptor.
10249
10250 ----------------------------------------
10251 30 September 2005. Summary of changes for version 20050930:
10252
10253 1) ACPI CA Core Subsystem:
10254
10255 Completed a major overhaul of the Resource Manager code - specifically, 
10256 optimizations in the area of the AML/internal resource conversion code. 
10257 The 
10258 code has been optimized to simplify and eliminate duplicated code, CPU 
10259 stack 
10260 use has been decreased by optimizing function parameters and local 
10261 variables, and naming conventions across the manager have been 
10262 standardized 
10263 for clarity and ease of maintenance (this includes function, parameter, 
10264 variable, and struct/typedef names.) The update may force changes in some 
10265 driver code, depending on how resources are handled by the host OS.
10266
10267 All Resource Manager dispatch and information tables have been moved to a 
10268 single location for clarity and ease of maintenance. One new file was 
10269 created, named "rsinfo.c".
10270
10271 The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 
10272 guarantee that the argument is not evaluated twice, making them less 
10273 prone 
10274 to macro side-effects. However, since there exists the possibility of 
10275 additional stack use if a particular compiler cannot optimize them (such 
10276 as 
10277 in the debug generation case), the original macros are optionally 
10278 available.  
10279 Note that some invocations of the return_VALUE macro may now cause size 
10280 mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 
10281 to 
10282 eliminate these. (From Randy Dunlap)
10283
10284 Implemented a new mechanism to enable debug tracing for individual 
10285 control 
10286 methods. A new external interface, AcpiDebugTrace, is provided to enable 
10287 this mechanism. The intent is to allow the host OS to easily enable and 
10288 disable tracing for problematic control methods. This interface can be 
10289 easily exposed to a user or debugger interface if desired. See the file 
10290 psxface.c for details.
10291
10292 AcpiUtCallocate will now return a valid pointer if a length of zero is 
10293 specified - a length of one is used and a warning is issued. This matches 
10294 the behavior of AcpiUtAllocate.
10295
10296 Code and Data Size: The current and previous library sizes for the core 
10297 subsystem are shown below. These are the code and data sizes for the 
10298 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
10299 These 
10300 values do not include any ACPI driver or OSPM code. The debug version of 
10301 the 
10302 code includes the debug output trace mechanism and has a much larger code 
10303 and data size. Note that these values will vary depending on the 
10304 efficiency 
10305 of the compiler and the compiler options used during generation.
10306
10307   Previous Release:
10308     Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
10309     Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
10310   Current Release:
10311     Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
10312     Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
10313
10314
10315 2) iASL Compiler/Disassembler:
10316
10317 A remark is issued if the effective compile-time length of a package or 
10318 buffer is zero. Previously, this was a warning.
10319
10320 ----------------------------------------
10321 16 September 2005. Summary of changes for version 20050916:
10322
10323 1) ACPI CA Core Subsystem:
10324
10325 Fixed a problem within the Resource Manager where support for the Generic 
10326 Register descriptor was not fully implemented. This descriptor is now 
10327 fully 
10328 recognized, parsed, disassembled, and displayed.
10329
10330 Completely restructured the Resource Manager code to utilize table-driven 
10331 dispatch and lookup, eliminating many of the large switch() statements. 
10332 This 
10333 reduces overall subsystem code size and code complexity. Affects the 
10334 resource parsing and construction, disassembly, and debug dump output.
10335
10336 Cleaned up and restructured the debug dump output for all resource 
10337 descriptors. Improved readability of the output and reduced code size.
10338
10339 Fixed a problem where changes to internal data structures caused the 
10340 optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
10341
10342 Code and Data Size: The current and previous library sizes for the core 
10343 subsystem are shown below. These are the code and data sizes for the 
10344 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
10345 These 
10346 values do not include any ACPI driver or OSPM code. The debug version of 
10347 the 
10348 code includes the debug output trace mechanism and has a much larger code 
10349 and data size. Note that these values will vary depending on the 
10350 efficiency 
10351 of the compiler and the compiler options used during generation.
10352
10353   Previous Release:
10354     Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
10355     Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
10356   Current Release:
10357     Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
10358     Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
10359
10360
10361 2) iASL Compiler/Disassembler:
10362
10363 Updated the disassembler to automatically insert an EndDependentFn() 
10364 macro 
10365 into the ASL stream if this macro is missing in the original AML code, 
10366 simplifying compilation of the resulting ASL module.
10367
10368 Fixed a problem in the disassembler where a disassembled ResourceSource 
10369 string (within a large resource descriptor) was not surrounded by quotes 
10370 and 
10371 not followed by a comma, causing errors when the resulting ASL module was 
10372 compiled. Also, escape sequences within a ResourceSource string are now 
10373 handled correctly (especially "\\")
10374
10375 ----------------------------------------
10376 02 September 2005. Summary of changes for version 20050902:
10377
10378 1) ACPI CA Core Subsystem:
10379
10380 Fixed a problem with the internal Owner ID allocation and deallocation 
10381 mechanisms for control method execution and recursive method invocation. 
10382 This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 
10383 messages seen on some systems. Recursive method invocation depth is 
10384 currently limited to 255. (Alexey Starikovskiy)
10385
10386 Completely eliminated all vestiges of support for the "module-level 
10387 executable code" until this support is fully implemented and debugged. 
10388 This 
10389 should eliminate the NO_RETURN_VALUE exceptions seen during table load on 
10390 some systems that invoke this support.
10391
10392 Fixed a problem within the resource manager code where the transaction 
10393 flags 
10394 for a 64-bit address descriptor were handled incorrectly in the type-
10395 specific flag byte.
10396
10397 Consolidated duplicate code within the address descriptor resource 
10398 manager 
10399 code, reducing overall subsystem code size.
10400
10401 Fixed a fault when using the AML debugger "disassemble" command to 
10402 disassemble individual control methods.
10403
10404 Removed references to the "release_current" directory within the Unix 
10405 release package.
10406
10407 Code and Data Size: The current and previous core subsystem library sizes 
10408 are shown below. These are the code and data sizes for the acpica.lib 
10409 produced by the Microsoft Visual C++ 6.0 compiler. These values do not 
10410 include any ACPI driver or OSPM code. The debug version of the code 
10411 includes 
10412 the debug output trace mechanism and has a much larger code and data 
10413 size. 
10414 Note that these values will vary depending on the efficiency of the 
10415 compiler 
10416 and the compiler options used during generation.
10417
10418   Previous Release:
10419     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10420     Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
10421   Current Release:
10422     Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
10423     Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
10424
10425
10426 2) iASL Compiler/Disassembler:
10427
10428 Implemented an error check for illegal duplicate values in the interrupt 
10429 and 
10430 dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 
10431 Interrupt().
10432
10433 Implemented error checking for the Irq() and IrqNoFlags() macros to 
10434 detect 
10435 too many values in the interrupt list (16 max) and invalid values in the 
10436 list (range 0 - 15)
10437
10438 The maximum length string literal within an ASL file is now restricted to 
10439 200 characters as per the ACPI specification.
10440
10441 Fixed a fault when using the -ln option (generate namespace listing).
10442
10443 Implemented an error check to determine if a DescriptorName within a 
10444 resource descriptor has already been used within the current scope.
10445
10446 ----------------------------------------
10447 15 August 2005.  Summary of changes for version 20050815:
10448  
10449 1) ACPI CA Core Subsystem:
10450  
10451 Implemented a full bytewise compare to determine if a table load request 
10452 is 
10453 attempting to load a duplicate table. The compare is performed if the 
10454 table 
10455 signatures and table lengths match. This will allow different tables with 
10456 the same OEM Table ID and revision to be loaded - probably against the 
10457 ACPI 
10458 specification, but discovered in the field nonetheless.
10459  
10460 Added the changes.txt logfile to each of the zipped release packages.
10461  
10462 Code and Data Size: Current and previous core subsystem library sizes are 
10463 shown below. These are the code and data sizes for the acpica.lib 
10464 produced 
10465 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10466 any ACPI driver or OSPM code. The debug version of the code includes the 
10467 debug output trace mechanism and has a much larger code and data size. 
10468 Note 
10469 that these values will vary depending on the efficiency of the compiler 
10470 and 
10471 the compiler options used during generation.
10472  
10473   Previous Release:
10474     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10475     Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
10476   Current Release:
10477     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10478     Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
10479  
10480  
10481 2) iASL Compiler/Disassembler:
10482  
10483 Fixed a problem where incorrect AML code could be generated for Package 
10484 objects if optimization is disabled (via the -oa switch).
10485  
10486 Fixed a problem with where incorrect AML code is generated for variable-
10487 length packages when the package length is not specified and the number 
10488 of 
10489 initializer values is greater than 255.
10490  
10491
10492 ----------------------------------------
10493 29 July 2005.  Summary of changes for version 20050729:
10494
10495 1) ACPI CA Core Subsystem:
10496
10497 Implemented support to ignore an attempt to install/load a particular 
10498 ACPI 
10499 table more than once. Apparently there exists BIOS code that repeatedly 
10500 attempts to load the same SSDT upon certain events. With assistance from 
10501 Venkatesh Pallipadi.
10502
10503 Restructured the main interface to the AML parser in order to correctly 
10504 handle all exceptional conditions. This will prevent leakage of the 
10505 OwnerId 
10506 resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 
10507 some 
10508 machines. With assistance from Alexey Starikovskiy.
10509
10510 Support for "module level code" has been disabled in this version due to 
10511
10512 number of issues that have appeared on various machines. The support can 
10513 be 
10514 enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 
10515 compilation. When the issues are fully resolved, the code will be enabled 
10516 by 
10517 default again.
10518
10519 Modified the internal functions for debug print support to define the 
10520 FunctionName parameter as a (const char *) for compatibility with 
10521 compiler 
10522 built-in macros such as __FUNCTION__, etc.
10523
10524 Linted the entire ACPICA source tree for both 32-bit and 64-bit.
10525
10526 Implemented support to display an object count summary for the AML 
10527 Debugger 
10528 commands Object and Methods.
10529
10530 Code and Data Size: Current and previous core subsystem library sizes are 
10531 shown below. These are the code and data sizes for the acpica.lib 
10532 produced 
10533 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10534 any ACPI driver or OSPM code. The debug version of the code includes the 
10535 debug output trace mechanism and has a much larger code and data size. 
10536 Note 
10537 that these values will vary depending on the efficiency of the compiler 
10538 and 
10539 the compiler options used during generation.
10540
10541   Previous Release:
10542     Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10543     Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10544   Current Release:
10545     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10546     Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
10547
10548
10549 2) iASL Compiler/Disassembler:
10550
10551 Fixed a regression that appeared in the 20050708 version of the compiler 
10552 where an error message was inadvertently emitted for invocations of the 
10553 _OSI 
10554 reserved control method.
10555
10556 ----------------------------------------
10557 08 July 2005.  Summary of changes for version 20050708:
10558
10559 1) ACPI CA Core Subsystem:
10560
10561 The use of the CPU stack in the debug version of the subsystem has been 
10562 considerably reduced. Previously, a debug structure was declared in every 
10563 function that used the debug macros. This structure has been removed in 
10564 favor of declaring the individual elements as parameters to the debug 
10565 functions. This reduces the cumulative stack use during nested execution 
10566 of 
10567 ACPI function calls at the cost of a small increase in the code size of 
10568 the 
10569 debug version of the subsystem. With assistance from Alexey Starikovskiy 
10570 and 
10571 Len Brown.
10572
10573 Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 
10574 headers to define a macro that will return the current function name at 
10575 runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 
10576 by 
10577 the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 
10578 compiler-dependent header, the function name is saved on the CPU stack 
10579 (one 
10580 pointer per function.) This mechanism is used because apparently there 
10581 exists no standard ANSI-C defined macro that that returns the function 
10582 name.
10583
10584 Redesigned and reimplemented the "Owner ID" mechanism used to track 
10585 namespace objects created/deleted by ACPI tables and control method 
10586 execution. A bitmap is now used to allocate and free the IDs, thus 
10587 solving 
10588 the wraparound problem present in the previous implementation. The size 
10589 of 
10590 the namespace node descriptor was reduced by 2 bytes as a result (Alexey 
10591 Starikovskiy).
10592
10593 Removed the UINT32_BIT and UINT16_BIT types that were used for the 
10594 bitfield 
10595 flag definitions within the headers for the predefined ACPI tables. These 
10596 have been replaced by UINT8_BIT in order to increase the code portability 
10597 of 
10598 the subsystem. If the use of UINT8 remains a problem, we may be forced to 
10599 eliminate bitfields entirely because of a lack of portability.
10600
10601 Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 
10602 This 
10603 is a frequently used function and this improvement increases the 
10604 performance 
10605 of the entire subsystem (Alexey Starikovskiy).
10606
10607 Fixed several possible memory leaks and the inverse - premature object 
10608 deletion (Alexey Starikovskiy).
10609
10610 Code and Data Size: Current and previous core subsystem library sizes are 
10611 shown below. These are the code and data sizes for the acpica.lib 
10612 produced 
10613 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10614 any ACPI driver or OSPM code. The debug version of the code includes the 
10615 debug output trace mechanism and has a much larger code and data size. 
10616 Note 
10617 that these values will vary depending on the efficiency of the compiler 
10618 and 
10619 the compiler options used during generation.
10620
10621   Previous Release:
10622     Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
10623     Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
10624   Current Release:
10625     Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10626     Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10627
10628 ----------------------------------------
10629 24 June 2005.  Summary of changes for version 20050624:
10630
10631 1) ACPI CA Core Subsystem:
10632
10633 Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 
10634 the host-defined cache object. This allows the OSL implementation to 
10635 define 
10636 and type this object in any manner desired, simplifying the OSL 
10637 implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 
10638 Linux, and should be defined in the OS-specific header file for other 
10639 operating systems as required.
10640
10641 Changed the interface to AcpiOsAcquireObject to directly return the 
10642 requested object as the function return (instead of ACPI_STATUS.) This 
10643 change was made for performance reasons, since this is the purpose of the 
10644 interface in the first place. AcpiOsAcquireObject is now similar to the 
10645 AcpiOsAllocate interface.
10646
10647 Implemented a new AML debugger command named Businfo. This command 
10648 displays 
10649 information about all devices that have an associate _PRT object. The 
10650 _ADR, 
10651 _HID, _UID, and _CID are displayed for these devices.
10652
10653 Modified the initialization sequence in AcpiInitializeSubsystem to call 
10654 the 
10655 OSL interface AcpiOslInitialize first, before any local initialization. 
10656 This 
10657 change was required because the global initialization now calls OSL 
10658 interfaces.
10659
10660 Enhanced the Dump command to display the entire contents of Package 
10661 objects 
10662 (including all sub-objects and their values.) 
10663
10664 Restructured the code base to split some files because of size and/or 
10665 because the code logically belonged in a separate file. New files are 
10666 listed 
10667 below. All makefiles and project files included in the ACPI CA release 
10668 have 
10669 been updated.
10670     utilities/utcache.c           /* Local cache interfaces */
10671     utilities/utmutex.c           /* Local mutex support */
10672     utilities/utstate.c           /* State object support */
10673     interpreter/parser/psloop.c   /* Main AML parse loop */
10674
10675 Code and Data Size: Current and previous core subsystem library sizes are 
10676 shown below. These are the code and data sizes for the acpica.lib 
10677 produced 
10678 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10679 any ACPI driver or OSPM code. The debug version of the code includes the 
10680 debug output trace mechanism and has a much larger code and data size. 
10681 Note 
10682 that these values will vary depending on the efficiency of the compiler 
10683 and 
10684 the compiler options used during generation.
10685
10686   Previous Release:
10687     Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
10688     Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
10689   Current Release:
10690     Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
10691     Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
10692
10693
10694 2) iASL Compiler/Disassembler:
10695
10696 Fixed a regression introduced in version 20050513 where the use of a 
10697 Package 
10698 object within a Case() statement caused a compile time exception. The 
10699 original behavior has been restored (a Match() operator is emitted.)
10700
10701 ----------------------------------------
10702 17 June 2005.  Summary of changes for version 20050617:
10703
10704 1) ACPI CA Core Subsystem:
10705
10706 Moved the object cache operations into the OS interface layer (OSL) to 
10707 allow 
10708 the host OS to handle these operations if desired (for example, the Linux 
10709 OSL will invoke the slab allocator). This support is optional; the 
10710 compile 
10711 time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 
10712 cache 
10713 code in the ACPI CA core. The new OSL interfaces are shown below. See 
10714 utalloc.c for an example implementation, and acpiosxf.h for the exact 
10715 interface definitions. With assistance from Alexey Starikovskiy.
10716     AcpiOsCreateCache
10717     AcpiOsDeleteCache
10718     AcpiOsPurgeCache
10719     AcpiOsAcquireObject
10720     AcpiOsReleaseObject
10721
10722 Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 
10723 return 
10724 and restore a flags parameter. This fits better with many OS lock models. 
10725 Note: the current execution state (interrupt handler or not) is no longer 
10726 passed to these interfaces. If necessary, the OSL must determine this 
10727 state 
10728 by itself, a simple and fast operation. With assistance from Alexey 
10729 Starikovskiy.
10730
10731 Fixed a problem in the ACPI table handling where a valid XSDT was assumed 
10732 present if the revision of the RSDP was 2 or greater. According to the 
10733 ACPI 
10734 specification, the XSDT is optional in all cases, and the table manager 
10735 therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 
10736 Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 
10737 contain 
10738 only the RSDT.
10739
10740 Fixed an interpreter problem with the Mid() operator in the case of an 
10741 input 
10742 string where the resulting output string is of zero length. It now 
10743 correctly 
10744 returns a valid, null terminated string object instead of a string object 
10745 with a null pointer.
10746
10747 Fixed a problem with the control method argument handling to allow a 
10748 store 
10749 to an Arg object that already contains an object of type Device. The 
10750 Device 
10751 object is now correctly overwritten. Previously, an error was returned.
10752
10753
10754 Enhanced the debugger Find command to emit object values in addition to 
10755 the 
10756 found object pathnames. The output format is the same as the dump 
10757 namespace 
10758 command.
10759
10760 Enhanced the debugger Set command. It now has the ability to set the 
10761 value 
10762 of any Named integer object in the namespace (Previously, only method 
10763 locals 
10764 and args could be set.)
10765
10766 Code and Data Size: Current and previous core subsystem library sizes are 
10767 shown below. These are the code and data sizes for the acpica.lib 
10768 produced 
10769 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10770 any ACPI driver or OSPM code. The debug version of the code includes the 
10771 debug output trace mechanism and has a much larger code and data size. 
10772 Note 
10773 that these values will vary depending on the efficiency of the compiler 
10774 and 
10775 the compiler options used during generation.
10776
10777   Previous Release:
10778     Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
10779     Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
10780   Current Release:
10781     Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
10782     Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
10783
10784
10785 2) iASL Compiler/Disassembler:
10786
10787 Fixed a regression in the disassembler where if/else/while constructs 
10788 were 
10789 output incorrectly. This problem was introduced in the previous release 
10790 (20050526). This problem also affected the single-step disassembly in the 
10791 debugger.
10792
10793 Fixed a problem where compiling the reserved _OSI method would randomly 
10794 (but 
10795 rarely) produce compile errors.
10796
10797 Enhanced the disassembler to emit compilable code in the face of 
10798 incorrect 
10799 AML resource descriptors. If the optional ResourceSourceIndex is present, 
10800 but the ResourceSource is not, do not emit the ResourceSourceIndex in the 
10801 disassembly. Otherwise, the resulting code cannot be compiled without 
10802 errors.
10803
10804 ----------------------------------------
10805 26 May 2005.  Summary of changes for version 20050526:
10806
10807 1) ACPI CA Core Subsystem:
10808
10809 Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 
10810 the module level (not within a control method.) These opcodes are 
10811 executed 
10812 exactly once at the time the table is loaded. This type of code was legal 
10813 up 
10814 until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 
10815 in 
10816 order to provide backwards compatibility with earlier BIOS 
10817 implementations. 
10818 This eliminates the "Encountered executable code at module level" warning 
10819 that was previously generated upon detection of such code.
10820
10821 Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 
10822 inadvertently be generated during the lookup of namespace objects in the 
10823 second pass parse of ACPI tables and control methods. It appears that 
10824 this 
10825 problem could occur during the resolution of forward references to 
10826 namespace 
10827 objects.
10828
10829 Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 
10830 corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 
10831 allows the deadlock detection debug code to be compiled out in the normal 
10832 case, improving mutex performance (and overall subsystem performance) 
10833 considerably.
10834
10835 Implemented a handful of miscellaneous fixes for possible memory leaks on 
10836 error conditions and error handling control paths. These fixes were 
10837 suggested by FreeBSD and the Coverity Prevent source code analysis tool.
10838
10839 Added a check for a null RSDT pointer in AcpiGetFirmwareTable 
10840 (tbxfroot.c) 
10841 to prevent a fault in this error case.
10842
10843 Code and Data Size: Current and previous core subsystem library sizes are 
10844 shown below. These are the code and data sizes for the acpica.lib 
10845 produced 
10846 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10847 any ACPI driver or OSPM code. The debug version of the code includes the 
10848 debug output trace mechanism and has a much larger code and data size. 
10849 Note 
10850 that these values will vary depending on the efficiency of the compiler 
10851 and 
10852 the compiler options used during generation.
10853
10854   Previous Release:
10855     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10856     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10857   Current Release:
10858     Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
10859     Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
10860
10861
10862 2) iASL Compiler/Disassembler:
10863
10864 Implemented support to allow Type 1 and Type 2 ASL operators to appear at 
10865 the module level (not within a control method.) These operators will be 
10866 executed once at the time the table is loaded. This type of code was 
10867 legal 
10868 up until the release of ACPI 2.0B (2002) and is now supported by the iASL 
10869 compiler in order to provide backwards compatibility with earlier BIOS 
10870 ASL 
10871 code.
10872
10873 The ACPI integer width (specified via the table revision ID or the -r 
10874 override, 32 or 64 bits) is now used internally during compile-time 
10875 constant 
10876 folding to ensure that constants are truncated to 32 bits if necessary. 
10877 Previously, the revision ID value was only emitted in the AML table 
10878 header.
10879
10880 An error message is now generated for the Mutex and Method operators if 
10881 the 
10882 SyncLevel parameter is outside the legal range of 0 through 15.
10883
10884 Fixed a problem with the Method operator ParameterTypes list handling 
10885 (ACPI 
10886 3.0). Previously, more than 2 types or 2 arguments generated a syntax 
10887 error.  
10888 The actual underlying implementation of method argument typechecking is 
10889 still under development, however.
10890
10891 ----------------------------------------
10892 13 May 2005.  Summary of changes for version 20050513:
10893
10894 1) ACPI CA Core Subsystem:
10895
10896 Implemented support for PCI Express root bridges -- added support for 
10897 device 
10898 PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
10899
10900 The interpreter now automatically truncates incoming 64-bit constants to 
10901 32 
10902 bits if currently executing out of a 32-bit ACPI table (Revision < 2). 
10903 This 
10904 also affects the iASL compiler constant folding. (Note: as per below, the 
10905 iASL compiler no longer allows 64-bit constants within 32-bit tables.)
10906
10907 Fixed a problem where string and buffer objects with "static" pointers 
10908 (pointers to initialization data within an ACPI table) were not handled 
10909 consistently. The internal object copy operation now always copies the 
10910 data 
10911 to a newly allocated buffer, regardless of whether the source object is 
10912 static or not.
10913
10914 Fixed a problem with the FromBCD operator where an implicit result 
10915 conversion was improperly performed while storing the result to the 
10916 target 
10917 operand. Since this is an "explicit conversion" operator, the implicit 
10918 conversion should never be performed on the output.
10919
10920 Fixed a problem with the CopyObject operator where a copy to an existing 
10921 named object did not always completely overwrite the existing object 
10922 stored 
10923 at name. Specifically, a buffer-to-buffer copy did not delete the 
10924 existing 
10925 buffer.
10926
10927 Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 
10928 and 
10929 structs for consistency.
10930
10931 Code and Data Size: Current and previous core subsystem library sizes are 
10932 shown below. These are the code and data sizes for the acpica.lib 
10933 produced 
10934 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10935 any ACPI driver or OSPM code. The debug version of the code includes the 
10936 debug output trace mechanism and has a much larger code and data size. 
10937 Note 
10938 that these values will vary depending on the efficiency of the compiler 
10939 and 
10940 the compiler options used during generation.
10941
10942   Previous Release:
10943     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10944     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10945   Current Release: (Same sizes)
10946     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10947     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10948
10949
10950 2) iASL Compiler/Disassembler:
10951
10952 The compiler now emits a warning if an attempt is made to generate a 64-
10953 bit 
10954 integer constant from within a 32-bit ACPI table (Revision < 2). The 
10955 integer 
10956 is truncated to 32 bits.
10957
10958 Fixed a problem with large package objects: if the static length of the 
10959 package is greater than 255, the "variable length package" opcode is 
10960 emitted. Previously, this caused an error. This requires an update to the 
10961 ACPI spec, since it currently (incorrectly) states that packages larger 
10962 than 
10963 255 elements are not allowed.
10964
10965 The disassembler now correctly handles variable length packages and 
10966 packages 
10967 larger than 255 elements.
10968
10969 ----------------------------------------
10970 08 April 2005.  Summary of changes for version 20050408:
10971
10972 1) ACPI CA Core Subsystem:
10973
10974 Fixed three cases in the interpreter where an "index" argument to an ASL 
10975 function was still (internally) 32 bits instead of the required 64 bits. 
10976 This was the Index argument to the Index, Mid, and Match operators.
10977
10978 The "strupr" function is now permanently local (AcpiUtStrupr), since this 
10979 is 
10980 not a POSIX-defined function and not present in most kernel-level C 
10981 libraries. All references to the C library strupr function have been 
10982 removed 
10983 from the headers.
10984
10985 Completed the deployment of static functions/prototypes. All prototypes 
10986 with 
10987 the static attribute have been moved from the headers to the owning C 
10988 file.
10989
10990 Implemented an extract option (-e) for the AcpiBin utility (AML binary 
10991 utility). This option allows the utility to extract individual ACPI 
10992 tables 
10993 from the output of AcpiDmp. It provides the same functionality of the 
10994 acpixtract.pl perl script without the worry of setting the correct perl 
10995 options. AcpiBin runs on Windows and has not yet been generated/validated 
10996 in 
10997 the Linux/Unix environment (but should be soon).
10998  
10999 Updated and fixed the table dump option for AcpiBin (-d). This option 
11000 converts a single ACPI table to a hex/ascii file, similar to the output 
11001 of 
11002 AcpiDmp.
11003
11004 Code and Data Size: Current and previous core subsystem library sizes are 
11005 shown below. These are the code and data sizes for the acpica.lib 
11006 produced 
11007 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11008 any ACPI driver or OSPM code. The debug version of the code includes the 
11009 debug output trace mechanism and has a much larger code and data size. 
11010 Note 
11011 that these values will vary depending on the efficiency of the compiler 
11012 and 
11013 the compiler options used during generation.
11014
11015   Previous Release:
11016     Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11017     Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11018   Current Release:
11019     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11020     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11021
11022
11023 2) iASL Compiler/Disassembler:
11024
11025 Disassembler fix: Added a check to ensure that the table length found in 
11026 the 
11027 ACPI table header within the input file is not longer than the actual 
11028 input 
11029 file size. This indicates some kind of file or table corruption.
11030
11031 ----------------------------------------
11032 29 March 2005.  Summary of changes for version 20050329:
11033
11034 1) ACPI CA Core Subsystem:
11035
11036 An error is now generated if an attempt is made to create a Buffer Field 
11037 of 
11038 length zero (A CreateField with a length operand of zero.)
11039
11040 The interpreter now issues a warning whenever executable code at the 
11041 module 
11042 level is detected during ACPI table load. This will give some idea of the 
11043 prevalence of this type of code.
11044
11045 Implemented support for references to named objects (other than control 
11046 methods) within package objects.
11047
11048 Enhanced package object output for the debug object. Package objects are 
11049 now 
11050 completely dumped, showing all elements.
11051
11052 Enhanced miscellaneous object output for the debug object. Any object can 
11053 now be written to the debug object (for example, a device object can be 
11054 written, and the type of the object will be displayed.)
11055
11056 The "static" qualifier has been added to all local functions across both 
11057 the 
11058 core subsystem and the iASL compiler.
11059
11060 The number of "long" lines (> 80 chars) within the source has been 
11061 significantly reduced, by about 1/3.
11062
11063 Cleaned up all header files to ensure that all CA/iASL functions are 
11064 prototyped (even static functions) and the formatting is consistent.
11065
11066 Two new header files have been added, acopcode.h and acnames.h.
11067
11068 Removed several obsolete functions that were no longer used.
11069
11070 Code and Data Size: Current and previous core subsystem library sizes are 
11071 shown below. These are the code and data sizes for the acpica.lib 
11072 produced 
11073 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11074 any ACPI driver or OSPM code. The debug version of the code includes the 
11075 debug output trace mechanism and has a much larger code and data size. 
11076 Note 
11077 that these values will vary depending on the efficiency of the compiler 
11078 and 
11079 the compiler options used during generation.
11080
11081   Previous Release:
11082     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11083     Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
11084   Current Release:
11085     Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11086     Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11087
11088
11089
11090 2) iASL Compiler/Disassembler:
11091
11092 Fixed a problem with the resource descriptor generation/support. For the 
11093 ResourceSourceIndex and the ResourceSource fields, both must be present, 
11094 or 
11095 both must be not present - can't have one without the other.
11096
11097 The compiler now returns non-zero from the main procedure if any errors 
11098 have 
11099 occurred during the compilation.
11100
11101
11102 ----------------------------------------
11103 09 March 2005.  Summary of changes for version 20050309:
11104
11105 1) ACPI CA Core Subsystem:
11106
11107 The string-to-buffer implicit conversion code has been modified again 
11108 after 
11109 a change to the ACPI specification.  In order to match the behavior of 
11110 the 
11111 other major ACPI implementation, the target buffer is no longer truncated 
11112 if 
11113 the source string is smaller than an existing target buffer. This change 
11114 requires an update to the ACPI spec, and should eliminate the recent 
11115 AE_AML_BUFFER_LIMIT issues.
11116
11117 The "implicit return" support was rewritten to a new algorithm that 
11118 solves 
11119 the general case. Rather than attempt to determine when a method is about 
11120 to 
11121 exit, the result of every ASL operator is saved momentarily until the 
11122 very 
11123 next ASL operator is executed. Therefore, no matter how the method exits, 
11124 there will always be a saved implicit return value. This feature is only 
11125 enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 
11126 eliminate 
11127 AE_AML_NO_RETURN_VALUE errors when enabled.
11128
11129 Implemented implicit conversion support for the predicate (operand) of 
11130 the 
11131 If, Else, and While operators. String and Buffer arguments are 
11132 automatically 
11133 converted to Integers.
11134
11135 Changed the string-to-integer conversion behavior to match the new ACPI 
11136 errata: "If no integer object exists, a new integer is created. The ASCII 
11137 string is interpreted as a hexadecimal constant. Each string character is 
11138 interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 
11139 with the first character as the most significant digit, and ending with 
11140 the 
11141 first non-hexadecimal character or end-of-string." This means that the 
11142 first 
11143 non-hex character terminates the conversion and this is the code that was 
11144 changed.
11145
11146 Fixed a problem where the ObjectType operator would fail (fault) when 
11147 used 
11148 on an Index of a Package which pointed to a null package element. The 
11149 operator now properly returns zero (Uninitialized) in this case.
11150
11151 Fixed a problem where the While operator used excessive memory by not 
11152 properly popping the result stack during execution. There was no memory 
11153 leak 
11154 after execution, however. (Code provided by Valery Podrezov.)
11155
11156 Fixed a problem where references to control methods within Package 
11157 objects 
11158 caused the method to be invoked, instead of producing a reference object 
11159 pointing to the method.
11160
11161 Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 
11162 to 
11163 improve performance and reduce code size. (Code provided by Alexey 
11164 Starikovskiy.)
11165
11166 Code and Data Size: Current and previous core subsystem library sizes are 
11167 shown below. These are the code and data sizes for the acpica.lib 
11168 produced 
11169 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11170 any ACPI driver or OSPM code. The debug version of the code includes the 
11171 debug output trace mechanism and has a much larger code and data size. 
11172 Note 
11173 that these values will vary depending on the efficiency of the compiler 
11174 and 
11175 the compiler options used during generation.
11176
11177   Previous Release:
11178     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11179     Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
11180   Current Release:
11181     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11182     Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
11183
11184
11185 2) iASL Compiler/Disassembler:
11186
11187 Fixed a problem with the Return operator with no arguments. Since the AML 
11188 grammar for the byte encoding requires an operand for the Return opcode, 
11189 the 
11190 compiler now emits a Return(Zero) for this case.  An ACPI specification 
11191 update has been written for this case.
11192
11193 For tables other than the DSDT, namepath optimization is automatically 
11194 disabled. This is because SSDTs can be loaded anywhere in the namespace, 
11195 the 
11196 compiler has no knowledge of where, and thus cannot optimize namepaths.
11197
11198 Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 
11199 inadvertently omitted from the ACPI specification, and will require an 
11200 update to the spec.
11201
11202 The source file scan for ASCII characters is now optional (-a). This 
11203 change 
11204 was made because some vendors place non-ascii characters within comments. 
11205 However, the scan is simply a brute-force byte compare to ensure all 
11206 characters in the file are in the range 0x00 to 0x7F.
11207
11208 Fixed a problem with the CondRefOf operator where the compiler was 
11209 inappropriately checking for the existence of the target. Since the point 
11210 of 
11211 the operator is to check for the existence of the target at run-time, the 
11212 compiler no longer checks for the target existence.
11213
11214 Fixed a problem where errors generated from the internal AML interpreter 
11215 during constant folding were not handled properly, causing a fault.
11216
11217 Fixed a problem with overly aggressive range checking for the Stall 
11218 operator. The valid range (max 255) is now only checked if the operand is 
11219 of 
11220 type Integer. All other operand types cannot be statically checked.
11221
11222 Fixed a problem where control method references within the RefOf, 
11223 DeRefOf, 
11224 and ObjectType operators were not treated properly. They are now treated 
11225 as 
11226 actual references, not method invocations.
11227
11228 Fixed and enhanced the "list namespace" option (-ln). This option was 
11229 broken 
11230 a number of releases ago.
11231
11232 Improved error handling for the Field, IndexField, and BankField 
11233 operators. 
11234 The compiler now cleanly reports and recovers from errors in the field 
11235 component (FieldUnit) list.
11236
11237 Fixed a disassembler problem where the optional ResourceDescriptor fields 
11238 TRS and TTP were not always handled correctly.
11239
11240 Disassembler - Comments in output now use "//" instead of "/*"
11241
11242 ----------------------------------------
11243 28 February 2005.  Summary of changes for version 20050228:
11244
11245 1) ACPI CA Core Subsystem:
11246
11247 Fixed a problem where the result of an Index() operator (an object 
11248 reference) must increment the reference count on the target object for 
11249 the 
11250 life of the object reference.
11251
11252 Implemented AML Interpreter and Debugger support for the new ACPI 3.0 
11253 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 
11254 WordSpace 
11255 resource descriptors.
11256
11257 Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 
11258 Space Descriptor" string, indicating interpreter support for the 
11259 descriptors 
11260 above.
11261
11262 Implemented header support for the new ACPI 3.0 FADT flag bits.
11263
11264 Implemented header support for the new ACPI 3.0 PCI Express bits for the 
11265 PM1 
11266 status/enable registers.
11267
11268 Updated header support for the MADT processor local Apic struct and MADT 
11269 platform interrupt source struct for new ACPI 3.0 fields.
11270
11271 Implemented header support for the SRAT and SLIT ACPI tables.
11272
11273 Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 
11274 flag 
11275 at runtime.
11276
11277 Code and Data Size: Current and previous core subsystem library sizes are 
11278 shown below. These are the code and data sizes for the acpica.lib 
11279 produced 
11280 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11281 any ACPI driver or OSPM code. The debug version of the code includes the 
11282 debug output trace mechanism and has a much larger code and data size. 
11283 Note 
11284 that these values will vary depending on the efficiency of the compiler 
11285 and 
11286 the compiler options used during generation.
11287
11288   Previous Release:
11289     Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
11290     Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
11291   Current Release:
11292     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11293     Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
11294
11295
11296 2) iASL Compiler/Disassembler:
11297
11298 Fixed a problem with the internal 64-bit String-to-integer conversion 
11299 with 
11300 strings less than two characters long.
11301
11302 Fixed a problem with constant folding where the result of the Index() 
11303 operator can not be considered a constant. This means that Index() cannot 
11304 be 
11305 a type3 opcode and this will require an update to the ACPI specification.
11306
11307 Disassembler: Implemented support for the TTP, MTP, and TRS resource 
11308 descriptor fields. These fields were inadvertently ignored and not output 
11309 in 
11310 the disassembly of the resource descriptor.
11311
11312
11313  ----------------------------------------
11314 11 February 2005.  Summary of changes for version 20050211:
11315
11316 1) ACPI CA Core Subsystem:
11317
11318 Implemented ACPI 3.0 support for implicit conversion within the Match() 
11319 operator. MatchObjects can now be of type integer, buffer, or string 
11320 instead 
11321 of just type integer.  Package elements are implicitly converted to the 
11322 type 
11323 of the MatchObject. This change aligns the behavior of Match() with the 
11324 behavior of the other logical operators (LLess(), etc.) It also requires 
11325 an 
11326 errata change to the ACPI specification as this support was intended for 
11327 ACPI 3.0, but was inadvertently omitted.
11328
11329 Fixed a problem with the internal implicit "to buffer" conversion. 
11330 Strings 
11331 that are converted to buffers will cause buffer truncation if the string 
11332 is 
11333 smaller than the target buffer. Integers that are converted to buffers 
11334 will 
11335 not cause buffer truncation, only zero extension (both as per the ACPI 
11336 spec.) The problem was introduced when code was added to truncate the 
11337 buffer, but this should not be performed in all cases, only the string 
11338 case.
11339
11340 Fixed a problem with the Buffer and Package operators where the 
11341 interpreter 
11342 would get confused if two such operators were used as operands to an ASL 
11343 operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 
11344 stack was not being popped after the execution of these operators, 
11345 resulting 
11346 in an AE_NO_RETURN_VALUE exception.
11347
11348 Fixed a problem with constructs of the form Store(Index(...),...). The 
11349 reference object returned from Index was inadvertently resolved to an 
11350 actual 
11351 value. This problem was introduced in version 20050114 when the behavior 
11352 of 
11353 Store() was modified to restrict the object types that can be used as the 
11354 source operand (to match the ACPI specification.)
11355
11356 Reduced excessive stack use within the AcpiGetObjectInfo procedure.
11357
11358 Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
11359
11360 Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
11361
11362 Code and Data Size: Current and previous core subsystem library sizes are 
11363 shown below. These are the code and data sizes for the acpica.lib 
11364 produced 
11365 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11366 any ACPI driver or OSPM code. The debug version of the code includes the 
11367 debug output trace mechanism and has a much larger code and data size. 
11368 Note 
11369 that these values will vary depending on the efficiency of the compiler 
11370 and 
11371 the compiler options used during generation.
11372
11373   Previous Release:
11374     Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
11375     Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
11376   Current Release:
11377     Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
11378     Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
11379
11380
11381 2) iASL Compiler/Disassembler:
11382
11383 Fixed a code generation problem in the constant folding optimization code 
11384 where incorrect code was generated if a constant was reduced to a buffer 
11385 object (i.e., a reduced type 5 opcode.)
11386
11387 Fixed a typechecking problem for the ToBuffer operator. Caused by an 
11388 incorrect return type in the internal opcode information table.
11389
11390 ----------------------------------------
11391 25 January 2005.  Summary of changes for version 20050125:
11392
11393 1) ACPI CA Core Subsystem:
11394
11395 Fixed a recently introduced problem with the Global Lock where the 
11396 underlying semaphore was not created.  This problem was introduced in 
11397 version 20050114, and caused an AE_AML_NO_OPERAND exception during an 
11398 Acquire() operation on _GL.
11399
11400 The local object cache is now optional, and is disabled by default. Both 
11401 AcpiExec and the iASL compiler enable the cache because they run in user 
11402 mode and this enhances their performance. #define 
11403 ACPI_ENABLE_OBJECT_CACHE 
11404 to enable the local cache.
11405
11406 Fixed an issue in the internal function AcpiUtEvaluateObject concerning 
11407 the 
11408 optional "implicit return" support where an error was returned if no 
11409 return 
11410 object was expected, but one was implicitly returned. AE_OK is now 
11411 returned 
11412 in this case and the implicitly returned object is deleted. 
11413 AcpiUtEvaluateObject is only occasionally used, and only to execute 
11414 reserved 
11415 methods such as _STA and _INI where the return type is known up front.
11416
11417 Fixed a few issues with the internal convert-to-integer code. It now 
11418 returns 
11419 an error if an attempt is made to convert a null string, a string of only 
11420 blanks/tabs, or a zero-length buffer. This affects both implicit 
11421 conversion 
11422 and explicit conversion via the ToInteger() operator.
11423
11424 The internal debug code in AcpiUtAcquireMutex has been commented out. It 
11425 is 
11426 not needed for normal operation and should increase the performance of 
11427 the 
11428 entire subsystem. The code remains in case it is needed for debug 
11429 purposes 
11430 again.
11431
11432 The AcpiExec source and makefile are included in the Unix/Linux package 
11433 for 
11434 the first time.
11435
11436 Code and Data Size: Current and previous core subsystem library sizes are 
11437 shown below. These are the code and data sizes for the acpica.lib 
11438 produced 
11439 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11440 any ACPI driver or OSPM code. The debug version of the code includes the 
11441 debug output trace mechanism and has a much larger code and data size. 
11442 Note 
11443 that these values will vary depending on the efficiency of the compiler 
11444 and 
11445 the compiler options used during generation.
11446
11447   Previous Release:
11448     Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
11449     Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
11450   Current Release:
11451     Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
11452     Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
11453
11454 2) iASL Compiler/Disassembler:
11455
11456 Switch/Case support: A warning is now issued if the type of the Switch 
11457 value 
11458 cannot be determined at compile time. For example, Switch(Arg0) will 
11459 generate the warning, and the type is assumed to be an integer. As per 
11460 the 
11461 ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 
11462 the 
11463 warning.
11464
11465 Switch/Case support: Implemented support for buffer and string objects as 
11466 the switch value.  This is an ACPI 3.0 feature, now that LEqual supports 
11467 buffers and strings.
11468
11469 Switch/Case support: The emitted code for the LEqual() comparisons now 
11470 uses 
11471 the switch value as the first operand, not the second. The case value is 
11472 now 
11473 the second operand, and this allows the case value to be implicitly 
11474 converted to the type of the switch value, not the other way around.
11475
11476 Switch/Case support: Temporary variables are now emitted immediately 
11477 within 
11478 the control method, not at the global level. This means that there are 
11479 now 
11480 36 temps available per-method, not 36 temps per-module as was the case 
11481 with 
11482 the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
11483
11484 ----------------------------------------
11485 14 January 2005.  Summary of changes for version 20050114:
11486
11487 Added 2005 copyright to all module headers.  This affects every module in 
11488 the core subsystem, iASL compiler, and the utilities.
11489
11490 1) ACPI CA Core Subsystem:
11491
11492 Fixed an issue with the String-to-Buffer conversion code where the string 
11493 null terminator was not included in the buffer after conversion, but 
11494 there 
11495 is existing ASL that assumes the string null terminator is included. This 
11496 is 
11497 the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 
11498 introduced in the previous version when the code was updated to correctly 
11499 set the converted buffer size as per the ACPI specification. The ACPI 
11500 spec 
11501 is ambiguous and will be updated to specify that the null terminator must 
11502 be 
11503 included in the converted buffer. This also affects the ToBuffer() ASL 
11504 operator.
11505
11506 Fixed a problem with the Mid() ASL/AML operator where it did not work 
11507 correctly on Buffer objects. Newly created sub-buffers were not being 
11508 marked 
11509 as initialized.
11510
11511
11512 Fixed a problem in AcpiTbFindTable where incorrect string compares were 
11513 performed on the OemId and OemTableId table header fields.  These fields 
11514 are 
11515 not null terminated, so strncmp is now used instead of strcmp.
11516
11517 Implemented a restriction on the Store() ASL/AML operator to align the 
11518 behavior with the ACPI specification.  Previously, any object could be 
11519 used 
11520 as the source operand.  Now, the only objects that may be used are 
11521 Integers, 
11522 Buffers, Strings, Packages, Object References, and DDB Handles.  If 
11523 necessary, the original behavior can be restored by enabling the 
11524 EnableInterpreterSlack flag.
11525
11526 Enhanced the optional "implicit return" support to allow an implicit 
11527 return 
11528 value from methods that are invoked externally via the AcpiEvaluateObject 
11529 interface.  This enables implicit returns from the _STA and _INI methods, 
11530 for example.
11531
11532 Changed the Revision() ASL/AML operator to return the current version of 
11533 the 
11534 AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 
11535 returned 
11536 the supported ACPI version (This is the function of the _REV method).
11537
11538 Updated the _REV predefined method to return the currently supported 
11539 version 
11540 of ACPI, now 3.
11541
11542 Implemented batch mode option for the AcpiExec utility (-b).
11543
11544 Code and Data Size: Current and previous core subsystem library sizes are 
11545 shown below. These are the code and data sizes for the acpica.lib 
11546 produced 
11547 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11548 any ACPI driver or OSPM code. The debug version of the code includes the 
11549 debug output trace mechanism and has a much larger code and data size. 
11550 Note 
11551 that these values will vary depending on the efficiency of the compiler 
11552 and 
11553 the compiler options used during generation.
11554
11555   Previous Release:
11556     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11557     Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11558   Current Release:
11559     Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
11560     Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
11561
11562 ----------------------------------------
11563 10 December 2004.  Summary of changes for version 20041210:
11564
11565 ACPI 3.0 support is nearing completion in both the iASL compiler and the 
11566 ACPI CA core subsystem.
11567
11568 1) ACPI CA Core Subsystem:
11569
11570 Fixed a problem in the ToDecimalString operator where the resulting 
11571 string 
11572 length was incorrectly calculated. The length is now calculated exactly, 
11573 eliminating incorrect AE_STRING_LIMIT exceptions.
11574
11575 Fixed a problem in the ToHexString operator to allow a maximum 200 
11576 character 
11577 string to be produced.
11578
11579 Fixed a problem in the internal string-to-buffer and buffer-to-buffer 
11580 copy 
11581 routine where the length of the resulting buffer was not truncated to the 
11582 new size (if the target buffer already existed).
11583
11584 Code and Data Size: Current and previous core subsystem library sizes are 
11585 shown below. These are the code and data sizes for the acpica.lib 
11586 produced 
11587 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11588 any ACPI driver or OSPM code. The debug version of the code includes the 
11589 debug output trace mechanism and has a much larger code and data size. 
11590 Note 
11591 that these values will vary depending on the efficiency of the compiler 
11592 and 
11593 the compiler options used during generation.
11594
11595   Previous Release:
11596     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11597     Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
11598   Current Release:
11599     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11600     Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11601
11602
11603 2) iASL Compiler/Disassembler:
11604
11605 Implemented the new ACPI 3.0 resource template macros - DWordSpace, 
11606 ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 
11607 Includes support in the disassembler.
11608
11609 Implemented support for the new (ACPI 3.0) parameter to the Register 
11610 macro, 
11611 AccessSize.
11612
11613 Fixed a problem where the _HE resource name for the Interrupt macro was 
11614 referencing bit 0 instead of bit 1.
11615
11616 Implemented check for maximum 255 interrupts in the Interrupt macro.
11617
11618 Fixed a problem with the predefined resource descriptor names where 
11619 incorrect AML code was generated if the offset within the resource buffer 
11620 was 0 or 1.  The optimizer shortened the AML code to a single byte opcode 
11621 but did not update the surrounding package lengths.
11622
11623 Changes to the Dma macro:  All channels within the channel list must be 
11624 in 
11625 the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is 
11626 optional (default is BusMaster).
11627
11628 Implemented check for maximum 7 data bytes for the VendorShort macro.
11629
11630 The ReadWrite parameter is now optional for the Memory32 and similar 
11631 macros.
11632
11633 ----------------------------------------
11634 03 December 2004.  Summary of changes for version 20041203:
11635
11636 1) ACPI CA Core Subsystem:
11637
11638 The low-level field insertion/extraction code (exfldio) has been 
11639 completely 
11640 rewritten to eliminate unnecessary complexity, bugs, and boundary 
11641 conditions.
11642
11643 Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 
11644 ToDecimalString 
11645 operators where the input operand could be inadvertently deleted if no 
11646 conversion was necessary (e.g., if the input to ToInteger was an Integer 
11647 object.)
11648
11649 Fixed a problem with the ToDecimalString and ToHexString where an 
11650 incorrect 
11651 exception code was returned if the resulting string would be > 200 chars.  
11652 AE_STRING_LIMIT is now returned.
11653
11654 Fixed a problem with the Concatenate operator where AE_OK was always 
11655 returned, even if the operation failed.
11656
11657 Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 
11658 semaphores to be allocated.
11659
11660 Code and Data Size: Current and previous core subsystem library sizes are 
11661 shown below. These are the code and data sizes for the acpica.lib 
11662 produced 
11663 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11664 any ACPI driver or OSPM code. The debug version of the code includes the 
11665 debug output trace mechanism and has a much larger code and data size. 
11666 Note 
11667 that these values will vary depending on the efficiency of the compiler 
11668 and 
11669 the compiler options used during generation.
11670
11671   Previous Release:
11672     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11673     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11674   Current Release:
11675     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11676     Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
11677
11678
11679 2) iASL Compiler/Disassembler:
11680
11681 Fixed typechecking for the ObjectType and SizeOf operators.  Problem was 
11682 recently introduced in 20041119.
11683
11684 Fixed a problem with the ToUUID macro where the upper nybble of each 
11685 buffer 
11686 byte was inadvertently set to zero.
11687
11688 ----------------------------------------
11689 19 November 2004.  Summary of changes for version 20041119:
11690
11691 1) ACPI CA Core Subsystem:
11692
11693 Fixed a problem in the internal ConvertToInteger routine where new 
11694 integers 
11695 were not truncated to 32 bits for 32-bit ACPI tables. This routine 
11696 converts 
11697 buffers and strings to integers.
11698
11699 Implemented support to store a value to an Index() on a String object. 
11700 This 
11701 is an ACPI 2.0 feature that had not yet been implemented.
11702
11703 Implemented new behavior for storing objects to individual package 
11704 elements 
11705 (via the Index() operator). The previous behavior was to invoke the 
11706 implicit 
11707 conversion rules if an object was already present at the index.  The new 
11708 behavior is to simply delete any existing object and directly store the 
11709 new 
11710 object. Although the ACPI specification seems unclear on this subject, 
11711 other 
11712 ACPI implementations behave in this manner.  (This is the root of the 
11713 AE_BAD_HEX_CONSTANT issue.)
11714
11715 Modified the RSDP memory scan mechanism to support the extended checksum 
11716 for 
11717 ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 
11718 RSDP signature is found with a valid checksum.
11719
11720 Code and Data Size: Current and previous core subsystem library sizes are 
11721 shown below. These are the code and data sizes for the acpica.lib 
11722 produced 
11723 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11724 any ACPI driver or OSPM code. The debug version of the code includes the 
11725 debug output trace mechanism and has a much larger code and data size. 
11726 Note 
11727 that these values will vary depending on the efficiency of the compiler 
11728 and 
11729 the compiler options used during generation.
11730
11731   Previous Release:
11732     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11733     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11734   Current Release:
11735     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11736     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11737
11738
11739 2) iASL Compiler/Disassembler:
11740
11741 Fixed a missing semicolon in the aslcompiler.y file.
11742
11743 ----------------------------------------
11744 05 November 2004.  Summary of changes for version 20041105:
11745
11746 1) ACPI CA Core Subsystem:
11747
11748 Implemented support for FADT revision 2.  This was an interim table 
11749 (between 
11750 ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
11751
11752 Implemented optional support to allow uninitialized LocalX and ArgX 
11753 variables in a control method.  The variables are initialized to an 
11754 Integer 
11755 object with a value of zero.  This support is enabled by setting the 
11756 AcpiGbl_EnableInterpreterSlack flag to TRUE.
11757
11758 Implemented support for Integer objects for the SizeOf operator.  Either 
11759
11760 or 8 is returned, depending on the current integer size (32-bit or 64-
11761 bit, 
11762 depending on the parent table revision).
11763
11764 Fixed a problem in the implementation of the SizeOf and ObjectType 
11765 operators 
11766 where the operand was resolved to a value too early, causing incorrect 
11767 return values for some objects.
11768
11769 Fixed some possible memory leaks during exceptional conditions.
11770
11771 Code and Data Size: Current and previous core subsystem library sizes are 
11772 shown below. These are the code and data sizes for the acpica.lib 
11773 produced 
11774 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11775 any ACPI driver or OSPM code. The debug version of the code includes the 
11776 debug output trace mechanism and has a much larger code and data size. 
11777 Note 
11778 that these values will vary depending on the efficiency of the compiler 
11779 and 
11780 the compiler options used during generation.
11781
11782   Previous Release:
11783     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11784     Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
11785   Current Release:
11786     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11787     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11788
11789
11790 2) iASL Compiler/Disassembler:
11791
11792 Implemented support for all ACPI 3.0 reserved names and methods.
11793
11794 Implemented all ACPI 3.0 grammar elements in the front-end, including 
11795 support for semicolons.
11796
11797 Implemented the ACPI 3.0 Function() and ToUUID() macros
11798
11799 Fixed a problem in the disassembler where a Scope() operator would not be 
11800 emitted properly if the target of the scope was in another table.
11801
11802 ----------------------------------------
11803 15 October 2004.  Summary of changes for version 20041015:
11804
11805 Note:  ACPI CA is currently undergoing an in-depth and complete formal 
11806 evaluation to test/verify the following areas. Other suggestions are 
11807 welcome. This will result in an increase in the frequency of releases and 
11808 the number of bug fixes in the next few months.
11809   - Functional tests for all ASL/AML operators
11810   - All implicit/explicit type conversions
11811   - Bit fields and operation regions
11812   - 64-bit math support and 32-bit-only "truncated" math support
11813   - Exceptional conditions, both compiler and interpreter
11814   - Dynamic object deletion and memory leaks
11815   - ACPI 3.0 support when implemented
11816   - External interfaces to the ACPI subsystem
11817
11818
11819 1) ACPI CA Core Subsystem:
11820
11821 Fixed two alignment issues on 64-bit platforms - within debug statements 
11822 in 
11823 AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 
11824 Address 
11825 field within the non-aligned ACPI generic address structure.
11826
11827 Fixed a problem in the Increment and Decrement operators where incorrect 
11828 operand resolution could result in the inadvertent modification of the 
11829 original integer when the integer is passed into another method as an 
11830 argument and the arg is then incremented/decremented.
11831
11832 Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
11833 bit 
11834 BCD number were truncated during conversion.
11835
11836 Fixed a problem in the ToDecimal operator where the length of the 
11837 resulting 
11838 string could be set incorrectly too long if the input operand was a 
11839 Buffer 
11840 object.
11841
11842 Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 
11843 (0) 
11844 within a buffer would prematurely terminate a compare between buffer 
11845 objects.
11846
11847 Added a check for string overflow (>200 characters as per the ACPI 
11848 specification) during the Concatenate operator with two string operands.
11849
11850 Code and Data Size: Current and previous core subsystem library sizes are 
11851 shown below. These are the code and data sizes for the acpica.lib 
11852 produced 
11853 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11854 any ACPI driver or OSPM code. The debug version of the code includes the 
11855 debug output trace mechanism and has a much larger code and data size. 
11856 Note 
11857 that these values will vary depending on the efficiency of the compiler 
11858 and 
11859 the compiler options used during generation.
11860
11861   Previous Release:
11862     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11863     Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
11864   Current Release:
11865     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11866     Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
11867
11868
11869
11870 2) iASL Compiler/Disassembler:
11871
11872 Allow the use of the ObjectType operator on uninitialized Locals and Args 
11873 (returns 0 as per the ACPI specification).
11874
11875 Fixed a problem where the compiler would fault if there was a syntax 
11876 error 
11877 in the FieldName of all of the various CreateXXXField operators.
11878
11879 Disallow the use of lower case letters within the EISAID macro, as per 
11880 the 
11881 ACPI specification.  All EISAID strings must be of the form "UUUNNNN" 
11882 Where 
11883 U is an uppercase letter and N is a hex digit.
11884
11885
11886 ----------------------------------------
11887 06 October 2004.  Summary of changes for version 20041006:
11888
11889 1) ACPI CA Core Subsystem:
11890
11891 Implemented support for the ACPI 3.0 Timer operator. This ASL function 
11892 implements a 64-bit timer with 100 nanosecond granularity.
11893
11894 Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 
11895 implement the ACPI 3.0 Timer operator.  This allows the host OS to 
11896 implement 
11897 the timer with the best clock available. Also, it keeps the core 
11898 subsystem 
11899 out of the clock handling business, since the host OS (usually) performs 
11900 this function.
11901
11902 Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 
11903 functions use a 64-bit address which is part of the packed ACPI Generic 
11904 Address Structure. Since the structure is non-aligned, the alignment 
11905 macros 
11906 are now used to extract the address to a local variable before use.
11907
11908 Fixed a problem where the ToInteger operator assumed all input strings 
11909 were 
11910 hexadecimal. The operator now handles both decimal strings and hex 
11911 strings 
11912 (prefixed with "0x").
11913
11914 Fixed a problem where the string length in the string object created as a 
11915 result of the internal ConvertToString procedure could be incorrect. This 
11916 potentially affected all implicit conversions and also the 
11917 ToDecimalString 
11918 and ToHexString operators.
11919
11920 Fixed two problems in the ToString operator. If the length parameter was 
11921 zero, an incorrect string object was created and the value of the input 
11922 length parameter was inadvertently changed from zero to Ones.
11923
11924 Fixed a problem where the optional ResourceSource string in the 
11925 ExtendedIRQ 
11926 resource macro was ignored.
11927
11928 Simplified the interfaces to the internal division functions, reducing 
11929 code 
11930 size and complexity.
11931
11932 Code and Data Size: Current and previous core subsystem library sizes are 
11933 shown below. These are the code and data sizes for the acpica.lib 
11934 produced 
11935 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11936 any ACPI driver or OSPM code. The debug version of the code includes the 
11937 debug output trace mechanism and has a much larger code and data size. 
11938 Note 
11939 that these values will vary depending on the efficiency of the compiler 
11940 and 
11941 the compiler options used during generation.
11942
11943   Previous Release:
11944     Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
11945     Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
11946   Current Release:
11947     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11948     Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
11949
11950
11951 2) iASL Compiler/Disassembler:
11952
11953 Implemented support for the ACPI 3.0 Timer operator.
11954
11955 Fixed a problem where the Default() operator was inadvertently ignored in 
11956
11957 Switch/Case block.  This was a problem in the translation of the Switch 
11958 statement to If...Else pairs.
11959
11960 Added support to allow a standalone Return operator, with no parentheses 
11961 (or 
11962 operands).
11963
11964 Fixed a problem with code generation for the ElseIf operator where the 
11965 translated Else...If parse tree was improperly constructed leading to the 
11966 loss of some code.
11967
11968 ----------------------------------------
11969 22 September 2004.  Summary of changes for version 20040922:
11970
11971 1) ACPI CA Core Subsystem:
11972
11973 Fixed a problem with the implementation of the LNot() operator where 
11974 "Ones" 
11975 was not returned for the TRUE case. Changed the code to return Ones 
11976 instead 
11977 of (!Arg) which was usually 1. This change affects iASL constant folding 
11978 for 
11979 this operator also.
11980
11981 Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 
11982 not 
11983 initialized properly -- Now zero the entire buffer in this case where the 
11984 buffer already exists.
11985
11986 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 
11987 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 
11988 related code considerably. This will require changes/updates to all OS 
11989 interface layers (OSLs.)
11990
11991 Implemented a new external interface, AcpiInstallExceptionHandler, to 
11992 allow 
11993 a system exception handler to be installed. This handler is invoked upon 
11994 any 
11995 run-time exception that occurs during control method execution.
11996
11997 Added support for the DSDT in AcpiTbFindTable. This allows the 
11998 DataTableRegion() operator to access the local copy of the DSDT.
11999
12000 Code and Data Size: Current and previous core subsystem library sizes are 
12001 shown below. These are the code and data sizes for the acpica.lib 
12002 produced 
12003 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12004 any ACPI driver or OSPM code. The debug version of the code includes the 
12005 debug output trace mechanism and has a much larger code and data size. 
12006 Note 
12007 that these values will vary depending on the efficiency of the compiler 
12008 and 
12009 the compiler options used during generation.
12010
12011   Previous Release:
12012     Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
12013     Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12014   Current Release:
12015     Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
12016     Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
12017
12018
12019 2) iASL Compiler/Disassembler:
12020
12021 Fixed a problem with constant folding and the LNot operator. LNot was 
12022 returning 1 in the TRUE case, not Ones as per the ACPI specification. 
12023 This 
12024 could result in the generation of an incorrect folded/reduced constant.
12025
12026 End-Of-File is now allowed within a "//"-style comment.  A parse error no 
12027 longer occurs if such a comment is at the very end of the input ASL 
12028 source 
12029 file.
12030
12031 Implemented the "-r" option to override the Revision in the table header. 
12032 The initial use of this option will be to simplify the evaluation of the 
12033 AML 
12034 interpreter by allowing a single ASL source module to be compiled for 
12035 either 
12036 32-bit or 64-bit integers.
12037
12038
12039 ----------------------------------------
12040 27 August 2004.  Summary of changes for version 20040827:
12041
12042 1) ACPI CA Core Subsystem:
12043
12044 - Implemented support for implicit object conversion in the non-numeric 
12045 logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 
12046 and 
12047 LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used; 
12048 the second operand is implicitly converted on the fly to match the type 
12049 of 
12050 the first operand.  For example:
12051
12052     LEqual (Source1, Source2)
12053
12054 Source1 and Source2 must each evaluate to an integer, a string, or a 
12055 buffer. 
12056 The data type of Source1 dictates the required type of Source2. Source2 
12057 is 
12058 implicitly converted if necessary to match the type of Source1.
12059
12060 - Updated and corrected the behavior of the string conversion support.  
12061 The 
12062 rules concerning conversion of buffers to strings (according to the ACPI 
12063 specification) are as follows:
12064
12065 ToDecimalString - explicit byte-wise conversion of buffer to string of 
12066 decimal values (0-255) separated by commas. ToHexString - explicit byte-
12067 wise 
12068 conversion of buffer to string of hex values (0-FF) separated by commas. 
12069 ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
12070 byte 
12071 copy with no transform except NULL terminated. Any other implicit buffer-
12072 to-
12073 string conversion - byte-wise conversion of buffer to string of hex 
12074 values 
12075 (0-FF) separated by spaces.
12076
12077 - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
12078
12079 - Fixed a problem in AcpiNsGetPathnameLength where the returned length 
12080 was 
12081 one byte too short in the case of a node in the root scope.  This could 
12082 cause a fault during debug output.
12083
12084 - Code and Data Size: Current and previous core subsystem library sizes 
12085 are 
12086 shown below.  These are the code and data sizes for the acpica.lib 
12087 produced 
12088 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12089 any ACPI driver or OSPM code.  The debug version of the code includes the 
12090 debug output trace mechanism and has a much larger code and data size.  
12091 Note 
12092 that these values will vary depending on the efficiency of the compiler 
12093 and 
12094 the compiler options used during generation.
12095
12096   Previous Release:
12097     Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
12098     Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
12099   Current Release:
12100     Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
12101     Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12102
12103
12104 2) iASL Compiler/Disassembler:
12105
12106 - Fixed a Linux generation error.
12107
12108
12109 ----------------------------------------
12110 16 August 2004.  Summary of changes for version 20040816:
12111
12112 1) ACPI CA Core Subsystem:
12113
12114 Designed and implemented support within the AML interpreter for the so-
12115 called "implicit return".  This support returns the result of the last 
12116 ASL 
12117 operation within a control method, in the absence of an explicit Return() 
12118 operator.  A few machines depend on this behavior, even though it is not 
12119 explicitly supported by the ASL language.  It is optional support that 
12120 can 
12121 be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
12122
12123 Removed support for the PCI_Config address space from the internal low 
12124 level 
12125 hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This 
12126 support was not used internally, and would not work correctly anyway 
12127 because 
12128 the PCI bus number and segment number were not supported.  There are 
12129 separate interfaces for PCI configuration space access because of the 
12130 unique 
12131 interface.
12132
12133 Code and Data Size: Current and previous core subsystem library sizes are 
12134 shown below.  These are the code and data sizes for the acpica.lib 
12135 produced 
12136 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12137 any ACPI driver or OSPM code.  The debug version of the code includes the 
12138 debug output trace mechanism and has a much larger code and data size.  
12139 Note 
12140 that these values will vary depending on the efficiency of the compiler 
12141 and 
12142 the compiler options used during generation.
12143
12144   Previous Release:
12145     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12146     Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
12147   Current Release:
12148     Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
12149     Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
12150
12151
12152 2) iASL Compiler/Disassembler:
12153
12154 Fixed a problem where constants in ASL expressions at the root level (not 
12155 within a control method) could be inadvertently truncated during code 
12156 generation.  This problem was introduced in the 20040715 release.
12157
12158
12159 ----------------------------------------
12160 15 July 2004.  Summary of changes for version 20040715:
12161
12162 1) ACPI CA Core Subsystem:
12163
12164 Restructured the internal HW GPE interfaces to pass/track the current 
12165 state 
12166 of interrupts (enabled/disabled) in order to avoid possible deadlock and 
12167 increase flexibility of the interfaces.
12168
12169 Implemented a "lexicographical compare" for String and Buffer objects 
12170 within 
12171 the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
12172
12173 as per further clarification to the ACPI specification.  Behavior is 
12174 similar 
12175 to C library "strcmp".
12176
12177 Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 
12178 external function.  In the 32-bit non-debug case, the stack use has been 
12179 reduced from 168 bytes to 32 bytes.
12180
12181 Deployed a new run-time configuration flag, 
12182 AcpiGbl_EnableInterpreterSlack, 
12183 whose purpose is to allow the AML interpreter to forgive certain bad AML 
12184 constructs.  Default setting is FALSE.
12185
12186 Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 
12187 IO 
12188 support code.  If enabled, it allows field access to go beyond the end of 
12189
12190 region definition if the field is within the region length rounded up to 
12191 the 
12192 next access width boundary (a common coding error.)
12193
12194 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 
12195 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, 
12196 these 
12197 symbols are lowercased by the latest version of the AcpiSrc tool.
12198
12199 The prototypes for the PCI interfaces in acpiosxf.h have been updated to 
12200 rename "Register" to simply "Reg" to prevent certain compilers from 
12201 complaining.
12202
12203 Code and Data Size: Current and previous core subsystem library sizes are 
12204 shown below.  These are the code and data sizes for the acpica.lib 
12205 produced 
12206 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12207 any ACPI driver or OSPM code.  The debug version of the code includes the 
12208 debug output trace mechanism and has a much larger code and data size.  
12209 Note 
12210 that these values will vary depending on the efficiency of the compiler 
12211 and 
12212 the compiler options used during generation.
12213
12214   Previous Release:
12215     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12216     Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
12217   Current Release:
12218     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12219     Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
12220
12221
12222 2) iASL Compiler/Disassembler:
12223
12224 Implemented full support for Package objects within the Case() operator.  
12225 Note: The Break() operator is currently not supported within Case blocks 
12226 (TermLists) as there is some question about backward compatibility with 
12227 ACPI 
12228 1.0 interpreters.
12229
12230
12231 Fixed a problem where complex terms were not supported properly within 
12232 the 
12233 Switch() operator.
12234
12235 Eliminated extraneous warning for compiler-emitted reserved names of the 
12236 form "_T_x".  (Used in Switch/Case operators.)
12237
12238 Eliminated optimization messages for "_T_x" objects and small constants 
12239 within the DefinitionBlock operator.
12240
12241
12242 ----------------------------------------
12243 15 June 2004.  Summary of changes for version 20040615:
12244
12245 1) ACPI CA Core Subsystem:
12246
12247 Implemented support for Buffer and String objects (as per ACPI 2.0) for 
12248 the 
12249 following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
12250 LLessEqual.
12251
12252 All directory names in the entire source package are lower case, as they 
12253 were in earlier releases.
12254
12255 Implemented "Disassemble" command in the AML debugger that will 
12256 disassemble 
12257 a single control method.
12258
12259 Code and Data Size: Current and previous core subsystem library sizes are 
12260 shown below.  These are the code and data sizes for the acpica.lib 
12261 produced 
12262 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12263 any ACPI driver or OSPM code.  The debug version of the code includes the 
12264 debug output trace mechanism and has a much larger code and data size.  
12265 Note 
12266 that these values will vary depending on the efficiency of the compiler 
12267 and 
12268 the compiler options used during generation.
12269
12270   Previous Release:
12271     Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
12272     Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
12273
12274   Current Release:
12275     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12276     Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
12277
12278
12279 2) iASL Compiler/Disassembler:
12280
12281 Implemented support for Buffer and String objects (as per ACPI 2.0) for 
12282 the 
12283 following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
12284 LLessEqual.
12285
12286 All directory names in the entire source package are lower case, as they 
12287 were in earlier releases.
12288
12289 Fixed a fault when using the -g or -d<nofilename> options if the FADT was 
12290 not found.
12291
12292 Fixed an issue with the Windows version of the compiler where later 
12293 versions 
12294 of Windows place the FADT in the registry under the name "FADT" and not 
12295 "FACP" as earlier versions did.  This applies when using the -g or -
12296 d<nofilename> options.  The compiler now looks for both strings as 
12297 necessary.
12298
12299 Fixed a problem with compiler namepath optimization where a namepath 
12300 within 
12301 the Scope() operator could not be optimized if the namepath was a subpath 
12302 of 
12303 the current scope path.
12304
12305 ----------------------------------------
12306 27 May 2004.  Summary of changes for version 20040527:
12307
12308 1) ACPI CA Core Subsystem:
12309
12310 Completed a new design and implementation for EBDA (Extended BIOS Data 
12311 Area) 
12312 support in the RSDP scan code.  The original code improperly scanned for 
12313 the 
12314 EBDA by simply scanning from memory location 0 to 0x400.  The correct 
12315 method 
12316 is to first obtain the EBDA pointer from within the BIOS data area, then 
12317 scan 1K of memory starting at the EBDA pointer.  There appear to be few 
12318 if 
12319 any machines that place the RSDP in the EBDA, however.
12320
12321 Integrated a fix for a possible fault during evaluation of BufferField 
12322 arguments.  Obsolete code that was causing the problem was removed.
12323
12324 Found and fixed a problem in the Field Support Code where data could be 
12325 corrupted on a bit field read that starts on an aligned boundary but does 
12326 not end on an aligned boundary.  Merged the read/write "datum length" 
12327 calculation code into a common procedure.
12328
12329 Rolled in a couple of changes to the FreeBSD-specific header.
12330
12331
12332 Code and Data Size: Current and previous core subsystem library sizes are 
12333 shown below.  These are the code and data sizes for the acpica.lib 
12334 produced 
12335 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12336 any ACPI driver or OSPM code.  The debug version of the code includes the 
12337 debug output trace mechanism and has a much larger code and data size.  
12338 Note 
12339 that these values will vary depending on the efficiency of the compiler 
12340 and 
12341 the compiler options used during generation.
12342
12343   Previous Release:
12344     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12345     Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
12346   Current Release:
12347     Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
12348     Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
12349
12350
12351 2) iASL Compiler/Disassembler:
12352
12353 Fixed a generation warning produced by some overly-verbose compilers for 
12354
12355 64-bit constant.
12356
12357 ----------------------------------------
12358 14 May 2004.  Summary of changes for version 20040514:
12359
12360 1) ACPI CA Core Subsystem:
12361
12362 Fixed a problem where hardware GPE enable bits sometimes not set properly 
12363 during and after GPE method execution.  Result of 04/27 changes.
12364
12365 Removed extra "clear all GPEs" when sleeping/waking.
12366
12367 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 
12368 AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 
12369 to 
12370 the new AcpiEv* calls as appropriate.
12371
12372 ACPI_OS_NAME was removed from the OS-specific headers.  The default name 
12373 is 
12374 now "Microsoft Windows NT" for maximum compatibility.  However this can 
12375 be 
12376 changed by modifying the acconfig.h file.
12377
12378 Allow a single invocation of AcpiInstallNotifyHandler for a handler that 
12379 traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag. 
12380
12381 Run _INI methods on ThermalZone objects.  This is against the ACPI 
12382 specification, but there is apparently ASL code in the field that has 
12383 these 
12384 _INI methods, and apparently "other" AML interpreters execute them.
12385
12386 Performed a full 16/32/64 bit lint that resulted in some small changes.
12387
12388 Added a sleep simulation command to the AML debugger to test sleep code. 
12389
12390 Code and Data Size: Current and previous core subsystem library sizes are 
12391 shown below.  These are the code and data sizes for the acpica.lib 
12392 produced 
12393 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12394 any ACPI driver or OSPM code.  The debug version of the code includes the 
12395 debug output trace mechanism and has a much larger code and data size.  
12396 Note 
12397 that these values will vary depending on the efficiency of the compiler 
12398 and 
12399 the compiler options used during generation.
12400
12401   Previous Release:
12402     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12403     Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
12404   Current Release:
12405     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12406     Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
12407
12408 ----------------------------------------
12409 27 April 2004.  Summary of changes for version 20040427:
12410
12411 1) ACPI CA Core Subsystem:
12412
12413 Completed a major overhaul of the GPE handling within ACPI CA.  There are 
12414 now three types of GPEs:  wake-only, runtime-only, and combination 
12415 wake/run.  
12416 The only GPEs allowed to be combination wake/run are for button-style 
12417 devices such as a control-method power button, control-method sleep 
12418 button, 
12419 or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are 
12420 not 
12421 referenced by any _PRW methods are marked for "runtime" and hardware 
12422 enabled.  Any GPE that is referenced by a _PRW method is marked for 
12423 "wake" 
12424 (and disabled at runtime).  However, at sleep time, only those GPEs that 
12425 have been specifically enabled for wake via the AcpiEnableGpe interface 
12426 will 
12427 actually be hardware enabled.
12428
12429 A new external interface has been added, AcpiSetGpeType(), that is meant 
12430 to 
12431 be used by device drivers to force a GPE to a particular type.  It will 
12432 be 
12433 especially useful for the drivers for the button devices mentioned above.
12434
12435 Completed restructuring of the ACPI CA initialization sequence so that 
12436 default operation region handlers are installed before GPEs are 
12437 initialized 
12438 and the _PRW methods are executed.  This will prevent errors when the 
12439 _PRW 
12440 methods attempt to access system memory or I/O space.
12441
12442 GPE enable/disable no longer reads the GPE enable register.  We now keep 
12443 the 
12444 enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We 
12445 thus no longer depend on the hardware to maintain these bits.
12446
12447 Always clear the wake status and fixed/GPE status bits before sleep, even 
12448 for state S5.
12449
12450 Improved the AML debugger output for displaying the GPE blocks and their 
12451 current status.
12452
12453 Added new strings for the _OSI method, of the form "Windows 2001 SPx" 
12454 where 
12455 x = 0,1,2,3,4.
12456
12457 Fixed a problem where the physical address was incorrectly calculated 
12458 when 
12459 the Load() operator was used to directly load from an Operation Region 
12460 (vs. 
12461 loading from a Field object.)  Also added check for minimum table length 
12462 for 
12463 this case.
12464
12465 Fix for multiple mutex acquisition.  Restore original thread SyncLevel on 
12466 mutex release.
12467
12468 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 
12469 consistency with the other fields returned.
12470
12471 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such 
12472 structure for each GPE in the system, so the size of this structure is 
12473 important.
12474
12475 CPU stack requirement reduction:  Cleaned up the method execution and 
12476 object 
12477 evaluation paths so that now a parameter structure is passed, instead of 
12478 copying the various method parameters over and over again.
12479
12480 In evregion.c:  Correctly exit and reenter the interpreter region if and 
12481 only if dispatching an operation region request to a user-installed 
12482 handler.  
12483 Do not exit/reenter when dispatching to a default handler (e.g., default 
12484 system memory or I/O handlers)
12485
12486
12487 Notes for updating drivers for the new GPE support.  The following 
12488 changes 
12489 must be made to ACPI-related device drivers that are attached to one or 
12490 more 
12491 GPEs: (This information will be added to the ACPI CA Programmer 
12492 Reference.)
12493
12494 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you 
12495 must 
12496 explicitly call AcpiEnableGpe.
12497 2) There is a new interface called AcpiSetGpeType. This should be called 
12498 before enabling the GPE.  Also, this interface will automatically disable 
12499 the GPE if it is currently enabled.
12500 3) AcpiEnableGpe no longer supports a GPE type flag.
12501
12502 Specific drivers that must be changed:
12503 1) EC driver:
12504     AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 
12505 AeGpeHandler, NULL);
12506     AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
12507     AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
12508
12509 2) Button Drivers (Power, Lid, Sleep):
12510 Run _PRW method under parent device
12511 If _PRW exists: /* This is a control-method button */
12512     Extract GPE number and possibly GpeDevice
12513     AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
12514     AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
12515
12516 For all other devices that have _PRWs, we automatically set the GPE type 
12517 to 
12518 ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  
12519 This 
12520 must be done on a selective basis, usually requiring some kind of user 
12521 app 
12522 to allow the user to pick the wake devices.
12523
12524
12525 Code and Data Size: Current and previous core subsystem library sizes are 
12526 shown below.  These are the code and data sizes for the acpica.lib 
12527 produced 
12528 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12529 any ACPI driver or OSPM code.  The debug version of the code includes the 
12530 debug output trace mechanism and has a much larger code and data size.  
12531 Note 
12532 that these values will vary depending on the efficiency of the compiler 
12533 and 
12534 the compiler options used during generation.
12535
12536   Previous Release:
12537     Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12538     Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12539   Current Release:
12540
12541     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12542     Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
12543
12544
12545
12546 ----------------------------------------
12547 02 April 2004.  Summary of changes for version 20040402:
12548
12549 1) ACPI CA Core Subsystem:
12550
12551 Fixed an interpreter problem where an indirect store through an ArgX 
12552 parameter was incorrectly applying the "implicit conversion rules" during 
12553 the store.  From the ACPI specification: "If the target is a method local 
12554 or 
12555 argument (LocalX or ArgX), no conversion is performed and the result is 
12556 stored directly to the target".  The new behavior is to disable implicit 
12557 conversion during ALL stores to an ArgX.
12558
12559 Changed the behavior of the _PRW method scan to ignore any and all errors 
12560 returned by a given _PRW.  This prevents the scan from aborting from the 
12561 failure of any single _PRW.
12562
12563 Moved the runtime configuration parameters from the global init procedure 
12564 to 
12565 static variables in acglobal.h.  This will allow the host to override the 
12566 default values easily.
12567
12568 Code and Data Size: Current and previous core subsystem library sizes are 
12569 shown below.  These are the code and data sizes for the acpica.lib 
12570 produced 
12571 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12572 any ACPI driver or OSPM code.  The debug version of the code includes the 
12573 debug output trace mechanism and has a much larger code and data size.  
12574 Note 
12575 that these values will vary depending on the efficiency of the compiler 
12576 and 
12577 the compiler options used during generation.
12578
12579   Previous Release:
12580     Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
12581     Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
12582   Current Release:
12583     Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12584     Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12585
12586
12587 2) iASL Compiler/Disassembler:
12588
12589 iASL now fully disassembles SSDTs.  However, External() statements are 
12590 not 
12591 generated automatically for unresolved symbols at this time.  This is a 
12592 planned feature for future implementation.
12593
12594 Fixed a scoping problem in the disassembler that occurs when the type of 
12595 the 
12596 target of a Scope() operator is overridden.  This problem caused an 
12597 incorrectly nested internal namespace to be constructed.
12598
12599 Any warnings or errors that are emitted during disassembly are now 
12600 commented 
12601 out automatically so that the resulting file can be recompiled without 
12602 any 
12603 hand editing.
12604
12605 ----------------------------------------
12606 26 March 2004.  Summary of changes for version 20040326:
12607
12608 1) ACPI CA Core Subsystem:
12609
12610 Implemented support for "wake" GPEs via interaction between GPEs and the 
12611 _PRW methods.  Every GPE that is pointed to by one or more _PRWs is 
12612 identified as a WAKE GPE and by default will no longer be enabled at 
12613 runtime.  Previously, we were blindly enabling all GPEs with a 
12614 corresponding 
12615 _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  
12616 We 
12617 believe this has been the cause of thousands of "spurious" GPEs on some 
12618 systems.
12619
12620 This new GPE behavior is can be reverted to the original behavior (enable 
12621 ALL GPEs at runtime) via a runtime flag.
12622
12623 Fixed a problem where aliased control methods could not access objects 
12624 properly.  The proper scope within the namespace was not initialized 
12625 (transferred to the target of the aliased method) before executing the 
12626 target method.
12627
12628 Fixed a potential race condition on internal object deletion on the 
12629 return 
12630 object in AcpiEvaluateObject. 
12631
12632 Integrated a fix for resource descriptors where both _MEM and _MTP were 
12633 being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too 
12634 wide, 0x0F instead of 0x03.)
12635
12636 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 
12637 preventing 
12638
12639 fault in some cases.
12640
12641 Updated Notify() values for debug statements in evmisc.c
12642
12643 Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
12644
12645 Code and Data Size: Current and previous core subsystem library sizes are 
12646 shown below.  These are the code and data sizes for the acpica.lib 
12647 produced 
12648 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12649 any ACPI driver or OSPM code.  The debug version of the code includes the 
12650 debug output trace mechanism and has a much larger code and data size.  
12651 Note 
12652 that these values will vary depending on the efficiency of the compiler 
12653 and 
12654 the compiler options used during generation.
12655
12656   Previous Release:
12657
12658     Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
12659     Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
12660   Current Release:
12661     Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
12662     Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
12663
12664 ----------------------------------------
12665 11 March 2004.  Summary of changes for version 20040311:
12666
12667 1) ACPI CA Core Subsystem:
12668
12669 Fixed a problem where errors occurring during the parse phase of control 
12670 method execution did not abort cleanly.  For example, objects created and 
12671 installed in the namespace were not deleted.  This caused all subsequent 
12672 invocations of the method to return the AE_ALREADY_EXISTS exception.
12673
12674 Implemented a mechanism to force a control method to "Serialized" 
12675 execution 
12676 if the method attempts to create namespace objects. (The root of the 
12677 AE_ALREADY_EXISTS problem.)
12678
12679 Implemented support for the predefined _OSI "internal" control method.  
12680 Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 
12681 and 
12682 "Windows 2001.1", and can be easily upgraded for new strings as 
12683 necessary.  
12684 This feature will allow "other" operating systems to execute the fully 
12685 tested, "Windows" code path through the ASL code
12686
12687 Global Lock Support:  Now allows multiple acquires and releases with any 
12688 internal thread.  Removed concept of "owning thread" for this special 
12689 mutex.
12690
12691 Fixed two functions that were inappropriately declaring large objects on 
12692 the 
12693 CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage 
12694 during 
12695 method execution considerably.
12696
12697 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 
12698 S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
12699
12700 Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 
12701 defined on the machine.
12702
12703 Implemented two runtime options:  One to force all control method 
12704 execution 
12705 to "Serialized" to mimic Windows behavior, another to disable _OSI 
12706 support 
12707 if it causes problems on a given machine.
12708
12709 Code and Data Size: Current and previous core subsystem library sizes are 
12710 shown below.  These are the code and data sizes for the acpica.lib 
12711 produced 
12712 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
12713 any ACPI driver or OSPM code.  The debug version of the code includes the 
12714 debug output trace mechanism and has a much larger code and data size.  
12715 Note 
12716 that these values will vary depending on the efficiency of the compiler 
12717 and 
12718 the compiler options used during generation.
12719
12720   Previous Release:
12721     Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
12722     Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
12723   Current Release:
12724     Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
12725     Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
12726
12727 2) iASL Compiler/Disassembler:
12728
12729 Fixed an array size problem for FreeBSD that would cause the compiler to 
12730 fault.
12731
12732 ----------------------------------------
12733 20 February 2004.  Summary of changes for version 20040220:
12734
12735
12736 1) ACPI CA Core Subsystem:
12737
12738 Implemented execution of _SxD methods for Device objects in the 
12739 GetObjectInfo interface.
12740
12741 Fixed calls to _SST method to pass the correct arguments.
12742
12743 Added a call to _SST on wake to restore to "working" state.
12744
12745 Check for End-Of-Buffer failure case in the WalkResources interface.
12746
12747 Integrated fix for 64-bit alignment issue in acglobal.h by moving two 
12748 structures to the beginning of the file.
12749
12750 After wake, clear GPE status register(s) before enabling GPEs.
12751
12752 After wake, clear/enable power button.  (Perhaps we should clear/enable 
12753 all 
12754 fixed events upon wake.)
12755
12756 Fixed a couple of possible memory leaks in the Namespace manager.
12757
12758 Integrated latest acnetbsd.h file.
12759
12760 ----------------------------------------
12761 11 February 2004.  Summary of changes for version 20040211:
12762
12763
12764 1) ACPI CA Core Subsystem:
12765
12766 Completed investigation and implementation of the call-by-reference 
12767 mechanism for control method arguments.
12768
12769 Fixed a problem where a store of an object into an indexed package could 
12770 fail if the store occurs within a different method than the method that 
12771 created the package.
12772
12773 Fixed a problem where the ToDecimal operator could return incorrect 
12774 results.
12775
12776 Fixed a problem where the CopyObject operator could fail on some of the 
12777 more 
12778 obscure objects (e.g., Reference objects.)
12779
12780 Improved the output of the Debug object to display buffer, package, and 
12781 index objects.
12782
12783 Fixed a problem where constructs of the form "RefOf (ArgX)" did not 
12784 return 
12785 the expected result.
12786
12787 Added permanent ACPI_REPORT_ERROR macros for all instances of the 
12788 ACPI_AML_INTERNAL exception.
12789
12790 Integrated latest version of acfreebsd.h
12791
12792 ----------------------------------------
12793 16 January 2004.  Summary of changes for version 20040116:
12794
12795 The purpose of this release is primarily to update the copyright years in 
12796 each module, thus causing a huge number of diffs.  There are a few small 
12797 functional changes, however.
12798
12799 1) ACPI CA Core Subsystem:
12800
12801 Improved error messages when there is a problem finding one or more of 
12802 the 
12803 required base ACPI tables
12804
12805 Reintroduced the definition of APIC_HEADER in actbl.h
12806
12807 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
12808
12809 Removed extraneous reference to NewObj in dsmthdat.c
12810
12811 2) iASL compiler
12812
12813 Fixed a problem introduced in December that disabled the correct 
12814 disassembly 
12815 of Resource Templates
12816
12817
12818 ----------------------------------------
12819 03 December 2003.  Summary of changes for version 20031203:
12820
12821 1) ACPI CA Core Subsystem:
12822
12823 Changed the initialization of Operation Regions during subsystem
12824 init to perform two entire walks of the ACPI namespace; The first
12825 to initialize the regions themselves, the second to execute the
12826 _REG methods.  This fixed some interdependencies across _REG
12827 methods found on some machines.
12828
12829 Fixed a problem where a Store(Local0, Local1) could simply update
12830 the object reference count, and not create a new copy of the
12831 object if the Local1 is uninitialized.
12832
12833 Implemented support for the _SST reserved method during sleep
12834 transitions.
12835
12836 Implemented support to clear the SLP_TYP and SLP_EN bits when
12837 waking up, this is apparently required by some machines.
12838
12839 When sleeping, clear the wake status only if SleepState is not S5.
12840
12841 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
12842 pointer arithmetic advanced a string pointer too far.
12843
12844 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
12845 could be returned if the requested table has not been loaded.
12846
12847 Within the support for IRQ resources, restructured the handling of
12848 the active and edge/level bits.
12849
12850 Fixed a few problems in AcpiPsxExecute() where memory could be
12851 leaked under certain error conditions.
12852
12853 Improved error messages for the cases where the ACPI mode could
12854 not be entered.
12855
12856 Code and Data Size: Current and previous core subsystem library
12857 sizes are shown below.  These are the code and data sizes for the
12858 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12859 these values do not include any ACPI driver or OSPM code.  The
12860 debug version of the code includes the debug output trace
12861 mechanism and has a much larger code and data size.  Note that
12862 these values will vary depending on the efficiency of the compiler
12863 and the compiler options used during generation.
12864
12865   Previous Release (20031029):
12866     Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
12867     Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
12868   Current Release:
12869     Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
12870     Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
12871
12872 2) iASL Compiler/Disassembler:
12873
12874 Implemented a fix for the iASL disassembler where a bad index was
12875 generated.  This was most noticeable on 64-bit platforms
12876
12877
12878 ----------------------------------------
12879 29 October 2003.  Summary of changes for version 20031029:
12880
12881 1) ACPI CA Core Subsystem:
12882
12883
12884 Fixed a problem where a level-triggered GPE with an associated
12885 _Lxx control method was incorrectly cleared twice.
12886
12887 Fixed a problem with the Field support code where an access can
12888 occur beyond the end-of-region if the field is non-aligned but
12889 extends to the very end of the parent region (resulted in an
12890 AE_AML_REGION_LIMIT exception.)
12891
12892 Fixed a problem with ACPI Fixed Events where an RT Clock handler
12893 would not get invoked on an RTC event.  The RTC event bitmasks for
12894 the PM1 registers were not being initialized properly.
12895
12896 Implemented support for executing _STA and _INI methods for
12897 Processor objects.  Although this is currently not part of the
12898 ACPI specification, there is existing ASL code that depends on the
12899 init-time execution of these methods.
12900
12901 Implemented and deployed a GetDescriptorName function to decode
12902 the various types of internal descriptors.  Guards against null
12903 descriptors during debug output also.
12904
12905 Implemented and deployed a GetNodeName function to extract the 4-
12906 character namespace node name.  This function simplifies the debug
12907 and error output, as well as guarding against null pointers during
12908 output.
12909
12910 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
12911 simplify the debug and error output of 64-bit integers.  This
12912 macro replaces the HIDWORD and LODWORD macros for dumping these
12913 integers.
12914
12915 Updated the implementation of the Stall() operator to only call
12916 AcpiOsStall(), and also return an error if the operand is larger
12917 than 255.  This preserves the required behavior of not
12918 relinquishing the processor, as would happen if AcpiOsSleep() was
12919 called for "long stalls".
12920
12921 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
12922 initialized are now treated as NOOPs.
12923
12924 Cleaned up a handful of warnings during 64-bit generation.
12925
12926 Fixed a reported error where and incorrect GPE number was passed
12927 to the GPE dispatch handler.  This value is only used for error
12928 output, however.  Used this opportunity to clean up and streamline
12929 the GPE dispatch code.
12930
12931 Code and Data Size: Current and previous core subsystem library
12932 sizes are shown below.  These are the code and data sizes for the
12933 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12934 these values do not include any ACPI driver or OSPM code.  The
12935
12936 debug version of the code includes the debug output trace
12937 mechanism and has a much larger code and data size.  Note that
12938 these values will vary depending on the efficiency of the compiler
12939 and the compiler options used during generation.
12940
12941   Previous Release (20031002):
12942     Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
12943     Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
12944   Current Release:
12945     Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
12946     Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
12947
12948
12949 2) iASL Compiler/Disassembler:
12950
12951 Updated the iASL compiler to return an error if the operand to the
12952 Stall() operator is larger than 255.
12953
12954
12955 ----------------------------------------
12956 02 October 2003.  Summary of changes for version 20031002:
12957
12958
12959 1) ACPI CA Core Subsystem:
12960
12961 Fixed a problem with Index Fields where the index was not
12962 incremented for fields that require multiple writes to the
12963 index/data registers (Fields that are wider than the data
12964 register.)
12965
12966 Fixed a problem with all Field objects where a write could go
12967 beyond the end-of-field if the field was larger than the access
12968 granularity and therefore required multiple writes to complete the
12969 request.  An extra write beyond the end of the field could happen
12970 inadvertently.
12971
12972 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
12973 would incorrectly be returned if the width of the Data Register
12974 was larger than the specified field access width.
12975
12976 Completed fixes for LoadTable() and Unload() and verified their
12977 operation.  Implemented full support for the "DdbHandle" object
12978 throughout the ACPI CA subsystem.
12979
12980 Implemented full support for the MADT and ECDT tables in the ACPI
12981 CA header files.  Even though these tables are not directly
12982 consumed by ACPI CA, the header definitions are useful for ACPI
12983 device drivers.
12984
12985 Integrated resource descriptor fixes posted to the Linux ACPI
12986 list.  This included checks for minimum descriptor length, and
12987 support for trailing NULL strings within descriptors that have
12988 optional string elements.
12989
12990 Code and Data Size: Current and previous core subsystem library
12991 sizes are shown below.  These are the code and data sizes for the
12992 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12993 these values do not include any ACPI driver or OSPM code.  The
12994 debug version of the code includes the debug output trace
12995 mechanism and has a much larger code and data size.  Note that
12996 these values will vary depending on the efficiency of the compiler
12997 and the compiler options used during generation.
12998
12999   Previous Release (20030918):
13000     Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13001     Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13002   Current Release:
13003     Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
13004     Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
13005
13006
13007 2) iASL Compiler:
13008
13009 Implemented detection of non-ASCII characters within the input
13010 source ASL file.  This catches attempts to compile binary (AML)
13011 files early in the compile, with an informative error message.
13012
13013 Fixed a problem where the disassembler would fault if the output
13014 filename could not be generated or if the output file could not be
13015 opened.
13016
13017 ----------------------------------------
13018 18 September 2003.  Summary of changes for version 20030918:
13019
13020
13021 1) ACPI CA Core Subsystem:
13022
13023 Found and fixed a longstanding problem with the late execution of
13024 the various deferred AML opcodes (such as Operation Regions,
13025 Buffer Fields, Buffers, and Packages).  If the name string
13026 specified for the name of the new object placed the object in a
13027 scope other than the current scope, the initialization/execution
13028 of the opcode failed.  The solution to this problem was to
13029 implement a mechanism where the late execution of such opcodes
13030 does not attempt to lookup/create the name a second time in an
13031 incorrect scope.  This fixes the "region size computed
13032 incorrectly" problem.
13033
13034 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
13035 Global Lock AE_BAD_PARAMETER error.
13036
13037 Fixed several 64-bit issues with prototypes, casting and data
13038 types.
13039
13040 Removed duplicate prototype from acdisasm.h
13041
13042 Fixed an issue involving EC Operation Region Detach (Shaohua Li)
13043
13044 Code and Data Size: Current and previous core subsystem library
13045 sizes are shown below.  These are the code and data sizes for the
13046 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13047 these values do not include any ACPI driver or OSPM code.  The
13048 debug version of the code includes the debug output trace
13049 mechanism and has a much larger code and data size.  Note that
13050 these values will vary depending on the efficiency of the compiler
13051 and the compiler options used during generation.
13052
13053   Previous Release:
13054
13055     Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
13056     Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
13057   Current Release:
13058     Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13059     Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13060
13061
13062 2) Linux:
13063
13064 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
13065 correct sleep time in seconds.
13066
13067 ----------------------------------------
13068 14 July 2003.  Summary of changes for version 20030619:
13069
13070 1) ACPI CA Core Subsystem:
13071
13072 Parse SSDTs in order discovered, as opposed to reverse order
13073 (Hrvoje Habjanic)
13074
13075 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
13076 Klausner,
13077    Nate Lawson)
13078
13079
13080 2) Linux:
13081
13082 Dynamically allocate SDT list (suggested by Andi Kleen)
13083
13084 proc function return value cleanups (Andi Kleen)
13085
13086 Correctly handle NMI watchdog during long stalls (Andrew Morton)
13087
13088 Make it so acpismp=force works (reported by Andrew Morton)
13089
13090
13091 ----------------------------------------
13092 19 June 2003.  Summary of changes for version 20030619:
13093
13094 1) ACPI CA Core Subsystem:
13095
13096 Fix To/FromBCD, eliminating the need for an arch-specific #define.
13097
13098 Do not acquire a semaphore in the S5 shutdown path.
13099
13100 Fix ex_digits_needed for 0. (Takayoshi Kochi)
13101
13102 Fix sleep/stall code reversal. (Andi Kleen)
13103
13104 Revert a change having to do with control method calling
13105 semantics.
13106
13107 2) Linux:
13108
13109 acpiphp update (Takayoshi Kochi)
13110
13111 Export acpi_disabled for sonypi (Stelian Pop)
13112
13113 Mention acpismp=force in config help
13114
13115 Re-add acpitable.c and acpismp=force. This improves backwards
13116
13117 compatibility and also cleans up the code to a significant degree.
13118
13119 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
13120
13121 ----------------------------------------
13122 22 May 2003.  Summary of changes for version 20030522:
13123
13124 1) ACPI CA Core Subsystem:
13125
13126 Found and fixed a reported problem where an AE_NOT_FOUND error
13127 occurred occasionally during _BST evaluation.  This turned out to
13128 be an Owner ID allocation issue where a called method did not get
13129 a new ID assigned to it.  Eventually, (after 64k calls), the Owner
13130 ID UINT16 would wraparound so that the ID would be the same as the
13131 caller's and the called method would delete the caller's
13132 namespace.
13133
13134 Implemented extended error reporting for control methods that are
13135 aborted due to a run-time exception.  Output includes the exact
13136 AML instruction that caused the method abort, a dump of the method
13137 locals and arguments at the time of the abort, and a trace of all
13138 nested control method calls.
13139
13140 Modified the interpreter to allow the creation of buffers of zero
13141 length from the AML code. Implemented new code to ensure that no
13142 attempt is made to actually allocate a memory buffer (of length
13143 zero) - instead, a simple buffer object with a NULL buffer pointer
13144 and length zero is created.  A warning is no longer issued when
13145 the AML attempts to create a zero-length buffer.
13146
13147 Implemented a workaround for the "leading asterisk issue" in
13148 _HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
13149 asterisk is automatically removed if present in any HID, UID, or
13150 CID strings.  The iASL compiler will still flag this asterisk as
13151 an error, however.
13152
13153 Implemented full support for _CID methods that return a package of
13154 multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
13155 now additionally returns a device _CID list if present.  This
13156 required a change to the external interface in order to pass an
13157 ACPI_BUFFER object as a parameter since the _CID list is of
13158 variable length.
13159
13160 Fixed a problem with the new AE_SAME_HANDLER exception where
13161 handler initialization code did not know about this exception.
13162
13163 Code and Data Size: Current and previous core subsystem library
13164 sizes are shown below.  These are the code and data sizes for the
13165 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13166 these values do not include any ACPI driver or OSPM code.  The
13167 debug version of the code includes the debug output trace
13168 mechanism and has a much larger code and data size.  Note that
13169 these values will vary depending on the efficiency of the compiler
13170 and the compiler options used during generation.
13171
13172   Previous Release (20030509):
13173     Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
13174     Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
13175   Current Release:
13176     Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
13177     Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
13178
13179
13180 2) Linux:
13181
13182 Fixed a bug in which we would reinitialize the ACPI interrupt
13183 after it was already working, thus disabling all ACPI and the IRQs
13184 for any other device sharing the interrupt. (Thanks to Stian
13185 Jordet)
13186
13187 Toshiba driver update (John Belmonte)
13188
13189 Return only 0 or 1 for our interrupt handler status (Andrew
13190 Morton)
13191
13192
13193 3) iASL Compiler:
13194
13195 Fixed a reported problem where multiple (nested) ElseIf()
13196 statements were not handled correctly by the compiler, resulting
13197 in incorrect warnings and incorrect AML code.  This was a problem
13198 in both the ASL parser and the code generator.
13199
13200
13201 4) Documentation:
13202
13203 Added changes to existing interfaces, new exception codes, and new
13204 text concerning reference count object management versus garbage
13205 collection.
13206
13207 ----------------------------------------
13208 09 May 2003.  Summary of changes for version 20030509.
13209
13210
13211 1) ACPI CA Core Subsystem:
13212
13213 Changed the subsystem initialization sequence to hold off
13214 installation of address space handlers until the hardware has been
13215 initialized and the system has entered ACPI mode.  This is because
13216 the installation of space handlers can cause _REG methods to be
13217 run.  Previously, the _REG methods could potentially be run before
13218 ACPI mode was enabled.
13219
13220 Fixed some memory leak issues related to address space handler and
13221 notify handler installation.  There were some problems with the
13222 reference count mechanism caused by the fact that the handler
13223 objects are shared across several namespace objects.
13224
13225 Fixed a reported problem where reference counts within the
13226 namespace were not properly updated when named objects created by
13227 method execution were deleted.
13228
13229 Fixed a reported problem where multiple SSDTs caused a deletion
13230 issue during subsystem termination.  Restructured the table data
13231 structures to simplify the linked lists and the related code.
13232
13233 Fixed a problem where the table ID associated with secondary
13234 tables (SSDTs) was not being propagated into the namespace objects
13235 created by those tables.  This would only present a problem for
13236 tables that are unloaded at run-time, however.
13237
13238 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
13239 type as the length parameter (instead of UINT32).
13240
13241 Solved a long-standing problem where an ALREADY_EXISTS error
13242 appears on various systems.  This problem could happen when there
13243 are multiple PCI_Config operation regions under a single PCI root
13244 bus.  This doesn't happen very frequently, but there are some
13245 systems that do this in the ASL.
13246
13247 Fixed a reported problem where the internal DeleteNode function
13248 was incorrectly handling the case where a namespace node was the
13249 first in the parent's child list, and had additional peers (not
13250 the only child, but first in the list of children.)
13251
13252 Code and Data Size: Current core subsystem library sizes are shown
13253 below.  These are the code and data sizes for the acpica.lib
13254 produced by the Microsoft Visual C++ 6.0 compiler, and these
13255 values do not include any ACPI driver or OSPM code.  The debug
13256 version of the code includes the debug output trace mechanism and
13257 has a much larger code and data size.  Note that these values will
13258 vary depending on the efficiency of the compiler and the compiler
13259 options used during generation.
13260
13261   Previous Release
13262     Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
13263     Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
13264   Current Release:
13265     Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
13266     Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
13267
13268
13269 2) Linux:
13270
13271 Allow ":" in OS override string (Ducrot Bruno)
13272
13273 Kobject fix (Greg KH)
13274
13275
13276 3 iASL Compiler/Disassembler:
13277
13278 Fixed a problem in the generation of the C source code files (AML
13279 is emitted in C source statements for BIOS inclusion) where the
13280 Ascii dump that appears within a C comment at the end of each line
13281 could cause a compile time error if the AML sequence happens to
13282 have an open comment or close comment sequence embedded.
13283
13284
13285 ----------------------------------------
13286 24 April 2003.  Summary of changes for version 20030424.
13287
13288
13289 1) ACPI CA Core Subsystem:
13290
13291 Support for big-endian systems has been implemented.  Most of the
13292 support has been invisibly added behind big-endian versions of the
13293 ACPI_MOVE_* macros.
13294
13295 Fixed a problem in AcpiHwDisableGpeBlock() and
13296 AcpiHwClearGpeBlock() where an incorrect offset was passed to the
13297 low level hardware write routine.  The offset parameter was
13298 actually eliminated from the low level read/write routines because
13299 they had become obsolete.
13300
13301 Fixed a problem where a handler object was deleted twice during
13302 the removal of a fixed event handler.
13303
13304
13305 2) Linux:
13306
13307 A fix for SMP systems with link devices was contributed by
13308
13309 Compaq's Dan Zink.
13310
13311 (2.5) Return whether we handled the interrupt in our IRQ handler.
13312 (Linux ISRs no longer return void, so we can propagate the handler
13313 return value from the ACPI CA core back to the OS.)
13314
13315
13316
13317 3) Documentation:
13318
13319 The ACPI CA Programmer Reference has been updated to reflect new
13320 interfaces and changes to existing interfaces.
13321
13322 ----------------------------------------
13323 28 March 2003.  Summary of changes for version 20030328.
13324
13325 1) ACPI CA Core Subsystem:
13326
13327 The GPE Block Device support has been completed.  New interfaces
13328 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
13329 interfaces (enable, disable, clear, getstatus) have been split
13330 into separate interfaces for Fixed Events and General Purpose
13331 Events (GPEs) in order to support GPE Block Devices properly.
13332
13333 Fixed a problem where the error message "Failed to acquire
13334 semaphore" would appear during operations on the embedded
13335 controller (EC).
13336
13337 Code and Data Size: Current core subsystem library sizes are shown
13338 below.  These are the code and data sizes for the acpica.lib
13339 produced by the Microsoft Visual C++ 6.0 compiler, and these
13340 values do not include any ACPI driver or OSPM code.  The debug
13341 version of the code includes the debug output trace mechanism and
13342 has a much larger code and data size.  Note that these values will
13343 vary depending on the efficiency of the compiler and the compiler
13344 options used during generation.
13345
13346   Previous Release
13347     Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
13348     Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
13349   Current Release:
13350     Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
13351     Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
13352
13353
13354 ----------------------------------------
13355 28 February 2003.  Summary of changes for version 20030228.
13356
13357
13358 1) ACPI CA Core Subsystem:
13359
13360 The GPE handling and dispatch code has been completely overhauled
13361 in preparation for support of GPE Block Devices (ID ACPI0006).
13362 This affects internal data structures and code only; there should
13363 be no differences visible externally.  One new file has been
13364 added, evgpeblk.c
13365
13366 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
13367 fields that are used to determine the GPE block lengths.  The
13368 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
13369 structures are ignored.  This is per the ACPI specification but it
13370 isn't very clear.  The full 256 Block 0/1 GPEs are now supported
13371 (the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
13372
13373 In the SCI interrupt handler, removed the read of the PM1_CONTROL
13374 register to look at the SCI_EN bit.  On some machines, this read
13375 causes an SMI event and greatly slows down SCI events.  (This may
13376 in fact be the cause of slow battery status response on some
13377 systems.)
13378
13379 Fixed a problem where a store of a NULL string to a package object
13380 could cause the premature deletion of the object.  This was seen
13381 during execution of the battery _BIF method on some systems,
13382 resulting in no battery data being returned.
13383
13384 Added AcpiWalkResources interface to simplify parsing of resource
13385 lists.
13386
13387 Code and Data Size: Current core subsystem library sizes are shown
13388 below.  These are the code and data sizes for the acpica.lib
13389 produced by the Microsoft Visual C++ 6.0 compiler, and these
13390 values do not include any ACPI driver or OSPM code.  The debug
13391 version of the code includes the debug output trace mechanism and
13392 has a much larger code and data size.  Note that these values will
13393 vary depending on the efficiency of the compiler and the compiler
13394 options used during generation.
13395
13396   Previous Release
13397     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13398     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13399   Current Release:
13400     Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
13401     Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
13402
13403
13404 2) Linux
13405
13406 S3 fixes (Ole Rohne)
13407
13408 Update ACPI PHP driver with to use new acpi_walk_resource API
13409 (Bjorn Helgaas)
13410
13411 Add S4BIOS support (Pavel Machek)
13412
13413 Map in entire table before performing checksum (John Stultz)
13414
13415 Expand the mem= cmdline to allow the specification of reserved and
13416 ACPI DATA blocks (Pavel Machek)
13417
13418 Never use ACPI on VISWS
13419
13420 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
13421
13422 Revert a change that allowed P_BLK lengths to be 4 or 5. This is
13423 causing us to think that some systems support C2 when they really
13424 don't.
13425
13426 Do not count processor objects for non-present CPUs (Thanks to
13427 Dominik Brodowski)
13428
13429
13430 3) iASL Compiler:
13431
13432 Fixed a problem where ASL include files could not be found and
13433 opened.
13434
13435 Added support for the _PDC reserved name.
13436
13437
13438 ----------------------------------------
13439 22 January 2003.  Summary of changes for version 20030122.
13440
13441
13442 1) ACPI CA Core Subsystem:
13443
13444 Added a check for constructs of the form:  Store (Local0, Local0)
13445 where Local0 is not initialized.  Apparently, some BIOS
13446 programmers believe that this is a NOOP.  Since this store doesn't
13447 do anything anyway, the new prototype behavior will ignore this
13448 error.  This is a case where we can relax the strict checking in
13449 the interpreter in the name of compatibility.
13450
13451
13452 2) Linux
13453
13454 The AcpiSrc Source Conversion Utility has been released with the
13455 Linux package for the first time.  This is the utility that is
13456 used to convert the ACPI CA base source code to the Linux version.
13457
13458 (Both) Handle P_BLK lengths shorter than 6 more gracefully
13459
13460 (Both) Move more headers to include/acpi, and delete an unused
13461 header.
13462
13463 (Both) Move drivers/acpi/include directory to include/acpi
13464
13465 (Both) Boot functions don't use cmdline, so don't pass it around
13466
13467 (Both) Remove include of unused header (Adrian Bunk)
13468
13469 (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
13470 the
13471 former now also includes the latter, acpiphp.h only needs the one,
13472 now.
13473
13474 (2.5) Make it possible to select method of bios restoring after S3
13475 resume. [=> no more ugly ifdefs] (Pavel Machek)
13476
13477 (2.5) Make proc write interfaces work (Pavel Machek)
13478
13479 (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
13480
13481 (2.5) Break out ACPI Perf code into its own module, under cpufreq
13482 (Dominik Brodowski)
13483
13484 (2.4) S4BIOS support (Ducrot Bruno)
13485
13486 (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
13487 Visinoni)
13488
13489
13490 3) iASL Compiler:
13491
13492 Added support to disassemble SSDT and PSDTs.
13493
13494 Implemented support to obtain SSDTs from the Windows registry if
13495 available.
13496
13497
13498 ----------------------------------------
13499 09 January 2003.  Summary of changes for version 20030109.
13500
13501 1) ACPI CA Core Subsystem:
13502
13503 Changed the behavior of the internal Buffer-to-String conversion
13504 function.  The current ACPI specification states that the contents
13505 of the buffer are "converted to a string of two-character
13506 hexadecimal numbers, each separated by a space".  Unfortunately,
13507 this definition is not backwards compatible with existing ACPI 1.0
13508 implementations (although the behavior was not defined in the ACPI
13509 1.0 specification).  The new behavior simply copies data from the
13510 buffer to the string until a null character is found or the end of
13511 the buffer is reached.  The new String object is always null
13512 terminated.  This problem was seen during the generation of _BIF
13513 battery data where incorrect strings were returned for battery
13514 type, etc.  This will also require an errata to the ACPI
13515 specification.
13516
13517 Renamed all instances of NATIVE_UINT and NATIVE_INT to
13518 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
13519
13520 Copyright in all module headers (both Linux and non-Linux) has be
13521 updated to 2003.
13522
13523 Code and Data Size: Current core subsystem library sizes are shown
13524 below.  These are the code and data sizes for the acpica.lib
13525 produced by the Microsoft Visual C++ 6.0 compiler, and these
13526 values do not include any ACPI driver or OSPM code.  The debug
13527 version of the code includes the debug output trace mechanism and
13528 has a much larger code and data size.  Note that these values will
13529 vary depending on the efficiency of the compiler and the compiler
13530 options used during generation.
13531
13532   Previous Release
13533     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13534     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13535   Current Release:
13536     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13537     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13538
13539
13540 2) Linux
13541
13542 Fixed an oops on module insertion/removal (Matthew Tippett)
13543
13544 (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
13545
13546 (2.5) Replace pr_debug (Randy Dunlap)
13547
13548 (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
13549
13550 (Both) Eliminate spawning of thread from timer callback, in favor
13551 of schedule_work()
13552
13553 (Both) Show Lid status in /proc (Zdenek OGAR Skalak)
13554
13555 (Both) Added define for Fixed Function HW region (Matthew Wilcox)
13556
13557 (Both) Add missing statics to button.c (Pavel Machek)
13558
13559 Several changes have been made to the source code translation
13560 utility that generates the Linux Code in order to make the code
13561 more "Linux-like":
13562
13563 All typedefs on structs and unions have been removed in keeping
13564 with the Linux coding style.
13565
13566 Removed the non-Linux SourceSafe module revision number from each
13567 module header.
13568
13569 Completed major overhaul of symbols to be lowercased for linux.
13570 Doubled the number of symbols that are lowercased.
13571
13572 Fixed a problem where identifiers within procedure headers and
13573 within quotes were not fully lower cased (they were left with a
13574 starting capital.)
13575
13576 Some C macros whose only purpose is to allow the generation of 16-
13577 bit code are now completely removed in the Linux code, increasing
13578 readability and maintainability.
13579
13580 ----------------------------------------
13581
13582 12 December 2002.  Summary of changes for version 20021212.
13583
13584
13585 1) ACPI CA Core Subsystem:
13586
13587 Fixed a problem where the creation of a zero-length AML Buffer
13588 would cause a fault.
13589
13590 Fixed a problem where a Buffer object that pointed to a static AML
13591 buffer (in an ACPI table) could inadvertently be deleted, causing
13592 memory corruption.
13593
13594 Fixed a problem where a user buffer (passed in to the external
13595 ACPI CA interfaces) could be overwritten if the buffer was too
13596 small to complete the operation, causing memory corruption.
13597
13598 Fixed a problem in the Buffer-to-String conversion code where a
13599 string of length one was always returned, regardless of the size
13600 of the input Buffer object.
13601
13602 Removed the NATIVE_CHAR data type across the entire source due to
13603 lack of need and lack of consistent use.
13604
13605 Code and Data Size: Current core subsystem library sizes are shown
13606 below.  These are the code and data sizes for the acpica.lib
13607 produced by the Microsoft Visual C++ 6.0 compiler, and these
13608 values do not include any ACPI driver or OSPM code.  The debug
13609 version of the code includes the debug output trace mechanism and
13610 has a much larger code and data size.  Note that these values will
13611 vary depending on the efficiency of the compiler and the compiler
13612 options used during generation.
13613
13614   Previous Release
13615     Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
13616     Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
13617   Current Release:
13618     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13619     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13620
13621
13622 ----------------------------------------
13623 05 December 2002.  Summary of changes for version 20021205.
13624
13625 1) ACPI CA Core Subsystem:
13626
13627 Fixed a problem where a store to a String or Buffer object could
13628 cause corruption of the DSDT if the object type being stored was
13629 the same as the target object type and the length of the object
13630 being stored was equal to or smaller than the original (existing)
13631 target object.  This was seen to cause corruption of battery _BIF
13632 buffers if the _BIF method modified the buffer on the fly.
13633
13634 Fixed a problem where an internal error was generated if a control
13635 method invocation was used in an OperationRegion, Buffer, or
13636 Package declaration.  This was caused by the deferred parsing of
13637 the control method and thus the deferred creation of the internal
13638 method object.  The solution to this problem was to create the
13639 internal method object at the moment the method is encountered in
13640 the first pass - so that subsequent references to the method will
13641 able to obtain the required parameter count and thus properly
13642 parse the method invocation.  This problem presented itself as an
13643 AE_AML_INTERNAL during the pass 1 parse phase during table load.
13644
13645 Fixed a problem where the internal String object copy routine did
13646 not always allocate sufficient memory for the target String object
13647 and caused memory corruption.  This problem was seen to cause
13648 "Allocation already present in list!" errors as memory allocation
13649 became corrupted.
13650
13651 Implemented a new function for the evaluation of namespace objects
13652 that allows the specification of the allowable return object
13653 types.  This simplifies a lot of code that checks for a return
13654 object of one or more specific objects returned from the
13655 evaluation (such as _STA, etc.)  This may become and external
13656 function if it would be useful to ACPI-related drivers.
13657
13658 Completed another round of prefixing #defines with "ACPI_" for
13659 clarity.
13660
13661 Completed additional code restructuring to allow more modular
13662 linking for iASL compiler and AcpiExec.  Several files were split
13663 creating new files.  New files:  nsparse.c dsinit.c evgpe.c
13664
13665 Implemented an abort mechanism to terminate an executing control
13666 method via the AML debugger.  This feature is useful for debugging
13667 control methods that depend (wait) for specific hardware
13668 responses.
13669
13670 Code and Data Size: Current core subsystem library sizes are shown
13671 below.  These are the code and data sizes for the acpica.lib
13672 produced by the Microsoft Visual C++ 6.0 compiler, and these
13673 values do not include any ACPI driver or OSPM code.  The debug
13674 version of the code includes the debug output trace mechanism and
13675 has a much larger code and data size.  Note that these values will
13676 vary depending on the efficiency of the compiler and the compiler
13677 options used during generation.
13678
13679   Previous Release
13680     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13681     Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
13682   Current Release:
13683     Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
13684     Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
13685
13686
13687 2) iASL Compiler/Disassembler
13688
13689 Fixed a compiler code generation problem for "Interrupt" Resource
13690 Descriptors.  If specified in the ASL, the optional "Resource
13691 Source Index" and "Resource Source" fields were not inserted into
13692 the correct location within the AML resource descriptor, creating
13693 an invalid descriptor.
13694
13695 Fixed a disassembler problem for "Interrupt" resource descriptors.
13696 The optional "Resource Source Index" and "Resource Source" fields
13697 were ignored.
13698
13699
13700 ----------------------------------------
13701 22 November 2002.  Summary of changes for version 20021122.
13702
13703
13704 1) ACPI CA Core Subsystem:
13705
13706 Fixed a reported problem where an object stored to a Method Local
13707 or Arg was not copied to a new object during the store - the
13708 object pointer was simply copied to the Local/Arg.  This caused
13709 all subsequent operations on the Local/Arg to also affect the
13710 original source of the store operation.
13711
13712 Fixed a problem where a store operation to a Method Local or Arg
13713 was not completed properly if the Local/Arg contained a reference
13714 (from RefOf) to a named field.  The general-purpose store-to-
13715 namespace-node code is now used so that this case is handled
13716 automatically.
13717
13718 Fixed a problem where the internal object copy routine would cause
13719 a protection fault if the object being copied was a Package and
13720 contained either 1) a NULL package element or 2) a nested sub-
13721 package.
13722
13723 Fixed a problem with the GPE initialization that resulted from an
13724 ambiguity in the ACPI specification.  One section of the
13725 specification states that both the address and length of the GPE
13726 block must be zero if the block is not supported.  Another section
13727 implies that only the address need be zero if the block is not
13728 supported.  The code has been changed so that both the address and
13729 the length must be non-zero to indicate a valid GPE block (i.e.,
13730 if either the address or the length is zero, the GPE block is
13731 invalid.)
13732
13733 Code and Data Size: Current core subsystem library sizes are shown
13734 below.  These are the code and data sizes for the acpica.lib
13735 produced by the Microsoft Visual C++ 6.0 compiler, and these
13736 values do not include any ACPI driver or OSPM code.  The debug
13737 version of the code includes the debug output trace mechanism and
13738 has a much larger code and data size.  Note that these values will
13739 vary depending on the efficiency of the compiler and the compiler
13740 options used during generation.
13741
13742   Previous Release
13743     Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
13744     Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
13745   Current Release:
13746     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13747     Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
13748
13749
13750 2) Linux
13751
13752 Cleaned up EC driver. Exported an external EC read/write
13753 interface. By going through this, other drivers (most notably
13754 sonypi) will be able to serialize access to the EC.
13755
13756
13757 3) iASL Compiler/Disassembler
13758
13759 Implemented support to optionally generate include files for both
13760 ASM and C (the -i switch).  This simplifies BIOS development by
13761 automatically creating include files that contain external
13762 declarations for the symbols that are created within the
13763
13764 (optionally generated) ASM and C AML source files.
13765
13766
13767 ----------------------------------------
13768 15 November 2002.  Summary of changes for version 20021115.
13769
13770 1) ACPI CA Core Subsystem:
13771
13772 Fixed a memory leak problem where an error during resolution of
13773
13774 method arguments during a method invocation from another method
13775 failed to cleanup properly by deleting all successfully resolved
13776 argument objects.
13777
13778 Fixed a problem where the target of the Index() operator was not
13779 correctly constructed if the source object was a package.  This
13780 problem has not been detected because the use of a target operand
13781 with Index() is very rare.
13782
13783 Fixed a problem with the Index() operator where an attempt was
13784 made to delete the operand objects twice.
13785
13786 Fixed a problem where an attempt was made to delete an operand
13787 twice during execution of the CondRefOf() operator if the target
13788 did not exist.
13789
13790 Implemented the first of perhaps several internal create object
13791 functions that create and initialize a specific object type.  This
13792 consolidates duplicated code wherever the object is created, thus
13793 shrinking the size of the subsystem.
13794
13795 Implemented improved debug/error messages for errors that occur
13796 during nested method invocations.  All executing method pathnames
13797 are displayed (with the error) as the call stack is unwound - thus
13798 simplifying debug.
13799
13800 Fixed a problem introduced in the 10/02 release that caused
13801 premature deletion of a buffer object if a buffer was used as an
13802 ASL operand where an integer operand is required (Thus causing an
13803 implicit object conversion from Buffer to Integer.)  The change in
13804 the 10/02 release was attempting to fix a memory leak (albeit
13805 incorrectly.)
13806
13807 Code and Data Size: Current core subsystem library sizes are shown
13808 below.  These are the code and data sizes for the acpica.lib
13809 produced by the Microsoft Visual C++ 6.0 compiler, and these
13810 values do not include any ACPI driver or OSPM code.  The debug
13811 version of the code includes the debug output trace mechanism and
13812 has a much larger code and data size.  Note that these values will
13813 vary depending on the efficiency of the compiler and the compiler
13814 options used during generation.
13815
13816   Previous Release
13817     Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
13818     Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
13819   Current Release:
13820     Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
13821     Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
13822
13823
13824 2) Linux
13825
13826 Changed the implementation of the ACPI semaphores to use down()
13827 instead of down_interruptable().  It is important that the
13828 execution of ACPI control methods not be interrupted by signals.
13829 Methods must run to completion, or the system may be left in an
13830 unknown/unstable state.
13831
13832 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
13833 (Shawn Starr)
13834
13835
13836 3) iASL Compiler/Disassembler
13837
13838
13839 Changed the default location of output files.  All output files
13840 are now placed in the current directory by default instead of in
13841 the directory of the source file.  This change may affect some
13842 existing makefiles, but it brings the behavior of the compiler in
13843 line with other similar tools.  The location of the output files
13844 can be overridden with the -p command line switch.
13845
13846
13847 ----------------------------------------
13848 11 November 2002.  Summary of changes for version 20021111.
13849
13850
13851 0) ACPI Specification 2.0B is released and is now available at:
13852 http://www.acpi.info/index.html
13853
13854
13855 1) ACPI CA Core Subsystem:
13856
13857 Implemented support for the ACPI 2.0 SMBus Operation Regions.
13858 This includes the early detection and handoff of the request to
13859 the SMBus region handler (avoiding all of the complex field
13860 support code), and support for the bidirectional return packet
13861 from an SMBus write operation.  This paves the way for the
13862 development of SMBus drivers in each host operating system.
13863
13864 Fixed a problem where the semaphore WAIT_FOREVER constant was
13865 defined as 32 bits, but must be 16 bits according to the ACPI
13866 specification.  This had the side effect of causing ASL
13867 Mutex/Event timeouts even though the ASL code requested a wait
13868 forever.  Changed all internal references to the ACPI timeout
13869 parameter to 16 bits to prevent future problems.  Changed the name
13870 of WAIT_FOREVER to ACPI_WAIT_FOREVER.
13871
13872 Code and Data Size: Current core subsystem library sizes are shown
13873 below.  These are the code and data sizes for the acpica.lib
13874 produced by the Microsoft Visual C++ 6.0 compiler, and these
13875 values do not include any ACPI driver or OSPM code.  The debug
13876 version of the code includes the debug output trace mechanism and
13877 has a much larger code and data size.  Note that these values will
13878 vary depending on the efficiency of the compiler and the compiler
13879 options used during generation.
13880
13881   Previous Release
13882     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13883     Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
13884   Current Release:
13885     Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
13886     Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
13887
13888
13889 2) Linux
13890
13891 Module loading/unloading fixes (John Cagle)
13892
13893
13894 3) iASL Compiler/Disassembler
13895
13896 Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
13897
13898 Implemented support for the disassembly of all SMBus protocol
13899 keywords (SMBQuick, SMBWord, etc.)
13900
13901 ----------------------------------------
13902 01 November 2002.  Summary of changes for version 20021101.
13903
13904
13905 1) ACPI CA Core Subsystem:
13906
13907 Fixed a problem where platforms that have a GPE1 block but no GPE0
13908 block were not handled correctly.  This resulted in a "GPE
13909 overlap" error message.  GPE0 is no longer required.
13910
13911 Removed code added in the previous release that inserted nodes
13912 into the namespace in alphabetical order.  This caused some side-
13913 effects on various machines.  The root cause of the problem is
13914 still under investigation since in theory, the internal ordering
13915 of the namespace nodes should not matter.
13916
13917
13918 Enhanced error reporting for the case where a named object is not
13919 found during control method execution.  The full ACPI namepath
13920 (name reference) of the object that was not found is displayed in
13921 this case.
13922
13923 Note: as a result of the overhaul of the namespace object types in
13924 the previous release, the namespace nodes for the predefined
13925 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
13926 instead of ACPI_TYPE_ANY.  This simplifies the namespace
13927 management code but may affect code that walks the namespace tree
13928 looking for specific object types.
13929
13930 Code and Data Size: Current core subsystem library sizes are shown
13931 below.  These are the code and data sizes for the acpica.lib
13932 produced by the Microsoft Visual C++ 6.0 compiler, and these
13933 values do not include any ACPI driver or OSPM code.  The debug
13934 version of the code includes the debug output trace mechanism and
13935 has a much larger code and data size.  Note that these values will
13936 vary depending on the efficiency of the compiler and the compiler
13937 options used during generation.
13938
13939   Previous Release
13940     Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
13941     Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
13942   Current Release:
13943     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13944     Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
13945
13946
13947 2) Linux
13948
13949 Fixed a problem introduced in the previous release where the
13950 Processor and Thermal objects were not recognized and installed in
13951 /proc.  This was related to the scope type change described above.
13952
13953
13954 3) iASL Compiler/Disassembler
13955
13956 Implemented the -g option to get all of the required ACPI tables
13957 from the registry and save them to files (Windows version of the
13958 compiler only.)  The required tables are the FADT, FACS, and DSDT.
13959
13960 Added ACPI table checksum validation during table disassembly in
13961 order to catch corrupted tables.
13962
13963
13964 ----------------------------------------
13965 22 October 2002.  Summary of changes for version 20021022.
13966
13967 1) ACPI CA Core Subsystem:
13968
13969 Implemented a restriction on the Scope operator that the target
13970 must already exist in the namespace at the time the operator is
13971 encountered (during table load or method execution).  In other
13972 words, forward references are not allowed and Scope() cannot
13973 create a new object. This changes the previous behavior where the
13974 interpreter would create the name if not found.  This new behavior
13975 correctly enables the search-to-root algorithm during namespace
13976 lookup of the target name.  Because of this upsearch, this fixes
13977 the known Compaq _SB_.OKEC problem and makes both the AML
13978 interpreter and iASL compiler compatible with other ACPI
13979 implementations.
13980
13981 Completed a major overhaul of the internal ACPI object types for
13982 the ACPI Namespace and the associated operand objects.  Many of
13983 these types had become obsolete with the introduction of the two-
13984 pass namespace load.  This cleanup simplifies the code and makes
13985 the entire namespace load mechanism much clearer and easier to
13986 understand.
13987
13988 Improved debug output for tracking scope opening/closing to help
13989 diagnose scoping issues.  The old scope name as well as the new
13990 scope name are displayed.  Also improved error messages for
13991 problems with ASL Mutex objects and error messages for GPE
13992 problems.
13993
13994 Cleaned up the namespace dump code, removed obsolete code.
13995
13996 All string output (for all namespace/object dumps) now uses the
13997 common ACPI string output procedure which handles escapes properly
13998 and does not emit non-printable characters.
13999
14000 Fixed some issues with constants in the 64-bit version of the
14001 local C library (utclib.c)
14002
14003
14004 2) Linux
14005
14006 EC Driver:  No longer attempts to acquire the Global Lock at
14007 interrupt level.
14008
14009
14010 3) iASL Compiler/Disassembler
14011
14012 Implemented ACPI 2.0B grammar change that disallows all Type 1 and
14013 2 opcodes outside of a control method.  This means that the
14014 "executable" operators (versus the "namespace" operators) cannot
14015 be used at the table level; they can only be used within a control
14016 method.
14017
14018 Implemented the restriction on the Scope() operator where the
14019 target must already exist in the namespace at the time the
14020 operator is encountered (during ASL compilation). In other words,
14021 forward references are not allowed and Scope() cannot create a new
14022 object.  This makes the iASL compiler compatible with other ACPI
14023 implementations and makes the Scope() implementation adhere to the
14024 ACPI specification.
14025
14026 Fixed a problem where namepath optimization for the Alias operator
14027 was optimizing the wrong path (of the two namepaths.)  This caused
14028 a "Missing alias link" error message.
14029
14030 Fixed a problem where an "unknown reserved name" warning could be
14031 incorrectly generated for names like "_SB" when the trailing
14032 underscore is not used in the original ASL.
14033
14034 Fixed a problem where the reserved name check did not handle
14035 NamePaths with multiple NameSegs correctly.  The first nameseg of
14036 the NamePath was examined instead of the last NameSeg.
14037
14038
14039 ----------------------------------------
14040
14041 02 October 2002.  Summary of changes for this release.
14042
14043
14044 1) ACPI CA Core Subsystem version 20021002:
14045
14046 Fixed a problem where a store/copy of a string to an existing
14047 string did not always set the string length properly in the String
14048 object.
14049
14050 Fixed a reported problem with the ToString operator where the
14051 behavior was identical to the ToHexString operator instead of just
14052 simply converting a raw buffer to a string data type.
14053
14054 Fixed a problem where CopyObject and the other "explicit"
14055 conversion operators were not updating the internal namespace node
14056 type as part of the store operation.
14057
14058 Fixed a memory leak during implicit source operand conversion
14059 where the original object was not deleted if it was converted to a
14060 new object of a different type.
14061
14062 Enhanced error messages for all problems associated with namespace
14063 lookups.  Common procedure generates and prints the lookup name as
14064 well as the formatted status.
14065
14066 Completed implementation of a new design for the Alias support
14067 within the namespace.  The existing design did not handle the case
14068 where a new object was assigned to one of the two names due to the
14069 use of an explicit conversion operator, resulting in the two names
14070 pointing to two different objects.  The new design simply points
14071 the Alias name to the original name node - not to the object.
14072 This results in a level of indirection that must be handled in the
14073 name resolution mechanism.
14074
14075 Code and Data Size: Current core subsystem library sizes are shown
14076 below.  These are the code and data sizes for the acpica.lib
14077 produced by the Microsoft Visual C++ 6.0 compiler, and these
14078 values do not include any ACPI driver or OSPM code.  The debug
14079 version of the code includes the debug output trace mechanism and
14080 has a larger code and data size.  Note that these values will vary
14081 depending on the efficiency of the compiler and the compiler
14082 options used during generation.
14083
14084   Previous Release
14085     Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
14086     Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
14087   Current Release:
14088     Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
14089     Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
14090
14091
14092 2) Linux
14093
14094 Initialize thermal driver's timer before it is used. (Knut
14095 Neumann)
14096
14097 Allow handling negative celsius values. (Kochi Takayoshi)
14098
14099 Fix thermal management and make trip points. R/W (Pavel Machek)
14100
14101 Fix /proc/acpi/sleep. (P. Christeas)
14102
14103 IA64 fixes. (David Mosberger)
14104
14105 Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
14106
14107 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
14108 Brodowski)
14109
14110
14111 3) iASL Compiler/Disassembler
14112
14113 Clarified some warning/error messages.
14114
14115
14116 ----------------------------------------
14117 18 September 2002.  Summary of changes for this release.
14118
14119
14120 1) ACPI CA Core Subsystem version 20020918:
14121
14122 Fixed a reported problem with reference chaining (via the Index()
14123 and RefOf() operators) in the ObjectType() and SizeOf() operators.
14124 The definition of these operators includes the dereferencing of
14125 all chained references to return information on the base object.
14126
14127 Fixed a problem with stores to indexed package elements - the
14128 existing code would not complete the store if an "implicit
14129 conversion" was not performed.  In other words, if the existing
14130 object (package element) was to be replaced completely, the code
14131 didn't handle this case.
14132
14133 Relaxed typechecking on the ASL "Scope" operator to allow the
14134 target name to refer to an object of type Integer, String, or
14135 Buffer, in addition to the scoping object types (Device,
14136 predefined Scopes, Processor, PowerResource, and ThermalZone.)
14137 This allows existing AML code that has workarounds for a bug in
14138 Windows to function properly.  A warning is issued, however.  This
14139 affects both the AML interpreter and the iASL compiler. Below is
14140 an example of this type of ASL code:
14141
14142       Name(DEB,0x00)
14143       Scope(DEB)
14144       {
14145
14146 Fixed some reported problems with 64-bit integer support in the
14147 local implementation of C library functions (clib.c)
14148
14149
14150 2) Linux
14151
14152 Use ACPI fix map region instead of IOAPIC region, since it is
14153 undefined in non-SMP.
14154
14155 Ensure that the SCI has the proper polarity and trigger, even on
14156 systems that do not have an interrupt override entry in the MADT.
14157
14158 2.5 big driver reorganization (Pat Mochel)
14159
14160 Use early table mapping code from acpitable.c (Andi Kleen)
14161
14162 New blacklist entries (Andi Kleen)
14163
14164 Blacklist improvements. Split blacklist code out into a separate
14165 file. Move checking the blacklist to very early. Previously, we
14166 would use ACPI tables, and then halfway through init, check the
14167 blacklist -- too late. Now, it's early enough to completely fall-
14168 back to non-ACPI.
14169
14170
14171 3) iASL Compiler/Disassembler version 20020918:
14172
14173 Fixed a problem where the typechecking code didn't know that an
14174 alias could point to a method.  In other words, aliases were not
14175 being dereferenced during typechecking.
14176
14177
14178 ----------------------------------------
14179 29 August 2002.  Summary of changes for this release.
14180
14181 1) ACPI CA Core Subsystem Version 20020829:
14182
14183 If the target of a Scope() operator already exists, it must be an
14184 object type that actually opens a scope -- such as a Device,
14185 Method, Scope, etc.  This is a fatal runtime error.  Similar error
14186 check has been added to the iASL compiler also.
14187
14188 Tightened up the namespace load to disallow multiple names in the
14189 same scope.  This previously was allowed if both objects were of
14190 the same type.  (i.e., a lookup was the same as entering a new
14191 name).
14192
14193
14194 2) Linux
14195
14196 Ensure that the ACPI interrupt has the proper trigger and
14197 polarity.
14198
14199 local_irq_disable is extraneous. (Matthew Wilcox)
14200
14201 Make "acpi=off" actually do what it says, and not use the ACPI
14202 interpreter *or* the tables.
14203
14204 Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
14205 Takayoshi)
14206
14207
14208 3) iASL Compiler/Disassembler  Version 20020829:
14209
14210 Implemented namepath optimization for name declarations.  For
14211 example, a declaration like "Method (\_SB_.ABCD)" would get
14212 optimized to "Method (ABCD)" if the declaration is within the
14213 \_SB_ scope.  This optimization is in addition to the named
14214 reference path optimization first released in the previous
14215 version. This would seem to complete all possible optimizations
14216 for namepaths within the ASL/AML.
14217
14218 If the target of a Scope() operator already exists, it must be an
14219 object type that actually opens a scope -- such as a Device,
14220 Method, Scope, etc.
14221
14222 Implemented a check and warning for unreachable code in the same
14223 block below a Return() statement.
14224
14225 Fixed a problem where the listing file was not generated if the
14226 compiler aborted if the maximum error count was exceeded (200).
14227
14228 Fixed a problem where the typechecking of method return values was
14229 broken.  This includes the check for a return value when the
14230 method is invoked as a TermArg (a return value is expected.)
14231
14232 Fixed a reported problem where EOF conditions during a quoted
14233 string or comment caused a fault.
14234
14235
14236 ----------------------------------------
14237 15 August 2002.  Summary of changes for this release.
14238
14239 1) ACPI CA Core Subsystem Version 20020815:
14240
14241 Fixed a reported problem where a Store to a method argument that
14242 contains a reference did not perform the indirect store correctly.
14243 This problem was created during the conversion to the new
14244 reference object model - the indirect store to a method argument
14245 code was not updated to reflect the new model.
14246
14247 Reworked the ACPI mode change code to better conform to ACPI 2.0,
14248 handle corner cases, and improve code legibility (Kochi Takayoshi)
14249
14250 Fixed a problem with the pathname parsing for the carat (^)
14251 prefix.  The heavy use of the carat operator by the new namepath
14252 optimization in the iASL compiler uncovered a problem with the AML
14253 interpreter handling of this prefix.  In the case where one or
14254 more carats precede a single nameseg, the nameseg was treated as
14255 standalone and the search rule (to root) was inadvertently
14256 applied.  This could cause both the iASL compiler and the
14257 interpreter to find the wrong object or to miss the error that
14258 should occur if the object does not exist at that exact pathname.
14259
14260 Found and fixed the problem where the HP Pavilion DSDT would not
14261 load.  This was a relatively minor tweak to the table loading code
14262 (a problem caused by the unexpected encounter with a method
14263 invocation not within a control method), but it does not solve the
14264 overall issue of the execution of AML code at the table level.
14265 This investigation is still ongoing.
14266
14267 Code and Data Size: Current core subsystem library sizes are shown
14268 below.  These are the code and data sizes for the acpica.lib
14269 produced by the Microsoft Visual C++ 6.0 compiler, and these
14270 values do not include any ACPI driver or OSPM code.  The debug
14271 version of the code includes the debug output trace mechanism and
14272 has a larger code and data size.  Note that these values will vary
14273 depending on the efficiency of the compiler and the compiler
14274 options used during generation.
14275
14276   Previous Release
14277     Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
14278     Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
14279   Current Release:
14280     Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
14281     Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
14282
14283
14284 2) Linux
14285
14286 Remove redundant slab.h include (Brad Hards)
14287
14288 Fix several bugs in thermal.c (Herbert Nachtnebel)
14289
14290 Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
14291
14292 Change acpi_system_suspend to use updated irq functions (Pavel
14293 Machek)
14294
14295 Export acpi_get_firmware_table (Matthew Wilcox)
14296
14297 Use proper root proc entry for ACPI (Kochi Takayoshi)
14298
14299 Fix early-boot table parsing (Bjorn Helgaas)
14300
14301
14302 3) iASL Compiler/Disassembler
14303
14304 Reworked the compiler options to make them more consistent and to
14305 use two-letter options where appropriate.  We were running out of
14306 sensible letters.   This may break some makefiles, so check the
14307 current options list by invoking the compiler with no parameters.
14308
14309 Completed the design and implementation of the ASL namepath
14310 optimization option for the compiler.  This option optimizes all
14311 references to named objects to the shortest possible path.  The
14312 first attempt tries to utilize a single nameseg (4 characters) and
14313 the "search-to-root" algorithm used by the interpreter.  If that
14314 cannot be used (because either the name is not in the search path
14315 or there is a conflict with another object with the same name),
14316 the pathname is optimized using the carat prefix (usually a
14317 shorter string than specifying the entire path from the root.)
14318
14319 Implemented support to obtain the DSDT from the Windows registry
14320 (when the disassembly option is specified with no input file).
14321 Added this code as the implementation for AcpiOsTableOverride in
14322 the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
14323 utility) to scan memory for the DSDT to the AcpiOsTableOverride
14324 function in the DOS OSL to make the disassembler truly OS
14325 independent.
14326
14327 Implemented a new option to disassemble and compile in one step.
14328 When used without an input filename, this option will grab the
14329 DSDT from the local machine, disassemble it, and compile it in one
14330 step.
14331
14332 Added a warning message for invalid escapes (a backslash followed
14333 by any character other than the allowable escapes).  This catches
14334 the quoted string error "\_SB_" (which should be "\\_SB_" ).
14335
14336 Also, there are numerous instances in the ACPI specification where
14337 this error occurs.
14338
14339 Added a compiler option to disable all optimizations.  This is
14340 basically the "compatibility mode" because by using this option,
14341 the AML code will come out exactly the same as other ASL
14342 compilers.
14343
14344 Added error messages for incorrectly ordered dependent resource
14345 functions.  This includes: missing EndDependentFn macro at end of
14346 dependent resource list, nested dependent function macros (both
14347 start and end), and missing StartDependentFn macro.  These are
14348 common errors that should be caught at compile time.
14349
14350 Implemented _OSI support for the disassembler and compiler.  _OSI
14351 must be included in the namespace for proper disassembly (because
14352 the disassembler must know the number of arguments.)
14353
14354 Added an "optimization" message type that is optional (off by
14355 default).  This message is used for all optimizations - including
14356 constant folding, integer optimization, and namepath optimization.
14357
14358 ----------------------------------------
14359 25 July 2002.  Summary of changes for this release.
14360
14361
14362 1) ACPI CA Core Subsystem Version 20020725:
14363
14364 The AML Disassembler has been enhanced to produce compilable ASL
14365 code and has been integrated into the iASL compiler (see below) as
14366 well as the single-step disassembly for the AML debugger and the
14367 disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
14368 resource templates and macros are fully supported.  The
14369 disassembler has been tested on over 30 different AML files,
14370 producing identical AML when the resulting disassembled ASL file
14371 is recompiled with the same ASL compiler.
14372
14373 Modified the Resource Manager to allow zero interrupts and zero
14374 dma channels during the GetCurrentResources call.  This was
14375 causing problems on some platforms.
14376
14377 Added the AcpiOsRedirectOutput interface to the OSL to simplify
14378 output redirection for the AcpiOsPrintf and AcpiOsVprintf
14379 interfaces.
14380
14381 Code and Data Size: Current core subsystem library sizes are shown
14382 below.  These are the code and data sizes for the acpica.lib
14383 produced by the Microsoft Visual C++ 6.0 compiler, and these
14384 values do not include any ACPI driver or OSPM code.  The debug
14385 version of the code includes the debug output trace mechanism and
14386 has a larger code and data size.  Note that these values will vary
14387 depending on the efficiency of the compiler and the compiler
14388 options used during generation.
14389
14390   Previous Release
14391     Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
14392     Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
14393   Current Release:
14394     Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
14395     Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
14396
14397
14398 2) Linux
14399
14400 Fixed a panic in the EC driver (Dominik Brodowski)
14401
14402 Implemented checksum of the R/XSDT itself during Linux table scan
14403 (Richard Schaal)
14404
14405
14406 3) iASL compiler
14407
14408 The AML disassembler is integrated into the compiler.  The "-d"
14409 option invokes the disassembler  to completely disassemble an
14410 input AML file, producing as output a text ASL file with the
14411 extension ".dsl" (to avoid name collisions with existing .asl
14412 source files.)  A future enhancement will allow the disassembler
14413 to obtain the BIOS DSDT from the registry under Windows.
14414
14415 Fixed a problem with the VendorShort and VendorLong resource
14416 descriptors where an invalid AML sequence was created.
14417
14418 Implemented a fix for BufferData term in the ASL parser.  It was
14419 inadvertently defined twice, allowing invalid syntax to pass and
14420 causing reduction conflicts.
14421
14422 Fixed a problem where the Ones opcode could get converted to a
14423 value of zero if "Ones" was used where a byte, word or dword value
14424 was expected.  The 64-bit value is now truncated to the correct
14425 size with the correct value.
14426
14427
14428
14429 ----------------------------------------
14430 02 July 2002.  Summary of changes for this release.
14431
14432
14433 1) ACPI CA Core Subsystem Version 20020702:
14434
14435 The Table Manager code has been restructured to add several new
14436 features.  Tables that are not required by the core subsystem
14437 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
14438 validated in any way and are returned from AcpiGetFirmwareTable if
14439 requested.  The AcpiOsTableOverride interface is now called for
14440 each table that is loaded by the subsystem in order to allow the
14441 host to override any table it chooses.  Previously, only the DSDT
14442 could be overridden.  Added one new files, tbrsdt.c and
14443 tbgetall.c.
14444
14445 Fixed a problem with the conversion of internal package objects to
14446 external objects (when a package is returned from a control
14447 method.)  The return buffer length was set to zero instead of the
14448 proper length of the package object.
14449
14450 Fixed a reported problem with the use of the RefOf and DeRefOf
14451 operators when passing reference arguments to control methods.  A
14452 new type of Reference object is used internally for references
14453 produced by the RefOf operator.
14454
14455 Added additional error messages in the Resource Manager to explain
14456 AE_BAD_DATA errors when they occur during resource parsing.
14457
14458 Split the AcpiEnableSubsystem into two primitives to enable a
14459 finer granularity initialization sequence.  These two calls should
14460 be called in this order: AcpiEnableSubsystem (flags),
14461 AcpiInitializeObjects (flags).  The flags parameter remains the
14462 same.
14463
14464
14465 2) Linux
14466
14467 Updated the ACPI utilities module to understand the new style of
14468 fully resolved package objects that are now returned from the core
14469 subsystem.  This eliminates errors of the form:
14470
14471     ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
14472     acpi_utils-0430 [145] acpi_evaluate_reference:
14473         Invalid element in package (not a device reference)
14474
14475 The method evaluation utility uses the new buffer allocation
14476 scheme instead of calling AcpiEvaluate Object twice.
14477
14478 Added support for ECDT. This allows the use of the Embedded
14479
14480 Controller before the namespace has been fully initialized, which
14481 is necessary for ACPI 2.0 support, and for some laptops to
14482 initialize properly. (Laptops using ECDT are still rare, so only
14483 limited testing was performed of the added functionality.)
14484
14485 Fixed memory leaks in the EC driver.
14486
14487 Eliminated a brittle code structure in acpi_bus_init().
14488
14489 Eliminated the acpi_evaluate() helper function in utils.c. It is
14490 no longer needed since acpi_evaluate_object can optionally
14491 allocate memory for the return object.
14492
14493 Implemented fix for keyboard hang when getting battery readings on
14494 some systems (Stephen White)
14495
14496 PCI IRQ routing update (Dominik Brodowski)
14497
14498 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
14499 support
14500
14501 ----------------------------------------
14502 11 June 2002.  Summary of changes for this release.
14503
14504
14505 1) ACPI CA Core Subsystem Version 20020611:
14506
14507 Fixed a reported problem where constants such as Zero and One
14508 appearing within _PRT packages were not handled correctly within
14509 the resource manager code.  Originally reported against the ASL
14510 compiler because the code generator now optimizes integers to
14511 their minimal AML representation (i.e. AML constants if possible.)
14512 The _PRT code now handles all AML constant opcodes correctly
14513 (Zero, One, Ones, Revision).
14514
14515 Fixed a problem with the Concatenate operator in the AML
14516 interpreter where a buffer result object was incorrectly marked as
14517 not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
14518
14519 All package sub-objects are now fully resolved before they are
14520 returned from the external ACPI interfaces.  This means that name
14521 strings are resolved to object handles, and constant operators
14522 (Zero, One, Ones, Revision) are resolved to Integers.
14523
14524 Implemented immediate resolution of the AML Constant opcodes
14525 (Zero, One, Ones, Revision) to Integer objects upon detection
14526 within the AML stream. This has simplified and reduced the
14527 generated code size of the subsystem by eliminating about 10
14528 switch statements for these constants (which previously were
14529 contained in Reference objects.)  The complicating issues are that
14530 the Zero opcode is used as a "placeholder" for unspecified
14531 optional target operands and stores to constants are defined to be
14532 no-ops.
14533
14534 Code and Data Size: Current core subsystem library sizes are shown
14535 below. These are the code and data sizes for the acpica.lib
14536 produced by the Microsoft Visual C++ 6.0 compiler, and these
14537 values do not include any ACPI driver or OSPM code.  The debug
14538 version of the code includes the debug output trace mechanism and
14539 has a larger code and data size.  Note that these values will vary
14540 depending on the efficiency of the compiler and the compiler
14541 options used during generation.
14542
14543   Previous Release
14544     Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14545     Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14546   Current Release:
14547     Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
14548     Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
14549
14550
14551 2) Linux
14552
14553
14554 Added preliminary support for obtaining _TRA data for PCI root
14555 bridges (Bjorn Helgaas).
14556
14557
14558 3) iASL Compiler Version X2046:
14559
14560 Fixed a problem where the "_DDN" reserved name was defined to be a
14561 control method with one argument.  There are no arguments, and
14562 _DDN does not have to be a control method.
14563
14564 Fixed a problem with the Linux version of the compiler where the
14565 source lines printed with error messages were the wrong lines.
14566 This turned out to be the "LF versus CR/LF" difference between
14567 Windows and Unix.  This appears to be the longstanding issue
14568 concerning listing output and error messages.
14569
14570 Fixed a problem with the Linux version of compiler where opcode
14571 names within error messages were wrong.  This was caused by a
14572 slight difference in the output of the Flex tool on Linux versus
14573 Windows.
14574
14575 Fixed a problem with the Linux compiler where the hex output files
14576 contained some garbage data caused by an internal buffer overrun.
14577
14578
14579 ----------------------------------------
14580 17 May 2002.  Summary of changes for this release.
14581
14582
14583 1) ACPI CA Core Subsystem Version 20020517:
14584
14585 Implemented a workaround to an BIOS bug discovered on the HP
14586 OmniBook where the FADT revision number and the table size are
14587 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
14588 behavior is to fallback to using only the ACPI 1.0 fields of the
14589 FADT if the table is too small to be a ACPI 2.0 table as claimed
14590 by the revision number.  Although this is a BIOS bug, this is a
14591 case where the workaround is simple enough and with no side
14592 effects, so it seemed prudent to add it.  A warning message is
14593 issued, however.
14594
14595 Implemented minimum size checks for the fixed-length ACPI tables -
14596 - the FADT and FACS, as well as consistency checks between the
14597 revision number and the table size.
14598
14599 Fixed a reported problem in the table override support where the
14600 new table pointer was incorrectly treated as a physical address
14601 instead of a logical address.
14602
14603 Eliminated the use of the AE_AML_ERROR exception and replaced it
14604 with more descriptive codes.
14605
14606 Fixed a problem where an exception would occur if an ASL Field was
14607 defined with no named Field Units underneath it (used by some
14608 index fields).
14609
14610 Code and Data Size: Current core subsystem library sizes are shown
14611 below.  These are the code and data sizes for the acpica.lib
14612 produced by the Microsoft Visual C++ 6.0 compiler, and these
14613 values do not include any ACPI driver or OSPM code.  The debug
14614 version of the code includes the debug output trace mechanism and
14615 has a larger code and data size.  Note that these values will vary
14616 depending on the efficiency of the compiler and the compiler
14617 options used during generation.
14618
14619   Previous Release
14620     Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
14621     Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
14622   Current Release:
14623     Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14624     Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14625
14626
14627
14628 2) Linux
14629
14630 Much work done on ACPI init (MADT and PCI IRQ routing support).
14631 (Paul D. and Dominik Brodowski)
14632
14633 Fix PCI IRQ-related panic on boot (Sam Revitch)
14634
14635 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
14636
14637 Fix "MHz" typo (Dominik Brodowski)
14638
14639 Fix RTC year 2000 issue (Dominik Brodowski)
14640
14641 Preclude multiple button proc entries (Eric Brunet)
14642
14643 Moved arch-specific code out of include/platform/aclinux.h
14644
14645 3) iASL Compiler Version X2044:
14646
14647 Implemented error checking for the string used in the EISAID macro
14648 (Usually used in the definition of the _HID object.)  The code now
14649 strictly enforces the PnP format - exactly 7 characters, 3
14650 uppercase letters and 4 hex digits.
14651
14652 If a raw string is used in the definition of the _HID object
14653 (instead of the EISAID macro), the string must contain all
14654 alphanumeric characters (e.g., "*PNP0011" is not allowed because
14655 of the asterisk.)
14656
14657 Implemented checking for invalid use of ACPI reserved names for
14658 most of the name creation operators (Name, Device, Event, Mutex,
14659 OperationRegion, PowerResource, Processor, and ThermalZone.)
14660 Previously, this check was only performed for control methods.
14661
14662 Implemented an additional check on the Name operator to emit an
14663 error if a reserved name that must be implemented in ASL as a
14664 control method is used.  We know that a reserved name must be a
14665 method if it is defined with input arguments.
14666
14667 The warning emitted when a namespace object reference is not found
14668 during the cross reference phase has been changed into an error.
14669 The "External" directive should be used for names defined in other
14670 modules.
14671
14672
14673 4) Tools and Utilities
14674
14675 The 16-bit tools (adump16 and aexec16) have been regenerated and
14676 tested.
14677
14678 Fixed a problem with the output of both acpidump and adump16 where
14679 the indentation of closing parentheses and brackets was not
14680
14681 aligned properly with the parent block.
14682
14683
14684 ----------------------------------------
14685 03 May 2002.  Summary of changes for this release.
14686
14687
14688 1) ACPI CA Core Subsystem Version 20020503:
14689
14690 Added support a new OSL interface that allows the host operating
14691
14692 system software to override the DSDT found in the firmware -
14693 AcpiOsTableOverride.  With this interface, the OSL can examine the
14694 version of the firmware DSDT and replace it with a different one
14695 if desired.
14696
14697 Added new external interfaces for accessing ACPI registers from
14698 device drivers and other system software - AcpiGetRegister and
14699 AcpiSetRegister.  This was simply an externalization of the
14700 existing AcpiHwBitRegister interfaces.
14701
14702 Fixed a regression introduced in the previous build where the
14703 ASL/AML CreateField operator always returned an error,
14704 "destination must be a NS Node".
14705
14706 Extended the maximum time (before failure) to successfully enable
14707 ACPI mode to 3 seconds.
14708
14709 Code and Data Size: Current core subsystem library sizes are shown
14710 below.  These are the code and data sizes for the acpica.lib
14711 produced by the Microsoft Visual C++ 6.0 compiler, and these
14712 values do not include any ACPI driver or OSPM code.  The debug
14713 version of the code includes the debug output trace mechanism and
14714 has a larger code and data size.  Note that these values will vary
14715 depending on the efficiency of the compiler and the compiler
14716 options used during generation.
14717
14718   Previous Release
14719     Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
14720     Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
14721   Current Release:
14722     Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
14723     Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
14724
14725
14726 2) Linux
14727
14728 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
14729 free. While 3 out of 4 of our in-house systems work fine, the last
14730 one still hangs when testing the LAPIC timer.
14731
14732 Renamed many files in 2.5 kernel release to omit "acpi_" from the
14733 name.
14734
14735 Added warning on boot for Presario 711FR.
14736
14737 Sleep improvements (Pavel Machek)
14738
14739 ACPI can now be built without CONFIG_PCI enabled.
14740
14741 IA64: Fixed memory map functions (JI Lee)
14742
14743
14744 3) iASL Compiler Version X2043:
14745
14746 Added support to allow the compiler to be integrated into the MS
14747 VC++ development environment for one-button compilation of single
14748 files or entire projects -- with error-to-source-line mapping.
14749
14750 Implemented support for compile-time constant folding for the
14751 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
14752 specification.  This allows the ASL writer to use expressions
14753 instead of Integer/Buffer/String constants in terms that must
14754 evaluate to constants at compile time and will also simplify the
14755 emitted AML in any such sub-expressions that can be folded
14756 (evaluated at compile-time.)  This increases the size of the
14757 compiler significantly because a portion of the ACPI CA AML
14758 interpreter is included within the compiler in order to pre-
14759 evaluate constant expressions.
14760
14761
14762 Fixed a problem with the "Unicode" ASL macro that caused the
14763 compiler to fault.  (This macro is used in conjunction with the
14764 _STR reserved name.)
14765
14766 Implemented an AML opcode optimization to use the Zero, One, and
14767 Ones opcodes where possible to further reduce the size of integer
14768 constants and thus reduce the overall size of the generated AML
14769 code.
14770
14771 Implemented error checking for new reserved terms for ACPI version
14772 2.0A.
14773
14774 Implemented the -qr option to display the current list of ACPI
14775 reserved names known to the compiler.
14776
14777 Implemented the -qc option to display the current list of ASL
14778 operators that are allowed within constant expressions and can
14779 therefore be folded at compile time if the operands are constants.
14780
14781
14782 4) Documentation
14783
14784 Updated the Programmer's Reference for new interfaces, data types,
14785 and memory allocation model options.
14786
14787 Updated the iASL Compiler User Reference to apply new format and
14788 add information about new features and options.
14789
14790 ----------------------------------------
14791 19 April 2002.  Summary of changes for this release.
14792
14793 1) ACPI CA Core Subsystem Version 20020419:
14794
14795 The source code base for the Core Subsystem has been completely
14796 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
14797 versions.  The Lint option files used are included in the
14798 /acpi/generate/lint directory.
14799
14800 Implemented enhanced status/error checking across the entire
14801 Hardware manager subsystem.  Any hardware errors (reported from
14802 the OSL) are now bubbled up and will abort a running control
14803 method.
14804
14805
14806 Fixed a problem where the per-ACPI-table integer width (32 or 64)
14807 was stored only with control method nodes, causing a fault when
14808 non-control method code was executed during table loading.  The
14809 solution implemented uses a global variable to indicate table
14810 width across the entire ACPI subsystem.  Therefore, ACPI CA does
14811 not support mixed integer widths across different ACPI tables
14812 (DSDT, SSDT).
14813
14814 Fixed a problem where NULL extended fields (X fields) in an ACPI
14815 2.0 ACPI FADT caused the table load to fail.  Although the
14816 existing ACPI specification is a bit fuzzy on this topic, the new
14817 behavior is to fall back on a ACPI 1.0 field if the corresponding
14818 ACPI 2.0 X field is zero (even though the table revision indicates
14819 a full ACPI 2.0 table.)  The ACPI specification will be updated to
14820 clarify this issue.
14821
14822 Fixed a problem with the SystemMemory operation region handler
14823 where memory was always accessed byte-wise even if the AML-
14824 specified access width was larger than a byte.  This caused
14825 problems on systems with memory-mapped I/O.  Memory is now
14826 accessed with the width specified.  On systems that do not support
14827 non-aligned transfers, a check is made to guarantee proper address
14828 alignment before proceeding in order to avoid an AML-caused
14829 alignment fault within the kernel.
14830
14831
14832 Fixed a problem with the ExtendedIrq resource where only one byte
14833 of the 4-byte Irq field was extracted.
14834
14835 Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
14836 function was out of date and required a rewrite.
14837
14838 Code and Data Size: Current core subsystem library sizes are shown
14839 below.  These are the code and data sizes for the acpica.lib
14840 produced by the Microsoft Visual C++ 6.0 compiler, and these
14841 values do not include any ACPI driver or OSPM code.  The debug
14842 version of the code includes the debug output trace mechanism and
14843 has a larger code and data size.  Note that these values will vary
14844 depending on the efficiency of the compiler and the compiler
14845 options used during generation.
14846
14847   Previous Release
14848     Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
14849     Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
14850   Current Release:
14851     Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
14852     Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
14853
14854
14855 2) Linux
14856
14857 PCI IRQ routing fixes (Dominik Brodowski)
14858
14859
14860 3) iASL Compiler Version X2042:
14861
14862 Implemented an additional compile-time error check for a field
14863 unit whose size + minimum access width would cause a run-time
14864 access beyond the end-of-region.  Previously, only the field size
14865 itself was checked.
14866
14867 The Core subsystem and iASL compiler now share a common parse
14868 object in preparation for compile-time evaluation of the type
14869 3/4/5 ASL operators.
14870
14871
14872 ----------------------------------------
14873 Summary of changes for this release: 03_29_02
14874
14875 1) ACPI CA Core Subsystem Version 20020329:
14876
14877 Implemented support for late evaluation of TermArg operands to
14878 Buffer and Package objects.  This allows complex expressions to be
14879 used in the declarations of these object types.
14880
14881 Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
14882 1.0, if the field was larger than 32 bits, it was returned as a
14883 buffer - otherwise it was returned as an integer.  In ACPI 2.0,
14884 the field is returned as a buffer only if the field is larger than
14885 64 bits.  The TableRevision is now considered when making this
14886 conversion to avoid incompatibility with existing ASL code.
14887
14888 Implemented logical addressing for AcpiOsGetRootPointer.  This
14889 allows an RSDP with either a logical or physical address.  With
14890 this support, the host OS can now override all ACPI tables with
14891 one logical RSDP.  Includes implementation of  "typed" pointer
14892 support to allow a common data type for both physical and logical
14893 pointers internally.  This required a change to the
14894 AcpiOsGetRootPointer interface.
14895
14896 Implemented the use of ACPI 2.0 Generic Address Structures for all
14897 GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
14898 mapped I/O for these ACPI features.
14899
14900 Initialization now ignores not only non-required tables (All
14901 tables other than the FADT, FACS, DSDT, and SSDTs), but also does
14902 not validate the table headers of unrecognized tables.
14903
14904 Fixed a problem where a notify handler could only be
14905 installed/removed on an object of type Device.  All "notify"
14906
14907 objects are now supported -- Devices, Processor, Power, and
14908 Thermal.
14909
14910 Removed most verbosity from the ACPI_DB_INFO debug level.  Only
14911 critical information is returned when this debug level is enabled.
14912
14913 Code and Data Size: Current core subsystem library sizes are shown
14914 below.  These are the code and data sizes for the acpica.lib
14915 produced by the Microsoft Visual C++ 6.0 compiler, and these
14916 values do not include any ACPI driver or OSPM code.  The debug
14917 version of the code includes the debug output trace mechanism and
14918 has a larger code and data size.  Note that these values will vary
14919 depending on the efficiency of the compiler and the compiler
14920 options used during generation.
14921
14922   Previous Release
14923     Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
14924     Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
14925   Current Release:
14926     Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
14927     Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
14928
14929
14930 2) Linux:
14931
14932 The processor driver (acpi_processor.c) now fully supports ACPI
14933 2.0-based processor performance control (e.g. Intel(R)
14934 SpeedStep(TM) technology) Note that older laptops that only have
14935 the Intel "applet" interface are not supported through this.  The
14936 'limit' and 'performance' interface (/proc) are fully functional.
14937 [Note that basic policy for controlling performance state
14938 transitions will be included in the next version of ospmd.]  The
14939 idle handler was modified to more aggressively use C2, and PIIX4
14940 errata handling underwent a complete overhaul (big thanks to
14941 Dominik Brodowski).
14942
14943 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
14944 based devices in the ACPI namespace are now dynamically bound
14945 (associated) with their PCI counterparts (e.g. PCI1->01:00.0).
14946 This allows, among other things, ACPI to resolve bus numbers for
14947 subordinate PCI bridges.
14948
14949 Enhanced PCI IRQ routing to get the proper bus number for _PRT
14950 entries defined underneath PCI bridges.
14951
14952 Added IBM 600E to bad bios list due to invalid _ADR value for
14953 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
14954
14955 In the process of adding full MADT support (e.g. IOAPIC) for IA32
14956 (acpi.c, mpparse.c) -- stay tuned.
14957
14958 Added back visual differentiation between fixed-feature and
14959 control-method buttons in dmesg.  Buttons are also subtyped (e.g.
14960 button/power/PWRF) to simplify button identification.
14961
14962 We no longer use -Wno-unused when compiling debug. Please ignore
14963 any "_THIS_MODULE defined but not used" messages.
14964
14965 Can now shut down the system using "magic sysrq" key.
14966
14967
14968 3) iASL Compiler version 2041:
14969
14970 Fixed a problem where conversion errors for hex/octal/decimal
14971 constants were not reported.
14972
14973 Implemented a fix for the General Register template Address field.
14974 This field was 8 bits when it should be 64.
14975
14976 Fixed a problem where errors/warnings were no longer being emitted
14977 within the listing output file.
14978
14979 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
14980 exactly 4 characters, alphanumeric only.
14981
14982
14983
14984
14985 ----------------------------------------
14986 Summary of changes for this release: 03_08_02
14987
14988
14989 1) ACPI CA Core Subsystem Version 20020308:
14990
14991 Fixed a problem with AML Fields where the use of the "AccessAny"
14992 keyword could cause an interpreter error due to attempting to read
14993 or write beyond the end of the parent Operation Region.
14994
14995 Fixed a problem in the SystemMemory Operation Region handler where
14996 an attempt was made to map memory beyond the end of the region.
14997 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
14998 errors on some Linux systems.
14999
15000 Fixed a problem where the interpreter/namespace "search to root"
15001 algorithm was not functioning for some object types.  Relaxed the
15002 internal restriction on the search to allow upsearches for all
15003 external object types as well as most internal types.
15004
15005
15006 2) Linux:
15007
15008 We now use safe_halt() macro versus individual calls to sti | hlt.
15009
15010 Writing to the processor limit interface should now work. "echo 1"
15011 will increase the limit, 2 will decrease, and 0 will reset to the
15012
15013 default.
15014
15015
15016 3) ASL compiler:
15017
15018 Fixed segfault on Linux version.
15019
15020
15021 ----------------------------------------
15022 Summary of changes for this release: 02_25_02
15023
15024 1) ACPI CA Core Subsystem:
15025
15026
15027 Fixed a problem where the GPE bit masks were not initialized
15028 properly, causing erratic GPE behavior.
15029
15030 Implemented limited support for multiple calling conventions.  The
15031 code can be generated with either the VPL (variable parameter
15032 list, or "C") convention, or the FPL (fixed parameter list, or
15033 "Pascal") convention.  The core subsystem is about 3.4% smaller
15034 when generated with FPL.
15035
15036
15037 2) Linux
15038
15039 Re-add some /proc/acpi/event functionality that was lost during
15040 the rewrite
15041
15042 Resolved issue with /proc events for fixed-feature buttons showing
15043 up as the system device.
15044
15045 Fixed checks on C2/C3 latencies to be inclusive of maximum values.
15046
15047 Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
15048
15049 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
15050
15051 Fixed limit interface & usage to fix bugs with passive cooling
15052 hysterisis.
15053
15054 Restructured PRT support.
15055
15056
15057 ----------------------------------------
15058 Summary of changes for this label: 02_14_02
15059
15060
15061 1) ACPI CA Core Subsystem:
15062
15063 Implemented support in AcpiLoadTable to allow loading of FACS and
15064 FADT tables.
15065
15066 Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
15067 been removed.  All 64-bit platforms should be migrated to the ACPI
15068 2.0 tables.  The actbl71.h header has been removed from the source
15069 tree.
15070
15071 All C macros defined within the subsystem have been prefixed with
15072 "ACPI_" to avoid collision with other system include files.
15073
15074 Removed the return value for the two AcpiOsPrint interfaces, since
15075 it is never used and causes lint warnings for ignoring the return
15076 value.
15077
15078 Added error checking to all internal mutex acquire and release
15079 calls.  Although a failure from one of these interfaces is
15080 probably a fatal system error, these checks will cause the
15081 immediate abort of the currently executing method or interface.
15082
15083 Fixed a problem where the AcpiSetCurrentResources interface could
15084 fault.  This was a side effect of the deployment of the new memory
15085 allocation model.
15086
15087 Fixed a couple of problems with the Global Lock support introduced
15088 in the last major build.  The "common" (1.0/2.0) internal FACS was
15089 being overwritten with the FACS signature and clobbering the
15090 Global Lock pointer.  Also, the actual firmware FACS was being
15091 unmapped after construction of the "common" FACS, preventing
15092 access to the actual Global Lock field within it.  The "common"
15093 internal FACS is no longer installed as an actual ACPI table; it
15094 is used simply as a global.
15095
15096 Code and Data Size: Current core subsystem library sizes are shown
15097 below.  These are the code and data sizes for the acpica.lib
15098 produced by the Microsoft Visual C++ 6.0 compiler, and these
15099 values do not include any ACPI driver or OSPM code.  The debug
15100 version of the code includes the debug output trace mechanism and
15101 has a larger code and data size.  Note that these values will vary
15102 depending on the efficiency of the compiler and the compiler
15103 options used during generation.
15104
15105   Previous Release (02_07_01)
15106     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
15107     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
15108   Current Release:
15109     Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
15110     Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
15111
15112
15113 2) Linux
15114
15115 Updated Linux-specific code for core macro and OSL interface
15116 changes described above.
15117
15118 Improved /proc/acpi/event. It now can be opened only once and has
15119 proper poll functionality.
15120
15121 Fixed and restructured power management (acpi_bus).
15122
15123 Only create /proc "view by type" when devices of that class exist.
15124
15125 Fixed "charging/discharging" bug (and others) in acpi_battery.
15126
15127 Improved thermal zone code.
15128
15129
15130 3) ASL Compiler, version X2039:
15131
15132
15133 Implemented the new compiler restriction on ASL String hex/octal
15134 escapes to non-null, ASCII values.  An error results if an invalid
15135 value is used.  (This will require an ACPI 2.0 specification
15136 change.)
15137
15138 AML object labels that are output to the optional C and ASM source
15139 are now prefixed with both the ACPI table signature and table ID
15140 to help guarantee uniqueness within a large BIOS project.
15141
15142
15143 ----------------------------------------
15144 Summary of changes for this label: 02_01_02
15145
15146 1) ACPI CA Core Subsystem:
15147
15148 ACPI 2.0 support is complete in the entire Core Subsystem and the
15149 ASL compiler. All new ACPI 2.0 operators are implemented and all
15150 other changes for ACPI 2.0 support are complete.  With
15151 simultaneous code and data optimizations throughout the subsystem,
15152 ACPI 2.0 support has been implemented with almost no additional
15153 cost in terms of code and data size.
15154
15155 Implemented a new mechanism for allocation of return buffers.  If
15156 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
15157 be allocated on behalf of the caller.  Consolidated all return
15158 buffer validation and allocation to a common procedure.  Return
15159 buffers will be allocated via the primary OSL allocation interface
15160 since it appears that a separate pool is not needed by most users.
15161 If a separate pool is required for these buffers, the caller can
15162 still use the original mechanism and pre-allocate the buffer(s).
15163
15164 Implemented support for string operands within the DerefOf
15165 operator.
15166
15167 Restructured the Hardware and Event managers to be table driven,
15168 simplifying the source code and reducing the amount of generated
15169 code.
15170
15171 Split the common read/write low-level ACPI register bitfield
15172 procedure into a separate read and write, simplifying the code
15173 considerably.
15174
15175 Obsoleted the AcpiOsCallocate OSL interface.  This interface was
15176 used only a handful of times and didn't have enough critical mass
15177 for a separate interface.  Replaced with a common calloc procedure
15178 in the core.
15179
15180 Fixed a reported problem with the GPE number mapping mechanism
15181 that allows GPE1 numbers to be non-contiguous with GPE0.
15182 Reorganized the GPE information and shrunk a large array that was
15183 originally large enough to hold info for all possible GPEs (256)
15184 to simply large enough to hold all GPEs up to the largest GPE
15185 number on the machine.
15186
15187 Fixed a reported problem with resource structure alignment on 64-
15188 bit platforms.
15189
15190 Changed the AcpiEnableEvent and AcpiDisableEvent external
15191 interfaces to not require any flags for the common case of
15192 enabling/disabling a GPE.
15193
15194 Implemented support to allow a "Notify" on a Processor object.
15195
15196 Most TBDs in comments within the source code have been resolved
15197 and eliminated.
15198
15199
15200 Fixed a problem in the interpreter where a standalone parent
15201 prefix (^) was not handled correctly in the interpreter and
15202 debugger.
15203
15204 Removed obsolete and unnecessary GPE save/restore code.
15205
15206 Implemented Field support in the ASL Load operator.  This allows a
15207 table to be loaded from a named field, in addition to loading a
15208 table directly from an Operation Region.
15209
15210 Implemented timeout and handle support in the external Global Lock
15211 interfaces.
15212
15213 Fixed a problem in the AcpiDump utility where pathnames were no
15214 longer being generated correctly during the dump of named objects.
15215
15216 Modified the AML debugger to give a full display of if/while
15217 predicates instead of just one AML opcode at a time.  (The
15218 predicate can have several nested ASL statements.)  The old method
15219 was confusing during single stepping.
15220
15221 Code and Data Size: Current core subsystem library sizes are shown
15222 below. These are the code and data sizes for the acpica.lib
15223 produced by the Microsoft Visual C++ 6.0 compiler, and these
15224 values do not include any ACPI driver or OSPM code.  The debug
15225 version of the code includes the debug output trace mechanism and
15226 has a larger code and data size.  Note that these values will vary
15227 depending on the efficiency of the compiler and the compiler
15228 options used during generation.
15229
15230   Previous Release (12_18_01)
15231      Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
15232      Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
15233    Current Release:
15234      Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
15235      Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
15236
15237 2) Linux
15238
15239  Implemented fix for PIIX reverse throttling errata (Processor
15240 driver)
15241
15242 Added new Limit interface (Processor and Thermal drivers)
15243
15244 New thermal policy (Thermal driver)
15245
15246 Many updates to /proc
15247
15248 Battery "low" event support (Battery driver)
15249
15250 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
15251
15252 IA32 - IA64 initialization unification, no longer experimental
15253
15254 Menuconfig options redesigned
15255
15256 3) ASL Compiler, version X2037:
15257
15258 Implemented several new output features to simplify integration of
15259 AML code into  firmware: 1) Output the AML in C source code with
15260 labels for each named ASL object.  The    original ASL source code
15261 is interleaved as C comments. 2) Output the AML in ASM source code
15262 with labels and interleaved ASL    source. 3) Output the AML in
15263 raw hex table form, in either C or ASM.
15264
15265 Implemented support for optional string parameters to the
15266 LoadTable operator.
15267
15268 Completed support for embedded escape sequences within string
15269 literals.  The compiler now supports all single character escapes
15270 as well as the Octal and Hex escapes.  Note: the insertion of a
15271 null byte into a string literal (via the hex/octal escape) causes
15272 the string to be immediately terminated.  A warning is issued.
15273
15274 Fixed a problem where incorrect AML was generated for the case
15275 where an ASL namepath consists of a single parent prefix (
15276
15277 ) with no trailing name segments.
15278
15279 The compiler has been successfully generated with a 64-bit C
15280 compiler.
15281
15282
15283
15284
15285 ----------------------------------------
15286 Summary of changes for this label: 12_18_01
15287
15288 1) Linux
15289
15290 Enhanced blacklist with reason and severity fields. Any table's
15291 signature may now be used to identify a blacklisted system.
15292
15293 Call _PIC control method to inform the firmware which interrupt
15294 model the OS is using. Turn on any disabled link devices.
15295
15296 Cleaned up busmgr /proc error handling (Andreas Dilger)
15297
15298  2) ACPI CA Core Subsystem:
15299
15300 Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
15301 while loop)
15302
15303 Completed implementation of the ACPI 2.0 "Continue",
15304 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
15305 operators.  All new ACPI 2.0 operators are now implemented in both
15306 the ASL compiler and the AML interpreter.  The only remaining ACPI
15307 2.0 task is support for the String data type in the DerefOf
15308 operator.  Fixed a problem with AcquireMutex where the status code
15309 was lost if the caller had to actually wait for the mutex.
15310
15311 Increased the maximum ASL Field size from 64K bits to 4G bits.
15312
15313 Completed implementation of the external Global Lock interfaces --
15314 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
15315 Handler parameters were added.
15316
15317 Completed another pass at removing warnings and issues when
15318 compiling with 64-bit compilers.  The code now compiles cleanly
15319 with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
15320 add and subtract (diff) macros have changed considerably.
15321
15322
15323 Created and deployed a new ACPI_SIZE type that is 64-bits wide on
15324 64-bit platforms, 32-bits on all others.  This type is used
15325 wherever memory allocation and/or the C sizeof() operator is used,
15326 and affects the OSL memory allocation interfaces AcpiOsAllocate
15327 and AcpiOsCallocate.
15328
15329 Implemented sticky user breakpoints in the AML debugger.
15330
15331 Code and Data Size: Current core subsystem library sizes are shown
15332 below. These are the code and data sizes for the acpica.lib
15333 produced by the Microsoft Visual C++ 6.0 compiler, and these
15334 values do not include any ACPI driver or OSPM code.  The debug
15335 version of the code includes the debug output trace mechanism and
15336 has a larger code and data size. Note that these values will vary
15337 depending on the efficiency of the compiler and the compiler
15338 options used during generation.
15339
15340   Previous Release (12_05_01)
15341      Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
15342      Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
15343    Current Release:
15344      Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
15345      Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
15346
15347  3) ASL Compiler, version X2034:
15348
15349 Now checks for (and generates an error if detected) the use of a
15350 Break or Continue statement without an enclosing While statement.
15351
15352
15353 Successfully generated the compiler with the Intel 64-bit C
15354 compiler.
15355
15356  ----------------------------------------
15357 Summary of changes for this label: 12_05_01
15358
15359  1) ACPI CA Core Subsystem:
15360
15361 The ACPI 2.0 CopyObject operator is fully implemented.  This
15362 operator creates a new copy of an object (and is also used to
15363 bypass the "implicit conversion" mechanism of the Store operator.)
15364
15365 The ACPI 2.0 semantics for the SizeOf operator are fully
15366 implemented.  The change is that performing a SizeOf on a
15367 reference object causes an automatic dereference of the object to
15368 tha actual value before the size is evaluated. This behavior was
15369 undefined in ACPI 1.0.
15370
15371 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
15372 have been implemented.  The interrupt polarity and mode are now
15373 independently set.
15374
15375 Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
15376 appearing in Package objects were not properly converted to
15377 integers when the internal Package was converted to an external
15378 object (via the AcpiEvaluateObject interface.)
15379
15380 Fixed a problem with the namespace object deletion mechanism for
15381 objects created by control methods.  There were two parts to this
15382 problem: 1) Objects created during the initialization phase method
15383 parse were not being deleted, and 2) The object owner ID mechanism
15384 to track objects was broken.
15385
15386 Fixed a problem where the use of the ASL Scope operator within a
15387 control method would result in an invalid opcode exception.
15388
15389 Fixed a problem introduced in the previous label where the buffer
15390 length required for the _PRT structure was not being returned
15391 correctly.
15392
15393 Code and Data Size: Current core subsystem library sizes are shown
15394 below. These are the code and data sizes for the acpica.lib
15395 produced by the Microsoft Visual C++ 6.0 compiler, and these
15396 values do not include any ACPI driver or OSPM code.  The debug
15397 version of the code includes the debug output trace mechanism and
15398 has a larger code and data size.  Note that these values will vary
15399 depending on the efficiency of the compiler and the compiler
15400 options used during generation.
15401
15402   Previous Release (11_20_01)
15403      Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
15404      Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
15405
15406   Current Release:
15407      Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
15408      Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
15409
15410  2) Linux:
15411
15412 Updated all files to apply cleanly against 2.4.16.
15413
15414 Added basic PCI Interrupt Routing Table (PRT) support for IA32
15415 (acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
15416 version supports both static and dyanmic PRT entries, but dynamic
15417 entries are treated as if they were static (not yet
15418 reconfigurable).  Architecture- specific code to use this data is
15419 absent on IA32 but should be available shortly.
15420
15421 Changed the initialization sequence to start the ACPI interpreter
15422 (acpi_init) prior to initialization of the PCI driver (pci_init)
15423 in init/main.c.  This ordering is required to support PRT and
15424 facilitate other (future) enhancement.  A side effect is that the
15425 ACPI bus driver and certain device drivers can no longer be loaded
15426 as modules.
15427
15428 Modified the 'make menuconfig' options to allow PCI Interrupt
15429 Routing support to be included without the ACPI Bus and other
15430 device drivers.
15431
15432  3) ASL Compiler, version X2033:
15433
15434 Fixed some issues with the use of the new CopyObject and
15435 DataTableRegion operators.  Both are fully functional.
15436
15437  ----------------------------------------
15438 Summary of changes for this label: 11_20_01
15439
15440  20 November 2001.  Summary of changes for this release.
15441
15442  1) ACPI CA Core Subsystem:
15443
15444 Updated Index support to match ACPI 2.0 semantics.  Storing a
15445 Integer, String, or Buffer to an Index of a Buffer will store only
15446 the least-significant byte of the source to the Indexed buffer
15447 byte.  Multiple writes are not performed.
15448
15449 Fixed a problem where the access type used in an AccessAs ASL
15450 operator was not recorded correctly into the field object.
15451
15452 Fixed a problem where ASL Event objects were created in a
15453 signalled state. Events are now created in an unsignalled state.
15454
15455 The internal object cache is now purged after table loading and
15456 initialization to reduce the use of dynamic kernel memory -- on
15457 the assumption that object use is greatest during the parse phase
15458 of the entire table (versus the run-time use of individual control
15459 methods.)
15460
15461 ACPI 2.0 variable-length packages are now fully operational.
15462
15463 Code and Data Size: Code and Data optimizations have permitted new
15464 feature development with an actual reduction in the library size.
15465 Current core subsystem library sizes are shown below.  These are
15466 the code and data sizes for the acpica.lib produced by the
15467 Microsoft Visual C++ 6.0 compiler, and these values do not include
15468 any ACPI driver or OSPM code.  The debug version of the code
15469 includes the debug output trace mechanism and has a larger code
15470 and data size.  Note that these values will vary depending on the
15471 efficiency of the compiler and the compiler options used during
15472 generation.
15473
15474   Previous Release (11_09_01):
15475      Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
15476      Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
15477
15478   Current Release:
15479      Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
15480      Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
15481
15482  2) Linux:
15483
15484 Enhanced the ACPI boot-time initialization code to allow the use
15485 of Local APIC tables for processor enumeration on IA-32, and to
15486 pave the way for a fully MPS-free boot (on SMP systems) in the
15487 near future.  This functionality replaces
15488 arch/i386/kernel/acpitables.c, which was introduced in an earlier
15489 2.4.15-preX release.  To enable this feature you must add
15490 "acpi_boot=on" to the kernel command line -- see the help entry
15491 for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
15492 the works...
15493
15494 Restructured the configuration options to allow boot-time table
15495 parsing support without inclusion of the ACPI Interpreter (and
15496 other) code.
15497
15498 NOTE: This release does not include fixes for the reported events,
15499 power-down, and thermal passive cooling issues (coming soon).
15500
15501  3) ASL Compiler:
15502
15503 Added additional typechecking for Fields within restricted access
15504 Operation Regions.  All fields within EC and CMOS regions must be
15505 declared with ByteAcc. All fields withing SMBus regions must be
15506 declared with the BufferAcc access type.
15507
15508 Fixed a problem where the listing file output of control methods
15509 no longer interleaved the actual AML code with the ASL source
15510 code.
15511
15512
15513
15514
15515 ----------------------------------------
15516 Summary of changes for this label: 11_09_01
15517
15518 1) ACPI CA Core Subsystem:
15519
15520 Implemented ACPI 2.0-defined support for writes to fields with a
15521 Buffer, String, or Integer source operand that is smaller than the
15522 target field. In these cases, the source operand is zero-extended
15523 to fill the target field.
15524
15525 Fixed a problem where a Field starting bit offset (within the
15526 parent operation region) was calculated incorrectly if the
15527
15528 alignment of the field differed from the access width.  This
15529 affected CreateWordField, CreateDwordField, CreateQwordField, and
15530 possibly other fields that use the "AccessAny" keyword.
15531
15532 Fixed a problem introduced in the 11_02_01 release where indirect
15533 stores through method arguments did not operate correctly.
15534
15535 2) Linux:
15536
15537 Implemented boot-time ACPI table parsing support
15538 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
15539 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
15540 legacy BIOS interfaces (e.g. MPS) for the configuration of system
15541 processors, memory, and interrupts during setup_arch().  Note that
15542 this patch does not include the required architecture-specific
15543 changes required to apply this information -- subsequent patches
15544 will be posted for both IA32 and IA64 to achieve this.
15545
15546 Added low-level sleep support for IA32 platforms, courtesy of Pat
15547 Mochel. This allows IA32 systems to transition to/from various
15548 sleeping states (e.g. S1, S3), although the lack of a centralized
15549 driver model and power-manageable drivers will prevent its
15550 (successful) use on most systems.
15551
15552 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
15553 submenu, unified IA32 and IA64 options, added new "Boot using ACPI
15554 tables" option, etc.
15555
15556 Increased the default timeout for the EC driver from 1ms to 10ms
15557 (1000 cycles of 10us) to try to address AE_TIME errors during EC
15558 transactions.
15559
15560  ----------------------------------------
15561 Summary of changes for this label: 11_02_01
15562
15563 1) ACPI CA Core Subsystem:
15564
15565 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
15566 (QWordAcc keyword). All ACPI 2.0 64-bit support is now
15567 implemented.
15568
15569 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
15570 changes to support ACPI 2.0 Qword field access.  Read/Write
15571 PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
15572 accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
15573 the value parameter for the address space handler interface is now
15574 an ACPI_INTEGER.  OSL implementations of these interfaces must now
15575 handle the case where the Width parameter is 64.
15576
15577 Index Fields: Fixed a problem where unaligned bit assembly and
15578 disassembly for IndexFields was not supported correctly.
15579
15580 Index and Bank Fields:  Nested Index and Bank Fields are now
15581 supported. During field access, a check is performed to ensure
15582 that the value written to an Index or Bank register is not out of
15583 the range of the register.  The Index (or Bank) register is
15584 written before each access to the field data. Future support will
15585 include allowing individual IndexFields to be wider than the
15586 DataRegister width.
15587
15588 Fields: Fixed a problem where the AML interpreter was incorrectly
15589 attempting to write beyond the end of a Field/OpRegion.  This was
15590 a boundary case that occurred when a DWORD field was written to a
15591 BYTE access OpRegion, forcing multiple writes and causing the
15592 interpreter to write one datum too many.
15593
15594 Fields: Fixed a problem with Field/OpRegion access where the
15595 starting bit address of a field was incorrectly calculated if the
15596 current access type was wider than a byte (WordAcc, DwordAcc, or
15597 QwordAcc).
15598
15599 Fields: Fixed a problem where forward references to individual
15600 FieldUnits (individual Field names within a Field definition) were
15601 not resolved during the AML table load.
15602
15603 Fields: Fixed a problem where forward references from a Field
15604 definition to the parent Operation Region definition were not
15605 resolved during the AML table load.
15606
15607 Fields: Duplicate FieldUnit names within a scope are now detected
15608 during AML table load.
15609
15610 Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
15611 returned an incorrect name for the root node.
15612
15613 Code and Data Size: Code and Data optimizations have permitted new
15614 feature development with an actual reduction in the library size.
15615 Current core subsystem library sizes are shown below.  These are
15616 the code and data sizes for the acpica.lib produced by the
15617 Microsoft Visual C++ 6.0 compiler, and these values do not include
15618 any ACPI driver or OSPM code.  The debug version of the code
15619 includes the debug output trace mechanism and has a larger code
15620 and data size.  Note that these values will vary depending on the
15621 efficiency of the compiler and the compiler options used during
15622 generation.
15623
15624   Previous Release (10_18_01):
15625      Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
15626      Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
15627
15628   Current Release:
15629      Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
15630      Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
15631
15632  2) Linux:
15633
15634 Improved /proc processor output (Pavel Machek) Re-added
15635 MODULE_LICENSE("GPL") to all modules.
15636
15637  3) ASL Compiler version X2030:
15638
15639 Duplicate FieldUnit names within a scope are now detected and
15640 flagged as errors.
15641
15642  4) Documentation:
15643
15644 Programmer Reference updated to reflect OSL and address space
15645 handler interface changes described above.
15646
15647 ----------------------------------------
15648 Summary of changes for this label: 10_18_01
15649
15650 ACPI CA Core Subsystem:
15651
15652 Fixed a problem with the internal object reference count mechanism
15653 that occasionally caused premature object deletion. This resolves
15654 all of the outstanding problem reports where an object is deleted
15655 in the middle of an interpreter evaluation.  Although this problem
15656 only showed up in rather obscure cases, the solution to the
15657 problem involved an adjustment of all reference counts involving
15658 objects attached to namespace nodes.
15659
15660 Fixed a problem with Field support in the interpreter where
15661 writing to an aligned field whose length is an exact multiple (2
15662 or greater) of the field access granularity would cause an attempt
15663 to write beyond the end of the field.
15664
15665 The top level AML opcode execution functions within the
15666 interpreter have been renamed with a more meaningful and
15667 consistent naming convention.  The modules exmonad.c and
15668 exdyadic.c were eliminated.  New modules are exoparg1.c,
15669 exoparg2.c, exoparg3.c, and exoparg6.c.
15670
15671 Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
15672
15673 Fixed a problem where the AML debugger was causing some internal
15674 objects to not be deleted during subsystem termination.
15675
15676 Fixed a problem with the external AcpiEvaluateObject interface
15677 where the subsystem would fault if the named object to be
15678 evaluated refered to a constant such as Zero, Ones, etc.
15679
15680 Fixed a problem with IndexFields and BankFields where the
15681 subsystem would fault if the index, data, or bank registers were
15682 not defined in the same scope as the field itself.
15683
15684 Added printf format string checking for compilers that support
15685 this feature.  Corrected more than 50 instances of issues with
15686 format specifiers within invocations of ACPI_DEBUG_PRINT
15687 throughout the core subsystem code.
15688
15689 The ASL "Revision" operator now returns the ACPI support level
15690 implemented in the core - the value "2" since the ACPI 2.0 support
15691 is more than 50% implemented.
15692
15693 Enhanced the output of the AML debugger "dump namespace" command
15694 to output in a more human-readable form.
15695
15696 Current core subsystem library code sizes are shown below.  These
15697
15698 are the code and data sizes for the acpica.lib produced by the
15699 Microsoft Visual C++ 6.0 compiler, and these values do not include
15700 any ACPI driver or OSPM code.  The debug version of the code
15701 includes the full debug trace mechanism -- leading to a much
15702
15703 larger code and data size.  Note that these values will vary
15704 depending on the efficiency of the compiler and the compiler
15705 options used during generation.
15706
15707      Previous Label (09_20_01):
15708      Non-Debug Version:    65K Code,     5K Data,     70K Total
15709      Debug Version:       138K Code,    58K Data,    196K Total
15710
15711      This Label:
15712
15713      Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
15714      Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
15715
15716 Linux:
15717
15718 Implemented a "Bad BIOS Blacklist" to track machines that have
15719 known ASL/AML problems.
15720
15721 Enhanced the /proc interface for the thermal zone driver and added
15722 support for _HOT (the critical suspend trip point).  The 'info'
15723 file now includes threshold/policy information, and allows setting
15724 of _SCP (cooling preference) and _TZP (polling frequency) values
15725 to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
15726 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
15727 preference to the passive/quiet mode (if supported by the ASL).
15728
15729 Implemented a workaround for a gcc bug that resuted in an OOPs
15730 when loading the control method battery driver.
15731
15732  ----------------------------------------
15733 Summary of changes for this label: 09_20_01
15734
15735  ACPI CA Core Subsystem:
15736
15737 The AcpiEnableEvent and AcpiDisableEvent interfaces have been
15738 modified to allow individual GPE levels to be flagged as wake-
15739 enabled (i.e., these GPEs are to remain enabled when the platform
15740 sleeps.)
15741
15742 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
15743 support wake-enabled GPEs.  This means that upon entering the
15744 sleep state, all GPEs that are not wake-enabled are disabled.
15745 When leaving the sleep state, these GPEs are reenabled.
15746
15747 A local double-precision divide/modulo module has been added to
15748 enhance portability to OS kernels where a 64-bit math library is
15749 not available.  The new module is "utmath.c".
15750
15751 Several optimizations have been made to reduce the use of CPU
15752 stack.  Originally over 2K, the maximum stack usage is now below
15753 2K at 1860  bytes (1.82k)
15754
15755 Fixed a problem with the AcpiGetFirmwareTable interface where the
15756 root table pointer was not mapped into a logical address properly.
15757
15758 Fixed a problem where a NULL pointer was being dereferenced in the
15759 interpreter code for the ASL Notify operator.
15760
15761 Fixed a problem where the use of the ASL Revision operator
15762 returned an error. This operator now returns the current version
15763 of the ACPI CA core subsystem.
15764
15765 Fixed a problem where objects passed as control method parameters
15766 to AcpiEvaluateObject were always deleted at method termination.
15767 However, these objects may end up being stored into the namespace
15768 by the called method.  The object reference count mechanism was
15769 applied to these objects instead of a force delete.
15770
15771 Fixed a problem where static strings or buffers (contained in the
15772 AML code) that are declared as package elements within the ASL
15773 code could cause a fault because the interpreter would attempt to
15774 delete them.  These objects are now marked with the "static
15775 object" flag to prevent any attempt to delete them.
15776
15777 Implemented an interpreter optimization to use operands directly
15778 from the state object instead of extracting the operands to local
15779 variables.  This reduces stack use and code size, and improves
15780 performance.
15781
15782 The module exxface.c was eliminated as it was an unnecessary extra
15783 layer of code.
15784
15785 Current core subsystem library code sizes are shown below.  These
15786 are the code and data sizes for the acpica.lib produced by the
15787 Microsoft Visual C++ 6.0 compiler, and these values do not include
15788 any ACPI driver or OSPM code.  The debug version of the code
15789 includes the full debug trace mechanism -- leading to a much
15790 larger code and data size.  Note that these values will vary
15791 depending on the efficiency of the compiler and the compiler
15792 options used during generation.
15793
15794   Non-Debug Version:  65K Code,   5K Data,   70K Total
15795 (Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
15796 Total  (Previously 195K)
15797
15798 Linux:
15799
15800 Support for ACPI 2.0 64-bit integers has been added.   All ACPI
15801 Integer objects are now 64 bits wide
15802
15803 All Acpi data types and structures are now in lower case.  Only
15804 Acpi macros are upper case for differentiation.
15805
15806  Documentation:
15807
15808 Changes to the external interfaces as described above.
15809
15810  ----------------------------------------
15811 Summary of changes for this label: 08_31_01
15812
15813  ACPI CA Core Subsystem:
15814
15815 A bug with interpreter implementation of the ASL Divide operator
15816 was found and fixed.  The implicit function return value (not the
15817 explicit store operands) was returning the remainder instead of
15818 the quotient.  This was a longstanding bug and it fixes several
15819 known outstanding issues on various platforms.
15820
15821 The ACPI_DEBUG_PRINT and function trace entry/exit macros have
15822 been further optimized for size.  There are 700 invocations of the
15823 DEBUG_PRINT macro alone, so each optimization reduces the size of
15824 the debug version of the subsystem significantly.
15825
15826 A stack trace mechanism has been implemented.  The maximum stack
15827 usage is about 2K on 32-bit platforms.  The debugger command "stat
15828 stack" will display the current maximum stack usage.
15829
15830 All public symbols and global variables within the subsystem are
15831 now prefixed with the string "Acpi".  This keeps all of the
15832 symbols grouped together in a kernel map, and avoids conflicts
15833 with other kernel subsystems.
15834
15835 Most of the internal fixed lookup tables have been moved into the
15836 code segment via the const operator.
15837
15838 Several enhancements have been made to the interpreter to both
15839 reduce the code size and improve performance.
15840
15841 Current core subsystem library code sizes are shown below.  These
15842 are the code and data sizes for the acpica.lib produced by the
15843 Microsoft Visual C++ 6.0 compiler, and these values do not include
15844 any ACPI driver or OSPM code.  The debug version of the code
15845 includes the full debug trace mechanism which contains over 700
15846 invocations of the DEBUG_PRINT macro, 500 function entry macro
15847 invocations, and over 900 function exit macro invocations --
15848 leading to a much larger code and data size.  Note that these
15849 values will vary depending on the efficiency of the compiler and
15850 the compiler options used during generation.
15851
15852         Non-Debug Version:  64K Code,   5K Data,   69K Total
15853 Debug Version:     137K Code,  58K Data,  195K Total
15854
15855  Linux:
15856
15857 Implemented wbinvd() macro, pending a kernel-wide definition.
15858
15859 Fixed /proc/acpi/event to handle poll() and short reads.
15860
15861  ASL Compiler, version X2026:
15862
15863 Fixed a problem introduced in the previous label where the AML
15864
15865 code emitted for package objects produced packages with zero
15866 length.
15867
15868  ----------------------------------------
15869 Summary of changes for this label: 08_16_01
15870
15871 ACPI CA Core Subsystem:
15872
15873 The following ACPI 2.0 ASL operators have been implemented in the
15874 AML interpreter (These are already supported by the Intel ASL
15875 compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
15876 ToBuffer.  Support for 64-bit AML constants is implemented in the
15877 AML parser, debugger, and disassembler.
15878
15879 The internal memory tracking mechanism (leak detection code) has
15880 been upgraded to reduce the memory overhead (a separate tracking
15881 block is no longer allocated for each memory allocation), and now
15882 supports all of the internal object caches.
15883
15884 The data structures and code for the internal object caches have
15885 been coelesced and optimized so that there is a single cache and
15886 memory list data structure and a single group of functions that
15887 implement generic cache management.  This has reduced the code
15888 size in both the debug and release versions of the subsystem.
15889
15890 The DEBUG_PRINT macro(s) have been optimized for size and replaced
15891 by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
15892 different, because it generates a single call to an internal
15893 function.  This results in a savings of about 90 bytes per
15894 invocation, resulting in an overall code and data savings of about
15895 16% in the debug version of the subsystem.
15896
15897  Linux:
15898
15899 Fixed C3 disk corruption problems and re-enabled C3 on supporting
15900 machines.
15901
15902 Integrated low-level sleep code by Patrick Mochel.
15903
15904 Further tweaked source code Linuxization.
15905
15906 Other minor fixes.
15907
15908  ASL Compiler:
15909
15910 Support for ACPI 2.0 variable length packages is fixed/completed.
15911
15912 Fixed a problem where the optional length parameter for the ACPI
15913 2.0 ToString operator.
15914
15915 Fixed multiple extraneous error messages when a syntax error is
15916 detected within the declaration line of a control method.
15917
15918  ----------------------------------------
15919 Summary of changes for this label: 07_17_01
15920
15921 ACPI CA Core Subsystem:
15922
15923 Added a new interface named AcpiGetFirmwareTable to obtain any
15924 ACPI table via the ACPI signature.  The interface can be called at
15925 any time during kernel initialization, even before the kernel
15926 virtual memory manager is initialized and paging is enabled.  This
15927 allows kernel subsystems to obtain ACPI tables very early, even
15928 before the ACPI CA subsystem is initialized.
15929
15930 Fixed a problem where Fields defined with the AnyAcc attribute
15931 could be resolved to the incorrect address under the following
15932 conditions: 1) the field width is larger than 8 bits and 2) the
15933 parent operation region is not defined on a DWORD boundary.
15934
15935 Fixed a problem where the interpreter is not being locked during
15936 namespace initialization (during execution of the _INI control
15937 methods), causing an error when an attempt is made to release it
15938 later.
15939
15940 ACPI 2.0 support in the AML Interpreter has begun and will be
15941 ongoing throughout the rest of this year.  In this label, The Mod
15942 operator is implemented.
15943
15944 Added a new data type to contain full PCI addresses named
15945 ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
15946 and Function values.
15947
15948  Linux:
15949
15950 Enhanced the Linux version of the source code to change most
15951 capitalized ACPI type names to lowercase. For example, all
15952 instances of ACPI_STATUS are changed to acpi_status.  This will
15953 result in a large diff, but the change is strictly cosmetic and
15954 aligns the CA code closer to the Linux coding standard.
15955
15956 OSL Interfaces:
15957
15958 The interfaces to the PCI configuration space have been changed to
15959 add the PCI Segment number and to split the single 32-bit combined
15960 DeviceFunction field into two 16-bit fields.  This was
15961 accomplished by moving the four values that define an address in
15962 PCI configuration space (segment, bus, device, and function) to
15963 the new ACPI_PCI_ID structure.
15964
15965 The changes to the PCI configuration space interfaces led to a
15966 reexamination of the complete set of address space access
15967 interfaces for PCI, I/O, and Memory.  The previously existing 18
15968 interfaces have proven difficult to maintain (any small change
15969 must be propagated across at least 6 interfaces) and do not easily
15970 allow for future expansion to 64 bits if necessary.  Also, on some
15971 systems, it would not be appropriate to demultiplex the access
15972 width (8, 16, 32,or 64) before calling the OSL if the
15973 corresponding native OS interfaces contain a similar access width
15974 parameter.  For these reasons, the 18 address space interfaces
15975 have been replaced by these 6 new ones:
15976
15977 AcpiOsReadPciConfiguration
15978 AcpiOsWritePciConfiguration
15979 AcpiOsReadMemory
15980 AcpiOsWriteMemory
15981 AcpiOsReadPort
15982 AcpiOsWritePort
15983
15984 Added a new interface named AcpiOsGetRootPointer to allow the OSL
15985 to perform the platform and/or OS-specific actions necessary to
15986 obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
15987 interface will simply call down to the CA core to perform the low-
15988 memory search for the table.  On IA-64, the RSDP is obtained from
15989 EFI.  Migrating this interface to the OSL allows the CA core to
15990
15991 remain OS and platform independent.
15992
15993 Added a new interface named AcpiOsSignal to provide a generic
15994 "function code and pointer" interface for various miscellaneous
15995 signals and notifications that must be made to the host OS.   The
15996 first such signals are intended to support the ASL Fatal and
15997 Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
15998 interface has been obsoleted.
15999
16000 The definition of the AcpiFormatException interface has been
16001 changed to simplify its use.  The caller no longer must supply a
16002 buffer to the call; A pointer to a const string is now returned
16003 directly.  This allows the call to be easily used in printf
16004 statements, etc. since the caller does not have to manage a local
16005 buffer.
16006
16007
16008  ASL Compiler, Version X2025:
16009
16010 The ACPI 2.0 Switch/Case/Default operators have been implemented
16011 and are fully functional.  They will work with all ACPI 1.0
16012 interpreters, since the operators are simply translated to If/Else
16013 pairs.
16014
16015 The ACPI 2.0 ElseIf operator is implemented and will also work
16016 with 1.0 interpreters, for the same reason.
16017
16018 Implemented support for ACPI 2.0 variable-length packages.  These
16019 packages have a separate opcode, and their size is determined by
16020 the interpreter at run-time.
16021
16022 Documentation The ACPI CA Programmer Reference has been updated to
16023 reflect the new interfaces and changes to existing interfaces.
16024
16025  ------------------------------------------
16026 Summary of changes for this label: 06_15_01
16027
16028  ACPI CA Core Subsystem:
16029
16030 Fixed a problem where a DWORD-accessed field within a Buffer
16031 object would get its byte address inadvertently rounded down to
16032 the nearest DWORD.  Buffers are always Byte-accessible.
16033
16034  ASL Compiler, version X2024:
16035
16036 Fixed a problem where the Switch() operator would either fault or
16037 hang the compiler.  Note however, that the AML code for this ACPI
16038 2.0 operator is not yet implemented.
16039
16040 Compiler uses the new AcpiOsGetTimer interface to obtain compile
16041 timings.
16042
16043 Implementation of the CreateField operator automatically converts
16044 a reference to a named field within a resource descriptor from a
16045 byte offset to a bit offset if required.
16046
16047 Added some missing named fields from the resource descriptor
16048 support. These are the names that are automatically created by the
16049 compiler to reference fields within a descriptor.  They are only
16050 valid at compile time and are not passed through to the AML
16051 interpreter.
16052
16053 Resource descriptor named fields are now typed as Integers and
16054 subject to compile-time typechecking when used in expressions.
16055
16056  ------------------------------------------
16057 Summary of changes for this label: 05_18_01
16058
16059  ACPI CA Core Subsystem:
16060
16061 Fixed a couple of problems in the Field support code where bits
16062 from adjacent fields could be returned along with the proper field
16063 bits. Restructured the field support code to improve performance,
16064 readability and maintainability.
16065
16066 New DEBUG_PRINTP macro automatically inserts the procedure name
16067 into the output, saving hundreds of copies of procedure name
16068 strings within the source, shrinking the memory footprint of the
16069 debug version of the core subsystem.
16070
16071  Source Code Structure:
16072
16073 The source code directory tree was restructured to reflect the
16074 current organization of the component architecture.  Some files
16075 and directories have been moved and/or renamed.
16076
16077  Linux:
16078
16079 Fixed leaking kacpidpc processes.
16080
16081 Fixed queueing event data even when /proc/acpi/event is not
16082 opened.
16083
16084  ASL Compiler, version X2020:
16085
16086 Memory allocation performance enhancement - over 24X compile time
16087 improvement on large ASL files.  Parse nodes and namestring
16088 buffers are now allocated from a large internal compiler buffer.
16089
16090 The temporary .SRC file is deleted unless the "-s" option is
16091 specified
16092
16093 The "-d" debug output option now sends all output to the .DBG file
16094 instead of the console.
16095
16096 "External" second parameter is now optional
16097
16098 "ElseIf" syntax now properly allows the predicate
16099
16100 Last operand to "Load" now recognized as a Target operand
16101
16102 Debug object can now be used anywhere as a normal object.
16103
16104 ResourceTemplate now returns an object of type BUFFER
16105
16106 EISAID now returns an object of type INTEGER
16107
16108 "Index" now works with a STRING operand
16109
16110 "LoadTable" now accepts optional parameters
16111
16112 "ToString" length parameter is now optional
16113
16114 "Interrupt (ResourceType," parse error fixed.
16115
16116 "Register" with a user-defined region space parse error fixed
16117
16118 Escaped backslash at the end of a string ("\\") scan/parse error
16119 fixed
16120
16121 "Revision" is now an object of type INTEGER.
16122
16123
16124
16125 ------------------------------------------
16126 Summary of changes for this label: 05_02_01
16127
16128 Linux:
16129
16130 /proc/acpi/event now blocks properly.
16131
16132 Removed /proc/sys/acpi. You can still dump your DSDT from
16133 /proc/acpi/dsdt.
16134
16135  ACPI CA Core Subsystem:
16136
16137 Fixed a problem introduced in the previous label where some of the
16138 "small" resource descriptor types were not recognized.
16139
16140 Improved error messages for the case where an ASL Field is outside
16141 the range of the parent operation region.
16142
16143  ASL Compiler, version X2018:
16144
16145
16146 Added error detection for ASL Fields that extend beyond the length
16147 of the parent operation region (only if the length of the region
16148 is known at compile time.)  This includes fields that have a
16149 minimum access width that is smaller than the parent region, and
16150 individual field units that are partially or entirely beyond the
16151 extent of the parent.
16152
16153
16154
16155 ------------------------------------------
16156 Summary of changes for this label: 04_27_01
16157
16158  ACPI CA Core Subsystem:
16159
16160 Fixed a problem where the namespace mutex could be released at the
16161 wrong time during execution of AcpiRemoveAddressSpaceHandler.
16162
16163 Added optional thread ID output for debug traces, to simplify
16164 debugging of multiple threads.  Added context switch notification
16165 when the debug code realizes that a different thread is now
16166 executing ACPI code.
16167
16168 Some additional external data types have been prefixed with the
16169 string "ACPI_" for consistency.  This may effect existing code.
16170 The data types affected are the external callback typedefs - e.g.,
16171
16172 WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
16173
16174  Linux:
16175
16176 Fixed an issue with the OSL semaphore implementation where a
16177 thread was waking up with an error from receiving a SIGCHLD
16178 signal.
16179
16180 Linux version of ACPI CA now uses the system C library for string
16181 manipulation routines instead of a local implementation.
16182
16183 Cleaned up comments and removed TBDs.
16184
16185  ASL Compiler, version X2017:
16186
16187 Enhanced error detection and reporting for all file I/O
16188 operations.
16189
16190  Documentation:
16191
16192 Programmer Reference updated to version 1.06.
16193
16194
16195
16196 ------------------------------------------
16197 Summary of changes for this label: 04_13_01
16198
16199  ACPI CA Core Subsystem:
16200
16201 Restructured support for BufferFields and RegionFields.
16202 BankFields support is now fully operational.  All known 32-bit
16203 limitations on field sizes have been removed.  Both BufferFields
16204 and (Operation) RegionFields are now supported by the same field
16205 management code.
16206
16207 Resource support now supports QWORD address and IO resources. The
16208 16/32/64 bit address structures and the Extended IRQ structure
16209 have been changed to properly handle Source Resource strings.
16210
16211 A ThreadId of -1 is now used to indicate a "mutex not acquired"
16212 condition internally and must never be returned by AcpiOsThreadId.
16213 This reserved value was changed from 0 since Unix systems allow a
16214 thread ID of 0.
16215
16216 Linux:
16217
16218 Driver code reorganized to enhance portability
16219
16220 Added a kernel configuration option to control ACPI_DEBUG
16221
16222 Fixed the EC driver to honor _GLK.
16223
16224 ASL Compiler, version X2016:
16225
16226 Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
16227 address space was set to 0, not 0x7f as it should be.
16228
16229  ------------------------------------------
16230 Summary of changes for this label: 03_13_01
16231
16232  ACPI CA Core Subsystem:
16233
16234 During ACPI initialization, the _SB_._INI method is now run if
16235 present.
16236
16237 Notify handler fix - notifies are deferred until the parent method
16238 completes execution.  This fixes the "mutex already acquired"
16239 issue seen occasionally.
16240
16241 Part of the "implicit conversion" rules in ACPI 2.0 have been
16242 found to cause compatibility problems with existing ASL/AML.  The
16243 convert "result-to-target-type" implementation has been removed
16244 for stores to method Args and Locals.  Source operand conversion
16245 is still fully implemented.  Possible changes to ACPI 2.0
16246 specification pending.
16247
16248 Fix to AcpiRsCalculatePciRoutingTableLength to return correct
16249 length.
16250
16251 Fix for compiler warnings for 64-bit compiles.
16252
16253  Linux:
16254
16255 /proc output aligned for easier parsing.
16256
16257 Release-version compile problem fixed.
16258
16259 New kernel configuration options documented in Configure.help.
16260
16261 IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
16262 context" message.
16263
16264  OSPM:
16265
16266 Power resource driver integrated with bus manager.
16267
16268 Fixed kernel fault during active cooling for thermal zones.
16269
16270 Source Code:
16271
16272 The source code tree has been restructured.
16273
16274
16275
16276 ------------------------------------------
16277 Summary of changes for this label: 03_02_01
16278
16279  Linux OS Services Layer (OSL):
16280
16281 Major revision of all Linux-specific code.
16282
16283 Modularized all ACPI-specific drivers.
16284
16285 Added new thermal zone and power resource drivers.
16286
16287 Revamped /proc interface (new functionality is under /proc/acpi).
16288
16289 New kernel configuration options.
16290
16291  Linux known issues:
16292
16293 New kernel configuration options not documented in Configure.help
16294 yet.
16295
16296
16297 Module dependencies not currently implemented. If used, they
16298 should be loaded in this order: busmgr, power, ec, system,
16299 processor, battery, ac_adapter, button, thermal.
16300
16301 Modules will not load if CONFIG_MODVERSION is set.
16302
16303 IBM 600E - entering S5 may reboot instead of shutting down.
16304
16305 IBM 600E - Sleep button may generate "Invalid <NULL> context"
16306 message.
16307
16308 Some systems may fail with "execution mutex already acquired"
16309 message.
16310
16311  ACPI CA Core Subsystem:
16312
16313 Added a new OSL Interface, AcpiOsGetThreadId.  This was required
16314 for the  deadlock detection code. Defined to return a non-zero, 32-
16315 bit thread ID for the currently executing thread.  May be a non-
16316 zero constant integer on single-thread systems.
16317
16318 Implemented deadlock detection for internal subsystem mutexes.  We
16319 may add conditional compilation for this code (debug only) later.
16320
16321 ASL/AML Mutex object semantics are now fully supported.  This
16322 includes multiple acquires/releases by owner and support for the
16323
16324 Mutex SyncLevel parameter.
16325
16326 A new "Force Release" mechanism automatically frees all ASL
16327 Mutexes that have been acquired but not released when a thread
16328 exits the interpreter.  This forces conformance to the ACPI spec
16329 ("All mutexes must be released when an invocation exits") and
16330 prevents deadlocked ASL threads.  This mechanism can be expanded
16331 (later) to monitor other resource acquisitions if OEM ASL code
16332 continues to misbehave (which it will).
16333
16334 Several new ACPI exception codes have been added for the Mutex
16335 support.
16336
16337 Recursive method calls are now allowed and supported (the ACPI
16338 spec does in fact allow recursive method calls.)  The number of
16339 recursive calls is subject to the restrictions imposed by the
16340 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
16341 parameter.
16342
16343 Implemented support for the SyncLevel parameter for control
16344 methods (ACPI 2.0 feature)
16345
16346 Fixed a deadlock problem when multiple threads attempted to use
16347 the interpreter.
16348
16349 Fixed a problem where the string length of a String package
16350 element was not always set in a package returned from
16351 AcpiEvaluateObject.
16352
16353 Fixed a problem where the length of a String package element was
16354 not always included in the length of the overall package returned
16355 from AcpiEvaluateObject.
16356
16357 Added external interfaces (Acpi*) to the ACPI debug memory
16358 manager.  This manager keeps a list of all outstanding
16359 allocations, and can therefore detect memory leaks and attempts to
16360 free memory blocks more than once. Useful for code such as the
16361 power manager, etc.  May not be appropriate for device drivers.
16362 Performance with the debug code enabled is slow.
16363
16364 The ACPI Global Lock is now an optional hardware element.
16365
16366  ASL Compiler Version X2015:
16367
16368 Integrated changes to allow the compiler to be generated on
16369 multiple platforms.
16370
16371 Linux makefile added to generate the compiler on Linux
16372
16373  Source Code:
16374
16375 All platform-specific headers have been moved to their own
16376 subdirectory, Include/Platform.
16377
16378 New source file added, Interpreter/ammutex.c
16379
16380 New header file, Include/acstruct.h
16381
16382  Documentation:
16383
16384 The programmer reference has been updated for the following new
16385 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
16386
16387  ------------------------------------------
16388 Summary of changes for this label: 02_08_01
16389
16390 Core ACPI CA Subsystem: Fixed a problem where an error was
16391 incorrectly returned if the return resource buffer was larger than
16392 the actual data (in the resource interfaces).
16393
16394 References to named objects within packages are resolved to the
16395
16396 full pathname string before packages are returned directly (via
16397 the AcpiEvaluateObject interface) or indirectly via the resource
16398 interfaces.
16399
16400 Linux OS Services Layer (OSL):
16401
16402 Improved /proc battery interface.
16403
16404
16405 Added C-state debugging output and other miscellaneous fixes.
16406
16407 ASL Compiler Version X2014:
16408
16409 All defined method arguments can now be used as local variables,
16410 including the ones that are not actually passed in as parameters.
16411 The compiler tracks initialization of the arguments and issues an
16412 exception if they are used without prior assignment (just like
16413 locals).
16414
16415 The -o option now specifies a filename prefix that is used for all
16416 output files, including the AML output file.  Otherwise, the
16417 default behavior is as follows:  1) the AML goes to the file
16418 specified in the DSDT.  2) all other output files use the input
16419 source filename as the base.
16420
16421  ------------------------------------------
16422 Summary of changes for this label: 01_25_01
16423
16424 Core ACPI CA Subsystem: Restructured the implementation of object
16425 store support within the  interpreter.  This includes support for
16426 the Store operator as well  as any ASL operators that include a
16427 target operand.
16428
16429 Partially implemented support for Implicit Result-to-Target
16430 conversion. This is when a result object is converted on the fly
16431 to the type of  an existing target object.  Completion of this
16432 support is pending  further analysis of the ACPI specification
16433 concerning this matter.
16434
16435 CPU-specific code has been removed from the subsystem (hardware
16436 directory).
16437
16438 New Power Management Timer functions added
16439
16440 Linux OS Services Layer (OSL): Moved system state transition code
16441 to the core, fixed it, and modified  Linux OSL accordingly.
16442
16443 Fixed C2 and C3 latency calculations.
16444
16445
16446 We no longer use the compilation date for the version message on
16447 initialization, but retrieve the version from AcpiGetSystemInfo().
16448
16449 Incorporated for fix Sony VAIO machines.
16450
16451 Documentation:  The Programmer Reference has been updated and
16452 reformatted.
16453
16454
16455 ASL Compiler:  Version X2013: Fixed a problem where the line
16456 numbering and error reporting could get out  of sync in the
16457 presence of multiple include files.
16458
16459  ------------------------------------------
16460 Summary of changes for this label: 01_15_01
16461
16462 Core ACPI CA Subsystem:
16463
16464 Implemented support for type conversions in the execution of the
16465 ASL  Concatenate operator (The second operand is converted to
16466 match the type  of the first operand before concatenation.)
16467
16468 Support for implicit source operand conversion is partially
16469 implemented.   The ASL source operand types Integer, Buffer, and
16470 String are freely  interchangeable for most ASL operators and are
16471 converted by the interpreter  on the fly as required.  Implicit
16472 Target operand conversion (where the  result is converted to the
16473 target type before storing) is not yet implemented.
16474
16475 Support for 32-bit and 64-bit BCD integers is implemented.
16476
16477 Problem fixed where a field read on an aligned field could cause a
16478 read  past the end of the field.
16479
16480 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
16481 does not return a value, but the caller expects one.  (The ASL
16482 compiler flags this as a warning.)
16483
16484 ASL Compiler:
16485
16486 Version X2011:
16487 1. Static typechecking of all operands is implemented. This
16488 prevents the use of invalid objects (such as using a Package where
16489 an Integer is required) at compile time instead of at interpreter
16490 run-time.
16491 2. The ASL source line is printed with ALL errors and warnings.
16492 3. Bug fix for source EOF without final linefeed.
16493 4. Debug option is split into a parse trace and a namespace trace.
16494 5. Namespace output option (-n) includes initial values for
16495 integers and strings.
16496 6. Parse-only option added for quick syntax checking.
16497 7. Compiler checks for duplicate ACPI name declarations
16498
16499 Version X2012:
16500 1. Relaxed typechecking to allow interchangeability between
16501 strings, integers, and buffers.  These types are now converted by
16502 the interpreter at runtime.
16503 2. Compiler reports time taken by each internal subsystem in the
16504 debug         output file.
16505
16506
16507  ------------------------------------------
16508 Summary of changes for this label: 12_14_00
16509
16510 ASL Compiler:
16511
16512 This is the first official release of the compiler. Since the
16513 compiler requires elements of the Core Subsystem, this label
16514 synchronizes everything.
16515
16516 ------------------------------------------
16517 Summary of changes for this label: 12_08_00
16518
16519
16520 Fixed a problem where named references within the ASL definition
16521 of both OperationRegions and CreateXXXFields did not work
16522 properly.  The symptom was an AE_AML_OPERAND_TYPE during
16523 initialization of the region/field. This is similar (but not
16524 related internally) to the problem that was fixed in the last
16525 label.
16526
16527 Implemented both 32-bit and 64-bit support for the BCD ASL
16528 functions ToBCD and FromBCD.
16529
16530 Updated all legal headers to include "2000" in the copyright
16531 years.
16532
16533  ------------------------------------------
16534 Summary of changes for this label: 12_01_00
16535
16536 Fixed a problem where method invocations within the ASL definition
16537 of both OperationRegions and CreateXXXFields did not work
16538 properly.  The symptom was an AE_AML_OPERAND_TYPE during
16539 initialization of the region/field:
16540
16541   nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
16542 [DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
16543 (0x3005)
16544
16545 Fixed a problem where operators with more than one nested
16546 subexpression would fail.  The symptoms were varied, by mostly
16547 AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
16548 problem that has gone unnoticed until now.
16549
16550   Subtract (Add (1,2), Multiply (3,4))
16551
16552 Fixed a problem where AcpiGetHandle didn't quite get fixed in the
16553 previous build (The prefix part of a relative path was handled
16554 incorrectly).
16555
16556 Fixed a problem where Operation Region initialization failed if
16557 the operation region name was a "namepath" instead of a simple
16558 "nameseg". Symptom was an AE_NO_OPERAND error.
16559
16560 Fixed a problem where an assignment to a local variable via the
16561 indirect RefOf mechanism only worked for the first such
16562 assignment.  Subsequent assignments were ignored.
16563
16564  ------------------------------------------
16565 Summary of changes for this label: 11_15_00
16566
16567 ACPI 2.0 table support with backwards support for ACPI 1.0 and the
16568 0.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
16569 the AML  interpreter does NOT have support for the new 2.0 ASL
16570 grammar terms at this time.
16571
16572 All ACPI hardware access is via the GAS structures in the ACPI 2.0
16573 FADT.
16574
16575 All physical memory addresses across all platforms are now 64 bits
16576 wide. Logical address width remains dependent on the platform
16577 (i.e., "void *").
16578
16579 AcpiOsMapMemory interface changed to a 64-bit physical address.
16580
16581 The AML interpreter integer size is now 64 bits, as per the ACPI
16582 2.0 specification.
16583
16584 For backwards compatibility with ACPI 1.0, ACPI tables with a
16585 revision number less than 2 use 32-bit integers only.
16586
16587 Fixed a problem where the evaluation of OpRegion operands did not
16588 always resolve them to numbers properly.
16589
16590 ------------------------------------------
16591 Summary of changes for this label: 10_20_00
16592
16593 Fix for CBN_._STA issue.  This fix will allow correct access to
16594 CBN_ OpRegions when the _STA returns 0x8.
16595
16596 Support to convert ACPI constants (Ones, Zeros, One) to actual
16597 values before a package object is returned
16598
16599 Fix for method call as predicate to if/while construct causing
16600 incorrect if/while behavior
16601
16602 Fix for Else block package lengths sometimes calculated wrong (if
16603 block > 63 bytes)
16604
16605 Fix for Processor object length field, was always zero
16606
16607 Table load abort if FACP sanity check fails
16608
16609 Fix for problem with Scope(name) if name already exists
16610
16611 Warning emitted if a named object referenced cannot be found
16612 (resolved) during method execution.
16613
16614
16615
16616
16617
16618 ------------------------------------------
16619 Summary of changes for this label: 9_29_00
16620
16621 New table initialization interfaces: AcpiInitializeSubsystem no
16622 longer has any parameters AcpiFindRootPointer - Find the RSDP (if
16623 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
16624 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
16625 AcpiLoadTables
16626
16627 Note: These interface changes require changes to all existing OSDs
16628
16629 The PCI_Config default address space handler is always installed
16630 at the root namespace object.
16631
16632 -------------------------------------------
16633 Summary of changes for this label: 09_15_00
16634
16635 The new initialization architecture is implemented.  New
16636 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
16637 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
16638
16639 (Namespace is automatically loaded when a table is loaded)
16640
16641 The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
16642 52 bytes to 32 bytes.  There is usually one of these for every
16643 namespace object, so the memory savings is significant.
16644
16645 Implemented just-in-time evaluation of the CreateField operators.
16646
16647 Bug fixes for IA-64 support have been integrated.
16648
16649 Additional code review comments have been implemented
16650
16651 The so-called "third pass parse" has been replaced by a final walk
16652 through the namespace to initialize all operation regions (address
16653 spaces) and fields that have not yet been initialized during the
16654 execution of the various _INI and REG methods.
16655
16656 New file - namespace/nsinit.c
16657
16658 -------------------------------------------
16659 Summary of changes for this label: 09_01_00
16660
16661 Namespace manager data structures have been reworked to change the
16662 primary  object from a table to a single object.  This has
16663 resulted in dynamic memory  savings of 3X within the namespace and
16664 2X overall in the ACPI CA subsystem.
16665
16666 Fixed problem where the call to AcpiEvFindPciRootBuses was
16667 inadvertently left  commented out.
16668
16669 Reduced the warning count when generating the source with the GCC
16670 compiler.
16671
16672 Revision numbers added to each module header showing the
16673 SourceSafe version of the file.  Please refer to this version
16674 number when giving us feedback or comments on individual modules.
16675
16676 The main object types within the subsystem have been renamed to
16677 clarify their  purpose:
16678
16679 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
16680 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
16681 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
16682
16683 NOTE: no changes to the initialization sequence are included in
16684 this label.
16685
16686 -------------------------------------------
16687 Summary of changes for this label: 08_23_00
16688
16689 Fixed problem where TerminateControlMethod was being called
16690 multiple times per  method
16691
16692 Fixed debugger problem where single stepping caused a semaphore to
16693 be  oversignalled
16694
16695 Improved performance through additional parse object caching -
16696 added  ACPI_EXTENDED_OP type
16697
16698 -------------------------------------------
16699 Summary of changes for this label: 08_10_00
16700
16701 Parser/Interpreter integration:  Eliminated the creation of
16702 complete parse trees  for ACPI tables and control methods.
16703 Instead, parse subtrees are created and  then deleted as soon as
16704 they are processed (Either entered into the namespace or  executed
16705 by the interpreter).  This reduces the use of dynamic kernel
16706 memory  significantly. (about 10X)
16707
16708 Exception codes broken into classes and renumbered.  Be sure to
16709 recompile all  code that includes acexcep.h.  Hopefully we won't
16710 have to renumber the codes  again now that they are split into
16711 classes (environment, programmer, AML code,  ACPI table, and
16712 internal).
16713
16714 Fixed some additional alignment issues in the Resource Manager
16715 subcomponent
16716
16717 Implemented semaphore tracking in the AcpiExec utility, and fixed
16718 several places  where mutexes/semaphores were being unlocked
16719 without a corresponding lock  operation.  There are no known
16720 semaphore or mutex "leaks" at this time.
16721
16722 Fixed the case where an ASL Return operator is used to return an
16723 unnamed  package.
16724
16725 -------------------------------------------
16726 Summary of changes for this label: 07_28_00
16727
16728 Fixed a problem with the way addresses were calculated in
16729 AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
16730 manifested itself when a Field was  created with WordAccess or
16731 DwordAccess, but the field unit defined within the  Field was less
16732
16733 than a Word or Dword.
16734
16735 Fixed a problem in AmlDumpOperands() module's loop to pull
16736 operands off of the  operand stack to display information. The
16737 problem manifested itself as a TLB  error on 64-bit systems when
16738 accessing an operand stack with two or more  operands.
16739
16740 Fixed a problem with the PCI configuration space handlers where
16741 context was  getting confused between accesses. This required a
16742 change to the generic address  space handler and address space
16743 setup definitions. Handlers now get both a  global handler context
16744 (this is the one passed in by the user when executing
16745 AcpiInstallAddressSpaceHandler() and a specific region context
16746 that is unique to  each region (For example, the _ADR, _SEG and
16747 _BBN values associated with a  specific region). The generic
16748 function definitions have changed to the  following:
16749
16750 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
16751 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
16752 *HandlerContext, // This used to be void *Context void
16753 *RegionContext); // This is an additional parameter
16754
16755 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
16756 RegionHandle, UINT32 Function, void *HandlerContext,  void
16757 **RegionContext); // This used to be **ReturnContext
16758
16759 -------------------------------------------
16760 Summary of changes for this label: 07_21_00
16761
16762 Major file consolidation and rename.  All files within the
16763 interpreter have been  renamed as well as most header files.  This
16764 was done to prevent collisions with  existing files in the host
16765 OSs -- filenames such as "config.h" and "global.h"  seem to be
16766 quite common.  The VC project files have been updated.  All
16767 makefiles  will require modification.
16768
16769 The parser/interpreter integration continues in Phase 5 with the
16770 implementation  of a complete 2-pass parse (the AML is parsed
16771 twice) for each table;  This  avoids the construction of a huge
16772 parse tree and therefore reduces the amount of  dynamic memory
16773 required by the subsystem.  Greater use of the parse object cache
16774 means that performance is unaffected.
16775
16776 Many comments from the two code reviews have been rolled in.
16777
16778 The 64-bit alignment support is complete.
16779
16780 -------------------------------------------
16781 Summary of changes for this label: 06_30_00
16782
16783 With a nod and a tip of the hat to the technology of yesteryear,
16784 we've added  support in the source code for 80 column output
16785 devices.  The code is now mostly  constrained to 80 columns or
16786 less to support environments and editors that 1)  cannot display
16787 or print more than 80 characters on a single line, and 2) cannot
16788 disable line wrapping.
16789
16790 A major restructuring of the namespace data structure has been
16791 completed.  The  result is 1) cleaner and more
16792 understandable/maintainable code, and 2) a  significant reduction
16793 in the dynamic memory requirement for each named ACPI  object
16794 (almost half).
16795
16796 -------------------------------------------
16797 Summary of changes for this label: 06_23_00
16798
16799 Linux support has been added.  In order to obtain approval to get
16800 the ACPI CA  subsystem into the Linux kernel, we've had to make
16801 quite a few changes to the  base subsystem that will affect all
16802 users (all the changes are generic and OS- independent).  The
16803 effects of these global changes have been somewhat far  reaching.
16804 Files have been merged and/or renamed and interfaces have been
16805 renamed.   The major changes are described below.
16806
16807 Osd* interfaces renamed to AcpiOs* to eliminate namespace
16808 pollution/confusion  within our target kernels.  All OSD
16809 interfaces must be modified to match the new  naming convention.
16810
16811 Files merged across the subsystem.  A number of the smaller source
16812 and header  files have been merged to reduce the file count and
16813 increase the density of the  existing files.  There are too many
16814 to list here.  In general, makefiles that  call out individual
16815 files will require rebuilding.
16816
16817 Interpreter files renamed.  All interpreter files now have the
16818 prefix am*  instead of ie* and is*.
16819
16820 Header files renamed:  The acapi.h file is now acpixf.h.  The
16821 acpiosd.h file is  now acpiosxf.h.  We are removing references to
16822 the acronym "API" since it is  somewhat windowsy. The new name is
16823 "external interface" or xface or xf in the  filenames.j
16824
16825
16826 All manifest constants have been forced to upper case (some were
16827 mixed case.)   Also, the string "ACPI_" has been prepended to many
16828 (not all) of the constants,  typedefs, and structs.
16829
16830 The globals "DebugLevel" and "DebugLayer" have been renamed
16831 "AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
16832
16833 All other globals within the subsystem are now prefixed with
16834 "AcpiGbl_" Internal procedures within the subsystem are now
16835 prefixed with "Acpi" (with only  a few exceptions).  The original
16836 two-letter abbreviation for the subcomponent  remains after "Acpi"
16837 - for example, CmCallocate became AcpiCmCallocate.
16838
16839 Added a source code translation/conversion utility.  Used to
16840 generate the Linux  source code, it can be modified to generate
16841 other types of source as well. Can  also be used to cleanup
16842 existing source by removing extraneous spaces and blank  lines.
16843 Found in tools/acpisrc/*
16844
16845 OsdUnMapMemory was renamed to OsdUnmapMemory and then
16846 AcpiOsUnmapMemory.  (UnMap  became Unmap).
16847
16848 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
16849 When set to  one, this indicates that the caller wants to use the
16850
16851 semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
16852 both types.  However, implementers of this  call may want to use
16853 different OS primitives depending on the type of semaphore
16854 requested.  For example, some operating systems provide separate
16855
16856 "mutex" and  "semaphore" interfaces - where the mutex interface is
16857 much faster because it  doesn't have all the overhead of a full
16858 semaphore implementation.
16859
16860 Fixed a deadlock problem where a method that accesses the PCI
16861 address space can  block forever if it is the first access to the
16862 space.
16863
16864 -------------------------------------------
16865 Summary of changes for this label: 06_02_00
16866
16867 Support for environments that cannot handle unaligned data
16868 accesses (e.g.  firmware and OS environments devoid of alignment
16869 handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
16870 been added (via configurable macros) in  these three areas: -
16871 Transfer of data from the raw AML byte stream is done via byte
16872 moves instead of    word/dword/qword moves. - External objects are
16873 aligned within the user buffer, including package   elements (sub-
16874 objects). - Conversion of name strings to UINT32 Acpi Names is now
16875 done byte-wise.
16876
16877 The Store operator was modified to mimic Microsoft's
16878 implementation when storing  to a Buffer Field.
16879
16880 Added a check of the BM_STS bit before entering C3.
16881
16882 The methods subdirectory has been obsoleted and removed.  A new
16883 file, cmeval.c  subsumes the functionality.
16884
16885 A 16-bit (DOS) version of AcpiExec has been developed.  The
16886 makefile is under  the acpiexec directory.