Sync usage with man page.
[netbsd-mini2440.git] / sys / external / intel-public / acpica / dist / changes.txt
blobd3110e49154fb30a16ef0c39dd0c9bd6126edf29
1 ----------------------------------------
2 30 July 2009. Summary of changes for version 20090730:
4 This release is available at www.acpica.org/downloads
6 The ACPI 4.0 implementation for ACPICA is complete with this release.
8 1) ACPI CA Core Subsystem:
10 ACPI 4.0: Added header file support for all new and changed ACPI tables. 
11 Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new 
12 for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, BERT, 
13 EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. There 
14 have been some ACPI 4.0 changes to other existing tables. Split the large 
15 actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
17 ACPI 4.0: Implemented predefined name validation for all new names. There are 
18 31 new names in ACPI 4.0. The predefined validation module was split into two 
19 files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
21 Implemented support for so-called "module-level executable code". This is 
22 executable AML code that exists outside of any control method and is intended 
23 to be executed at table load time. Although illegal since ACPI 2.0, this type 
24 of code still exists and is apparently still being created. Blocks of this 
25 code are now detected and executed as intended. Currently, the code blocks 
26 must exist under either an If, Else, or While construct; these are the 
27 typical cases seen in the field. ACPICA BZ 762. Lin Ming.
29 Implemented an automatic dynamic repair for predefined names that return 
30 nested Package objects. This applies to predefined names that are defined to 
31 return a variable-length Package of sub-packages. If the number of sub-
32 packages is one, BIOS code is occasionally seen that creates a simple single 
33 package with no sub-packages. This code attempts to fix the problem by 
34 wrapping a new package object around the existing package. These methods can 
35 be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ 
36 790.
38 Fixed a regression introduced in 20090625 for the AcpiGetDevices interface. 
39 The _HID/_CID matching was broken and no longer matched IDs correctly. ACPICA 
40 BZ 793.
42 Fixed a problem with AcpiReset where the reset would silently fail if the 
43 register was one of the protected I/O ports. AcpiReset now bypasses the port 
44 validation mechanism. This may eventually be driven into the AcpiRead/Write 
45 interfaces.
47 Fixed a regression related to the recent update of the AcpiRead/Write 
48 interfaces. A sleep/suspend could fail if the optional PM2 Control register 
49 does not exist during an attempt to write the Bus Master Arbitration bit. 
50 (However, some hosts already delete the code that writes this bit, and the 
51 code may in fact be obsolete at this date.) ACPICA BZ 799.
53 Fixed a problem where AcpiTerminate could fault if inadvertently called twice 
54 in succession. ACPICA BZ 795.
56 Example Code and Data Size: These are the sizes for the OS-independent 
57 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
58 debug version of the code includes the debug output trace mechanism and has a 
59 much larger code and data size.
61   Previous Release:
62     Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
63     Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
64   Current Release:
65     Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
66     Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
68 2) iASL Compiler/Disassembler and Tools:
70 ACPI 4.0: Implemented disassembler support for all new ACPI tables and 
71 changes to existing tables. ACPICA BZ 775.
73 ----------------------------------------
74 25 June 2009. Summary of changes for version 20090625:
76 This release is available at www.acpica.org/downloads
78 The ACPI 4.0 Specification was released on June 16 and is available at 
79 www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 
80 continue for the next few releases.
82 1) ACPI CA Core Subsystem:
84 ACPI 4.0: Implemented interpreter support for the IPMI operation region 
85 address space. Includes support for bi-directional data buffers and an IPMI 
86 address space handler (to be installed by an IPMI device driver.) ACPICA BZ 
87 773. Lin Ming.
89 ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes 
90 support in both the header files and the disassembler.
92 Completed a major update for the AcpiGetObjectInfo external interface. 
93 Changes include:
94  - Support for variable, unlimited length HID, UID, and CID strings.
95  - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, etc.)
96  - Call the _SxW power methods on behalf of a device object.
97  - Determine if a device is a PCI root bridge.
98  - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
99 These changes will require an update to all callers of this interface. See 
100 the updated ACPICA Programmer Reference for details. One new source file has 
101 been added - utilities/utids.c. ACPICA BZ 368, 780.
103 Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 
104 transfers. The Value parameter has been extended from 32 bits to 64 bits in 
105 order to support new ACPI 4.0 tables. These changes will require an update to 
106 all callers of these interfaces. See the ACPICA Programmer Reference for 
107 details. ACPICA BZ 768.
109 Fixed several problems with AcpiAttachData. The handler was not invoked when 
110 the host node was deleted. The data sub-object was not automatically deleted 
111 when the host node was deleted. The interface to the handler had an unused 
112 parameter, this was removed. ACPICA BZ 778.
114 Enhanced the function that dumps ACPI table headers. All non-printable 
115 characters in the string fields are now replaced with '?' (Signature, OemId, 
116 OemTableId, and CompilerId.) ACPI tables with non-printable characters in 
117 these fields are occasionally seen in the field. ACPICA BZ 788.
119 Fixed a problem with predefined method repair code where the code that 
120 attempts to repair/convert an object of incorrect type is only executed on 
121 the first time the predefined method is called. The mechanism that disables 
122 warnings on subsequent calls was interfering with the repair mechanism. 
123 ACPICA BZ 781.
125 Fixed a possible memory leak in the predefined validation/repair code when a 
126 buffer is automatically converted to an expected string object.
128 Removed obsolete 16-bit files from the distribution and from the current git 
129 tree head. ACPICA BZ 776.
131 Example Code and Data Size: These are the sizes for the OS-independent 
132 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
133 debug version of the code includes the debug output trace mechanism and has a 
134 much larger code and data size.
136   Previous Release:
137     Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
138     Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
139   Current Release:
140     Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
141     Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
143 2) iASL Compiler/Disassembler and Tools:
145 ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 
146 operation region keyword. ACPICA BZ 771, 772. Lin Ming.
148 ACPI 4.0: iASL - implemented compile-time validation support for all new 
149 predefined names and control methods (31 total). ACPICA BZ 769.
151 ----------------------------------------
152 21 May 2009. Summary of changes for version 20090521:
154 This release is available at www.acpica.org/downloads
156 1) ACPI CA Core Subsystem:
158 Disabled the preservation of the SCI enable bit in the PM1 control register. 
159 The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be 
160 a "preserved" bit - "OSPM always preserves this bit position", section 
161 4.7.3.2.1. However, some machines fail if this bit is in fact preserved 
162 because the bit needs to be explicitly set by the OS as a workaround. No 
163 machines fail if the bit is not preserved. Therefore, ACPICA no longer 
164 attempts to preserve this bit.
166 Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 
167 incorrectly formed _PRT package could cause a fault. Added validation to 
168 ensure that each package element is actually a sub-package.
170 Implemented a new interface to install or override a single control method, 
171 AcpiInstallMethod. This interface is useful when debugging in order to repair 
172 an existing method or to install a missing method without having to override 
173 the entire ACPI table. See the ACPICA Programmer Reference for use and 
174 examples. Lin Ming, Bob Moore.
176 Fixed several reference count issues with the DdbHandle object that is 
177 created from a Load or LoadTable operator. Prevent premature deletion of the 
178 object. Also, mark the object as invalid once the table has been unloaded. 
179 This is needed because the handle itself may not be deleted after the table 
180 unload, depending on whether it has been stored in a named object by the 
181 caller. Lin Ming.
183 Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 
184 mutexes of the same sync level are acquired but then not released in strict 
185 opposite order, the internally maintained Current Sync Level becomes confused 
186 and can cause subsequent execution errors. ACPICA BZ 471.
188 Changed the allowable release order for ASL mutex objects. The ACPI 4.0 
189 specification has been changed to make the SyncLevel for mutex objects more 
190 useful. When releasing a mutex, the SyncLevel of the mutex must now be the 
191 same as the current sync level. This makes more sense than the previous rule 
192 (SyncLevel less than or equal). This change updates the code to match the 
193 specification.
195 Fixed a problem with the local version of the AcpiOsPurgeCache function. The 
196 (local) cache must be locked during all cache object deletions. Andrew 
197 Baumann.
199 Updated the Load operator to use operation region interfaces. This replaces 
200 direct memory mapping with region access calls. Now, all region accesses go 
201 through the installed region handler as they should.
203 Simplified and optimized the NsGetNextNode function. Reduced parameter count 
204 and reduced code for this frequently used function.
206 Example Code and Data Size: These are the sizes for the OS-independent 
207 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
208 debug version of the code includes the debug output trace mechanism and has a 
209 much larger code and data size.
211   Previous Release:
212     Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
213     Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
214   Current Release:
215     Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
216     Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
218 2) iASL Compiler/Disassembler and Tools:
220 Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems 
221 with sub-table disassembly and handling invalid sub-tables. Attempt recovery 
222 after an invalid sub-table ID.
224 ----------------------------------------
225 22 April 2009. Summary of changes for version 20090422:
227 This release is available at www.acpica.org/downloads
229 1) ACPI CA Core Subsystem:
231 Fixed a compatibility issue with the recently released I/O port protection 
232 mechanism. For windows compatibility, 1) On a port protection violation, 
233 simply ignore the request and do not return an exception (allow the control 
234 method to continue execution.) 2) If only part of the request overlaps a 
235 protected port, read/write the individual ports that are not protected. Linux 
236 BZ 13036. Lin Ming
238 Enhanced the execution of the ASL/AML BreakPoint operator so that it actually 
239 breaks into the AML debugger if the debugger is present. This matches the 
240 ACPI-defined behavior.
242 Fixed several possible warnings related to the use of the configurable 
243 ACPI_THREAD_ID. This type can now be configured as either an integer or a 
244 pointer with no warnings. Also fixes several warnings in printf-like 
245 statements for the 64-bit build when the type is configured as a pointer. 
246 ACPICA BZ 766, 767.
248 Fixed a number of possible warnings when compiling with gcc 4+ (depending on 
249 warning options.) Examples include printf formats, aliasing, unused globals, 
250 missing prototypes, missing switch default statements, use of non-ANSI 
251 library functions, use of non-ANSI constructs. See generate/unix/Makefile for 
252 a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
254 Example Code and Data Size: These are the sizes for the OS-independent 
255 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
256 debug version of the code includes the debug output trace mechanism and has a 
257 much larger code and data size.
259   Previous Release:
260     Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
261     Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
262   Current Release:
263     Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
264     Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
266 2) iASL Compiler/Disassembler and Tools:
268 iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on 
269 the 64-bit build.
271 iASL: Fixed a problem where the Unix/Linux versions of the compiler could not 
272 correctly digest Windows/DOS formatted files (with CR/LF).
274 iASL: Added a new option for "quiet mode" (-va) that produces only the 
275 compilation summary, not individual errors and warnings. Useful for large 
276 batch compilations.
278 AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex 
279 timeout that can be used to detect hang conditions during execution of AML 
280 code (includes both internal semaphores and AML-defined mutexes and events.)
282 Added new makefiles for the generation of acpica in a generic unix-like 
283 environment. These makefiles are intended to generate the acpica tools and 
284 utilities from the original acpica git source tree structure.
286 Test Suites: Updated and cleaned up the documentation files. Updated the 
287 copyrights to 2009, affecting all source files. Use the new version of iASL 
288 with quiet mode. Increased the number of available semaphores in the Windows 
289 OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added 
290 an alternate implementation of the semaphore timeout to allow aslts to 
291 execute fully on Cygwin.
293 ----------------------------------------
294 20 March 2009. Summary of changes for version 20090320:
296 1) ACPI CA Core Subsystem:
298 Fixed a possible race condition between AcpiWalkNamespace and dynamic table 
299 unloads. Added a reader/writer locking mechanism to allow multiple concurrent 
300 namespace walks (readers), but block a dynamic table unload until it can gain 
301 exclusive write access to the namespace. This fixes a problem where a table 
302 unload could (possibly catastrophically) delete the portion of the namespace 
303 that is currently being examined by a walk. Adds a new file, utlock.c, that 
304 implements the reader/writer lock mechanism. ACPICA BZ 749.
306 Fixed a regression introduced in version 20090220 where a change to the FADT 
307 handling could cause the ACPICA subsystem to access non-existent I/O ports.
309 Modified the handling of FADT register and table (FACS/DSDT) addresses. The 
310 FADT can contain both 32-bit and 64-bit versions of these addresses. 
311 Previously, the 64-bit versions were favored, meaning that if both 32 and 64 
312 versions were valid, but not equal, the 64-bit version was used. This was 
313 found to cause some machines to fail. Now, in this case, the 32-bit version 
314 is used instead. This now matches the Windows behavior.
316 Implemented a new mechanism to protect certain I/O ports. Provides Microsoft 
317 compatibility and protects the standard PC I/O ports from access via AML 
318 code. Adds a new file, hwvalid.c
320 Fixed a possible extraneous warning message from the FADT support. The 
321 message warns of a 32/64 length mismatch between the legacy and GAS 
322 definitions for a register.
324 Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is 
325 made obsolete by the port protection mechanism above. It was previously used 
326 to validate the entire address range of an operation region, which could be 
327 incorrect if the range included illegal ports, but fields within the 
328 operation region did not actually access those ports. Validation is now 
329 performed on a per-field basis instead of the entire region.
331 Modified the handling of the PM1 Status Register ignored bit (bit 11.) 
332 Ignored bits must be "preserved" according to the ACPI spec. Usually, this 
333 means a read/modify/write when writing to the register. However, for status 
334 registers, writing a one means clear the event. Writing a zero means preserve 
335 the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec, 
336 and the ACPICA code now simply always writes a zero to the ignored bit.
338 Modified the handling of ignored bits for the PM1 A/B Control Registers. As 
339 per the ACPI specification, for the control registers, preserve 
340 (read/modify/write) all bits that are defined as either reserved or ignored.
342 Updated the handling of write-only bits in the PM1 A/B Control Registers. 
343 When reading the register, zero the write-only bits as per the ACPI spec. 
344 ACPICA BZ 443. Lin Ming.
346 Removed "Linux" from the list of supported _OSI strings. Linux no longer 
347 wants to reply true to this request. The Windows strings are the only paths 
348 through the AML that are tested and known to work properly.
350   Previous Release:
351     Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
352     Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
353   Current Release:
354     Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
355     Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
357 2) iASL Compiler/Disassembler and Tools:
359 Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and 
360 aetables.c
362 ----------------------------------------
363 20 February 2009. Summary of changes for version 20090220:
365 1) ACPI CA Core Subsystem:
367 Optimized the ACPI register locking. Removed locking for reads from the ACPI 
368 bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is 
369 not required when reading the single-bit registers. The 
370 AcpiGetRegisterUnlocked function is no longer needed and has been removed. 
371 This will improve performance for reads on these registers. ACPICA BZ 760.
373 Fixed the parameter validation for AcpiRead/Write. Now return 
374 AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if 
375 the register has an address of zero. Previously, these cases simply returned 
376 AE_OK. For optional registers such as PM1B status/enable/control, the caller 
377 should check for a valid register address before calling. ACPICA BZ 748.
379 Renamed the external ACPI bit register access functions. Renamed 
380 AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 
381 functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister. 
382 Also, restructured the code for these functions by simplifying the code path 
383 and condensing duplicate code to reduce code size.
385 Added new functions to transparently handle the possibly split PM1 A/B 
386 registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions 
387 now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ 
388 746.
390 Added a function to handle the PM1 control registers, AcpiHwWritePm1Control. 
391 This function writes both of the PM1 control registers (A/B). These registers 
392 are different than the PM1 A/B status and enable registers in that different 
393 values can be written to the A/B registers. Most notably, the SLP_TYP bits 
394 can be different, as per the values returned from the _Sx predefined methods.
396 Removed an extra register write within AcpiHwClearAcpiStatus. This function 
397 was writing an optional PM1B status register twice. The existing call to the 
398 low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B 
399 register. ACPICA BZ 751.
401 Split out the PM1 Status registers from the FADT. Added new globals for these 
402 registers (A/B), similar to the way the PM1 Enable registers are handled. 
403 Instead of overloading the FADT Event Register blocks. This makes the code 
404 clearer and less prone to error.
406 Fixed the warning message for when the platform contains too many ACPI tables 
407 for the default size of the global root table data structure. The calculation 
408 for the truncation value was incorrect.
410 Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 
411 obsolete macro, since it is now a simple reference to ->common.type. There 
412 were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
414 Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 
415 TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 
416 simply SLEEP_TYPE. ACPICA BZ 754.
418 Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 
419 function is only needed on 64-bit host operating systems and is thus not 
420 included for 32-bit hosts.
422 Debug output: print the input and result for invocations of the _OSI reserved 
423 control method via the ACPI_LV_INFO debug level. Also, reduced some of the 
424 verbosity of this debug level. Len Brown.
426 Example Code and Data Size: These are the sizes for the OS-independent 
427 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
428 debug version of the code includes the debug output trace mechanism and has a 
429 much larger code and data size.
431   Previous Release:
432     Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
433     Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
434   Current Release:
435     Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
436     Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
438 2) iASL Compiler/Disassembler and Tools:
440 Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 
441 various legal performance profiles.
443 ----------------------------------------
444 23 January 2009. Summary of changes for version 20090123:
446 1) ACPI CA Core Subsystem:
448 Added the 2009 copyright to all module headers and signons. This affects 
449 virtually every file in the ACPICA core subsystem, the iASL compiler, and 
450 the tools/utilities.
452 Implemented a change to allow the host to override any ACPI table, including 
453 dynamically loaded tables. Previously, only the DSDT could be replaced by the 
454 host. With this change, the AcpiOsTableOverride interface is called for each 
455 table found in the RSDT/XSDT during ACPICA initialization, and also whenever 
456 a table is dynamically loaded via the AML Load operator.
458 Updated FADT flag definitions, especially the Boot Architecture flags.
460 Debugger: For the Find command, automatically pad the input ACPI name with 
461 underscores if the name is shorter than 4 characters. This enables a match 
462 with the actual namespace entry which is itself padded with underscores.
464 Example Code and Data Size: These are the sizes for the OS-independent 
465 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
466 debug version of the code includes the debug output trace mechanism and has a 
467 much larger code and data size.
469   Previous Release:
470     Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
471     Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
472   Current Release:
473     Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
474     Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
476 2) iASL Compiler/Disassembler and Tools:
478 Fix build error under Bison-2.4.
480 Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture 
481 flags. Now decode all flags, regardless of the FADT version. Flag output 
482 includes the FADT version which first defined each flag.
484 The iASL -g option now dumps the RSDT to a file (in addition to the FADT and 
485 DSDT). Windows only.
487 ----------------------------------------
488 04 December 2008. Summary of changes for version 20081204:
490 1) ACPI CA Core Subsystem:
492 The ACPICA Programmer Reference has been completely updated and revamped for 
493 this release. This includes updates to the external interfaces, OSL 
494 interfaces, the overview sections, and the debugger reference.
496 Several new ACPICA interfaces have been implemented and documented in the 
497 programmer reference:
498 AcpiReset - Writes the reset value to the FADT-defined reset register.
499 AcpiDisableAllGpes - Disable all available GPEs.
500 AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
501 AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
502 AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
503 AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
504 AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
506 Most of the public ACPI hardware-related interfaces have been moved to a new 
507 file, components/hardware/hwxface.c
509 Enhanced the FADT parsing and low-level ACPI register access: The ACPI 
510 register lengths within the FADT are now used, and the low level ACPI 
511 register access no longer hardcodes the ACPI register lengths. Given that 
512 there may be some risk in actually trusting the FADT register lengths, a run-
513 time option was added to fall back to the default hardcoded lengths if the 
514 FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 
515 option is set to true for now, and a warning is issued if a suspicious FADT 
516 register length is overridden with the default value.
518 Fixed a reference count issue in NsRepairObject. This problem was introduced 
519 in version 20081031 as part of a fix to repair Buffer objects within 
520 Packages. Lin Ming.
522 Added semaphore support to the Linux/Unix application OS-services layer 
523 (OSL). ACPICA BZ 448. Lin Ming.
525 Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will 
526 be implemented in the OSL, or will binary semaphores be used instead.
528 Example Code and Data Size: These are the sizes for the OS-independent 
529 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
530 debug version of the code includes the debug output trace mechanism and has a 
531 much larger code and data size.
533   Previous Release:
534     Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
535     Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
536   Current Release:
537     Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
538     Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
540 2) iASL Compiler/Disassembler and Tools:
542 iASL: Completed the '-e' option to include additional ACPI tables in order to 
543 aid with disassembly and External statement generation. ACPICA BZ 742. Lin 
544 Ming.
546 iASL: Removed the "named object in while loop" error. The compiler cannot 
547 determine how many times a loop will execute. ACPICA BZ 730.
549 Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA 
550 BZ 743.
552 Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG).
554 ----------------------------------------
555 31 October 2008. Summary of changes for version 20081031:
557 1) ACPI CA Core Subsystem:
559 Restructured the ACPICA header files into public/private. acpi.h now includes 
560 only the "public" acpica headers. All other acpica headers are "private" and 
561 should not be included by acpica users. One new file, accommon.h is used to 
562 include the commonly used private headers for acpica code generation. Future 
563 plans include moving all private headers to a new subdirectory.
565 Implemented an automatic Buffer->String return value conversion for 
566 predefined ACPI methods. For these methods (such as _BIF), added automatic 
567 conversion for return objects that are required to be a String, but a Buffer 
568 was found instead. This can happen when reading string battery data from an 
569 operation region, because it used to be difficult to convert the data from 
570 buffer to string from within the ASL. Ensures that the host OS is provided 
571 with a valid null-terminated string. Linux BZ 11822.
573 Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector 
574 into two: one for the 32-bit vector, another for the 64-bit vector. This is 
575 required because the host OS must setup the wake much differently for each 
576 vector (real vs. protected mode, etc.) and the interface itself should not be 
577 deciding which vector to use. Also, eliminated the GetFirmwareWakingVector 
578 interface, as it served no purpose (only the firmware reads the vector, OS 
579 only writes the vector.) ACPICA BZ 731.
581 Implemented a mechanism to escape infinite AML While() loops. Added a loop 
582 counter to force exit from AML While loops if the count becomes too large. 
583 This can occur in poorly written AML when the hardware does not respond 
584 within a while loop and the loop does not implement a timeout. The maximum 
585 loop count is configurable. A new exception code is returned when a loop is 
586 broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
588 Optimized the execution of AML While loops. Previously, a control state 
589 object was allocated and freed for each execution of the loop. The 
590 optimization is to simply reuse the control state for each iteration. This 
591 speeds up the raw loop execution time by about 5%.
593 Enhanced the implicit return mechanism. For Windows compatibility, return an 
594 implicit integer of value zero for methods that contain no executable code. 
595 Such methods are seen in the field as stubs (presumably), and can cause 
596 drivers to fail if they expect a return value. Lin Ming.
598 Allow multiple backslashes as root prefixes in namepaths. In a fully 
599 qualified namepath, allow multiple backslash prefixes. This can happen (and 
600 is seen in the field) because of the use of a double-backslash in strings 
601 (since backslash is the escape character) causing confusion. ACPICA BZ 739 
602 Lin Ming.
604 Emit a warning if two different FACS or DSDT tables are discovered in the 
605 FADT. Checks if there are two valid but different addresses for the FACS and 
606 DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
608 Consolidated the method argument count validation code. Merged the code that 
609 validates control method argument counts into the predefined validation 
610 module. Eliminates possible multiple warnings for incorrect argument counts.
612 Implemented ACPICA example code. Includes code for ACPICA initialization, 
613 handler installation, and calling a control method. Available at 
614 source/tools/examples.
616 Added a global pointer for FACS table to simplify internal FACS access. Use 
617 the global pointer instead of using AcpiGetTableByIndex for each FACS access. 
618 This simplifies the code for the Global Lock and the Firmware Waking 
619 Vector(s).
621 Example Code and Data Size: These are the sizes for the OS-independent 
622 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
623 debug version of the code includes the debug output trace mechanism and has a 
624 much larger code and data size.
626   Previous Release:
627     Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
628     Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
629   Current Release:
630     Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
631     Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
633 2) iASL Compiler/Disassembler and Tools:
635 iASL: Improved disassembly of external method calls. Added the -e option to 
636 allow the inclusion of additional ACPI tables to help with the disassembly of 
637 method invocations and the generation of external declarations during the 
638 disassembly. Certain external method invocations cannot be disassembled 
639 properly without the actual declaration of the method. Use the -e option to 
640 include the table where the external method(s) are actually declared. Most 
641 useful for disassembling SSDTs that make method calls back to the master 
642 DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl -d 
643 -e dsdt.aml ssdt1.aml
645 iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 
646 problem where the use of an alias within a namepath would result in a not 
647 found error or cause the compiler to fault. Also now allows forward 
648 references from the Alias operator itself. ACPICA BZ 738.
650 ----------------------------------------
651 26 September 2008. Summary of changes for version 20080926:
653 1) ACPI CA Core Subsystem:
655 Designed and implemented a mechanism to validate predefined ACPI methods and 
656 objects. This code validates the predefined ACPI objects (objects whose names 
657 start with underscore) that appear in the namespace, at the time they are 
658 evaluated. The argument count and the type of the returned object are 
659 validated against the ACPI specification. The purpose of this validation is 
660 to detect problems with the BIOS-implemented predefined ACPI objects before 
661 the results are returned to the ACPI-related drivers. Future enhancements may 
662 include actual repair of incorrect return objects where possible. Two new 
663 files are nspredef.c and acpredef.h.
665 Fixed a fault in the AML parser if a memory allocation fails during the Op 
666 completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
668 Fixed an issue with implicit return compatibility. This change improves the 
669 implicit return mechanism to be more compatible with the MS interpreter. Lin 
670 Ming, ACPICA BZ 349.
672 Implemented support for zero-length buffer-to-string conversions. Allow zero 
673 length strings during interpreter buffer-to-string conversions. For example, 
674 during the ToDecimalString and ToHexString operators, as well as implicit 
675 conversions. Fiodor Suietov, ACPICA BZ 585.
677 Fixed two possible memory leaks in the error exit paths of 
678 AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are 
679 similar in that they use a stack of state objects in order to eliminate 
680 recursion. The stack must be fully unwound and deallocated if an error 
681 occurs. Lin Ming. ACPICA BZ 383.
683 Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global 
684 ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 
685 Moore ACPICA BZ 442.
687 Removed the obsolete version number in module headers. Removed the 
688 "$Revision" number that appeared in each module header. This version number 
689 was useful under SourceSafe and CVS, but has no meaning under git. It is not 
690 only incorrect, it could also be misleading.
692 Example Code and Data Size: These are the sizes for the OS-independent 
693 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
694 debug version of the code includes the debug output trace mechanism and has a 
695 much larger code and data size.
697   Previous Release:
698     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
699     Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
700   Current Release:
701     Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
702     Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
704 ----------------------------------------
705 29 August 2008. Summary of changes for version 20080829:
707 1) ACPI CA Core Subsystem:
709 Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 
710 Reference. Changes include the elimination of cheating on the Object field 
711 for the DdbHandle subtype, addition of a reference class field to 
712 differentiate the various reference types (instead of an AML opcode), and the 
713 cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
715 Reduce an error to a warning for an incorrect method argument count. 
716 Previously aborted with an error if too few arguments were passed to a 
717 control method via the external ACPICA interface. Now issue a warning instead 
718 and continue. Handles the case where the method inadvertently declares too 
719 many arguments, but does not actually use the extra ones. Applies mainly to 
720 the predefined methods. Lin Ming. Linux BZ 11032.
722 Disallow the evaluation of named object types with no intrinsic value. Return 
723 AE_TYPE for objects that have no value and therefore evaluation is undefined: 
724 Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of 
725 these types were allowed, but an exception would be generated at some point 
726 during the evaluation. Now, the error is generated up front.
728 Fixed a possible memory leak in the AcpiNsGetExternalPathname function 
729 (nsnames.c). Fixes a leak in the error exit path.
731 Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug 
732 levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION 
733 interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 
734 ACPI_LV_EVENTS.
736 Removed obsolete and/or unused exception codes from the acexcep.h header. 
737 There is the possibility that certain device drivers may be affected if they 
738 use any of these exceptions.
740 The ACPICA documentation has been added to the public git source tree, under 
741 acpica/documents. Included are the ACPICA programmer reference, the iASL 
742 compiler reference, and the changes.txt release logfile.
744 Example Code and Data Size: These are the sizes for the OS-independent 
745 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
746 debug version of the code includes the debug output trace mechanism and has a 
747 much larger code and data size.
749   Previous Release:
750     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
751     Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
752   Current Release:
753     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
754     Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
756 2) iASL Compiler/Disassembler and Tools:
758 Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 
759 defines _SCP with 3 arguments. Previous versions defined it with only 1 
760 argument. iASL now allows both definitions.
762 iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero-
763 length subtables when disassembling ACPI tables. Also fixed a couple of 
764 errors where a full 16-bit table type field was not extracted from the input 
765 properly.
767 acpisrc: Improve comment counting mechanism for generating source code 
768 statistics. Count first and last lines of multi-line comments as whitespace, 
769 not comment lines. Handle Linux legal header in addition to standard acpica 
770 header.
772 ----------------------------------------
774 29 July 2008. Summary of changes for version 20080729:
776 This release is available at http://acpica.org/downloads
777 Direct git access via http://www.acpica.org/repos/acpica.git
779 1) ACPI CA Core Subsystem:
781 Fix a possible deadlock in the GPE dispatch. Remove call to 
782 AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt 
783 to acquire the GPE lock but can deadlock since the GPE lock is already held 
784 at dispatch time. This code was introduced in version 20060831 as a response 
785 to Linux BZ 6881 and has since been removed from Linux.
787 Add a function to dereference returned reference objects. Examines the return 
788 object from a call to AcpiEvaluateObject. Any Index or RefOf references are 
789 automatically dereferenced in an attempt to return something useful (these 
790 reference types cannot be converted into an external ACPI_OBJECT.) Provides 
791 MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
793 x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 
794 subtables for the MADT and one new subtable for the SRAT. Includes 
795 disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC 
796 Specification, June 2008.
798 Additional error checking for pathname utilities. Add error check after all 
799 calls to AcpiNsGetPathnameLength. Add status return from 
800 AcpiNsBuildExternalPath and check after all calls. Add parameter validation 
801 to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
803 Return status from the global init function AcpiUtGlobalInitialize. This is 
804 used by both the kernel subsystem and the utilities such as iASL compiler. 
805 The function could possibly fail when the caches are initialized. Yang Yi.
807 Add a function to decode reference object types to strings. Created for 
808 improved error messages. 
810 Improve object conversion error messages. Better error messages during object 
811 conversion from internal to the external ACPI_OBJECT. Used for external calls 
812 to AcpiEvaluateObject.
814 Example Code and Data Size: These are the sizes for the OS-independent 
815 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
816 debug version of the code includes the debug output trace mechanism and has a 
817 much larger code and data size.
819   Previous Release:
820     Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
821     Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
822   Current Release:
823     Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
824     Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
826 2) iASL Compiler/Disassembler and Tools:
828 Debugger: fix a possible hang when evaluating non-methods. Fixes a problem 
829 introduced in version 20080701. If the object being evaluated (via execute 
830 command) is not a method, the debugger can hang while trying to obtain non-
831 existent parameters.
833 iASL: relax error for using reserved "_T_x" identifiers. These names can 
834 appear in a disassembled ASL file if they were emitted by the original 
835 compiler. Instead of issuing an error or warning and forcing the user to 
836 manually change these names, issue a remark instead.
838 iASL: error if named object created in while loop. Emit an error if any named 
839 object is created within a While loop. If allowed, this code will generate a 
840 run-time error on the second iteration of the loop when an attempt is made to 
841 create the same named object twice. ACPICA bugzilla 730.
843 iASL: Support absolute pathnames for include files. Add support for absolute 
844 pathnames within the Include operator. previously, only relative pathnames 
845 were supported.
847 iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor. 
848 The ACPI spec requires one interrupt minimum. BZ 423
850 iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 
851 Handles the case for the Interrupt Resource Descriptor where
852 the ResourceSource argument is omitted but ResourceSourceIndex
853 is present. Now leave room for the Index. BZ 426
855 iASL: Prevent error message if CondRefOf target does not exist. Fixes cases 
856 where an error message is emitted if the target does not exist. BZ 516
858 iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 
859 (get ACPI tables on Windows). This was apparently broken in version 20070919.
861 AcpiXtract: Handle EOF while extracting data. Correctly handle the case where 
862 the EOF happens immediately after the last table in the input file. Print 
863 completion message. Previously, no message was displayed in this case.
865 ----------------------------------------
866 01 July 2008. Summary of changes for version 20080701:
868 This release is available at http://acpica.org/downloads
869 Direct git access via http://www.acpica.org/repos/acpica.git
871 0) Git source tree / acpica.org
873 Fixed a problem where a git-clone from http would not transfer the entire 
874 source tree.
876 1) ACPI CA Core Subsystem:
878 Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 
879 enable bit. Now performs a read-change-write of the enable register instead 
880 of simply writing out the cached enable mask. This will prevent inadvertent 
881 enabling of GPEs if a rogue GPE is received during initialization (before GPE 
882 handlers are installed.)
884 Implemented a copy for dynamically loaded tables. Previously, dynamically 
885 loaded tables were simply mapped - but on some machines this memory is 
886 corrupted after suspend. Now copy the table to a local buffer. For the 
887 OpRegion case, added checksum verify. Use the table length from the table 
888 header, not the region length. For the Buffer case, use the table length 
889 also. Dennis Noordsij, Bob Moore. BZ 10734
891 Fixed a problem where the same ACPI table could not be dynamically loaded and 
892 unloaded more than once. Without this change, a table cannot be loaded again 
893 once it has been loaded/unloaded one time. The current mechanism does not 
894 unregister a table upon an unload. During a load, if the same table is found, 
895 this no longer returns an exception. BZ 722
897 Fixed a problem where the wrong descriptor length was calculated for the 
898 EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag 
899 are calculated as 12 bytes long, but the actual length in the internal 
900 descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported 
901 by Linn Crosetto. BZ 728
903 Fixed a possible memory leak in the Unload operator. The DdbHandle returned 
904 by Load() did not have its reference count decremented during unload, leading 
905 to a memory leak. Lin Ming. BZ 727
907 Fixed a possible memory leak when deleting thermal/processor objects. Any 
908 associated notify handlers (and objects) were not being deleted. Fiodor 
909 Suietov. BZ 506
911 Fixed the ordering of the ASCII names in the global mutex table to match the 
912 actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only. 
913 Vegard Nossum. BZ 726
915 Enhanced the AcpiGetObjectInfo interface to return the number of required 
916 arguments if the object is a control method. Added this call to the debugger 
917 so the proper number of default arguments are passed to a method. This 
918 prevents a warning when executing methods from AcpiExec.
920 Added a check for an invalid handle in AcpiGetObjectInfo. Return 
921 AE_BAD_PARAMETER if input handle is invalid. BZ 474
923 Fixed an extraneous warning from exconfig.c on the 64-bit build.
925 Example Code and Data Size: These are the sizes for the OS-independent 
926 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
927 debug version of the code includes the debug output trace mechanism and has a 
928 much larger code and data size.
930   Previous Release:
931     Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
932     Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
933   Current Release:
934     Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
935     Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
937 2) iASL Compiler/Disassembler and Tools:
939 iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 
940 resource descriptor names.
942 iASL: Detect invalid ASCII characters in input (windows version). Removed the 
943 "-CF" flag from the flex compile, enables correct detection of non-ASCII 
944 characters in the input. BZ 441
946 iASL: Eliminate warning when result of LoadTable is not used. Eliminate the 
947 "result of operation not used" warning when the DDB handle returned from 
948 LoadTable is not used. The warning is not needed. BZ 590
950 AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to 
951 pass address of table to the AML. Added option to disable OpRegion simulation 
952 to allow creation of an OpRegion with a real address that was passed to _CFG. 
953 All of this allows testing of the Load and Unload operators from AcpiExec.
955 Debugger: update tables command for unloaded tables. Handle unloaded tables 
956 and use the standard table header output routine.
958 ----------------------------------------
959 09 June 2008. Summary of changes for version 20080609:
961 1) ACPI CA Core Subsystem:
963 Implemented a workaround for reversed _PRT entries. A significant number of 
964 BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 
965 change dynamically detects and repairs this problem. Provides compatibility 
966 with MS ACPI. BZ 6859
968 Simplified the internal ACPI hardware interfaces to eliminate the locking 
969 flag parameter from Register Read/Write. Added a new external interface, 
970 AcpiGetRegisterUnlocked.
972 Fixed a problem where the invocation of a GPE control method could hang. This 
973 was a regression introduced in 20080514. The new method argument count 
974 validation mechanism can enter an infinite loop when a GPE method is 
975 dispatched. Problem fixed by removing the obsolete code that passed GPE block 
976 information to the notify handler via the control method parameter pointer.
978 Fixed a problem where the _SST execution status was incorrectly returned to 
979 the caller of AcpiEnterSleepStatePrep. This was a regression introduced in 
980 20080514. _SST is optional and a NOT_FOUND exception should never be 
981 returned. BZ 716
983 Fixed a problem where a deleted object could be accessed from within the AML 
984 parser. This was a regression introduced in version 20080123 as a fix for the 
985 Unload operator. Lin Ming. BZ 10669
987 Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands 
988 and eliminated the use of a negative index in a loop. Operands are now 
989 displayed in the correct order, not backwards. This also fixes a regression 
990 introduced in 20080514 on 64-bit systems where the elimination of 
991 ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715
993 Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit 
994 path did not delete a locally allocated structure.
996 Updated definitions for the DMAR and SRAT tables to synchronize with the 
997 current specifications. Includes disassembler support.
999 Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 
1000 loop termination value was used. Loop terminated on iteration early, missing 
1001 one mutex. Linn Crosetto
1003 Example Code and Data Size: These are the sizes for the OS-independent 
1004 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1005 debug version of the code includes the debug output trace mechanism and has a 
1006 much larger code and data size.
1008   Previous Release:
1009     Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
1010     Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
1011   Current Release:
1012     Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
1013     Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
1015 2) iASL Compiler/Disassembler and Tools:
1017 Disassembler: Implemented support for EisaId() within _CID objects. Now 
1018 disassemble integer _CID objects back to EisaId invocations, including 
1019 multiple integers within _CID packages. Includes single-step support for 
1020 debugger also.
1022 Disassembler: Added support for DMAR and SRAT table definition changes.
1024 ----------------------------------------
1025 14 May 2008. Summary of changes for version 20080514:
1027 1) ACPI CA Core Subsystem:
1029 Fixed a problem where GPEs were enabled too early during the ACPICA 
1030 initialization. This could lead to "handler not installed" errors on some 
1031 machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This 
1032 ensures that all operation regions and devices throughout the namespace have 
1033 been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
1035 Implemented a change to the enter sleep code. Moved execution of the _GTS 
1036 method to just before setting sleep enable bit. The execution was moved from 
1037 AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 
1038 immediately before the SLP_EN bit is set, as per the ACPI specification. 
1039 Luming Yu, BZ 1653.
1041 Implemented a fix to disable unknown GPEs (2nd version). Now always disable 
1042 the GPE, even if ACPICA thinks that that it is already disabled. It is 
1043 possible that the AML or some other code has enabled the GPE unbeknownst to 
1044 the ACPICA code.
1046 Fixed a problem with the Field operator where zero-length fields would return 
1047 an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL 
1048 field declarations in Field(), BankField(), and IndexField(). BZ 10606.
1050 Implemented a fix for the Load operator, now load the table at the namespace 
1051 root. This reverts a change introduced in version 20071019. The table is now 
1052 loaded at the namespace root even though this goes against the ACPI 
1053 specification. This provides compatibility with other ACPI implementations. 
1054 The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming.
1056 Fixed a problem where ACPICA would not Load() tables with unusual signatures. 
1057 Now ignore ACPI table signature for Load() operator. Only "SSDT" is 
1058 acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 
1059 Therefore, signature validation is worthless. Apparently MS ACPI accepts such 
1060 signatures, ACPICA must be compatible. BZ 10454.
1062 Fixed a possible negative array index in AcpiUtValidateException. Added NULL 
1063 fields to the exception string arrays to eliminate a -1 subtraction on the 
1064 SubStatus field.
1066 Updated the debug tracking macros to reduce overall code and data size. 
1067 Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 
1068 instead of pointers to static strings. Jan Beulich and Bob Moore.
1070 Implemented argument count checking in control method invocation via 
1071 AcpiEvaluateObject. Now emit an error if too few arguments, warning if too 
1072 many. This applies only to extern programmatic control method execution, not 
1073 method-to-method calls within the AML. Lin Ming.
1075 Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no 
1076 longer needed, especially with the removal of 16-bit support. It was replaced 
1077 mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on 
1078 32/64-bit platforms is required.
1080 Added the C const qualifier for appropriate string constants -- mostly 
1081 MODULE_NAME and printf format strings. Jan Beulich.
1083 Example Code and Data Size: These are the sizes for the OS-independent 
1084 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1085 debug version of the code includes the debug output trace mechanism and has a 
1086 much larger code and data size.
1088   Previous Release:
1089     Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
1090     Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
1091   Current Release:
1092     Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
1093     Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
1095 2) iASL Compiler/Disassembler and Tools:
1097 Implemented ACPI table revision ID validation in the disassembler. Zero is 
1098 always invalid. For DSDTs, the ID controls the interpreter integer width. 1 
1099 means 32-bit and this is unusual. 2 or greater is 64-bit.
1101 ----------------------------------------
1102 21 March 2008. Summary of changes for version 20080321:
1104 1) ACPI CA Core Subsystem:
1106 Implemented an additional change to the GPE support in order to suppress 
1107 spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently 
1108 disable incoming GPEs that are neither enabled nor disabled -- meaning that 
1109 the GPE is unknown to the system. This should prevent future interrupt floods 
1110 from that GPE. BZ 6217 (Zhang Rui)
1112 Fixed a problem where NULL package elements were not returned to the 
1113 AcpiEvaluateObject interface correctly. The element was simply ignored 
1114 instead of returning a NULL ACPI_OBJECT package element, potentially causing 
1115 a buffer overflow and/or confusing the caller who expected a fixed number of 
1116 elements. BZ 10132 (Lin Ming, Bob Moore)
1118 Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword, 
1119 Qword), Field, BankField, and IndexField operators when invoked from inside 
1120 an executing control method. In this case, these operators created namespace 
1121 nodes that were incorrectly left marked as permanent nodes instead of 
1122 temporary nodes. This could cause a problem if there is race condition 
1123 between an exiting control method and a running namespace walk. (Reported by 
1124 Linn Crosetto)
1126 Fixed a problem where the CreateField and CreateXXXField operators would 
1127 incorrectly allow duplicate names (the name of the field) with no exception 
1128 generated.
1130 Implemented several changes for Notify handling. Added support for new Notify 
1131 values (ACPI 2.0+) and improved the Notify debug output. Notify on 
1132 PowerResource objects is no longer allowed, as per the ACPI specification. 
1133 (Bob Moore, Zhang Rui)
1135 All Reference Objects returned via the AcpiEvaluateObject interface are now 
1136 marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for 
1137 NULL objects - either NULL package elements or unresolved named references.
1139 Fixed a problem where an extraneous debug message was produced for package 
1140 objects (when debugging enabled). The message "Package List length larger 
1141 than NumElements count" is now produced in the correct case, and is now an 
1142 error message rather than a debug message. Added a debug message for the 
1143 opposite case, where NumElements is larger than the Package List (the package 
1144 will be padded out with NULL elements as per the ACPI spec.)
1146 Implemented several improvements for the output of the ASL "Debug" object to 
1147 clarify and keep all data for a given object on one output line.
1149 Fixed two size calculation issues with the variable-length Start Dependent 
1150 resource descriptor.
1152 Example Code and Data Size: These are the sizes for the OS-independent 
1153 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1154 debug version of the code includes the debug output trace mechanism and has 
1155 a much larger code and data size.
1157   Previous Release:
1158     Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
1159     Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
1160   Current Release:
1161     Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
1162     Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
1164 2) iASL Compiler/Disassembler and Tools:
1166 Fixed a problem with the use of the Switch operator where execution of the 
1167 containing method by multiple concurrent threads could cause an 
1168 AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 
1169 actual Switch opcode, it must be simulated with local named temporary 
1170 variables and if/else pairs. The solution chosen was to mark any method that 
1171 uses Switch as Serialized, thus preventing multiple thread entries. BZ 469.
1173 ----------------------------------------
1174 13 February 2008. Summary of changes for version 20080213:
1176 1) ACPI CA Core Subsystem:
1178 Implemented another MS compatibility design change for GPE/Notify handling. 
1179 GPEs are now cleared/enabled asynchronously to allow all pending notifies to 
1180 complete first. It is expected that the OSL will queue the enable request 
1181 behind all pending notify requests (may require changes to the local host OSL 
1182 in AcpiOsExecute). Alexey Starikovskiy.
1184 Fixed a problem where buffer and package objects passed as arguments to a 
1185 control method via the external AcpiEvaluateObject interface could cause an 
1186 AE_AML_INTERNAL exception depending on the order and type of operators 
1187 executed by the target control method.
1189 Fixed a problem where resource descriptor size optimization could cause a 
1190 problem when a _CRS resource template is passed to a _SRS method. The _SRS 
1191 resource template must use the same descriptors (with the same size) as 
1192 returned from _CRS. This change affects the following resource descriptors: 
1193 IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487)
1195 Fixed a problem where a CopyObject to RegionField, BankField, and IndexField 
1196 objects did not perform an implicit conversion as it should. These types must 
1197 retain their initial type permanently as per the ACPI specification. However, 
1198 a CopyObject to all other object types should not perform an implicit 
1199 conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
1201 Fixed a problem with the AcpiGetDevices interface where the mechanism to 
1202 match device CIDs did not examine the entire list of available CIDs, but 
1203 instead aborted on the first non-matching CID. Andrew Patterson.
1205 Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was 
1206 inadvertently changed to return a 16-bit value instead of a 32-bit value, 
1207 truncating the upper dword of a 64-bit value. This macro is only used to 
1208 display debug output, so no incorrect calculations were made. Also, 
1209 reimplemented the macro so that a 64-bit shift is not performed by 
1210 inefficient compilers.
1212 Added missing va_end statements that should correspond with each va_start 
1213 statement.
1215 Example Code and Data Size: These are the sizes for the OS-independent 
1216 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1217 debug version of the code includes the debug output trace mechanism and has 
1218 a much larger code and data size.
1220   Previous Release:
1221     Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
1222     Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
1223   Current Release:
1224     Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
1225     Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
1227 2) iASL Compiler/Disassembler and Tools:
1229 Implemented full disassembler support for the following new ACPI tables: 
1230 BERT, EINJ, and ERST. Implemented partial disassembler support for the 
1231 complicated HEST table. These tables support the Windows Hardware Error 
1232 Architecture (WHEA).
1234 ----------------------------------------
1235 23 January 2008. Summary of changes for version 20080123:
1237 1) ACPI CA Core Subsystem:
1239 Added the 2008 copyright to all module headers and signons. This affects 
1240 virtually every file in the ACPICA core subsystem, the iASL compiler, and 
1241 the tools/utilities.
1243 Fixed a problem with the SizeOf operator when used with Package and Buffer 
1244 objects. These objects have deferred execution for some arguments, and the 
1245 execution is now completed before the SizeOf is executed. This problem caused 
1246 unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ 
1247 9558
1249 Implemented an enhancement to the interpreter "slack mode". In the absence of 
1250 an explicit return or an implicitly returned object from the last executed 
1251 opcode, a control method will now implicitly return an integer of value 0 for 
1252 Microsoft compatibility. (Lin Ming) BZ 392
1254 Fixed a problem with the Load operator where an exception was not returned in 
1255 the case where the table is already loaded. (Lin Ming) BZ 463
1257 Implemented support for the use of DDBHandles as an Indexed Reference, as per 
1258 the ACPI spec. (Lin Ming) BZ 486
1260 Implemented support for UserTerm (Method invocation) for the Unload operator 
1261 as per the ACPI spec. (Lin Ming) BZ 580
1263 Fixed a problem with the LoadTable operator where the OemId and OemTableId 
1264 input strings could cause unexpected failures if they were shorter than the 
1265 maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
1267 Implemented support for UserTerm (Method invocation) for the Unload operator 
1268 as per the ACPI spec. (Lin Ming) BZ 580
1270 Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST, 
1271 IBFT, UEFI, WDAT. Disassembler support is forthcoming.
1273 Example Code and Data Size: These are the sizes for the OS-independent 
1274 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1275 debug version of the code includes the debug output trace mechanism and has 
1276 a much larger code and data size.
1278   Previous Release:
1279     Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
1280     Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
1281   Current Release:
1282     Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
1283     Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
1285 2) iASL Compiler/Disassembler and Tools:
1287 Implemented support in the disassembler for checksum validation on incoming 
1288 binary DSDTs and SSDTs. If incorrect, a message is displayed within the table 
1289 header dump at the start of the disassembly.
1291 Implemented additional debugging information in the namespace listing file 
1292 created during compilation. In addition to the namespace hierarchy, the full 
1293 pathname to each namespace object is displayed.
1295 Fixed a problem with the disassembler where invalid ACPI tables could cause 
1296 faults or infinite loops.
1298 Fixed an unexpected parse error when using the optional "parameter types" 
1299 list in a control method declaration. (Lin Ming) BZ 397
1301 Fixed a problem where two External declarations with the same name did not 
1302 cause an error (Lin Ming) BZ 509
1304 Implemented support for full TermArgs (adding Argx, Localx and method 
1305 invocation) for the ParameterData parameter to the LoadTable operator. (Lin 
1306 Ming) BZ 583,587
1308 ----------------------------------------
1309 19 December 2007. Summary of changes for version 20071219:
1311 1) ACPI CA Core Subsystem:
1313 Implemented full support for deferred execution for the TermArg string 
1314 arguments for DataTableRegion. This enables forward references and full 
1315 operand resolution for the three string arguments. Similar to OperationRegion 
1316 deferred argument execution.) Lin Ming. BZ 430
1318 Implemented full argument resolution support for the BankValue argument to 
1319 BankField. Previously, only constants were supported, now any TermArg may be 
1320 used. Lin Ming BZ 387, 393
1322 Fixed a problem with AcpiGetDevices where the search of a branch of the 
1323 device tree could be terminated prematurely. In accordance with the ACPI 
1324 specification, the search down the current branch is terminated if a device 
1325 is both not present and not functional (instead of just not present.) Yakui 
1326 Zhao.
1328 Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if 
1329 the underlying AML code changed the GPE enable registers. Now, any unknown 
1330 incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled 
1331 instead of simply ignored. Rui Zhang.
1333 Fixed a problem with Index Fields where the Index register was incorrectly 
1334 limited to a maximum of 32 bits. Now any size may be used.
1336 Fixed a couple memory leaks associated with "implicit return" objects when 
1337 the AML Interpreter slack mode is enabled. Lin Ming BZ 349
1339 Example Code and Data Size: These are the sizes for the OS-independent 
1340 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1341 debug version of the code includes the debug output trace mechanism and has 
1342 a much larger code and data size.
1344   Previous Release:
1345     Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
1346     Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
1347   Current Release:
1348     Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
1349     Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
1351 ----------------------------------------
1352 14 November 2007. Summary of changes for version 20071114:
1354 1) ACPI CA Core Subsystem:
1356 Implemented event counters for each of the Fixed Events, the ACPI SCI 
1357 (interrupt) itself, and control methods executed. Named 
1358 AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These 
1359 should be useful for debugging and statistics.
1361 Implemented a new external interface, AcpiGetStatistics, to retrieve the 
1362 contents of the various event counters. Returns the current values for 
1363 AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 
1364 AcpiMethodCount. The interface can be expanded in the future if new counters 
1365 are added. Device drivers should use this interface rather than access the 
1366 counters directly.
1368 Fixed a problem with the FromBCD and ToBCD operators. With some compilers, 
1369 the ShortDivide function worked incorrectly, causing problems with the BCD 
1370 functions with large input values. A truncation from 64-bit to 32-bit 
1371 inadvertently occurred. Internal BZ 435. Lin Ming
1373 Fixed a problem with Index references passed as method arguments. References 
1374 passed as arguments to control methods were dereferenced immediately (before 
1375 control was passed to the called method). The references are now correctly 
1376 passed directly to the called method. BZ 5389. Lin Ming
1378 Fixed a problem with CopyObject used in conjunction with the Index operator. 
1379 The reference was incorrectly dereferenced before the copy. The reference is 
1380 now correctly copied. BZ 5391. Lin Ming
1382 Fixed a problem with Control Method references within Package objects. These 
1383 references are now correctly generated. This completes the package 
1384 construction overhaul that began in version 20071019.
1386 Example Code and Data Size: These are the sizes for the OS-independent 
1387 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1388 debug version of the code includes the debug output trace mechanism and has 
1389 a much larger code and data size.
1391   Previous Release:
1392     Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
1393     Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
1394   Current Release:
1395     Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
1396     Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
1399 2) iASL Compiler/Disassembler and Tools:
1401 The AcpiExec utility now installs handlers for all of the predefined 
1402 Operation Region types. New types supported are: PCI_Config, CMOS, and 
1403 PCIBARTarget.
1405 Fixed a problem with the 64-bit version of AcpiExec where the extended (64-
1406 bit) address fields for the DSDT and FACS within the FADT were not being 
1407 used, causing truncation of the upper 32-bits of these addresses. Lin Ming 
1408 and Bob Moore
1410 ----------------------------------------
1411 19 October 2007. Summary of changes for version 20071019:
1413 1) ACPI CA Core Subsystem:
1415 Fixed a problem with the Alias operator when the target of the alias is a 
1416 named ASL operator that opens a new scope -- Scope, Device, PowerResource, 
1417 Processor, and ThermalZone. In these cases, any children of the original 
1418 operator could not be accessed via the alias, potentially causing unexpected 
1419 AE_NOT_FOUND exceptions. (BZ 9067)
1421 Fixed a problem with the Package operator where all named references were 
1422 created as object references and left otherwise unresolved. According to the 
1423 ACPI specification, a Package can only contain Data Objects or references to 
1424 control methods. The implication is that named references to Data Objects 
1425 (Integer, Buffer, String, Package, BufferField, Field) should be resolved 
1426 immediately upon package creation. This is the approach taken with this 
1427 change. References to all other named objects (Methods, Devices, Scopes, 
1428 etc.) are all now properly created as reference objects. (BZ 5328)
1430 Reverted a change to Notify handling that was introduced in version 
1431 20070508. This version changed the Notify handling from asynchronous to 
1432 fully synchronous (Device driver Notify handling with respect to the Notify 
1433 ASL operator). It was found that this change caused more problems than it 
1434 solved and was removed by most users.
1436 Fixed a problem with the Increment and Decrement operators where the type of 
1437 the target object could be unexpectedly and incorrectly changed. (BZ 353) 
1438 Lin Ming.
1440 Fixed a problem with the Load and LoadTable operators where the table 
1441 location within the namespace was ignored. Instead, the table was always 
1442 loaded into the root or current scope. Lin Ming.
1444 Fixed a problem with the Load operator when loading a table from a buffer 
1445 object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
1447 Fixed a problem with the Debug object where a store of a DdbHandle reference 
1448 object to the Debug object could cause a fault.
1450 Added a table checksum verification for the Load operator, in the case where 
1451 the load is from a buffer. (BZ 578).
1453 Implemented additional parameter validation for the LoadTable operator. The 
1454 length of the input strings SignatureString, OemIdString, and OemTableId are 
1455 now checked for maximum lengths. (BZ 582) Lin Ming.
1457 Example Code and Data Size: These are the sizes for the OS-independent 
1458 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1459 debug version of the code includes the debug output trace mechanism and has 
1460 a much larger code and data size.
1462   Previous Release:
1463     Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
1464     Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
1465   Current Release:
1466     Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
1467     Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
1470 2) iASL Compiler/Disassembler:
1472 Fixed a problem where if a single file was specified and the file did not 
1473 exist, no error message was emitted. (Introduced with wildcard support in 
1474 version 20070917.)
1476 ----------------------------------------
1477 19 September 2007. Summary of changes for version 20070919:
1479 1) ACPI CA Core Subsystem:
1481 Designed and implemented new external interfaces to install and remove 
1482 handlers for ACPI table-related events. Current events that are defined are 
1483 LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 
1484 they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 
1485 AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
1487 Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 
1488 (acpi_serialized option on Linux) could cause some systems to hang during 
1489 initialization. (Bob Moore) BZ 8171
1491 Fixed a problem where objects of certain types (Device, ThermalZone, 
1492 Processor, PowerResource) can be not found if they are declared and 
1493 referenced from within the same control method (Lin Ming) BZ 341
1495 Example Code and Data Size: These are the sizes for the OS-independent 
1496 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1497 debug version of the code includes the debug output trace mechanism and has 
1498 a much larger code and data size.
1500   Previous Release:
1501     Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
1502     Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
1503   Current Release:
1504     Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
1505     Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
1508 2) iASL Compiler/Disassembler:
1510 Implemented support to allow multiple files to be compiled/disassembled in a 
1511 single invocation. This includes command line wildcard support for both the 
1512 Windows and Unix versions of the compiler. This feature simplifies the 
1513 disassembly and compilation of multiple ACPI tables in a single directory.
1515 ----------------------------------------
1516 08 May 2007. Summary of changes for version 20070508:
1518 1) ACPI CA Core Subsystem:
1520 Implemented a Microsoft compatibility design change for the handling of the 
1521 Notify AML operator. Previously, notify handlers were dispatched and 
1522 executed completely asynchronously in a deferred thread. The new design 
1523 still executes the notify handlers in a different thread, but the original 
1524 thread that executed the Notify() now waits at a synchronization point for 
1525 the notify handler to complete. Some machines depend on a synchronous Notify 
1526 operator in order to operate correctly.
1528 Implemented support to allow Package objects to be passed as method 
1529 arguments to the external AcpiEvaluateObject interface. Previously, this 
1530 would return the AE_NOT_IMPLEMENTED exception. This feature had not been 
1531 implemented since there were no reserved control methods that required it 
1532 until recently.
1534 Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that 
1535 contained invalid non-zero values in reserved fields could cause later 
1536 failures because these fields have meaning in later revisions of the FADT. 
1537 For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields 
1538 are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
1540 Fixed a problem where the Global Lock handle was not properly updated if a 
1541 thread that acquired the Global Lock via executing AML code then attempted 
1542 to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe 
1543 Liu.
1545 Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 
1546 could be corrupted if the interrupt being removed was at the head of the 
1547 list. Reported by Linn Crosetto.
1549 Example Code and Data Size: These are the sizes for the OS-independent 
1550 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1551 debug version of the code includes the debug output trace mechanism and has 
1552 a much larger code and data size.
1554   Previous Release:
1555     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1556     Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
1557   Current Release:
1558     Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
1559     Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
1561 ----------------------------------------
1562 20 March 2007. Summary of changes for version 20070320:
1564 1) ACPI CA Core Subsystem:
1566 Implemented a change to the order of interpretation and evaluation of AML 
1567 operand objects within the AML interpreter. The interpreter now evaluates 
1568 operands in the order that they appear in the AML stream (and the 
1569 corresponding ASL code), instead of in the reverse order (after the entire 
1570 operand list has been parsed). The previous behavior caused several subtle 
1571 incompatibilities with the Microsoft AML interpreter as well as being 
1572 somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
1574 Implemented a change to the ACPI Global Lock support. All interfaces to the 
1575 global lock now allow the same thread to acquire the lock multiple times. 
1576 This affects the AcpiAcquireGlobalLock external interface to the global lock 
1577 as well as the internal use of the global lock to support AML fields -- a 
1578 control method that is holding the global lock can now simultaneously access 
1579 AML fields that require global lock protection. Previously, in both cases, 
1580 this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to 
1581 AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 
1582 Controller. There is no change to the behavior of the AML Acquire operator, 
1583 as this can already be used to acquire a mutex multiple times by the same 
1584 thread. BZ 8066. With assistance from Alexey Starikovskiy.
1586 Fixed a problem where invalid objects could be referenced in the AML 
1587 Interpreter after error conditions. During operand evaluation, ensure that 
1588 the internal "Return Object" field is cleared on error and only valid 
1589 pointers are stored there. Caused occasional access to deleted objects that 
1590 resulted in "large reference count" warning messages. Valery Podrezov.
1592 Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on 
1593 deeply nested control method invocations. BZ 7873, local BZ 487. Valery 
1594 Podrezov.
1596 Fixed an internal problem with the handling of result objects on the 
1597 interpreter result stack. BZ 7872. Valery Podrezov.
1599 Removed obsolete code that handled the case where AML_NAME_OP is the target 
1600 of a reference (Reference.Opcode). This code was no longer necessary. BZ 
1601 7874. Valery Podrezov.
1603 Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a 
1604 remnant from the previously discontinued 16-bit support.
1606 Example Code and Data Size: These are the sizes for the OS-independent 
1607 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1608 debug version of the code includes the debug output trace mechanism and has 
1609 a much larger code and data size.
1611   Previous Release:
1612     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1613     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
1614   Current Release:
1615     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1616     Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
1618 ----------------------------------------
1619 26 January 2007. Summary of changes for version 20070126:
1621 1) ACPI CA Core Subsystem:
1623 Added the 2007 copyright to all module headers and signons. This affects 
1624 virtually every file in the ACPICA core subsystem, the iASL compiler, and 
1625 the utilities.
1627 Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 
1628 during a table load. A bad pointer was passed in the case where the DSDT is 
1629 overridden, causing a fault in this case.
1631 Example Code and Data Size: These are the sizes for the OS-independent 
1632 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1633 debug version of the code includes the debug output trace mechanism and has 
1634 a much larger code and data size.
1636   Previous Release:
1637     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1638     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
1639   Current Release:
1640     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1641     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
1643 ----------------------------------------
1644 15 December 2006. Summary of changes for version 20061215:
1646 1) ACPI CA Core Subsystem:
1648 Support for 16-bit ACPICA has been completely removed since it is no longer 
1649 necessary and it clutters the code. All 16-bit macros, types, and 
1650 conditional compiles have been removed, cleaning up and simplifying the code 
1651 across the entire subsystem. DOS support is no longer needed since the 
1652 bootable Linux firmware kit is now available.
1654 The handler for the Global Lock is now removed during AcpiTerminate to 
1655 enable a clean subsystem restart, via the implementation of the 
1656 AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 
1659 Implemented enhancements to the multithreading support within the debugger 
1660 to enable improved multithreading debugging and evaluation of the subsystem. 
1661 (Valery Podrezov)
1663 Debugger: Enhanced the Statistics/Memory command to emit the total (maximum) 
1664 memory used during the execution, as well as the maximum memory consumed by 
1665 each of the various object types. (Valery Podrezov)
1667 Example Code and Data Size: These are the sizes for the OS-independent 
1668 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1669 debug version of the code includes the debug output trace mechanism and has 
1670 a much larger code and data size.
1672   Previous Release:
1673     Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
1674     Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
1675   Current Release:
1676     Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1677     Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
1680 2) iASL Compiler/Disassembler and Tools:
1682 AcpiExec: Implemented a new option (-m) to display full memory use 
1683 statistics upon subsystem/program termination. (Valery Podrezov)
1685 ----------------------------------------
1686 09 November 2006. Summary of changes for version 20061109:
1688 1) ACPI CA Core Subsystem:
1690 Optimized the Load ASL operator in the case where the source operand is an 
1691 operation region. Simply map the operation region memory, instead of 
1692 performing a bytewise read. (Region must be of type SystemMemory, see 
1693 below.)
1695 Fixed the Load ASL operator for the case where the source operand is a 
1696 region field. A buffer object is also allowed as the source operand. BZ 480
1698 Fixed a problem where the Load ASL operator allowed the source operand to be 
1699 an operation region of any type. It is now restricted to regions of type 
1700 SystemMemory, as per the ACPI specification. BZ 481
1702 Additional cleanup and optimizations for the new Table Manager code.
1704 AcpiEnable will now fail if all of the required ACPI tables are not loaded 
1705 (FADT, FACS, DSDT). BZ 477
1707 Added #pragma pack(8/4) to acobject.h to ensure that the structures in this 
1708 header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 
1709 manually optimized to be aligned and will not work if it is byte-packed. 
1711 Example Code and Data Size: These are the sizes for the OS-independent 
1712 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1713 debug version of the code includes the debug output trace mechanism and has 
1714 a much larger code and data size.
1716   Previous Release:
1717     Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
1718     Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
1719   Current Release:
1720     Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
1721     Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
1724 2) iASL Compiler/Disassembler and Tools:
1726 Fixed a problem where the presence of the _OSI predefined control method 
1727 within complex expressions could cause an internal compiler error.
1729 AcpiExec: Implemented full region support for multiple address spaces. 
1730 SpaceId is now part of the REGION object. BZ 429
1732 ----------------------------------------
1733 11 October 2006. Summary of changes for version 20061011:
1735 1) ACPI CA Core Subsystem:
1737 Completed an AML interpreter performance enhancement for control method 
1738 execution. Previously a 2-pass parse/execution, control methods are now 
1739 completely parsed and executed in a single pass. This improves overall 
1740 interpreter performance by ~25%, reduces code size, and reduces CPU stack 
1741 use. (Valery Podrezov + interpreter changes in version 20051202 that 
1742 eliminated namespace loading during the pass one parse.)
1744 Implemented _CID support for PCI Root Bridge detection. If the _HID does not 
1745 match the predefined PCI Root Bridge IDs, the _CID list (if present) is now 
1746 obtained and also checked for an ID match.
1748 Implemented additional support for the PCI _ADR execution: upsearch until a 
1749 device scope is found before executing _ADR. This allows PCI_Config 
1750 operation regions to be declared locally within control methods underneath 
1751 PCI device objects.
1753 Fixed a problem with a possible race condition between threads executing 
1754 AcpiWalkNamespace and the AML interpreter. This condition was removed by 
1755 modifying AcpiWalkNamespace to (by default) ignore all temporary namespace 
1756 entries created during any concurrent control method execution. An 
1757 additional namespace race condition is known to exist between 
1758 AcpiWalkNamespace and the Load/Unload ASL operators and is still under 
1759 investigation.
1761 Restructured the AML ParseLoop function, breaking it into several 
1762 subfunctions in order to reduce CPU stack use and improve maintainability. 
1763 (Mikhail Kouzmich)
1765 AcpiGetHandle: Fix for parameter validation to detect invalid combinations 
1766 of prefix handle and pathname. BZ 478
1768 Example Code and Data Size: These are the sizes for the OS-independent 
1769 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1770 debug version of the code includes the debug output trace mechanism and has 
1771 a much larger code and data size.
1773   Previous Release:
1774     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
1775     Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
1776   Current Release:
1777     Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
1778     Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
1780 2) iASL Compiler/Disassembler and Tools:
1782 Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager 
1783 to restore original behavior.
1785 ----------------------------------------
1786 27 September 2006. Summary of changes for version 20060927:
1788 1) ACPI CA Core Subsystem:
1790 Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 
1791 These functions now use a spinlock for mutual exclusion and the interrupt 
1792 level indication flag is not needed.
1794 Fixed a problem with the Global Lock where the lock could appear to be 
1795 obtained before it is actually obtained. The global lock semaphore was 
1796 inadvertently created with one unit instead of zero units. (BZ 464) Fiodor 
1797 Suietov.
1799 Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during 
1800 a read from a buffer or region field. (BZ 458) Fiodor Suietov.
1802 Example Code and Data Size: These are the sizes for the OS-independent 
1803 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1804 debug version of the code includes the debug output trace mechanism and has 
1805 a much larger code and data size.
1807   Previous Release:
1808     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
1809     Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
1810   Current Release:
1811     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
1812     Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
1815 2) iASL Compiler/Disassembler and Tools:
1817 Fixed a compilation problem with the pre-defined Resource Descriptor field 
1818 names where an "object does not exist" error could be incorrectly generated 
1819 if the parent ResourceTemplate pathname places the template within a 
1820 different namespace scope than the current scope. (BZ 7212)
1822 Fixed a problem where the compiler could hang after syntax errors detected 
1823 in an ElseIf construct. (BZ 453)
1825 Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 
1826 operator. An incorrect output filename was produced when this parameter was 
1827 a null string (""). Now, the original input filename is used as the AML 
1828 output filename, with an ".aml" extension.
1830 Implemented a generic batch command mode for the AcpiExec utility (execute 
1831 any AML debugger command) (Valery Podrezov).
1833 ----------------------------------------
1834 12 September 2006. Summary of changes for version 20060912:
1836 1) ACPI CA Core Subsystem:
1838 Enhanced the implementation of the "serialized mode" of the interpreter 
1839 (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 
1840 specified, instead of creating a serialization semaphore per control method, 
1841 the interpreter lock is simply no longer released before a blocking 
1842 operation during control method execution. This effectively makes the AML 
1843 Interpreter single-threaded. The overhead of a semaphore per-method is 
1844 eliminated.
1846 Fixed a regression where an error was no longer emitted if a control method 
1847 attempts to create 2 objects of the same name. This once again returns 
1848 AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that 
1849 will dynamically serialize the control method to possible prevent future 
1850 errors. (BZ 440)
1852 Integrated a fix for a problem with PCI Express HID detection in the PCI 
1853 Config Space setup procedure. (BZ 7145)
1855 Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 
1856 AcpiHwInitialize function - the FADT registers are now validated when the 
1857 table is loaded.
1859 Added two new warnings during FADT verification - 1) if the FADT is larger 
1860 than the largest known FADT version, and 2) if there is a mismatch between a 
1861 32-bit block address and the 64-bit X counterpart (when both are non-zero.)
1863 Example Code and Data Size: These are the sizes for the OS-independent 
1864 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1865 debug version of the code includes the debug output trace mechanism and has 
1866 a much larger code and data size.
1868   Previous Release:
1869     Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
1870     Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
1871   Current Release:
1872     Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
1873     Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
1876 2) iASL Compiler/Disassembler and Tools:
1878 Fixed a problem with the implementation of the Switch() operator where the 
1879 temporary variable was declared too close to the actual Switch, instead of 
1880 at method level. This could cause a problem if the Switch() operator is 
1881 within a while loop, causing an error on the second iteration. (BZ 460)
1883 Disassembler - fix for error emitted for unknown type for target of scope 
1884 operator. Now, ignore it and continue.
1886 Disassembly of an FADT now verifies the input FADT and reports any errors 
1887 found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
1889 Disassembly of raw data buffers with byte initialization data now prefixes 
1890 each output line with the current buffer offset.
1892 Disassembly of ASF! table now includes all variable-length data fields at 
1893 the end of some of the subtables.
1895 The disassembler now emits a comment if a buffer appears to be a 
1896 ResourceTemplate, but cannot be disassembled as such because the EndTag does 
1897 not appear at the very end of the buffer.
1899 AcpiExec - Added the "-t" command line option to enable the serialized mode 
1900 of the AML interpreter.
1902 ----------------------------------------
1903 31 August 2006. Summary of changes for version 20060831:
1905 1) ACPI CA Core Subsystem:
1907 Miscellaneous fixes for the Table Manager:
1908 - Correctly initialize internal common FADT for all 64-bit "X" fields
1909 - Fixed a couple table mapping issues during table load
1910 - Fixed a couple alignment issues for IA64
1911 - Initialize input array to zero in AcpiInitializeTables
1912 - Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 
1913 AcpiGetTableByIndex
1915 Change for GPE support: when a "wake" GPE is received, all wake GPEs are now 
1916 immediately disabled to prevent the waking GPE from firing again and to 
1917 prevent other wake GPEs from interrupting the wake process.
1919 Added the AcpiGpeCount global that tracks the number of processed GPEs, to 
1920 be used for debugging systems with a large number of ACPI interrupts.
1922 Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 
1923 both the ACPICA headers and the disassembler.
1925 Example Code and Data Size: These are the sizes for the OS-independent 
1926 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1927 debug version of the code includes the debug output trace mechanism and has 
1928 a much larger code and data size.
1930   Previous Release:
1931     Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
1932     Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
1933   Current Release:
1934     Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
1935     Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
1938 2) iASL Compiler/Disassembler and Tools:
1940 Disassembler support for the DMAR ACPI table.
1942 ----------------------------------------
1943 23 August 2006. Summary of changes for version 20060823:
1945 1) ACPI CA Core Subsystem:
1947 The Table Manager component has been completely redesigned and 
1948 reimplemented. The new design is much simpler, and reduces the overall code 
1949 and data size of the kernel-resident ACPICA by approximately 5%. Also, it is 
1950 now possible to obtain the ACPI tables very early during kernel 
1951 initialization, even before dynamic memory management is initialized. 
1952 (Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
1954 Obsolete ACPICA interfaces:
1956 - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init 
1957 time).
1958 - AcpiLoadTable: Not needed.
1959 - AcpiUnloadTable: Not needed.
1961 New ACPICA interfaces:
1963 - AcpiInitializeTables: Must be called before the table manager can be used.
1964 - AcpiReallocateRootTable: Used to transfer the root table to dynamically 
1965 allocated memory after it becomes available.
1966 - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables 
1967 in the RSDT/XSDT.
1969 Other ACPICA changes:
1971 - AcpiGetTableHeader returns the actual mapped table header, not a copy. Use 
1972 AcpiOsUnmapMemory to free this mapping.
1973 - AcpiGetTable returns the actual mapped table. The mapping is managed 
1974 internally and must not be deleted by the caller. Use of this interface 
1975 causes no additional dynamic memory allocation.
1976 - AcpiFindRootPointer: Support for physical addressing has been eliminated, 
1977 it appeared to be unused.
1978 - The interface to AcpiOsMapMemory has changed to be consistent with the 
1979 other allocation interfaces.
1980 - The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary 
1981 parameters.
1982 - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64-
1983 bit platforms. Was previously 64 bits on all platforms.
1984 - The interface to the ACPI Global Lock acquire/release macros have changed 
1985 slightly since ACPICA no longer keeps a local copy of the FACS with a 
1986 constructed pointer to the actual global lock.
1988 Porting to the new table manager:
1990 - AcpiInitializeTables: Must be called once, and can be called anytime 
1991 during the OS initialization process. It allows the host to specify an area 
1992 of memory to be used to store the internal version of the RSDT/XSDT (root 
1993 table). This allows the host to access ACPI tables before memory management 
1994 is initialized and running.
1995 - AcpiReallocateRootTable: Can be called after memory management is running 
1996 to copy the root table to a dynamically allocated array, freeing up the 
1997 scratch memory specified in the call to AcpiInitializeTables.
1998 - AcpiSubsystemInitialize: This existing interface is independent of the 
1999 Table Manager, and does not have to be called before the Table Manager can 
2000 be used, it only must be called before the rest of ACPICA can be used.
2001 - ACPI Tables: Some changes have been made to the names and structure of the 
2002 actbl.h and actbl1.h header files and may require changes to existing code. 
2003 For example, bitfields have been completely removed because of their lack of 
2004 portability across C compilers.
2005 - Update interfaces to the Global Lock acquire/release macros if local 
2006 versions are used. (see acwin.h)
2008 Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
2010 New files: tbfind.c
2012 Example Code and Data Size: These are the sizes for the OS-independent 
2013 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2014 debug version of the code includes the debug output trace mechanism and has 
2015 a much larger code and data size.
2017   Previous Release:
2018     Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
2019     Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
2020   Current Release:
2021     Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
2022     Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
2025 2) iASL Compiler/Disassembler and Tools:
2027 No changes for this release.
2029 ----------------------------------------
2030 21 July 2006. Summary of changes for version 20060721:
2032 1) ACPI CA Core Subsystem:
2034 The full source code for the ASL test suite used to validate the iASL 
2035 compiler and the ACPICA core subsystem is being released with the ACPICA 
2036 source for the first time. The source is contained in a separate package and 
2037 consists of over 1100 files that exercise all ASL/AML operators. The package 
2038 should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor 
2039 Suietov)
2041 Completed a new design and implementation for support of the ACPI Global 
2042 Lock. On the OS side, the global lock is now treated as a standard AML 
2043 mutex. Previously, multiple OS threads could "acquire" the global lock 
2044 simultaneously. However, this could cause the BIOS to be starved out of the 
2045 lock - especially in cases such as the Embedded Controller driver where 
2046 there is a tight coupling between the OS and the BIOS.
2048 Implemented an optimization for the ACPI Global Lock interrupt mechanism. 
2049 The Global Lock interrupt handler no longer queues the execution of a 
2050 separate thread to signal the global lock semaphore. Instead, the semaphore 
2051 is signaled directly from the interrupt handler.
2053 Implemented support within the AML interpreter for package objects that 
2054 contain a larger AML length (package list length) than the package element 
2055 count. In this case, the length of the package is truncated to match the 
2056 package element count. Some BIOS code apparently modifies the package length 
2057 on the fly, and this change supports this behavior. Provides compatibility 
2058 with the MS AML interpreter. (With assistance from Fiodor Suietov)
2060 Implemented a temporary fix for the BankValue parameter of a Bank Field to 
2061 support all constant values, now including the Zero and One opcodes. 
2062 Evaluation of this parameter must eventually be converted to a full TermArg 
2063 evaluation. A not-implemented error is now returned (temporarily) for non-
2064 constant values for this parameter.
2066 Fixed problem reports (Fiodor Suietov) integrated:
2067 - Fix for premature object deletion after CopyObject on Operation Region (BZ 
2068 350)
2070 Example Code and Data Size: These are the sizes for the OS-independent 
2071 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2072 debug version of the code includes the debug output trace mechanism and has 
2073 a much larger code and data size.
2075   Previous Release:
2076     Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
2077     Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
2078   Current Release:
2079     Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
2080     Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
2083 2) iASL Compiler/Disassembler and Tools:
2085 No changes for this release.
2087 ----------------------------------------
2088 07 July 2006. Summary of changes for version 20060707:
2090 1) ACPI CA Core Subsystem:
2092 Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 
2093 that do not allow the initialization of address pointers within packed 
2094 structures - even though the hardware itself may support misaligned 
2095 transfers. Some of the debug data structures are packed by default to 
2096 minimize size.
2098 Added an error message for the case where AcpiOsGetThreadId() returns zero. 
2099 A non-zero value is required by the core ACPICA code to ensure the proper 
2100 operation of AML mutexes and recursive control methods.
2102 The DSDT is now the only ACPI table that determines whether the AML 
2103 interpreter is in 32-bit or 64-bit mode. Not really a functional change, but 
2104 the hooks for per-table 32/64 switching have been removed from the code. A 
2105 clarification to the ACPI specification is forthcoming in ACPI 3.0B.
2107 Fixed a possible leak of an OwnerID in the error path of 
2108 AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 
2109 deletion to a single place in AcpiTbUninstallTable to correct possible leaks 
2110 when using the AcpiTbDeleteTablesByType interface (with assistance from 
2111 Lance Ortiz.)
2113 Fixed a problem with Serialized control methods where the semaphore 
2114 associated with the method could be over-signaled after multiple method 
2115 invocations.
2117 Fixed two issues with the locking of the internal namespace data structure. 
2118 Both the Unload() operator and AcpiUnloadTable interface now lock the 
2119 namespace during the namespace deletion associated with the table unload 
2120 (with assistance from Linn Crosetto.)
2122 Fixed problem reports (Valery Podrezov) integrated:
2123 - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
2125 Fixed problem reports (Fiodor Suietov) integrated:
2126 - Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
2127 - On Address Space handler deletion, needless deactivation call (BZ 374)
2128 - AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375)
2129 - Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone 
2130 (BZ 376)
2131 - AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
2132 - Minimum Length of RSDT should be validated (BZ 379)
2133 - AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 
2134 Handler (BZ (380)
2135 - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded 
2136 (BZ 381)
2138 Example Code and Data Size: These are the sizes for the OS-independent 
2139 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2140 debug version of the code includes the debug output trace mechanism and has 
2141 a much larger code and data size.
2143   Previous Release:
2144     Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
2145     Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
2146   Current Release:
2147     Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
2148     Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
2151 2) iASL Compiler/Disassembler and Tools:
2153 Fixed problem reports:
2154 Compiler segfault when ASL contains a long (>1024) String declaration (BZ 
2155 436)
2157 ----------------------------------------
2158 23 June 2006. Summary of changes for version 20060623:
2160 1) ACPI CA Core Subsystem:
2162 Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 
2163 allows the type to be customized to the host OS for improved efficiency 
2164 (since a spinlock is usually a very small object.)
2166 Implemented support for "ignored" bits in the ACPI registers. According to 
2167 the ACPI specification, these bits should be preserved when writing the 
2168 registers via a read/modify/write cycle. There are 3 bits preserved in this 
2169 manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
2171 Implemented the initial deployment of new OSL mutex interfaces. Since some 
2172 host operating systems have separate mutex and semaphore objects, this 
2173 feature was requested. The base code now uses mutexes (and the new mutex 
2174 interfaces) wherever a binary semaphore was used previously. However, for 
2175 the current release, the mutex interfaces are defined as macros to map them 
2176 to the existing semaphore interfaces. Therefore, no OSL changes are required 
2177 at this time. (See acpiosxf.h)
2179 Fixed several problems with the support for the control method SyncLevel 
2180 parameter. The SyncLevel now works according to the ACPI specification and 
2181 in concert with the Mutex SyncLevel parameter, since the current SyncLevel 
2182 is a property of the executing thread. Mutual exclusion for control methods 
2183 is now implemented with a mutex instead of a semaphore.
2185 Fixed three instances of the use of the C shift operator in the bitfield 
2186 support code (exfldio.c) to avoid the use of a shift value larger than the 
2187 target data width. The behavior of C compilers is undefined in this case and 
2188 can cause unpredictable results, and therefore the case must be detected and 
2189 avoided. (Fiodor Suietov)
2191 Added an info message whenever an SSDT or OEM table is loaded dynamically 
2192 via the Load() or LoadTable() ASL operators. This should improve debugging 
2193 capability since it will show exactly what tables have been loaded (beyond 
2194 the tables present in the RSDT/XSDT.)
2196 Example Code and Data Size: These are the sizes for the OS-independent 
2197 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2198 debug version of the code includes the debug output trace mechanism and has 
2199 a much larger code and data size.
2201   Previous Release:
2202     Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
2203     Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
2204   Current Release:
2205     Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
2206     Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
2209 2) iASL Compiler/Disassembler and Tools:
2211 No changes for this release.
2213 ----------------------------------------
2214 08 June 2006. Summary of changes for version 20060608:
2216 1) ACPI CA Core Subsystem:
2218 Converted the locking mutex used for the ACPI hardware to a spinlock. This 
2219 change should eliminate all problems caused by attempting to acquire a 
2220 semaphore at interrupt level, and it means that all ACPICA external 
2221 interfaces that directly access the ACPI hardware can be safely called from 
2222 interrupt level. OSL code that implements the semaphore interfaces should be 
2223 able to eliminate any workarounds for being called at interrupt level.
2225 Fixed a regression introduced in 20060526 where the ACPI device 
2226 initialization could be prematurely aborted with an AE_NOT_FOUND if a device 
2227 did not have an optional _INI method.
2229 Fixed an IndexField issue where a write to the Data Register should be 
2230 limited in size to the AccessSize (width) of the IndexField itself. (BZ 433, 
2231 Fiodor Suietov)
2233 Fixed problem reports (Valery Podrezov) integrated:
2234 - Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
2236 Fixed problem reports (Fiodor Suietov) integrated:
2237 - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
2239 Removed four global mutexes that were obsolete and were no longer being 
2240 used.
2242 Example Code and Data Size: These are the sizes for the OS-independent 
2243 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2244 debug version of the code includes the debug output trace mechanism and has 
2245 a much larger code and data size.
2247   Previous Release:
2248     Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
2249     Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
2250   Current Release:
2251     Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
2252     Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
2255 2) iASL Compiler/Disassembler and Tools:
2257 Fixed a fault when using -g option (get tables from registry) on Windows 
2258 machines.
2260 Fixed problem reports integrated:
2261 - Generate error if CreateField NumBits parameter is zero. (BZ 405)
2262 - Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 
2263 Suietov)
2264 - Global table revision override (-r) is ignored (BZ 413)
2266 ----------------------------------------
2267 26 May 2006. Summary of changes for version 20060526:
2269 1) ACPI CA Core Subsystem:
2271 Restructured, flattened, and simplified the internal interfaces for 
2272 namespace object evaluation - resulting in smaller code, less CPU stack use, 
2273 and fewer interfaces. (With assistance from Mikhail Kouzmich)
2275 Fixed a problem with the CopyObject operator where the first parameter was 
2276 not typed correctly for the parser, interpreter, compiler, and disassembler. 
2277 Caused various errors and unexpected behavior.
2279 Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 
2280 produced incorrect results with some C compilers. Since the behavior of C 
2281 compilers when the shift value is larger than the datatype width is 
2282 apparently not well defined, the interpreter now detects this condition and 
2283 simply returns zero as expected in all such cases. (BZ 395)
2285 Fixed problem reports (Valery Podrezov) integrated:
2286 - Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
2287 - Allow interpreter to handle nested method declarations (BZ 5361)
2289 Fixed problem reports (Fiodor Suietov) integrated:
2290 - AcpiTerminate doesn't free debug memory allocation list objects (BZ 355)
2291 - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356)
2292 - AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
2293 - Resource Manager should return AE_TYPE for non-device objects (BZ 358)
2294 - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
2295 - Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
2296 - Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
2297 - Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
2298 - AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365)
2299 - Status of the Global Initialization Handler call not used (BZ 366)
2300 - Incorrect object parameter to Global Initialization Handler (BZ 367)
2302 Example Code and Data Size: These are the sizes for the OS-independent 
2303 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2304 debug version of the code includes the debug output trace mechanism and has 
2305 a much larger code and data size.
2307   Previous Release:
2308     Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
2309     Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
2310   Current Release:
2311     Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
2312     Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
2315 2) iASL Compiler/Disassembler and Tools:
2317 Modified the parser to allow the names IO, DMA, and IRQ to be used as 
2318 namespace identifiers with no collision with existing resource descriptor 
2319 macro names. This provides compatibility with other ASL compilers and is 
2320 most useful for disassembly/recompilation of existing tables without parse 
2321 errors. (With assistance from Thomas Renninger)
2323 Disassembler: fixed an incorrect disassembly problem with the 
2324 DataTableRegion and CopyObject operators. Fixed a possible fault during 
2325 disassembly of some Alias operators.
2327 ----------------------------------------
2328 12 May 2006. Summary of changes for version 20060512:
2330 1) ACPI CA Core Subsystem:
2332 Replaced the AcpiOsQueueForExecution interface with a new interface named 
2333 AcpiOsExecute. The major difference is that the new interface does not have 
2334 a Priority parameter, this appeared to be useless and has been replaced by a 
2335 Type parameter. The Type tells the host what type of execution is being 
2336 requested, such as global lock handler, notify handler, GPE handler, etc. 
2337 This allows the host to queue and execute the request as appropriate for the 
2338 request type, possibly using different work queues and different priorities 
2339 for the various request types. This enables fixes for multithreading 
2340 deadlock problems such as BZ #5534, and will require changes to all existing 
2341 OS interface layers. (Alexey Starikovskiy and Bob Moore)
2343 Fixed a possible memory leak associated with the support for the so-called 
2344 "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 
2345 Suietov)
2347 Fixed a problem with the Load() operator where a table load from an 
2348 operation region could overwrite an internal table buffer by up to 7 bytes 
2349 and cause alignment faults on IPF systems. (With assistance from Luming Yu)
2351 Example Code and Data Size: These are the sizes for the OS-independent 
2352 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2353 debug version of the code includes the debug output trace mechanism and has 
2354 a much larger code and data size.
2356   Previous Release:
2357     Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
2358     Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
2359   Current Release:
2360     Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
2361     Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
2365 2) iASL Compiler/Disassembler and Tools:
2367 Disassembler: Implemented support to cross reference the internal namespace 
2368 and automatically generate ASL External() statements for symbols not defined 
2369 within the current table being disassembled. This will simplify the 
2370 disassembly and recompilation of interdependent tables such as SSDTs since 
2371 these statements will no longer have to be added manually.
2373 Disassembler: Implemented experimental support to automatically detect 
2374 invocations of external control methods and generate appropriate External() 
2375 statements. This is problematic because the AML cannot be correctly parsed 
2376 until the number of arguments for each control method is known. Currently, 
2377 standalone method invocations and invocations as the source operand of a 
2378 Store() statement are supported.
2380 Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 
2381 LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 
2382 LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 
2383 more readable and likely closer to the original ASL source.
2385 ----------------------------------------
2386 21 April 2006. Summary of changes for version 20060421:
2388 1) ACPI CA Core Subsystem:
2390 Removed a device initialization optimization introduced in 20051216 where 
2391 the _STA method was not run unless an _INI was also present for the same 
2392 device. This optimization could cause problems because it could allow _INI 
2393 methods to be run within a not-present device subtree. (If a not-present 
2394 device had no _INI, _STA would not be run, the not-present status would not 
2395 be discovered, and the children of the device would be incorrectly 
2396 traversed.)
2398 Implemented a new _STA optimization where namespace subtrees that do not 
2399 contain _INI are identified and ignored during device initialization. 
2400 Selectively running _STA can significantly improve boot time on large 
2401 machines (with assistance from Len Brown.)
2403 Implemented support for the device initialization case where the returned 
2404 _STA flags indicate a device not-present but functioning. In this case, _INI 
2405 is not run, but the device children are examined for presence, as per the 
2406 ACPI specification.
2408 Implemented an additional change to the IndexField support in order to 
2409 conform to MS behavior. The value written to the Index Register is not 
2410 simply a byte offset, it is a byte offset in units of the access width of 
2411 the parent Index Field. (Fiodor Suietov)
2413 Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 
2414 interface is called during the creation of all AML operation regions, and 
2415 allows the host OS to exert control over what addresses it will allow the 
2416 AML code to access. Operation Regions whose addresses are disallowed will 
2417 cause a runtime exception when they are actually accessed (will not affect 
2418 or abort table loading.) See oswinxf or osunixxf for an example 
2419 implementation.
2421 Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 
2422 interface allows the host OS to match the various "optional" 
2423 interface/behavior strings for the _OSI predefined control method as 
2424 appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 
2425 for an example implementation.
2427 Restructured and corrected various problems in the exception handling code 
2428 paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 
2429 (with assistance from Takayoshi Kochi.)
2431 Modified the Linux source converter to ignore quoted string literals while 
2432 converting identifiers from mixed to lower case. This will correct problems 
2433 with the disassembler and other areas where such strings must not be 
2434 modified.
2436 The ACPI_FUNCTION_* macros no longer require quotes around the function 
2437 name. This allows the Linux source converter to convert the names, now that 
2438 the converter ignores quoted strings.
2440 Example Code and Data Size: These are the sizes for the OS-independent 
2441 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2442 debug version of the code includes the debug output trace mechanism and has 
2443 a much larger code and data size.
2445   Previous Release:
2447     Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
2448     Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
2449   Current Release:
2450     Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
2451     Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
2454 2) iASL Compiler/Disassembler and Tools:
2456 Implemented 3 new warnings for iASL, and implemented multiple warning levels 
2457 (w2 flag).
2459 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not 
2460 WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 
2461 check for the possible timeout, a warning is issued.
2463 2) Useless operators: If an ASL operator does not specify an optional target 
2464 operand and it also does not use the function return value from the 
2465 operator, a warning is issued since the operator effectively does nothing.
2467 3) Unreferenced objects: If a namespace object is created, but never 
2468 referenced, a warning is issued. This is a warning level 2 since there are 
2469 cases where this is ok, such as when a secondary table is loaded that uses 
2470 the unreferenced objects. Even so, care is taken to only flag objects that 
2471 don't look like they will ever be used. For example, the reserved methods 
2472 (starting with an underscore) are usually not referenced because it is 
2473 expected that the OS will invoke them.
2475 ----------------------------------------
2476 31 March 2006. Summary of changes for version 20060331:
2478 1) ACPI CA Core Subsystem:
2480 Implemented header file support for the following additional ACPI tables: 
2481 ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support, 
2482 all current and known ACPI tables are now defined in the ACPICA headers and 
2483 are available for use by device drivers and other software.
2485 Implemented support to allow tables that contain ACPI names with invalid 
2486 characters to be loaded. Previously, this would cause the table load to 
2487 fail, but since there are several known cases of such tables on existing 
2488 machines, this change was made to enable ACPI support for them. Also, this 
2489 matches the behavior of the Microsoft ACPI implementation.
2491 Fixed a couple regressions introduced during the memory optimization in the 
2492 20060317 release. The namespace node definition required additional 
2493 reorganization and an internal datatype that had been changed to 8-bit was 
2494 restored to 32-bit. (Valery Podrezov)
2496 Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 
2497 could be passed through to AcpiOsReleaseObject which is unexpected. Such 
2498 null pointers are now trapped and ignored, matching the behavior of the 
2499 previous implementation before the deployment of AcpiOsReleaseObject.
2500 (Valery Podrezov, Fiodor Suietov)
2502 Fixed a memory mapping leak during the deletion of a SystemMemory operation 
2503 region where a cached memory mapping was not deleted. This became a 
2504 noticeable problem for operation regions that are defined within frequently 
2505 used control methods. (Dana Meyers)
2507 Reorganized the ACPI table header files into two main files: one for the 
2508 ACPI tables consumed by the ACPICA core, and another for the miscellaneous 
2509 ACPI tables that are consumed by the drivers and other software. The various 
2510 FADT definitions were merged into one common section and three different 
2511 tables (ACPI 1.0, 1.0+, and 2.0)
2513 Example Code and Data Size: These are the sizes for the OS-independent 
2514 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2515 debug version of the code includes the debug output trace mechanism and has 
2516 a much larger code and data size.
2518   Previous Release:
2519     Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
2520     Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
2521   Current Release:
2522     Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
2523     Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
2526 2) iASL Compiler/Disassembler and Tools:
2528 Disassembler: Implemented support to decode and format all non-AML ACPI 
2529 tables (tables other than DSDTs and SSDTs.) This includes the new tables 
2530 added to the ACPICA headers, therefore all current and known ACPI tables are 
2531 supported.
2533 Disassembler: The change to allow ACPI names with invalid characters also 
2534 enables the disassembly of such tables. Invalid characters within names are 
2535 changed to '*' to make the name printable; the iASL compiler will still 
2536 generate an error for such names, however, since this is an invalid ACPI 
2537 character.
2539 Implemented an option for AcpiXtract (-a) to extract all tables found in the 
2540 input file. The default invocation extracts only the DSDTs and SSDTs.
2542 Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 
2543 makefile for the AcpiXtract utility.
2545 ----------------------------------------
2546 17 March 2006. Summary of changes for version 20060317:
2548 1) ACPI CA Core Subsystem:
2550 Implemented the use of a cache object for all internal namespace nodes. 
2551 Since there are about 1000 static nodes in a typical system, this will 
2552 decrease memory use for cache implementations that minimize per-allocation 
2553 overhead (such as a slab allocator.)
2555 Removed the reference count mechanism for internal namespace nodes, since it 
2556 was deemed unnecessary. This reduces the size of each namespace node by 
2557 about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case, 
2558 and 32 bytes for the 64-bit case.
2560 Optimized several internal data structures to reduce object size on 64-bit 
2561 platforms by packing data within the 64-bit alignment. This includes the 
2562 frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 
2563 instances corresponding to the namespace objects.
2565 Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1" 
2566 and "Windows 2006".
2568 Split the allocation tracking mechanism out to a separate file, from 
2569 utalloc.c to uttrack.c. This mechanism appears to be only useful for 
2570 application-level code. Kernels may wish to not include uttrack.c in 
2571 distributions.
2573 Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated 
2574 code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 
2575 macros.)
2577 Code and Data Size: These are the sizes for the acpica.lib produced by the 
2578 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 
2579 driver or OSPM code. The debug version of the code includes the debug output 
2580 trace mechanism and has a much larger code and data size. Note that these 
2581 values will vary depending on the efficiency of the compiler and the 
2582 compiler options used during generation.
2584   Previous Release:
2585     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2586     Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
2587   Current Release:
2588     Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
2589     Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
2592 2) iASL Compiler/Disassembler and Tools:
2594 Implemented an ANSI C version of the acpixtract utility. This version will 
2595 automatically extract the DSDT and all SSDTs from the input acpidump text 
2596 file and dump the binary output to separate files. It can also display a 
2597 summary of the input file including the headers for each table found and 
2598 will extract any single ACPI table, with any signature. (See 
2599 source/tools/acpixtract)
2601 ----------------------------------------
2602 10 March 2006. Summary of changes for version 20060310:
2604 1) ACPI CA Core Subsystem:
2606 Tagged all external interfaces to the subsystem with the new 
2607 ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist 
2608 kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 
2609 macro. The default definition is NULL.
2611 Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId. 
2612 This allows the host to define this as necessary to simplify kernel 
2613 integration. The default definition is ACPI_NATIVE_UINT.
2615 Fixed two interpreter problems related to error processing, the deletion of 
2616 objects, and placing invalid pointers onto the internal operator result 
2617 stack. BZ 6028, 6151 (Valery Podrezov)
2619 Increased the reference count threshold where a warning is emitted for large 
2620 reference counts in order to eliminate unnecessary warnings on systems with 
2621 large namespaces (especially 64-bit.) Increased the value from 0x400 to 
2622 0x800.
2624 Due to universal disagreement as to the meaning of the 'c' in the calloc() 
2625 function, the ACPI_MEM_CALLOCATE macro has been renamed to 
2626 ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 
2627 ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 
2628 ACPI_FREE.
2630 Code and Data Size: These are the sizes for the acpica.lib produced by the 
2631 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 
2632 driver or OSPM code. The debug version of the code includes the debug output 
2633 trace mechanism and has a much larger code and data size. Note that these 
2634 values will vary depending on the efficiency of the compiler and the 
2635 compiler options used during generation.
2637   Previous Release:
2638     Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
2639     Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
2640   Current Release:
2641     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2642     Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
2645 2) iASL Compiler/Disassembler:
2647 Disassembler: implemented support for symbolic resource descriptor 
2648 references. If a CreateXxxxField operator references a fixed offset within a 
2649 resource descriptor, a name is assigned to the descriptor and the offset is 
2650 translated to the appropriate resource tag and pathname. The addition of 
2651 this support brings the disassembled code very close to the original ASL 
2652 source code and helps eliminate run-time errors when the disassembled code 
2653 is modified (and recompiled) in such a way as to invalidate the original 
2654 fixed offsets.
2656 Implemented support for a Descriptor Name as the last parameter to the ASL 
2657 Register() macro. This parameter was inadvertently left out of the ACPI 
2658 specification, and will be added for ACPI 3.0b.
2660 Fixed a problem where the use of the "_OSI" string (versus the full path 
2661 "\_OSI") caused an internal compiler error. ("No back ptr to op")
2663 Fixed a problem with the error message that occurs when an invalid string is 
2664 used for a _HID object (such as one with an embedded asterisk: "*PNP010A".) 
2665 The correct message is now displayed.
2667 ----------------------------------------
2668 17 February 2006. Summary of changes for version 20060217:
2670 1) ACPI CA Core Subsystem:
2672 Implemented a change to the IndexField support to match the behavior of the 
2673 Microsoft AML interpreter. The value written to the Index register is now a 
2674 byte offset, no longer an index based upon the width of the Data register. 
2675 This should fix IndexField problems seen on some machines where the Data 
2676 register is not exactly one byte wide. The ACPI specification will be 
2677 clarified on this point.
2679 Fixed a problem where several resource descriptor types could overrun the 
2680 internal descriptor buffer due to size miscalculation: VendorShort, 
2681 VendorLong, and Interrupt. This was noticed on IA64 machines, but could 
2682 affect all platforms.
2684 Fixed a problem where individual resource descriptors were misaligned within 
2685 the internal buffer, causing alignment faults on IA64 platforms.
2687 Code and Data Size: These are the sizes for the acpica.lib produced by the 
2688 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 
2689 driver or OSPM code. The debug version of the code includes the debug output 
2690 trace mechanism and has a much larger code and data size. Note that these 
2691 values will vary depending on the efficiency of the compiler and the 
2692 compiler options used during generation.
2694   Previous Release:
2695     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2696     Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
2697   Current Release:
2698     Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
2699     Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
2702 2) iASL Compiler/Disassembler:
2704 Implemented support for new reserved names: _WDG and _WED are Microsoft 
2705 extensions for Windows Instrumentation Management, _TDL is a new ACPI-
2706 defined method (Throttling Depth Limit.)
2708 Fixed a problem where a zero-length VendorShort or VendorLong resource 
2709 descriptor was incorrectly emitted as a descriptor of length one.
2711 ----------------------------------------
2712 10 February 2006. Summary of changes for version 20060210:
2714 1) ACPI CA Core Subsystem:
2716 Removed a couple of extraneous ACPI_ERROR messages that appeared during 
2717 normal execution. These became apparent after the conversion from 
2718 ACPI_DEBUG_PRINT.
2720 Fixed a problem where the CreateField operator could hang if the BitIndex or 
2721 NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
2723 Fixed a problem where a DeRefOf operation on a buffer object incorrectly 
2724 failed with an exception. This also fixes a couple of related RefOf and 
2725 DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
2727 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of 
2728 AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ 
2729 5480)
2731 Implemented a memory cleanup at the end of the execution of each iteration 
2732 of an AML While() loop, preventing the accumulation of outstanding objects. 
2733 (Valery Podrezov, BZ 5427)
2735 Eliminated a chunk of duplicate code in the object resolution code. (Valery 
2736 Podrezov, BZ 5336)
2738 Fixed several warnings during the 64-bit code generation.
2740 The AcpiSrc source code conversion tool now inserts one line of whitespace 
2741 after an if() statement that is followed immediately by a comment, improving 
2742 readability of the Linux code.
2744 Code and Data Size: The current and previous library sizes for the core 
2745 subsystem are shown below. These are the code and data sizes for the 
2746 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
2747 values do not include any ACPI driver or OSPM code. The debug version of the 
2748 code includes the debug output trace mechanism and has a much larger code 
2749 and data size. Note that these values will vary depending on the efficiency 
2750 of the compiler and the compiler options used during generation.
2752   Previous Release:
2753     Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
2754     Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
2755   Current Release:
2756     Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2757     Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
2760 2) iASL Compiler/Disassembler:
2762 Fixed a problem with the disassembly of a BankField operator with a complex 
2763 expression for the BankValue parameter.
2765 ----------------------------------------
2766 27 January 2006. Summary of changes for version 20060127:
2768 1) ACPI CA Core Subsystem:
2770 Implemented support in the Resource Manager to allow unresolved namestring 
2771 references within resource package objects for the _PRT method. This support 
2772 is in addition to the previously implemented unresolved reference support 
2773 within the AML parser. If the interpreter slack mode is enabled, these 
2774 unresolved references will be passed through to the caller as a NULL package 
2775 entry.
2777 Implemented and deployed new macros and functions for error and warning 
2778 messages across the subsystem. These macros are simpler and generate less 
2779 code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 
2780 ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 
2781 macros remain defined to allow ACPI drivers time to migrate to the new 
2782 macros.
2784 Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the 
2785 Acquire/Release Lock OSL interfaces.
2787 Fixed a problem where Alias ASL operators are sometimes not correctly 
2788 resolved, in both the interpreter and the iASL compiler.
2790 Fixed several problems with the implementation of the ConcatenateResTemplate 
2791 ASL operator. As per the ACPI specification, zero length buffers are now 
2792 treated as a single EndTag. One-length buffers always cause a fatal 
2793 exception. Non-zero length buffers that do not end with a full 2-byte EndTag 
2794 cause a fatal exception.
2796 Fixed a possible structure overwrite in the AcpiGetObjectInfo external 
2797 interface. (With assistance from Thomas Renninger)
2799 Code and Data Size: The current and previous library sizes for the core 
2800 subsystem are shown below. These are the code and data sizes for the 
2801 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
2802 values do not include any ACPI driver or OSPM code. The debug version of the 
2803 code includes the debug output trace mechanism and has a much larger code 
2804 and data size. Note that these values will vary depending on the efficiency 
2805 of the compiler and the compiler options used during generation.
2807   Previous Release:
2808     Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
2809     Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
2810   Current Release:
2811     Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
2812     Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
2815 2) iASL Compiler/Disassembler:
2817 Fixed an internal error that was generated for any forward references to ASL 
2818 Alias objects.
2820 ----------------------------------------
2821 13 January 2006. Summary of changes for version 20060113:
2823 1) ACPI CA Core Subsystem:
2825 Added 2006 copyright to all module headers and signons. This affects 
2826 virtually every file in the ACPICA core subsystem, iASL compiler, and the 
2827 utilities.
2829 Enhanced the ACPICA error reporting in order to simplify user migration to 
2830 the non-debug version of ACPICA. Replaced all instances of the 
2831 ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug 
2832 levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 
2833 respectively. This preserves all error and warning messages in the non-debug 
2834 version of the ACPICA code (this has been referred to as the "debug lite" 
2835 option.) Over 200 cases were converted to create a total of over 380 
2836 error/warning messages across the ACPICA code. This increases the code and 
2837 data size of the default non-debug version of the code somewhat (about 13K), 
2838 but all error/warning reporting may be disabled if desired (and code 
2839 eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 
2840 configuration option. The size of the debug version of ACPICA remains about 
2841 the same.
2843 Fixed a memory leak within the AML Debugger "Set" command. One object was 
2844 not properly deleted for every successful invocation of the command.
2846 Code and Data Size: The current and previous library sizes for the core 
2847 subsystem are shown below. These are the code and data sizes for the 
2848 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
2849 values do not include any ACPI driver or OSPM code. The debug version of the 
2850 code includes the debug output trace mechanism and has a much larger code 
2851 and data size. Note that these values will vary depending on the efficiency 
2852 of the compiler and the compiler options used during generation.
2854   Previous Release:
2855     Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
2856     Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
2857   Current Release:
2858     Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
2859     Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
2862 2) iASL Compiler/Disassembler:
2864 The compiler now officially supports the ACPI 3.0a specification that was 
2865 released on December 30, 2005. (Specification is available at www.acpi.info)
2867 ----------------------------------------
2868 16 December 2005. Summary of changes for version 20051216:
2870 1) ACPI CA Core Subsystem:
2872 Implemented optional support to allow unresolved names within ASL Package 
2873 objects. A null object is inserted in the package when a named reference 
2874 cannot be located in the current namespace. Enabled via the interpreter 
2875 slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines 
2876 that contain such code.
2878 Implemented an optimization to the initialization sequence that can improve 
2879 boot time. During ACPI device initialization, the _STA method is now run if 
2880 and only if the _INI method exists. The _STA method is used to determine if 
2881 the device is present; An _INI can only be run if _STA returns present, but 
2882 it is a waste of time to run the _STA method if the _INI does not exist. 
2883 (Prototype and assistance from Dong Wei)
2885 Implemented use of the C99 uintptr_t for the pointer casting macros if it is 
2886 available in the current compiler. Otherwise, the default (void *) cast is 
2887 used as before.
2889 Fixed some possible memory leaks found within the execution path of the 
2890 Break, Continue, If, and CreateField operators. (Valery Podrezov)
2892 Fixed a problem introduced in the 20051202 release where an exception is 
2893 generated during method execution if a control method attempts to declare 
2894 another method.
2896 Moved resource descriptor string constants that are used by both the AML 
2897 disassembler and AML debugger to the common utilities directory so that 
2898 these components are independent.
2900 Implemented support in the AcpiExec utility (-e switch) to globally ignore 
2901 exceptions during control method execution (method is not aborted.)
2903 Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 
2904 generation.
2906 Code and Data Size: The current and previous library sizes for the core 
2907 subsystem are shown below. These are the code and data sizes for the 
2908 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
2909 values do not include any ACPI driver or OSPM code. The debug version of the 
2910 code includes the debug output trace mechanism and has a much larger code 
2911 and data size. Note that these values will vary depending on the efficiency 
2912 of the compiler and the compiler options used during generation.
2914   Previous Release:
2915     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
2916     Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
2917   Current Release:
2918     Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
2919     Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
2922 2) iASL Compiler/Disassembler:
2924 Fixed a problem where a CPU stack overflow fault could occur if a recursive 
2925 method call was made from within a Return statement.
2927 ----------------------------------------
2928 02 December 2005. Summary of changes for version 20051202:
2930 1) ACPI CA Core Subsystem:
2932 Modified the parsing of control methods to no longer create namespace 
2933 objects during the first pass of the parse. Objects are now created only 
2934 during the execute phase, at the moment the namespace creation operator is 
2935 encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This 
2936 should eliminate ALREADY_EXISTS exceptions seen on some machines where 
2937 reentrant control methods are protected by an AML mutex. The mutex will now 
2938 correctly block multiple threads from attempting to create the same object 
2939 more than once.
2941 Increased the number of available Owner Ids for namespace object tracking 
2942 from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on 
2943 some machines with a large number of ACPI tables (either static or dynamic).
2945 Fixed a problem with the AcpiExec utility where a fault could occur when the 
2946 -b switch (batch mode) is used.
2948 Enhanced the namespace dump routine to output the owner ID for each 
2949 namespace object.
2951 Code and Data Size: The current and previous library sizes for the core 
2952 subsystem are shown below. These are the code and data sizes for the 
2953 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
2954 values do not include any ACPI driver or OSPM code. The debug version of the 
2955 code includes the debug output trace mechanism and has a much larger code 
2956 and data size. Note that these values will vary depending on the efficiency 
2957 of the compiler and the compiler options used during generation.
2959   Previous Release:
2960     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
2961     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
2962   Current Release:
2963     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
2964     Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
2967 2) iASL Compiler/Disassembler:
2969 Fixed a parse error during compilation of certain Switch/Case constructs. To 
2970 simplify the parse, the grammar now allows for multiple Default statements 
2971 and this error is now detected and flagged during the analysis phase.
2973 Disassembler: The disassembly now includes the contents of the original 
2974 table header within a comment at the start of the file. This includes the 
2975 name and version of the original ASL compiler.
2977 ----------------------------------------
2978 17 November 2005. Summary of changes for version 20051117:
2980 1) ACPI CA Core Subsystem:
2982 Fixed a problem in the AML parser where the method thread count could be 
2983 decremented below zero if any errors occurred during the method parse phase. 
2984 This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines. 
2985 This also fixed a related regression with the mechanism that detects and 
2986 corrects methods that cannot properly handle reentrancy (related to the 
2987 deployment of the new OwnerId mechanism.)
2989 Eliminated the pre-parsing of control methods (to detect errors) during 
2990 table load. Related to the problem above, this was causing unwind issues if 
2991 any errors occurred during the parse, and it seemed to be overkill. A table 
2992 load should not be aborted if there are problems with any single control 
2993 method, thus rendering this feature rather pointless.
2995 Fixed a problem with the new table-driven resource manager where an internal 
2996 buffer overflow could occur for small resource templates.
2998 Implemented a new external interface, AcpiGetVendorResource. This interface 
2999 will find and return a vendor-defined resource descriptor within a _CRS or 
3000 _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas.
3002 Removed the length limit (200) on string objects as per the upcoming ACPI 
3003 3.0A specification. This affects the following areas of the interpreter: 1) 
3004 any implicit conversion of a Buffer to a String, 2) a String object result 
3005 of the ASL Concatentate operator, 3) the String object result of the ASL 
3006 ToString operator.
3008 Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER 
3009 on a semaphore object would incorrectly timeout. This allows the 
3010 multithreading features of the AcpiExec utility to work properly under 
3011 Windows.
3013 Updated the Linux makefiles for the iASL compiler and AcpiExec to include 
3014 the recently added file named "utresrc.c".
3016 Code and Data Size: The current and previous library sizes for the core 
3017 subsystem are shown below. These are the code and data sizes for the 
3018 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
3019 values do not include any ACPI driver or OSPM code. The debug version of the 
3020 code includes the debug output trace mechanism and has a much larger code 
3021 and data size. Note that these values will vary depending on the efficiency 
3022 of the compiler and the compiler options used during generation.
3024   Previous Release:
3025     Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
3026     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3027   Current Release:
3028     Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
3029     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3032 2) iASL Compiler/Disassembler:
3034 Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 
3035 specification. For the iASL compiler, this means that string literals within 
3036 the source ASL can be of any length. 
3038 Enhanced the listing output to dump the AML code for resource descriptors 
3039 immediately after the ASL code for each descriptor, instead of in a block at 
3040 the end of the entire resource template.
3042 Enhanced the compiler debug output to dump the entire original parse tree 
3043 constructed during the parse phase, before any transforms are applied to the 
3044 tree. The transformed tree is dumped also.
3046 ----------------------------------------
3047 02 November 2005. Summary of changes for version 20051102:
3049 1) ACPI CA Core Subsystem:
3051 Modified the subsystem initialization sequence to improve GPE support. The 
3052 GPE initialization has been split into two parts in order to defer execution 
3053 of the _PRW methods (Power Resources for Wake) until after the hardware is 
3054 fully initialized and the SCI handler is installed. This allows the _PRW 
3055 methods to access fields protected by the Global Lock. This will fix systems 
3056 where a NO_GLOBAL_LOCK exception has been seen during initialization.
3058 Converted the ACPI internal object disassemble and display code within the 
3059 AML debugger to fully table-driven operation, reducing code size and 
3060 increasing maintainability.
3062 Fixed a regression with the ConcatenateResTemplate() ASL operator introduced 
3063 in the 20051021 release.
3065 Implemented support for "local" internal ACPI object types within the 
3066 debugger "Object" command and the AcpiWalkNamespace external interfaces. 
3067 These local types include RegionFields, BankFields, IndexFields, Alias, and 
3068 reference objects.
3070 Moved common AML resource handling code into a new file, "utresrc.c". This 
3071 code is shared by both the Resource Manager and the AML Debugger.
3073 Code and Data Size: The current and previous library sizes for the core 
3074 subsystem are shown below. These are the code and data sizes for the 
3075 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
3076 values do not include any ACPI driver or OSPM code. The debug version of the 
3077 code includes the debug output trace mechanism and has a much larger code 
3078 and data size. Note that these values will vary depending on the efficiency 
3079 of the compiler and the compiler options used during generation.
3081   Previous Release:
3082     Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
3083     Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
3084   Current Release:
3085     Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
3086     Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3089 2) iASL Compiler/Disassembler:
3091 Fixed a problem with very large initializer lists (more than 4000 elements) 
3092 for both Buffer and Package objects where the parse stack could overflow.
3094 Enhanced the pre-compile source code scan for non-ASCII characters to ignore 
3095 characters within comment fields. The scan is now always performed and is no 
3096 longer optional, detecting invalid characters within a source file 
3097 immediately rather than during the parse phase or later.
3099 Enhanced the ASL grammar definition to force early reductions on all list-
3100 style grammar elements so that the overall parse stack usage is greatly 
3101 reduced. This should improve performance and reduce the possibility of parse 
3102 stack overflow.
3104 Eliminated all reduce/reduce conflicts in the iASL parser generation. Also, 
3105 with the addition of a %expected statement, the compiler generates from 
3106 source with no warnings.
3108 Fixed a possible segment fault in the disassembler if the input filename 
3109 does not contain a "dot" extension (Thomas Renninger).
3111 ----------------------------------------
3112 21 October 2005. Summary of changes for version 20051021:
3114 1) ACPI CA Core Subsystem:
3116 Implemented support for the EM64T and other x86-64 processors. This 
3117 essentially entails recognizing that these processors support non-aligned 
3118 memory transfers. Previously, all 64-bit processors were assumed to lack 
3119 hardware support for non-aligned transfers.
3121 Completed conversion of the Resource Manager to nearly full table-driven 
3122 operation. Specifically, the resource conversion code (convert AML to 
3123 internal format and the reverse) and the debug code to dump internal 
3124 resource descriptors are fully table-driven, reducing code and data size and 
3125 improving maintainability.
3127 The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word 
3128 on 64-bit processors instead of a fixed 32-bit word. (With assistance from 
3129 Alexey Starikovskiy)
3131 Implemented support within the resource conversion code for the Type-
3132 Specific byte within the various ACPI 3.0 *WordSpace macros.
3134 Fixed some issues within the resource conversion code for the type-specific 
3135 flags for both Memory and I/O address resource descriptors. For Memory, 
3136 implemented support for the MTP and TTP flags. For I/O, split the TRS and 
3137 TTP flags into two separate fields.
3139 Code and Data Size: The current and previous library sizes for the core 
3140 subsystem are shown below. These are the code and data sizes for the 
3141 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
3142 values do not include any ACPI driver or OSPM code. The debug version of the 
3143 code includes the debug output trace mechanism and has a much larger code 
3144 and data size. Note that these values will vary depending on the efficiency 
3145 of the compiler and the compiler options used during generation.
3147   Previous Release:
3148     Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
3149     Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
3150   Current Release:
3151     Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
3152     Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
3156 2) iASL Compiler/Disassembler:
3158 Relaxed a compiler restriction that disallowed a ResourceIndex byte if the 
3159 corresponding ResourceSource string was not also present in a resource 
3160 descriptor declaration. This restriction caused problems with existing 
3161 AML/ASL code that includes the Index byte without the string. When such AML 
3162 was disassembled, it could not be compiled without modification. Further, 
3163 the modified code created a resource template with a different size than the 
3164 original, breaking code that used fixed offsets into the resource template 
3165 buffer.
3167 Removed a recent feature of the disassembler to ignore a lone ResourceIndex 
3168 byte. This byte is now emitted if present so that the exact AML can be 
3169 reproduced when the disassembled code is recompiled.
3171 Improved comments and text alignment for the resource descriptor code 
3172 emitted by the disassembler.
3174 Implemented disassembler support for the ACPI 3.0 AccessSize field within a 
3175 Register() resource descriptor.
3177 ----------------------------------------
3178 30 September 2005. Summary of changes for version 20050930:
3180 1) ACPI CA Core Subsystem:
3182 Completed a major overhaul of the Resource Manager code - specifically, 
3183 optimizations in the area of the AML/internal resource conversion code. The 
3184 code has been optimized to simplify and eliminate duplicated code, CPU stack 
3185 use has been decreased by optimizing function parameters and local 
3186 variables, and naming conventions across the manager have been standardized 
3187 for clarity and ease of maintenance (this includes function, parameter, 
3188 variable, and struct/typedef names.) The update may force changes in some 
3189 driver code, depending on how resources are handled by the host OS.
3191 All Resource Manager dispatch and information tables have been moved to a 
3192 single location for clarity and ease of maintenance. One new file was 
3193 created, named "rsinfo.c".
3195 The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 
3196 guarantee that the argument is not evaluated twice, making them less prone 
3197 to macro side-effects. However, since there exists the possibility of 
3198 additional stack use if a particular compiler cannot optimize them (such as 
3199 in the debug generation case), the original macros are optionally available.  
3200 Note that some invocations of the return_VALUE macro may now cause size 
3201 mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to 
3202 eliminate these. (From Randy Dunlap)
3204 Implemented a new mechanism to enable debug tracing for individual control 
3205 methods. A new external interface, AcpiDebugTrace, is provided to enable 
3206 this mechanism. The intent is to allow the host OS to easily enable and 
3207 disable tracing for problematic control methods. This interface can be 
3208 easily exposed to a user or debugger interface if desired. See the file 
3209 psxface.c for details.
3211 AcpiUtCallocate will now return a valid pointer if a length of zero is 
3212 specified - a length of one is used and a warning is issued. This matches 
3213 the behavior of AcpiUtAllocate.
3215 Code and Data Size: The current and previous library sizes for the core 
3216 subsystem are shown below. These are the code and data sizes for the 
3217 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
3218 values do not include any ACPI driver or OSPM code. The debug version of the 
3219 code includes the debug output trace mechanism and has a much larger code 
3220 and data size. Note that these values will vary depending on the efficiency 
3221 of the compiler and the compiler options used during generation.
3223   Previous Release:
3224     Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
3225     Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
3226   Current Release:
3227     Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
3228     Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
3231 2) iASL Compiler/Disassembler:
3233 A remark is issued if the effective compile-time length of a package or 
3234 buffer is zero. Previously, this was a warning.
3236 ----------------------------------------
3237 16 September 2005. Summary of changes for version 20050916:
3239 1) ACPI CA Core Subsystem:
3241 Fixed a problem within the Resource Manager where support for the Generic 
3242 Register descriptor was not fully implemented. This descriptor is now fully 
3243 recognized, parsed, disassembled, and displayed.
3245 Completely restructured the Resource Manager code to utilize table-driven 
3246 dispatch and lookup, eliminating many of the large switch() statements. This 
3247 reduces overall subsystem code size and code complexity. Affects the 
3248 resource parsing and construction, disassembly, and debug dump output.
3250 Cleaned up and restructured the debug dump output for all resource 
3251 descriptors. Improved readability of the output and reduced code size.
3253 Fixed a problem where changes to internal data structures caused the 
3254 optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
3256 Code and Data Size: The current and previous library sizes for the core 
3257 subsystem are shown below. These are the code and data sizes for the 
3258 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
3259 values do not include any ACPI driver or OSPM code. The debug version of the 
3260 code includes the debug output trace mechanism and has a much larger code 
3261 and data size. Note that these values will vary depending on the efficiency 
3262 of the compiler and the compiler options used during generation.
3264   Previous Release:
3265     Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
3266     Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
3267   Current Release:
3268     Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
3269     Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
3272 2) iASL Compiler/Disassembler:
3274 Updated the disassembler to automatically insert an EndDependentFn() macro 
3275 into the ASL stream if this macro is missing in the original AML code, 
3276 simplifying compilation of the resulting ASL module.
3278 Fixed a problem in the disassembler where a disassembled ResourceSource 
3279 string (within a large resource descriptor) was not surrounded by quotes and 
3280 not followed by a comma, causing errors when the resulting ASL module was 
3281 compiled. Also, escape sequences within a ResourceSource string are now 
3282 handled correctly (especially "\\")
3284 ----------------------------------------
3285 02 September 2005. Summary of changes for version 20050902:
3287 1) ACPI CA Core Subsystem:
3289 Fixed a problem with the internal Owner ID allocation and deallocation 
3290 mechanisms for control method execution and recursive method invocation. 
3291 This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 
3292 messages seen on some systems. Recursive method invocation depth is 
3293 currently limited to 255. (Alexey Starikovskiy)
3295 Completely eliminated all vestiges of support for the "module-level 
3296 executable code" until this support is fully implemented and debugged. This 
3297 should eliminate the NO_RETURN_VALUE exceptions seen during table load on 
3298 some systems that invoke this support.
3300 Fixed a problem within the resource manager code where the transaction flags 
3301 for a 64-bit address descriptor were handled incorrectly in the type-
3302 specific flag byte.
3304 Consolidated duplicate code within the address descriptor resource manager 
3305 code, reducing overall subsystem code size.
3307 Fixed a fault when using the AML debugger "disassemble" command to 
3308 disassemble individual control methods.
3310 Removed references to the "release_current" directory within the Unix 
3311 release package.
3313 Code and Data Size: The current and previous core subsystem library sizes 
3314 are shown below. These are the code and data sizes for the acpica.lib 
3315 produced by the Microsoft Visual C++ 6.0 compiler. These values do not 
3316 include any ACPI driver or OSPM code. The debug version of the code includes 
3317 the debug output trace mechanism and has a much larger code and data size. 
3318 Note that these values will vary depending on the efficiency of the compiler 
3319 and the compiler options used during generation.
3321   Previous Release:
3322     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3323     Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
3324   Current Release:
3325     Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
3326     Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
3329 2) iASL Compiler/Disassembler:
3331 Implemented an error check for illegal duplicate values in the interrupt and 
3332 dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 
3333 Interrupt().
3335 Implemented error checking for the Irq() and IrqNoFlags() macros to detect 
3336 too many values in the interrupt list (16 max) and invalid values in the 
3337 list (range 0 - 15)
3339 The maximum length string literal within an ASL file is now restricted to 
3340 200 characters as per the ACPI specification.
3342 Fixed a fault when using the -ln option (generate namespace listing).
3344 Implemented an error check to determine if a DescriptorName within a 
3345 resource descriptor has already been used within the current scope.
3347 ----------------------------------------
3348 15 August 2005.  Summary of changes for version 20050815:
3350 1) ACPI CA Core Subsystem:
3352 Implemented a full bytewise compare to determine if a table load request is 
3353 attempting to load a duplicate table. The compare is performed if the table 
3354 signatures and table lengths match. This will allow different tables with 
3355 the same OEM Table ID and revision to be loaded - probably against the ACPI 
3356 specification, but discovered in the field nonetheless.
3358 Added the changes.txt logfile to each of the zipped release packages.
3360 Code and Data Size: Current and previous core subsystem library sizes are 
3361 shown below. These are the code and data sizes for the acpica.lib produced 
3362 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3363 any ACPI driver or OSPM code. The debug version of the code includes the 
3364 debug output trace mechanism and has a much larger code and data size. Note 
3365 that these values will vary depending on the efficiency of the compiler and 
3366 the compiler options used during generation.
3368   Previous Release:
3369     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3370     Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
3371   Current Release:
3372     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3373     Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
3376 2) iASL Compiler/Disassembler:
3378 Fixed a problem where incorrect AML code could be generated for Package 
3379 objects if optimization is disabled (via the -oa switch).
3381 Fixed a problem with where incorrect AML code is generated for variable-
3382 length packages when the package length is not specified and the number of 
3383 initializer values is greater than 255.
3386 ----------------------------------------
3387 29 July 2005.  Summary of changes for version 20050729:
3389 1) ACPI CA Core Subsystem:
3391 Implemented support to ignore an attempt to install/load a particular ACPI 
3392 table more than once. Apparently there exists BIOS code that repeatedly 
3393 attempts to load the same SSDT upon certain events. With assistance from 
3394 Venkatesh Pallipadi.
3396 Restructured the main interface to the AML parser in order to correctly 
3397 handle all exceptional conditions. This will prevent leakage of the OwnerId 
3398 resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some 
3399 machines. With assistance from Alexey Starikovskiy.
3401 Support for "module level code" has been disabled in this version due to a 
3402 number of issues that have appeared on various machines. The support can be 
3403 enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 
3404 compilation. When the issues are fully resolved, the code will be enabled by 
3405 default again.
3407 Modified the internal functions for debug print support to define the 
3408 FunctionName parameter as a (const char *) for compatibility with compiler 
3409 built-in macros such as __FUNCTION__, etc.
3411 Linted the entire ACPICA source tree for both 32-bit and 64-bit.
3413 Implemented support to display an object count summary for the AML Debugger 
3414 commands Object and Methods.
3416 Code and Data Size: Current and previous core subsystem library sizes are 
3417 shown below. These are the code and data sizes for the acpica.lib produced 
3418 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3419 any ACPI driver or OSPM code. The debug version of the code includes the 
3420 debug output trace mechanism and has a much larger code and data size. Note 
3421 that these values will vary depending on the efficiency of the compiler and 
3422 the compiler options used during generation.
3424   Previous Release:
3425     Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
3426     Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
3427   Current Release:
3428     Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3429     Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
3432 2) iASL Compiler/Disassembler:
3434 Fixed a regression that appeared in the 20050708 version of the compiler 
3435 where an error message was inadvertently emitted for invocations of the _OSI 
3436 reserved control method.
3438 ----------------------------------------
3439 08 July 2005.  Summary of changes for version 20050708:
3441 1) ACPI CA Core Subsystem:
3443 The use of the CPU stack in the debug version of the subsystem has been 
3444 considerably reduced. Previously, a debug structure was declared in every 
3445 function that used the debug macros. This structure has been removed in 
3446 favor of declaring the individual elements as parameters to the debug 
3447 functions. This reduces the cumulative stack use during nested execution of 
3448 ACPI function calls at the cost of a small increase in the code size of the 
3449 debug version of the subsystem. With assistance from Alexey Starikovskiy and 
3450 Len Brown.
3452 Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 
3453 headers to define a macro that will return the current function name at 
3454 runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by 
3455 the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 
3456 compiler-dependent header, the function name is saved on the CPU stack (one 
3457 pointer per function.) This mechanism is used because apparently there 
3458 exists no standard ANSI-C defined macro that that returns the function name.
3460 Redesigned and reimplemented the "Owner ID" mechanism used to track 
3461 namespace objects created/deleted by ACPI tables and control method 
3462 execution. A bitmap is now used to allocate and free the IDs, thus solving 
3463 the wraparound problem present in the previous implementation. The size of 
3464 the namespace node descriptor was reduced by 2 bytes as a result (Alexey 
3465 Starikovskiy).
3467 Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield 
3468 flag definitions within the headers for the predefined ACPI tables. These 
3469 have been replaced by UINT8_BIT in order to increase the code portability of 
3470 the subsystem. If the use of UINT8 remains a problem, we may be forced to 
3471 eliminate bitfields entirely because of a lack of portability.
3473 Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This 
3474 is a frequently used function and this improvement increases the performance 
3475 of the entire subsystem (Alexey Starikovskiy).
3477 Fixed several possible memory leaks and the inverse - premature object 
3478 deletion (Alexey Starikovskiy).
3480 Code and Data Size: Current and previous core subsystem library sizes are 
3481 shown below. These are the code and data sizes for the acpica.lib produced 
3482 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3483 any ACPI driver or OSPM code. The debug version of the code includes the 
3484 debug output trace mechanism and has a much larger code and data size. Note 
3485 that these values will vary depending on the efficiency of the compiler and 
3486 the compiler options used during generation.
3488   Previous Release:
3489     Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
3490     Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
3491   Current Release:
3492     Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
3493     Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
3495 ----------------------------------------
3496 24 June 2005.  Summary of changes for version 20050624:
3498 1) ACPI CA Core Subsystem:
3500 Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 
3501 the host-defined cache object. This allows the OSL implementation to define 
3502 and type this object in any manner desired, simplifying the OSL 
3503 implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 
3504 Linux, and should be defined in the OS-specific header file for other 
3505 operating systems as required.
3507 Changed the interface to AcpiOsAcquireObject to directly return the 
3508 requested object as the function return (instead of ACPI_STATUS.) This 
3509 change was made for performance reasons, since this is the purpose of the 
3510 interface in the first place. AcpiOsAcquireObject is now similar to the 
3511 AcpiOsAllocate interface.
3513 Implemented a new AML debugger command named Businfo. This command displays 
3514 information about all devices that have an associate _PRT object. The _ADR, 
3515 _HID, _UID, and _CID are displayed for these devices.
3517 Modified the initialization sequence in AcpiInitializeSubsystem to call the 
3518 OSL interface AcpiOslInitialize first, before any local initialization. This 
3519 change was required because the global initialization now calls OSL 
3520 interfaces.
3522 Enhanced the Dump command to display the entire contents of Package objects 
3523 (including all sub-objects and their values.) 
3525 Restructured the code base to split some files because of size and/or 
3526 because the code logically belonged in a separate file. New files are listed 
3527 below. All makefiles and project files included in the ACPI CA release have 
3528 been updated.
3529     utilities/utcache.c           /* Local cache interfaces */
3530     utilities/utmutex.c           /* Local mutex support */
3531     utilities/utstate.c           /* State object support */
3532     interpreter/parser/psloop.c   /* Main AML parse loop */
3534 Code and Data Size: Current and previous core subsystem library sizes are 
3535 shown below. These are the code and data sizes for the acpica.lib produced 
3536 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3537 any ACPI driver or OSPM code. The debug version of the code includes the 
3538 debug output trace mechanism and has a much larger code and data size. Note 
3539 that these values will vary depending on the efficiency of the compiler and 
3540 the compiler options used during generation.
3542   Previous Release:
3543     Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
3544     Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
3545   Current Release:
3546     Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
3547     Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
3550 2) iASL Compiler/Disassembler:
3552 Fixed a regression introduced in version 20050513 where the use of a Package 
3553 object within a Case() statement caused a compile time exception. The 
3554 original behavior has been restored (a Match() operator is emitted.)
3556 ----------------------------------------
3557 17 June 2005.  Summary of changes for version 20050617:
3559 1) ACPI CA Core Subsystem:
3561 Moved the object cache operations into the OS interface layer (OSL) to allow 
3562 the host OS to handle these operations if desired (for example, the Linux 
3563 OSL will invoke the slab allocator). This support is optional; the compile 
3564 time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache 
3565 code in the ACPI CA core. The new OSL interfaces are shown below. See 
3566 utalloc.c for an example implementation, and acpiosxf.h for the exact 
3567 interface definitions. With assistance from Alexey Starikovskiy.
3568     AcpiOsCreateCache
3569     AcpiOsDeleteCache
3570     AcpiOsPurgeCache
3571     AcpiOsAcquireObject
3572     AcpiOsReleaseObject
3574 Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return 
3575 and restore a flags parameter. This fits better with many OS lock models. 
3576 Note: the current execution state (interrupt handler or not) is no longer 
3577 passed to these interfaces. If necessary, the OSL must determine this state 
3578 by itself, a simple and fast operation. With assistance from Alexey 
3579 Starikovskiy.
3581 Fixed a problem in the ACPI table handling where a valid XSDT was assumed 
3582 present if the revision of the RSDP was 2 or greater. According to the ACPI 
3583 specification, the XSDT is optional in all cases, and the table manager 
3584 therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 
3585 Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain 
3586 only the RSDT.
3588 Fixed an interpreter problem with the Mid() operator in the case of an input 
3589 string where the resulting output string is of zero length. It now correctly 
3590 returns a valid, null terminated string object instead of a string object 
3591 with a null pointer.
3593 Fixed a problem with the control method argument handling to allow a store 
3594 to an Arg object that already contains an object of type Device. The Device 
3595 object is now correctly overwritten. Previously, an error was returned.
3598 Enhanced the debugger Find command to emit object values in addition to the 
3599 found object pathnames. The output format is the same as the dump namespace 
3600 command.
3602 Enhanced the debugger Set command. It now has the ability to set the value 
3603 of any Named integer object in the namespace (Previously, only method locals 
3604 and args could be set.)
3606 Code and Data Size: Current and previous core subsystem library sizes are 
3607 shown below. These are the code and data sizes for the acpica.lib produced 
3608 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3609 any ACPI driver or OSPM code. The debug version of the code includes the 
3610 debug output trace mechanism and has a much larger code and data size. Note 
3611 that these values will vary depending on the efficiency of the compiler and 
3612 the compiler options used during generation.
3614   Previous Release:
3615     Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
3616     Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
3617   Current Release:
3618     Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
3619     Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
3622 2) iASL Compiler/Disassembler:
3624 Fixed a regression in the disassembler where if/else/while constructs were 
3625 output incorrectly. This problem was introduced in the previous release 
3626 (20050526). This problem also affected the single-step disassembly in the 
3627 debugger.
3629 Fixed a problem where compiling the reserved _OSI method would randomly (but 
3630 rarely) produce compile errors.
3632 Enhanced the disassembler to emit compilable code in the face of incorrect 
3633 AML resource descriptors. If the optional ResourceSourceIndex is present, 
3634 but the ResourceSource is not, do not emit the ResourceSourceIndex in the 
3635 disassembly. Otherwise, the resulting code cannot be compiled without 
3636 errors.
3638 ----------------------------------------
3639 26 May 2005.  Summary of changes for version 20050526:
3641 1) ACPI CA Core Subsystem:
3643 Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 
3644 the module level (not within a control method.) These opcodes are executed 
3645 exactly once at the time the table is loaded. This type of code was legal up 
3646 until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in 
3647 order to provide backwards compatibility with earlier BIOS implementations. 
3648 This eliminates the "Encountered executable code at module level" warning 
3649 that was previously generated upon detection of such code.
3651 Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 
3652 inadvertently be generated during the lookup of namespace objects in the 
3653 second pass parse of ACPI tables and control methods. It appears that this 
3654 problem could occur during the resolution of forward references to namespace 
3655 objects.
3657 Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 
3658 corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 
3659 allows the deadlock detection debug code to be compiled out in the normal 
3660 case, improving mutex performance (and overall subsystem performance) 
3661 considerably.
3663 Implemented a handful of miscellaneous fixes for possible memory leaks on 
3664 error conditions and error handling control paths. These fixes were 
3665 suggested by FreeBSD and the Coverity Prevent source code analysis tool.
3667 Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c) 
3668 to prevent a fault in this error case.
3670 Code and Data Size: Current and previous core subsystem library sizes are 
3671 shown below. These are the code and data sizes for the acpica.lib produced 
3672 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3673 any ACPI driver or OSPM code. The debug version of the code includes the 
3674 debug output trace mechanism and has a much larger code and data size. Note 
3675 that these values will vary depending on the efficiency of the compiler and 
3676 the compiler options used during generation.
3678   Previous Release:
3679     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3680     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3681   Current Release:
3682     Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
3683     Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
3686 2) iASL Compiler/Disassembler:
3688 Implemented support to allow Type 1 and Type 2 ASL operators to appear at 
3689 the module level (not within a control method.) These operators will be 
3690 executed once at the time the table is loaded. This type of code was legal 
3691 up until the release of ACPI 2.0B (2002) and is now supported by the iASL 
3692 compiler in order to provide backwards compatibility with earlier BIOS ASL 
3693 code.
3695 The ACPI integer width (specified via the table revision ID or the -r 
3696 override, 32 or 64 bits) is now used internally during compile-time constant 
3697 folding to ensure that constants are truncated to 32 bits if necessary. 
3698 Previously, the revision ID value was only emitted in the AML table header.
3700 An error message is now generated for the Mutex and Method operators if the 
3701 SyncLevel parameter is outside the legal range of 0 through 15.
3703 Fixed a problem with the Method operator ParameterTypes list handling (ACPI 
3704 3.0). Previously, more than 2 types or 2 arguments generated a syntax error.  
3705 The actual underlying implementation of method argument typechecking is 
3706 still under development, however.
3708 ----------------------------------------
3709 13 May 2005.  Summary of changes for version 20050513:
3711 1) ACPI CA Core Subsystem:
3713 Implemented support for PCI Express root bridges -- added support for device 
3714 PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
3716 The interpreter now automatically truncates incoming 64-bit constants to 32 
3717 bits if currently executing out of a 32-bit ACPI table (Revision < 2). This 
3718 also affects the iASL compiler constant folding. (Note: as per below, the 
3719 iASL compiler no longer allows 64-bit constants within 32-bit tables.)
3721 Fixed a problem where string and buffer objects with "static" pointers 
3722 (pointers to initialization data within an ACPI table) were not handled 
3723 consistently. The internal object copy operation now always copies the data 
3724 to a newly allocated buffer, regardless of whether the source object is 
3725 static or not.
3727 Fixed a problem with the FromBCD operator where an implicit result 
3728 conversion was improperly performed while storing the result to the target 
3729 operand. Since this is an "explicit conversion" operator, the implicit 
3730 conversion should never be performed on the output.
3732 Fixed a problem with the CopyObject operator where a copy to an existing 
3733 named object did not always completely overwrite the existing object stored 
3734 at name. Specifically, a buffer-to-buffer copy did not delete the existing 
3735 buffer.
3737 Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and 
3738 structs for consistency.
3740 Code and Data Size: Current and previous core subsystem library sizes are 
3741 shown below. These are the code and data sizes for the acpica.lib produced 
3742 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3743 any ACPI driver or OSPM code. The debug version of the code includes the 
3744 debug output trace mechanism and has a much larger code and data size. Note 
3745 that these values will vary depending on the efficiency of the compiler and 
3746 the compiler options used during generation.
3748   Previous Release:
3749     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3750     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3751   Current Release: (Same sizes)
3752     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3753     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3756 2) iASL Compiler/Disassembler:
3758 The compiler now emits a warning if an attempt is made to generate a 64-bit 
3759 integer constant from within a 32-bit ACPI table (Revision < 2). The integer 
3760 is truncated to 32 bits.
3762 Fixed a problem with large package objects: if the static length of the 
3763 package is greater than 255, the "variable length package" opcode is 
3764 emitted. Previously, this caused an error. This requires an update to the 
3765 ACPI spec, since it currently (incorrectly) states that packages larger than 
3766 255 elements are not allowed.
3768 The disassembler now correctly handles variable length packages and packages 
3769 larger than 255 elements.
3771 ----------------------------------------
3772 08 April 2005.  Summary of changes for version 20050408:
3774 1) ACPI CA Core Subsystem:
3776 Fixed three cases in the interpreter where an "index" argument to an ASL 
3777 function was still (internally) 32 bits instead of the required 64 bits. 
3778 This was the Index argument to the Index, Mid, and Match operators.
3780 The "strupr" function is now permanently local (AcpiUtStrupr), since this is 
3781 not a POSIX-defined function and not present in most kernel-level C 
3782 libraries. All references to the C library strupr function have been removed 
3783 from the headers.
3785 Completed the deployment of static functions/prototypes. All prototypes with 
3786 the static attribute have been moved from the headers to the owning C file.
3788 Implemented an extract option (-e) for the AcpiBin utility (AML binary 
3789 utility). This option allows the utility to extract individual ACPI tables 
3790 from the output of AcpiDmp. It provides the same functionality of the 
3791 acpixtract.pl perl script without the worry of setting the correct perl 
3792 options. AcpiBin runs on Windows and has not yet been generated/validated in 
3793 the Linux/Unix environment (but should be soon).
3795 Updated and fixed the table dump option for AcpiBin (-d). This option 
3796 converts a single ACPI table to a hex/ascii file, similar to the output of 
3797 AcpiDmp.
3799 Code and Data Size: Current and previous core subsystem library sizes are 
3800 shown below. These are the code and data sizes for the acpica.lib produced 
3801 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3802 any ACPI driver or OSPM code. The debug version of the code includes the 
3803 debug output trace mechanism and has a much larger code and data size. Note 
3804 that these values will vary depending on the efficiency of the compiler and 
3805 the compiler options used during generation.
3807   Previous Release:
3808     Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
3809     Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
3810   Current Release:
3811     Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3812     Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3815 2) iASL Compiler/Disassembler:
3817 Disassembler fix: Added a check to ensure that the table length found in the 
3818 ACPI table header within the input file is not longer than the actual input 
3819 file size. This indicates some kind of file or table corruption.
3821 ----------------------------------------
3822 29 March 2005.  Summary of changes for version 20050329:
3824 1) ACPI CA Core Subsystem:
3826 An error is now generated if an attempt is made to create a Buffer Field of 
3827 length zero (A CreateField with a length operand of zero.)
3829 The interpreter now issues a warning whenever executable code at the module 
3830 level is detected during ACPI table load. This will give some idea of the 
3831 prevalence of this type of code.
3833 Implemented support for references to named objects (other than control 
3834 methods) within package objects.
3836 Enhanced package object output for the debug object. Package objects are now 
3837 completely dumped, showing all elements.
3839 Enhanced miscellaneous object output for the debug object. Any object can 
3840 now be written to the debug object (for example, a device object can be 
3841 written, and the type of the object will be displayed.)
3843 The "static" qualifier has been added to all local functions across both the 
3844 core subsystem and the iASL compiler.
3846 The number of "long" lines (> 80 chars) within the source has been 
3847 significantly reduced, by about 1/3.
3849 Cleaned up all header files to ensure that all CA/iASL functions are 
3850 prototyped (even static functions) and the formatting is consistent.
3852 Two new header files have been added, acopcode.h and acnames.h.
3854 Removed several obsolete functions that were no longer used.
3856 Code and Data Size: Current and previous core subsystem library sizes are 
3857 shown below. These are the code and data sizes for the acpica.lib produced 
3858 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3859 any ACPI driver or OSPM code. The debug version of the code includes the 
3860 debug output trace mechanism and has a much larger code and data size. Note 
3861 that these values will vary depending on the efficiency of the compiler and 
3862 the compiler options used during generation.
3864   Previous Release:
3865     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
3866     Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
3867   Current Release:
3868     Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
3869     Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
3873 2) iASL Compiler/Disassembler:
3875 Fixed a problem with the resource descriptor generation/support. For the 
3876 ResourceSourceIndex and the ResourceSource fields, both must be present, or 
3877 both must be not present - can't have one without the other.
3879 The compiler now returns non-zero from the main procedure if any errors have 
3880 occurred during the compilation.
3883 ----------------------------------------
3884 09 March 2005.  Summary of changes for version 20050309:
3886 1) ACPI CA Core Subsystem:
3888 The string-to-buffer implicit conversion code has been modified again after 
3889 a change to the ACPI specification.  In order to match the behavior of the 
3890 other major ACPI implementation, the target buffer is no longer truncated if 
3891 the source string is smaller than an existing target buffer. This change 
3892 requires an update to the ACPI spec, and should eliminate the recent 
3893 AE_AML_BUFFER_LIMIT issues.
3895 The "implicit return" support was rewritten to a new algorithm that solves 
3896 the general case. Rather than attempt to determine when a method is about to 
3897 exit, the result of every ASL operator is saved momentarily until the very 
3898 next ASL operator is executed. Therefore, no matter how the method exits, 
3899 there will always be a saved implicit return value. This feature is only 
3900 enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate 
3901 AE_AML_NO_RETURN_VALUE errors when enabled.
3903 Implemented implicit conversion support for the predicate (operand) of the 
3904 If, Else, and While operators. String and Buffer arguments are automatically 
3905 converted to Integers.
3907 Changed the string-to-integer conversion behavior to match the new ACPI 
3908 errata: "If no integer object exists, a new integer is created. The ASCII 
3909 string is interpreted as a hexadecimal constant. Each string character is 
3910 interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 
3911 with the first character as the most significant digit, and ending with the 
3912 first non-hexadecimal character or end-of-string." This means that the first 
3913 non-hex character terminates the conversion and this is the code that was 
3914 changed.
3916 Fixed a problem where the ObjectType operator would fail (fault) when used 
3917 on an Index of a Package which pointed to a null package element. The 
3918 operator now properly returns zero (Uninitialized) in this case.
3920 Fixed a problem where the While operator used excessive memory by not 
3921 properly popping the result stack during execution. There was no memory leak 
3922 after execution, however. (Code provided by Valery Podrezov.)
3924 Fixed a problem where references to control methods within Package objects 
3925 caused the method to be invoked, instead of producing a reference object 
3926 pointing to the method.
3928 Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to 
3929 improve performance and reduce code size. (Code provided by Alexey 
3930 Starikovskiy.)
3932 Code and Data Size: Current and previous core subsystem library sizes are 
3933 shown below. These are the code and data sizes for the acpica.lib produced 
3934 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
3935 any ACPI driver or OSPM code. The debug version of the code includes the 
3936 debug output trace mechanism and has a much larger code and data size. Note 
3937 that these values will vary depending on the efficiency of the compiler and 
3938 the compiler options used during generation.
3940   Previous Release:
3941     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
3942     Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
3943   Current Release:
3944     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
3945     Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
3948 2) iASL Compiler/Disassembler:
3950 Fixed a problem with the Return operator with no arguments. Since the AML 
3951 grammar for the byte encoding requires an operand for the Return opcode, the 
3952 compiler now emits a Return(Zero) for this case.  An ACPI specification 
3953 update has been written for this case.
3955 For tables other than the DSDT, namepath optimization is automatically 
3956 disabled. This is because SSDTs can be loaded anywhere in the namespace, the 
3957 compiler has no knowledge of where, and thus cannot optimize namepaths.
3959 Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 
3960 inadvertently omitted from the ACPI specification, and will require an 
3961 update to the spec.
3963 The source file scan for ASCII characters is now optional (-a). This change 
3964 was made because some vendors place non-ascii characters within comments. 
3965 However, the scan is simply a brute-force byte compare to ensure all 
3966 characters in the file are in the range 0x00 to 0x7F.
3968 Fixed a problem with the CondRefOf operator where the compiler was 
3969 inappropriately checking for the existence of the target. Since the point of 
3970 the operator is to check for the existence of the target at run-time, the 
3971 compiler no longer checks for the target existence.
3973 Fixed a problem where errors generated from the internal AML interpreter 
3974 during constant folding were not handled properly, causing a fault.
3976 Fixed a problem with overly aggressive range checking for the Stall 
3977 operator. The valid range (max 255) is now only checked if the operand is of 
3978 type Integer. All other operand types cannot be statically checked.
3980 Fixed a problem where control method references within the RefOf, DeRefOf, 
3981 and ObjectType operators were not treated properly. They are now treated as 
3982 actual references, not method invocations.
3984 Fixed and enhanced the "list namespace" option (-ln). This option was broken 
3985 a number of releases ago.
3987 Improved error handling for the Field, IndexField, and BankField operators. 
3988 The compiler now cleanly reports and recovers from errors in the field 
3989 component (FieldUnit) list.
3991 Fixed a disassembler problem where the optional ResourceDescriptor fields 
3992 TRS and TTP were not always handled correctly.
3994 Disassembler - Comments in output now use "//" instead of "/*"
3996 ----------------------------------------
3997 28 February 2005.  Summary of changes for version 20050228:
3999 1) ACPI CA Core Subsystem:
4001 Fixed a problem where the result of an Index() operator (an object 
4002 reference) must increment the reference count on the target object for the 
4003 life of the object reference.
4005 Implemented AML Interpreter and Debugger support for the new ACPI 3.0 
4006 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace 
4007 resource descriptors.
4009 Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 
4010 Space Descriptor" string, indicating interpreter support for the descriptors 
4011 above.
4013 Implemented header support for the new ACPI 3.0 FADT flag bits.
4015 Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1 
4016 status/enable registers.
4018 Updated header support for the MADT processor local Apic struct and MADT 
4019 platform interrupt source struct for new ACPI 3.0 fields.
4021 Implemented header support for the SRAT and SLIT ACPI tables.
4023 Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag 
4024 at runtime.
4026 Code and Data Size: Current and previous core subsystem library sizes are 
4027 shown below. These are the code and data sizes for the acpica.lib produced 
4028 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4029 any ACPI driver or OSPM code. The debug version of the code includes the 
4030 debug output trace mechanism and has a much larger code and data size. Note 
4031 that these values will vary depending on the efficiency of the compiler and 
4032 the compiler options used during generation.
4034   Previous Release:
4035     Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
4036     Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
4037   Current Release:
4038     Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
4039     Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
4042 2) iASL Compiler/Disassembler:
4044 Fixed a problem with the internal 64-bit String-to-integer conversion with 
4045 strings less than two characters long.
4047 Fixed a problem with constant folding where the result of the Index() 
4048 operator can not be considered a constant. This means that Index() cannot be 
4049 a type3 opcode and this will require an update to the ACPI specification.
4051 Disassembler: Implemented support for the TTP, MTP, and TRS resource 
4052 descriptor fields. These fields were inadvertently ignored and not output in 
4053 the disassembly of the resource descriptor.
4056  ----------------------------------------
4057 11 February 2005.  Summary of changes for version 20050211:
4059 1) ACPI CA Core Subsystem:
4061 Implemented ACPI 3.0 support for implicit conversion within the Match() 
4062 operator. MatchObjects can now be of type integer, buffer, or string instead 
4063 of just type integer.  Package elements are implicitly converted to the type 
4064 of the MatchObject. This change aligns the behavior of Match() with the 
4065 behavior of the other logical operators (LLess(), etc.) It also requires an 
4066 errata change to the ACPI specification as this support was intended for 
4067 ACPI 3.0, but was inadvertently omitted.
4069 Fixed a problem with the internal implicit "to buffer" conversion. Strings 
4070 that are converted to buffers will cause buffer truncation if the string is 
4071 smaller than the target buffer. Integers that are converted to buffers will 
4072 not cause buffer truncation, only zero extension (both as per the ACPI 
4073 spec.) The problem was introduced when code was added to truncate the 
4074 buffer, but this should not be performed in all cases, only the string case.
4076 Fixed a problem with the Buffer and Package operators where the interpreter 
4077 would get confused if two such operators were used as operands to an ASL 
4078 operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 
4079 stack was not being popped after the execution of these operators, resulting 
4080 in an AE_NO_RETURN_VALUE exception.
4082 Fixed a problem with constructs of the form Store(Index(...),...). The 
4083 reference object returned from Index was inadvertently resolved to an actual 
4084 value. This problem was introduced in version 20050114 when the behavior of 
4085 Store() was modified to restrict the object types that can be used as the 
4086 source operand (to match the ACPI specification.)
4088 Reduced excessive stack use within the AcpiGetObjectInfo procedure.
4090 Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
4092 Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
4094 Code and Data Size: Current and previous core subsystem library sizes are 
4095 shown below. These are the code and data sizes for the acpica.lib produced 
4096 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4097 any ACPI driver or OSPM code. The debug version of the code includes the 
4098 debug output trace mechanism and has a much larger code and data size. Note 
4099 that these values will vary depending on the efficiency of the compiler and 
4100 the compiler options used during generation.
4102   Previous Release:
4103     Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
4104     Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
4105   Current Release:
4106     Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
4107     Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
4110 2) iASL Compiler/Disassembler:
4112 Fixed a code generation problem in the constant folding optimization code 
4113 where incorrect code was generated if a constant was reduced to a buffer 
4114 object (i.e., a reduced type 5 opcode.)
4116 Fixed a typechecking problem for the ToBuffer operator. Caused by an 
4117 incorrect return type in the internal opcode information table.
4119 ----------------------------------------
4120 25 January 2005.  Summary of changes for version 20050125:
4122 1) ACPI CA Core Subsystem:
4124 Fixed a recently introduced problem with the Global Lock where the 
4125 underlying semaphore was not created.  This problem was introduced in 
4126 version 20050114, and caused an AE_AML_NO_OPERAND exception during an 
4127 Acquire() operation on _GL.
4129 The local object cache is now optional, and is disabled by default. Both 
4130 AcpiExec and the iASL compiler enable the cache because they run in user 
4131 mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE 
4132 to enable the local cache.
4134 Fixed an issue in the internal function AcpiUtEvaluateObject concerning the 
4135 optional "implicit return" support where an error was returned if no return 
4136 object was expected, but one was implicitly returned. AE_OK is now returned 
4137 in this case and the implicitly returned object is deleted. 
4138 AcpiUtEvaluateObject is only occasionally used, and only to execute reserved 
4139 methods such as _STA and _INI where the return type is known up front.
4141 Fixed a few issues with the internal convert-to-integer code. It now returns 
4142 an error if an attempt is made to convert a null string, a string of only 
4143 blanks/tabs, or a zero-length buffer. This affects both implicit conversion 
4144 and explicit conversion via the ToInteger() operator.
4146 The internal debug code in AcpiUtAcquireMutex has been commented out. It is 
4147 not needed for normal operation and should increase the performance of the 
4148 entire subsystem. The code remains in case it is needed for debug purposes 
4149 again.
4151 The AcpiExec source and makefile are included in the Unix/Linux package for 
4152 the first time.
4154 Code and Data Size: Current and previous core subsystem library sizes are 
4155 shown below. These are the code and data sizes for the acpica.lib produced 
4156 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4157 any ACPI driver or OSPM code. The debug version of the code includes the 
4158 debug output trace mechanism and has a much larger code and data size. Note 
4159 that these values will vary depending on the efficiency of the compiler and 
4160 the compiler options used during generation.
4162   Previous Release:
4163     Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
4164     Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
4165   Current Release:
4166     Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
4167     Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
4169 2) iASL Compiler/Disassembler:
4171 Switch/Case support: A warning is now issued if the type of the Switch value 
4172 cannot be determined at compile time. For example, Switch(Arg0) will 
4173 generate the warning, and the type is assumed to be an integer. As per the 
4174 ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the 
4175 warning.
4177 Switch/Case support: Implemented support for buffer and string objects as 
4178 the switch value.  This is an ACPI 3.0 feature, now that LEqual supports 
4179 buffers and strings.
4181 Switch/Case support: The emitted code for the LEqual() comparisons now uses 
4182 the switch value as the first operand, not the second. The case value is now 
4183 the second operand, and this allows the case value to be implicitly 
4184 converted to the type of the switch value, not the other way around.
4186 Switch/Case support: Temporary variables are now emitted immediately within 
4187 the control method, not at the global level. This means that there are now 
4188 36 temps available per-method, not 36 temps per-module as was the case with 
4189 the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
4191 ----------------------------------------
4192 14 January 2005.  Summary of changes for version 20050114:
4194 Added 2005 copyright to all module headers.  This affects every module in 
4195 the core subsystem, iASL compiler, and the utilities.
4197 1) ACPI CA Core Subsystem:
4199 Fixed an issue with the String-to-Buffer conversion code where the string 
4200 null terminator was not included in the buffer after conversion, but there 
4201 is existing ASL that assumes the string null terminator is included. This is 
4202 the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 
4203 introduced in the previous version when the code was updated to correctly 
4204 set the converted buffer size as per the ACPI specification. The ACPI spec 
4205 is ambiguous and will be updated to specify that the null terminator must be 
4206 included in the converted buffer. This also affects the ToBuffer() ASL 
4207 operator.
4209 Fixed a problem with the Mid() ASL/AML operator where it did not work 
4210 correctly on Buffer objects. Newly created sub-buffers were not being marked 
4211 as initialized.
4214 Fixed a problem in AcpiTbFindTable where incorrect string compares were 
4215 performed on the OemId and OemTableId table header fields.  These fields are 
4216 not null terminated, so strncmp is now used instead of strcmp.
4218 Implemented a restriction on the Store() ASL/AML operator to align the 
4219 behavior with the ACPI specification.  Previously, any object could be used 
4220 as the source operand.  Now, the only objects that may be used are Integers, 
4221 Buffers, Strings, Packages, Object References, and DDB Handles.  If 
4222 necessary, the original behavior can be restored by enabling the 
4223 EnableInterpreterSlack flag.
4225 Enhanced the optional "implicit return" support to allow an implicit return 
4226 value from methods that are invoked externally via the AcpiEvaluateObject 
4227 interface.  This enables implicit returns from the _STA and _INI methods, 
4228 for example.
4230 Changed the Revision() ASL/AML operator to return the current version of the 
4231 AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned 
4232 the supported ACPI version (This is the function of the _REV method).
4234 Updated the _REV predefined method to return the currently supported version 
4235 of ACPI, now 3.
4237 Implemented batch mode option for the AcpiExec utility (-b).
4239 Code and Data Size: Current and previous core subsystem library sizes are 
4240 shown below. These are the code and data sizes for the acpica.lib produced 
4241 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4242 any ACPI driver or OSPM code. The debug version of the code includes the 
4243 debug output trace mechanism and has a much larger code and data size. Note 
4244 that these values will vary depending on the efficiency of the compiler and 
4245 the compiler options used during generation.
4247   Previous Release:
4248     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4249     Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
4250   Current Release:
4251     Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
4252     Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
4254 ----------------------------------------
4255 10 December 2004.  Summary of changes for version 20041210:
4257 ACPI 3.0 support is nearing completion in both the iASL compiler and the 
4258 ACPI CA core subsystem.
4260 1) ACPI CA Core Subsystem:
4262 Fixed a problem in the ToDecimalString operator where the resulting string 
4263 length was incorrectly calculated. The length is now calculated exactly, 
4264 eliminating incorrect AE_STRING_LIMIT exceptions.
4266 Fixed a problem in the ToHexString operator to allow a maximum 200 character 
4267 string to be produced.
4269 Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy 
4270 routine where the length of the resulting buffer was not truncated to the 
4271 new size (if the target buffer already existed).
4273 Code and Data Size: Current and previous core subsystem library sizes are 
4274 shown below. These are the code and data sizes for the acpica.lib produced 
4275 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4276 any ACPI driver or OSPM code. The debug version of the code includes the 
4277 debug output trace mechanism and has a much larger code and data size. Note 
4278 that these values will vary depending on the efficiency of the compiler and 
4279 the compiler options used during generation.
4281   Previous Release:
4282     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4283     Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
4284   Current Release:
4285     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4286     Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
4289 2) iASL Compiler/Disassembler:
4291 Implemented the new ACPI 3.0 resource template macros - DWordSpace, 
4292 ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 
4293 Includes support in the disassembler.
4295 Implemented support for the new (ACPI 3.0) parameter to the Register macro, 
4296 AccessSize.
4298 Fixed a problem where the _HE resource name for the Interrupt macro was 
4299 referencing bit 0 instead of bit 1.
4301 Implemented check for maximum 255 interrupts in the Interrupt macro.
4303 Fixed a problem with the predefined resource descriptor names where 
4304 incorrect AML code was generated if the offset within the resource buffer 
4305 was 0 or 1.  The optimizer shortened the AML code to a single byte opcode 
4306 but did not update the surrounding package lengths.
4308 Changes to the Dma macro:  All channels within the channel list must be in 
4309 the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is 
4310 optional (default is BusMaster).
4312 Implemented check for maximum 7 data bytes for the VendorShort macro.
4314 The ReadWrite parameter is now optional for the Memory32 and similar macros.
4316 ----------------------------------------
4317 03 December 2004.  Summary of changes for version 20041203:
4319 1) ACPI CA Core Subsystem:
4321 The low-level field insertion/extraction code (exfldio) has been completely 
4322 rewritten to eliminate unnecessary complexity, bugs, and boundary 
4323 conditions.
4325 Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString 
4326 operators where the input operand could be inadvertently deleted if no 
4327 conversion was necessary (e.g., if the input to ToInteger was an Integer 
4328 object.)
4330 Fixed a problem with the ToDecimalString and ToHexString where an incorrect 
4331 exception code was returned if the resulting string would be > 200 chars.  
4332 AE_STRING_LIMIT is now returned.
4334 Fixed a problem with the Concatenate operator where AE_OK was always 
4335 returned, even if the operation failed.
4337 Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 
4338 semaphores to be allocated.
4340 Code and Data Size: Current and previous core subsystem library sizes are 
4341 shown below. These are the code and data sizes for the acpica.lib produced 
4342 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4343 any ACPI driver or OSPM code. The debug version of the code includes the 
4344 debug output trace mechanism and has a much larger code and data size. Note 
4345 that these values will vary depending on the efficiency of the compiler and 
4346 the compiler options used during generation.
4348   Previous Release:
4349     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4350     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4351   Current Release:
4352     Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4353     Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
4356 2) iASL Compiler/Disassembler:
4358 Fixed typechecking for the ObjectType and SizeOf operators.  Problem was 
4359 recently introduced in 20041119.
4361 Fixed a problem with the ToUUID macro where the upper nybble of each buffer 
4362 byte was inadvertently set to zero.
4364 ----------------------------------------
4365 19 November 2004.  Summary of changes for version 20041119:
4367 1) ACPI CA Core Subsystem:
4369 Fixed a problem in the internal ConvertToInteger routine where new integers 
4370 were not truncated to 32 bits for 32-bit ACPI tables. This routine converts 
4371 buffers and strings to integers.
4373 Implemented support to store a value to an Index() on a String object. This 
4374 is an ACPI 2.0 feature that had not yet been implemented.
4376 Implemented new behavior for storing objects to individual package elements 
4377 (via the Index() operator). The previous behavior was to invoke the implicit 
4378 conversion rules if an object was already present at the index.  The new 
4379 behavior is to simply delete any existing object and directly store the new 
4380 object. Although the ACPI specification seems unclear on this subject, other 
4381 ACPI implementations behave in this manner.  (This is the root of the 
4382 AE_BAD_HEX_CONSTANT issue.)
4384 Modified the RSDP memory scan mechanism to support the extended checksum for 
4385 ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 
4386 RSDP signature is found with a valid checksum.
4388 Code and Data Size: Current and previous core subsystem library sizes are 
4389 shown below. These are the code and data sizes for the acpica.lib produced 
4390 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4391 any ACPI driver or OSPM code. The debug version of the code includes the 
4392 debug output trace mechanism and has a much larger code and data size. Note 
4393 that these values will vary depending on the efficiency of the compiler and 
4394 the compiler options used during generation.
4396   Previous Release:
4397     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4398     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4399   Current Release:
4400     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4401     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4404 2) iASL Compiler/Disassembler:
4406 Fixed a missing semicolon in the aslcompiler.y file.
4408 ----------------------------------------
4409 05 November 2004.  Summary of changes for version 20041105:
4411 1) ACPI CA Core Subsystem:
4413 Implemented support for FADT revision 2.  This was an interim table (between 
4414 ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
4416 Implemented optional support to allow uninitialized LocalX and ArgX 
4417 variables in a control method.  The variables are initialized to an Integer 
4418 object with a value of zero.  This support is enabled by setting the 
4419 AcpiGbl_EnableInterpreterSlack flag to TRUE.
4421 Implemented support for Integer objects for the SizeOf operator.  Either 4 
4422 or 8 is returned, depending on the current integer size (32-bit or 64-bit, 
4423 depending on the parent table revision).
4425 Fixed a problem in the implementation of the SizeOf and ObjectType operators 
4426 where the operand was resolved to a value too early, causing incorrect 
4427 return values for some objects.
4429 Fixed some possible memory leaks during exceptional conditions.
4431 Code and Data Size: Current and previous core subsystem library sizes are 
4432 shown below. These are the code and data sizes for the acpica.lib produced 
4433 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4434 any ACPI driver or OSPM code. The debug version of the code includes the 
4435 debug output trace mechanism and has a much larger code and data size. Note 
4436 that these values will vary depending on the efficiency of the compiler and 
4437 the compiler options used during generation.
4439   Previous Release:
4440     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
4441     Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
4442   Current Release:
4443     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4444     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4447 2) iASL Compiler/Disassembler:
4449 Implemented support for all ACPI 3.0 reserved names and methods.
4451 Implemented all ACPI 3.0 grammar elements in the front-end, including 
4452 support for semicolons.
4454 Implemented the ACPI 3.0 Function() and ToUUID() macros
4456 Fixed a problem in the disassembler where a Scope() operator would not be 
4457 emitted properly if the target of the scope was in another table.
4459 ----------------------------------------
4460 15 October 2004.  Summary of changes for version 20041015:
4462 Note:  ACPI CA is currently undergoing an in-depth and complete formal 
4463 evaluation to test/verify the following areas. Other suggestions are 
4464 welcome. This will result in an increase in the frequency of releases and 
4465 the number of bug fixes in the next few months.
4466   - Functional tests for all ASL/AML operators
4467   - All implicit/explicit type conversions
4468   - Bit fields and operation regions
4469   - 64-bit math support and 32-bit-only "truncated" math support
4470   - Exceptional conditions, both compiler and interpreter
4471   - Dynamic object deletion and memory leaks
4472   - ACPI 3.0 support when implemented
4473   - External interfaces to the ACPI subsystem
4476 1) ACPI CA Core Subsystem:
4478 Fixed two alignment issues on 64-bit platforms - within debug statements in 
4479 AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address 
4480 field within the non-aligned ACPI generic address structure.
4482 Fixed a problem in the Increment and Decrement operators where incorrect 
4483 operand resolution could result in the inadvertent modification of the 
4484 original integer when the integer is passed into another method as an 
4485 argument and the arg is then incremented/decremented.
4487 Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit 
4488 BCD number were truncated during conversion.
4490 Fixed a problem in the ToDecimal operator where the length of the resulting 
4491 string could be set incorrectly too long if the input operand was a Buffer 
4492 object.
4494 Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0) 
4495 within a buffer would prematurely terminate a compare between buffer 
4496 objects.
4498 Added a check for string overflow (>200 characters as per the ACPI 
4499 specification) during the Concatenate operator with two string operands.
4501 Code and Data Size: Current and previous core subsystem library sizes are 
4502 shown below. These are the code and data sizes for the acpica.lib produced 
4503 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4504 any ACPI driver or OSPM code. The debug version of the code includes the 
4505 debug output trace mechanism and has a much larger code and data size. Note 
4506 that these values will vary depending on the efficiency of the compiler and 
4507 the compiler options used during generation.
4509   Previous Release:
4510     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
4511     Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
4512   Current Release:
4513     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
4514     Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
4518 2) iASL Compiler/Disassembler:
4520 Allow the use of the ObjectType operator on uninitialized Locals and Args 
4521 (returns 0 as per the ACPI specification).
4523 Fixed a problem where the compiler would fault if there was a syntax error 
4524 in the FieldName of all of the various CreateXXXField operators.
4526 Disallow the use of lower case letters within the EISAID macro, as per the 
4527 ACPI specification.  All EISAID strings must be of the form "UUUNNNN" Where 
4528 U is an uppercase letter and N is a hex digit.
4531 ----------------------------------------
4532 06 October 2004.  Summary of changes for version 20041006:
4534 1) ACPI CA Core Subsystem:
4536 Implemented support for the ACPI 3.0 Timer operator. This ASL function 
4537 implements a 64-bit timer with 100 nanosecond granularity.
4539 Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 
4540 implement the ACPI 3.0 Timer operator.  This allows the host OS to implement 
4541 the timer with the best clock available. Also, it keeps the core subsystem 
4542 out of the clock handling business, since the host OS (usually) performs 
4543 this function.
4545 Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 
4546 functions use a 64-bit address which is part of the packed ACPI Generic 
4547 Address Structure. Since the structure is non-aligned, the alignment macros 
4548 are now used to extract the address to a local variable before use.
4550 Fixed a problem where the ToInteger operator assumed all input strings were 
4551 hexadecimal. The operator now handles both decimal strings and hex strings 
4552 (prefixed with "0x").
4554 Fixed a problem where the string length in the string object created as a 
4555 result of the internal ConvertToString procedure could be incorrect. This 
4556 potentially affected all implicit conversions and also the ToDecimalString 
4557 and ToHexString operators.
4559 Fixed two problems in the ToString operator. If the length parameter was 
4560 zero, an incorrect string object was created and the value of the input 
4561 length parameter was inadvertently changed from zero to Ones.
4563 Fixed a problem where the optional ResourceSource string in the ExtendedIRQ 
4564 resource macro was ignored.
4566 Simplified the interfaces to the internal division functions, reducing code 
4567 size and complexity.
4569 Code and Data Size: Current and previous core subsystem library sizes are 
4570 shown below. These are the code and data sizes for the acpica.lib produced 
4571 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4572 any ACPI driver or OSPM code. The debug version of the code includes the 
4573 debug output trace mechanism and has a much larger code and data size. Note 
4574 that these values will vary depending on the efficiency of the compiler and 
4575 the compiler options used during generation.
4577   Previous Release:
4578     Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
4579     Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
4580   Current Release:
4581     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
4582     Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
4585 2) iASL Compiler/Disassembler:
4587 Implemented support for the ACPI 3.0 Timer operator.
4589 Fixed a problem where the Default() operator was inadvertently ignored in a 
4590 Switch/Case block.  This was a problem in the translation of the Switch 
4591 statement to If...Else pairs.
4593 Added support to allow a standalone Return operator, with no parentheses (or 
4594 operands).
4596 Fixed a problem with code generation for the ElseIf operator where the 
4597 translated Else...If parse tree was improperly constructed leading to the 
4598 loss of some code.
4600 ----------------------------------------
4601 22 September 2004.  Summary of changes for version 20040922:
4603 1) ACPI CA Core Subsystem:
4605 Fixed a problem with the implementation of the LNot() operator where "Ones" 
4606 was not returned for the TRUE case. Changed the code to return Ones instead 
4607 of (!Arg) which was usually 1. This change affects iASL constant folding for 
4608 this operator also.
4610 Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not 
4611 initialized properly -- Now zero the entire buffer in this case where the 
4612 buffer already exists.
4614 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 
4615 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 
4616 related code considerably. This will require changes/updates to all OS 
4617 interface layers (OSLs.)
4619 Implemented a new external interface, AcpiInstallExceptionHandler, to allow 
4620 a system exception handler to be installed. This handler is invoked upon any 
4621 run-time exception that occurs during control method execution.
4623 Added support for the DSDT in AcpiTbFindTable. This allows the 
4624 DataTableRegion() operator to access the local copy of the DSDT.
4626 Code and Data Size: Current and previous core subsystem library sizes are 
4627 shown below. These are the code and data sizes for the acpica.lib produced 
4628 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4629 any ACPI driver or OSPM code. The debug version of the code includes the 
4630 debug output trace mechanism and has a much larger code and data size. Note 
4631 that these values will vary depending on the efficiency of the compiler and 
4632 the compiler options used during generation.
4634   Previous Release:
4635     Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
4636     Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
4637   Current Release:
4638     Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
4639     Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
4642 2) iASL Compiler/Disassembler:
4644 Fixed a problem with constant folding and the LNot operator. LNot was 
4645 returning 1 in the TRUE case, not Ones as per the ACPI specification. This 
4646 could result in the generation of an incorrect folded/reduced constant.
4648 End-Of-File is now allowed within a "//"-style comment.  A parse error no 
4649 longer occurs if such a comment is at the very end of the input ASL source 
4650 file.
4652 Implemented the "-r" option to override the Revision in the table header. 
4653 The initial use of this option will be to simplify the evaluation of the AML 
4654 interpreter by allowing a single ASL source module to be compiled for either 
4655 32-bit or 64-bit integers.
4658 ----------------------------------------
4659 27 August 2004.  Summary of changes for version 20040827:
4661 1) ACPI CA Core Subsystem:
4663 - Implemented support for implicit object conversion in the non-numeric 
4664 logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and 
4665 LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used; 
4666 the second operand is implicitly converted on the fly to match the type of 
4667 the first operand.  For example:
4669     LEqual (Source1, Source2)
4671 Source1 and Source2 must each evaluate to an integer, a string, or a buffer. 
4672 The data type of Source1 dictates the required type of Source2. Source2 is 
4673 implicitly converted if necessary to match the type of Source1.
4675 - Updated and corrected the behavior of the string conversion support.  The 
4676 rules concerning conversion of buffers to strings (according to the ACPI 
4677 specification) are as follows:
4679 ToDecimalString - explicit byte-wise conversion of buffer to string of 
4680 decimal values (0-255) separated by commas. ToHexString - explicit byte-wise 
4681 conversion of buffer to string of hex values (0-FF) separated by commas. 
4682 ToString - explicit byte-wise conversion of buffer to string.  Byte-by-byte 
4683 copy with no transform except NULL terminated. Any other implicit buffer-to-
4684 string conversion - byte-wise conversion of buffer to string of hex values 
4685 (0-FF) separated by spaces.
4687 - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
4689 - Fixed a problem in AcpiNsGetPathnameLength where the returned length was 
4690 one byte too short in the case of a node in the root scope.  This could 
4691 cause a fault during debug output.
4693 - Code and Data Size: Current and previous core subsystem library sizes are 
4694 shown below.  These are the code and data sizes for the acpica.lib produced 
4695 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4696 any ACPI driver or OSPM code.  The debug version of the code includes the 
4697 debug output trace mechanism and has a much larger code and data size.  Note 
4698 that these values will vary depending on the efficiency of the compiler and 
4699 the compiler options used during generation.
4701   Previous Release:
4702     Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
4703     Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
4704   Current Release:
4705     Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
4706     Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
4709 2) iASL Compiler/Disassembler:
4711 - Fixed a Linux generation error.
4714 ----------------------------------------
4715 16 August 2004.  Summary of changes for version 20040816:
4717 1) ACPI CA Core Subsystem:
4719 Designed and implemented support within the AML interpreter for the so-
4720 called "implicit return".  This support returns the result of the last ASL 
4721 operation within a control method, in the absence of an explicit Return() 
4722 operator.  A few machines depend on this behavior, even though it is not 
4723 explicitly supported by the ASL language.  It is optional support that can 
4724 be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
4726 Removed support for the PCI_Config address space from the internal low level 
4727 hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This 
4728 support was not used internally, and would not work correctly anyway because 
4729 the PCI bus number and segment number were not supported.  There are 
4730 separate interfaces for PCI configuration space access because of the unique 
4731 interface.
4733 Code and Data Size: Current and previous core subsystem library sizes are 
4734 shown below.  These are the code and data sizes for the acpica.lib produced 
4735 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4736 any ACPI driver or OSPM code.  The debug version of the code includes the 
4737 debug output trace mechanism and has a much larger code and data size.  Note 
4738 that these values will vary depending on the efficiency of the compiler and 
4739 the compiler options used during generation.
4741   Previous Release:
4742     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
4743     Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
4744   Current Release:
4745     Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
4746     Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
4749 2) iASL Compiler/Disassembler:
4751 Fixed a problem where constants in ASL expressions at the root level (not 
4752 within a control method) could be inadvertently truncated during code 
4753 generation.  This problem was introduced in the 20040715 release.
4756 ----------------------------------------
4757 15 July 2004.  Summary of changes for version 20040715:
4759 1) ACPI CA Core Subsystem:
4761 Restructured the internal HW GPE interfaces to pass/track the current state 
4762 of interrupts (enabled/disabled) in order to avoid possible deadlock and 
4763 increase flexibility of the interfaces.
4765 Implemented a "lexicographical compare" for String and Buffer objects within 
4766 the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -- 
4767 as per further clarification to the ACPI specification.  Behavior is similar 
4768 to C library "strcmp".
4770 Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 
4771 external function.  In the 32-bit non-debug case, the stack use has been 
4772 reduced from 168 bytes to 32 bytes.
4774 Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack, 
4775 whose purpose is to allow the AML interpreter to forgive certain bad AML 
4776 constructs.  Default setting is FALSE.
4778 Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO 
4779 support code.  If enabled, it allows field access to go beyond the end of a 
4780 region definition if the field is within the region length rounded up to the 
4781 next access width boundary (a common coding error.)
4783 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 
4784 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, these 
4785 symbols are lowercased by the latest version of the AcpiSrc tool.
4787 The prototypes for the PCI interfaces in acpiosxf.h have been updated to 
4788 rename "Register" to simply "Reg" to prevent certain compilers from 
4789 complaining.
4791 Code and Data Size: Current and previous core subsystem library sizes are 
4792 shown below.  These are the code and data sizes for the acpica.lib produced 
4793 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4794 any ACPI driver or OSPM code.  The debug version of the code includes the 
4795 debug output trace mechanism and has a much larger code and data size.  Note 
4796 that these values will vary depending on the efficiency of the compiler and 
4797 the compiler options used during generation.
4799   Previous Release:
4800     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
4801     Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
4802   Current Release:
4803     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
4804     Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
4807 2) iASL Compiler/Disassembler:
4809 Implemented full support for Package objects within the Case() operator.  
4810 Note: The Break() operator is currently not supported within Case blocks 
4811 (TermLists) as there is some question about backward compatibility with ACPI 
4812 1.0 interpreters.
4815 Fixed a problem where complex terms were not supported properly within the 
4816 Switch() operator.
4818 Eliminated extraneous warning for compiler-emitted reserved names of the 
4819 form "_T_x".  (Used in Switch/Case operators.)
4821 Eliminated optimization messages for "_T_x" objects and small constants 
4822 within the DefinitionBlock operator.
4825 ----------------------------------------
4826 15 June 2004.  Summary of changes for version 20040615:
4828 1) ACPI CA Core Subsystem:
4830 Implemented support for Buffer and String objects (as per ACPI 2.0) for the 
4831 following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
4832 LLessEqual.
4834 All directory names in the entire source package are lower case, as they 
4835 were in earlier releases.
4837 Implemented "Disassemble" command in the AML debugger that will disassemble 
4838 a single control method.
4840 Code and Data Size: Current and previous core subsystem library sizes are 
4841 shown below.  These are the code and data sizes for the acpica.lib produced 
4842 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4843 any ACPI driver or OSPM code.  The debug version of the code includes the 
4844 debug output trace mechanism and has a much larger code and data size.  Note 
4845 that these values will vary depending on the efficiency of the compiler and 
4846 the compiler options used during generation.
4848   Previous Release:
4849     Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
4850     Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
4852   Current Release:
4853     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
4854     Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
4857 2) iASL Compiler/Disassembler:
4859 Implemented support for Buffer and String objects (as per ACPI 2.0) for the 
4860 following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
4861 LLessEqual.
4863 All directory names in the entire source package are lower case, as they 
4864 were in earlier releases.
4866 Fixed a fault when using the -g or -d<nofilename> options if the FADT was 
4867 not found.
4869 Fixed an issue with the Windows version of the compiler where later versions 
4870 of Windows place the FADT in the registry under the name "FADT" and not 
4871 "FACP" as earlier versions did.  This applies when using the -g or -
4872 d<nofilename> options.  The compiler now looks for both strings as 
4873 necessary.
4875 Fixed a problem with compiler namepath optimization where a namepath within 
4876 the Scope() operator could not be optimized if the namepath was a subpath of 
4877 the current scope path.
4879 ----------------------------------------
4880 27 May 2004.  Summary of changes for version 20040527:
4882 1) ACPI CA Core Subsystem:
4884 Completed a new design and implementation for EBDA (Extended BIOS Data Area) 
4885 support in the RSDP scan code.  The original code improperly scanned for the 
4886 EBDA by simply scanning from memory location 0 to 0x400.  The correct method 
4887 is to first obtain the EBDA pointer from within the BIOS data area, then 
4888 scan 1K of memory starting at the EBDA pointer.  There appear to be few if 
4889 any machines that place the RSDP in the EBDA, however.
4891 Integrated a fix for a possible fault during evaluation of BufferField 
4892 arguments.  Obsolete code that was causing the problem was removed.
4894 Found and fixed a problem in the Field Support Code where data could be 
4895 corrupted on a bit field read that starts on an aligned boundary but does 
4896 not end on an aligned boundary.  Merged the read/write "datum length" 
4897 calculation code into a common procedure.
4899 Rolled in a couple of changes to the FreeBSD-specific header.
4902 Code and Data Size: Current and previous core subsystem library sizes are 
4903 shown below.  These are the code and data sizes for the acpica.lib produced 
4904 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4905 any ACPI driver or OSPM code.  The debug version of the code includes the 
4906 debug output trace mechanism and has a much larger code and data size.  Note 
4907 that these values will vary depending on the efficiency of the compiler and 
4908 the compiler options used during generation.
4910   Previous Release:
4911     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
4912     Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
4913   Current Release:
4914     Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
4915     Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
4918 2) iASL Compiler/Disassembler:
4920 Fixed a generation warning produced by some overly-verbose compilers for a 
4921 64-bit constant.
4923 ----------------------------------------
4924 14 May 2004.  Summary of changes for version 20040514:
4926 1) ACPI CA Core Subsystem:
4928 Fixed a problem where hardware GPE enable bits sometimes not set properly 
4929 during and after GPE method execution.  Result of 04/27 changes.
4931 Removed extra "clear all GPEs" when sleeping/waking.
4933 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 
4934 AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to 
4935 the new AcpiEv* calls as appropriate.
4937 ACPI_OS_NAME was removed from the OS-specific headers.  The default name is 
4938 now "Microsoft Windows NT" for maximum compatibility.  However this can be 
4939 changed by modifying the acconfig.h file.
4941 Allow a single invocation of AcpiInstallNotifyHandler for a handler that 
4942 traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag. 
4944 Run _INI methods on ThermalZone objects.  This is against the ACPI 
4945 specification, but there is apparently ASL code in the field that has these 
4946 _INI methods, and apparently "other" AML interpreters execute them.
4948 Performed a full 16/32/64 bit lint that resulted in some small changes.
4950 Added a sleep simulation command to the AML debugger to test sleep code. 
4952 Code and Data Size: Current and previous core subsystem library sizes are 
4953 shown below.  These are the code and data sizes for the acpica.lib produced 
4954 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
4955 any ACPI driver or OSPM code.  The debug version of the code includes the 
4956 debug output trace mechanism and has a much larger code and data size.  Note 
4957 that these values will vary depending on the efficiency of the compiler and 
4958 the compiler options used during generation.
4960   Previous Release:
4961     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
4962     Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
4963   Current Release:
4964     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
4965     Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
4967 ----------------------------------------
4968 27 April 2004.  Summary of changes for version 20040427:
4970 1) ACPI CA Core Subsystem:
4972 Completed a major overhaul of the GPE handling within ACPI CA.  There are 
4973 now three types of GPEs:  wake-only, runtime-only, and combination wake/run.  
4974 The only GPEs allowed to be combination wake/run are for button-style 
4975 devices such as a control-method power button, control-method sleep button, 
4976 or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are not 
4977 referenced by any _PRW methods are marked for "runtime" and hardware 
4978 enabled.  Any GPE that is referenced by a _PRW method is marked for "wake" 
4979 (and disabled at runtime).  However, at sleep time, only those GPEs that 
4980 have been specifically enabled for wake via the AcpiEnableGpe interface will 
4981 actually be hardware enabled.
4983 A new external interface has been added, AcpiSetGpeType(), that is meant to 
4984 be used by device drivers to force a GPE to a particular type.  It will be 
4985 especially useful for the drivers for the button devices mentioned above.
4987 Completed restructuring of the ACPI CA initialization sequence so that 
4988 default operation region handlers are installed before GPEs are initialized 
4989 and the _PRW methods are executed.  This will prevent errors when the _PRW 
4990 methods attempt to access system memory or I/O space.
4992 GPE enable/disable no longer reads the GPE enable register.  We now keep the 
4993 enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We 
4994 thus no longer depend on the hardware to maintain these bits.
4996 Always clear the wake status and fixed/GPE status bits before sleep, even 
4997 for state S5.
4999 Improved the AML debugger output for displaying the GPE blocks and their 
5000 current status.
5002 Added new strings for the _OSI method, of the form "Windows 2001 SPx" where 
5003 x = 0,1,2,3,4.
5005 Fixed a problem where the physical address was incorrectly calculated when 
5006 the Load() operator was used to directly load from an Operation Region (vs. 
5007 loading from a Field object.)  Also added check for minimum table length for 
5008 this case.
5010 Fix for multiple mutex acquisition.  Restore original thread SyncLevel on 
5011 mutex release.
5013 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 
5014 consistency with the other fields returned.
5016 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such 
5017 structure for each GPE in the system, so the size of this structure is 
5018 important.
5020 CPU stack requirement reduction:  Cleaned up the method execution and object 
5021 evaluation paths so that now a parameter structure is passed, instead of 
5022 copying the various method parameters over and over again.
5024 In evregion.c:  Correctly exit and reenter the interpreter region if and 
5025 only if dispatching an operation region request to a user-installed handler.  
5026 Do not exit/reenter when dispatching to a default handler (e.g., default 
5027 system memory or I/O handlers)
5030 Notes for updating drivers for the new GPE support.  The following changes 
5031 must be made to ACPI-related device drivers that are attached to one or more 
5032 GPEs: (This information will be added to the ACPI CA Programmer Reference.)
5034 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you must 
5035 explicitly call AcpiEnableGpe.
5036 2) There is a new interface called AcpiSetGpeType. This should be called 
5037 before enabling the GPE.  Also, this interface will automatically disable 
5038 the GPE if it is currently enabled.
5039 3) AcpiEnableGpe no longer supports a GPE type flag.
5041 Specific drivers that must be changed:
5042 1) EC driver:
5043     AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 
5044 AeGpeHandler, NULL);
5045     AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
5046     AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
5048 2) Button Drivers (Power, Lid, Sleep):
5049 Run _PRW method under parent device
5050 If _PRW exists: /* This is a control-method button */
5051     Extract GPE number and possibly GpeDevice
5052     AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
5053     AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
5055 For all other devices that have _PRWs, we automatically set the GPE type to 
5056 ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  This 
5057 must be done on a selective basis, usually requiring some kind of user app 
5058 to allow the user to pick the wake devices.
5061 Code and Data Size: Current and previous core subsystem library sizes are 
5062 shown below.  These are the code and data sizes for the acpica.lib produced 
5063 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5064 any ACPI driver or OSPM code.  The debug version of the code includes the 
5065 debug output trace mechanism and has a much larger code and data size.  Note 
5066 that these values will vary depending on the efficiency of the compiler and 
5067 the compiler options used during generation.
5069   Previous Release:
5070     Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
5071     Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
5072   Current Release:
5074     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
5075     Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
5079 ----------------------------------------
5080 02 April 2004.  Summary of changes for version 20040402:
5082 1) ACPI CA Core Subsystem:
5084 Fixed an interpreter problem where an indirect store through an ArgX 
5085 parameter was incorrectly applying the "implicit conversion rules" during 
5086 the store.  From the ACPI specification: "If the target is a method local or 
5087 argument (LocalX or ArgX), no conversion is performed and the result is 
5088 stored directly to the target".  The new behavior is to disable implicit 
5089 conversion during ALL stores to an ArgX.
5091 Changed the behavior of the _PRW method scan to ignore any and all errors 
5092 returned by a given _PRW.  This prevents the scan from aborting from the 
5093 failure of any single _PRW.
5095 Moved the runtime configuration parameters from the global init procedure to 
5096 static variables in acglobal.h.  This will allow the host to override the 
5097 default values easily.
5099 Code and Data Size: Current and previous core subsystem library sizes are 
5100 shown below.  These are the code and data sizes for the acpica.lib produced 
5101 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5102 any ACPI driver or OSPM code.  The debug version of the code includes the 
5103 debug output trace mechanism and has a much larger code and data size.  Note 
5104 that these values will vary depending on the efficiency of the compiler and 
5105 the compiler options used during generation.
5107   Previous Release:
5108     Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
5109     Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
5110   Current Release:
5111     Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
5112     Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
5115 2) iASL Compiler/Disassembler:
5117 iASL now fully disassembles SSDTs.  However, External() statements are not 
5118 generated automatically for unresolved symbols at this time.  This is a 
5119 planned feature for future implementation.
5121 Fixed a scoping problem in the disassembler that occurs when the type of the 
5122 target of a Scope() operator is overridden.  This problem caused an 
5123 incorrectly nested internal namespace to be constructed.
5125 Any warnings or errors that are emitted during disassembly are now commented 
5126 out automatically so that the resulting file can be recompiled without any 
5127 hand editing.
5129 ----------------------------------------
5130 26 March 2004.  Summary of changes for version 20040326:
5132 1) ACPI CA Core Subsystem:
5134 Implemented support for "wake" GPEs via interaction between GPEs and the 
5135 _PRW methods.  Every GPE that is pointed to by one or more _PRWs is 
5136 identified as a WAKE GPE and by default will no longer be enabled at 
5137 runtime.  Previously, we were blindly enabling all GPEs with a corresponding 
5138 _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  We 
5139 believe this has been the cause of thousands of "spurious" GPEs on some 
5140 systems.
5142 This new GPE behavior is can be reverted to the original behavior (enable 
5143 ALL GPEs at runtime) via a runtime flag.
5145 Fixed a problem where aliased control methods could not access objects 
5146 properly.  The proper scope within the namespace was not initialized 
5147 (transferred to the target of the aliased method) before executing the 
5148 target method.
5150 Fixed a potential race condition on internal object deletion on the return 
5151 object in AcpiEvaluateObject. 
5153 Integrated a fix for resource descriptors where both _MEM and _MTP were 
5154 being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too 
5155 wide, 0x0F instead of 0x03.)
5157 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a 
5158 fault in some cases.
5160 Updated Notify() values for debug statements in evmisc.c
5162 Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
5164 Code and Data Size: Current and previous core subsystem library sizes are 
5165 shown below.  These are the code and data sizes for the acpica.lib produced 
5166 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5167 any ACPI driver or OSPM code.  The debug version of the code includes the 
5168 debug output trace mechanism and has a much larger code and data size.  Note 
5169 that these values will vary depending on the efficiency of the compiler and 
5170 the compiler options used during generation.
5172   Previous Release:
5174     Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
5175     Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
5176   Current Release:
5177     Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
5178     Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
5180 ----------------------------------------
5181 11 March 2004.  Summary of changes for version 20040311:
5183 1) ACPI CA Core Subsystem:
5185 Fixed a problem where errors occurring during the parse phase of control 
5186 method execution did not abort cleanly.  For example, objects created and 
5187 installed in the namespace were not deleted.  This caused all subsequent 
5188 invocations of the method to return the AE_ALREADY_EXISTS exception.
5190 Implemented a mechanism to force a control method to "Serialized" execution 
5191 if the method attempts to create namespace objects. (The root of the 
5192 AE_ALREADY_EXISTS problem.)
5194 Implemented support for the predefined _OSI "internal" control method.  
5195 Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and 
5196 "Windows 2001.1", and can be easily upgraded for new strings as necessary.  
5197 This feature will allow "other" operating systems to execute the fully 
5198 tested, "Windows" code path through the ASL code
5200 Global Lock Support:  Now allows multiple acquires and releases with any 
5201 internal thread.  Removed concept of "owning thread" for this special mutex.
5203 Fixed two functions that were inappropriately declaring large objects on the 
5204 CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage during 
5205 method execution considerably.
5207 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 
5208 S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
5210 Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 
5211 defined on the machine.
5213 Implemented two runtime options:  One to force all control method execution 
5214 to "Serialized" to mimic Windows behavior, another to disable _OSI support 
5215 if it causes problems on a given machine.
5217 Code and Data Size: Current and previous core subsystem library sizes are 
5218 shown below.  These are the code and data sizes for the acpica.lib produced 
5219 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5220 any ACPI driver or OSPM code.  The debug version of the code includes the 
5221 debug output trace mechanism and has a much larger code and data size.  Note 
5222 that these values will vary depending on the efficiency of the compiler and 
5223 the compiler options used during generation.
5225   Previous Release:
5226     Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
5227     Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
5228   Current Release:
5229     Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
5230     Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
5232 2) iASL Compiler/Disassembler:
5234 Fixed an array size problem for FreeBSD that would cause the compiler to 
5235 fault.
5237 ----------------------------------------
5238 20 February 2004.  Summary of changes for version 20040220:
5241 1) ACPI CA Core Subsystem:
5243 Implemented execution of _SxD methods for Device objects in the 
5244 GetObjectInfo interface.
5246 Fixed calls to _SST method to pass the correct arguments.
5248 Added a call to _SST on wake to restore to "working" state.
5250 Check for End-Of-Buffer failure case in the WalkResources interface.
5252 Integrated fix for 64-bit alignment issue in acglobal.h by moving two 
5253 structures to the beginning of the file.
5255 After wake, clear GPE status register(s) before enabling GPEs.
5257 After wake, clear/enable power button.  (Perhaps we should clear/enable all 
5258 fixed events upon wake.)
5260 Fixed a couple of possible memory leaks in the Namespace manager.
5262 Integrated latest acnetbsd.h file.
5264 ----------------------------------------
5265 11 February 2004.  Summary of changes for version 20040211:
5268 1) ACPI CA Core Subsystem:
5270 Completed investigation and implementation of the call-by-reference 
5271 mechanism for control method arguments.
5273 Fixed a problem where a store of an object into an indexed package could 
5274 fail if the store occurs within a different method than the method that 
5275 created the package.
5277 Fixed a problem where the ToDecimal operator could return incorrect results.
5279 Fixed a problem where the CopyObject operator could fail on some of the more 
5280 obscure objects (e.g., Reference objects.)
5282 Improved the output of the Debug object to display buffer, package, and 
5283 index objects.
5285 Fixed a problem where constructs of the form "RefOf (ArgX)" did not return 
5286 the expected result.
5288 Added permanent ACPI_REPORT_ERROR macros for all instances of the 
5289 ACPI_AML_INTERNAL exception.
5291 Integrated latest version of acfreebsd.h
5293 ----------------------------------------
5294 16 January 2004.  Summary of changes for version 20040116:
5296 The purpose of this release is primarily to update the copyright years in 
5297 each module, thus causing a huge number of diffs.  There are a few small 
5298 functional changes, however.
5300 1) ACPI CA Core Subsystem:
5302 Improved error messages when there is a problem finding one or more of the 
5303 required base ACPI tables
5305 Reintroduced the definition of APIC_HEADER in actbl.h
5307 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
5309 Removed extraneous reference to NewObj in dsmthdat.c
5311 2) iASL compiler
5313 Fixed a problem introduced in December that disabled the correct disassembly 
5314 of Resource Templates
5317 ----------------------------------------
5318 03 December 2003.  Summary of changes for version 20031203:
5320 1) ACPI CA Core Subsystem:
5322 Changed the initialization of Operation Regions during subsystem
5323 init to perform two entire walks of the ACPI namespace; The first
5324 to initialize the regions themselves, the second to execute the
5325 _REG methods.  This fixed some interdependencies across _REG
5326 methods found on some machines.
5328 Fixed a problem where a Store(Local0, Local1) could simply update
5329 the object reference count, and not create a new copy of the
5330 object if the Local1 is uninitialized.
5332 Implemented support for the _SST reserved method during sleep
5333 transitions.
5335 Implemented support to clear the SLP_TYP and SLP_EN bits when
5336 waking up, this is apparently required by some machines.
5338 When sleeping, clear the wake status only if SleepState is not S5.
5340 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
5341 pointer arithmetic advanced a string pointer too far.
5343 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
5344 could be returned if the requested table has not been loaded.
5346 Within the support for IRQ resources, restructured the handling of
5347 the active and edge/level bits.
5349 Fixed a few problems in AcpiPsxExecute() where memory could be
5350 leaked under certain error conditions.
5352 Improved error messages for the cases where the ACPI mode could
5353 not be entered.
5355 Code and Data Size: Current and previous core subsystem library
5356 sizes are shown below.  These are the code and data sizes for the
5357 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5358 these values do not include any ACPI driver or OSPM code.  The
5359 debug version of the code includes the debug output trace
5360 mechanism and has a much larger code and data size.  Note that
5361 these values will vary depending on the efficiency of the compiler
5362 and the compiler options used during generation.
5364   Previous Release (20031029):
5365     Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
5366     Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
5367   Current Release:
5368     Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
5369     Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
5371 2) iASL Compiler/Disassembler:
5373 Implemented a fix for the iASL disassembler where a bad index was
5374 generated.  This was most noticeable on 64-bit platforms
5377 ----------------------------------------
5378 29 October 2003.  Summary of changes for version 20031029:
5380 1) ACPI CA Core Subsystem:
5383 Fixed a problem where a level-triggered GPE with an associated
5384 _Lxx control method was incorrectly cleared twice.
5386 Fixed a problem with the Field support code where an access can
5387 occur beyond the end-of-region if the field is non-aligned but
5388 extends to the very end of the parent region (resulted in an
5389 AE_AML_REGION_LIMIT exception.)
5391 Fixed a problem with ACPI Fixed Events where an RT Clock handler
5392 would not get invoked on an RTC event.  The RTC event bitmasks for
5393 the PM1 registers were not being initialized properly.
5395 Implemented support for executing _STA and _INI methods for
5396 Processor objects.  Although this is currently not part of the
5397 ACPI specification, there is existing ASL code that depends on the
5398 init-time execution of these methods.
5400 Implemented and deployed a GetDescriptorName function to decode
5401 the various types of internal descriptors.  Guards against null
5402 descriptors during debug output also.
5404 Implemented and deployed a GetNodeName function to extract the 4-
5405 character namespace node name.  This function simplifies the debug
5406 and error output, as well as guarding against null pointers during
5407 output.
5409 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
5410 simplify the debug and error output of 64-bit integers.  This
5411 macro replaces the HIDWORD and LODWORD macros for dumping these
5412 integers.
5414 Updated the implementation of the Stall() operator to only call
5415 AcpiOsStall(), and also return an error if the operand is larger
5416 than 255.  This preserves the required behavior of not
5417 relinquishing the processor, as would happen if AcpiOsSleep() was
5418 called for "long stalls".
5420 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
5421 initialized are now treated as NOOPs.
5423 Cleaned up a handful of warnings during 64-bit generation.
5425 Fixed a reported error where and incorrect GPE number was passed
5426 to the GPE dispatch handler.  This value is only used for error
5427 output, however.  Used this opportunity to clean up and streamline
5428 the GPE dispatch code.
5430 Code and Data Size: Current and previous core subsystem library
5431 sizes are shown below.  These are the code and data sizes for the
5432 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5433 these values do not include any ACPI driver or OSPM code.  The
5435 debug version of the code includes the debug output trace
5436 mechanism and has a much larger code and data size.  Note that
5437 these values will vary depending on the efficiency of the compiler
5438 and the compiler options used during generation.
5440   Previous Release (20031002):
5441     Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
5442     Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
5443   Current Release:
5444     Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
5445     Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
5448 2) iASL Compiler/Disassembler:
5450 Updated the iASL compiler to return an error if the operand to the
5451 Stall() operator is larger than 255.
5454 ----------------------------------------
5455 02 October 2003.  Summary of changes for version 20031002:
5458 1) ACPI CA Core Subsystem:
5460 Fixed a problem with Index Fields where the index was not
5461 incremented for fields that require multiple writes to the
5462 index/data registers (Fields that are wider than the data
5463 register.)
5465 Fixed a problem with all Field objects where a write could go
5466 beyond the end-of-field if the field was larger than the access
5467 granularity and therefore required multiple writes to complete the
5468 request.  An extra write beyond the end of the field could happen
5469 inadvertently.
5471 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
5472 would incorrectly be returned if the width of the Data Register
5473 was larger than the specified field access width.
5475 Completed fixes for LoadTable() and Unload() and verified their
5476 operation.  Implemented full support for the "DdbHandle" object
5477 throughout the ACPI CA subsystem.
5479 Implemented full support for the MADT and ECDT tables in the ACPI
5480 CA header files.  Even though these tables are not directly
5481 consumed by ACPI CA, the header definitions are useful for ACPI
5482 device drivers.
5484 Integrated resource descriptor fixes posted to the Linux ACPI
5485 list.  This included checks for minimum descriptor length, and
5486 support for trailing NULL strings within descriptors that have
5487 optional string elements.
5489 Code and Data Size: Current and previous core subsystem library
5490 sizes are shown below.  These are the code and data sizes for the
5491 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5492 these values do not include any ACPI driver or OSPM code.  The
5493 debug version of the code includes the debug output trace
5494 mechanism and has a much larger code and data size.  Note that
5495 these values will vary depending on the efficiency of the compiler
5496 and the compiler options used during generation.
5498   Previous Release (20030918):
5499     Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
5500     Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
5501   Current Release:
5502     Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
5503     Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
5506 2) iASL Compiler:
5508 Implemented detection of non-ASCII characters within the input
5509 source ASL file.  This catches attempts to compile binary (AML)
5510 files early in the compile, with an informative error message.
5512 Fixed a problem where the disassembler would fault if the output
5513 filename could not be generated or if the output file could not be
5514 opened.
5516 ----------------------------------------
5517 18 September 2003.  Summary of changes for version 20030918:
5520 1) ACPI CA Core Subsystem:
5522 Found and fixed a longstanding problem with the late execution of
5523 the various deferred AML opcodes (such as Operation Regions,
5524 Buffer Fields, Buffers, and Packages).  If the name string
5525 specified for the name of the new object placed the object in a
5526 scope other than the current scope, the initialization/execution
5527 of the opcode failed.  The solution to this problem was to
5528 implement a mechanism where the late execution of such opcodes
5529 does not attempt to lookup/create the name a second time in an
5530 incorrect scope.  This fixes the "region size computed
5531 incorrectly" problem.
5533 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
5534 Global Lock AE_BAD_PARAMETER error.
5536 Fixed several 64-bit issues with prototypes, casting and data
5537 types.
5539 Removed duplicate prototype from acdisasm.h
5541 Fixed an issue involving EC Operation Region Detach (Shaohua Li)
5543 Code and Data Size: Current and previous core subsystem library
5544 sizes are shown below.  These are the code and data sizes for the
5545 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5546 these values do not include any ACPI driver or OSPM code.  The
5547 debug version of the code includes the debug output trace
5548 mechanism and has a much larger code and data size.  Note that
5549 these values will vary depending on the efficiency of the compiler
5550 and the compiler options used during generation.
5552   Previous Release:
5554     Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
5555     Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
5556   Current Release:
5557     Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
5558     Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
5561 2) Linux:
5563 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
5564 correct sleep time in seconds.
5566 ----------------------------------------
5567 14 July 2003.  Summary of changes for version 20030619:
5569 1) ACPI CA Core Subsystem:
5571 Parse SSDTs in order discovered, as opposed to reverse order
5572 (Hrvoje Habjanic)
5574 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
5575 Klausner,
5576    Nate Lawson)
5579 2) Linux:
5581 Dynamically allocate SDT list (suggested by Andi Kleen)
5583 proc function return value cleanups (Andi Kleen)
5585 Correctly handle NMI watchdog during long stalls (Andrew Morton)
5587 Make it so acpismp=force works (reported by Andrew Morton)
5590 ----------------------------------------
5591 19 June 2003.  Summary of changes for version 20030619:
5593 1) ACPI CA Core Subsystem:
5595 Fix To/FromBCD, eliminating the need for an arch-specific #define.
5597 Do not acquire a semaphore in the S5 shutdown path.
5599 Fix ex_digits_needed for 0. (Takayoshi Kochi)
5601 Fix sleep/stall code reversal. (Andi Kleen)
5603 Revert a change having to do with control method calling
5604 semantics.
5606 2) Linux:
5608 acpiphp update (Takayoshi Kochi)
5610 Export acpi_disabled for sonypi (Stelian Pop)
5612 Mention acpismp=force in config help
5614 Re-add acpitable.c and acpismp=force. This improves backwards
5616 compatibility and also cleans up the code to a significant degree.
5618 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
5620 ----------------------------------------
5621 22 May 2003.  Summary of changes for version 20030522:
5623 1) ACPI CA Core Subsystem:
5625 Found and fixed a reported problem where an AE_NOT_FOUND error
5626 occurred occasionally during _BST evaluation.  This turned out to
5627 be an Owner ID allocation issue where a called method did not get
5628 a new ID assigned to it.  Eventually, (after 64k calls), the Owner
5629 ID UINT16 would wraparound so that the ID would be the same as the
5630 caller's and the called method would delete the caller's
5631 namespace.
5633 Implemented extended error reporting for control methods that are
5634 aborted due to a run-time exception.  Output includes the exact
5635 AML instruction that caused the method abort, a dump of the method
5636 locals and arguments at the time of the abort, and a trace of all
5637 nested control method calls.
5639 Modified the interpreter to allow the creation of buffers of zero
5640 length from the AML code. Implemented new code to ensure that no
5641 attempt is made to actually allocate a memory buffer (of length
5642 zero) - instead, a simple buffer object with a NULL buffer pointer
5643 and length zero is created.  A warning is no longer issued when
5644 the AML attempts to create a zero-length buffer.
5646 Implemented a workaround for the "leading asterisk issue" in
5647 _HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
5648 asterisk is automatically removed if present in any HID, UID, or
5649 CID strings.  The iASL compiler will still flag this asterisk as
5650 an error, however.
5652 Implemented full support for _CID methods that return a package of
5653 multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
5654 now additionally returns a device _CID list if present.  This
5655 required a change to the external interface in order to pass an
5656 ACPI_BUFFER object as a parameter since the _CID list is of
5657 variable length.
5659 Fixed a problem with the new AE_SAME_HANDLER exception where
5660 handler initialization code did not know about this exception.
5662 Code and Data Size: Current and previous core subsystem library
5663 sizes are shown below.  These are the code and data sizes for the
5664 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5665 these values do not include any ACPI driver or OSPM code.  The
5666 debug version of the code includes the debug output trace
5667 mechanism and has a much larger code and data size.  Note that
5668 these values will vary depending on the efficiency of the compiler
5669 and the compiler options used during generation.
5671   Previous Release (20030509):
5672     Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
5673     Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
5674   Current Release:
5675     Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
5676     Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
5679 2) Linux:
5681 Fixed a bug in which we would reinitialize the ACPI interrupt
5682 after it was already working, thus disabling all ACPI and the IRQs
5683 for any other device sharing the interrupt. (Thanks to Stian
5684 Jordet)
5686 Toshiba driver update (John Belmonte)
5688 Return only 0 or 1 for our interrupt handler status (Andrew
5689 Morton)
5692 3) iASL Compiler:
5694 Fixed a reported problem where multiple (nested) ElseIf()
5695 statements were not handled correctly by the compiler, resulting
5696 in incorrect warnings and incorrect AML code.  This was a problem
5697 in both the ASL parser and the code generator.
5700 4) Documentation:
5702 Added changes to existing interfaces, new exception codes, and new
5703 text concerning reference count object management versus garbage
5704 collection.
5706 ----------------------------------------
5707 09 May 2003.  Summary of changes for version 20030509.
5710 1) ACPI CA Core Subsystem:
5712 Changed the subsystem initialization sequence to hold off
5713 installation of address space handlers until the hardware has been
5714 initialized and the system has entered ACPI mode.  This is because
5715 the installation of space handlers can cause _REG methods to be
5716 run.  Previously, the _REG methods could potentially be run before
5717 ACPI mode was enabled.
5719 Fixed some memory leak issues related to address space handler and
5720 notify handler installation.  There were some problems with the
5721 reference count mechanism caused by the fact that the handler
5722 objects are shared across several namespace objects.
5724 Fixed a reported problem where reference counts within the
5725 namespace were not properly updated when named objects created by
5726 method execution were deleted.
5728 Fixed a reported problem where multiple SSDTs caused a deletion
5729 issue during subsystem termination.  Restructured the table data
5730 structures to simplify the linked lists and the related code.
5732 Fixed a problem where the table ID associated with secondary
5733 tables (SSDTs) was not being propagated into the namespace objects
5734 created by those tables.  This would only present a problem for
5735 tables that are unloaded at run-time, however.
5737 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
5738 type as the length parameter (instead of UINT32).
5740 Solved a long-standing problem where an ALREADY_EXISTS error
5741 appears on various systems.  This problem could happen when there
5742 are multiple PCI_Config operation regions under a single PCI root
5743 bus.  This doesn't happen very frequently, but there are some
5744 systems that do this in the ASL.
5746 Fixed a reported problem where the internal DeleteNode function
5747 was incorrectly handling the case where a namespace node was the
5748 first in the parent's child list, and had additional peers (not
5749 the only child, but first in the list of children.)
5751 Code and Data Size: Current core subsystem library sizes are shown
5752 below.  These are the code and data sizes for the acpica.lib
5753 produced by the Microsoft Visual C++ 6.0 compiler, and these
5754 values do not include any ACPI driver or OSPM code.  The debug
5755 version of the code includes the debug output trace mechanism and
5756 has a much larger code and data size.  Note that these values will
5757 vary depending on the efficiency of the compiler and the compiler
5758 options used during generation.
5760   Previous Release
5761     Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
5762     Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
5763   Current Release:
5764     Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
5765     Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
5768 2) Linux:
5770 Allow ":" in OS override string (Ducrot Bruno)
5772 Kobject fix (Greg KH)
5775 3 iASL Compiler/Disassembler:
5777 Fixed a problem in the generation of the C source code files (AML
5778 is emitted in C source statements for BIOS inclusion) where the
5779 Ascii dump that appears within a C comment at the end of each line
5780 could cause a compile time error if the AML sequence happens to
5781 have an open comment or close comment sequence embedded.
5784 ----------------------------------------
5785 24 April 2003.  Summary of changes for version 20030424.
5788 1) ACPI CA Core Subsystem:
5790 Support for big-endian systems has been implemented.  Most of the
5791 support has been invisibly added behind big-endian versions of the
5792 ACPI_MOVE_* macros.
5794 Fixed a problem in AcpiHwDisableGpeBlock() and
5795 AcpiHwClearGpeBlock() where an incorrect offset was passed to the
5796 low level hardware write routine.  The offset parameter was
5797 actually eliminated from the low level read/write routines because
5798 they had become obsolete.
5800 Fixed a problem where a handler object was deleted twice during
5801 the removal of a fixed event handler.
5804 2) Linux:
5806 A fix for SMP systems with link devices was contributed by
5808 Compaq's Dan Zink.
5810 (2.5) Return whether we handled the interrupt in our IRQ handler.
5811 (Linux ISRs no longer return void, so we can propagate the handler
5812 return value from the ACPI CA core back to the OS.)
5816 3) Documentation:
5818 The ACPI CA Programmer Reference has been updated to reflect new
5819 interfaces and changes to existing interfaces.
5821 ----------------------------------------
5822 28 March 2003.  Summary of changes for version 20030328.
5824 1) ACPI CA Core Subsystem:
5826 The GPE Block Device support has been completed.  New interfaces
5827 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
5828 interfaces (enable, disable, clear, getstatus) have been split
5829 into separate interfaces for Fixed Events and General Purpose
5830 Events (GPEs) in order to support GPE Block Devices properly.
5832 Fixed a problem where the error message "Failed to acquire
5833 semaphore" would appear during operations on the embedded
5834 controller (EC).
5836 Code and Data Size: Current core subsystem library sizes are shown
5837 below.  These are the code and data sizes for the acpica.lib
5838 produced by the Microsoft Visual C++ 6.0 compiler, and these
5839 values do not include any ACPI driver or OSPM code.  The debug
5840 version of the code includes the debug output trace mechanism and
5841 has a much larger code and data size.  Note that these values will
5842 vary depending on the efficiency of the compiler and the compiler
5843 options used during generation.
5845   Previous Release
5846     Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
5847     Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
5848   Current Release:
5849     Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
5850     Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
5853 ----------------------------------------
5854 28 February 2003.  Summary of changes for version 20030228.
5857 1) ACPI CA Core Subsystem:
5859 The GPE handling and dispatch code has been completely overhauled
5860 in preparation for support of GPE Block Devices (ID ACPI0006).
5861 This affects internal data structures and code only; there should
5862 be no differences visible externally.  One new file has been
5863 added, evgpeblk.c
5865 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
5866 fields that are used to determine the GPE block lengths.  The
5867 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
5868 structures are ignored.  This is per the ACPI specification but it
5869 isn't very clear.  The full 256 Block 0/1 GPEs are now supported
5870 (the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
5872 In the SCI interrupt handler, removed the read of the PM1_CONTROL
5873 register to look at the SCI_EN bit.  On some machines, this read
5874 causes an SMI event and greatly slows down SCI events.  (This may
5875 in fact be the cause of slow battery status response on some
5876 systems.)
5878 Fixed a problem where a store of a NULL string to a package object
5879 could cause the premature deletion of the object.  This was seen
5880 during execution of the battery _BIF method on some systems,
5881 resulting in no battery data being returned.
5883 Added AcpiWalkResources interface to simplify parsing of resource
5884 lists.
5886 Code and Data Size: Current core subsystem library sizes are shown
5887 below.  These are the code and data sizes for the acpica.lib
5888 produced by the Microsoft Visual C++ 6.0 compiler, and these
5889 values do not include any ACPI driver or OSPM code.  The debug
5890 version of the code includes the debug output trace mechanism and
5891 has a much larger code and data size.  Note that these values will
5892 vary depending on the efficiency of the compiler and the compiler
5893 options used during generation.
5895   Previous Release
5896     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
5897     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
5898   Current Release:
5899     Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
5900     Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
5903 2) Linux
5905 S3 fixes (Ole Rohne)
5907 Update ACPI PHP driver with to use new acpi_walk_resource API
5908 (Bjorn Helgaas)
5910 Add S4BIOS support (Pavel Machek)
5912 Map in entire table before performing checksum (John Stultz)
5914 Expand the mem= cmdline to allow the specification of reserved and
5915 ACPI DATA blocks (Pavel Machek)
5917 Never use ACPI on VISWS
5919 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
5921 Revert a change that allowed P_BLK lengths to be 4 or 5. This is
5922 causing us to think that some systems support C2 when they really
5923 don't.
5925 Do not count processor objects for non-present CPUs (Thanks to
5926 Dominik Brodowski)
5929 3) iASL Compiler:
5931 Fixed a problem where ASL include files could not be found and
5932 opened.
5934 Added support for the _PDC reserved name.
5937 ----------------------------------------
5938 22 January 2003.  Summary of changes for version 20030122.
5941 1) ACPI CA Core Subsystem:
5943 Added a check for constructs of the form:  Store (Local0, Local0)
5944 where Local0 is not initialized.  Apparently, some BIOS
5945 programmers believe that this is a NOOP.  Since this store doesn't
5946 do anything anyway, the new prototype behavior will ignore this
5947 error.  This is a case where we can relax the strict checking in
5948 the interpreter in the name of compatibility.
5951 2) Linux
5953 The AcpiSrc Source Conversion Utility has been released with the
5954 Linux package for the first time.  This is the utility that is
5955 used to convert the ACPI CA base source code to the Linux version.
5957 (Both) Handle P_BLK lengths shorter than 6 more gracefully
5959 (Both) Move more headers to include/acpi, and delete an unused
5960 header.
5962 (Both) Move drivers/acpi/include directory to include/acpi
5964 (Both) Boot functions don't use cmdline, so don't pass it around
5966 (Both) Remove include of unused header (Adrian Bunk)
5968 (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
5970 former now also includes the latter, acpiphp.h only needs the one,
5971 now.
5973 (2.5) Make it possible to select method of bios restoring after S3
5974 resume. [=> no more ugly ifdefs] (Pavel Machek)
5976 (2.5) Make proc write interfaces work (Pavel Machek)
5978 (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
5980 (2.5) Break out ACPI Perf code into its own module, under cpufreq
5981 (Dominik Brodowski)
5983 (2.4) S4BIOS support (Ducrot Bruno)
5985 (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
5986 Visinoni)
5989 3) iASL Compiler:
5991 Added support to disassemble SSDT and PSDTs.
5993 Implemented support to obtain SSDTs from the Windows registry if
5994 available.
5997 ----------------------------------------
5998 09 January 2003.  Summary of changes for version 20030109.
6000 1) ACPI CA Core Subsystem:
6002 Changed the behavior of the internal Buffer-to-String conversion
6003 function.  The current ACPI specification states that the contents
6004 of the buffer are "converted to a string of two-character
6005 hexadecimal numbers, each separated by a space".  Unfortunately,
6006 this definition is not backwards compatible with existing ACPI 1.0
6007 implementations (although the behavior was not defined in the ACPI
6008 1.0 specification).  The new behavior simply copies data from the
6009 buffer to the string until a null character is found or the end of
6010 the buffer is reached.  The new String object is always null
6011 terminated.  This problem was seen during the generation of _BIF
6012 battery data where incorrect strings were returned for battery
6013 type, etc.  This will also require an errata to the ACPI
6014 specification.
6016 Renamed all instances of NATIVE_UINT and NATIVE_INT to
6017 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
6019 Copyright in all module headers (both Linux and non-Linux) has be
6020 updated to 2003.
6022 Code and Data Size: Current core subsystem library sizes are shown
6023 below.  These are the code and data sizes for the acpica.lib
6024 produced by the Microsoft Visual C++ 6.0 compiler, and these
6025 values do not include any ACPI driver or OSPM code.  The debug
6026 version of the code includes the debug output trace mechanism and
6027 has a much larger code and data size.  Note that these values will
6028 vary depending on the efficiency of the compiler and the compiler
6029 options used during generation.
6031   Previous Release
6032     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6033     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6034   Current Release:
6035     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6036     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6039 2) Linux
6041 Fixed an oops on module insertion/removal (Matthew Tippett)
6043 (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
6045 (2.5) Replace pr_debug (Randy Dunlap)
6047 (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
6049 (Both) Eliminate spawning of thread from timer callback, in favor
6050 of schedule_work()
6052 (Both) Show Lid status in /proc (Zdenek OGAR Skalak)
6054 (Both) Added define for Fixed Function HW region (Matthew Wilcox)
6056 (Both) Add missing statics to button.c (Pavel Machek)
6058 Several changes have been made to the source code translation
6059 utility that generates the Linux Code in order to make the code
6060 more "Linux-like":
6062 All typedefs on structs and unions have been removed in keeping
6063 with the Linux coding style.
6065 Removed the non-Linux SourceSafe module revision number from each
6066 module header.
6068 Completed major overhaul of symbols to be lowercased for linux.
6069 Doubled the number of symbols that are lowercased.
6071 Fixed a problem where identifiers within procedure headers and
6072 within quotes were not fully lower cased (they were left with a
6073 starting capital.)
6075 Some C macros whose only purpose is to allow the generation of 16-
6076 bit code are now completely removed in the Linux code, increasing
6077 readability and maintainability.
6079 ----------------------------------------
6081 12 December 2002.  Summary of changes for version 20021212.
6084 1) ACPI CA Core Subsystem:
6086 Fixed a problem where the creation of a zero-length AML Buffer
6087 would cause a fault.
6089 Fixed a problem where a Buffer object that pointed to a static AML
6090 buffer (in an ACPI table) could inadvertently be deleted, causing
6091 memory corruption.
6093 Fixed a problem where a user buffer (passed in to the external
6094 ACPI CA interfaces) could be overwritten if the buffer was too
6095 small to complete the operation, causing memory corruption.
6097 Fixed a problem in the Buffer-to-String conversion code where a
6098 string of length one was always returned, regardless of the size
6099 of the input Buffer object.
6101 Removed the NATIVE_CHAR data type across the entire source due to
6102 lack of need and lack of consistent use.
6104 Code and Data Size: Current core subsystem library sizes are shown
6105 below.  These are the code and data sizes for the acpica.lib
6106 produced by the Microsoft Visual C++ 6.0 compiler, and these
6107 values do not include any ACPI driver or OSPM code.  The debug
6108 version of the code includes the debug output trace mechanism and
6109 has a much larger code and data size.  Note that these values will
6110 vary depending on the efficiency of the compiler and the compiler
6111 options used during generation.
6113   Previous Release
6114     Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
6115     Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
6116   Current Release:
6117     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6118     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6121 ----------------------------------------
6122 05 December 2002.  Summary of changes for version 20021205.
6124 1) ACPI CA Core Subsystem:
6126 Fixed a problem where a store to a String or Buffer object could
6127 cause corruption of the DSDT if the object type being stored was
6128 the same as the target object type and the length of the object
6129 being stored was equal to or smaller than the original (existing)
6130 target object.  This was seen to cause corruption of battery _BIF
6131 buffers if the _BIF method modified the buffer on the fly.
6133 Fixed a problem where an internal error was generated if a control
6134 method invocation was used in an OperationRegion, Buffer, or
6135 Package declaration.  This was caused by the deferred parsing of
6136 the control method and thus the deferred creation of the internal
6137 method object.  The solution to this problem was to create the
6138 internal method object at the moment the method is encountered in
6139 the first pass - so that subsequent references to the method will
6140 able to obtain the required parameter count and thus properly
6141 parse the method invocation.  This problem presented itself as an
6142 AE_AML_INTERNAL during the pass 1 parse phase during table load.
6144 Fixed a problem where the internal String object copy routine did
6145 not always allocate sufficient memory for the target String object
6146 and caused memory corruption.  This problem was seen to cause
6147 "Allocation already present in list!" errors as memory allocation
6148 became corrupted.
6150 Implemented a new function for the evaluation of namespace objects
6151 that allows the specification of the allowable return object
6152 types.  This simplifies a lot of code that checks for a return
6153 object of one or more specific objects returned from the
6154 evaluation (such as _STA, etc.)  This may become and external
6155 function if it would be useful to ACPI-related drivers.
6157 Completed another round of prefixing #defines with "ACPI_" for
6158 clarity.
6160 Completed additional code restructuring to allow more modular
6161 linking for iASL compiler and AcpiExec.  Several files were split
6162 creating new files.  New files:  nsparse.c dsinit.c evgpe.c
6164 Implemented an abort mechanism to terminate an executing control
6165 method via the AML debugger.  This feature is useful for debugging
6166 control methods that depend (wait) for specific hardware
6167 responses.
6169 Code and Data Size: Current core subsystem library sizes are shown
6170 below.  These are the code and data sizes for the acpica.lib
6171 produced by the Microsoft Visual C++ 6.0 compiler, and these
6172 values do not include any ACPI driver or OSPM code.  The debug
6173 version of the code includes the debug output trace mechanism and
6174 has a much larger code and data size.  Note that these values will
6175 vary depending on the efficiency of the compiler and the compiler
6176 options used during generation.
6178   Previous Release
6179     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6180     Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
6181   Current Release:
6182     Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
6183     Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
6186 2) iASL Compiler/Disassembler
6188 Fixed a compiler code generation problem for "Interrupt" Resource
6189 Descriptors.  If specified in the ASL, the optional "Resource
6190 Source Index" and "Resource Source" fields were not inserted into
6191 the correct location within the AML resource descriptor, creating
6192 an invalid descriptor.
6194 Fixed a disassembler problem for "Interrupt" resource descriptors.
6195 The optional "Resource Source Index" and "Resource Source" fields
6196 were ignored.
6199 ----------------------------------------
6200 22 November 2002.  Summary of changes for version 20021122.
6203 1) ACPI CA Core Subsystem:
6205 Fixed a reported problem where an object stored to a Method Local
6206 or Arg was not copied to a new object during the store - the
6207 object pointer was simply copied to the Local/Arg.  This caused
6208 all subsequent operations on the Local/Arg to also affect the
6209 original source of the store operation.
6211 Fixed a problem where a store operation to a Method Local or Arg
6212 was not completed properly if the Local/Arg contained a reference
6213 (from RefOf) to a named field.  The general-purpose store-to-
6214 namespace-node code is now used so that this case is handled
6215 automatically.
6217 Fixed a problem where the internal object copy routine would cause
6218 a protection fault if the object being copied was a Package and
6219 contained either 1) a NULL package element or 2) a nested sub-
6220 package.
6222 Fixed a problem with the GPE initialization that resulted from an
6223 ambiguity in the ACPI specification.  One section of the
6224 specification states that both the address and length of the GPE
6225 block must be zero if the block is not supported.  Another section
6226 implies that only the address need be zero if the block is not
6227 supported.  The code has been changed so that both the address and
6228 the length must be non-zero to indicate a valid GPE block (i.e.,
6229 if either the address or the length is zero, the GPE block is
6230 invalid.)
6232 Code and Data Size: Current core subsystem library sizes are shown
6233 below.  These are the code and data sizes for the acpica.lib
6234 produced by the Microsoft Visual C++ 6.0 compiler, and these
6235 values do not include any ACPI driver or OSPM code.  The debug
6236 version of the code includes the debug output trace mechanism and
6237 has a much larger code and data size.  Note that these values will
6238 vary depending on the efficiency of the compiler and the compiler
6239 options used during generation.
6241   Previous Release
6242     Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
6243     Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
6244   Current Release:
6245     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6246     Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
6249 2) Linux
6251 Cleaned up EC driver. Exported an external EC read/write
6252 interface. By going through this, other drivers (most notably
6253 sonypi) will be able to serialize access to the EC.
6256 3) iASL Compiler/Disassembler
6258 Implemented support to optionally generate include files for both
6259 ASM and C (the -i switch).  This simplifies BIOS development by
6260 automatically creating include files that contain external
6261 declarations for the symbols that are created within the
6263 (optionally generated) ASM and C AML source files.
6266 ----------------------------------------
6267 15 November 2002.  Summary of changes for version 20021115.
6269 1) ACPI CA Core Subsystem:
6271 Fixed a memory leak problem where an error during resolution of
6273 method arguments during a method invocation from another method
6274 failed to cleanup properly by deleting all successfully resolved
6275 argument objects.
6277 Fixed a problem where the target of the Index() operator was not
6278 correctly constructed if the source object was a package.  This
6279 problem has not been detected because the use of a target operand
6280 with Index() is very rare.
6282 Fixed a problem with the Index() operator where an attempt was
6283 made to delete the operand objects twice.
6285 Fixed a problem where an attempt was made to delete an operand
6286 twice during execution of the CondRefOf() operator if the target
6287 did not exist.
6289 Implemented the first of perhaps several internal create object
6290 functions that create and initialize a specific object type.  This
6291 consolidates duplicated code wherever the object is created, thus
6292 shrinking the size of the subsystem.
6294 Implemented improved debug/error messages for errors that occur
6295 during nested method invocations.  All executing method pathnames
6296 are displayed (with the error) as the call stack is unwound - thus
6297 simplifying debug.
6299 Fixed a problem introduced in the 10/02 release that caused
6300 premature deletion of a buffer object if a buffer was used as an
6301 ASL operand where an integer operand is required (Thus causing an
6302 implicit object conversion from Buffer to Integer.)  The change in
6303 the 10/02 release was attempting to fix a memory leak (albeit
6304 incorrectly.)
6306 Code and Data Size: Current core subsystem library sizes are shown
6307 below.  These are the code and data sizes for the acpica.lib
6308 produced by the Microsoft Visual C++ 6.0 compiler, and these
6309 values do not include any ACPI driver or OSPM code.  The debug
6310 version of the code includes the debug output trace mechanism and
6311 has a much larger code and data size.  Note that these values will
6312 vary depending on the efficiency of the compiler and the compiler
6313 options used during generation.
6315   Previous Release
6316     Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
6317     Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
6318   Current Release:
6319     Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
6320     Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
6323 2) Linux
6325 Changed the implementation of the ACPI semaphores to use down()
6326 instead of down_interruptable().  It is important that the
6327 execution of ACPI control methods not be interrupted by signals.
6328 Methods must run to completion, or the system may be left in an
6329 unknown/unstable state.
6331 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
6332 (Shawn Starr)
6335 3) iASL Compiler/Disassembler
6338 Changed the default location of output files.  All output files
6339 are now placed in the current directory by default instead of in
6340 the directory of the source file.  This change may affect some
6341 existing makefiles, but it brings the behavior of the compiler in
6342 line with other similar tools.  The location of the output files
6343 can be overridden with the -p command line switch.
6346 ----------------------------------------
6347 11 November 2002.  Summary of changes for version 20021111.
6350 0) ACPI Specification 2.0B is released and is now available at:
6351 http://www.acpi.info/index.html
6354 1) ACPI CA Core Subsystem:
6356 Implemented support for the ACPI 2.0 SMBus Operation Regions.
6357 This includes the early detection and handoff of the request to
6358 the SMBus region handler (avoiding all of the complex field
6359 support code), and support for the bidirectional return packet
6360 from an SMBus write operation.  This paves the way for the
6361 development of SMBus drivers in each host operating system.
6363 Fixed a problem where the semaphore WAIT_FOREVER constant was
6364 defined as 32 bits, but must be 16 bits according to the ACPI
6365 specification.  This had the side effect of causing ASL
6366 Mutex/Event timeouts even though the ASL code requested a wait
6367 forever.  Changed all internal references to the ACPI timeout
6368 parameter to 16 bits to prevent future problems.  Changed the name
6369 of WAIT_FOREVER to ACPI_WAIT_FOREVER.
6371 Code and Data Size: Current core subsystem library sizes are shown
6372 below.  These are the code and data sizes for the acpica.lib
6373 produced by the Microsoft Visual C++ 6.0 compiler, and these
6374 values do not include any ACPI driver or OSPM code.  The debug
6375 version of the code includes the debug output trace mechanism and
6376 has a much larger code and data size.  Note that these values will
6377 vary depending on the efficiency of the compiler and the compiler
6378 options used during generation.
6380   Previous Release
6381     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6382     Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
6383   Current Release:
6384     Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
6385     Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
6388 2) Linux
6390 Module loading/unloading fixes (John Cagle)
6393 3) iASL Compiler/Disassembler
6395 Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
6397 Implemented support for the disassembly of all SMBus protocol
6398 keywords (SMBQuick, SMBWord, etc.)
6400 ----------------------------------------
6401 01 November 2002.  Summary of changes for version 20021101.
6404 1) ACPI CA Core Subsystem:
6406 Fixed a problem where platforms that have a GPE1 block but no GPE0
6407 block were not handled correctly.  This resulted in a "GPE
6408 overlap" error message.  GPE0 is no longer required.
6410 Removed code added in the previous release that inserted nodes
6411 into the namespace in alphabetical order.  This caused some side-
6412 effects on various machines.  The root cause of the problem is
6413 still under investigation since in theory, the internal ordering
6414 of the namespace nodes should not matter.
6417 Enhanced error reporting for the case where a named object is not
6418 found during control method execution.  The full ACPI namepath
6419 (name reference) of the object that was not found is displayed in
6420 this case.
6422 Note: as a result of the overhaul of the namespace object types in
6423 the previous release, the namespace nodes for the predefined
6424 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
6425 instead of ACPI_TYPE_ANY.  This simplifies the namespace
6426 management code but may affect code that walks the namespace tree
6427 looking for specific object types.
6429 Code and Data Size: Current core subsystem library sizes are shown
6430 below.  These are the code and data sizes for the acpica.lib
6431 produced by the Microsoft Visual C++ 6.0 compiler, and these
6432 values do not include any ACPI driver or OSPM code.  The debug
6433 version of the code includes the debug output trace mechanism and
6434 has a much larger code and data size.  Note that these values will
6435 vary depending on the efficiency of the compiler and the compiler
6436 options used during generation.
6438   Previous Release
6439     Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
6440     Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
6441   Current Release:
6442     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6443     Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
6446 2) Linux
6448 Fixed a problem introduced in the previous release where the
6449 Processor and Thermal objects were not recognized and installed in
6450 /proc.  This was related to the scope type change described above.
6453 3) iASL Compiler/Disassembler
6455 Implemented the -g option to get all of the required ACPI tables
6456 from the registry and save them to files (Windows version of the
6457 compiler only.)  The required tables are the FADT, FACS, and DSDT.
6459 Added ACPI table checksum validation during table disassembly in
6460 order to catch corrupted tables.
6463 ----------------------------------------
6464 22 October 2002.  Summary of changes for version 20021022.
6466 1) ACPI CA Core Subsystem:
6468 Implemented a restriction on the Scope operator that the target
6469 must already exist in the namespace at the time the operator is
6470 encountered (during table load or method execution).  In other
6471 words, forward references are not allowed and Scope() cannot
6472 create a new object. This changes the previous behavior where the
6473 interpreter would create the name if not found.  This new behavior
6474 correctly enables the search-to-root algorithm during namespace
6475 lookup of the target name.  Because of this upsearch, this fixes
6476 the known Compaq _SB_.OKEC problem and makes both the AML
6477 interpreter and iASL compiler compatible with other ACPI
6478 implementations.
6480 Completed a major overhaul of the internal ACPI object types for
6481 the ACPI Namespace and the associated operand objects.  Many of
6482 these types had become obsolete with the introduction of the two-
6483 pass namespace load.  This cleanup simplifies the code and makes
6484 the entire namespace load mechanism much clearer and easier to
6485 understand.
6487 Improved debug output for tracking scope opening/closing to help
6488 diagnose scoping issues.  The old scope name as well as the new
6489 scope name are displayed.  Also improved error messages for
6490 problems with ASL Mutex objects and error messages for GPE
6491 problems.
6493 Cleaned up the namespace dump code, removed obsolete code.
6495 All string output (for all namespace/object dumps) now uses the
6496 common ACPI string output procedure which handles escapes properly
6497 and does not emit non-printable characters.
6499 Fixed some issues with constants in the 64-bit version of the
6500 local C library (utclib.c)
6503 2) Linux
6505 EC Driver:  No longer attempts to acquire the Global Lock at
6506 interrupt level.
6509 3) iASL Compiler/Disassembler
6511 Implemented ACPI 2.0B grammar change that disallows all Type 1 and
6512 2 opcodes outside of a control method.  This means that the
6513 "executable" operators (versus the "namespace" operators) cannot
6514 be used at the table level; they can only be used within a control
6515 method.
6517 Implemented the restriction on the Scope() operator where the
6518 target must already exist in the namespace at the time the
6519 operator is encountered (during ASL compilation). In other words,
6520 forward references are not allowed and Scope() cannot create a new
6521 object.  This makes the iASL compiler compatible with other ACPI
6522 implementations and makes the Scope() implementation adhere to the
6523 ACPI specification.
6525 Fixed a problem where namepath optimization for the Alias operator
6526 was optimizing the wrong path (of the two namepaths.)  This caused
6527 a "Missing alias link" error message.
6529 Fixed a problem where an "unknown reserved name" warning could be
6530 incorrectly generated for names like "_SB" when the trailing
6531 underscore is not used in the original ASL.
6533 Fixed a problem where the reserved name check did not handle
6534 NamePaths with multiple NameSegs correctly.  The first nameseg of
6535 the NamePath was examined instead of the last NameSeg.
6538 ----------------------------------------
6540 02 October 2002.  Summary of changes for this release.
6543 1) ACPI CA Core Subsystem version 20021002:
6545 Fixed a problem where a store/copy of a string to an existing
6546 string did not always set the string length properly in the String
6547 object.
6549 Fixed a reported problem with the ToString operator where the
6550 behavior was identical to the ToHexString operator instead of just
6551 simply converting a raw buffer to a string data type.
6553 Fixed a problem where CopyObject and the other "explicit"
6554 conversion operators were not updating the internal namespace node
6555 type as part of the store operation.
6557 Fixed a memory leak during implicit source operand conversion
6558 where the original object was not deleted if it was converted to a
6559 new object of a different type.
6561 Enhanced error messages for all problems associated with namespace
6562 lookups.  Common procedure generates and prints the lookup name as
6563 well as the formatted status.
6565 Completed implementation of a new design for the Alias support
6566 within the namespace.  The existing design did not handle the case
6567 where a new object was assigned to one of the two names due to the
6568 use of an explicit conversion operator, resulting in the two names
6569 pointing to two different objects.  The new design simply points
6570 the Alias name to the original name node - not to the object.
6571 This results in a level of indirection that must be handled in the
6572 name resolution mechanism.
6574 Code and Data Size: Current core subsystem library sizes are shown
6575 below.  These are the code and data sizes for the acpica.lib
6576 produced by the Microsoft Visual C++ 6.0 compiler, and these
6577 values do not include any ACPI driver or OSPM code.  The debug
6578 version of the code includes the debug output trace mechanism and
6579 has a larger code and data size.  Note that these values will vary
6580 depending on the efficiency of the compiler and the compiler
6581 options used during generation.
6583   Previous Release
6584     Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
6585     Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
6586   Current Release:
6587     Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
6588     Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
6591 2) Linux
6593 Initialize thermal driver's timer before it is used. (Knut
6594 Neumann)
6596 Allow handling negative celsius values. (Kochi Takayoshi)
6598 Fix thermal management and make trip points. R/W (Pavel Machek)
6600 Fix /proc/acpi/sleep. (P. Christeas)
6602 IA64 fixes. (David Mosberger)
6604 Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
6606 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
6607 Brodowski)
6610 3) iASL Compiler/Disassembler
6612 Clarified some warning/error messages.
6615 ----------------------------------------
6616 18 September 2002.  Summary of changes for this release.
6619 1) ACPI CA Core Subsystem version 20020918:
6621 Fixed a reported problem with reference chaining (via the Index()
6622 and RefOf() operators) in the ObjectType() and SizeOf() operators.
6623 The definition of these operators includes the dereferencing of
6624 all chained references to return information on the base object.
6626 Fixed a problem with stores to indexed package elements - the
6627 existing code would not complete the store if an "implicit
6628 conversion" was not performed.  In other words, if the existing
6629 object (package element) was to be replaced completely, the code
6630 didn't handle this case.
6632 Relaxed typechecking on the ASL "Scope" operator to allow the
6633 target name to refer to an object of type Integer, String, or
6634 Buffer, in addition to the scoping object types (Device,
6635 predefined Scopes, Processor, PowerResource, and ThermalZone.)
6636 This allows existing AML code that has workarounds for a bug in
6637 Windows to function properly.  A warning is issued, however.  This
6638 affects both the AML interpreter and the iASL compiler. Below is
6639 an example of this type of ASL code:
6641       Name(DEB,0x00)
6642       Scope(DEB)
6643       {
6645 Fixed some reported problems with 64-bit integer support in the
6646 local implementation of C library functions (clib.c)
6649 2) Linux
6651 Use ACPI fix map region instead of IOAPIC region, since it is
6652 undefined in non-SMP.
6654 Ensure that the SCI has the proper polarity and trigger, even on
6655 systems that do not have an interrupt override entry in the MADT.
6657 2.5 big driver reorganization (Pat Mochel)
6659 Use early table mapping code from acpitable.c (Andi Kleen)
6661 New blacklist entries (Andi Kleen)
6663 Blacklist improvements. Split blacklist code out into a separate
6664 file. Move checking the blacklist to very early. Previously, we
6665 would use ACPI tables, and then halfway through init, check the
6666 blacklist -- too late. Now, it's early enough to completely fall-
6667 back to non-ACPI.
6670 3) iASL Compiler/Disassembler version 20020918:
6672 Fixed a problem where the typechecking code didn't know that an
6673 alias could point to a method.  In other words, aliases were not
6674 being dereferenced during typechecking.
6677 ----------------------------------------
6678 29 August 2002.  Summary of changes for this release.
6680 1) ACPI CA Core Subsystem Version 20020829:
6682 If the target of a Scope() operator already exists, it must be an
6683 object type that actually opens a scope -- such as a Device,
6684 Method, Scope, etc.  This is a fatal runtime error.  Similar error
6685 check has been added to the iASL compiler also.
6687 Tightened up the namespace load to disallow multiple names in the
6688 same scope.  This previously was allowed if both objects were of
6689 the same type.  (i.e., a lookup was the same as entering a new
6690 name).
6693 2) Linux
6695 Ensure that the ACPI interrupt has the proper trigger and
6696 polarity.
6698 local_irq_disable is extraneous. (Matthew Wilcox)
6700 Make "acpi=off" actually do what it says, and not use the ACPI
6701 interpreter *or* the tables.
6703 Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
6704 Takayoshi)
6707 3) iASL Compiler/Disassembler  Version 20020829:
6709 Implemented namepath optimization for name declarations.  For
6710 example, a declaration like "Method (\_SB_.ABCD)" would get
6711 optimized to "Method (ABCD)" if the declaration is within the
6712 \_SB_ scope.  This optimization is in addition to the named
6713 reference path optimization first released in the previous
6714 version. This would seem to complete all possible optimizations
6715 for namepaths within the ASL/AML.
6717 If the target of a Scope() operator already exists, it must be an
6718 object type that actually opens a scope -- such as a Device,
6719 Method, Scope, etc.
6721 Implemented a check and warning for unreachable code in the same
6722 block below a Return() statement.
6724 Fixed a problem where the listing file was not generated if the
6725 compiler aborted if the maximum error count was exceeded (200).
6727 Fixed a problem where the typechecking of method return values was
6728 broken.  This includes the check for a return value when the
6729 method is invoked as a TermArg (a return value is expected.)
6731 Fixed a reported problem where EOF conditions during a quoted
6732 string or comment caused a fault.
6735 ----------------------------------------
6736 15 August 2002.  Summary of changes for this release.
6738 1) ACPI CA Core Subsystem Version 20020815:
6740 Fixed a reported problem where a Store to a method argument that
6741 contains a reference did not perform the indirect store correctly.
6742 This problem was created during the conversion to the new
6743 reference object model - the indirect store to a method argument
6744 code was not updated to reflect the new model.
6746 Reworked the ACPI mode change code to better conform to ACPI 2.0,
6747 handle corner cases, and improve code legibility (Kochi Takayoshi)
6749 Fixed a problem with the pathname parsing for the carat (^)
6750 prefix.  The heavy use of the carat operator by the new namepath
6751 optimization in the iASL compiler uncovered a problem with the AML
6752 interpreter handling of this prefix.  In the case where one or
6753 more carats precede a single nameseg, the nameseg was treated as
6754 standalone and the search rule (to root) was inadvertently
6755 applied.  This could cause both the iASL compiler and the
6756 interpreter to find the wrong object or to miss the error that
6757 should occur if the object does not exist at that exact pathname.
6759 Found and fixed the problem where the HP Pavilion DSDT would not
6760 load.  This was a relatively minor tweak to the table loading code
6761 (a problem caused by the unexpected encounter with a method
6762 invocation not within a control method), but it does not solve the
6763 overall issue of the execution of AML code at the table level.
6764 This investigation is still ongoing.
6766 Code and Data Size: Current core subsystem library sizes are shown
6767 below.  These are the code and data sizes for the acpica.lib
6768 produced by the Microsoft Visual C++ 6.0 compiler, and these
6769 values do not include any ACPI driver or OSPM code.  The debug
6770 version of the code includes the debug output trace mechanism and
6771 has a larger code and data size.  Note that these values will vary
6772 depending on the efficiency of the compiler and the compiler
6773 options used during generation.
6775   Previous Release
6776     Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
6777     Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
6778   Current Release:
6779     Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
6780     Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
6783 2) Linux
6785 Remove redundant slab.h include (Brad Hards)
6787 Fix several bugs in thermal.c (Herbert Nachtnebel)
6789 Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
6791 Change acpi_system_suspend to use updated irq functions (Pavel
6792 Machek)
6794 Export acpi_get_firmware_table (Matthew Wilcox)
6796 Use proper root proc entry for ACPI (Kochi Takayoshi)
6798 Fix early-boot table parsing (Bjorn Helgaas)
6801 3) iASL Compiler/Disassembler
6803 Reworked the compiler options to make them more consistent and to
6804 use two-letter options where appropriate.  We were running out of
6805 sensible letters.   This may break some makefiles, so check the
6806 current options list by invoking the compiler with no parameters.
6808 Completed the design and implementation of the ASL namepath
6809 optimization option for the compiler.  This option optimizes all
6810 references to named objects to the shortest possible path.  The
6811 first attempt tries to utilize a single nameseg (4 characters) and
6812 the "search-to-root" algorithm used by the interpreter.  If that
6813 cannot be used (because either the name is not in the search path
6814 or there is a conflict with another object with the same name),
6815 the pathname is optimized using the carat prefix (usually a
6816 shorter string than specifying the entire path from the root.)
6818 Implemented support to obtain the DSDT from the Windows registry
6819 (when the disassembly option is specified with no input file).
6820 Added this code as the implementation for AcpiOsTableOverride in
6821 the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
6822 utility) to scan memory for the DSDT to the AcpiOsTableOverride
6823 function in the DOS OSL to make the disassembler truly OS
6824 independent.
6826 Implemented a new option to disassemble and compile in one step.
6827 When used without an input filename, this option will grab the
6828 DSDT from the local machine, disassemble it, and compile it in one
6829 step.
6831 Added a warning message for invalid escapes (a backslash followed
6832 by any character other than the allowable escapes).  This catches
6833 the quoted string error "\_SB_" (which should be "\\_SB_" ).
6835 Also, there are numerous instances in the ACPI specification where
6836 this error occurs.
6838 Added a compiler option to disable all optimizations.  This is
6839 basically the "compatibility mode" because by using this option,
6840 the AML code will come out exactly the same as other ASL
6841 compilers.
6843 Added error messages for incorrectly ordered dependent resource
6844 functions.  This includes: missing EndDependentFn macro at end of
6845 dependent resource list, nested dependent function macros (both
6846 start and end), and missing StartDependentFn macro.  These are
6847 common errors that should be caught at compile time.
6849 Implemented _OSI support for the disassembler and compiler.  _OSI
6850 must be included in the namespace for proper disassembly (because
6851 the disassembler must know the number of arguments.)
6853 Added an "optimization" message type that is optional (off by
6854 default).  This message is used for all optimizations - including
6855 constant folding, integer optimization, and namepath optimization.
6857 ----------------------------------------
6858 25 July 2002.  Summary of changes for this release.
6861 1) ACPI CA Core Subsystem Version 20020725:
6863 The AML Disassembler has been enhanced to produce compilable ASL
6864 code and has been integrated into the iASL compiler (see below) as
6865 well as the single-step disassembly for the AML debugger and the
6866 disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
6867 resource templates and macros are fully supported.  The
6868 disassembler has been tested on over 30 different AML files,
6869 producing identical AML when the resulting disassembled ASL file
6870 is recompiled with the same ASL compiler.
6872 Modified the Resource Manager to allow zero interrupts and zero
6873 dma channels during the GetCurrentResources call.  This was
6874 causing problems on some platforms.
6876 Added the AcpiOsRedirectOutput interface to the OSL to simplify
6877 output redirection for the AcpiOsPrintf and AcpiOsVprintf
6878 interfaces.
6880 Code and Data Size: Current core subsystem library sizes are shown
6881 below.  These are the code and data sizes for the acpica.lib
6882 produced by the Microsoft Visual C++ 6.0 compiler, and these
6883 values do not include any ACPI driver or OSPM code.  The debug
6884 version of the code includes the debug output trace mechanism and
6885 has a larger code and data size.  Note that these values will vary
6886 depending on the efficiency of the compiler and the compiler
6887 options used during generation.
6889   Previous Release
6890     Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
6891     Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
6892   Current Release:
6893     Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
6894     Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
6897 2) Linux
6899 Fixed a panic in the EC driver (Dominik Brodowski)
6901 Implemented checksum of the R/XSDT itself during Linux table scan
6902 (Richard Schaal)
6905 3) iASL compiler
6907 The AML disassembler is integrated into the compiler.  The "-d"
6908 option invokes the disassembler  to completely disassemble an
6909 input AML file, producing as output a text ASL file with the
6910 extension ".dsl" (to avoid name collisions with existing .asl
6911 source files.)  A future enhancement will allow the disassembler
6912 to obtain the BIOS DSDT from the registry under Windows.
6914 Fixed a problem with the VendorShort and VendorLong resource
6915 descriptors where an invalid AML sequence was created.
6917 Implemented a fix for BufferData term in the ASL parser.  It was
6918 inadvertently defined twice, allowing invalid syntax to pass and
6919 causing reduction conflicts.
6921 Fixed a problem where the Ones opcode could get converted to a
6922 value of zero if "Ones" was used where a byte, word or dword value
6923 was expected.  The 64-bit value is now truncated to the correct
6924 size with the correct value.
6928 ----------------------------------------
6929 02 July 2002.  Summary of changes for this release.
6932 1) ACPI CA Core Subsystem Version 20020702:
6934 The Table Manager code has been restructured to add several new
6935 features.  Tables that are not required by the core subsystem
6936 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
6937 validated in any way and are returned from AcpiGetFirmwareTable if
6938 requested.  The AcpiOsTableOverride interface is now called for
6939 each table that is loaded by the subsystem in order to allow the
6940 host to override any table it chooses.  Previously, only the DSDT
6941 could be overridden.  Added one new files, tbrsdt.c and
6942 tbgetall.c.
6944 Fixed a problem with the conversion of internal package objects to
6945 external objects (when a package is returned from a control
6946 method.)  The return buffer length was set to zero instead of the
6947 proper length of the package object.
6949 Fixed a reported problem with the use of the RefOf and DeRefOf
6950 operators when passing reference arguments to control methods.  A
6951 new type of Reference object is used internally for references
6952 produced by the RefOf operator.
6954 Added additional error messages in the Resource Manager to explain
6955 AE_BAD_DATA errors when they occur during resource parsing.
6957 Split the AcpiEnableSubsystem into two primitives to enable a
6958 finer granularity initialization sequence.  These two calls should
6959 be called in this order: AcpiEnableSubsystem (flags),
6960 AcpiInitializeObjects (flags).  The flags parameter remains the
6961 same.
6964 2) Linux
6966 Updated the ACPI utilities module to understand the new style of
6967 fully resolved package objects that are now returned from the core
6968 subsystem.  This eliminates errors of the form:
6970     ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
6971     acpi_utils-0430 [145] acpi_evaluate_reference:
6972         Invalid element in package (not a device reference)
6974 The method evaluation utility uses the new buffer allocation
6975 scheme instead of calling AcpiEvaluate Object twice.
6977 Added support for ECDT. This allows the use of the Embedded
6979 Controller before the namespace has been fully initialized, which
6980 is necessary for ACPI 2.0 support, and for some laptops to
6981 initialize properly. (Laptops using ECDT are still rare, so only
6982 limited testing was performed of the added functionality.)
6984 Fixed memory leaks in the EC driver.
6986 Eliminated a brittle code structure in acpi_bus_init().
6988 Eliminated the acpi_evaluate() helper function in utils.c. It is
6989 no longer needed since acpi_evaluate_object can optionally
6990 allocate memory for the return object.
6992 Implemented fix for keyboard hang when getting battery readings on
6993 some systems (Stephen White)
6995 PCI IRQ routing update (Dominik Brodowski)
6997 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
6998 support
7000 ----------------------------------------
7001 11 June 2002.  Summary of changes for this release.
7004 1) ACPI CA Core Subsystem Version 20020611:
7006 Fixed a reported problem where constants such as Zero and One
7007 appearing within _PRT packages were not handled correctly within
7008 the resource manager code.  Originally reported against the ASL
7009 compiler because the code generator now optimizes integers to
7010 their minimal AML representation (i.e. AML constants if possible.)
7011 The _PRT code now handles all AML constant opcodes correctly
7012 (Zero, One, Ones, Revision).
7014 Fixed a problem with the Concatenate operator in the AML
7015 interpreter where a buffer result object was incorrectly marked as
7016 not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
7018 All package sub-objects are now fully resolved before they are
7019 returned from the external ACPI interfaces.  This means that name
7020 strings are resolved to object handles, and constant operators
7021 (Zero, One, Ones, Revision) are resolved to Integers.
7023 Implemented immediate resolution of the AML Constant opcodes
7024 (Zero, One, Ones, Revision) to Integer objects upon detection
7025 within the AML stream. This has simplified and reduced the
7026 generated code size of the subsystem by eliminating about 10
7027 switch statements for these constants (which previously were
7028 contained in Reference objects.)  The complicating issues are that
7029 the Zero opcode is used as a "placeholder" for unspecified
7030 optional target operands and stores to constants are defined to be
7031 no-ops.
7033 Code and Data Size: Current core subsystem library sizes are shown
7034 below. These are the code and data sizes for the acpica.lib
7035 produced by the Microsoft Visual C++ 6.0 compiler, and these
7036 values do not include any ACPI driver or OSPM code.  The debug
7037 version of the code includes the debug output trace mechanism and
7038 has a larger code and data size.  Note that these values will vary
7039 depending on the efficiency of the compiler and the compiler
7040 options used during generation.
7042   Previous Release
7043     Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
7044     Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
7045   Current Release:
7046     Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
7047     Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
7050 2) Linux
7053 Added preliminary support for obtaining _TRA data for PCI root
7054 bridges (Bjorn Helgaas).
7057 3) iASL Compiler Version X2046:
7059 Fixed a problem where the "_DDN" reserved name was defined to be a
7060 control method with one argument.  There are no arguments, and
7061 _DDN does not have to be a control method.
7063 Fixed a problem with the Linux version of the compiler where the
7064 source lines printed with error messages were the wrong lines.
7065 This turned out to be the "LF versus CR/LF" difference between
7066 Windows and Unix.  This appears to be the longstanding issue
7067 concerning listing output and error messages.
7069 Fixed a problem with the Linux version of compiler where opcode
7070 names within error messages were wrong.  This was caused by a
7071 slight difference in the output of the Flex tool on Linux versus
7072 Windows.
7074 Fixed a problem with the Linux compiler where the hex output files
7075 contained some garbage data caused by an internal buffer overrun.
7078 ----------------------------------------
7079 17 May 2002.  Summary of changes for this release.
7082 1) ACPI CA Core Subsystem Version 20020517:
7084 Implemented a workaround to an BIOS bug discovered on the HP
7085 OmniBook where the FADT revision number and the table size are
7086 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
7087 behavior is to fallback to using only the ACPI 1.0 fields of the
7088 FADT if the table is too small to be a ACPI 2.0 table as claimed
7089 by the revision number.  Although this is a BIOS bug, this is a
7090 case where the workaround is simple enough and with no side
7091 effects, so it seemed prudent to add it.  A warning message is
7092 issued, however.
7094 Implemented minimum size checks for the fixed-length ACPI tables -
7095 - the FADT and FACS, as well as consistency checks between the
7096 revision number and the table size.
7098 Fixed a reported problem in the table override support where the
7099 new table pointer was incorrectly treated as a physical address
7100 instead of a logical address.
7102 Eliminated the use of the AE_AML_ERROR exception and replaced it
7103 with more descriptive codes.
7105 Fixed a problem where an exception would occur if an ASL Field was
7106 defined with no named Field Units underneath it (used by some
7107 index fields).
7109 Code and Data Size: Current core subsystem library sizes are shown
7110 below.  These are the code and data sizes for the acpica.lib
7111 produced by the Microsoft Visual C++ 6.0 compiler, and these
7112 values do not include any ACPI driver or OSPM code.  The debug
7113 version of the code includes the debug output trace mechanism and
7114 has a larger code and data size.  Note that these values will vary
7115 depending on the efficiency of the compiler and the compiler
7116 options used during generation.
7118   Previous Release
7119     Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
7120     Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
7121   Current Release:
7122     Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
7123     Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
7127 2) Linux
7129 Much work done on ACPI init (MADT and PCI IRQ routing support).
7130 (Paul D. and Dominik Brodowski)
7132 Fix PCI IRQ-related panic on boot (Sam Revitch)
7134 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
7136 Fix "MHz" typo (Dominik Brodowski)
7138 Fix RTC year 2000 issue (Dominik Brodowski)
7140 Preclude multiple button proc entries (Eric Brunet)
7142 Moved arch-specific code out of include/platform/aclinux.h
7144 3) iASL Compiler Version X2044:
7146 Implemented error checking for the string used in the EISAID macro
7147 (Usually used in the definition of the _HID object.)  The code now
7148 strictly enforces the PnP format - exactly 7 characters, 3
7149 uppercase letters and 4 hex digits.
7151 If a raw string is used in the definition of the _HID object
7152 (instead of the EISAID macro), the string must contain all
7153 alphanumeric characters (e.g., "*PNP0011" is not allowed because
7154 of the asterisk.)
7156 Implemented checking for invalid use of ACPI reserved names for
7157 most of the name creation operators (Name, Device, Event, Mutex,
7158 OperationRegion, PowerResource, Processor, and ThermalZone.)
7159 Previously, this check was only performed for control methods.
7161 Implemented an additional check on the Name operator to emit an
7162 error if a reserved name that must be implemented in ASL as a
7163 control method is used.  We know that a reserved name must be a
7164 method if it is defined with input arguments.
7166 The warning emitted when a namespace object reference is not found
7167 during the cross reference phase has been changed into an error.
7168 The "External" directive should be used for names defined in other
7169 modules.
7172 4) Tools and Utilities
7174 The 16-bit tools (adump16 and aexec16) have been regenerated and
7175 tested.
7177 Fixed a problem with the output of both acpidump and adump16 where
7178 the indentation of closing parentheses and brackets was not
7180 aligned properly with the parent block.
7183 ----------------------------------------
7184 03 May 2002.  Summary of changes for this release.
7187 1) ACPI CA Core Subsystem Version 20020503:
7189 Added support a new OSL interface that allows the host operating
7191 system software to override the DSDT found in the firmware -
7192 AcpiOsTableOverride.  With this interface, the OSL can examine the
7193 version of the firmware DSDT and replace it with a different one
7194 if desired.
7196 Added new external interfaces for accessing ACPI registers from
7197 device drivers and other system software - AcpiGetRegister and
7198 AcpiSetRegister.  This was simply an externalization of the
7199 existing AcpiHwBitRegister interfaces.
7201 Fixed a regression introduced in the previous build where the
7202 ASL/AML CreateField operator always returned an error,
7203 "destination must be a NS Node".
7205 Extended the maximum time (before failure) to successfully enable
7206 ACPI mode to 3 seconds.
7208 Code and Data Size: Current core subsystem library sizes are shown
7209 below.  These are the code and data sizes for the acpica.lib
7210 produced by the Microsoft Visual C++ 6.0 compiler, and these
7211 values do not include any ACPI driver or OSPM code.  The debug
7212 version of the code includes the debug output trace mechanism and
7213 has a larger code and data size.  Note that these values will vary
7214 depending on the efficiency of the compiler and the compiler
7215 options used during generation.
7217   Previous Release
7218     Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
7219     Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
7220   Current Release:
7221     Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
7222     Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
7225 2) Linux
7227 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
7228 free. While 3 out of 4 of our in-house systems work fine, the last
7229 one still hangs when testing the LAPIC timer.
7231 Renamed many files in 2.5 kernel release to omit "acpi_" from the
7232 name.
7234 Added warning on boot for Presario 711FR.
7236 Sleep improvements (Pavel Machek)
7238 ACPI can now be built without CONFIG_PCI enabled.
7240 IA64: Fixed memory map functions (JI Lee)
7243 3) iASL Compiler Version X2043:
7245 Added support to allow the compiler to be integrated into the MS
7246 VC++ development environment for one-button compilation of single
7247 files or entire projects -- with error-to-source-line mapping.
7249 Implemented support for compile-time constant folding for the
7250 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
7251 specification.  This allows the ASL writer to use expressions
7252 instead of Integer/Buffer/String constants in terms that must
7253 evaluate to constants at compile time and will also simplify the
7254 emitted AML in any such sub-expressions that can be folded
7255 (evaluated at compile-time.)  This increases the size of the
7256 compiler significantly because a portion of the ACPI CA AML
7257 interpreter is included within the compiler in order to pre-
7258 evaluate constant expressions.
7261 Fixed a problem with the "Unicode" ASL macro that caused the
7262 compiler to fault.  (This macro is used in conjunction with the
7263 _STR reserved name.)
7265 Implemented an AML opcode optimization to use the Zero, One, and
7266 Ones opcodes where possible to further reduce the size of integer
7267 constants and thus reduce the overall size of the generated AML
7268 code.
7270 Implemented error checking for new reserved terms for ACPI version
7271 2.0A.
7273 Implemented the -qr option to display the current list of ACPI
7274 reserved names known to the compiler.
7276 Implemented the -qc option to display the current list of ASL
7277 operators that are allowed within constant expressions and can
7278 therefore be folded at compile time if the operands are constants.
7281 4) Documentation
7283 Updated the Programmer's Reference for new interfaces, data types,
7284 and memory allocation model options.
7286 Updated the iASL Compiler User Reference to apply new format and
7287 add information about new features and options.
7289 ----------------------------------------
7290 19 April 2002.  Summary of changes for this release.
7292 1) ACPI CA Core Subsystem Version 20020419:
7294 The source code base for the Core Subsystem has been completely
7295 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
7296 versions.  The Lint option files used are included in the
7297 /acpi/generate/lint directory.
7299 Implemented enhanced status/error checking across the entire
7300 Hardware manager subsystem.  Any hardware errors (reported from
7301 the OSL) are now bubbled up and will abort a running control
7302 method.
7305 Fixed a problem where the per-ACPI-table integer width (32 or 64)
7306 was stored only with control method nodes, causing a fault when
7307 non-control method code was executed during table loading.  The
7308 solution implemented uses a global variable to indicate table
7309 width across the entire ACPI subsystem.  Therefore, ACPI CA does
7310 not support mixed integer widths across different ACPI tables
7311 (DSDT, SSDT).
7313 Fixed a problem where NULL extended fields (X fields) in an ACPI
7314 2.0 ACPI FADT caused the table load to fail.  Although the
7315 existing ACPI specification is a bit fuzzy on this topic, the new
7316 behavior is to fall back on a ACPI 1.0 field if the corresponding
7317 ACPI 2.0 X field is zero (even though the table revision indicates
7318 a full ACPI 2.0 table.)  The ACPI specification will be updated to
7319 clarify this issue.
7321 Fixed a problem with the SystemMemory operation region handler
7322 where memory was always accessed byte-wise even if the AML-
7323 specified access width was larger than a byte.  This caused
7324 problems on systems with memory-mapped I/O.  Memory is now
7325 accessed with the width specified.  On systems that do not support
7326 non-aligned transfers, a check is made to guarantee proper address
7327 alignment before proceeding in order to avoid an AML-caused
7328 alignment fault within the kernel.
7331 Fixed a problem with the ExtendedIrq resource where only one byte
7332 of the 4-byte Irq field was extracted.
7334 Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
7335 function was out of date and required a rewrite.
7337 Code and Data Size: Current core subsystem library sizes are shown
7338 below.  These are the code and data sizes for the acpica.lib
7339 produced by the Microsoft Visual C++ 6.0 compiler, and these
7340 values do not include any ACPI driver or OSPM code.  The debug
7341 version of the code includes the debug output trace mechanism and
7342 has a larger code and data size.  Note that these values will vary
7343 depending on the efficiency of the compiler and the compiler
7344 options used during generation.
7346   Previous Release
7347     Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
7348     Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
7349   Current Release:
7350     Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
7351     Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
7354 2) Linux
7356 PCI IRQ routing fixes (Dominik Brodowski)
7359 3) iASL Compiler Version X2042:
7361 Implemented an additional compile-time error check for a field
7362 unit whose size + minimum access width would cause a run-time
7363 access beyond the end-of-region.  Previously, only the field size
7364 itself was checked.
7366 The Core subsystem and iASL compiler now share a common parse
7367 object in preparation for compile-time evaluation of the type
7368 3/4/5 ASL operators.
7371 ----------------------------------------
7372 Summary of changes for this release: 03_29_02
7374 1) ACPI CA Core Subsystem Version 20020329:
7376 Implemented support for late evaluation of TermArg operands to
7377 Buffer and Package objects.  This allows complex expressions to be
7378 used in the declarations of these object types.
7380 Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
7381 1.0, if the field was larger than 32 bits, it was returned as a
7382 buffer - otherwise it was returned as an integer.  In ACPI 2.0,
7383 the field is returned as a buffer only if the field is larger than
7384 64 bits.  The TableRevision is now considered when making this
7385 conversion to avoid incompatibility with existing ASL code.
7387 Implemented logical addressing for AcpiOsGetRootPointer.  This
7388 allows an RSDP with either a logical or physical address.  With
7389 this support, the host OS can now override all ACPI tables with
7390 one logical RSDP.  Includes implementation of  "typed" pointer
7391 support to allow a common data type for both physical and logical
7392 pointers internally.  This required a change to the
7393 AcpiOsGetRootPointer interface.
7395 Implemented the use of ACPI 2.0 Generic Address Structures for all
7396 GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
7397 mapped I/O for these ACPI features.
7399 Initialization now ignores not only non-required tables (All
7400 tables other than the FADT, FACS, DSDT, and SSDTs), but also does
7401 not validate the table headers of unrecognized tables.
7403 Fixed a problem where a notify handler could only be
7404 installed/removed on an object of type Device.  All "notify"
7406 objects are now supported -- Devices, Processor, Power, and
7407 Thermal.
7409 Removed most verbosity from the ACPI_DB_INFO debug level.  Only
7410 critical information is returned when this debug level is enabled.
7412 Code and Data Size: Current core subsystem library sizes are shown
7413 below.  These are the code and data sizes for the acpica.lib
7414 produced by the Microsoft Visual C++ 6.0 compiler, and these
7415 values do not include any ACPI driver or OSPM code.  The debug
7416 version of the code includes the debug output trace mechanism and
7417 has a larger code and data size.  Note that these values will vary
7418 depending on the efficiency of the compiler and the compiler
7419 options used during generation.
7421   Previous Release
7422     Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
7423     Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
7424   Current Release:
7425     Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
7426     Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
7429 2) Linux:
7431 The processor driver (acpi_processor.c) now fully supports ACPI
7432 2.0-based processor performance control (e.g. Intel(R)
7433 SpeedStep(TM) technology) Note that older laptops that only have
7434 the Intel "applet" interface are not supported through this.  The
7435 'limit' and 'performance' interface (/proc) are fully functional.
7436 [Note that basic policy for controlling performance state
7437 transitions will be included in the next version of ospmd.]  The
7438 idle handler was modified to more aggressively use C2, and PIIX4
7439 errata handling underwent a complete overhaul (big thanks to
7440 Dominik Brodowski).
7442 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
7443 based devices in the ACPI namespace are now dynamically bound
7444 (associated) with their PCI counterparts (e.g. PCI1->01:00.0).
7445 This allows, among other things, ACPI to resolve bus numbers for
7446 subordinate PCI bridges.
7448 Enhanced PCI IRQ routing to get the proper bus number for _PRT
7449 entries defined underneath PCI bridges.
7451 Added IBM 600E to bad bios list due to invalid _ADR value for
7452 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
7454 In the process of adding full MADT support (e.g. IOAPIC) for IA32
7455 (acpi.c, mpparse.c) -- stay tuned.
7457 Added back visual differentiation between fixed-feature and
7458 control-method buttons in dmesg.  Buttons are also subtyped (e.g.
7459 button/power/PWRF) to simplify button identification.
7461 We no longer use -Wno-unused when compiling debug. Please ignore
7462 any "_THIS_MODULE defined but not used" messages.
7464 Can now shut down the system using "magic sysrq" key.
7467 3) iASL Compiler version 2041:
7469 Fixed a problem where conversion errors for hex/octal/decimal
7470 constants were not reported.
7472 Implemented a fix for the General Register template Address field.
7473 This field was 8 bits when it should be 64.
7475 Fixed a problem where errors/warnings were no longer being emitted
7476 within the listing output file.
7478 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
7479 exactly 4 characters, alphanumeric only.
7484 ----------------------------------------
7485 Summary of changes for this release: 03_08_02
7488 1) ACPI CA Core Subsystem Version 20020308:
7490 Fixed a problem with AML Fields where the use of the "AccessAny"
7491 keyword could cause an interpreter error due to attempting to read
7492 or write beyond the end of the parent Operation Region.
7494 Fixed a problem in the SystemMemory Operation Region handler where
7495 an attempt was made to map memory beyond the end of the region.
7496 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
7497 errors on some Linux systems.
7499 Fixed a problem where the interpreter/namespace "search to root"
7500 algorithm was not functioning for some object types.  Relaxed the
7501 internal restriction on the search to allow upsearches for all
7502 external object types as well as most internal types.
7505 2) Linux:
7507 We now use safe_halt() macro versus individual calls to sti | hlt.
7509 Writing to the processor limit interface should now work. "echo 1"
7510 will increase the limit, 2 will decrease, and 0 will reset to the
7512 default.
7515 3) ASL compiler:
7517 Fixed segfault on Linux version.
7520 ----------------------------------------
7521 Summary of changes for this release: 02_25_02
7523 1) ACPI CA Core Subsystem:
7526 Fixed a problem where the GPE bit masks were not initialized
7527 properly, causing erratic GPE behavior.
7529 Implemented limited support for multiple calling conventions.  The
7530 code can be generated with either the VPL (variable parameter
7531 list, or "C") convention, or the FPL (fixed parameter list, or
7532 "Pascal") convention.  The core subsystem is about 3.4% smaller
7533 when generated with FPL.
7536 2) Linux
7538 Re-add some /proc/acpi/event functionality that was lost during
7539 the rewrite
7541 Resolved issue with /proc events for fixed-feature buttons showing
7542 up as the system device.
7544 Fixed checks on C2/C3 latencies to be inclusive of maximum values.
7546 Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
7548 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
7550 Fixed limit interface & usage to fix bugs with passive cooling
7551 hysterisis.
7553 Restructured PRT support.
7556 ----------------------------------------
7557 Summary of changes for this label: 02_14_02
7560 1) ACPI CA Core Subsystem:
7562 Implemented support in AcpiLoadTable to allow loading of FACS and
7563 FADT tables.
7565 Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
7566 been removed.  All 64-bit platforms should be migrated to the ACPI
7567 2.0 tables.  The actbl71.h header has been removed from the source
7568 tree.
7570 All C macros defined within the subsystem have been prefixed with
7571 "ACPI_" to avoid collision with other system include files.
7573 Removed the return value for the two AcpiOsPrint interfaces, since
7574 it is never used and causes lint warnings for ignoring the return
7575 value.
7577 Added error checking to all internal mutex acquire and release
7578 calls.  Although a failure from one of these interfaces is
7579 probably a fatal system error, these checks will cause the
7580 immediate abort of the currently executing method or interface.
7582 Fixed a problem where the AcpiSetCurrentResources interface could
7583 fault.  This was a side effect of the deployment of the new memory
7584 allocation model.
7586 Fixed a couple of problems with the Global Lock support introduced
7587 in the last major build.  The "common" (1.0/2.0) internal FACS was
7588 being overwritten with the FACS signature and clobbering the
7589 Global Lock pointer.  Also, the actual firmware FACS was being
7590 unmapped after construction of the "common" FACS, preventing
7591 access to the actual Global Lock field within it.  The "common"
7592 internal FACS is no longer installed as an actual ACPI table; it
7593 is used simply as a global.
7595 Code and Data Size: Current core subsystem library sizes are shown
7596 below.  These are the code and data sizes for the acpica.lib
7597 produced by the Microsoft Visual C++ 6.0 compiler, and these
7598 values do not include any ACPI driver or OSPM code.  The debug
7599 version of the code includes the debug output trace mechanism and
7600 has a larger code and data size.  Note that these values will vary
7601 depending on the efficiency of the compiler and the compiler
7602 options used during generation.
7604   Previous Release (02_07_01)
7605     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
7606     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
7607   Current Release:
7608     Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
7609     Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
7612 2) Linux
7614 Updated Linux-specific code for core macro and OSL interface
7615 changes described above.
7617 Improved /proc/acpi/event. It now can be opened only once and has
7618 proper poll functionality.
7620 Fixed and restructured power management (acpi_bus).
7622 Only create /proc "view by type" when devices of that class exist.
7624 Fixed "charging/discharging" bug (and others) in acpi_battery.
7626 Improved thermal zone code.
7629 3) ASL Compiler, version X2039:
7632 Implemented the new compiler restriction on ASL String hex/octal
7633 escapes to non-null, ASCII values.  An error results if an invalid
7634 value is used.  (This will require an ACPI 2.0 specification
7635 change.)
7637 AML object labels that are output to the optional C and ASM source
7638 are now prefixed with both the ACPI table signature and table ID
7639 to help guarantee uniqueness within a large BIOS project.
7642 ----------------------------------------
7643 Summary of changes for this label: 02_01_02
7645 1) ACPI CA Core Subsystem:
7647 ACPI 2.0 support is complete in the entire Core Subsystem and the
7648 ASL compiler. All new ACPI 2.0 operators are implemented and all
7649 other changes for ACPI 2.0 support are complete.  With
7650 simultaneous code and data optimizations throughout the subsystem,
7651 ACPI 2.0 support has been implemented with almost no additional
7652 cost in terms of code and data size.
7654 Implemented a new mechanism for allocation of return buffers.  If
7655 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
7656 be allocated on behalf of the caller.  Consolidated all return
7657 buffer validation and allocation to a common procedure.  Return
7658 buffers will be allocated via the primary OSL allocation interface
7659 since it appears that a separate pool is not needed by most users.
7660 If a separate pool is required for these buffers, the caller can
7661 still use the original mechanism and pre-allocate the buffer(s).
7663 Implemented support for string operands within the DerefOf
7664 operator.
7666 Restructured the Hardware and Event managers to be table driven,
7667 simplifying the source code and reducing the amount of generated
7668 code.
7670 Split the common read/write low-level ACPI register bitfield
7671 procedure into a separate read and write, simplifying the code
7672 considerably.
7674 Obsoleted the AcpiOsCallocate OSL interface.  This interface was
7675 used only a handful of times and didn't have enough critical mass
7676 for a separate interface.  Replaced with a common calloc procedure
7677 in the core.
7679 Fixed a reported problem with the GPE number mapping mechanism
7680 that allows GPE1 numbers to be non-contiguous with GPE0.
7681 Reorganized the GPE information and shrunk a large array that was
7682 originally large enough to hold info for all possible GPEs (256)
7683 to simply large enough to hold all GPEs up to the largest GPE
7684 number on the machine.
7686 Fixed a reported problem with resource structure alignment on 64-
7687 bit platforms.
7689 Changed the AcpiEnableEvent and AcpiDisableEvent external
7690 interfaces to not require any flags for the common case of
7691 enabling/disabling a GPE.
7693 Implemented support to allow a "Notify" on a Processor object.
7695 Most TBDs in comments within the source code have been resolved
7696 and eliminated.
7699 Fixed a problem in the interpreter where a standalone parent
7700 prefix (^) was not handled correctly in the interpreter and
7701 debugger.
7703 Removed obsolete and unnecessary GPE save/restore code.
7705 Implemented Field support in the ASL Load operator.  This allows a
7706 table to be loaded from a named field, in addition to loading a
7707 table directly from an Operation Region.
7709 Implemented timeout and handle support in the external Global Lock
7710 interfaces.
7712 Fixed a problem in the AcpiDump utility where pathnames were no
7713 longer being generated correctly during the dump of named objects.
7715 Modified the AML debugger to give a full display of if/while
7716 predicates instead of just one AML opcode at a time.  (The
7717 predicate can have several nested ASL statements.)  The old method
7718 was confusing during single stepping.
7720 Code and Data Size: Current core subsystem library sizes are shown
7721 below. These are the code and data sizes for the acpica.lib
7722 produced by the Microsoft Visual C++ 6.0 compiler, and these
7723 values do not include any ACPI driver or OSPM code.  The debug
7724 version of the code includes the debug output trace mechanism and
7725 has a larger code and data size.  Note that these values will vary
7726 depending on the efficiency of the compiler and the compiler
7727 options used during generation.
7729   Previous Release (12_18_01)
7730      Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
7731      Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
7732    Current Release:
7733      Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
7734      Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
7736 2) Linux
7738  Implemented fix for PIIX reverse throttling errata (Processor
7739 driver)
7741 Added new Limit interface (Processor and Thermal drivers)
7743 New thermal policy (Thermal driver)
7745 Many updates to /proc
7747 Battery "low" event support (Battery driver)
7749 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
7751 IA32 - IA64 initialization unification, no longer experimental
7753 Menuconfig options redesigned
7755 3) ASL Compiler, version X2037:
7757 Implemented several new output features to simplify integration of
7758 AML code into  firmware: 1) Output the AML in C source code with
7759 labels for each named ASL object.  The    original ASL source code
7760 is interleaved as C comments. 2) Output the AML in ASM source code
7761 with labels and interleaved ASL    source. 3) Output the AML in
7762 raw hex table form, in either C or ASM.
7764 Implemented support for optional string parameters to the
7765 LoadTable operator.
7767 Completed support for embedded escape sequences within string
7768 literals.  The compiler now supports all single character escapes
7769 as well as the Octal and Hex escapes.  Note: the insertion of a
7770 null byte into a string literal (via the hex/octal escape) causes
7771 the string to be immediately terminated.  A warning is issued.
7773 Fixed a problem where incorrect AML was generated for the case
7774 where an ASL namepath consists of a single parent prefix (
7776 ) with no trailing name segments.
7778 The compiler has been successfully generated with a 64-bit C
7779 compiler.
7784 ----------------------------------------
7785 Summary of changes for this label: 12_18_01
7787 1) Linux
7789 Enhanced blacklist with reason and severity fields. Any table's
7790 signature may now be used to identify a blacklisted system.
7792 Call _PIC control method to inform the firmware which interrupt
7793 model the OS is using. Turn on any disabled link devices.
7795 Cleaned up busmgr /proc error handling (Andreas Dilger)
7797  2) ACPI CA Core Subsystem:
7799 Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
7800 while loop)
7802 Completed implementation of the ACPI 2.0 "Continue",
7803 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
7804 operators.  All new ACPI 2.0 operators are now implemented in both
7805 the ASL compiler and the AML interpreter.  The only remaining ACPI
7806 2.0 task is support for the String data type in the DerefOf
7807 operator.  Fixed a problem with AcquireMutex where the status code
7808 was lost if the caller had to actually wait for the mutex.
7810 Increased the maximum ASL Field size from 64K bits to 4G bits.
7812 Completed implementation of the external Global Lock interfaces --
7813 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
7814 Handler parameters were added.
7816 Completed another pass at removing warnings and issues when
7817 compiling with 64-bit compilers.  The code now compiles cleanly
7818 with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
7819 add and subtract (diff) macros have changed considerably.
7822 Created and deployed a new ACPI_SIZE type that is 64-bits wide on
7823 64-bit platforms, 32-bits on all others.  This type is used
7824 wherever memory allocation and/or the C sizeof() operator is used,
7825 and affects the OSL memory allocation interfaces AcpiOsAllocate
7826 and AcpiOsCallocate.
7828 Implemented sticky user breakpoints in the AML debugger.
7830 Code and Data Size: Current core subsystem library sizes are shown
7831 below. These are the code and data sizes for the acpica.lib
7832 produced by the Microsoft Visual C++ 6.0 compiler, and these
7833 values do not include any ACPI driver or OSPM code.  The debug
7834 version of the code includes the debug output trace mechanism and
7835 has a larger code and data size. Note that these values will vary
7836 depending on the efficiency of the compiler and the compiler
7837 options used during generation.
7839   Previous Release (12_05_01)
7840      Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
7841      Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
7842    Current Release:
7843      Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
7844      Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
7846  3) ASL Compiler, version X2034:
7848 Now checks for (and generates an error if detected) the use of a
7849 Break or Continue statement without an enclosing While statement.
7852 Successfully generated the compiler with the Intel 64-bit C
7853 compiler.
7855  ----------------------------------------
7856 Summary of changes for this label: 12_05_01
7858  1) ACPI CA Core Subsystem:
7860 The ACPI 2.0 CopyObject operator is fully implemented.  This
7861 operator creates a new copy of an object (and is also used to
7862 bypass the "implicit conversion" mechanism of the Store operator.)
7864 The ACPI 2.0 semantics for the SizeOf operator are fully
7865 implemented.  The change is that performing a SizeOf on a
7866 reference object causes an automatic dereference of the object to
7867 tha actual value before the size is evaluated. This behavior was
7868 undefined in ACPI 1.0.
7870 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
7871 have been implemented.  The interrupt polarity and mode are now
7872 independently set.
7874 Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
7875 appearing in Package objects were not properly converted to
7876 integers when the internal Package was converted to an external
7877 object (via the AcpiEvaluateObject interface.)
7879 Fixed a problem with the namespace object deletion mechanism for
7880 objects created by control methods.  There were two parts to this
7881 problem: 1) Objects created during the initialization phase method
7882 parse were not being deleted, and 2) The object owner ID mechanism
7883 to track objects was broken.
7885 Fixed a problem where the use of the ASL Scope operator within a
7886 control method would result in an invalid opcode exception.
7888 Fixed a problem introduced in the previous label where the buffer
7889 length required for the _PRT structure was not being returned
7890 correctly.
7892 Code and Data Size: Current core subsystem library sizes are shown
7893 below. These are the code and data sizes for the acpica.lib
7894 produced by the Microsoft Visual C++ 6.0 compiler, and these
7895 values do not include any ACPI driver or OSPM code.  The debug
7896 version of the code includes the debug output trace mechanism and
7897 has a larger code and data size.  Note that these values will vary
7898 depending on the efficiency of the compiler and the compiler
7899 options used during generation.
7901   Previous Release (11_20_01)
7902      Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
7903      Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
7905   Current Release:
7906      Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
7907      Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
7909  2) Linux:
7911 Updated all files to apply cleanly against 2.4.16.
7913 Added basic PCI Interrupt Routing Table (PRT) support for IA32
7914 (acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
7915 version supports both static and dyanmic PRT entries, but dynamic
7916 entries are treated as if they were static (not yet
7917 reconfigurable).  Architecture- specific code to use this data is
7918 absent on IA32 but should be available shortly.
7920 Changed the initialization sequence to start the ACPI interpreter
7921 (acpi_init) prior to initialization of the PCI driver (pci_init)
7922 in init/main.c.  This ordering is required to support PRT and
7923 facilitate other (future) enhancement.  A side effect is that the
7924 ACPI bus driver and certain device drivers can no longer be loaded
7925 as modules.
7927 Modified the 'make menuconfig' options to allow PCI Interrupt
7928 Routing support to be included without the ACPI Bus and other
7929 device drivers.
7931  3) ASL Compiler, version X2033:
7933 Fixed some issues with the use of the new CopyObject and
7934 DataTableRegion operators.  Both are fully functional.
7936  ----------------------------------------
7937 Summary of changes for this label: 11_20_01
7939  20 November 2001.  Summary of changes for this release.
7941  1) ACPI CA Core Subsystem:
7943 Updated Index support to match ACPI 2.0 semantics.  Storing a
7944 Integer, String, or Buffer to an Index of a Buffer will store only
7945 the least-significant byte of the source to the Indexed buffer
7946 byte.  Multiple writes are not performed.
7948 Fixed a problem where the access type used in an AccessAs ASL
7949 operator was not recorded correctly into the field object.
7951 Fixed a problem where ASL Event objects were created in a
7952 signalled state. Events are now created in an unsignalled state.
7954 The internal object cache is now purged after table loading and
7955 initialization to reduce the use of dynamic kernel memory -- on
7956 the assumption that object use is greatest during the parse phase
7957 of the entire table (versus the run-time use of individual control
7958 methods.)
7960 ACPI 2.0 variable-length packages are now fully operational.
7962 Code and Data Size: Code and Data optimizations have permitted new
7963 feature development with an actual reduction in the library size.
7964 Current core subsystem library sizes are shown below.  These are
7965 the code and data sizes for the acpica.lib produced by the
7966 Microsoft Visual C++ 6.0 compiler, and these values do not include
7967 any ACPI driver or OSPM code.  The debug version of the code
7968 includes the debug output trace mechanism and has a larger code
7969 and data size.  Note that these values will vary depending on the
7970 efficiency of the compiler and the compiler options used during
7971 generation.
7973   Previous Release (11_09_01):
7974      Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
7975      Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
7977   Current Release:
7978      Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
7979      Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
7981  2) Linux:
7983 Enhanced the ACPI boot-time initialization code to allow the use
7984 of Local APIC tables for processor enumeration on IA-32, and to
7985 pave the way for a fully MPS-free boot (on SMP systems) in the
7986 near future.  This functionality replaces
7987 arch/i386/kernel/acpitables.c, which was introduced in an earlier
7988 2.4.15-preX release.  To enable this feature you must add
7989 "acpi_boot=on" to the kernel command line -- see the help entry
7990 for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
7991 the works...
7993 Restructured the configuration options to allow boot-time table
7994 parsing support without inclusion of the ACPI Interpreter (and
7995 other) code.
7997 NOTE: This release does not include fixes for the reported events,
7998 power-down, and thermal passive cooling issues (coming soon).
8000  3) ASL Compiler:
8002 Added additional typechecking for Fields within restricted access
8003 Operation Regions.  All fields within EC and CMOS regions must be
8004 declared with ByteAcc. All fields withing SMBus regions must be
8005 declared with the BufferAcc access type.
8007 Fixed a problem where the listing file output of control methods
8008 no longer interleaved the actual AML code with the ASL source
8009 code.
8014 ----------------------------------------
8015 Summary of changes for this label: 11_09_01
8017 1) ACPI CA Core Subsystem:
8019 Implemented ACPI 2.0-defined support for writes to fields with a
8020 Buffer, String, or Integer source operand that is smaller than the
8021 target field. In these cases, the source operand is zero-extended
8022 to fill the target field.
8024 Fixed a problem where a Field starting bit offset (within the
8025 parent operation region) was calculated incorrectly if the
8027 alignment of the field differed from the access width.  This
8028 affected CreateWordField, CreateDwordField, CreateQwordField, and
8029 possibly other fields that use the "AccessAny" keyword.
8031 Fixed a problem introduced in the 11_02_01 release where indirect
8032 stores through method arguments did not operate correctly.
8034 2) Linux:
8036 Implemented boot-time ACPI table parsing support
8037 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
8038 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
8039 legacy BIOS interfaces (e.g. MPS) for the configuration of system
8040 processors, memory, and interrupts during setup_arch().  Note that
8041 this patch does not include the required architecture-specific
8042 changes required to apply this information -- subsequent patches
8043 will be posted for both IA32 and IA64 to achieve this.
8045 Added low-level sleep support for IA32 platforms, courtesy of Pat
8046 Mochel. This allows IA32 systems to transition to/from various
8047 sleeping states (e.g. S1, S3), although the lack of a centralized
8048 driver model and power-manageable drivers will prevent its
8049 (successful) use on most systems.
8051 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
8052 submenu, unified IA32 and IA64 options, added new "Boot using ACPI
8053 tables" option, etc.
8055 Increased the default timeout for the EC driver from 1ms to 10ms
8056 (1000 cycles of 10us) to try to address AE_TIME errors during EC
8057 transactions.
8059  ----------------------------------------
8060 Summary of changes for this label: 11_02_01
8062 1) ACPI CA Core Subsystem:
8064 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
8065 (QWordAcc keyword). All ACPI 2.0 64-bit support is now
8066 implemented.
8068 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
8069 changes to support ACPI 2.0 Qword field access.  Read/Write
8070 PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
8071 accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
8072 the value parameter for the address space handler interface is now
8073 an ACPI_INTEGER.  OSL implementations of these interfaces must now
8074 handle the case where the Width parameter is 64.
8076 Index Fields: Fixed a problem where unaligned bit assembly and
8077 disassembly for IndexFields was not supported correctly.
8079 Index and Bank Fields:  Nested Index and Bank Fields are now
8080 supported. During field access, a check is performed to ensure
8081 that the value written to an Index or Bank register is not out of
8082 the range of the register.  The Index (or Bank) register is
8083 written before each access to the field data. Future support will
8084 include allowing individual IndexFields to be wider than the
8085 DataRegister width.
8087 Fields: Fixed a problem where the AML interpreter was incorrectly
8088 attempting to write beyond the end of a Field/OpRegion.  This was
8089 a boundary case that occurred when a DWORD field was written to a
8090 BYTE access OpRegion, forcing multiple writes and causing the
8091 interpreter to write one datum too many.
8093 Fields: Fixed a problem with Field/OpRegion access where the
8094 starting bit address of a field was incorrectly calculated if the
8095 current access type was wider than a byte (WordAcc, DwordAcc, or
8096 QwordAcc).
8098 Fields: Fixed a problem where forward references to individual
8099 FieldUnits (individual Field names within a Field definition) were
8100 not resolved during the AML table load.
8102 Fields: Fixed a problem where forward references from a Field
8103 definition to the parent Operation Region definition were not
8104 resolved during the AML table load.
8106 Fields: Duplicate FieldUnit names within a scope are now detected
8107 during AML table load.
8109 Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
8110 returned an incorrect name for the root node.
8112 Code and Data Size: Code and Data optimizations have permitted new
8113 feature development with an actual reduction in the library size.
8114 Current core subsystem library sizes are shown below.  These are
8115 the code and data sizes for the acpica.lib produced by the
8116 Microsoft Visual C++ 6.0 compiler, and these values do not include
8117 any ACPI driver or OSPM code.  The debug version of the code
8118 includes the debug output trace mechanism and has a larger code
8119 and data size.  Note that these values will vary depending on the
8120 efficiency of the compiler and the compiler options used during
8121 generation.
8123   Previous Release (10_18_01):
8124      Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
8125      Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
8127   Current Release:
8128      Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
8129      Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
8131  2) Linux:
8133 Improved /proc processor output (Pavel Machek) Re-added
8134 MODULE_LICENSE("GPL") to all modules.
8136  3) ASL Compiler version X2030:
8138 Duplicate FieldUnit names within a scope are now detected and
8139 flagged as errors.
8141  4) Documentation:
8143 Programmer Reference updated to reflect OSL and address space
8144 handler interface changes described above.
8146 ----------------------------------------
8147 Summary of changes for this label: 10_18_01
8149 ACPI CA Core Subsystem:
8151 Fixed a problem with the internal object reference count mechanism
8152 that occasionally caused premature object deletion. This resolves
8153 all of the outstanding problem reports where an object is deleted
8154 in the middle of an interpreter evaluation.  Although this problem
8155 only showed up in rather obscure cases, the solution to the
8156 problem involved an adjustment of all reference counts involving
8157 objects attached to namespace nodes.
8159 Fixed a problem with Field support in the interpreter where
8160 writing to an aligned field whose length is an exact multiple (2
8161 or greater) of the field access granularity would cause an attempt
8162 to write beyond the end of the field.
8164 The top level AML opcode execution functions within the
8165 interpreter have been renamed with a more meaningful and
8166 consistent naming convention.  The modules exmonad.c and
8167 exdyadic.c were eliminated.  New modules are exoparg1.c,
8168 exoparg2.c, exoparg3.c, and exoparg6.c.
8170 Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
8172 Fixed a problem where the AML debugger was causing some internal
8173 objects to not be deleted during subsystem termination.
8175 Fixed a problem with the external AcpiEvaluateObject interface
8176 where the subsystem would fault if the named object to be
8177 evaluated refered to a constant such as Zero, Ones, etc.
8179 Fixed a problem with IndexFields and BankFields where the
8180 subsystem would fault if the index, data, or bank registers were
8181 not defined in the same scope as the field itself.
8183 Added printf format string checking for compilers that support
8184 this feature.  Corrected more than 50 instances of issues with
8185 format specifiers within invocations of ACPI_DEBUG_PRINT
8186 throughout the core subsystem code.
8188 The ASL "Revision" operator now returns the ACPI support level
8189 implemented in the core - the value "2" since the ACPI 2.0 support
8190 is more than 50% implemented.
8192 Enhanced the output of the AML debugger "dump namespace" command
8193 to output in a more human-readable form.
8195 Current core subsystem library code sizes are shown below.  These
8197 are the code and data sizes for the acpica.lib produced by the
8198 Microsoft Visual C++ 6.0 compiler, and these values do not include
8199 any ACPI driver or OSPM code.  The debug version of the code
8200 includes the full debug trace mechanism -- leading to a much
8202 larger code and data size.  Note that these values will vary
8203 depending on the efficiency of the compiler and the compiler
8204 options used during generation.
8206      Previous Label (09_20_01):
8207      Non-Debug Version:    65K Code,     5K Data,     70K Total
8208      Debug Version:       138K Code,    58K Data,    196K Total
8210      This Label:
8212      Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
8213      Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
8215 Linux:
8217 Implemented a "Bad BIOS Blacklist" to track machines that have
8218 known ASL/AML problems.
8220 Enhanced the /proc interface for the thermal zone driver and added
8221 support for _HOT (the critical suspend trip point).  The 'info'
8222 file now includes threshold/policy information, and allows setting
8223 of _SCP (cooling preference) and _TZP (polling frequency) values
8224 to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
8225 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
8226 preference to the passive/quiet mode (if supported by the ASL).
8228 Implemented a workaround for a gcc bug that resuted in an OOPs
8229 when loading the control method battery driver.
8231  ----------------------------------------
8232 Summary of changes for this label: 09_20_01
8234  ACPI CA Core Subsystem:
8236 The AcpiEnableEvent and AcpiDisableEvent interfaces have been
8237 modified to allow individual GPE levels to be flagged as wake-
8238 enabled (i.e., these GPEs are to remain enabled when the platform
8239 sleeps.)
8241 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
8242 support wake-enabled GPEs.  This means that upon entering the
8243 sleep state, all GPEs that are not wake-enabled are disabled.
8244 When leaving the sleep state, these GPEs are reenabled.
8246 A local double-precision divide/modulo module has been added to
8247 enhance portability to OS kernels where a 64-bit math library is
8248 not available.  The new module is "utmath.c".
8250 Several optimizations have been made to reduce the use of CPU
8251 stack.  Originally over 2K, the maximum stack usage is now below
8252 2K at 1860  bytes (1.82k)
8254 Fixed a problem with the AcpiGetFirmwareTable interface where the
8255 root table pointer was not mapped into a logical address properly.
8257 Fixed a problem where a NULL pointer was being dereferenced in the
8258 interpreter code for the ASL Notify operator.
8260 Fixed a problem where the use of the ASL Revision operator
8261 returned an error. This operator now returns the current version
8262 of the ACPI CA core subsystem.
8264 Fixed a problem where objects passed as control method parameters
8265 to AcpiEvaluateObject were always deleted at method termination.
8266 However, these objects may end up being stored into the namespace
8267 by the called method.  The object reference count mechanism was
8268 applied to these objects instead of a force delete.
8270 Fixed a problem where static strings or buffers (contained in the
8271 AML code) that are declared as package elements within the ASL
8272 code could cause a fault because the interpreter would attempt to
8273 delete them.  These objects are now marked with the "static
8274 object" flag to prevent any attempt to delete them.
8276 Implemented an interpreter optimization to use operands directly
8277 from the state object instead of extracting the operands to local
8278 variables.  This reduces stack use and code size, and improves
8279 performance.
8281 The module exxface.c was eliminated as it was an unnecessary extra
8282 layer of code.
8284 Current core subsystem library code sizes are shown below.  These
8285 are the code and data sizes for the acpica.lib produced by the
8286 Microsoft Visual C++ 6.0 compiler, and these values do not include
8287 any ACPI driver or OSPM code.  The debug version of the code
8288 includes the full debug trace mechanism -- leading to a much
8289 larger code and data size.  Note that these values will vary
8290 depending on the efficiency of the compiler and the compiler
8291 options used during generation.
8293   Non-Debug Version:  65K Code,   5K Data,   70K Total
8294 (Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
8295 Total  (Previously 195K)
8297 Linux:
8299 Support for ACPI 2.0 64-bit integers has been added.   All ACPI
8300 Integer objects are now 64 bits wide
8302 All Acpi data types and structures are now in lower case.  Only
8303 Acpi macros are upper case for differentiation.
8305  Documentation:
8307 Changes to the external interfaces as described above.
8309  ----------------------------------------
8310 Summary of changes for this label: 08_31_01
8312  ACPI CA Core Subsystem:
8314 A bug with interpreter implementation of the ASL Divide operator
8315 was found and fixed.  The implicit function return value (not the
8316 explicit store operands) was returning the remainder instead of
8317 the quotient.  This was a longstanding bug and it fixes several
8318 known outstanding issues on various platforms.
8320 The ACPI_DEBUG_PRINT and function trace entry/exit macros have
8321 been further optimized for size.  There are 700 invocations of the
8322 DEBUG_PRINT macro alone, so each optimization reduces the size of
8323 the debug version of the subsystem significantly.
8325 A stack trace mechanism has been implemented.  The maximum stack
8326 usage is about 2K on 32-bit platforms.  The debugger command "stat
8327 stack" will display the current maximum stack usage.
8329 All public symbols and global variables within the subsystem are
8330 now prefixed with the string "Acpi".  This keeps all of the
8331 symbols grouped together in a kernel map, and avoids conflicts
8332 with other kernel subsystems.
8334 Most of the internal fixed lookup tables have been moved into the
8335 code segment via the const operator.
8337 Several enhancements have been made to the interpreter to both
8338 reduce the code size and improve performance.
8340 Current core subsystem library code sizes are shown below.  These
8341 are the code and data sizes for the acpica.lib produced by the
8342 Microsoft Visual C++ 6.0 compiler, and these values do not include
8343 any ACPI driver or OSPM code.  The debug version of the code
8344 includes the full debug trace mechanism which contains over 700
8345 invocations of the DEBUG_PRINT macro, 500 function entry macro
8346 invocations, and over 900 function exit macro invocations --
8347 leading to a much larger code and data size.  Note that these
8348 values will vary depending on the efficiency of the compiler and
8349 the compiler options used during generation.
8351         Non-Debug Version:  64K Code,   5K Data,   69K Total
8352 Debug Version:     137K Code,  58K Data,  195K Total
8354  Linux:
8356 Implemented wbinvd() macro, pending a kernel-wide definition.
8358 Fixed /proc/acpi/event to handle poll() and short reads.
8360  ASL Compiler, version X2026:
8362 Fixed a problem introduced in the previous label where the AML
8364 code emitted for package objects produced packages with zero
8365 length.
8367  ----------------------------------------
8368 Summary of changes for this label: 08_16_01
8370 ACPI CA Core Subsystem:
8372 The following ACPI 2.0 ASL operators have been implemented in the
8373 AML interpreter (These are already supported by the Intel ASL
8374 compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
8375 ToBuffer.  Support for 64-bit AML constants is implemented in the
8376 AML parser, debugger, and disassembler.
8378 The internal memory tracking mechanism (leak detection code) has
8379 been upgraded to reduce the memory overhead (a separate tracking
8380 block is no longer allocated for each memory allocation), and now
8381 supports all of the internal object caches.
8383 The data structures and code for the internal object caches have
8384 been coelesced and optimized so that there is a single cache and
8385 memory list data structure and a single group of functions that
8386 implement generic cache management.  This has reduced the code
8387 size in both the debug and release versions of the subsystem.
8389 The DEBUG_PRINT macro(s) have been optimized for size and replaced
8390 by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
8391 different, because it generates a single call to an internal
8392 function.  This results in a savings of about 90 bytes per
8393 invocation, resulting in an overall code and data savings of about
8394 16% in the debug version of the subsystem.
8396  Linux:
8398 Fixed C3 disk corruption problems and re-enabled C3 on supporting
8399 machines.
8401 Integrated low-level sleep code by Patrick Mochel.
8403 Further tweaked source code Linuxization.
8405 Other minor fixes.
8407  ASL Compiler:
8409 Support for ACPI 2.0 variable length packages is fixed/completed.
8411 Fixed a problem where the optional length parameter for the ACPI
8412 2.0 ToString operator.
8414 Fixed multiple extraneous error messages when a syntax error is
8415 detected within the declaration line of a control method.
8417  ----------------------------------------
8418 Summary of changes for this label: 07_17_01
8420 ACPI CA Core Subsystem:
8422 Added a new interface named AcpiGetFirmwareTable to obtain any
8423 ACPI table via the ACPI signature.  The interface can be called at
8424 any time during kernel initialization, even before the kernel
8425 virtual memory manager is initialized and paging is enabled.  This
8426 allows kernel subsystems to obtain ACPI tables very early, even
8427 before the ACPI CA subsystem is initialized.
8429 Fixed a problem where Fields defined with the AnyAcc attribute
8430 could be resolved to the incorrect address under the following
8431 conditions: 1) the field width is larger than 8 bits and 2) the
8432 parent operation region is not defined on a DWORD boundary.
8434 Fixed a problem where the interpreter is not being locked during
8435 namespace initialization (during execution of the _INI control
8436 methods), causing an error when an attempt is made to release it
8437 later.
8439 ACPI 2.0 support in the AML Interpreter has begun and will be
8440 ongoing throughout the rest of this year.  In this label, The Mod
8441 operator is implemented.
8443 Added a new data type to contain full PCI addresses named
8444 ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
8445 and Function values.
8447  Linux:
8449 Enhanced the Linux version of the source code to change most
8450 capitalized ACPI type names to lowercase. For example, all
8451 instances of ACPI_STATUS are changed to acpi_status.  This will
8452 result in a large diff, but the change is strictly cosmetic and
8453 aligns the CA code closer to the Linux coding standard.
8455 OSL Interfaces:
8457 The interfaces to the PCI configuration space have been changed to
8458 add the PCI Segment number and to split the single 32-bit combined
8459 DeviceFunction field into two 16-bit fields.  This was
8460 accomplished by moving the four values that define an address in
8461 PCI configuration space (segment, bus, device, and function) to
8462 the new ACPI_PCI_ID structure.
8464 The changes to the PCI configuration space interfaces led to a
8465 reexamination of the complete set of address space access
8466 interfaces for PCI, I/O, and Memory.  The previously existing 18
8467 interfaces have proven difficult to maintain (any small change
8468 must be propagated across at least 6 interfaces) and do not easily
8469 allow for future expansion to 64 bits if necessary.  Also, on some
8470 systems, it would not be appropriate to demultiplex the access
8471 width (8, 16, 32,or 64) before calling the OSL if the
8472 corresponding native OS interfaces contain a similar access width
8473 parameter.  For these reasons, the 18 address space interfaces
8474 have been replaced by these 6 new ones:
8476 AcpiOsReadPciConfiguration
8477 AcpiOsWritePciConfiguration
8478 AcpiOsReadMemory
8479 AcpiOsWriteMemory
8480 AcpiOsReadPort
8481 AcpiOsWritePort
8483 Added a new interface named AcpiOsGetRootPointer to allow the OSL
8484 to perform the platform and/or OS-specific actions necessary to
8485 obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
8486 interface will simply call down to the CA core to perform the low-
8487 memory search for the table.  On IA-64, the RSDP is obtained from
8488 EFI.  Migrating this interface to the OSL allows the CA core to
8490 remain OS and platform independent.
8492 Added a new interface named AcpiOsSignal to provide a generic
8493 "function code and pointer" interface for various miscellaneous
8494 signals and notifications that must be made to the host OS.   The
8495 first such signals are intended to support the ASL Fatal and
8496 Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
8497 interface has been obsoleted.
8499 The definition of the AcpiFormatException interface has been
8500 changed to simplify its use.  The caller no longer must supply a
8501 buffer to the call; A pointer to a const string is now returned
8502 directly.  This allows the call to be easily used in printf
8503 statements, etc. since the caller does not have to manage a local
8504 buffer.
8507  ASL Compiler, Version X2025:
8509 The ACPI 2.0 Switch/Case/Default operators have been implemented
8510 and are fully functional.  They will work with all ACPI 1.0
8511 interpreters, since the operators are simply translated to If/Else
8512 pairs.
8514 The ACPI 2.0 ElseIf operator is implemented and will also work
8515 with 1.0 interpreters, for the same reason.
8517 Implemented support for ACPI 2.0 variable-length packages.  These
8518 packages have a separate opcode, and their size is determined by
8519 the interpreter at run-time.
8521 Documentation The ACPI CA Programmer Reference has been updated to
8522 reflect the new interfaces and changes to existing interfaces.
8524  ------------------------------------------
8525 Summary of changes for this label: 06_15_01
8527  ACPI CA Core Subsystem:
8529 Fixed a problem where a DWORD-accessed field within a Buffer
8530 object would get its byte address inadvertently rounded down to
8531 the nearest DWORD.  Buffers are always Byte-accessible.
8533  ASL Compiler, version X2024:
8535 Fixed a problem where the Switch() operator would either fault or
8536 hang the compiler.  Note however, that the AML code for this ACPI
8537 2.0 operator is not yet implemented.
8539 Compiler uses the new AcpiOsGetTimer interface to obtain compile
8540 timings.
8542 Implementation of the CreateField operator automatically converts
8543 a reference to a named field within a resource descriptor from a
8544 byte offset to a bit offset if required.
8546 Added some missing named fields from the resource descriptor
8547 support. These are the names that are automatically created by the
8548 compiler to reference fields within a descriptor.  They are only
8549 valid at compile time and are not passed through to the AML
8550 interpreter.
8552 Resource descriptor named fields are now typed as Integers and
8553 subject to compile-time typechecking when used in expressions.
8555  ------------------------------------------
8556 Summary of changes for this label: 05_18_01
8558  ACPI CA Core Subsystem:
8560 Fixed a couple of problems in the Field support code where bits
8561 from adjacent fields could be returned along with the proper field
8562 bits. Restructured the field support code to improve performance,
8563 readability and maintainability.
8565 New DEBUG_PRINTP macro automatically inserts the procedure name
8566 into the output, saving hundreds of copies of procedure name
8567 strings within the source, shrinking the memory footprint of the
8568 debug version of the core subsystem.
8570  Source Code Structure:
8572 The source code directory tree was restructured to reflect the
8573 current organization of the component architecture.  Some files
8574 and directories have been moved and/or renamed.
8576  Linux:
8578 Fixed leaking kacpidpc processes.
8580 Fixed queueing event data even when /proc/acpi/event is not
8581 opened.
8583  ASL Compiler, version X2020:
8585 Memory allocation performance enhancement - over 24X compile time
8586 improvement on large ASL files.  Parse nodes and namestring
8587 buffers are now allocated from a large internal compiler buffer.
8589 The temporary .SRC file is deleted unless the "-s" option is
8590 specified
8592 The "-d" debug output option now sends all output to the .DBG file
8593 instead of the console.
8595 "External" second parameter is now optional
8597 "ElseIf" syntax now properly allows the predicate
8599 Last operand to "Load" now recognized as a Target operand
8601 Debug object can now be used anywhere as a normal object.
8603 ResourceTemplate now returns an object of type BUFFER
8605 EISAID now returns an object of type INTEGER
8607 "Index" now works with a STRING operand
8609 "LoadTable" now accepts optional parameters
8611 "ToString" length parameter is now optional
8613 "Interrupt (ResourceType," parse error fixed.
8615 "Register" with a user-defined region space parse error fixed
8617 Escaped backslash at the end of a string ("\\") scan/parse error
8618 fixed
8620 "Revision" is now an object of type INTEGER.
8624 ------------------------------------------
8625 Summary of changes for this label: 05_02_01
8627 Linux:
8629 /proc/acpi/event now blocks properly.
8631 Removed /proc/sys/acpi. You can still dump your DSDT from
8632 /proc/acpi/dsdt.
8634  ACPI CA Core Subsystem:
8636 Fixed a problem introduced in the previous label where some of the
8637 "small" resource descriptor types were not recognized.
8639 Improved error messages for the case where an ASL Field is outside
8640 the range of the parent operation region.
8642  ASL Compiler, version X2018:
8645 Added error detection for ASL Fields that extend beyond the length
8646 of the parent operation region (only if the length of the region
8647 is known at compile time.)  This includes fields that have a
8648 minimum access width that is smaller than the parent region, and
8649 individual field units that are partially or entirely beyond the
8650 extent of the parent.
8654 ------------------------------------------
8655 Summary of changes for this label: 04_27_01
8657  ACPI CA Core Subsystem:
8659 Fixed a problem where the namespace mutex could be released at the
8660 wrong time during execution of AcpiRemoveAddressSpaceHandler.
8662 Added optional thread ID output for debug traces, to simplify
8663 debugging of multiple threads.  Added context switch notification
8664 when the debug code realizes that a different thread is now
8665 executing ACPI code.
8667 Some additional external data types have been prefixed with the
8668 string "ACPI_" for consistency.  This may effect existing code.
8669 The data types affected are the external callback typedefs - e.g.,
8671 WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
8673  Linux:
8675 Fixed an issue with the OSL semaphore implementation where a
8676 thread was waking up with an error from receiving a SIGCHLD
8677 signal.
8679 Linux version of ACPI CA now uses the system C library for string
8680 manipulation routines instead of a local implementation.
8682 Cleaned up comments and removed TBDs.
8684  ASL Compiler, version X2017:
8686 Enhanced error detection and reporting for all file I/O
8687 operations.
8689  Documentation:
8691 Programmer Reference updated to version 1.06.
8695 ------------------------------------------
8696 Summary of changes for this label: 04_13_01
8698  ACPI CA Core Subsystem:
8700 Restructured support for BufferFields and RegionFields.
8701 BankFields support is now fully operational.  All known 32-bit
8702 limitations on field sizes have been removed.  Both BufferFields
8703 and (Operation) RegionFields are now supported by the same field
8704 management code.
8706 Resource support now supports QWORD address and IO resources. The
8707 16/32/64 bit address structures and the Extended IRQ structure
8708 have been changed to properly handle Source Resource strings.
8710 A ThreadId of -1 is now used to indicate a "mutex not acquired"
8711 condition internally and must never be returned by AcpiOsThreadId.
8712 This reserved value was changed from 0 since Unix systems allow a
8713 thread ID of 0.
8715 Linux:
8717 Driver code reorganized to enhance portability
8719 Added a kernel configuration option to control ACPI_DEBUG
8721 Fixed the EC driver to honor _GLK.
8723 ASL Compiler, version X2016:
8725 Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
8726 address space was set to 0, not 0x7f as it should be.
8728  ------------------------------------------
8729 Summary of changes for this label: 03_13_01
8731  ACPI CA Core Subsystem:
8733 During ACPI initialization, the _SB_._INI method is now run if
8734 present.
8736 Notify handler fix - notifies are deferred until the parent method
8737 completes execution.  This fixes the "mutex already acquired"
8738 issue seen occasionally.
8740 Part of the "implicit conversion" rules in ACPI 2.0 have been
8741 found to cause compatibility problems with existing ASL/AML.  The
8742 convert "result-to-target-type" implementation has been removed
8743 for stores to method Args and Locals.  Source operand conversion
8744 is still fully implemented.  Possible changes to ACPI 2.0
8745 specification pending.
8747 Fix to AcpiRsCalculatePciRoutingTableLength to return correct
8748 length.
8750 Fix for compiler warnings for 64-bit compiles.
8752  Linux:
8754 /proc output aligned for easier parsing.
8756 Release-version compile problem fixed.
8758 New kernel configuration options documented in Configure.help.
8760 IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
8761 context" message.
8763  OSPM:
8765 Power resource driver integrated with bus manager.
8767 Fixed kernel fault during active cooling for thermal zones.
8769 Source Code:
8771 The source code tree has been restructured.
8775 ------------------------------------------
8776 Summary of changes for this label: 03_02_01
8778  Linux OS Services Layer (OSL):
8780 Major revision of all Linux-specific code.
8782 Modularized all ACPI-specific drivers.
8784 Added new thermal zone and power resource drivers.
8786 Revamped /proc interface (new functionality is under /proc/acpi).
8788 New kernel configuration options.
8790  Linux known issues:
8792 New kernel configuration options not documented in Configure.help
8793 yet.
8796 Module dependencies not currently implemented. If used, they
8797 should be loaded in this order: busmgr, power, ec, system,
8798 processor, battery, ac_adapter, button, thermal.
8800 Modules will not load if CONFIG_MODVERSION is set.
8802 IBM 600E - entering S5 may reboot instead of shutting down.
8804 IBM 600E - Sleep button may generate "Invalid <NULL> context"
8805 message.
8807 Some systems may fail with "execution mutex already acquired"
8808 message.
8810  ACPI CA Core Subsystem:
8812 Added a new OSL Interface, AcpiOsGetThreadId.  This was required
8813 for the  deadlock detection code. Defined to return a non-zero, 32-
8814 bit thread ID for the currently executing thread.  May be a non-
8815 zero constant integer on single-thread systems.
8817 Implemented deadlock detection for internal subsystem mutexes.  We
8818 may add conditional compilation for this code (debug only) later.
8820 ASL/AML Mutex object semantics are now fully supported.  This
8821 includes multiple acquires/releases by owner and support for the
8823 Mutex SyncLevel parameter.
8825 A new "Force Release" mechanism automatically frees all ASL
8826 Mutexes that have been acquired but not released when a thread
8827 exits the interpreter.  This forces conformance to the ACPI spec
8828 ("All mutexes must be released when an invocation exits") and
8829 prevents deadlocked ASL threads.  This mechanism can be expanded
8830 (later) to monitor other resource acquisitions if OEM ASL code
8831 continues to misbehave (which it will).
8833 Several new ACPI exception codes have been added for the Mutex
8834 support.
8836 Recursive method calls are now allowed and supported (the ACPI
8837 spec does in fact allow recursive method calls.)  The number of
8838 recursive calls is subject to the restrictions imposed by the
8839 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
8840 parameter.
8842 Implemented support for the SyncLevel parameter for control
8843 methods (ACPI 2.0 feature)
8845 Fixed a deadlock problem when multiple threads attempted to use
8846 the interpreter.
8848 Fixed a problem where the string length of a String package
8849 element was not always set in a package returned from
8850 AcpiEvaluateObject.
8852 Fixed a problem where the length of a String package element was
8853 not always included in the length of the overall package returned
8854 from AcpiEvaluateObject.
8856 Added external interfaces (Acpi*) to the ACPI debug memory
8857 manager.  This manager keeps a list of all outstanding
8858 allocations, and can therefore detect memory leaks and attempts to
8859 free memory blocks more than once. Useful for code such as the
8860 power manager, etc.  May not be appropriate for device drivers.
8861 Performance with the debug code enabled is slow.
8863 The ACPI Global Lock is now an optional hardware element.
8865  ASL Compiler Version X2015:
8867 Integrated changes to allow the compiler to be generated on
8868 multiple platforms.
8870 Linux makefile added to generate the compiler on Linux
8872  Source Code:
8874 All platform-specific headers have been moved to their own
8875 subdirectory, Include/Platform.
8877 New source file added, Interpreter/ammutex.c
8879 New header file, Include/acstruct.h
8881  Documentation:
8883 The programmer reference has been updated for the following new
8884 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
8886  ------------------------------------------
8887 Summary of changes for this label: 02_08_01
8889 Core ACPI CA Subsystem: Fixed a problem where an error was
8890 incorrectly returned if the return resource buffer was larger than
8891 the actual data (in the resource interfaces).
8893 References to named objects within packages are resolved to the
8895 full pathname string before packages are returned directly (via
8896 the AcpiEvaluateObject interface) or indirectly via the resource
8897 interfaces.
8899 Linux OS Services Layer (OSL):
8901 Improved /proc battery interface.
8904 Added C-state debugging output and other miscellaneous fixes.
8906 ASL Compiler Version X2014:
8908 All defined method arguments can now be used as local variables,
8909 including the ones that are not actually passed in as parameters.
8910 The compiler tracks initialization of the arguments and issues an
8911 exception if they are used without prior assignment (just like
8912 locals).
8914 The -o option now specifies a filename prefix that is used for all
8915 output files, including the AML output file.  Otherwise, the
8916 default behavior is as follows:  1) the AML goes to the file
8917 specified in the DSDT.  2) all other output files use the input
8918 source filename as the base.
8920  ------------------------------------------
8921 Summary of changes for this label: 01_25_01
8923 Core ACPI CA Subsystem: Restructured the implementation of object
8924 store support within the  interpreter.  This includes support for
8925 the Store operator as well  as any ASL operators that include a
8926 target operand.
8928 Partially implemented support for Implicit Result-to-Target
8929 conversion. This is when a result object is converted on the fly
8930 to the type of  an existing target object.  Completion of this
8931 support is pending  further analysis of the ACPI specification
8932 concerning this matter.
8934 CPU-specific code has been removed from the subsystem (hardware
8935 directory).
8937 New Power Management Timer functions added
8939 Linux OS Services Layer (OSL): Moved system state transition code
8940 to the core, fixed it, and modified  Linux OSL accordingly.
8942 Fixed C2 and C3 latency calculations.
8945 We no longer use the compilation date for the version message on
8946 initialization, but retrieve the version from AcpiGetSystemInfo().
8948 Incorporated for fix Sony VAIO machines.
8950 Documentation:  The Programmer Reference has been updated and
8951 reformatted.
8954 ASL Compiler:  Version X2013: Fixed a problem where the line
8955 numbering and error reporting could get out  of sync in the
8956 presence of multiple include files.
8958  ------------------------------------------
8959 Summary of changes for this label: 01_15_01
8961 Core ACPI CA Subsystem:
8963 Implemented support for type conversions in the execution of the
8964 ASL  Concatenate operator (The second operand is converted to
8965 match the type  of the first operand before concatenation.)
8967 Support for implicit source operand conversion is partially
8968 implemented.   The ASL source operand types Integer, Buffer, and
8969 String are freely  interchangeable for most ASL operators and are
8970 converted by the interpreter  on the fly as required.  Implicit
8971 Target operand conversion (where the  result is converted to the
8972 target type before storing) is not yet implemented.
8974 Support for 32-bit and 64-bit BCD integers is implemented.
8976 Problem fixed where a field read on an aligned field could cause a
8977 read  past the end of the field.
8979 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
8980 does not return a value, but the caller expects one.  (The ASL
8981 compiler flags this as a warning.)
8983 ASL Compiler:
8985 Version X2011:
8986 1. Static typechecking of all operands is implemented. This
8987 prevents the use of invalid objects (such as using a Package where
8988 an Integer is required) at compile time instead of at interpreter
8989 run-time.
8990 2. The ASL source line is printed with ALL errors and warnings.
8991 3. Bug fix for source EOF without final linefeed.
8992 4. Debug option is split into a parse trace and a namespace trace.
8993 5. Namespace output option (-n) includes initial values for
8994 integers and strings.
8995 6. Parse-only option added for quick syntax checking.
8996 7. Compiler checks for duplicate ACPI name declarations
8998 Version X2012:
8999 1. Relaxed typechecking to allow interchangeability between
9000 strings, integers, and buffers.  These types are now converted by
9001 the interpreter at runtime.
9002 2. Compiler reports time taken by each internal subsystem in the
9003 debug         output file.
9006  ------------------------------------------
9007 Summary of changes for this label: 12_14_00
9009 ASL Compiler:
9011 This is the first official release of the compiler. Since the
9012 compiler requires elements of the Core Subsystem, this label
9013 synchronizes everything.
9015 ------------------------------------------
9016 Summary of changes for this label: 12_08_00
9019 Fixed a problem where named references within the ASL definition
9020 of both OperationRegions and CreateXXXFields did not work
9021 properly.  The symptom was an AE_AML_OPERAND_TYPE during
9022 initialization of the region/field. This is similar (but not
9023 related internally) to the problem that was fixed in the last
9024 label.
9026 Implemented both 32-bit and 64-bit support for the BCD ASL
9027 functions ToBCD and FromBCD.
9029 Updated all legal headers to include "2000" in the copyright
9030 years.
9032  ------------------------------------------
9033 Summary of changes for this label: 12_01_00
9035 Fixed a problem where method invocations within the ASL definition
9036 of both OperationRegions and CreateXXXFields did not work
9037 properly.  The symptom was an AE_AML_OPERAND_TYPE during
9038 initialization of the region/field:
9040   nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
9041 [DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
9042 (0x3005)
9044 Fixed a problem where operators with more than one nested
9045 subexpression would fail.  The symptoms were varied, by mostly
9046 AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
9047 problem that has gone unnoticed until now.
9049   Subtract (Add (1,2), Multiply (3,4))
9051 Fixed a problem where AcpiGetHandle didn't quite get fixed in the
9052 previous build (The prefix part of a relative path was handled
9053 incorrectly).
9055 Fixed a problem where Operation Region initialization failed if
9056 the operation region name was a "namepath" instead of a simple
9057 "nameseg". Symptom was an AE_NO_OPERAND error.
9059 Fixed a problem where an assignment to a local variable via the
9060 indirect RefOf mechanism only worked for the first such
9061 assignment.  Subsequent assignments were ignored.
9063  ------------------------------------------
9064 Summary of changes for this label: 11_15_00
9066 ACPI 2.0 table support with backwards support for ACPI 1.0 and the
9067 0.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
9068 the AML  interpreter does NOT have support for the new 2.0 ASL
9069 grammar terms at this time.
9071 All ACPI hardware access is via the GAS structures in the ACPI 2.0
9072 FADT.
9074 All physical memory addresses across all platforms are now 64 bits
9075 wide. Logical address width remains dependent on the platform
9076 (i.e., "void *").
9078 AcpiOsMapMemory interface changed to a 64-bit physical address.
9080 The AML interpreter integer size is now 64 bits, as per the ACPI
9081 2.0 specification.
9083 For backwards compatibility with ACPI 1.0, ACPI tables with a
9084 revision number less than 2 use 32-bit integers only.
9086 Fixed a problem where the evaluation of OpRegion operands did not
9087 always resolve them to numbers properly.
9089 ------------------------------------------
9090 Summary of changes for this label: 10_20_00
9092 Fix for CBN_._STA issue.  This fix will allow correct access to
9093 CBN_ OpRegions when the _STA returns 0x8.
9095 Support to convert ACPI constants (Ones, Zeros, One) to actual
9096 values before a package object is returned
9098 Fix for method call as predicate to if/while construct causing
9099 incorrect if/while behavior
9101 Fix for Else block package lengths sometimes calculated wrong (if
9102 block > 63 bytes)
9104 Fix for Processor object length field, was always zero
9106 Table load abort if FACP sanity check fails
9108 Fix for problem with Scope(name) if name already exists
9110 Warning emitted if a named object referenced cannot be found
9111 (resolved) during method execution.
9117 ------------------------------------------
9118 Summary of changes for this label: 9_29_00
9120 New table initialization interfaces: AcpiInitializeSubsystem no
9121 longer has any parameters AcpiFindRootPointer - Find the RSDP (if
9122 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
9123 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
9124 AcpiLoadTables
9126 Note: These interface changes require changes to all existing OSDs
9128 The PCI_Config default address space handler is always installed
9129 at the root namespace object.
9131 -------------------------------------------
9132 Summary of changes for this label: 09_15_00
9134 The new initialization architecture is implemented.  New
9135 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
9136 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
9138 (Namespace is automatically loaded when a table is loaded)
9140 The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
9141 52 bytes to 32 bytes.  There is usually one of these for every
9142 namespace object, so the memory savings is significant.
9144 Implemented just-in-time evaluation of the CreateField operators.
9146 Bug fixes for IA-64 support have been integrated.
9148 Additional code review comments have been implemented
9150 The so-called "third pass parse" has been replaced by a final walk
9151 through the namespace to initialize all operation regions (address
9152 spaces) and fields that have not yet been initialized during the
9153 execution of the various _INI and REG methods.
9155 New file - namespace/nsinit.c
9157 -------------------------------------------
9158 Summary of changes for this label: 09_01_00
9160 Namespace manager data structures have been reworked to change the
9161 primary  object from a table to a single object.  This has
9162 resulted in dynamic memory  savings of 3X within the namespace and
9163 2X overall in the ACPI CA subsystem.
9165 Fixed problem where the call to AcpiEvFindPciRootBuses was
9166 inadvertently left  commented out.
9168 Reduced the warning count when generating the source with the GCC
9169 compiler.
9171 Revision numbers added to each module header showing the
9172 SourceSafe version of the file.  Please refer to this version
9173 number when giving us feedback or comments on individual modules.
9175 The main object types within the subsystem have been renamed to
9176 clarify their  purpose:
9178 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
9179 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
9180 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
9182 NOTE: no changes to the initialization sequence are included in
9183 this label.
9185 -------------------------------------------
9186 Summary of changes for this label: 08_23_00
9188 Fixed problem where TerminateControlMethod was being called
9189 multiple times per  method
9191 Fixed debugger problem where single stepping caused a semaphore to
9192 be  oversignalled
9194 Improved performance through additional parse object caching -
9195 added  ACPI_EXTENDED_OP type
9197 -------------------------------------------
9198 Summary of changes for this label: 08_10_00
9200 Parser/Interpreter integration:  Eliminated the creation of
9201 complete parse trees  for ACPI tables and control methods.
9202 Instead, parse subtrees are created and  then deleted as soon as
9203 they are processed (Either entered into the namespace or  executed
9204 by the interpreter).  This reduces the use of dynamic kernel
9205 memory  significantly. (about 10X)
9207 Exception codes broken into classes and renumbered.  Be sure to
9208 recompile all  code that includes acexcep.h.  Hopefully we won't
9209 have to renumber the codes  again now that they are split into
9210 classes (environment, programmer, AML code,  ACPI table, and
9211 internal).
9213 Fixed some additional alignment issues in the Resource Manager
9214 subcomponent
9216 Implemented semaphore tracking in the AcpiExec utility, and fixed
9217 several places  where mutexes/semaphores were being unlocked
9218 without a corresponding lock  operation.  There are no known
9219 semaphore or mutex "leaks" at this time.
9221 Fixed the case where an ASL Return operator is used to return an
9222 unnamed  package.
9224 -------------------------------------------
9225 Summary of changes for this label: 07_28_00
9227 Fixed a problem with the way addresses were calculated in
9228 AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
9229 manifested itself when a Field was  created with WordAccess or
9230 DwordAccess, but the field unit defined within the  Field was less
9232 than a Word or Dword.
9234 Fixed a problem in AmlDumpOperands() module's loop to pull
9235 operands off of the  operand stack to display information. The
9236 problem manifested itself as a TLB  error on 64-bit systems when
9237 accessing an operand stack with two or more  operands.
9239 Fixed a problem with the PCI configuration space handlers where
9240 context was  getting confused between accesses. This required a
9241 change to the generic address  space handler and address space
9242 setup definitions. Handlers now get both a  global handler context
9243 (this is the one passed in by the user when executing
9244 AcpiInstallAddressSpaceHandler() and a specific region context
9245 that is unique to  each region (For example, the _ADR, _SEG and
9246 _BBN values associated with a  specific region). The generic
9247 function definitions have changed to the  following:
9249 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
9250 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
9251 *HandlerContext, // This used to be void *Context void
9252 *RegionContext); // This is an additional parameter
9254 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
9255 RegionHandle, UINT32 Function, void *HandlerContext,  void
9256 **RegionContext); // This used to be **ReturnContext
9258 -------------------------------------------
9259 Summary of changes for this label: 07_21_00
9261 Major file consolidation and rename.  All files within the
9262 interpreter have been  renamed as well as most header files.  This
9263 was done to prevent collisions with  existing files in the host
9264 OSs -- filenames such as "config.h" and "global.h"  seem to be
9265 quite common.  The VC project files have been updated.  All
9266 makefiles  will require modification.
9268 The parser/interpreter integration continues in Phase 5 with the
9269 implementation  of a complete 2-pass parse (the AML is parsed
9270 twice) for each table;  This  avoids the construction of a huge
9271 parse tree and therefore reduces the amount of  dynamic memory
9272 required by the subsystem.  Greater use of the parse object cache
9273 means that performance is unaffected.
9275 Many comments from the two code reviews have been rolled in.
9277 The 64-bit alignment support is complete.
9279 -------------------------------------------
9280 Summary of changes for this label: 06_30_00
9282 With a nod and a tip of the hat to the technology of yesteryear,
9283 we've added  support in the source code for 80 column output
9284 devices.  The code is now mostly  constrained to 80 columns or
9285 less to support environments and editors that 1)  cannot display
9286 or print more than 80 characters on a single line, and 2) cannot
9287 disable line wrapping.
9289 A major restructuring of the namespace data structure has been
9290 completed.  The  result is 1) cleaner and more
9291 understandable/maintainable code, and 2) a  significant reduction
9292 in the dynamic memory requirement for each named ACPI  object
9293 (almost half).
9295 -------------------------------------------
9296 Summary of changes for this label: 06_23_00
9298 Linux support has been added.  In order to obtain approval to get
9299 the ACPI CA  subsystem into the Linux kernel, we've had to make
9300 quite a few changes to the  base subsystem that will affect all
9301 users (all the changes are generic and OS- independent).  The
9302 effects of these global changes have been somewhat far  reaching.
9303 Files have been merged and/or renamed and interfaces have been
9304 renamed.   The major changes are described below.
9306 Osd* interfaces renamed to AcpiOs* to eliminate namespace
9307 pollution/confusion  within our target kernels.  All OSD
9308 interfaces must be modified to match the new  naming convention.
9310 Files merged across the subsystem.  A number of the smaller source
9311 and header  files have been merged to reduce the file count and
9312 increase the density of the  existing files.  There are too many
9313 to list here.  In general, makefiles that  call out individual
9314 files will require rebuilding.
9316 Interpreter files renamed.  All interpreter files now have the
9317 prefix am*  instead of ie* and is*.
9319 Header files renamed:  The acapi.h file is now acpixf.h.  The
9320 acpiosd.h file is  now acpiosxf.h.  We are removing references to
9321 the acronym "API" since it is  somewhat windowsy. The new name is
9322 "external interface" or xface or xf in the  filenames.j
9325 All manifest constants have been forced to upper case (some were
9326 mixed case.)   Also, the string "ACPI_" has been prepended to many
9327 (not all) of the constants,  typedefs, and structs.
9329 The globals "DebugLevel" and "DebugLayer" have been renamed
9330 "AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
9332 All other globals within the subsystem are now prefixed with
9333 "AcpiGbl_" Internal procedures within the subsystem are now
9334 prefixed with "Acpi" (with only  a few exceptions).  The original
9335 two-letter abbreviation for the subcomponent  remains after "Acpi"
9336 - for example, CmCallocate became AcpiCmCallocate.
9338 Added a source code translation/conversion utility.  Used to
9339 generate the Linux  source code, it can be modified to generate
9340 other types of source as well. Can  also be used to cleanup
9341 existing source by removing extraneous spaces and blank  lines.
9342 Found in tools/acpisrc/*
9344 OsdUnMapMemory was renamed to OsdUnmapMemory and then
9345 AcpiOsUnmapMemory.  (UnMap  became Unmap).
9347 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
9348 When set to  one, this indicates that the caller wants to use the
9350 semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
9351 both types.  However, implementers of this  call may want to use
9352 different OS primitives depending on the type of semaphore
9353 requested.  For example, some operating systems provide separate
9355 "mutex" and  "semaphore" interfaces - where the mutex interface is
9356 much faster because it  doesn't have all the overhead of a full
9357 semaphore implementation.
9359 Fixed a deadlock problem where a method that accesses the PCI
9360 address space can  block forever if it is the first access to the
9361 space.
9363 -------------------------------------------
9364 Summary of changes for this label: 06_02_00
9366 Support for environments that cannot handle unaligned data
9367 accesses (e.g.  firmware and OS environments devoid of alignment
9368 handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
9369 been added (via configurable macros) in  these three areas: -
9370 Transfer of data from the raw AML byte stream is done via byte
9371 moves instead of    word/dword/qword moves. - External objects are
9372 aligned within the user buffer, including package   elements (sub-
9373 objects). - Conversion of name strings to UINT32 Acpi Names is now
9374 done byte-wise.
9376 The Store operator was modified to mimic Microsoft's
9377 implementation when storing  to a Buffer Field.
9379 Added a check of the BM_STS bit before entering C3.
9381 The methods subdirectory has been obsoleted and removed.  A new
9382 file, cmeval.c  subsumes the functionality.
9384 A 16-bit (DOS) version of AcpiExec has been developed.  The
9385 makefile is under  the acpiexec directory.