changes.txt revision 238381
1----------------------------------------
211 July 2012. Summary of changes for version 20120711:
3
4This release is available at https://www.acpica.org/downloads The ACPI 5.0 
5specification is available at www.acpi.info
6
71) ACPICA Kernel-resident Subsystem:
8
9Fixed a possible fault in the return package object repair code. Fixes a 
10problem that can occur when a lone package object is wrapped with an outer 
11package object in order to force conformance to the ACPI specification. Can 
12affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, _DLM, 
13_CSD, _PSD, _TSD.
14
15Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 
16PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 
17ARB_DIS bit must be implemented in the host-dependent C3 processor power state 
18support. Note, ARB_DIS is obsolete and only applies to older chipsets, both 
19Intel and other vendors. (for Intel: ICH4-M and earlier)
20
21This change removes the code to disable/enable bus master arbitration during 
22suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register causes 
23resume problems on some machines. The change has been in use for over seven 
24years within Linux.
25
26Implemented two new external interfaces to support host-directed dynamic ACPI 
27table load and unload. They are intended to simplify the host implementation 
28of hot-plug support:
29  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
30  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the table.
31See the ACPICA reference for additional details. Adds one new file, 
32components/tables/tbxfload.c
33
34Implemented and deployed two new interfaces for errors and warnings that are 
35known to be caused by BIOS/firmware issues:
36  AcpiBiosError: Prints "ACPI Firmware Error" message.
37  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
38Deployed these new interfaces in the ACPICA Table Manager code for ACPI table 
39and FADT errors. Additional deployment to be completed as appropriate in the 
40future. The associated conditional macros are ACPI_BIOS_ERROR and 
41ACPI_BIOS_WARNING. See the ACPICA reference for additional details. ACPICA BZ 
42843.
43
44Implicit notify support: ensure that no memory allocation occurs within a 
45critical region. This fix moves a memory allocation outside of the time that a 
46spinlock is held. Fixes issues on systems that do not allow this behavior. 
47Jung-uk Kim.
48
49Split exception code utilities and tables into a new file, utilities/utexcep.c
50
51Example Code and Data Size: These are the sizes for the OS-independent 
52acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
53version of the code includes the debug output trace mechanism and has a much 
54larger code and data size.
55
56  Previous Release:
57    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
58    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
59  Current Release:
60    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
61    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
62
63
642) iASL Compiler/Disassembler and Tools:
65
66iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead of 
670. Jung-uk Kim.
68
69Debugger: Enhanced the "tables" command to emit additional information about 
70the current set of ACPI tables, including the owner ID and flags decode.
71
72Debugger: Reimplemented the "unload" command to use the new 
73AcpiUnloadParentTable external interface. This command was disable previously 
74due to need for an unload interface.
75
76AcpiHelp: Added a new option to decode ACPICA exception codes. The -e option 
77will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
78
79----------------------------------------
8020 June 2012. Summary of changes for version 20120620:
81
82This release is available at https://www.acpica.org/downloads
83The ACPI 5.0 specification is available at www.acpi.info
84
851) ACPICA Kernel-resident Subsystem:
86
87Implemented support to expand the "implicit notify" feature to allow multiple 
88devices to be notified by a single GPE. This feature automatically generates a 
89runtime device notification in the absence of a BIOS-provided GPE control 
90method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit notify is 
91provided by ACPICA for Windows compatibility, and is a workaround for BIOS AML 
92code errors. See the description of the AcpiSetupGpeForWake interface in the 
93APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
94
95Changed some comments and internal function names to simplify and ensure 
96correctness of the Linux code translation. No functional changes.
97
98Example Code and Data Size: These are the sizes for the OS-independent 
99acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
100version of the code includes the debug output trace mechanism and has a much 
101larger code and data size.
102
103  Previous Release:
104    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
105    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
106  Current Release:
107    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
108    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
109
110
1112) iASL Compiler/Disassembler and Tools:
112
113Disassembler: Added support to emit short, commented descriptions for the ACPI 
114predefined names in order to improve the readability of the disassembled 
115output. ACPICA BZ 959. Changes include:
116  1) Emit descriptions for all standard predefined names (_INI, _STA, _PRW, 
117etc.)
118  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
119  3) Emit descriptions for the resource descriptor names (_MIN, _LEN, etc.)
120
121AcpiSrc: Fixed several long-standing Linux code translation issues. Argument 
122descriptions in function headers are now translated properly to lower case and 
123underscores. ACPICA BZ 961. Also fixes translation problems such as these: 
124(old -> new)
125  i_aSL -> iASL
126  00-7_f -> 00-7F
127  16_k -> 16K
128  local_fADT -> local_FADT
129  execute_oSI -> execute_OSI
130
131iASL: Fixed a problem where null bytes were inadvertently emitted into some 
132listing files.
133
134iASL: Added the existing debug options to the standard help screen. There are 
135no longer two different help screens. ACPICA BZ 957.
136
137AcpiHelp: Fixed some typos in the various predefined name descriptions. Also 
138expand some of the descriptions where appropriate.
139
140iASL: Fixed the -ot option (display compile times/statistics). Was not working 
141properly for standard output; only worked for the debug file case.
142
143----------------------------------------
14418 May 2012. Summary of changes for version 20120518:
145
146
1471) ACPICA Core Subsystem:
148
149Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is defined 
150to block until asynchronous events such as notifies and GPEs have completed. 
151Within ACPICA, it is only called before a notify or GPE handler is 
152removed/uninstalled. It also may be useful for the host OS within related 
153drivers such as the Embedded Controller driver. See the ACPICA reference for 
154additional information. ACPICA BZ 868.
155
156ACPI Tables: Added a new error message for a possible overflow failure during 
157the conversion of FADT 32-bit legacy register addresses to internal common 64-
158bit GAS structure representation. The GAS has a one-byte "bit length" field, 
159thus limiting the register length to 255 bits. ACPICA BZ 953.
160
161Example Code and Data Size: These are the sizes for the OS-independent 
162acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
163version of the code includes the debug output trace mechanism and has a much 
164larger code and data size.
165
166  Previous Release:
167    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
168    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
169  Current Release:
170    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
171    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
172
173
1742) iASL Compiler/Disassembler and Tools:
175
176iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL macro. 
177This keyword was added late in the ACPI 5.0 release cycle and was not 
178implemented until now.
179
180Disassembler: Added support for Operation Region externals. Adds missing 
181support for operation regions that are defined in another table, and 
182referenced locally via a Field or BankField ASL operator. Now generates the 
183correct External statement.
184
185Disassembler: Several additional fixes for the External() statement generation 
186related to some ASL operators. Also, order the External() statements 
187alphabetically in the disassembler output. Fixes the External() generation for 
188the Create* field, Alias, and Scope operators:
189 1) Create* buffer field operators - fix type mismatch warning on disassembly
190 2) Alias - implement missing External support
191 3) Scope - fix to make sure all necessary externals are emitted.
192
193iASL: Improved pathname support. For include files, merge the prefix pathname 
194with the file pathname and eliminate unnecessary components. Convert 
195backslashes in all pathnames to forward slashes, for readability. Include file 
196pathname changes affect both #include and Include() type operators.
197
198iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the end 
199of a valid line by inserting a newline and then returning the EOF during the 
200next call to GetNextLine. Prevents the line from being ignored due to EOF 
201condition.
202
203iASL: Implemented some changes to enhance the IDE support (-vi option.) Error 
204and Warning messages are now correctly recognized for both the source code 
205browser and the global error and warning counts.
206
207----------------------------------------
20820 April 2012. Summary of changes for version 20120420:
209
210
2111) ACPICA Core Subsystem:
212
213Implemented support for multiple notify handlers. This change adds support to 
214allow multiple system and device notify handlers on Device, Thermal Zone, and 
215Processor objects. This can simplify the host OS notification implementation. 
216Also re-worked and restructured the entire notify support code to simplify 
217handler installation, handler removal, notify event queuing, and notify 
218dispatch to handler(s). Note: there can still only be two global notify 
219handlers - one for system notifies and one for device notifies. There are no 
220changes to the existing handler install/remove interfaces. Lin Ming, Bob 
221Moore, Rafael Wysocki.
222
223Fixed a regression in the package repair code where the object reference 
224count was calculated incorrectly. Regression was introduced in the commit 
225"Support to add Package wrappers".
226
227Fixed a couple possible memory leaks in the AML parser, in the error recovery 
228path. Jesper Juhl, Lin Ming.
229
230Example Code and Data Size: These are the sizes for the OS-independent 
231acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
232debug version of the code includes the debug output trace mechanism and has a 
233much larger code and data size.
234
235  Previous Release:
236    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
237    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
238  Current Release:
239    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
240    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
241
242
2432) iASL Compiler/Disassembler and Tools:
244
245iASL: Fixed a problem with the resource descriptor support where the length 
246of the StartDependentFn and StartDependentFnNoPrio descriptors were not 
247included in cumulative descriptor offset, resulting in incorrect values for 
248resource tags within resource descriptors appearing after a StartDependent* 
249descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
250
251iASL and Preprocessor: Implemented full support for the #line directive to 
252correctly track original source file line numbers through the .i preprocessor 
253output file - for error and warning messages.
254
255iASL: Expand the allowable byte constants for address space IDs. Previously, 
256the allowable range was 0x80-0xFF (user-defined spaces), now the range is 
2570x0A-0xFF to allow for custom and new IDs without changing the compiler.
258
259iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
260
261iASL: Add option to completely disable the preprocessor (-Pn).
262
263iASL: Now emit all error/warning messages to standard error (stderr) by 
264default (instead of the previous stdout).
265
266ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). Update 
267for resource descriptor offset fix above. Update/cleanup error output 
268routines. Enable and send iASL errors/warnings to an error logfile 
269(error.txt). Send all other iASL output to a logfile (compiler.txt). Fixed 
270several extraneous "unrecognized operator" messages.
271
272----------------------------------------
27320 March 2012. Summary of changes for version 20120320:
274
275
2761) ACPICA Core Subsystem:
277
278Enhanced the sleep/wake interfaces to optionally execute the _GTS method 
279(Going To Sleep) and the _BFS method (Back From Sleep). Windows apparently 
280does not execute these methods, and therefore these methods are often 
281untested. It has been seen on some systems where the execution of these 
282methods causes errors and also prevents the machine from entering S5. It is 
283therefore suggested that host operating systems do not execute these methods 
284by default. In the future, perhaps these methods can be optionally executed 
285based on the age of the system and/or what is the newest version of Windows 
286that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState and 
287AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 
288Ming.
289
290Fixed a problem where the length of the local/common FADT was set too early. 
291The local FADT table length cannot be set to the common length until the 
292original length has been examined. There is code that checks the table length 
293and sets various fields appropriately. This can affect older machines with 
294early FADT versions. For example, this can cause inadvertent writes to the 
295CST_CNT register. Julian Anastasov.
296
297Fixed a mapping issue related to a physical table override. Use the deferred 
298mapping mechanism for tables loaded via the physical override OSL interface. 
299This allows for early mapping before the virtual memory manager is available. 
300Thomas Renninger, Bob Moore.
301
302Enhanced the automatic return-object repair code: Repair a common problem with 
303predefined methods that are defined to return a variable-length Package of 
304sub-objects. If there is only one sub-object, some BIOS ASL code mistakenly 
305simply returns the single object instead of a Package with one sub-object. 
306This new support will repair this error by wrapping a Package object around 
307the original object, creating the correct and expected Package with one sub-
308object. Names that can be repaired in this manner include: _ALR, _CSD, _HPX, 
309_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 939.
310
311Changed the exception code returned for invalid ACPI paths passed as 
312parameters to external interfaces such as AcpiEvaluateObject. Was 
313AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
314
315Example Code and Data Size: These are the sizes for the OS-independent 
316acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
317version of the code includes the debug output trace mechanism and has a much 
318larger code and data size.
319
320  Previous Release:
321    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
322    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
323  Current Release:
324    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
325    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
326
327
3282) iASL Compiler/Disassembler and Tools:
329
330iASL: Added the infrastructure and initial implementation of a integrated C-
331like preprocessor. This will simplify BIOS development process by eliminating 
332the need for a separate preprocessing step during builds. On Windows, it also 
333eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 
334features including full #define() macro support are still under development. 
335These preprocessor directives are supported:
336    #define
337    #elif
338    #else
339    #endif
340    #error
341    #if
342    #ifdef
343    #ifndef
344    #include
345    #pragma message
346    #undef
347    #warning
348In addition, these new command line options are supported:
349    -D <symbol> Define symbol for preprocessor use
350    -li         Create preprocessed output file (*.i)
351    -P          Preprocess only and create preprocessor output file (*.i)
352
353Table Compiler: Fixed a problem where the equals operator within an expression 
354did not work properly.
355
356Updated iASL to use the current versions of Bison/Flex. Updated the Windows 
357project file to invoke these tools from the standard location. ACPICA BZ 904. 
358Versions supported:
359    Flex for Windows:  V2.5.4
360    Bison for Windows: V2.4.1
361
362----------------------------------------
36315 February 2012. Summary of changes for version 20120215:
364
365
3661) ACPICA Core Subsystem:
367
368There have been some major changes to the sleep/wake support code, as 
369described below (a - e).
370
371a) The AcpiLeaveSleepState has been split into two interfaces, similar to 
372AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 
373AcpiLeaveSleepStatePrep. This allows the host to perform actions between the 
374time the _BFS method is called and the _WAK method is called. NOTE: all hosts 
375must update their wake/resume code or else sleep/wake will not work properly. 
376Rafael Wysocki.
377
378b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the _WAK 
379method. Some machines require that the GPEs are enabled before the _WAK method 
380is executed. Thomas Renninger.
381
382c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) bit. 
383Some BIOS code assumes that WAK_STS will be cleared on resume and use it to 
384determine whether the system is rebooting or resuming. Matthew Garrett.
385
386d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From Sleep) to 
387match the ACPI specification requirement. Rafael Wysocki.
388
389e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 
390registers within the V5 FADT. This support adds two new files: 
391hardware/hwesleep.c implements the support for the new registers. Moved all 
392sleep/wake external interfaces to hardware/hwxfsleep.c.
393
394
395Added a new OSL interface for ACPI table overrides, 
396AcpiOsPhysicalTableOverride. This interface allows the host to override a 
397table via a physical address, instead of the logical address required by 
398AcpiOsTableOverride. This simplifies the host implementation. Initial 
399implementation by Thomas Renninger. The ACPICA implementation creates a single 
400shared function for table overrides that attempts both a logical and a 
401physical override.
402
403Expanded the OSL memory read/write interfaces to 64-bit data 
404(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 
405transfer support for GAS register structures passed to AcpiRead and AcpiWrite.
406
407Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a custom 
408build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) model. 
409See the ACPICA reference for details. ACPICA BZ 942. This option removes about 
41010% of the code and 5% of the static data, and the following hardware ACPI 
411features become unavailable:
412    PM Event and Control registers
413    SCI interrupt (and handler)
414    Fixed Events
415    General Purpose Events (GPEs)
416    Global Lock
417    ACPI PM timer
418    FACS table (Waking vectors and Global Lock)
419
420Updated the unix tarball directory structure to match the ACPICA git source 
421tree. This ensures that the generic unix makefiles work properly (in 
422generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ 867.
423
424Updated the return value of the _REV predefined method to integer value 5 to 
425reflect ACPI 5.0 support.
426
427Moved the external ACPI PM timer interface prototypes to the public acpixf.h 
428file where they belong.
429
430Example Code and Data Size: These are the sizes for the OS-independent 
431acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
432version of the code includes the debug output trace mechanism and has a much 
433larger code and data size.
434
435  Previous Release:
436    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
437    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
438  Current Release:
439    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
440    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
441
442
4432) iASL Compiler/Disassembler and Tools:
444
445Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 
446descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 
447incorrectly displayed.
448
449AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 
450specification.
451
452----------------------------------------
45311 January 2012. Summary of changes for version 20120111:
454
455
4561) ACPICA Core Subsystem:
457
458Implemented a new mechanism to allow host device drivers to check for address 
459range conflicts with ACPI Operation Regions. Both SystemMemory and SystemIO 
460address spaces are supported. A new external interface, AcpiCheckAddressRange, 
461allows drivers to check an address range against the ACPI namespace. See the 
462ACPICA reference for additional details. Adds one new file, 
463utilities/utaddress.c. Lin Ming, Bob Moore.
464
465Fixed several issues with the ACPI 5.0 FADT support: Add the sleep Control and 
466Status registers, update the ACPI 5.0 flags, and update internal data 
467structures to handle an FADT larger than 256 bytes. The size of the ACPI 5.0 
468FADT is 268 bytes.
469
470Updated all ACPICA copyrights and signons to 2012. Added the 2012 copyright to 
471all module headers and signons, including the standard Linux header. This 
472affects virtually every file in the ACPICA core subsystem, iASL compiler, and 
473all ACPICA utilities.
474
475Example Code and Data Size: These are the sizes for the OS-independent 
476acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
477version of the code includes the debug output trace mechanism and has a much 
478larger code and data size.
479
480  Previous Release:
481    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
482    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
483  Current Release:
484    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
485    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
486
487
4882) iASL Compiler/Disassembler and Tools:
489
490Disassembler: fixed a problem with the automatic resource tag generation 
491support. Fixes a problem where the resource tags are inadvertently not 
492constructed if the table being disassembled contains external references to 
493control methods. Moved the actual construction of the tags to after the final 
494namespace is constructed (after 2nd parse is invoked due to external control 
495method references.) ACPICA BZ 941.
496
497Table Compiler: Make all "generic" operators caseless. These are the operators 
498like UINT8, String, etc. Making these caseless improves ease-of-use. ACPICA BZ 
499934.
500
501----------------------------------------
50223 November 2011. Summary of changes for version 20111123:
503
5040) ACPI 5.0 Support:
505
506This release contains full support for the ACPI 5.0 specification, as 
507summarized below.
508
509Reduced Hardware Support:
510-------------------------
511
512This support allows for ACPI systems without the usual ACPI hardware. This 
513support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA will 
514not attempt to initialize or use any of the usual ACPI hardware. Note, when 
515this flag is set, all of the following ACPI hardware is assumed to be not 
516present and is not initialized or accessed:
517
518    General Purpose Events (GPEs)
519    Fixed Events (PM1a/PM1b and PM Control)
520    Power Management Timer and Console Buttons (power/sleep)
521    Real-time Clock Alarm
522    Global Lock
523    System Control Interrupt (SCI)
524    The FACS is assumed to be non-existent
525
526ACPI Tables:
527------------
528
529All new tables and updates to existing tables are fully supported in the 
530ACPICA headers (for use by device drivers), the disassembler, and the iASL 
531Data Table Compiler. ACPI 5.0 defines these new tables:
532
533    BGRT        /* Boot Graphics Resource Table */
534    DRTM        /* Dynamic Root of Trust for Measurement table */
535    FPDT        /* Firmware Performance Data Table */
536    GTDT        /* Generic Timer Description Table */
537    MPST        /* Memory Power State Table */
538    PCCT        /* Platform Communications Channel Table */
539    PMTT        /* Platform Memory Topology Table */
540    RASF        /* RAS Feature table */
541
542Operation Regions/SpaceIDs:
543---------------------------
544
545All new operation regions are fully supported by the iASL compiler, the 
546disassembler, and the ACPICA runtime code (for dispatch to region handlers.) 
547The new operation region Space IDs are:
548
549    GeneralPurposeIo
550    GenericSerialBus
551
552Resource Descriptors:
553---------------------
554
555All new ASL resource descriptors are fully supported by the iASL compiler, the 
556ASL/AML disassembler, and the ACPICA runtime Resource Manager code (including 
557all new predefined resource tags). New descriptors are:
558
559    FixedDma
560    GpioIo
561    GpioInt
562    I2cSerialBus
563    SpiSerialBus
564    UartSerialBus
565
566ASL/AML Operators, New and Modified:
567------------------------------------
568
569One new operator is added, the Connection operator, which is used to associate 
570a GeneralPurposeIo or GenericSerialBus resource descriptor with individual 
571field objects within an operation region. Several new protocols are associated 
572with the AccessAs operator. All are fully supported by the iASL compiler, 
573disassembler, and runtime ACPICA AML interpreter:
574
575    Connection                      // Declare Field Connection attributes
576    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
577    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes Protocol
578    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
579    RawDataBuffer                       // Data type for Vendor Data fields
580
581Predefined ASL/AML Objects:
582---------------------------
583
584All new predefined objects/control-methods are supported by the iASL compiler 
585and the ACPICA runtime validation/repair (arguments and return values.) New 
586predefined names include the following:
587
588Standard Predefined Names (Objects or Control Methods):
589    _AEI, _CLS, _CPC, _CWS, _DEP,
590    _DLM, _EVT, _GCP, _CRT, _GWS,
591    _HRV, _PRE, _PSE, _SRT, _SUB.
592
593Resource Tags (Names used to access individual fields within resource 
594descriptors):
595    _DBT, _DPL, _DRS, _END, _FLC,
596    _IOR, _LIN, _MOD, _PAR, _PHA,
597    _PIN, _PPI, _POL, _RXL, _SLV,
598    _SPE, _STB, _TXL, _VEN.
599
600ACPICA External Interfaces:
601---------------------------
602
603Several new interfaces have been defined for use by ACPI-related device 
604drivers and other host OS services:
605
606AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS to 
607acquire and release AML mutexes that are defined in the DSDT/SSDT tables 
608provided by the BIOS. They are intended to be used in conjunction with the 
609ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 
610mutual exclusion with the AML code/interpreter.
611
612AcpiGetEventResources: Returns the (formatted) resource descriptors as defined 
613by the ACPI 5.0 _AEI object (ACPI Event Information).  This object provides 
614resource descriptors associated with hardware-reduced platform events, similar 
615to the AcpiGetCurrentResources interface.
616
617Operation Region Handlers: For General Purpose IO and Generic Serial Bus 
618operation regions, information about the Connection() object and any optional 
619length information is passed to the region handler within the Context 
620parameter.
621
622AcpiBufferToResource: This interface converts a raw AML buffer containing a 
623resource template or resource descriptor to the ACPI_RESOURCE internal format 
624suitable for use by device drivers. Can be used by an operation region handler 
625to convert the Connection() buffer object into a ACPI_RESOURCE.
626
627Miscellaneous/Tools/TestSuites: 
628-------------------------------
629
630Support for extended _HID names (Four alpha characters instead of three).
631Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
632Support for ACPI 5.0 features in the ASLTS test suite.
633Fully updated documentation (ACPICA and iASL reference documents.)
634
635ACPI Table Definition Language:
636-------------------------------
637
638Support for this language was implemented and released as a subsystem of the 
639iASL compiler in 2010. (See the iASL compiler User Guide.)
640
641
642Non-ACPI 5.0 changes for this release:
643--------------------------------------
644
6451) ACPICA Core Subsystem:
646
647Fix a problem with operation region declarations where a failure can occur if 
648the region name and an argument that evaluates to an object (such as the 
649region address) are in different namespace scopes. Lin Ming, ACPICA BZ 937.
650
651Do not abort an ACPI table load if an invalid space ID is found within. This 
652will be caught later if the offending method is executed. ACPICA BZ 925.
653
654Fixed an issue with the FFixedHW space ID where the ID was not always 
655recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
656
657Fixed a problem with the 32-bit generation of the unix-specific OSL 
658(osunixxf.c). Lin Ming, ACPICA BZ 936.
659
660Several changes made to enable generation with the GCC 4.6 compiler. ACPICA BZ 
661935.
662
663New error messages: Unsupported I/O requests (not 8/16/32 bit), and Index/Bank 
664field registers out-of-range.
665
6662) iASL Compiler/Disassembler and Tools:
667
668iASL: Implemented the __PATH__ operator, which returns the full pathname of 
669the current source file.
670
671AcpiHelp: Automatically display expanded keyword information for all ASL 
672operators.
673
674Debugger: Add "Template" command to disassemble/dump resource template 
675buffers.
676
677Added a new master script to generate and execute the ASLTS test suite. 
678Automatically handles 32- and 64-bit generation. See tests/aslts.sh
679
680iASL: Fix problem with listing generation during processing of the Switch() 
681operator where AML listing was disabled until the entire Switch block was 
682completed.
683
684iASL: Improve support for semicolon statement terminators. Fix "invalid 
685character" message for some cases when the semicolon is used. Semicolons are 
686now allowed after every <Term> grammar element. ACPICA BZ 927.
687
688iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 923.
689
690Disassembler: Fix problem with disassembly of the DataTableRegion operator 
691where an inadvertent "Unhandled deferred opcode" message could be generated.
692
6933) Example Code and Data Size
694
695These are the sizes for the OS-independent acpica.lib produced by the 
696Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
697includes the debug output trace mechanism and has a much larger code and data 
698size.
699
700  Previous Release:
701    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
702    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
703  Current Release:
704    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
705    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
706
707----------------------------------------
70822 September 2011. Summary of changes for version 20110922:
709
7100) ACPI 5.0 News:
711
712Support for ACPI 5.0 in ACPICA has been underway for several months and will 
713be released at the same time that ACPI 5.0 is officially released.
714
715The ACPI 5.0 specification is on track for release in the next few months.
716 
7171) ACPICA Core Subsystem:
718
719Fixed a problem where the maximum sleep time for the Sleep() operator was 
720intended to be limited to two seconds, but was inadvertently limited to 20 
721seconds instead.
722
723Linux and Unix makefiles: Added header file dependencies to ensure correct 
724generation of ACPICA core code and utilities. Also simplified the makefiles 
725considerably through the use of the vpath variable to specify search paths. 
726ACPICA BZ 924.
727
7282) iASL Compiler/Disassembler and Tools:
729
730iASL: Implemented support to check the access length for all fields created to 
731access named Resource Descriptor fields. For example, if a resource field is 
732defined to be two bits, a warning is issued if a CreateXxxxField() is used 
733with an incorrect bit length. This is implemented for all current resource 
734descriptor names. ACPICA BZ 930.
735  
736Disassembler: Fixed a byte ordering problem with the output of 24-bit and 56-
737bit integers.
738
739iASL: Fixed a couple of issues associated with variable-length package 
740objects. 1) properly handle constants like One, Ones, Zero -- do not make a 
741VAR_PACKAGE when these are used as a package length. 2) Allow the VAR_PACKAGE 
742opcode (in addition to PACKAGE) when validating object types for predefined 
743names.
744
745iASL: Emit statistics for all output files (instead of just the ASL input and 
746AML output). Includes listings, hex files, etc.
747
748iASL: Added -G option to the table compiler to allow the compilation of custom 
749ACPI tables. The only part of a table that is required is the standard 36-byte 
750ACPI header.
751
752AcpiXtract: Ported to the standard ACPICA environment (with ACPICA headers), 
753which also adds correct 64-bit support. Also, now all output filenames are 
754completely lower case.
755
756AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 
757loading table files. A warning is issued for any such tables. The only 
758exception is an FADT. This also fixes a possible fault when attempting to load 
759non-AML tables. ACPICA BZ 932.
760
761AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where a 
762missing table terminator could cause a fault when using the -p option.
763
764AcpiSrc: Fixed a possible divide-by-zero fault when generating file 
765statistics.
766
7673) Example Code and Data Size
768
769These are the sizes for the OS-independent acpica.lib produced by the 
770Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
771includes the debug output trace mechanism and has a much larger code and data 
772size.
773
774  Previous Release (VC 9.0):
775    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
776    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
777  Current Release (VC 9.0):
778    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
779    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
780
781
782----------------------------------------
78323 June 2011. Summary of changes for version 20110623:
784
7851) ACPI CA Core Subsystem:
786
787Updated the predefined name repair mechanism to not attempt repair of a _TSS 
788return object if a _PSS object is present. We can only sort the _TSS return 
789package if there is no _PSS within the same scope. This is because if _PSS is 
790present, the ACPI specification dictates that the _TSS Power Dissipation field 
791is to be ignored, and therefore some BIOSs leave garbage values in the _TSS 
792Power field(s). In this case, it is best to just return the _TSS package as-
793is. Reported by, and fixed with assistance from Fenghua Yu.
794
795Added an option to globally disable the control method return value validation 
796and repair. This runtime option can be used to disable return value repair if 
797this is causing a problem on a particular machine. Also added an option to 
798AcpiExec (-dr) to set this disable flag.
799
800All makefiles and project files: Major changes to improve generation of ACPICA 
801tools. ACPICA BZ 912:
802    Reduce default optimization levels to improve compatibility
803    For Linux, add strict-aliasing=0 for gcc 4
804    Cleanup and simplify use of command line defines
805    Cleanup multithread library support
806    Improve usage messages
807
808Linux-specific header: update handling of THREAD_ID and pthread. For the 32-
809bit case, improve casting to eliminate possible warnings, especially with the 
810acpica tools.
811
812Example Code and Data Size: These are the sizes for the OS-independent 
813acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
814version of the code includes the debug output trace mechanism and has a much 
815larger code and data size.
816
817  Previous Release (VC 9.0):
818    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
819    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
820  Current Release (VC 9.0):
821    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
822    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
823
8242) iASL Compiler/Disassembler and Tools:
825
826With this release, a new utility named "acpihelp" has been added to the ACPICA 
827package. This utility summarizes the ACPI specification chapters for the ASL 
828and AML languages. It generates under Linux/Unix as well as Windows, and 
829provides the following functionality:
830    Find/display ASL operator(s) -- with description and syntax.
831    Find/display ASL keyword(s) -- with exact spelling and descriptions.
832    Find/display ACPI predefined name(s) -- with description, number
833        of arguments, and the return value data type.
834    Find/display AML opcode name(s) -- with opcode, arguments, and grammar.
835    Decode/display AML opcode -- with opcode name, arguments, and grammar.
836
837Service Layers: Make multi-thread support configurable. Conditionally compile 
838the multi-thread support so that threading libraries will not be linked if not 
839necessary. The only tool that requires multi-thread support is AcpiExec.
840
841iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions of 
842Bison appear to want the interface to yyerror to be a const char * (or at 
843least this is a problem when generating iASL on some systems.) ACPICA BZ 923 
844Pierre Lejeune.
845
846Tools: Fix for systems where O_BINARY is not defined. Only used for Windows 
847versions of the tools.
848
849----------------------------------------
85027 May 2011. Summary of changes for version 20110527:
851
8521) ACPI CA Core Subsystem:
853
854ASL Load() operator: Reinstate most restrictions on the incoming ACPI table 
855signature. Now, only allow SSDT, OEMx, and a null signature. History:
856    1) Originally, we checked the table signature for "SSDT" or "PSDT".
857       (PSDT is now obsolete.)
858    2) We added support for OEMx tables, signature "OEM" plus a fourth
859       "don't care" character.
860    3) Valid tables were encountered with a null signature, so we just
861       gave up on validating the signature, (05/2008).
862    4) We encountered non-AML tables such as the MADT, which caused
863       interpreter errors and kernel faults. So now, we once again allow
864       only SSDT, OEMx, and now, also a null signature. (05/2011).
865
866Added the missing _TDL predefined name to the global name list in order to 
867enable validation. Affects both the core ACPICA code and the iASL compiler.
868
869Example Code and Data Size: These are the sizes for the OS-independent 
870acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
871version of the code includes the debug output trace mechanism and has a much 
872larger code and data size.
873
874  Previous Release (VC 9.0):
875    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
876    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
877  Current Release (VC 9.0):
878    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
879    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
880
8812) iASL Compiler/Disassembler and Tools:
882
883Debugger/AcpiExec: Implemented support for "complex" method arguments on the 
884debugger command line. This adds support beyond simple integers -- including 
885Strings, Buffers, and Packages. Includes support for nested packages. 
886Increased the default command line buffer size to accommodate these arguments. 
887See the ACPICA reference for details and syntax. ACPICA BZ 917.
888 
889Debugger/AcpiExec: Implemented support for "default" method arguments for the 
890Execute/Debug command. Now, the debugger will always invoke a control method 
891with the required number of arguments -- even if the command line specifies 
892none or insufficient arguments. It uses default integer values for any missing 
893arguments. Also fixes a bug where only six method arguments maximum were 
894supported instead of the required seven.
895
896Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine and 
897also return status in order to prevent buffer overruns. See the ACPICA 
898reference for details and syntax. ACPICA BZ 921
899
900iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 
901makefiles to simplify support for the two different but similar parser 
902generators, bison and yacc.
903
904Updated the generic unix makefile for gcc 4. The default gcc version is now 
905expected to be 4 or greater, since options specific to gcc 4 are used.
906
907----------------------------------------
90813 April 2011. Summary of changes for version 20110413:
909
9101) ACPI CA Core Subsystem:
911
912Implemented support to execute a so-called "orphan" _REG method under the EC 
913device. This change will force the execution of a _REG method underneath the 
914EC 
915device even if there is no corresponding operation region of type 
916EmbeddedControl. Fixes a problem seen on some machines and apparently is 
917compatible with Windows behavior. ACPICA BZ 875.
918
919Added more predefined methods that are eligible for automatic NULL package 
920element removal. This change adds another group of predefined names to the 
921list 
922of names that can be repaired by having NULL package elements dynamically 
923removed. This group are those methods that return a single variable-length 
924package containing simple data types such as integers, buffers, strings. This 
925includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, _PSL, 
926_Sx, 
927and _TZD. ACPICA BZ 914.
928
929Split and segregated all internal global lock functions to a new file, 
930evglock.c.
931
932Updated internal address SpaceID for DataTable regions. Moved this internal 
933space 
934id in preparation for ACPI 5.0 changes that will include some new space IDs. 
935This 
936change should not affect user/host code.
937
938Example Code and Data Size: These are the sizes for the OS-independent 
939acpica.lib 
940produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of 
941the code includes the debug output trace mechanism and has a much larger code 
942and 
943data size.
944
945  Previous Release (VC 9.0):
946    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
947    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
948  Current Release (VC 9.0):
949    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
950    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
951
9522) iASL Compiler/Disassembler and Tools:
953
954iASL/DTC: Major update for new grammar features. Allow generic data types in 
955custom ACPI tables. Field names are now optional. Any line can be split to 
956multiple lines using the continuation char (\). Large buffers now use line-
957continuation character(s) and no colon on the continuation lines. See the 
958grammar 
959update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob Moore.
960
961iASL: Mark ASL "Return()" and the simple "Return" as "Null" return statements. 
962Since the parser stuffs a "zero" as the return value for these statements (due 
963to 
964the underlying AML grammar), they were seen as "return with value" by the iASL 
965semantic checking. They are now seen correctly as "null" return statements.
966
967iASL: Check if a_REG declaration has a corresponding Operation Region. Adds a 
968check for each _REG to ensure that there is in fact a corresponding operation 
969region declaration in the same scope. If not, the _REG method is not very 
970useful 
971since it probably won't be executed. ACPICA BZ 915.
972
973iASL/DTC: Finish support for expression evaluation. Added a new expression 
974parser 
975that implements c-style operator precedence and parenthesization. ACPICA 
976bugzilla 
977908.
978
979Disassembler/DTC: Remove support for () and <> style comments in data tables. 
980Now 
981that DTC has full expression support, we don't want to have comment strings 
982that 
983start with a parentheses or a less-than symbol. Now, only the standard /* and 
984// 
985comments are supported, as well as the bracket [] comments.
986
987AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 
988"unusual" 
989headers in the acpidump file. Update the header validation to support these 
990tables. Problem introduced in previous AcpiXtract version in the change to 
991support "wrong checksum" error messages emitted by acpidump utility.
992
993iASL: Add a * option to generate all template files (as a synonym for ALL) as 
994in 
995"iasl -T *" or "iasl -T ALL".
996
997iASL/DTC: Do not abort compiler on fatal errors. We do not want to completely 
998abort the compiler on "fatal" errors, simply should abort the current compile. 
999This allows multiple compiles with a single (possibly wildcard) compiler 
1000invocation.
1001
1002----------------------------------------
100316 March 2011. Summary of changes for version 20110316:
1004
10051) ACPI CA Core Subsystem:
1006
1007Fixed a problem caused by a _PRW method appearing at the namespace root scope 
1008during the setup of wake GPEs. A fault could occur if a _PRW directly under 
1009the 
1010root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
1011
1012Implemented support for "spurious" Global Lock interrupts. On some systems, a 
1013global lock interrupt can occur without the pending flag being set. Upon a GL 
1014interrupt, we now ensure that a thread is actually waiting for the lock before 
1015signaling GL availability. Rafael Wysocki, Bob Moore.
1016
1017Example Code and Data Size: These are the sizes for the OS-independent 
1018acpica.lib 
1019produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of 
1020the code includes the debug output trace mechanism and has a much larger code 
1021and 
1022data size.
1023
1024  Previous Release (VC 9.0):
1025    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
1026    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
1027  Current Release (VC 9.0):
1028    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
1029    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
1030
10312) iASL Compiler/Disassembler and Tools:
1032
1033Implemented full support for the "SLIC" ACPI table. Includes support in the 
1034header files, disassembler, table compiler, and template generator. Bob Moore, 
1035Lin Ming.
1036
1037AcpiXtract: Correctly handle embedded comments and messages from AcpiDump. 
1038Apparently some or all versions of acpidump will occasionally emit a comment 
1039like 
1040"Wrong checksum", etc., into the dump file. This was causing problems for 
1041AcpiXtract. ACPICA BZ 905.
1042
1043iASL: Fix the Linux makefile by removing an inadvertent double file inclusion. 
1044ACPICA BZ 913.
1045
1046AcpiExec: Update installation of operation region handlers. Install one 
1047handler 
1048for a user-defined address space. This is used by the ASL test suite (ASLTS).
1049
1050----------------------------------------
105111 February 2011. Summary of changes for version 20110211:
1052
10531) ACPI CA Core Subsystem:
1054
1055Added a mechanism to defer _REG methods for some early-installed handlers. 
1056Most user handlers should be installed before call to AcpiEnableSubsystem. 
1057However, Event handlers and region handlers should be installed after 
1058AcpiInitializeObjects. Override handlers for the "default" regions should be 
1059installed early, however. This change executes all _REG methods for the 
1060default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 
1061chicken/egg issues between them. ACPICA BZ 848.
1062
1063Implemented an optimization for GPE detection. This optimization will simply 
1064ignore GPE registers that contain no enabled GPEs -- there is no need to 
1065read the register since this information is available internally. This 
1066becomes more important on machines with a large GPE space. ACPICA bugzilla 
1067884. Lin Ming. Suggestion from Joe Liu.
1068
1069Removed all use of the highly unreliable FADT revision field. The revision 
1070number in the FADT has been found to be completely unreliable and cannot be 
1071trusted. Only the actual table length can be used to infer the version. This 
1072change updates the ACPICA core and the disassembler so that both no longer 
1073even look at the FADT version and instead depend solely upon the FADT 
1074length.
1075
1076Fix an unresolved name issue for the no-debug and no-error-message source 
1077generation cases. The _AcpiModuleName was left undefined in these cases, but 
1078it is actually needed as a parameter to some interfaces. Define 
1079_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
1080
1081Split several large files (makefiles and project files updated)
1082  utglobal.c   -> utdecode.c
1083  dbcomds.c    -> dbmethod.c dbnames.c
1084  dsopcode.c   -> dsargs.c dscontrol.c
1085  dsload.c     -> dsload2.c
1086  aslanalyze.c -> aslbtypes.c aslwalks.c
1087
1088Example Code and Data Size: These are the sizes for the OS-independent 
1089acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1090debug version of the code includes the debug output trace mechanism and has 
1091a much larger code and data size.
1092
1093  Previous Release (VC 9.0):
1094    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
1095    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
1096  Current Release (VC 9.0):
1097    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
1098    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
1099
11002) iASL Compiler/Disassembler and Tools:
1101
1102iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 
1103These are useful C-style macros with the standard definitions. ACPICA 
1104bugzilla 898.
1105
1106iASL/DTC: Added support for integer expressions and labels. Support for full 
1107expressions for all integer fields in all ACPI tables. Support for labels in 
1108"generic" portions of tables such as UEFI. See the iASL reference manual.
1109
1110Debugger: Added a command to display the status of global handlers. The 
1111"handlers" command will display op region, fixed event, and miscellaneous 
1112global handlers. installation status -- and for op regions, whether default 
1113or user-installed handler will be used.
1114
1115iASL: Warn if reserved method incorrectly returns a value. Many predefined 
1116names are defined such that they do not return a value. If implemented as a 
1117method, issue a warning if such a name explicitly returns a value. ACPICA 
1118Bugzilla 855.
1119
1120iASL: Added detection of GPE method name conflicts. Detects a conflict where 
1121there are two GPE methods of the form _Lxy and _Exy in the same scope. (For 
1122example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
1123
1124iASL/DTC: Fixed a couple input scanner issues with comments and line 
1125numbers. Comment remover could get confused and miss a comment ending. Fixed 
1126a problem with line counter maintenance.
1127
1128iASL/DTC: Reduced the severity of some errors from fatal to error. There is 
1129no need to abort on simple errors within a field definition.
1130
1131Debugger: Simplified the output of the help command. All help output now in 
1132a single screen, instead of help subcommands. ACPICA Bugzilla 897.
1133
1134----------------------------------------
113512 January 2011. Summary of changes for version 20110112:
1136
11371) ACPI CA Core Subsystem:
1138
1139Fixed a race condition between method execution and namespace walks that can 
1140possibly cause a fault. The problem was apparently introduced in version 
114120100528 as a result of a performance optimization that reduces the number of 
1142namespace walks upon method exit by using the delete_namespace_subtree 
1143function instead of the delete_namespace_by_owner function used previously. 
1144Bug is a missing namespace lock in the delete_namespace_subtree function. 
1145dana.myers@oracle.com
1146
1147Fixed several issues and a possible fault with the automatic "serialized" 
1148method support. History: This support changes a method to "serialized" on the 
1149fly if the method generates an AE_ALREADY_EXISTS error, indicating the 
1150possibility that it cannot handle reentrancy. This fix repairs a couple of 
1151issues seen in the field, especially on machines with many cores:
1152
1153    1) Delete method children only upon the exit of the last thread,
1154       so as to not delete objects out from under other running threads
1155      (and possibly causing a fault.)
1156    2) Set the "serialized" bit for the method only upon the exit of the
1157       Last thread, so as to not cause deadlock when running threads
1158       attempt to exit.
1159    3) Cleanup the use of the AML "MethodFlags" and internal method flags
1160       so that there is no longer any confusion between the two.
1161
1162    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
1163
1164Debugger: Now lock the namespace for duration of a namespace dump. Prevents 
1165issues if the namespace is changing dynamically underneath the debugger. 
1166Especially affects temporary namespace nodes, since the debugger displays 
1167these also.
1168
1169Updated the ordering of include files. The ACPICA headers should appear 
1170before any compiler-specific headers (stdio.h, etc.) so that acenv.h can set 
1171any necessary compiler-specific defines, etc. Affects the ACPI-related tools 
1172and utilities.
1173
1174Updated all ACPICA copyrights and signons to 2011. Added the 2011 copyright 
1175to all module headers and signons, including the Linux header. This affects 
1176virtually every file in the ACPICA core subsystem, iASL compiler, and all 
1177utilities.
1178
1179Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 
1180project files for VC++ 6.0 are now obsolete. New project files can be found 
1181under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 
1182details.
1183
1184Example Code and Data Size: These are the sizes for the OS-independent 
1185acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1186debug version of the code includes the debug output trace mechanism and has a 
1187much larger code and data size.
1188
1189  Previous Release (VC 6.0):
1190    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
1191    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
1192  Current Release (VC 9.0):
1193    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
1194    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
1195
11962) iASL Compiler/Disassembler and Tools:
1197
1198iASL: Added generic data types to the Data Table compiler. Add "generic" data 
1199types such as UINT32, String, Unicode, etc., to simplify the generation of 
1200platform-defined tables such as UEFI. Lin Ming.
1201
1202iASL: Added listing support for the Data Table Compiler. Adds listing support 
1203(-l) to display actual binary output for each line of input code.
1204
1205----------------------------------------
120609 December 2010. Summary of changes for version 20101209:
1207
12081) ACPI CA Core Subsystem:
1209
1210Completed the major overhaul of the GPE support code that was begun in July 
12112010. Major features include: removal of _PRW execution in ACPICA (host 
1212executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 
1213changes to existing interfaces, simplification of GPE handler operation, and 
1214a handful of new interfaces:
1215
1216    AcpiUpdateAllGpes
1217    AcpiFinishGpe
1218    AcpiSetupGpeForWake
1219    AcpiSetGpeWakeMask
1220    One new file, evxfgpe.c to consolidate all external GPE interfaces.
1221
1222See the ACPICA Programmer Reference for full details and programming 
1223information. See the new section 4.4 "General Purpose Event (GPE) Support" 
1224for a full overview, and section 8.7 "ACPI General Purpose Event Management" 
1225for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin Ming, 
1226Bob Moore, Rafael Wysocki.
1227
1228Implemented a new GPE feature for Windows compatibility, the "Implicit Wake 
1229GPE Notify". This feature will automatically issue a Notify(2) on a device 
1230when a Wake GPE is received if there is no corresponding GPE method or 
1231handler. ACPICA BZ 870.
1232
1233Fixed a problem with the Scope() operator during table parse and load phase. 
1234During load phase (table load or method execution), the scope operator should 
1235not enter the target into the namespace. Instead, it should open a new scope 
1236at the target location. Linux BZ 19462, ACPICA BZ 882.
1237
1238Example Code and Data Size: These are the sizes for the OS-independent 
1239acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1240debug version of the code includes the debug output trace mechanism and has a 
1241much larger code and data size.
1242
1243  Previous Release:
1244    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
1245    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
1246  Current Release:
1247    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
1248    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
1249
12502) iASL Compiler/Disassembler and Tools:
1251
1252iASL: Relax the alphanumeric restriction on _CID strings. These strings are 
1253"bus-specific" per the ACPI specification, and therefore any characters are 
1254acceptable. The only checks that can be performed are for a null string and 
1255perhaps for a leading asterisk. ACPICA BZ 886.
1256
1257iASL: Fixed a problem where a syntax error that caused a premature EOF 
1258condition on the source file emitted a very confusing error message. The 
1259premature EOF is now detected correctly. ACPICA BZ 891.
1260
1261Disassembler: Decode the AccessSize within a Generic Address Structure (byte 
1262access, word access, etc.) Note, this field does not allow arbitrary bit 
1263access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
1264
1265New: AcpiNames utility - Example namespace dump utility. Shows an example of 
1266ACPICA configuration for a minimal namespace dump utility. Uses table and 
1267namespace managers, but no AML interpreter. Does not add any functionality 
1268over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 
1269partition and configure ACPICA. ACPICA BZ 883.
1270
1271AML Debugger: Increased the debugger buffer size for method return objects. 
1272Was 4K, increased to 16K. Also enhanced error messages for debugger method 
1273execution, including the buffer overflow case.
1274
1275----------------------------------------
127613 October 2010. Summary of changes for version 20101013:
1277
12781) ACPI CA Core Subsystem:
1279
1280Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, now 
1281clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 
1282HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
1283
1284Changed the type of the predefined namespace object _TZ from ThermalZone to 
1285Device. This was found to be confusing to the host software that processes 
1286the various thermal zones, since _TZ is not really a ThermalZone. However, a 
1287Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 
1288Zhang.
1289
1290Added Windows Vista SP2 to the list of supported _OSI strings. The actual 
1291string is "Windows 2006 SP2".
1292
1293Eliminated duplicate code in AcpiUtExecute* functions. Now that the nsrepair 
1294code automatically repairs _HID-related strings, this type of code is no 
1295longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 878.
1296
1297Example Code and Data Size: These are the sizes for the OS-independent 
1298acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1299debug version of the code includes the debug output trace mechanism and has a 
1300much larger code and data size.
1301
1302  Previous Release:
1303    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
1304    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
1305  Current Release:
1306    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
1307    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
1308
13092) iASL Compiler/Disassembler and Tools:
1310
1311iASL: Implemented additional compile-time validation for _HID strings. The 
1312non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the length of 
1313the string must be exactly seven or eight characters. For both _HID and _CID 
1314strings, all characters must be alphanumeric. ACPICA BZ 874.
1315
1316iASL: Allow certain "null" resource descriptors. Some BIOS code creates 
1317descriptors that are mostly or all zeros, with the expectation that they will 
1318be filled in at runtime. iASL now allows this as long as there is a "resource 
1319tag" (name) associated with the descriptor, which gives the ASL a handle 
1320needed to modify the descriptor. ACPICA BZ 873.
1321
1322Added single-thread support to the generic Unix application OSL. Primarily 
1323for iASL support, this change removes the use of semaphores in the single-
1324threaded ACPICA tools/applications - increasing performance. The 
1325_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 
1326option. ACPICA BZ 879.
1327
1328AcpiExec: several fixes for the 64-bit version. Adds XSDT support and support 
1329for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
1330
1331iASL: Moved all compiler messages to a new file, aslmessages.h.
1332
1333----------------------------------------
133415 September 2010. Summary of changes for version 20100915:
1335
13361) ACPI CA Core Subsystem:
1337
1338Removed the AcpiOsDerivePciId OSL interface. The various host implementations 
1339of this function were not OS-dependent and are now obsolete and can be 
1340removed from all host OSLs. This function has been replaced by 
1341AcpiHwDerivePciId, which is now part of the ACPICA core code. 
1342AcpiHwDerivePciId has been implemented without recursion. Adds one new 
1343module, hwpci.c. ACPICA BZ 857.
1344
1345Implemented a dynamic repair for _HID and _CID strings. The following 
1346problems are now repaired at runtime: 1) Remove a leading asterisk in the 
1347string, and 2) the entire string is uppercased. Both repairs are in 
1348accordance with the ACPI specification and will simplify host driver code. 
1349ACPICA BZ 871.
1350
1351The ACPI_THREAD_ID type is no longer configurable, internally it is now 
1352always UINT64. This simplifies the ACPICA code, especially any printf output. 
1353UINT64 is the only common data type for all thread_id types across all 
1354operating systems. It is now up to the host OSL to cast the native thread_id 
1355type to UINT64 before returning the value to ACPICA (via AcpiOsGetThreadId). 
1356Lin Ming, Bob Moore.
1357
1358Added the ACPI_INLINE type to enhance the ACPICA configuration. The "inline" 
1359keyword is not standard across compilers, and this type allows inline to be 
1360configured on a per-compiler basis. Lin Ming.
1361
1362Made the system global AcpiGbl_SystemAwakeAndRunning publically available. 
1363Added an extern for this boolean in acpixf.h. Some hosts utilize this value 
1364during suspend/restore operations. ACPICA BZ 869.
1365
1366All code that implements error/warning messages with the "ACPI:" prefix has 
1367been moved to a new module, utxferror.c.
1368
1369The UINT64_OVERLAY was moved to utmath.c, which is the only module where it 
1370is used. ACPICA BZ 829. Lin Ming, Bob Moore.
1371
1372Example Code and Data Size: These are the sizes for the OS-independent 
1373acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1374debug version of the code includes the debug output trace mechanism and has a 
1375much larger code and data size.
1376
1377  Previous Release:
1378    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
1379    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
1380  Current Release:
1381    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
1382    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
1383
13842) iASL Compiler/Disassembler and Tools:
1385
1386iASL/Disassembler: Write ACPI errors to stderr instead of the output file. 
1387This keeps the output files free of random error messages that may originate 
1388from within the namespace/interpreter code. Used this opportunity to merge 
1389all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 
1390866. Lin Ming, Bob Moore.
1391
1392Tools: update some printfs for ansi warnings on size_t. Handle width change 
1393of size_t on 32-bit versus 64-bit generations. Lin Ming.
1394
1395----------------------------------------
139606 August 2010. Summary of changes for version 20100806:
1397
13981) ACPI CA Core Subsystem:
1399
1400Designed and implemented a new host interface to the _OSI support code. This 
1401will allow the host to dynamically add or remove multiple _OSI strings, as 
1402well as install an optional handler that is called for each _OSI invocation. 
1403Also added a new AML debugger command, 'osi' to display and modify the global 
1404_OSI string table, and test support in the AcpiExec utility. See the ACPICA 
1405reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
1406New Functions:
1407    AcpiInstallInterface - Add an _OSI string.
1408    AcpiRemoveInterface - Delete an _OSI string.
1409    AcpiInstallInterfaceHandler - Install optional _OSI handler.
1410Obsolete Functions:
1411    AcpiOsValidateInterface - no longer used.
1412New Files:
1413    source/components/utilities/utosi.c
1414
1415Re-introduced the support to enable multi-byte transfers for Embedded 
1416Controller (EC) operation regions. A reported problem was found to be a bug 
1417in the host OS, not in the multi-byte support. Previously, the maximum data 
1418size passed to the EC operation region handler was a single byte. There are 
1419often EC Fields larger than one byte that need to be transferred, and it is 
1420useful for the EC driver to lock these as a single transaction. This change 
1421enables single transfers larger than 8 bits. This effectively changes the 
1422access to the EC space from ByteAcc to AnyAcc, and will probably require 
1423changes to the host OS Embedded Controller driver to enable 16/32/64/256-bit 
1424transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
1425
1426Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 
1427prototype in acpiosxf.h had the output value pointer as a (void *).
1428It should be a (UINT64 *). This may affect some host OSL code.
1429
1430Fixed a couple problems with the recently modified Linux makefiles for iASL 
1431and AcpiExec. These new makefiles place the generated object files in the 
1432local directory so that there can be no collisions between the files that are 
1433shared between them that are compiled with different options.
1434
1435Example Code and Data Size: These are the sizes for the OS-independent 
1436acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1437debug version of the code includes the debug output trace mechanism and has a 
1438much larger code and data size.
1439
1440  Previous Release:
1441    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
1442    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
1443  Current Release:
1444    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
1445    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
1446
14472) iASL Compiler/Disassembler and Tools:
1448
1449iASL/Disassembler: Added a new option (-da, "disassemble all") to load the 
1450namespace from and disassemble an entire group of AML files. Useful for 
1451loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) and 
1452disassembling with one simple command. ACPICA BZ 865. Lin Ming.
1453
1454iASL: Allow multiple invocations of -e option. This change allows multiple 
1455uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 834. 
1456Lin Ming.
1457
1458----------------------------------------
145902 July 2010. Summary of changes for version 20100702:
1460
14611) ACPI CA Core Subsystem:
1462
1463Implemented several updates to the recently added GPE reference count 
1464support. The model for "wake" GPEs is changing to give the host OS complete 
1465control of these GPEs. Eventually, the ACPICA core will not execute any _PRW 
1466methods, since the host already must execute them. Also, additional changes 
1467were made to help ensure that the reference counts are kept in proper 
1468synchronization with reality. Rafael J. Wysocki.
1469
14701) Ensure that GPEs are not enabled twice during initialization.
14712) Ensure that GPE enable masks stay in sync with the reference count.
14723) Do not inadvertently enable GPEs when writing GPE registers.
14734) Remove the internal wake reference counter and add new AcpiGpeWakeup 
1474interface. This interface will set or clear individual GPEs for wakeup.
14755) Remove GpeType argument from AcpiEnable and AcpiDisable. These interfaces 
1476are now used for "runtime" GPEs only.
1477
1478Changed the behavior of the GPE install/remove handler interfaces. The GPE is 
1479no longer disabled during this process, as it was found to cause problems on 
1480some machines. Rafael J. Wysocki.
1481
1482Reverted a change introduced in version 20100528 to enable Embedded 
1483Controller multi-byte transfers. This change was found to cause problems with 
1484Index Fields and possibly Bank Fields. It will be reintroduced when these 
1485problems have been resolved.
1486
1487Fixed a problem with references to Alias objects within Package Objects. A 
1488reference to an Alias within the definition of a Package was not always 
1489resolved properly. Aliases to objects like Processors, Thermal zones, etc. 
1490were resolved to the actual object instead of a reference to the object as it 
1491should be. Package objects are only allowed to contain integer, string, 
1492buffer, package, and reference objects. Redhat bugzilla 608648.
1493
1494Example Code and Data Size: These are the sizes for the OS-independent 
1495acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1496debug version of the code includes the debug output trace mechanism and has a 
1497much larger code and data size.
1498
1499  Previous Release:
1500    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
1501    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
1502  Current Release:
1503    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
1504    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
1505
15062) iASL Compiler/Disassembler and Tools:
1507
1508iASL: Implemented a new compiler subsystem to allow definition and 
1509compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. These 
1510are called "ACPI Data Tables", and the new compiler is the "Data Table 
1511Compiler". This compiler is intended to simplify the existing error-prone 
1512process of creating these tables for the BIOS, as well as allowing the 
1513disassembly, modification, recompilation, and override of existing ACPI data 
1514tables. See the iASL User Guide for detailed information.
1515
1516iASL: Implemented a new Template Generator option in support of the new Data 
1517Table Compiler. This option will create examples of all known ACPI tables 
1518that can be used as the basis for table development. See the iASL 
1519documentation and the -T option.
1520
1521Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 
1522Descriptor Table).
1523
1524Updated the Linux makefiles for iASL and AcpiExec to place the generated 
1525object files in the local directory so that there can be no collisions 
1526between the shared files between them that are generated with different 
1527options.
1528
1529Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. Use 
1530the #define __APPLE__ to enable this support.
1531
1532----------------------------------------
153328 May 2010. Summary of changes for version 20100528:
1534
1535Note: The ACPI 4.0a specification was released on April 5, 2010 and is 
1536available at www.acpi.info. This is primarily an errata release.
1537
15381) ACPI CA Core Subsystem:
1539
1540Undefined ACPI tables: We are looking for the definitions for the following 
1541ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
1542
1543Implemented support to enable multi-byte transfers for Embedded Controller 
1544(EC) operation regions. Previously, the maximum data size passed to the EC 
1545operation region handler was a single byte. There are often EC Fields larger 
1546than one byte that need to be transferred, and it is useful for the EC driver 
1547to lock these as a single transaction. This change enables single transfers 
1548larger than 8 bits. This effectively changes the access to the EC space from 
1549ByteAcc to AnyAcc, and will probably require changes to the host OS Embedded 
1550Controller driver to enable 16/32/64/256-bit transfers in addition to 8-bit 
1551transfers. Alexey Starikovskiy, Lin Ming
1552
1553Implemented a performance enhancement for namespace search and access. This 
1554change enhances the performance of namespace searches and walks by adding a 
1555backpointer to the parent in each namespace node. On large namespaces, this 
1556change can improve overall ACPI performance by up to 9X. Adding a pointer to 
1557each namespace node increases the overall size of the internal namespace by 
1558about 5%, since each namespace entry usually consists of both a namespace 
1559node and an ACPI operand object. However, this is the first growth of the 
1560namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
1561
1562Implemented a performance optimization that reduces the number of namespace 
1563walks. On control method exit, only walk the namespace if the method is known 
1564to have created namespace objects outside of its local scope. Previously, the 
1565entire namespace was traversed on each control method exit. This change can 
1566improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob Moore.
1567
1568Added support to truncate I/O addresses to 16 bits for Windows compatibility. 
1569Some ASL code has been seen in the field that inadvertently has bits set 
1570above bit 15. This feature is optional and is enabled if the BIOS requests 
1571any Windows OSI strings. It can also be enabled by the host OS. Matthew 
1572Garrett, Bob Moore.
1573
1574Added support to limit the maximum time for the ASL Sleep() operator. To 
1575prevent accidental deep sleeps, limit the maximum time that Sleep() will 
1576actually sleep. Configurable, the default maximum is two seconds. ACPICA 
1577bugzilla 854.
1578
1579Added run-time validation support for the _WDG and_WED Microsoft predefined 
1580methods. These objects are defined by "Windows Instrumentation", and are not 
1581part of the ACPI spec. ACPICA BZ 860.
1582
1583Expanded all statistic counters used during namespace and device 
1584initialization from 16 to 32 bits in order to support very large namespaces.
1585
1586Replaced all instances of %d in printf format specifiers with %u since nearly 
1587all integers in ACPICA are unsigned.
1588
1589Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly returned 
1590as AE_NO_HANDLER.
1591
1592Example Code and Data Size: These are the sizes for the OS-independent 
1593acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1594debug version of the code includes the debug output trace mechanism and has a 
1595much larger code and data size.
1596
1597  Previous Release:
1598    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
1599    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
1600  Current Release:
1601    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
1602    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
1603
16042) iASL Compiler/Disassembler and Tools:
1605
1606iASL: Added compiler support for the _WDG and_WED Microsoft predefined 
1607methods. These objects are defined by "Windows Instrumentation", and are not 
1608part of the ACPI spec. ACPICA BZ 860.
1609
1610AcpiExec: added option to disable the memory tracking mechanism. The -dt 
1611option will disable the tracking mechanism, which improves performance 
1612considerably.
1613
1614AcpiExec: Restructured the command line options into -d (disable) and -e 
1615(enable) options.
1616
1617----------------------------------------
161828 April 2010. Summary of changes for version 20100428:
1619
16201) ACPI CA Core Subsystem:
1621
1622Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 
1623including FADT-based and GPE Block Devices, execute any _PRW methods in the 
1624new table, and process any _Lxx/_Exx GPE methods in the new table. Any 
1625runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 
1626immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 
1627Devices. Provides compatibility with other ACPI implementations. Two new 
1628files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob Moore.
1629
1630Fixed a regression introduced in version 20100331 within the table manager 
1631where initial table loading could fail. This was introduced in the fix for 
1632AcpiReallocateRootTable. Also, renamed some of fields in the table manager 
1633data structures to clarify their meaning and use.
1634
1635Fixed a possible allocation overrun during internal object copy in 
1636AcpiUtCopySimpleObject. The original code did not correctly handle the case 
1637where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 847.
1638
1639Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 
1640possible access beyond end-of-allocation. Also, now fully validate descriptor 
1641(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
1642
1643Example Code and Data Size: These are the sizes for the OS-independent 
1644acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1645debug version of the code includes the debug output trace mechanism and has a 
1646much larger code and data size.
1647
1648  Previous Release:
1649    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
1650    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
1651  Current Release:
1652    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
1653    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
1654
16552) iASL Compiler/Disassembler and Tools:
1656
1657iASL: Implemented Min/Max/Len/Gran validation for address resource 
1658descriptors. This change implements validation for the address fields that 
1659are common to all address-type resource descriptors. These checks are 
1660implemented: Checks for valid Min/Max, length within the Min/Max window, 
1661valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as per 
1662table 6-40 in the ACPI 4.0a specification. Also split the large aslrestype1.c 
1663and aslrestype2.c files into five new files. ACPICA BZ 840.
1664
1665iASL: Added support for the _Wxx predefined names. This support was missing 
1666and these names were not recognized by the compiler as valid predefined 
1667names. ACPICA BZ 851.
1668
1669iASL: Added an error for all predefined names that are defined to return no 
1670value and thus must be implemented as Control Methods. These include all of 
1671the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 
1672names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
1673
1674iASL: Implemented the -ts option to emit hex AML data in ASL format, as an 
1675ASL Buffer. Allows ACPI tables to be easily included within ASL files, to be 
1676dynamically loaded via the Load() operator. Also cleaned up output for the -
1677ta and -tc options. ACPICA BZ 853.
1678
1679Tests: Added a new file with examples of extended iASL error checking. 
1680Demonstrates the advanced error checking ability of the iASL compiler. 
1681Available at tests/misc/badcode.asl.
1682
1683----------------------------------------
168431 March 2010. Summary of changes for version 20100331:
1685
16861) ACPI CA Core Subsystem:
1687
1688Completed a major update for the GPE support in order to improve support for 
1689shared GPEs and to simplify both host OS and ACPICA code. Added a reference 
1690count mechanism to support shared GPEs that require multiple device drivers. 
1691Several external interfaces have changed. One external interface has been 
1692removed. One new external interface was added. Most of the GPE external 
1693interfaces now use the GPE spinlock instead of the events mutex (and the 
1694Flags parameter for many GPE interfaces has been removed.) See the updated 
1695ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, Rafael 
1696Wysocki. ACPICA BZ 831.
1697
1698Changed:
1699    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
1700Removed:
1701    AcpiSetGpeType
1702New:
1703    AcpiSetGpe
1704
1705Implemented write support for DataTable operation regions. These regions are 
1706defined via the DataTableRegion() operator. Previously, only read support was 
1707implemented. The ACPI specification allows DataTableRegions to be read/write, 
1708however.
1709
1710Implemented a new subsystem option to force a copy of the DSDT to local 
1711memory. Optionally copy the entire DSDT to local memory (instead of simply 
1712mapping it.) There are some (albeit very rare) BIOSs that corrupt or replace 
1713the original DSDT, creating the need for this option. Default is FALSE, do 
1714not copy the DSDT.
1715
1716Implemented detection of a corrupted or replaced DSDT. This change adds 
1717support to detect a DSDT that has been corrupted and/or replaced from outside 
1718the OS (by firmware). This is typically catastrophic for the system, but has 
1719been seen on some machines. Once this problem has been detected, the DSDT 
1720copy option can be enabled via system configuration. Lin Ming, Bob Moore.
1721
1722Fixed two problems with AcpiReallocateRootTable during the root table copy. 
1723When copying the root table to the new allocation, the length used was 
1724incorrect. The new size was used instead of the current table size, meaning 
1725too much data was copied. Also, the count of available slots for ACPI tables 
1726was not set correctly. Alexey Starikovskiy, Bob Moore.
1727
1728Example Code and Data Size: These are the sizes for the OS-independent 
1729acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1730debug version of the code includes the debug output trace mechanism and has a 
1731much larger code and data size.
1732
1733  Previous Release:
1734    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
1735    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
1736  Current Release:
1737    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
1738    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
1739
17402) iASL Compiler/Disassembler and Tools:
1741
1742iASL: Implement limited typechecking for values returned from predefined 
1743control methods. The type of any returned static (unnamed) object is now 
1744validated. For example, Return(1). ACPICA BZ 786.
1745
1746iASL: Fixed a predefined name object verification regression. Fixes a problem 
1747introduced in version 20100304. An error is incorrectly generated if a 
1748predefined name is declared as a static named object with a value defined 
1749using the keywords "Zero", "One", or "Ones". Lin Ming.
1750
1751iASL: Added Windows 7 support for the -g option (get local ACPI tables) by 
1752reducing the requested registry access rights. ACPICA BZ 842.
1753
1754Disassembler: fixed a possible fault when generating External() statements. 
1755Introduced in commit ae7d6fd: Properly handle externals with parent-prefix 
1756(carat). Fixes a string length allocation calculation. Lin Ming.
1757
1758----------------------------------------
175904 March 2010. Summary of changes for version 20100304:
1760
17611) ACPI CA Core Subsystem:
1762
1763Fixed a possible problem with the AML Mutex handling function 
1764AcpiExReleaseMutex where the function could fault under the very rare 
1765condition when the interpreter has blocked, the interpreter lock is released, 
1766the interpreter is then reentered via the same thread, and attempts to 
1767acquire an AML mutex that was previously acquired. FreeBSD report 140979. Lin 
1768Ming.
1769
1770Implemented additional configuration support for the AML "Debug Object". 
1771Output from the debug object can now be enabled via a global variable, 
1772AcpiGbl_EnableAmlDebugObject. This will assist with remote machine debugging. 
1773This debug output is now available in the release version of ACPICA instead 
1774of just the debug version. Also, the entire debug output module can now be 
1775configured out of the ACPICA build if desired. One new file added, 
1776executer/exdebug.c. Lin Ming, Bob Moore.
1777
1778Added header support for the ACPI MCHI table (Management Controller Host 
1779Interface Table). This table was added in ACPI 4.0, but the defining document 
1780has only recently become available.
1781
1782Standardized output of integer values for ACPICA warnings/errors. Always use 
17830x prefix for hex output, always use %u for unsigned integer decimal output. 
1784Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 400 
1785invocations.) These invocations were converted from the original 
1786ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
1787
1788Example Code and Data Size: These are the sizes for the OS-independent 
1789acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1790debug version of the code includes the debug output trace mechanism and has a 
1791much larger code and data size.
1792
1793  Previous Release:
1794    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
1795    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
1796  Current Release:
1797    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
1798    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
1799
18002) iASL Compiler/Disassembler and Tools:
1801
1802iASL: Implemented typechecking support for static (non-control method) 
1803predefined named objects that are declared with the Name() operator. For 
1804example, the type of this object is now validated to be of type Integer: 
1805Name(_BBN, 1). This change migrates the compiler to using the core predefined 
1806name table instead of maintaining a local version. Added a new file, 
1807aslpredef.c. ACPICA BZ 832.
1808
1809Disassembler: Added support for the ACPI 4.0 MCHI table.
1810
1811----------------------------------------
181221 January 2010. Summary of changes for version 20100121:
1813
18141) ACPI CA Core Subsystem:
1815
1816Added the 2010 copyright to all module headers and signons. This affects 
1817virtually every file in the ACPICA core subsystem, the iASL compiler, the 
1818tools/utilities, and the test suites.
1819
1820Implemented a change to the AcpiGetDevices interface to eliminate unnecessary 
1821invocations of the _STA method. In the case where a specific _HID is 
1822requested, do not run _STA until a _HID match is found. This eliminates 
1823potentially dozens of _STA calls during a search for a particular device/HID, 
1824which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
1825
1826Implemented an additional repair for predefined method return values. Attempt 
1827to repair unexpected NULL elements within returned Package objects. Create an 
1828Integer of value zero, a NULL String, or a zero-length Buffer as appropriate. 
1829ACPICA BZ 818. Lin Ming, Bob Moore.
1830
1831Removed the obsolete ACPI_INTEGER data type. This type was introduced as the 
1832code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 (with 
183364-bit AML integers). It is now obsolete and this change removes it from the 
1834ACPICA code base, replaced by UINT64. The original typedef has been retained 
1835for now for compatibility with existing device driver code. ACPICA BZ 824.
1836
1837Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field in 
1838the parse tree object.
1839
1840Added additional warning options for the gcc-4 generation. Updated the source 
1841accordingly. This includes some code restructuring to eliminate unreachable 
1842code, elimination of some gotos, elimination of unused return values, some 
1843additional casting, and removal of redundant declarations.
1844
1845Example Code and Data Size: These are the sizes for the OS-independent 
1846acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1847debug version of the code includes the debug output trace mechanism and has a 
1848much larger code and data size.
1849
1850  Previous Release:
1851    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
1852    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
1853  Current Release:
1854    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
1855    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
1856
18572) iASL Compiler/Disassembler and Tools:
1858
1859No functional changes for this release.
1860
1861----------------------------------------
186214 December 2009. Summary of changes for version 20091214:
1863
18641) ACPI CA Core Subsystem:
1865
1866Enhanced automatic data type conversions for predefined name repairs. This 
1867change expands the automatic repairs/conversions for predefined name return 
1868values to make Integers, Strings, and Buffers fully interchangeable. Also, a 
1869Buffer can be converted to a Package of Integers if necessary. The nsrepair.c 
1870module was completely restructured. Lin Ming, Bob Moore.
1871
1872Implemented automatic removal of null package elements during predefined name 
1873repairs. This change will automatically remove embedded and trailing NULL 
1874package elements from returned package objects that are defined to contain a 
1875variable number of sub-packages. The driver is then presented with a package 
1876with no null elements to deal with. ACPICA BZ 819.
1877
1878Implemented a repair for the predefined _FDE and _GTM names. The expected 
1879return value for both names is a Buffer of 5 DWORDs. This repair fixes two 
1880possible problems (both seen in the field), where a package of integers is 
1881returned, or a buffer of BYTEs is returned. With assistance from Jung-uk Kim.
1882
1883Implemented additional module-level code support. This change will properly 
1884execute module-level code that is not at the root of the namespace (under a 
1885Device object, etc.). Now executes the code within the current scope instead 
1886of the root. ACPICA BZ 762. Lin Ming.
1887
1888Fixed possible mutex acquisition errors when running _REG methods. Fixes a 
1889problem where mutex errors can occur when running a _REG method that is in 
1890the same scope as a method-defined operation region or an operation region 
1891under a module-level IF block. This type of code is rare, so the problem has 
1892not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
1893
1894Fixed a possible memory leak during module-level code execution. An object 
1895could be leaked for each block of executed module-level code if the 
1896interpreter slack mode is enabled This change deletes any implicitly returned 
1897object from the module-level code block. Lin Ming.
1898
1899Removed messages for successful predefined repair(s). The repair mechanism 
1900was considered too wordy. Now, messages are only unconditionally emitted if 
1901the return object cannot be repaired. Existing messages for successful 
1902repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 827.
1903
1904Example Code and Data Size: These are the sizes for the OS-independent 
1905acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1906debug version of the code includes the debug output trace mechanism and has a 
1907much larger code and data size.
1908
1909  Previous Release:
1910    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
1911    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
1912  Current Release:
1913    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
1914    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
1915
19162) iASL Compiler/Disassembler and Tools:
1917
1918iASL: Fixed a regression introduced in 20091112 where intermediate .SRC files 
1919were no longer automatically removed at the termination of the compile.
1920
1921acpiexec: Implemented the -f option to specify default region fill value. 
1922This option specifies the value used to initialize buffers that simulate 
1923operation regions. Default value is zero. Useful for debugging problems that 
1924depend on a specific initial value for a region or field.
1925
1926----------------------------------------
192712 November 2009. Summary of changes for version 20091112:
1928
19291) ACPI CA Core Subsystem:
1930
1931Implemented a post-order callback to AcpiWalkNamespace. The existing 
1932interface only has a pre-order callback. This change adds an additional 
1933parameter for a post-order callback which will be more useful for bus scans. 
1934ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
1935
1936Modified the behavior of the operation region memory mapping cache for 
1937SystemMemory. Ensure that the memory mappings created for operation regions 
1938do not cross 4K page boundaries. Crossing a page boundary while mapping 
1939regions can cause kernel warnings on some hosts if the pages have different 
1940attributes. Such regions are probably BIOS bugs, and this is the workaround. 
1941Linux BZ 14445. Lin Ming.
1942
1943Implemented an automatic repair for predefined methods that must return 
1944sorted lists. This change will repair (by sorting) packages returned by _ALR, 
1945_PSS, and _TSS. Drivers can now assume that the packages are correctly sorted 
1946and do not contain NULL package elements. Adds one new file, 
1947namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
1948
1949Fixed a possible fault during predefined name validation if a return Package 
1950object contains NULL elements. Also adds a warning if a NULL element is 
1951followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement may 
1952include repair or removal of all such NULL elements where possible.
1953
1954Implemented additional module-level executable AML code support. This change 
1955will execute module-level code that is not at the root of the namespace 
1956(under a Device object, etc.) at table load time. Module-level executable AML 
1957code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
1958
1959Implemented a new internal function to create Integer objects. This function 
1960simplifies miscellaneous object creation code. ACPICA BZ 823.
1961
1962Reduced the severity of predefined repair messages, Warning to Info. Since 
1963the object was successfully repaired, a warning is too severe. Reduced to an 
1964info message for now. These messages may eventually be changed to debug-only. 
1965ACPICA BZ 812.
1966
1967Example Code and Data Size: These are the sizes for the OS-independent 
1968acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
1969debug version of the code includes the debug output trace mechanism and has a 
1970much larger code and data size.
1971
1972  Previous Release:
1973    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
1974    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
1975  Current Release:
1976    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
1977    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
1978
19792) iASL Compiler/Disassembler and Tools:
1980
1981iASL: Implemented Switch() with While(1) so that Break works correctly. This 
1982change correctly implements the Switch operator with a surrounding While(1) 
1983so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
1984
1985iASL: Added a message if a package initializer list is shorter than package 
1986length. Adds a new remark for a Package() declaration if an initializer list 
1987exists, but is shorter than the declared length of the package. Although 
1988technically legal, this is probably a coding error and it is seen in the 
1989field. ACPICA BZ 815. Lin Ming, Bob Moore.
1990
1991iASL: Fixed a problem where the compiler could fault after the maximum number 
1992of errors was reached (200).
1993
1994acpixtract: Fixed a possible warning for pointer cast if the compiler warning 
1995level set very high.
1996
1997----------------------------------------
199813 October 2009. Summary of changes for version 20091013:
1999
20001) ACPI CA Core Subsystem:
2001
2002Fixed a problem where an Operation Region _REG method could be executed more 
2003than once. If a custom address space handler is installed by the host before 
2004the "initialize operation regions" phase of the ACPICA initialization, any 
2005_REG methods for that address space could be executed twice. This change 
2006fixes the problem. ACPICA BZ 427. Lin Ming.
2007
2008Fixed a possible memory leak for the Scope() ASL operator. When the exact 
2009invocation of "Scope(\)" is executed (change scope to root), one internal 
2010operand object was leaked. Lin Ming.
2011
2012Implemented a run-time repair for the _MAT predefined method. If the _MAT 
2013return value is defined as a Field object in the AML, and the field
2014size is less than or equal to the default width of an integer (32 or 64),_MAT 
2015can incorrectly return an Integer instead of a Buffer. ACPICA now 
2016automatically repairs this problem. ACPICA BZ 810.
2017
2018Implemented a run-time repair for the _BIF and _BIX predefined methods. The 
2019"OEM Information" field is often incorrectly returned as an Integer with 
2020value zero if the field is not supported by the platform. This is due to an 
2021ambiguity in the ACPI specification. The field should always be a string. 
2022ACPICA now automatically repairs this problem by returning a NULL string 
2023within the returned Package. ACPICA BZ 807.
2024
2025Example Code and Data Size: These are the sizes for the OS-independent 
2026acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2027debug version of the code includes the debug output trace mechanism and has a 
2028much larger code and data size.
2029
2030  Previous Release:
2031    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
2032    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
2033  Current Release:
2034    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
2035    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
2036
20372) iASL Compiler/Disassembler and Tools:
2038
2039Disassembler: Fixed a problem where references to external symbols that 
2040contained one or more parent-prefixes (carats) were not handled correctly, 
2041possibly causing a fault. ACPICA BZ 806. Lin Ming.
2042
2043Disassembler: Restructured the code so that all functions that handle 
2044external symbols are in a single module. One new file is added, 
2045common/dmextern.c.
2046
2047AML Debugger: Added a max count argument for the Batch command (which 
2048executes multiple predefined methods within the namespace.)
2049
2050iASL: Updated the compiler documentation (User Reference.) Available at 
2051http://www.acpica.org/documentation/. ACPICA BZ 750.
2052
2053AcpiXtract: Updated for Lint and other formatting changes. Close all open 
2054files.
2055
2056----------------------------------------
205703 September 2009. Summary of changes for version 20090903:
2058
20591) ACPI CA Core Subsystem:
2060
2061For Windows Vista compatibility, added the automatic execution of an _INI 
2062method located at the namespace root (\_INI). This method is executed at 
2063table load time. This support is in addition to the automatic execution of 
2064\_SB._INI. Lin Ming.
2065
2066Fixed a possible memory leak in the interpreter for AML package objects if 
2067the package initializer list is longer than the defined size of the package. 
2068This apparently can only happen if the BIOS changes the package size on the 
2069fly (seen in a _PSS object), as ASL compilers do not allow this. The 
2070interpreter will truncate the package to the defined size (and issue an error 
2071message), but previously could leave the extra objects undeleted if they were 
2072pre-created during the argument processing (such is the case if the package 
2073consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
2074
2075Fixed a problem seen when a Buffer or String is stored to itself via ASL. 
2076This has been reported in the field. Previously, ACPICA would zero out the 
2077buffer/string. Now, the operation is treated as a noop. Provides Windows 
2078compatibility. ACPICA BZ 803. Lin Ming.
2079
2080Removed an extraneous error message for ASL constructs of the form 
2081Store(LocalX,LocalX) when LocalX is uninitialized. These curious statements 
2082are seen in many BIOSs and are once again treated as NOOPs and no error is 
2083emitted when they are encountered. ACPICA BZ 785.
2084
2085Fixed an extraneous warning message if a _DSM reserved method returns a 
2086Package object. _DSM can return any type of object, so validation on the 
2087return type cannot be performed. ACPICA BZ 802.
2088
2089Example Code and Data Size: These are the sizes for the OS-independent 
2090acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2091debug version of the code includes the debug output trace mechanism and has a 
2092much larger code and data size.
2093
2094  Previous Release:
2095    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
2096    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
2097  Current Release:
2098    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
2099    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
2100
21012) iASL Compiler/Disassembler and Tools:
2102
2103iASL: Fixed a problem with the use of the Alias operator and Resource 
2104Templates. The correct alias is now constructed and no error is emitted. 
2105ACPICA BZ 738.
2106
2107iASL: Implemented the -I option to specify additional search directories for 
2108include files. Allows multiple additional search paths for include files. 
2109Directories are searched in the order specified on the command line (after 
2110the local directory is searched.) ACPICA BZ 800.
2111
2112iASL: Fixed a problem where the full pathname for include files was not 
2113emitted for warnings/errors. This caused the IDE support to not work 
2114properly. ACPICA BZ 765.
2115
2116iASL: Implemented the -@ option to specify a Windows-style response file 
2117containing additional command line options. ACPICA BZ 801.
2118
2119AcpiExec: Added support to load multiple AML files simultaneously (such as a 
2120DSDT and multiple SSDTs). Also added support for wildcards within the AML 
2121pathname. These features allow all machine tables to be easily loaded and 
2122debugged together. ACPICA BZ 804.
2123
2124Disassembler: Added missing support for disassembly of HEST table Error Bank 
2125subtables. 
2126
2127----------------------------------------
212830 July 2009. Summary of changes for version 20090730:
2129
2130The ACPI 4.0 implementation for ACPICA is complete with this release.
2131
21321) ACPI CA Core Subsystem:
2133
2134ACPI 4.0: Added header file support for all new and changed ACPI tables. 
2135Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new 
2136for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, BERT, 
2137EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. There 
2138have been some ACPI 4.0 changes to other existing tables. Split the large 
2139actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
2140
2141ACPI 4.0: Implemented predefined name validation for all new names. There are 
214231 new names in ACPI 4.0. The predefined validation module was split into two 
2143files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
2144
2145Implemented support for so-called "module-level executable code". This is 
2146executable AML code that exists outside of any control method and is intended 
2147to be executed at table load time. Although illegal since ACPI 2.0, this type 
2148of code still exists and is apparently still being created. Blocks of this 
2149code are now detected and executed as intended. Currently, the code blocks 
2150must exist under either an If, Else, or While construct; these are the 
2151typical cases seen in the field. ACPICA BZ 762. Lin Ming.
2152
2153Implemented an automatic dynamic repair for predefined names that return 
2154nested Package objects. This applies to predefined names that are defined to 
2155return a variable-length Package of sub-packages. If the number of sub-
2156packages is one, BIOS code is occasionally seen that creates a simple single 
2157package with no sub-packages. This code attempts to fix the problem by 
2158wrapping a new package object around the existing package. These methods can 
2159be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ 
2160790.
2161
2162Fixed a regression introduced in 20090625 for the AcpiGetDevices interface. 
2163The _HID/_CID matching was broken and no longer matched IDs correctly. ACPICA 
2164BZ 793.
2165
2166Fixed a problem with AcpiReset where the reset would silently fail if the 
2167register was one of the protected I/O ports. AcpiReset now bypasses the port 
2168validation mechanism. This may eventually be driven into the AcpiRead/Write 
2169interfaces.
2170
2171Fixed a regression related to the recent update of the AcpiRead/Write 
2172interfaces. A sleep/suspend could fail if the optional PM2 Control register 
2173does not exist during an attempt to write the Bus Master Arbitration bit. 
2174(However, some hosts already delete the code that writes this bit, and the 
2175code may in fact be obsolete at this date.) ACPICA BZ 799.
2176
2177Fixed a problem where AcpiTerminate could fault if inadvertently called twice 
2178in succession. ACPICA BZ 795.
2179
2180Example Code and Data Size: These are the sizes for the OS-independent 
2181acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2182debug version of the code includes the debug output trace mechanism and has a 
2183much larger code and data size.
2184
2185  Previous Release:
2186    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
2187    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
2188  Current Release:
2189    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
2190    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
2191
21922) iASL Compiler/Disassembler and Tools:
2193
2194ACPI 4.0: Implemented disassembler support for all new ACPI tables and 
2195changes to existing tables. ACPICA BZ 775.
2196
2197----------------------------------------
219825 June 2009. Summary of changes for version 20090625:
2199
2200The ACPI 4.0 Specification was released on June 16 and is available at 
2201www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 
2202continue for the next few releases.
2203
22041) ACPI CA Core Subsystem:
2205
2206ACPI 4.0: Implemented interpreter support for the IPMI operation region 
2207address space. Includes support for bi-directional data buffers and an IPMI 
2208address space handler (to be installed by an IPMI device driver.) ACPICA BZ 
2209773. Lin Ming.
2210
2211ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes 
2212support in both the header files and the disassembler.
2213
2214Completed a major update for the AcpiGetObjectInfo external interface. 
2215Changes include:
2216 - Support for variable, unlimited length HID, UID, and CID strings.
2217 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, etc.)
2218 - Call the _SxW power methods on behalf of a device object.
2219 - Determine if a device is a PCI root bridge.
2220 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
2221These changes will require an update to all callers of this interface. See 
2222the updated ACPICA Programmer Reference for details. One new source file has 
2223been added - utilities/utids.c. ACPICA BZ 368, 780.
2224
2225Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 
2226transfers. The Value parameter has been extended from 32 bits to 64 bits in 
2227order to support new ACPI 4.0 tables. These changes will require an update to 
2228all callers of these interfaces. See the ACPICA Programmer Reference for 
2229details. ACPICA BZ 768.
2230
2231Fixed several problems with AcpiAttachData. The handler was not invoked when 
2232the host node was deleted. The data sub-object was not automatically deleted 
2233when the host node was deleted. The interface to the handler had an unused 
2234parameter, this was removed. ACPICA BZ 778.
2235
2236Enhanced the function that dumps ACPI table headers. All non-printable 
2237characters in the string fields are now replaced with '?' (Signature, OemId, 
2238OemTableId, and CompilerId.) ACPI tables with non-printable characters in 
2239these fields are occasionally seen in the field. ACPICA BZ 788.
2240
2241Fixed a problem with predefined method repair code where the code that 
2242attempts to repair/convert an object of incorrect type is only executed on 
2243the first time the predefined method is called. The mechanism that disables 
2244warnings on subsequent calls was interfering with the repair mechanism. 
2245ACPICA BZ 781.
2246
2247Fixed a possible memory leak in the predefined validation/repair code when a 
2248buffer is automatically converted to an expected string object.
2249
2250Removed obsolete 16-bit files from the distribution and from the current git 
2251tree head. ACPICA BZ 776.
2252
2253Example Code and Data Size: These are the sizes for the OS-independent 
2254acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2255debug version of the code includes the debug output trace mechanism and has a 
2256much larger code and data size.
2257
2258  Previous Release:
2259    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
2260    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
2261  Current Release:
2262    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
2263    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
2264
22652) iASL Compiler/Disassembler and Tools:
2266
2267ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 
2268operation region keyword. ACPICA BZ 771, 772. Lin Ming.
2269
2270ACPI 4.0: iASL - implemented compile-time validation support for all new 
2271predefined names and control methods (31 total). ACPICA BZ 769.
2272
2273----------------------------------------
227421 May 2009. Summary of changes for version 20090521:
2275
22761) ACPI CA Core Subsystem:
2277
2278Disabled the preservation of the SCI enable bit in the PM1 control register. 
2279The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be 
2280a "preserved" bit - "OSPM always preserves this bit position", section 
22814.7.3.2.1. However, some machines fail if this bit is in fact preserved 
2282because the bit needs to be explicitly set by the OS as a workaround. No 
2283machines fail if the bit is not preserved. Therefore, ACPICA no longer 
2284attempts to preserve this bit.
2285
2286Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 
2287incorrectly formed _PRT package could cause a fault. Added validation to 
2288ensure that each package element is actually a sub-package.
2289
2290Implemented a new interface to install or override a single control method, 
2291AcpiInstallMethod. This interface is useful when debugging in order to repair 
2292an existing method or to install a missing method without having to override 
2293the entire ACPI table. See the ACPICA Programmer Reference for use and 
2294examples. Lin Ming, Bob Moore.
2295
2296Fixed several reference count issues with the DdbHandle object that is 
2297created from a Load or LoadTable operator. Prevent premature deletion of the 
2298object. Also, mark the object as invalid once the table has been unloaded. 
2299This is needed because the handle itself may not be deleted after the table 
2300unload, depending on whether it has been stored in a named object by the 
2301caller. Lin Ming.
2302
2303Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 
2304mutexes of the same sync level are acquired but then not released in strict 
2305opposite order, the internally maintained Current Sync Level becomes confused 
2306and can cause subsequent execution errors. ACPICA BZ 471.
2307
2308Changed the allowable release order for ASL mutex objects. The ACPI 4.0 
2309specification has been changed to make the SyncLevel for mutex objects more 
2310useful. When releasing a mutex, the SyncLevel of the mutex must now be the 
2311same as the current sync level. This makes more sense than the previous rule 
2312(SyncLevel less than or equal). This change updates the code to match the 
2313specification.
2314
2315Fixed a problem with the local version of the AcpiOsPurgeCache function. The 
2316(local) cache must be locked during all cache object deletions. Andrew 
2317Baumann.
2318
2319Updated the Load operator to use operation region interfaces. This replaces 
2320direct memory mapping with region access calls. Now, all region accesses go 
2321through the installed region handler as they should.
2322
2323Simplified and optimized the NsGetNextNode function. Reduced parameter count 
2324and reduced code for this frequently used function.
2325
2326Example Code and Data Size: These are the sizes for the OS-independent 
2327acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2328debug version of the code includes the debug output trace mechanism and has a 
2329much larger code and data size.
2330
2331  Previous Release:
2332    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
2333    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
2334  Current Release:
2335    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
2336    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
2337
23382) iASL Compiler/Disassembler and Tools:
2339
2340Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems 
2341with sub-table disassembly and handling invalid sub-tables. Attempt recovery 
2342after an invalid sub-table ID.
2343
2344----------------------------------------
234522 April 2009. Summary of changes for version 20090422:
2346
23471) ACPI CA Core Subsystem:
2348
2349Fixed a compatibility issue with the recently released I/O port protection 
2350mechanism. For windows compatibility, 1) On a port protection violation, 
2351simply ignore the request and do not return an exception (allow the control 
2352method to continue execution.) 2) If only part of the request overlaps a 
2353protected port, read/write the individual ports that are not protected. Linux 
2354BZ 13036. Lin Ming
2355
2356Enhanced the execution of the ASL/AML BreakPoint operator so that it actually 
2357breaks into the AML debugger if the debugger is present. This matches the 
2358ACPI-defined behavior.
2359
2360Fixed several possible warnings related to the use of the configurable 
2361ACPI_THREAD_ID. This type can now be configured as either an integer or a 
2362pointer with no warnings. Also fixes several warnings in printf-like 
2363statements for the 64-bit build when the type is configured as a pointer. 
2364ACPICA BZ 766, 767.
2365
2366Fixed a number of possible warnings when compiling with gcc 4+ (depending on 
2367warning options.) Examples include printf formats, aliasing, unused globals, 
2368missing prototypes, missing switch default statements, use of non-ANSI 
2369library functions, use of non-ANSI constructs. See generate/unix/Makefile for 
2370a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
2371
2372Example Code and Data Size: These are the sizes for the OS-independent 
2373acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2374debug version of the code includes the debug output trace mechanism and has a 
2375much larger code and data size.
2376
2377  Previous Release:
2378    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
2379    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
2380  Current Release:
2381    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
2382    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
2383
23842) iASL Compiler/Disassembler and Tools:
2385
2386iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on 
2387the 64-bit build.
2388
2389iASL: Fixed a problem where the Unix/Linux versions of the compiler could not 
2390correctly digest Windows/DOS formatted files (with CR/LF).
2391
2392iASL: Added a new option for "quiet mode" (-va) that produces only the 
2393compilation summary, not individual errors and warnings. Useful for large 
2394batch compilations.
2395
2396AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex 
2397timeout that can be used to detect hang conditions during execution of AML 
2398code (includes both internal semaphores and AML-defined mutexes and events.)
2399
2400Added new makefiles for the generation of acpica in a generic unix-like 
2401environment. These makefiles are intended to generate the acpica tools and 
2402utilities from the original acpica git source tree structure.
2403
2404Test Suites: Updated and cleaned up the documentation files. Updated the 
2405copyrights to 2009, affecting all source files. Use the new version of iASL 
2406with quiet mode. Increased the number of available semaphores in the Windows 
2407OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added 
2408an alternate implementation of the semaphore timeout to allow aslts to 
2409execute fully on Cygwin.
2410
2411----------------------------------------
241220 March 2009. Summary of changes for version 20090320:
2413
24141) ACPI CA Core Subsystem:
2415
2416Fixed a possible race condition between AcpiWalkNamespace and dynamic table 
2417unloads. Added a reader/writer locking mechanism to allow multiple concurrent 
2418namespace walks (readers), but block a dynamic table unload until it can gain 
2419exclusive write access to the namespace. This fixes a problem where a table 
2420unload could (possibly catastrophically) delete the portion of the namespace 
2421that is currently being examined by a walk. Adds a new file, utlock.c, that 
2422implements the reader/writer lock mechanism. ACPICA BZ 749.
2423
2424Fixed a regression introduced in version 20090220 where a change to the FADT 
2425handling could cause the ACPICA subsystem to access non-existent I/O ports.
2426
2427Modified the handling of FADT register and table (FACS/DSDT) addresses. The 
2428FADT can contain both 32-bit and 64-bit versions of these addresses. 
2429Previously, the 64-bit versions were favored, meaning that if both 32 and 64 
2430versions were valid, but not equal, the 64-bit version was used. This was 
2431found to cause some machines to fail. Now, in this case, the 32-bit version 
2432is used instead. This now matches the Windows behavior.
2433
2434Implemented a new mechanism to protect certain I/O ports. Provides Microsoft 
2435compatibility and protects the standard PC I/O ports from access via AML 
2436code. Adds a new file, hwvalid.c
2437
2438Fixed a possible extraneous warning message from the FADT support. The 
2439message warns of a 32/64 length mismatch between the legacy and GAS 
2440definitions for a register.
2441
2442Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is 
2443made obsolete by the port protection mechanism above. It was previously used 
2444to validate the entire address range of an operation region, which could be 
2445incorrect if the range included illegal ports, but fields within the 
2446operation region did not actually access those ports. Validation is now 
2447performed on a per-field basis instead of the entire region.
2448
2449Modified the handling of the PM1 Status Register ignored bit (bit 11.) 
2450Ignored bits must be "preserved" according to the ACPI spec. Usually, this 
2451means a read/modify/write when writing to the register. However, for status 
2452registers, writing a one means clear the event. Writing a zero means preserve 
2453the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec, 
2454and the ACPICA code now simply always writes a zero to the ignored bit.
2455
2456Modified the handling of ignored bits for the PM1 A/B Control Registers. As 
2457per the ACPI specification, for the control registers, preserve 
2458(read/modify/write) all bits that are defined as either reserved or ignored.
2459
2460Updated the handling of write-only bits in the PM1 A/B Control Registers. 
2461When reading the register, zero the write-only bits as per the ACPI spec. 
2462ACPICA BZ 443. Lin Ming.
2463
2464Removed "Linux" from the list of supported _OSI strings. Linux no longer 
2465wants to reply true to this request. The Windows strings are the only paths 
2466through the AML that are tested and known to work properly.
2467
2468  Previous Release:
2469    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
2470    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
2471  Current Release:
2472    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
2473    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
2474
24752) iASL Compiler/Disassembler and Tools:
2476
2477Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and 
2478aetables.c
2479
2480----------------------------------------
248120 February 2009. Summary of changes for version 20090220:
2482
24831) ACPI CA Core Subsystem:
2484
2485Optimized the ACPI register locking. Removed locking for reads from the ACPI 
2486bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is 
2487not required when reading the single-bit registers. The 
2488AcpiGetRegisterUnlocked function is no longer needed and has been removed. 
2489This will improve performance for reads on these registers. ACPICA BZ 760.
2490
2491Fixed the parameter validation for AcpiRead/Write. Now return 
2492AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if 
2493the register has an address of zero. Previously, these cases simply returned 
2494AE_OK. For optional registers such as PM1B status/enable/control, the caller 
2495should check for a valid register address before calling. ACPICA BZ 748.
2496
2497Renamed the external ACPI bit register access functions. Renamed 
2498AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 
2499functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister. 
2500Also, restructured the code for these functions by simplifying the code path 
2501and condensing duplicate code to reduce code size.
2502
2503Added new functions to transparently handle the possibly split PM1 A/B 
2504registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions 
2505now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ 
2506746.
2507
2508Added a function to handle the PM1 control registers, AcpiHwWritePm1Control. 
2509This function writes both of the PM1 control registers (A/B). These registers 
2510are different than the PM1 A/B status and enable registers in that different 
2511values can be written to the A/B registers. Most notably, the SLP_TYP bits 
2512can be different, as per the values returned from the _Sx predefined methods.
2513
2514Removed an extra register write within AcpiHwClearAcpiStatus. This function 
2515was writing an optional PM1B status register twice. The existing call to the 
2516low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B 
2517register. ACPICA BZ 751.
2518
2519Split out the PM1 Status registers from the FADT. Added new globals for these 
2520registers (A/B), similar to the way the PM1 Enable registers are handled. 
2521Instead of overloading the FADT Event Register blocks. This makes the code 
2522clearer and less prone to error.
2523
2524Fixed the warning message for when the platform contains too many ACPI tables 
2525for the default size of the global root table data structure. The calculation 
2526for the truncation value was incorrect.
2527
2528Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 
2529obsolete macro, since it is now a simple reference to ->common.type. There 
2530were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
2531
2532Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 
2533TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 
2534simply SLEEP_TYPE. ACPICA BZ 754.
2535
2536Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 
2537function is only needed on 64-bit host operating systems and is thus not 
2538included for 32-bit hosts.
2539
2540Debug output: print the input and result for invocations of the _OSI reserved 
2541control method via the ACPI_LV_INFO debug level. Also, reduced some of the 
2542verbosity of this debug level. Len Brown.
2543
2544Example Code and Data Size: These are the sizes for the OS-independent 
2545acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2546debug version of the code includes the debug output trace mechanism and has a 
2547much larger code and data size.
2548
2549  Previous Release:
2550    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
2551    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
2552  Current Release:
2553    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
2554    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
2555
25562) iASL Compiler/Disassembler and Tools:
2557
2558Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 
2559various legal performance profiles.
2560
2561----------------------------------------
256223 January 2009. Summary of changes for version 20090123:
2563
25641) ACPI CA Core Subsystem:
2565
2566Added the 2009 copyright to all module headers and signons. This affects 
2567virtually every file in the ACPICA core subsystem, the iASL compiler, and 
2568the tools/utilities.
2569
2570Implemented a change to allow the host to override any ACPI table, including 
2571dynamically loaded tables. Previously, only the DSDT could be replaced by the 
2572host. With this change, the AcpiOsTableOverride interface is called for each 
2573table found in the RSDT/XSDT during ACPICA initialization, and also whenever 
2574a table is dynamically loaded via the AML Load operator.
2575
2576Updated FADT flag definitions, especially the Boot Architecture flags.
2577
2578Debugger: For the Find command, automatically pad the input ACPI name with 
2579underscores if the name is shorter than 4 characters. This enables a match 
2580with the actual namespace entry which is itself padded with underscores.
2581
2582Example Code and Data Size: These are the sizes for the OS-independent 
2583acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2584debug version of the code includes the debug output trace mechanism and has a 
2585much larger code and data size.
2586
2587  Previous Release:
2588    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
2589    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
2590  Current Release:
2591    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
2592    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
2593
25942) iASL Compiler/Disassembler and Tools:
2595
2596Fix build error under Bison-2.4.
2597
2598Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture 
2599flags. Now decode all flags, regardless of the FADT version. Flag output 
2600includes the FADT version which first defined each flag.
2601
2602The iASL -g option now dumps the RSDT to a file (in addition to the FADT and 
2603DSDT). Windows only.
2604
2605----------------------------------------
260604 December 2008. Summary of changes for version 20081204:
2607
26081) ACPI CA Core Subsystem:
2609
2610The ACPICA Programmer Reference has been completely updated and revamped for 
2611this release. This includes updates to the external interfaces, OSL 
2612interfaces, the overview sections, and the debugger reference.
2613
2614Several new ACPICA interfaces have been implemented and documented in the 
2615programmer reference:
2616AcpiReset - Writes the reset value to the FADT-defined reset register.
2617AcpiDisableAllGpes - Disable all available GPEs.
2618AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
2619AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
2620AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
2621AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
2622AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
2623
2624Most of the public ACPI hardware-related interfaces have been moved to a new 
2625file, components/hardware/hwxface.c
2626
2627Enhanced the FADT parsing and low-level ACPI register access: The ACPI 
2628register lengths within the FADT are now used, and the low level ACPI 
2629register access no longer hardcodes the ACPI register lengths. Given that 
2630there may be some risk in actually trusting the FADT register lengths, a run-
2631time option was added to fall back to the default hardcoded lengths if the 
2632FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 
2633option is set to true for now, and a warning is issued if a suspicious FADT 
2634register length is overridden with the default value.
2635
2636Fixed a reference count issue in NsRepairObject. This problem was introduced 
2637in version 20081031 as part of a fix to repair Buffer objects within 
2638Packages. Lin Ming.
2639
2640Added semaphore support to the Linux/Unix application OS-services layer 
2641(OSL). ACPICA BZ 448. Lin Ming.
2642
2643Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will 
2644be implemented in the OSL, or will binary semaphores be used instead.
2645
2646Example Code and Data Size: These are the sizes for the OS-independent 
2647acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2648debug version of the code includes the debug output trace mechanism and has a 
2649much larger code and data size.
2650
2651  Previous Release:
2652    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
2653    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
2654  Current Release:
2655    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
2656    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
2657
26582) iASL Compiler/Disassembler and Tools:
2659
2660iASL: Completed the '-e' option to include additional ACPI tables in order to 
2661aid with disassembly and External statement generation. ACPICA BZ 742. Lin 
2662Ming.
2663
2664iASL: Removed the "named object in while loop" error. The compiler cannot 
2665determine how many times a loop will execute. ACPICA BZ 730.
2666
2667Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA 
2668BZ 743.
2669
2670Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG).
2671
2672----------------------------------------
267331 October 2008. Summary of changes for version 20081031:
2674
26751) ACPI CA Core Subsystem:
2676
2677Restructured the ACPICA header files into public/private. acpi.h now includes 
2678only the "public" acpica headers. All other acpica headers are "private" and 
2679should not be included by acpica users. One new file, accommon.h is used to 
2680include the commonly used private headers for acpica code generation. Future 
2681plans include moving all private headers to a new subdirectory.
2682
2683Implemented an automatic Buffer->String return value conversion for 
2684predefined ACPI methods. For these methods (such as _BIF), added automatic 
2685conversion for return objects that are required to be a String, but a Buffer 
2686was found instead. This can happen when reading string battery data from an 
2687operation region, because it used to be difficult to convert the data from 
2688buffer to string from within the ASL. Ensures that the host OS is provided 
2689with a valid null-terminated string. Linux BZ 11822.
2690
2691Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector 
2692into two: one for the 32-bit vector, another for the 64-bit vector. This is 
2693required because the host OS must setup the wake much differently for each 
2694vector (real vs. protected mode, etc.) and the interface itself should not be 
2695deciding which vector to use. Also, eliminated the GetFirmwareWakingVector 
2696interface, as it served no purpose (only the firmware reads the vector, OS 
2697only writes the vector.) ACPICA BZ 731.
2698
2699Implemented a mechanism to escape infinite AML While() loops. Added a loop 
2700counter to force exit from AML While loops if the count becomes too large. 
2701This can occur in poorly written AML when the hardware does not respond 
2702within a while loop and the loop does not implement a timeout. The maximum 
2703loop count is configurable. A new exception code is returned when a loop is 
2704broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
2705
2706Optimized the execution of AML While loops. Previously, a control state 
2707object was allocated and freed for each execution of the loop. The 
2708optimization is to simply reuse the control state for each iteration. This 
2709speeds up the raw loop execution time by about 5%.
2710
2711Enhanced the implicit return mechanism. For Windows compatibility, return an 
2712implicit integer of value zero for methods that contain no executable code. 
2713Such methods are seen in the field as stubs (presumably), and can cause 
2714drivers to fail if they expect a return value. Lin Ming.
2715
2716Allow multiple backslashes as root prefixes in namepaths. In a fully 
2717qualified namepath, allow multiple backslash prefixes. This can happen (and 
2718is seen in the field) because of the use of a double-backslash in strings 
2719(since backslash is the escape character) causing confusion. ACPICA BZ 739 
2720Lin Ming.
2721
2722Emit a warning if two different FACS or DSDT tables are discovered in the 
2723FADT. Checks if there are two valid but different addresses for the FACS and 
2724DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
2725
2726Consolidated the method argument count validation code. Merged the code that 
2727validates control method argument counts into the predefined validation 
2728module. Eliminates possible multiple warnings for incorrect argument counts.
2729
2730Implemented ACPICA example code. Includes code for ACPICA initialization, 
2731handler installation, and calling a control method. Available at 
2732source/tools/examples.
2733
2734Added a global pointer for FACS table to simplify internal FACS access. Use 
2735the global pointer instead of using AcpiGetTableByIndex for each FACS access. 
2736This simplifies the code for the Global Lock and the Firmware Waking 
2737Vector(s).
2738
2739Example Code and Data Size: These are the sizes for the OS-independent 
2740acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2741debug version of the code includes the debug output trace mechanism and has a 
2742much larger code and data size.
2743
2744  Previous Release:
2745    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
2746    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
2747  Current Release:
2748    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
2749    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
2750
27512) iASL Compiler/Disassembler and Tools:
2752
2753iASL: Improved disassembly of external method calls. Added the -e option to 
2754allow the inclusion of additional ACPI tables to help with the disassembly of 
2755method invocations and the generation of external declarations during the 
2756disassembly. Certain external method invocations cannot be disassembled 
2757properly without the actual declaration of the method. Use the -e option to 
2758include the table where the external method(s) are actually declared. Most 
2759useful for disassembling SSDTs that make method calls back to the master 
2760DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl -d 
2761-e dsdt.aml ssdt1.aml
2762
2763iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 
2764problem where the use of an alias within a namepath would result in a not 
2765found error or cause the compiler to fault. Also now allows forward 
2766references from the Alias operator itself. ACPICA BZ 738.
2767
2768----------------------------------------
276926 September 2008. Summary of changes for version 20080926:
2770
27711) ACPI CA Core Subsystem:
2772
2773Designed and implemented a mechanism to validate predefined ACPI methods and 
2774objects. This code validates the predefined ACPI objects (objects whose names 
2775start with underscore) that appear in the namespace, at the time they are 
2776evaluated. The argument count and the type of the returned object are 
2777validated against the ACPI specification. The purpose of this validation is 
2778to detect problems with the BIOS-implemented predefined ACPI objects before 
2779the results are returned to the ACPI-related drivers. Future enhancements may 
2780include actual repair of incorrect return objects where possible. Two new 
2781files are nspredef.c and acpredef.h.
2782
2783Fixed a fault in the AML parser if a memory allocation fails during the Op 
2784completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
2785
2786Fixed an issue with implicit return compatibility. This change improves the 
2787implicit return mechanism to be more compatible with the MS interpreter. Lin 
2788Ming, ACPICA BZ 349.
2789
2790Implemented support for zero-length buffer-to-string conversions. Allow zero 
2791length strings during interpreter buffer-to-string conversions. For example, 
2792during the ToDecimalString and ToHexString operators, as well as implicit 
2793conversions. Fiodor Suietov, ACPICA BZ 585.
2794
2795Fixed two possible memory leaks in the error exit paths of 
2796AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are 
2797similar in that they use a stack of state objects in order to eliminate 
2798recursion. The stack must be fully unwound and deallocated if an error 
2799occurs. Lin Ming. ACPICA BZ 383.
2800
2801Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global 
2802ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 
2803Moore ACPICA BZ 442.
2804
2805Removed the obsolete version number in module headers. Removed the 
2806"$Revision" number that appeared in each module header. This version number 
2807was useful under SourceSafe and CVS, but has no meaning under git. It is not 
2808only incorrect, it could also be misleading.
2809
2810Example Code and Data Size: These are the sizes for the OS-independent 
2811acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2812debug version of the code includes the debug output trace mechanism and has a 
2813much larger code and data size.
2814
2815  Previous Release:
2816    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2817    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
2818  Current Release:
2819    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
2820    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
2821
2822----------------------------------------
282329 August 2008. Summary of changes for version 20080829:
2824
28251) ACPI CA Core Subsystem:
2826
2827Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 
2828Reference. Changes include the elimination of cheating on the Object field 
2829for the DdbHandle subtype, addition of a reference class field to 
2830differentiate the various reference types (instead of an AML opcode), and the 
2831cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
2832
2833Reduce an error to a warning for an incorrect method argument count. 
2834Previously aborted with an error if too few arguments were passed to a 
2835control method via the external ACPICA interface. Now issue a warning instead 
2836and continue. Handles the case where the method inadvertently declares too 
2837many arguments, but does not actually use the extra ones. Applies mainly to 
2838the predefined methods. Lin Ming. Linux BZ 11032.
2839
2840Disallow the evaluation of named object types with no intrinsic value. Return 
2841AE_TYPE for objects that have no value and therefore evaluation is undefined: 
2842Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of 
2843these types were allowed, but an exception would be generated at some point 
2844during the evaluation. Now, the error is generated up front.
2845
2846Fixed a possible memory leak in the AcpiNsGetExternalPathname function 
2847(nsnames.c). Fixes a leak in the error exit path.
2848
2849Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug 
2850levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION 
2851interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 
2852ACPI_LV_EVENTS.
2853
2854Removed obsolete and/or unused exception codes from the acexcep.h header. 
2855There is the possibility that certain device drivers may be affected if they 
2856use any of these exceptions.
2857
2858The ACPICA documentation has been added to the public git source tree, under 
2859acpica/documents. Included are the ACPICA programmer reference, the iASL 
2860compiler reference, and the changes.txt release logfile.
2861
2862Example Code and Data Size: These are the sizes for the OS-independent 
2863acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2864debug version of the code includes the debug output trace mechanism and has a 
2865much larger code and data size.
2866
2867  Previous Release:
2868    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2869    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
2870  Current Release:
2871    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2872    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
2873
28742) iASL Compiler/Disassembler and Tools:
2875
2876Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 
2877defines _SCP with 3 arguments. Previous versions defined it with only 1 
2878argument. iASL now allows both definitions.
2879
2880iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero-
2881length subtables when disassembling ACPI tables. Also fixed a couple of 
2882errors where a full 16-bit table type field was not extracted from the input 
2883properly.
2884
2885acpisrc: Improve comment counting mechanism for generating source code 
2886statistics. Count first and last lines of multi-line comments as whitespace, 
2887not comment lines. Handle Linux legal header in addition to standard acpica 
2888header.
2889
2890----------------------------------------
2891
289229 July 2008. Summary of changes for version 20080729:
2893
28941) ACPI CA Core Subsystem:
2895
2896Fix a possible deadlock in the GPE dispatch. Remove call to 
2897AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt 
2898to acquire the GPE lock but can deadlock since the GPE lock is already held 
2899at dispatch time. This code was introduced in version 20060831 as a response 
2900to Linux BZ 6881 and has since been removed from Linux.
2901
2902Add a function to dereference returned reference objects. Examines the return 
2903object from a call to AcpiEvaluateObject. Any Index or RefOf references are 
2904automatically dereferenced in an attempt to return something useful (these 
2905reference types cannot be converted into an external ACPI_OBJECT.) Provides 
2906MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
2907
2908x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 
2909subtables for the MADT and one new subtable for the SRAT. Includes 
2910disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC 
2911Specification, June 2008.
2912
2913Additional error checking for pathname utilities. Add error check after all 
2914calls to AcpiNsGetPathnameLength. Add status return from 
2915AcpiNsBuildExternalPath and check after all calls. Add parameter validation 
2916to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
2917
2918Return status from the global init function AcpiUtGlobalInitialize. This is 
2919used by both the kernel subsystem and the utilities such as iASL compiler. 
2920The function could possibly fail when the caches are initialized. Yang Yi.
2921
2922Add a function to decode reference object types to strings. Created for 
2923improved error messages. 
2924
2925Improve object conversion error messages. Better error messages during object 
2926conversion from internal to the external ACPI_OBJECT. Used for external calls 
2927to AcpiEvaluateObject.
2928
2929Example Code and Data Size: These are the sizes for the OS-independent 
2930acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
2931debug version of the code includes the debug output trace mechanism and has a 
2932much larger code and data size.
2933
2934  Previous Release:
2935    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
2936    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
2937  Current Release:
2938    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2939    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
2940
29412) iASL Compiler/Disassembler and Tools:
2942
2943Debugger: fix a possible hang when evaluating non-methods. Fixes a problem 
2944introduced in version 20080701. If the object being evaluated (via execute 
2945command) is not a method, the debugger can hang while trying to obtain non-
2946existent parameters.
2947
2948iASL: relax error for using reserved "_T_x" identifiers. These names can 
2949appear in a disassembled ASL file if they were emitted by the original 
2950compiler. Instead of issuing an error or warning and forcing the user to 
2951manually change these names, issue a remark instead.
2952
2953iASL: error if named object created in while loop. Emit an error if any named 
2954object is created within a While loop. If allowed, this code will generate a 
2955run-time error on the second iteration of the loop when an attempt is made to 
2956create the same named object twice. ACPICA bugzilla 730.
2957
2958iASL: Support absolute pathnames for include files. Add support for absolute 
2959pathnames within the Include operator. previously, only relative pathnames 
2960were supported.
2961
2962iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor. 
2963The ACPI spec requires one interrupt minimum. BZ 423
2964
2965iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 
2966Handles the case for the Interrupt Resource Descriptor where
2967the ResourceSource argument is omitted but ResourceSourceIndex
2968is present. Now leave room for the Index. BZ 426
2969
2970iASL: Prevent error message if CondRefOf target does not exist. Fixes cases 
2971where an error message is emitted if the target does not exist. BZ 516
2972
2973iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 
2974(get ACPI tables on Windows). This was apparently broken in version 20070919.
2975
2976AcpiXtract: Handle EOF while extracting data. Correctly handle the case where 
2977the EOF happens immediately after the last table in the input file. Print 
2978completion message. Previously, no message was displayed in this case.
2979
2980----------------------------------------
298101 July 2008. Summary of changes for version 20080701:
2982
29830) Git source tree / acpica.org
2984
2985Fixed a problem where a git-clone from http would not transfer the entire 
2986source tree.
2987
29881) ACPI CA Core Subsystem:
2989
2990Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 
2991enable bit. Now performs a read-change-write of the enable register instead 
2992of simply writing out the cached enable mask. This will prevent inadvertent 
2993enabling of GPEs if a rogue GPE is received during initialization (before GPE 
2994handlers are installed.)
2995
2996Implemented a copy for dynamically loaded tables. Previously, dynamically 
2997loaded tables were simply mapped - but on some machines this memory is 
2998corrupted after suspend. Now copy the table to a local buffer. For the 
2999OpRegion case, added checksum verify. Use the table length from the table 
3000header, not the region length. For the Buffer case, use the table length 
3001also. Dennis Noordsij, Bob Moore. BZ 10734
3002
3003Fixed a problem where the same ACPI table could not be dynamically loaded and 
3004unloaded more than once. Without this change, a table cannot be loaded again 
3005once it has been loaded/unloaded one time. The current mechanism does not 
3006unregister a table upon an unload. During a load, if the same table is found, 
3007this no longer returns an exception. BZ 722
3008
3009Fixed a problem where the wrong descriptor length was calculated for the 
3010EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag 
3011are calculated as 12 bytes long, but the actual length in the internal 
3012descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported 
3013by Linn Crosetto. BZ 728
3014
3015Fixed a possible memory leak in the Unload operator. The DdbHandle returned 
3016by Load() did not have its reference count decremented during unload, leading 
3017to a memory leak. Lin Ming. BZ 727
3018
3019Fixed a possible memory leak when deleting thermal/processor objects. Any 
3020associated notify handlers (and objects) were not being deleted. Fiodor 
3021Suietov. BZ 506
3022
3023Fixed the ordering of the ASCII names in the global mutex table to match the 
3024actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only. 
3025Vegard Nossum. BZ 726
3026
3027Enhanced the AcpiGetObjectInfo interface to return the number of required 
3028arguments if the object is a control method. Added this call to the debugger 
3029so the proper number of default arguments are passed to a method. This 
3030prevents a warning when executing methods from AcpiExec.
3031
3032Added a check for an invalid handle in AcpiGetObjectInfo. Return 
3033AE_BAD_PARAMETER if input handle is invalid. BZ 474
3034
3035Fixed an extraneous warning from exconfig.c on the 64-bit build.
3036
3037Example Code and Data Size: These are the sizes for the OS-independent 
3038acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3039debug version of the code includes the debug output trace mechanism and has a 
3040much larger code and data size.
3041
3042  Previous Release:
3043    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
3044    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
3045  Current Release:
3046    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
3047    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
3048
30492) iASL Compiler/Disassembler and Tools:
3050
3051iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 
3052resource descriptor names.
3053
3054iASL: Detect invalid ASCII characters in input (windows version). Removed the 
3055"-CF" flag from the flex compile, enables correct detection of non-ASCII 
3056characters in the input. BZ 441
3057
3058iASL: Eliminate warning when result of LoadTable is not used. Eliminate the 
3059"result of operation not used" warning when the DDB handle returned from 
3060LoadTable is not used. The warning is not needed. BZ 590
3061
3062AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to 
3063pass address of table to the AML. Added option to disable OpRegion simulation 
3064to allow creation of an OpRegion with a real address that was passed to _CFG. 
3065All of this allows testing of the Load and Unload operators from AcpiExec.
3066
3067Debugger: update tables command for unloaded tables. Handle unloaded tables 
3068and use the standard table header output routine.
3069
3070----------------------------------------
307109 June 2008. Summary of changes for version 20080609:
3072
30731) ACPI CA Core Subsystem:
3074
3075Implemented a workaround for reversed _PRT entries. A significant number of 
3076BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 
3077change dynamically detects and repairs this problem. Provides compatibility 
3078with MS ACPI. BZ 6859
3079
3080Simplified the internal ACPI hardware interfaces to eliminate the locking 
3081flag parameter from Register Read/Write. Added a new external interface, 
3082AcpiGetRegisterUnlocked.
3083
3084Fixed a problem where the invocation of a GPE control method could hang. This 
3085was a regression introduced in 20080514. The new method argument count 
3086validation mechanism can enter an infinite loop when a GPE method is 
3087dispatched. Problem fixed by removing the obsolete code that passed GPE block 
3088information to the notify handler via the control method parameter pointer.
3089
3090Fixed a problem where the _SST execution status was incorrectly returned to 
3091the caller of AcpiEnterSleepStatePrep. This was a regression introduced in 
309220080514. _SST is optional and a NOT_FOUND exception should never be 
3093returned. BZ 716
3094
3095Fixed a problem where a deleted object could be accessed from within the AML 
3096parser. This was a regression introduced in version 20080123 as a fix for the 
3097Unload operator. Lin Ming. BZ 10669
3098
3099Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands 
3100and eliminated the use of a negative index in a loop. Operands are now 
3101displayed in the correct order, not backwards. This also fixes a regression 
3102introduced in 20080514 on 64-bit systems where the elimination of 
3103ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715
3104
3105Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit 
3106path did not delete a locally allocated structure.
3107
3108Updated definitions for the DMAR and SRAT tables to synchronize with the 
3109current specifications. Includes disassembler support.
3110
3111Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 
3112loop termination value was used. Loop terminated on iteration early, missing 
3113one mutex. Linn Crosetto
3114
3115Example Code and Data Size: These are the sizes for the OS-independent 
3116acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3117debug version of the code includes the debug output trace mechanism and has a 
3118much larger code and data size.
3119
3120  Previous Release:
3121    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
3122    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
3123  Current Release:
3124    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
3125    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
3126
31272) iASL Compiler/Disassembler and Tools:
3128
3129Disassembler: Implemented support for EisaId() within _CID objects. Now 
3130disassemble integer _CID objects back to EisaId invocations, including 
3131multiple integers within _CID packages. Includes single-step support for 
3132debugger also.
3133
3134Disassembler: Added support for DMAR and SRAT table definition changes.
3135
3136----------------------------------------
313714 May 2008. Summary of changes for version 20080514:
3138
31391) ACPI CA Core Subsystem:
3140
3141Fixed a problem where GPEs were enabled too early during the ACPICA 
3142initialization. This could lead to "handler not installed" errors on some 
3143machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This 
3144ensures that all operation regions and devices throughout the namespace have 
3145been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
3146
3147Implemented a change to the enter sleep code. Moved execution of the _GTS 
3148method to just before setting sleep enable bit. The execution was moved from 
3149AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 
3150immediately before the SLP_EN bit is set, as per the ACPI specification. 
3151Luming Yu, BZ 1653.
3152
3153Implemented a fix to disable unknown GPEs (2nd version). Now always disable 
3154the GPE, even if ACPICA thinks that that it is already disabled. It is 
3155possible that the AML or some other code has enabled the GPE unbeknownst to 
3156the ACPICA code.
3157
3158Fixed a problem with the Field operator where zero-length fields would return 
3159an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL 
3160field declarations in Field(), BankField(), and IndexField(). BZ 10606.
3161
3162Implemented a fix for the Load operator, now load the table at the namespace 
3163root. This reverts a change introduced in version 20071019. The table is now 
3164loaded at the namespace root even though this goes against the ACPI 
3165specification. This provides compatibility with other ACPI implementations. 
3166The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming.
3167
3168Fixed a problem where ACPICA would not Load() tables with unusual signatures. 
3169Now ignore ACPI table signature for Load() operator. Only "SSDT" is 
3170acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 
3171Therefore, signature validation is worthless. Apparently MS ACPI accepts such 
3172signatures, ACPICA must be compatible. BZ 10454.
3173
3174Fixed a possible negative array index in AcpiUtValidateException. Added NULL 
3175fields to the exception string arrays to eliminate a -1 subtraction on the 
3176SubStatus field.
3177
3178Updated the debug tracking macros to reduce overall code and data size. 
3179Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 
3180instead of pointers to static strings. Jan Beulich and Bob Moore.
3181
3182Implemented argument count checking in control method invocation via 
3183AcpiEvaluateObject. Now emit an error if too few arguments, warning if too 
3184many. This applies only to extern programmatic control method execution, not 
3185method-to-method calls within the AML. Lin Ming.
3186
3187Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no 
3188longer needed, especially with the removal of 16-bit support. It was replaced 
3189mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on 
319032/64-bit platforms is required.
3191
3192Added the C const qualifier for appropriate string constants -- mostly 
3193MODULE_NAME and printf format strings. Jan Beulich.
3194
3195Example Code and Data Size: These are the sizes for the OS-independent 
3196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3197debug version of the code includes the debug output trace mechanism and has a 
3198much larger code and data size.
3199
3200  Previous Release:
3201    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
3202    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
3203  Current Release:
3204    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
3205    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
3206
32072) iASL Compiler/Disassembler and Tools:
3208
3209Implemented ACPI table revision ID validation in the disassembler. Zero is 
3210always invalid. For DSDTs, the ID controls the interpreter integer width. 1 
3211means 32-bit and this is unusual. 2 or greater is 64-bit.
3212
3213----------------------------------------
321421 March 2008. Summary of changes for version 20080321:
3215
32161) ACPI CA Core Subsystem:
3217
3218Implemented an additional change to the GPE support in order to suppress 
3219spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently 
3220disable incoming GPEs that are neither enabled nor disabled -- meaning that 
3221the GPE is unknown to the system. This should prevent future interrupt floods 
3222from that GPE. BZ 6217 (Zhang Rui)
3223
3224Fixed a problem where NULL package elements were not returned to the 
3225AcpiEvaluateObject interface correctly. The element was simply ignored 
3226instead of returning a NULL ACPI_OBJECT package element, potentially causing 
3227a buffer overflow and/or confusing the caller who expected a fixed number of 
3228elements. BZ 10132 (Lin Ming, Bob Moore)
3229
3230Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword, 
3231Qword), Field, BankField, and IndexField operators when invoked from inside 
3232an executing control method. In this case, these operators created namespace 
3233nodes that were incorrectly left marked as permanent nodes instead of 
3234temporary nodes. This could cause a problem if there is race condition 
3235between an exiting control method and a running namespace walk. (Reported by 
3236Linn Crosetto)
3237
3238Fixed a problem where the CreateField and CreateXXXField operators would 
3239incorrectly allow duplicate names (the name of the field) with no exception 
3240generated.
3241
3242Implemented several changes for Notify handling. Added support for new Notify 
3243values (ACPI 2.0+) and improved the Notify debug output. Notify on 
3244PowerResource objects is no longer allowed, as per the ACPI specification. 
3245(Bob Moore, Zhang Rui)
3246
3247All Reference Objects returned via the AcpiEvaluateObject interface are now 
3248marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for 
3249NULL objects - either NULL package elements or unresolved named references.
3250
3251Fixed a problem where an extraneous debug message was produced for package 
3252objects (when debugging enabled). The message "Package List length larger 
3253than NumElements count" is now produced in the correct case, and is now an 
3254error message rather than a debug message. Added a debug message for the 
3255opposite case, where NumElements is larger than the Package List (the package 
3256will be padded out with NULL elements as per the ACPI spec.)
3257
3258Implemented several improvements for the output of the ASL "Debug" object to 
3259clarify and keep all data for a given object on one output line.
3260
3261Fixed two size calculation issues with the variable-length Start Dependent 
3262resource descriptor.
3263
3264Example Code and Data Size: These are the sizes for the OS-independent 
3265acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3266debug version of the code includes the debug output trace mechanism and has 
3267a much larger code and data size.
3268
3269  Previous Release:
3270    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
3271    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
3272  Current Release:
3273    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
3274    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
3275
32762) iASL Compiler/Disassembler and Tools:
3277
3278Fixed a problem with the use of the Switch operator where execution of the 
3279containing method by multiple concurrent threads could cause an 
3280AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 
3281actual Switch opcode, it must be simulated with local named temporary 
3282variables and if/else pairs. The solution chosen was to mark any method that 
3283uses Switch as Serialized, thus preventing multiple thread entries. BZ 469.
3284
3285----------------------------------------
328613 February 2008. Summary of changes for version 20080213:
3287
32881) ACPI CA Core Subsystem:
3289
3290Implemented another MS compatibility design change for GPE/Notify handling. 
3291GPEs are now cleared/enabled asynchronously to allow all pending notifies to 
3292complete first. It is expected that the OSL will queue the enable request 
3293behind all pending notify requests (may require changes to the local host OSL 
3294in AcpiOsExecute). Alexey Starikovskiy.
3295
3296Fixed a problem where buffer and package objects passed as arguments to a 
3297control method via the external AcpiEvaluateObject interface could cause an 
3298AE_AML_INTERNAL exception depending on the order and type of operators 
3299executed by the target control method.
3300
3301Fixed a problem where resource descriptor size optimization could cause a 
3302problem when a _CRS resource template is passed to a _SRS method. The _SRS 
3303resource template must use the same descriptors (with the same size) as 
3304returned from _CRS. This change affects the following resource descriptors: 
3305IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487)
3306
3307Fixed a problem where a CopyObject to RegionField, BankField, and IndexField 
3308objects did not perform an implicit conversion as it should. These types must 
3309retain their initial type permanently as per the ACPI specification. However, 
3310a CopyObject to all other object types should not perform an implicit 
3311conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
3312
3313Fixed a problem with the AcpiGetDevices interface where the mechanism to 
3314match device CIDs did not examine the entire list of available CIDs, but 
3315instead aborted on the first non-matching CID. Andrew Patterson.
3316
3317Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was 
3318inadvertently changed to return a 16-bit value instead of a 32-bit value, 
3319truncating the upper dword of a 64-bit value. This macro is only used to 
3320display debug output, so no incorrect calculations were made. Also, 
3321reimplemented the macro so that a 64-bit shift is not performed by 
3322inefficient compilers.
3323
3324Added missing va_end statements that should correspond with each va_start 
3325statement.
3326
3327Example Code and Data Size: These are the sizes for the OS-independent 
3328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3329debug version of the code includes the debug output trace mechanism and has 
3330a much larger code and data size.
3331
3332  Previous Release:
3333    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
3334    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
3335  Current Release:
3336    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
3337    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
3338
33392) iASL Compiler/Disassembler and Tools:
3340
3341Implemented full disassembler support for the following new ACPI tables: 
3342BERT, EINJ, and ERST. Implemented partial disassembler support for the 
3343complicated HEST table. These tables support the Windows Hardware Error 
3344Architecture (WHEA).
3345
3346----------------------------------------
334723 January 2008. Summary of changes for version 20080123:
3348
33491) ACPI CA Core Subsystem:
3350
3351Added the 2008 copyright to all module headers and signons. This affects 
3352virtually every file in the ACPICA core subsystem, the iASL compiler, and 
3353the tools/utilities.
3354
3355Fixed a problem with the SizeOf operator when used with Package and Buffer 
3356objects. These objects have deferred execution for some arguments, and the 
3357execution is now completed before the SizeOf is executed. This problem caused 
3358unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ 
33599558
3360
3361Implemented an enhancement to the interpreter "slack mode". In the absence of 
3362an explicit return or an implicitly returned object from the last executed 
3363opcode, a control method will now implicitly return an integer of value 0 for 
3364Microsoft compatibility. (Lin Ming) BZ 392
3365
3366Fixed a problem with the Load operator where an exception was not returned in 
3367the case where the table is already loaded. (Lin Ming) BZ 463
3368
3369Implemented support for the use of DDBHandles as an Indexed Reference, as per 
3370the ACPI spec. (Lin Ming) BZ 486
3371
3372Implemented support for UserTerm (Method invocation) for the Unload operator 
3373as per the ACPI spec. (Lin Ming) BZ 580
3374
3375Fixed a problem with the LoadTable operator where the OemId and OemTableId 
3376input strings could cause unexpected failures if they were shorter than the 
3377maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
3378
3379Implemented support for UserTerm (Method invocation) for the Unload operator 
3380as per the ACPI spec. (Lin Ming) BZ 580
3381
3382Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST, 
3383IBFT, UEFI, WDAT. Disassembler support is forthcoming.
3384
3385Example Code and Data Size: These are the sizes for the OS-independent 
3386acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3387debug version of the code includes the debug output trace mechanism and has 
3388a much larger code and data size.
3389
3390  Previous Release:
3391    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
3392    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
3393  Current Release:
3394    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
3395    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
3396
33972) iASL Compiler/Disassembler and Tools:
3398
3399Implemented support in the disassembler for checksum validation on incoming 
3400binary DSDTs and SSDTs. If incorrect, a message is displayed within the table 
3401header dump at the start of the disassembly.
3402
3403Implemented additional debugging information in the namespace listing file 
3404created during compilation. In addition to the namespace hierarchy, the full 
3405pathname to each namespace object is displayed.
3406
3407Fixed a problem with the disassembler where invalid ACPI tables could cause 
3408faults or infinite loops.
3409
3410Fixed an unexpected parse error when using the optional "parameter types" 
3411list in a control method declaration. (Lin Ming) BZ 397
3412
3413Fixed a problem where two External declarations with the same name did not 
3414cause an error (Lin Ming) BZ 509
3415
3416Implemented support for full TermArgs (adding Argx, Localx and method 
3417invocation) for the ParameterData parameter to the LoadTable operator. (Lin 
3418Ming) BZ 583,587
3419
3420----------------------------------------
342119 December 2007. Summary of changes for version 20071219:
3422
34231) ACPI CA Core Subsystem:
3424
3425Implemented full support for deferred execution for the TermArg string 
3426arguments for DataTableRegion. This enables forward references and full 
3427operand resolution for the three string arguments. Similar to OperationRegion 
3428deferred argument execution.) Lin Ming. BZ 430
3429
3430Implemented full argument resolution support for the BankValue argument to 
3431BankField. Previously, only constants were supported, now any TermArg may be 
3432used. Lin Ming BZ 387, 393
3433
3434Fixed a problem with AcpiGetDevices where the search of a branch of the 
3435device tree could be terminated prematurely. In accordance with the ACPI 
3436specification, the search down the current branch is terminated if a device 
3437is both not present and not functional (instead of just not present.) Yakui 
3438Zhao.
3439
3440Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if 
3441the underlying AML code changed the GPE enable registers. Now, any unknown 
3442incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled 
3443instead of simply ignored. Rui Zhang.
3444
3445Fixed a problem with Index Fields where the Index register was incorrectly 
3446limited to a maximum of 32 bits. Now any size may be used.
3447
3448Fixed a couple memory leaks associated with "implicit return" objects when 
3449the AML Interpreter slack mode is enabled. Lin Ming BZ 349
3450
3451Example Code and Data Size: These are the sizes for the OS-independent 
3452acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3453debug version of the code includes the debug output trace mechanism and has 
3454a much larger code and data size.
3455
3456  Previous Release:
3457    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
3458    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
3459  Current Release:
3460    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
3461    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
3462
3463----------------------------------------
346414 November 2007. Summary of changes for version 20071114:
3465
34661) ACPI CA Core Subsystem:
3467
3468Implemented event counters for each of the Fixed Events, the ACPI SCI 
3469(interrupt) itself, and control methods executed. Named 
3470AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These 
3471should be useful for debugging and statistics.
3472
3473Implemented a new external interface, AcpiGetStatistics, to retrieve the 
3474contents of the various event counters. Returns the current values for 
3475AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 
3476AcpiMethodCount. The interface can be expanded in the future if new counters 
3477are added. Device drivers should use this interface rather than access the 
3478counters directly.
3479
3480Fixed a problem with the FromBCD and ToBCD operators. With some compilers, 
3481the ShortDivide function worked incorrectly, causing problems with the BCD 
3482functions with large input values. A truncation from 64-bit to 32-bit 
3483inadvertently occurred. Internal BZ 435. Lin Ming
3484
3485Fixed a problem with Index references passed as method arguments. References 
3486passed as arguments to control methods were dereferenced immediately (before 
3487control was passed to the called method). The references are now correctly 
3488passed directly to the called method. BZ 5389. Lin Ming
3489
3490Fixed a problem with CopyObject used in conjunction with the Index operator. 
3491The reference was incorrectly dereferenced before the copy. The reference is 
3492now correctly copied. BZ 5391. Lin Ming
3493
3494Fixed a problem with Control Method references within Package objects. These 
3495references are now correctly generated. This completes the package 
3496construction overhaul that began in version 20071019.
3497
3498Example Code and Data Size: These are the sizes for the OS-independent 
3499acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3500debug version of the code includes the debug output trace mechanism and has 
3501a much larger code and data size.
3502
3503  Previous Release:
3504    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
3505    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
3506  Current Release:
3507    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
3508    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
3509
3510
35112) iASL Compiler/Disassembler and Tools:
3512
3513The AcpiExec utility now installs handlers for all of the predefined 
3514Operation Region types. New types supported are: PCI_Config, CMOS, and 
3515PCIBARTarget.
3516
3517Fixed a problem with the 64-bit version of AcpiExec where the extended (64-
3518bit) address fields for the DSDT and FACS within the FADT were not being 
3519used, causing truncation of the upper 32-bits of these addresses. Lin Ming 
3520and Bob Moore
3521
3522----------------------------------------
352319 October 2007. Summary of changes for version 20071019:
3524
35251) ACPI CA Core Subsystem:
3526
3527Fixed a problem with the Alias operator when the target of the alias is a 
3528named ASL operator that opens a new scope -- Scope, Device, PowerResource, 
3529Processor, and ThermalZone. In these cases, any children of the original 
3530operator could not be accessed via the alias, potentially causing unexpected 
3531AE_NOT_FOUND exceptions. (BZ 9067)
3532
3533Fixed a problem with the Package operator where all named references were 
3534created as object references and left otherwise unresolved. According to the 
3535ACPI specification, a Package can only contain Data Objects or references to 
3536control methods. The implication is that named references to Data Objects 
3537(Integer, Buffer, String, Package, BufferField, Field) should be resolved 
3538immediately upon package creation. This is the approach taken with this 
3539change. References to all other named objects (Methods, Devices, Scopes, 
3540etc.) are all now properly created as reference objects. (BZ 5328)
3541
3542Reverted a change to Notify handling that was introduced in version 
354320070508. This version changed the Notify handling from asynchronous to 
3544fully synchronous (Device driver Notify handling with respect to the Notify 
3545ASL operator). It was found that this change caused more problems than it 
3546solved and was removed by most users.
3547
3548Fixed a problem with the Increment and Decrement operators where the type of 
3549the target object could be unexpectedly and incorrectly changed. (BZ 353) 
3550Lin Ming.
3551
3552Fixed a problem with the Load and LoadTable operators where the table 
3553location within the namespace was ignored. Instead, the table was always 
3554loaded into the root or current scope. Lin Ming.
3555
3556Fixed a problem with the Load operator when loading a table from a buffer 
3557object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
3558
3559Fixed a problem with the Debug object where a store of a DdbHandle reference 
3560object to the Debug object could cause a fault.
3561
3562Added a table checksum verification for the Load operator, in the case where 
3563the load is from a buffer. (BZ 578).
3564
3565Implemented additional parameter validation for the LoadTable operator. The 
3566length of the input strings SignatureString, OemIdString, and OemTableId are 
3567now checked for maximum lengths. (BZ 582) Lin Ming.
3568
3569Example Code and Data Size: These are the sizes for the OS-independent 
3570acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3571debug version of the code includes the debug output trace mechanism and has 
3572a much larger code and data size.
3573
3574  Previous Release:
3575    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
3576    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
3577  Current Release:
3578    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
3579    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
3580
3581
35822) iASL Compiler/Disassembler:
3583
3584Fixed a problem where if a single file was specified and the file did not 
3585exist, no error message was emitted. (Introduced with wildcard support in 
3586version 20070917.)
3587
3588----------------------------------------
358919 September 2007. Summary of changes for version 20070919:
3590
35911) ACPI CA Core Subsystem:
3592
3593Designed and implemented new external interfaces to install and remove 
3594handlers for ACPI table-related events. Current events that are defined are 
3595LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 
3596they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 
3597AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
3598
3599Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 
3600(acpi_serialized option on Linux) could cause some systems to hang during 
3601initialization. (Bob Moore) BZ 8171
3602
3603Fixed a problem where objects of certain types (Device, ThermalZone, 
3604Processor, PowerResource) can be not found if they are declared and 
3605referenced from within the same control method (Lin Ming) BZ 341
3606
3607Example Code and Data Size: These are the sizes for the OS-independent 
3608acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3609debug version of the code includes the debug output trace mechanism and has 
3610a much larger code and data size.
3611
3612  Previous Release:
3613    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
3614    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
3615  Current Release:
3616    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
3617    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
3618
3619
36202) iASL Compiler/Disassembler:
3621
3622Implemented support to allow multiple files to be compiled/disassembled in a 
3623single invocation. This includes command line wildcard support for both the 
3624Windows and Unix versions of the compiler. This feature simplifies the 
3625disassembly and compilation of multiple ACPI tables in a single directory.
3626
3627----------------------------------------
362808 May 2007. Summary of changes for version 20070508:
3629
36301) ACPI CA Core Subsystem:
3631
3632Implemented a Microsoft compatibility design change for the handling of the 
3633Notify AML operator. Previously, notify handlers were dispatched and 
3634executed completely asynchronously in a deferred thread. The new design 
3635still executes the notify handlers in a different thread, but the original 
3636thread that executed the Notify() now waits at a synchronization point for 
3637the notify handler to complete. Some machines depend on a synchronous Notify 
3638operator in order to operate correctly.
3639
3640Implemented support to allow Package objects to be passed as method 
3641arguments to the external AcpiEvaluateObject interface. Previously, this 
3642would return the AE_NOT_IMPLEMENTED exception. This feature had not been 
3643implemented since there were no reserved control methods that required it 
3644until recently.
3645
3646Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that 
3647contained invalid non-zero values in reserved fields could cause later 
3648failures because these fields have meaning in later revisions of the FADT. 
3649For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields 
3650are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
3651
3652Fixed a problem where the Global Lock handle was not properly updated if a 
3653thread that acquired the Global Lock via executing AML code then attempted 
3654to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe 
3655Liu.
3656
3657Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 
3658could be corrupted if the interrupt being removed was at the head of the 
3659list. Reported by Linn Crosetto.
3660
3661Example Code and Data Size: These are the sizes for the OS-independent 
3662acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3663debug version of the code includes the debug output trace mechanism and has 
3664a much larger code and data size.
3665
3666  Previous Release:
3667    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
3668    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
3669  Current Release:
3670    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
3671    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
3672
3673----------------------------------------
367420 March 2007. Summary of changes for version 20070320:
3675
36761) ACPI CA Core Subsystem:
3677
3678Implemented a change to the order of interpretation and evaluation of AML 
3679operand objects within the AML interpreter. The interpreter now evaluates 
3680operands in the order that they appear in the AML stream (and the 
3681corresponding ASL code), instead of in the reverse order (after the entire 
3682operand list has been parsed). The previous behavior caused several subtle 
3683incompatibilities with the Microsoft AML interpreter as well as being 
3684somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
3685
3686Implemented a change to the ACPI Global Lock support. All interfaces to the 
3687global lock now allow the same thread to acquire the lock multiple times. 
3688This affects the AcpiAcquireGlobalLock external interface to the global lock 
3689as well as the internal use of the global lock to support AML fields -- a 
3690control method that is holding the global lock can now simultaneously access 
3691AML fields that require global lock protection. Previously, in both cases, 
3692this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to 
3693AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 
3694Controller. There is no change to the behavior of the AML Acquire operator, 
3695as this can already be used to acquire a mutex multiple times by the same 
3696thread. BZ 8066. With assistance from Alexey Starikovskiy.
3697
3698Fixed a problem where invalid objects could be referenced in the AML 
3699Interpreter after error conditions. During operand evaluation, ensure that 
3700the internal "Return Object" field is cleared on error and only valid 
3701pointers are stored there. Caused occasional access to deleted objects that 
3702resulted in "large reference count" warning messages. Valery Podrezov.
3703
3704Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on 
3705deeply nested control method invocations. BZ 7873, local BZ 487. Valery 
3706Podrezov.
3707
3708Fixed an internal problem with the handling of result objects on the 
3709interpreter result stack. BZ 7872. Valery Podrezov.
3710
3711Removed obsolete code that handled the case where AML_NAME_OP is the target 
3712of a reference (Reference.Opcode). This code was no longer necessary. BZ 
37137874. Valery Podrezov.
3714
3715Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a 
3716remnant from the previously discontinued 16-bit support.
3717
3718Example Code and Data Size: These are the sizes for the OS-independent 
3719acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3720debug version of the code includes the debug output trace mechanism and has 
3721a much larger code and data size.
3722
3723  Previous Release:
3724    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
3725    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
3726  Current Release:
3727    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
3728    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
3729
3730----------------------------------------
373126 January 2007. Summary of changes for version 20070126:
3732
37331) ACPI CA Core Subsystem:
3734
3735Added the 2007 copyright to all module headers and signons. This affects 
3736virtually every file in the ACPICA core subsystem, the iASL compiler, and 
3737the utilities.
3738
3739Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 
3740during a table load. A bad pointer was passed in the case where the DSDT is 
3741overridden, causing a fault in this case.
3742
3743Example Code and Data Size: These are the sizes for the OS-independent 
3744acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3745debug version of the code includes the debug output trace mechanism and has 
3746a much larger code and data size.
3747
3748  Previous Release:
3749    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
3750    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
3751  Current Release:
3752    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
3753    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
3754
3755----------------------------------------
375615 December 2006. Summary of changes for version 20061215:
3757
37581) ACPI CA Core Subsystem:
3759
3760Support for 16-bit ACPICA has been completely removed since it is no longer 
3761necessary and it clutters the code. All 16-bit macros, types, and 
3762conditional compiles have been removed, cleaning up and simplifying the code 
3763across the entire subsystem. DOS support is no longer needed since the 
3764bootable Linux firmware kit is now available.
3765
3766The handler for the Global Lock is now removed during AcpiTerminate to 
3767enable a clean subsystem restart, via the implementation of the 
3768AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 
3769HP)
3770
3771Implemented enhancements to the multithreading support within the debugger 
3772to enable improved multithreading debugging and evaluation of the subsystem. 
3773(Valery Podrezov)
3774
3775Debugger: Enhanced the Statistics/Memory command to emit the total (maximum) 
3776memory used during the execution, as well as the maximum memory consumed by 
3777each of the various object types. (Valery Podrezov)
3778
3779Example Code and Data Size: These are the sizes for the OS-independent 
3780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3781debug version of the code includes the debug output trace mechanism and has 
3782a much larger code and data size.
3783
3784  Previous Release:
3785    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
3786    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
3787  Current Release:
3788    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
3789    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
3790
3791
37922) iASL Compiler/Disassembler and Tools:
3793
3794AcpiExec: Implemented a new option (-m) to display full memory use 
3795statistics upon subsystem/program termination. (Valery Podrezov)
3796
3797----------------------------------------
379809 November 2006. Summary of changes for version 20061109:
3799
38001) ACPI CA Core Subsystem:
3801
3802Optimized the Load ASL operator in the case where the source operand is an 
3803operation region. Simply map the operation region memory, instead of 
3804performing a bytewise read. (Region must be of type SystemMemory, see 
3805below.)
3806
3807Fixed the Load ASL operator for the case where the source operand is a 
3808region field. A buffer object is also allowed as the source operand. BZ 480
3809
3810Fixed a problem where the Load ASL operator allowed the source operand to be 
3811an operation region of any type. It is now restricted to regions of type 
3812SystemMemory, as per the ACPI specification. BZ 481
3813
3814Additional cleanup and optimizations for the new Table Manager code.
3815
3816AcpiEnable will now fail if all of the required ACPI tables are not loaded 
3817(FADT, FACS, DSDT). BZ 477
3818
3819Added #pragma pack(8/4) to acobject.h to ensure that the structures in this 
3820header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 
3821manually optimized to be aligned and will not work if it is byte-packed. 
3822
3823Example Code and Data Size: These are the sizes for the OS-independent 
3824acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3825debug version of the code includes the debug output trace mechanism and has 
3826a much larger code and data size.
3827
3828  Previous Release:
3829    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
3830    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
3831  Current Release:
3832    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
3833    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
3834
3835
38362) iASL Compiler/Disassembler and Tools:
3837
3838Fixed a problem where the presence of the _OSI predefined control method 
3839within complex expressions could cause an internal compiler error.
3840
3841AcpiExec: Implemented full region support for multiple address spaces. 
3842SpaceId is now part of the REGION object. BZ 429
3843
3844----------------------------------------
384511 October 2006. Summary of changes for version 20061011:
3846
38471) ACPI CA Core Subsystem:
3848
3849Completed an AML interpreter performance enhancement for control method 
3850execution. Previously a 2-pass parse/execution, control methods are now 
3851completely parsed and executed in a single pass. This improves overall 
3852interpreter performance by ~25%, reduces code size, and reduces CPU stack 
3853use. (Valery Podrezov + interpreter changes in version 20051202 that 
3854eliminated namespace loading during the pass one parse.)
3855
3856Implemented _CID support for PCI Root Bridge detection. If the _HID does not 
3857match the predefined PCI Root Bridge IDs, the _CID list (if present) is now 
3858obtained and also checked for an ID match.
3859
3860Implemented additional support for the PCI _ADR execution: upsearch until a 
3861device scope is found before executing _ADR. This allows PCI_Config 
3862operation regions to be declared locally within control methods underneath 
3863PCI device objects.
3864
3865Fixed a problem with a possible race condition between threads executing 
3866AcpiWalkNamespace and the AML interpreter. This condition was removed by 
3867modifying AcpiWalkNamespace to (by default) ignore all temporary namespace 
3868entries created during any concurrent control method execution. An 
3869additional namespace race condition is known to exist between 
3870AcpiWalkNamespace and the Load/Unload ASL operators and is still under 
3871investigation.
3872
3873Restructured the AML ParseLoop function, breaking it into several 
3874subfunctions in order to reduce CPU stack use and improve maintainability. 
3875(Mikhail Kouzmich)
3876
3877AcpiGetHandle: Fix for parameter validation to detect invalid combinations 
3878of prefix handle and pathname. BZ 478
3879
3880Example Code and Data Size: These are the sizes for the OS-independent 
3881acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3882debug version of the code includes the debug output trace mechanism and has 
3883a much larger code and data size.
3884
3885  Previous Release:
3886    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3887    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
3888  Current Release:
3889    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
3890    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
3891
38922) iASL Compiler/Disassembler and Tools:
3893
3894Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager 
3895to restore original behavior.
3896
3897----------------------------------------
389827 September 2006. Summary of changes for version 20060927:
3899
39001) ACPI CA Core Subsystem:
3901
3902Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 
3903These functions now use a spinlock for mutual exclusion and the interrupt 
3904level indication flag is not needed.
3905
3906Fixed a problem with the Global Lock where the lock could appear to be 
3907obtained before it is actually obtained. The global lock semaphore was 
3908inadvertently created with one unit instead of zero units. (BZ 464) Fiodor 
3909Suietov.
3910
3911Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during 
3912a read from a buffer or region field. (BZ 458) Fiodor Suietov.
3913
3914Example Code and Data Size: These are the sizes for the OS-independent 
3915acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3916debug version of the code includes the debug output trace mechanism and has 
3917a much larger code and data size.
3918
3919  Previous Release:
3920    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3921    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
3922  Current Release:
3923    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3924    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
3925
3926
39272) iASL Compiler/Disassembler and Tools:
3928
3929Fixed a compilation problem with the pre-defined Resource Descriptor field 
3930names where an "object does not exist" error could be incorrectly generated 
3931if the parent ResourceTemplate pathname places the template within a 
3932different namespace scope than the current scope. (BZ 7212)
3933
3934Fixed a problem where the compiler could hang after syntax errors detected 
3935in an ElseIf construct. (BZ 453)
3936
3937Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 
3938operator. An incorrect output filename was produced when this parameter was 
3939a null string (""). Now, the original input filename is used as the AML 
3940output filename, with an ".aml" extension.
3941
3942Implemented a generic batch command mode for the AcpiExec utility (execute 
3943any AML debugger command) (Valery Podrezov).
3944
3945----------------------------------------
394612 September 2006. Summary of changes for version 20060912:
3947
39481) ACPI CA Core Subsystem:
3949
3950Enhanced the implementation of the "serialized mode" of the interpreter 
3951(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 
3952specified, instead of creating a serialization semaphore per control method, 
3953the interpreter lock is simply no longer released before a blocking 
3954operation during control method execution. This effectively makes the AML 
3955Interpreter single-threaded. The overhead of a semaphore per-method is 
3956eliminated.
3957
3958Fixed a regression where an error was no longer emitted if a control method 
3959attempts to create 2 objects of the same name. This once again returns 
3960AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that 
3961will dynamically serialize the control method to possible prevent future 
3962errors. (BZ 440)
3963
3964Integrated a fix for a problem with PCI Express HID detection in the PCI 
3965Config Space setup procedure. (BZ 7145)
3966
3967Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 
3968AcpiHwInitialize function - the FADT registers are now validated when the 
3969table is loaded.
3970
3971Added two new warnings during FADT verification - 1) if the FADT is larger 
3972than the largest known FADT version, and 2) if there is a mismatch between a 
397332-bit block address and the 64-bit X counterpart (when both are non-zero.)
3974
3975Example Code and Data Size: These are the sizes for the OS-independent 
3976acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3977debug version of the code includes the debug output trace mechanism and has 
3978a much larger code and data size.
3979
3980  Previous Release:
3981    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
3982    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
3983  Current Release:
3984    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3985    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
3986
3987
39882) iASL Compiler/Disassembler and Tools:
3989
3990Fixed a problem with the implementation of the Switch() operator where the 
3991temporary variable was declared too close to the actual Switch, instead of 
3992at method level. This could cause a problem if the Switch() operator is 
3993within a while loop, causing an error on the second iteration. (BZ 460)
3994
3995Disassembler - fix for error emitted for unknown type for target of scope 
3996operator. Now, ignore it and continue.
3997
3998Disassembly of an FADT now verifies the input FADT and reports any errors 
3999found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
4000
4001Disassembly of raw data buffers with byte initialization data now prefixes 
4002each output line with the current buffer offset.
4003
4004Disassembly of ASF! table now includes all variable-length data fields at 
4005the end of some of the subtables.
4006
4007The disassembler now emits a comment if a buffer appears to be a 
4008ResourceTemplate, but cannot be disassembled as such because the EndTag does 
4009not appear at the very end of the buffer.
4010
4011AcpiExec - Added the "-t" command line option to enable the serialized mode 
4012of the AML interpreter.
4013
4014----------------------------------------
401531 August 2006. Summary of changes for version 20060831:
4016
40171) ACPI CA Core Subsystem:
4018
4019Miscellaneous fixes for the Table Manager:
4020- Correctly initialize internal common FADT for all 64-bit "X" fields
4021- Fixed a couple table mapping issues during table load
4022- Fixed a couple alignment issues for IA64
4023- Initialize input array to zero in AcpiInitializeTables
4024- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 
4025AcpiGetTableByIndex
4026
4027Change for GPE support: when a "wake" GPE is received, all wake GPEs are now 
4028immediately disabled to prevent the waking GPE from firing again and to 
4029prevent other wake GPEs from interrupting the wake process.
4030
4031Added the AcpiGpeCount global that tracks the number of processed GPEs, to 
4032be used for debugging systems with a large number of ACPI interrupts.
4033
4034Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 
4035both the ACPICA headers and the disassembler.
4036
4037Example Code and Data Size: These are the sizes for the OS-independent 
4038acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4039debug version of the code includes the debug output trace mechanism and has 
4040a much larger code and data size.
4041
4042  Previous Release:
4043    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
4044    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
4045  Current Release:
4046    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
4047    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
4048
4049
40502) iASL Compiler/Disassembler and Tools:
4051
4052Disassembler support for the DMAR ACPI table.
4053
4054----------------------------------------
405523 August 2006. Summary of changes for version 20060823:
4056
40571) ACPI CA Core Subsystem:
4058
4059The Table Manager component has been completely redesigned and 
4060reimplemented. The new design is much simpler, and reduces the overall code 
4061and data size of the kernel-resident ACPICA by approximately 5%. Also, it is 
4062now possible to obtain the ACPI tables very early during kernel 
4063initialization, even before dynamic memory management is initialized. 
4064(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
4065
4066Obsolete ACPICA interfaces:
4067
4068- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init 
4069time).
4070- AcpiLoadTable: Not needed.
4071- AcpiUnloadTable: Not needed.
4072
4073New ACPICA interfaces:
4074
4075- AcpiInitializeTables: Must be called before the table manager can be used.
4076- AcpiReallocateRootTable: Used to transfer the root table to dynamically 
4077allocated memory after it becomes available.
4078- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables 
4079in the RSDT/XSDT.
4080
4081Other ACPICA changes:
4082
4083- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use 
4084AcpiOsUnmapMemory to free this mapping.
4085- AcpiGetTable returns the actual mapped table. The mapping is managed 
4086internally and must not be deleted by the caller. Use of this interface 
4087causes no additional dynamic memory allocation.
4088- AcpiFindRootPointer: Support for physical addressing has been eliminated, 
4089it appeared to be unused.
4090- The interface to AcpiOsMapMemory has changed to be consistent with the 
4091other allocation interfaces.
4092- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary 
4093parameters.
4094- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64-
4095bit platforms. Was previously 64 bits on all platforms.
4096- The interface to the ACPI Global Lock acquire/release macros have changed 
4097slightly since ACPICA no longer keeps a local copy of the FACS with a 
4098constructed pointer to the actual global lock.
4099
4100Porting to the new table manager:
4101
4102- AcpiInitializeTables: Must be called once, and can be called anytime 
4103during the OS initialization process. It allows the host to specify an area 
4104of memory to be used to store the internal version of the RSDT/XSDT (root 
4105table). This allows the host to access ACPI tables before memory management 
4106is initialized and running.
4107- AcpiReallocateRootTable: Can be called after memory management is running 
4108to copy the root table to a dynamically allocated array, freeing up the 
4109scratch memory specified in the call to AcpiInitializeTables.
4110- AcpiSubsystemInitialize: This existing interface is independent of the 
4111Table Manager, and does not have to be called before the Table Manager can 
4112be used, it only must be called before the rest of ACPICA can be used.
4113- ACPI Tables: Some changes have been made to the names and structure of the 
4114actbl.h and actbl1.h header files and may require changes to existing code. 
4115For example, bitfields have been completely removed because of their lack of 
4116portability across C compilers.
4117- Update interfaces to the Global Lock acquire/release macros if local 
4118versions are used. (see acwin.h)
4119
4120Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
4121
4122New files: tbfind.c
4123
4124Example Code and Data Size: These are the sizes for the OS-independent 
4125acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4126debug version of the code includes the debug output trace mechanism and has 
4127a much larger code and data size.
4128
4129  Previous Release:
4130    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
4131    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
4132  Current Release:
4133    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
4134    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
4135
4136
41372) iASL Compiler/Disassembler and Tools:
4138
4139No changes for this release.
4140
4141----------------------------------------
414221 July 2006. Summary of changes for version 20060721:
4143
41441) ACPI CA Core Subsystem:
4145
4146The full source code for the ASL test suite used to validate the iASL 
4147compiler and the ACPICA core subsystem is being released with the ACPICA 
4148source for the first time. The source is contained in a separate package and 
4149consists of over 1100 files that exercise all ASL/AML operators. The package 
4150should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor 
4151Suietov)
4152
4153Completed a new design and implementation for support of the ACPI Global 
4154Lock. On the OS side, the global lock is now treated as a standard AML 
4155mutex. Previously, multiple OS threads could "acquire" the global lock 
4156simultaneously. However, this could cause the BIOS to be starved out of the 
4157lock - especially in cases such as the Embedded Controller driver where 
4158there is a tight coupling between the OS and the BIOS.
4159
4160Implemented an optimization for the ACPI Global Lock interrupt mechanism. 
4161The Global Lock interrupt handler no longer queues the execution of a 
4162separate thread to signal the global lock semaphore. Instead, the semaphore 
4163is signaled directly from the interrupt handler.
4164
4165Implemented support within the AML interpreter for package objects that 
4166contain a larger AML length (package list length) than the package element 
4167count. In this case, the length of the package is truncated to match the 
4168package element count. Some BIOS code apparently modifies the package length 
4169on the fly, and this change supports this behavior. Provides compatibility 
4170with the MS AML interpreter. (With assistance from Fiodor Suietov)
4171
4172Implemented a temporary fix for the BankValue parameter of a Bank Field to 
4173support all constant values, now including the Zero and One opcodes. 
4174Evaluation of this parameter must eventually be converted to a full TermArg 
4175evaluation. A not-implemented error is now returned (temporarily) for non-
4176constant values for this parameter.
4177
4178Fixed problem reports (Fiodor Suietov) integrated:
4179- Fix for premature object deletion after CopyObject on Operation Region (BZ 
4180350)
4181
4182Example Code and Data Size: These are the sizes for the OS-independent 
4183acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4184debug version of the code includes the debug output trace mechanism and has 
4185a much larger code and data size.
4186
4187  Previous Release:
4188    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
4189    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
4190  Current Release:
4191    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
4192    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
4193
4194
41952) iASL Compiler/Disassembler and Tools:
4196
4197No changes for this release.
4198
4199----------------------------------------
420007 July 2006. Summary of changes for version 20060707:
4201
42021) ACPI CA Core Subsystem:
4203
4204Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 
4205that do not allow the initialization of address pointers within packed 
4206structures - even though the hardware itself may support misaligned 
4207transfers. Some of the debug data structures are packed by default to 
4208minimize size.
4209
4210Added an error message for the case where AcpiOsGetThreadId() returns zero. 
4211A non-zero value is required by the core ACPICA code to ensure the proper 
4212operation of AML mutexes and recursive control methods.
4213
4214The DSDT is now the only ACPI table that determines whether the AML 
4215interpreter is in 32-bit or 64-bit mode. Not really a functional change, but 
4216the hooks for per-table 32/64 switching have been removed from the code. A 
4217clarification to the ACPI specification is forthcoming in ACPI 3.0B.
4218
4219Fixed a possible leak of an OwnerID in the error path of 
4220AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 
4221deletion to a single place in AcpiTbUninstallTable to correct possible leaks 
4222when using the AcpiTbDeleteTablesByType interface (with assistance from 
4223Lance Ortiz.)
4224
4225Fixed a problem with Serialized control methods where the semaphore 
4226associated with the method could be over-signaled after multiple method 
4227invocations.
4228
4229Fixed two issues with the locking of the internal namespace data structure. 
4230Both the Unload() operator and AcpiUnloadTable interface now lock the 
4231namespace during the namespace deletion associated with the table unload 
4232(with assistance from Linn Crosetto.)
4233
4234Fixed problem reports (Valery Podrezov) integrated:
4235- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
4236
4237Fixed problem reports (Fiodor Suietov) integrated:
4238- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
4239- On Address Space handler deletion, needless deactivation call (BZ 374)
4240- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375)
4241- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone 
4242(BZ 376)
4243- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
4244- Minimum Length of RSDT should be validated (BZ 379)
4245- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 
4246Handler (BZ (380)
4247- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded 
4248(BZ 381)
4249
4250Example Code and Data Size: These are the sizes for the OS-independent 
4251acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4252debug version of the code includes the debug output trace mechanism and has 
4253a much larger code and data size.
4254
4255  Previous Release:
4256    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
4257    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
4258  Current Release:
4259    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
4260    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
4261
4262
42632) iASL Compiler/Disassembler and Tools:
4264
4265Fixed problem reports:
4266Compiler segfault when ASL contains a long (>1024) String declaration (BZ 
4267436)
4268
4269----------------------------------------
427023 June 2006. Summary of changes for version 20060623:
4271
42721) ACPI CA Core Subsystem:
4273
4274Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 
4275allows the type to be customized to the host OS for improved efficiency 
4276(since a spinlock is usually a very small object.)
4277
4278Implemented support for "ignored" bits in the ACPI registers. According to 
4279the ACPI specification, these bits should be preserved when writing the 
4280registers via a read/modify/write cycle. There are 3 bits preserved in this 
4281manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
4282
4283Implemented the initial deployment of new OSL mutex interfaces. Since some 
4284host operating systems have separate mutex and semaphore objects, this 
4285feature was requested. The base code now uses mutexes (and the new mutex 
4286interfaces) wherever a binary semaphore was used previously. However, for 
4287the current release, the mutex interfaces are defined as macros to map them 
4288to the existing semaphore interfaces. Therefore, no OSL changes are required 
4289at this time. (See acpiosxf.h)
4290
4291Fixed several problems with the support for the control method SyncLevel 
4292parameter. The SyncLevel now works according to the ACPI specification and 
4293in concert with the Mutex SyncLevel parameter, since the current SyncLevel 
4294is a property of the executing thread. Mutual exclusion for control methods 
4295is now implemented with a mutex instead of a semaphore.
4296
4297Fixed three instances of the use of the C shift operator in the bitfield 
4298support code (exfldio.c) to avoid the use of a shift value larger than the 
4299target data width. The behavior of C compilers is undefined in this case and 
4300can cause unpredictable results, and therefore the case must be detected and 
4301avoided. (Fiodor Suietov)
4302
4303Added an info message whenever an SSDT or OEM table is loaded dynamically 
4304via the Load() or LoadTable() ASL operators. This should improve debugging 
4305capability since it will show exactly what tables have been loaded (beyond 
4306the tables present in the RSDT/XSDT.)
4307
4308Example Code and Data Size: These are the sizes for the OS-independent 
4309acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4310debug version of the code includes the debug output trace mechanism and has 
4311a much larger code and data size.
4312
4313  Previous Release:
4314    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
4315    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
4316  Current Release:
4317    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
4318    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
4319
4320
43212) iASL Compiler/Disassembler and Tools:
4322
4323No changes for this release.
4324
4325----------------------------------------
432608 June 2006. Summary of changes for version 20060608:
4327
43281) ACPI CA Core Subsystem:
4329
4330Converted the locking mutex used for the ACPI hardware to a spinlock. This 
4331change should eliminate all problems caused by attempting to acquire a 
4332semaphore at interrupt level, and it means that all ACPICA external 
4333interfaces that directly access the ACPI hardware can be safely called from 
4334interrupt level. OSL code that implements the semaphore interfaces should be 
4335able to eliminate any workarounds for being called at interrupt level.
4336
4337Fixed a regression introduced in 20060526 where the ACPI device 
4338initialization could be prematurely aborted with an AE_NOT_FOUND if a device 
4339did not have an optional _INI method.
4340
4341Fixed an IndexField issue where a write to the Data Register should be 
4342limited in size to the AccessSize (width) of the IndexField itself. (BZ 433, 
4343Fiodor Suietov)
4344
4345Fixed problem reports (Valery Podrezov) integrated:
4346- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
4347
4348Fixed problem reports (Fiodor Suietov) integrated:
4349- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
4350
4351Removed four global mutexes that were obsolete and were no longer being 
4352used.
4353
4354Example Code and Data Size: These are the sizes for the OS-independent 
4355acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4356debug version of the code includes the debug output trace mechanism and has 
4357a much larger code and data size.
4358
4359  Previous Release:
4360    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
4361    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
4362  Current Release:
4363    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
4364    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
4365
4366
43672) iASL Compiler/Disassembler and Tools:
4368
4369Fixed a fault when using -g option (get tables from registry) on Windows 
4370machines.
4371
4372Fixed problem reports integrated:
4373- Generate error if CreateField NumBits parameter is zero. (BZ 405)
4374- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 
4375Suietov)
4376- Global table revision override (-r) is ignored (BZ 413)
4377
4378----------------------------------------
437926 May 2006. Summary of changes for version 20060526:
4380
43811) ACPI CA Core Subsystem:
4382
4383Restructured, flattened, and simplified the internal interfaces for 
4384namespace object evaluation - resulting in smaller code, less CPU stack use, 
4385and fewer interfaces. (With assistance from Mikhail Kouzmich)
4386
4387Fixed a problem with the CopyObject operator where the first parameter was 
4388not typed correctly for the parser, interpreter, compiler, and disassembler. 
4389Caused various errors and unexpected behavior.
4390
4391Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 
4392produced incorrect results with some C compilers. Since the behavior of C 
4393compilers when the shift value is larger than the datatype width is 
4394apparently not well defined, the interpreter now detects this condition and 
4395simply returns zero as expected in all such cases. (BZ 395)
4396
4397Fixed problem reports (Valery Podrezov) integrated:
4398- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
4399- Allow interpreter to handle nested method declarations (BZ 5361)
4400
4401Fixed problem reports (Fiodor Suietov) integrated:
4402- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355)
4403- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356)
4404- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
4405- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
4406- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
4407- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
4408- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
4409- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
4410- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365)
4411- Status of the Global Initialization Handler call not used (BZ 366)
4412- Incorrect object parameter to Global Initialization Handler (BZ 367)
4413
4414Example Code and Data Size: These are the sizes for the OS-independent 
4415acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4416debug version of the code includes the debug output trace mechanism and has 
4417a much larger code and data size.
4418
4419  Previous Release:
4420    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
4421    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
4422  Current Release:
4423    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
4424    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
4425
4426
44272) iASL Compiler/Disassembler and Tools:
4428
4429Modified the parser to allow the names IO, DMA, and IRQ to be used as 
4430namespace identifiers with no collision with existing resource descriptor 
4431macro names. This provides compatibility with other ASL compilers and is 
4432most useful for disassembly/recompilation of existing tables without parse 
4433errors. (With assistance from Thomas Renninger)
4434
4435Disassembler: fixed an incorrect disassembly problem with the 
4436DataTableRegion and CopyObject operators. Fixed a possible fault during 
4437disassembly of some Alias operators.
4438
4439----------------------------------------
444012 May 2006. Summary of changes for version 20060512:
4441
44421) ACPI CA Core Subsystem:
4443
4444Replaced the AcpiOsQueueForExecution interface with a new interface named 
4445AcpiOsExecute. The major difference is that the new interface does not have 
4446a Priority parameter, this appeared to be useless and has been replaced by a 
4447Type parameter. The Type tells the host what type of execution is being 
4448requested, such as global lock handler, notify handler, GPE handler, etc. 
4449This allows the host to queue and execute the request as appropriate for the 
4450request type, possibly using different work queues and different priorities 
4451for the various request types. This enables fixes for multithreading 
4452deadlock problems such as BZ #5534, and will require changes to all existing 
4453OS interface layers. (Alexey Starikovskiy and Bob Moore)
4454
4455Fixed a possible memory leak associated with the support for the so-called 
4456"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 
4457Suietov)
4458
4459Fixed a problem with the Load() operator where a table load from an 
4460operation region could overwrite an internal table buffer by up to 7 bytes 
4461and cause alignment faults on IPF systems. (With assistance from Luming Yu)
4462
4463Example Code and Data Size: These are the sizes for the OS-independent 
4464acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4465debug version of the code includes the debug output trace mechanism and has 
4466a much larger code and data size.
4467
4468  Previous Release:
4469    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
4470    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
4471  Current Release:
4472    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
4473    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
4474
4475
4476
44772) iASL Compiler/Disassembler and Tools:
4478
4479Disassembler: Implemented support to cross reference the internal namespace 
4480and automatically generate ASL External() statements for symbols not defined 
4481within the current table being disassembled. This will simplify the 
4482disassembly and recompilation of interdependent tables such as SSDTs since 
4483these statements will no longer have to be added manually.
4484
4485Disassembler: Implemented experimental support to automatically detect 
4486invocations of external control methods and generate appropriate External() 
4487statements. This is problematic because the AML cannot be correctly parsed 
4488until the number of arguments for each control method is known. Currently, 
4489standalone method invocations and invocations as the source operand of a 
4490Store() statement are supported.
4491
4492Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 
4493LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 
4494LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 
4495more readable and likely closer to the original ASL source.
4496
4497----------------------------------------
449821 April 2006. Summary of changes for version 20060421:
4499
45001) ACPI CA Core Subsystem:
4501
4502Removed a device initialization optimization introduced in 20051216 where 
4503the _STA method was not run unless an _INI was also present for the same 
4504device. This optimization could cause problems because it could allow _INI 
4505methods to be run within a not-present device subtree. (If a not-present 
4506device had no _INI, _STA would not be run, the not-present status would not 
4507be discovered, and the children of the device would be incorrectly 
4508traversed.)
4509
4510Implemented a new _STA optimization where namespace subtrees that do not 
4511contain _INI are identified and ignored during device initialization. 
4512Selectively running _STA can significantly improve boot time on large 
4513machines (with assistance from Len Brown.)
4514
4515Implemented support for the device initialization case where the returned 
4516_STA flags indicate a device not-present but functioning. In this case, _INI 
4517is not run, but the device children are examined for presence, as per the 
4518ACPI specification.
4519
4520Implemented an additional change to the IndexField support in order to 
4521conform to MS behavior. The value written to the Index Register is not 
4522simply a byte offset, it is a byte offset in units of the access width of 
4523the parent Index Field. (Fiodor Suietov)
4524
4525Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 
4526interface is called during the creation of all AML operation regions, and 
4527allows the host OS to exert control over what addresses it will allow the 
4528AML code to access. Operation Regions whose addresses are disallowed will 
4529cause a runtime exception when they are actually accessed (will not affect 
4530or abort table loading.) See oswinxf or osunixxf for an example 
4531implementation.
4532
4533Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 
4534interface allows the host OS to match the various "optional" 
4535interface/behavior strings for the _OSI predefined control method as 
4536appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 
4537for an example implementation.
4538
4539Restructured and corrected various problems in the exception handling code 
4540paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 
4541(with assistance from Takayoshi Kochi.)
4542
4543Modified the Linux source converter to ignore quoted string literals while 
4544converting identifiers from mixed to lower case. This will correct problems 
4545with the disassembler and other areas where such strings must not be 
4546modified.
4547
4548The ACPI_FUNCTION_* macros no longer require quotes around the function 
4549name. This allows the Linux source converter to convert the names, now that 
4550the converter ignores quoted strings.
4551
4552Example Code and Data Size: These are the sizes for the OS-independent 
4553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4554debug version of the code includes the debug output trace mechanism and has 
4555a much larger code and data size.
4556
4557  Previous Release:
4558
4559    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
4560    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
4561  Current Release:
4562    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
4563    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
4564
4565
45662) iASL Compiler/Disassembler and Tools:
4567
4568Implemented 3 new warnings for iASL, and implemented multiple warning levels 
4569(w2 flag).
4570
45711) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not 
4572WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 
4573check for the possible timeout, a warning is issued.
4574
45752) Useless operators: If an ASL operator does not specify an optional target 
4576operand and it also does not use the function return value from the 
4577operator, a warning is issued since the operator effectively does nothing.
4578
45793) Unreferenced objects: If a namespace object is created, but never 
4580referenced, a warning is issued. This is a warning level 2 since there are 
4581cases where this is ok, such as when a secondary table is loaded that uses 
4582the unreferenced objects. Even so, care is taken to only flag objects that 
4583don't look like they will ever be used. For example, the reserved methods 
4584(starting with an underscore) are usually not referenced because it is 
4585expected that the OS will invoke them.
4586
4587----------------------------------------
458831 March 2006. Summary of changes for version 20060331:
4589
45901) ACPI CA Core Subsystem:
4591
4592Implemented header file support for the following additional ACPI tables: 
4593ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support, 
4594all current and known ACPI tables are now defined in the ACPICA headers and 
4595are available for use by device drivers and other software.
4596
4597Implemented support to allow tables that contain ACPI names with invalid 
4598characters to be loaded. Previously, this would cause the table load to 
4599fail, but since there are several known cases of such tables on existing 
4600machines, this change was made to enable ACPI support for them. Also, this 
4601matches the behavior of the Microsoft ACPI implementation.
4602
4603Fixed a couple regressions introduced during the memory optimization in the 
460420060317 release. The namespace node definition required additional 
4605reorganization and an internal datatype that had been changed to 8-bit was 
4606restored to 32-bit. (Valery Podrezov)
4607
4608Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 
4609could be passed through to AcpiOsReleaseObject which is unexpected. Such 
4610null pointers are now trapped and ignored, matching the behavior of the 
4611previous implementation before the deployment of AcpiOsReleaseObject.
4612(Valery Podrezov, Fiodor Suietov)
4613
4614Fixed a memory mapping leak during the deletion of a SystemMemory operation 
4615region where a cached memory mapping was not deleted. This became a 
4616noticeable problem for operation regions that are defined within frequently 
4617used control methods. (Dana Meyers)
4618
4619Reorganized the ACPI table header files into two main files: one for the 
4620ACPI tables consumed by the ACPICA core, and another for the miscellaneous 
4621ACPI tables that are consumed by the drivers and other software. The various 
4622FADT definitions were merged into one common section and three different 
4623tables (ACPI 1.0, 1.0+, and 2.0)
4624
4625Example Code and Data Size: These are the sizes for the OS-independent 
4626acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4627debug version of the code includes the debug output trace mechanism and has 
4628a much larger code and data size.
4629
4630  Previous Release:
4631    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
4632    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
4633  Current Release:
4634    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
4635    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
4636
4637
46382) iASL Compiler/Disassembler and Tools:
4639
4640Disassembler: Implemented support to decode and format all non-AML ACPI 
4641tables (tables other than DSDTs and SSDTs.) This includes the new tables 
4642added to the ACPICA headers, therefore all current and known ACPI tables are 
4643supported.
4644
4645Disassembler: The change to allow ACPI names with invalid characters also 
4646enables the disassembly of such tables. Invalid characters within names are 
4647changed to '*' to make the name printable; the iASL compiler will still 
4648generate an error for such names, however, since this is an invalid ACPI 
4649character.
4650
4651Implemented an option for AcpiXtract (-a) to extract all tables found in the 
4652input file. The default invocation extracts only the DSDTs and SSDTs.
4653
4654Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 
4655makefile for the AcpiXtract utility.
4656
4657----------------------------------------
465817 March 2006. Summary of changes for version 20060317:
4659
46601) ACPI CA Core Subsystem:
4661
4662Implemented the use of a cache object for all internal namespace nodes. 
4663Since there are about 1000 static nodes in a typical system, this will 
4664decrease memory use for cache implementations that minimize per-allocation 
4665overhead (such as a slab allocator.)
4666
4667Removed the reference count mechanism for internal namespace nodes, since it 
4668was deemed unnecessary. This reduces the size of each namespace node by 
4669about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case, 
4670and 32 bytes for the 64-bit case.
4671
4672Optimized several internal data structures to reduce object size on 64-bit 
4673platforms by packing data within the 64-bit alignment. This includes the 
4674frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 
4675instances corresponding to the namespace objects.
4676
4677Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1" 
4678and "Windows 2006".
4679
4680Split the allocation tracking mechanism out to a separate file, from 
4681utalloc.c to uttrack.c. This mechanism appears to be only useful for 
4682application-level code. Kernels may wish to not include uttrack.c in 
4683distributions.
4684
4685Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated 
4686code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 
4687macros.)
4688
4689Code and Data Size: These are the sizes for the acpica.lib produced by the 
4690Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 
4691driver or OSPM code. The debug version of the code includes the debug output 
4692trace mechanism and has a much larger code and data size. Note that these 
4693values will vary depending on the efficiency of the compiler and the 
4694compiler options used during generation.
4695
4696  Previous Release:
4697    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
4698    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
4699  Current Release:
4700    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
4701    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
4702
4703
47042) iASL Compiler/Disassembler and Tools:
4705
4706Implemented an ANSI C version of the acpixtract utility. This version will 
4707automatically extract the DSDT and all SSDTs from the input acpidump text 
4708file and dump the binary output to separate files. It can also display a 
4709summary of the input file including the headers for each table found and 
4710will extract any single ACPI table, with any signature. (See 
4711source/tools/acpixtract)
4712
4713----------------------------------------
471410 March 2006. Summary of changes for version 20060310:
4715
47161) ACPI CA Core Subsystem:
4717
4718Tagged all external interfaces to the subsystem with the new 
4719ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist 
4720kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 
4721macro. The default definition is NULL.
4722
4723Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId. 
4724This allows the host to define this as necessary to simplify kernel 
4725integration. The default definition is ACPI_NATIVE_UINT.
4726
4727Fixed two interpreter problems related to error processing, the deletion of 
4728objects, and placing invalid pointers onto the internal operator result 
4729stack. BZ 6028, 6151 (Valery Podrezov)
4730
4731Increased the reference count threshold where a warning is emitted for large 
4732reference counts in order to eliminate unnecessary warnings on systems with 
4733large namespaces (especially 64-bit.) Increased the value from 0x400 to 
47340x800.
4735
4736Due to universal disagreement as to the meaning of the 'c' in the calloc() 
4737function, the ACPI_MEM_CALLOCATE macro has been renamed to 
4738ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 
4739ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 
4740ACPI_FREE.
4741
4742Code and Data Size: These are the sizes for the acpica.lib produced by the 
4743Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 
4744driver or OSPM code. The debug version of the code includes the debug output 
4745trace mechanism and has a much larger code and data size. Note that these 
4746values will vary depending on the efficiency of the compiler and the 
4747compiler options used during generation.
4748
4749  Previous Release:
4750    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
4751    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
4752  Current Release:
4753    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
4754    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
4755
4756
47572) iASL Compiler/Disassembler:
4758
4759Disassembler: implemented support for symbolic resource descriptor 
4760references. If a CreateXxxxField operator references a fixed offset within a 
4761resource descriptor, a name is assigned to the descriptor and the offset is 
4762translated to the appropriate resource tag and pathname. The addition of 
4763this support brings the disassembled code very close to the original ASL 
4764source code and helps eliminate run-time errors when the disassembled code 
4765is modified (and recompiled) in such a way as to invalidate the original 
4766fixed offsets.
4767
4768Implemented support for a Descriptor Name as the last parameter to the ASL 
4769Register() macro. This parameter was inadvertently left out of the ACPI 
4770specification, and will be added for ACPI 3.0b.
4771
4772Fixed a problem where the use of the "_OSI" string (versus the full path 
4773"\_OSI") caused an internal compiler error. ("No back ptr to op")
4774
4775Fixed a problem with the error message that occurs when an invalid string is 
4776used for a _HID object (such as one with an embedded asterisk: "*PNP010A".) 
4777The correct message is now displayed.
4778
4779----------------------------------------
478017 February 2006. Summary of changes for version 20060217:
4781
47821) ACPI CA Core Subsystem:
4783
4784Implemented a change to the IndexField support to match the behavior of the 
4785Microsoft AML interpreter. The value written to the Index register is now a 
4786byte offset, no longer an index based upon the width of the Data register. 
4787This should fix IndexField problems seen on some machines where the Data 
4788register is not exactly one byte wide. The ACPI specification will be 
4789clarified on this point.
4790
4791Fixed a problem where several resource descriptor types could overrun the 
4792internal descriptor buffer due to size miscalculation: VendorShort, 
4793VendorLong, and Interrupt. This was noticed on IA64 machines, but could 
4794affect all platforms.
4795
4796Fixed a problem where individual resource descriptors were misaligned within 
4797the internal buffer, causing alignment faults on IA64 platforms.
4798
4799Code and Data Size: These are the sizes for the acpica.lib produced by the 
4800Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 
4801driver or OSPM code. The debug version of the code includes the debug output 
4802trace mechanism and has a much larger code and data size. Note that these 
4803values will vary depending on the efficiency of the compiler and the 
4804compiler options used during generation.
4805
4806  Previous Release:
4807    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
4808    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
4809  Current Release:
4810    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
4811    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
4812
4813
48142) iASL Compiler/Disassembler:
4815
4816Implemented support for new reserved names: _WDG and _WED are Microsoft 
4817extensions for Windows Instrumentation Management, _TDL is a new ACPI-
4818defined method (Throttling Depth Limit.)
4819
4820Fixed a problem where a zero-length VendorShort or VendorLong resource 
4821descriptor was incorrectly emitted as a descriptor of length one.
4822
4823----------------------------------------
482410 February 2006. Summary of changes for version 20060210:
4825
48261) ACPI CA Core Subsystem:
4827
4828Removed a couple of extraneous ACPI_ERROR messages that appeared during 
4829normal execution. These became apparent after the conversion from 
4830ACPI_DEBUG_PRINT.
4831
4832Fixed a problem where the CreateField operator could hang if the BitIndex or 
4833NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
4834
4835Fixed a problem where a DeRefOf operation on a buffer object incorrectly 
4836failed with an exception. This also fixes a couple of related RefOf and 
4837DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
4838
4839Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of 
4840AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ 
48415480)
4842
4843Implemented a memory cleanup at the end of the execution of each iteration 
4844of an AML While() loop, preventing the accumulation of outstanding objects. 
4845(Valery Podrezov, BZ 5427)
4846
4847Eliminated a chunk of duplicate code in the object resolution code. (Valery 
4848Podrezov, BZ 5336)
4849
4850Fixed several warnings during the 64-bit code generation.
4851
4852The AcpiSrc source code conversion tool now inserts one line of whitespace 
4853after an if() statement that is followed immediately by a comment, improving 
4854readability of the Linux code.
4855
4856Code and Data Size: The current and previous library sizes for the core 
4857subsystem are shown below. These are the code and data sizes for the 
4858acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
4859values do not include any ACPI driver or OSPM code. The debug version of the 
4860code includes the debug output trace mechanism and has a much larger code 
4861and data size. Note that these values will vary depending on the efficiency 
4862of the compiler and the compiler options used during generation.
4863
4864  Previous Release:
4865    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
4866    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
4867  Current Release:
4868    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
4869    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
4870
4871
48722) iASL Compiler/Disassembler:
4873
4874Fixed a problem with the disassembly of a BankField operator with a complex 
4875expression for the BankValue parameter.
4876
4877----------------------------------------
487827 January 2006. Summary of changes for version 20060127:
4879
48801) ACPI CA Core Subsystem:
4881
4882Implemented support in the Resource Manager to allow unresolved namestring 
4883references within resource package objects for the _PRT method. This support 
4884is in addition to the previously implemented unresolved reference support 
4885within the AML parser. If the interpreter slack mode is enabled, these 
4886unresolved references will be passed through to the caller as a NULL package 
4887entry.
4888
4889Implemented and deployed new macros and functions for error and warning 
4890messages across the subsystem. These macros are simpler and generate less 
4891code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 
4892ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 
4893macros remain defined to allow ACPI drivers time to migrate to the new 
4894macros.
4895
4896Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the 
4897Acquire/Release Lock OSL interfaces.
4898
4899Fixed a problem where Alias ASL operators are sometimes not correctly 
4900resolved, in both the interpreter and the iASL compiler.
4901
4902Fixed several problems with the implementation of the ConcatenateResTemplate 
4903ASL operator. As per the ACPI specification, zero length buffers are now 
4904treated as a single EndTag. One-length buffers always cause a fatal 
4905exception. Non-zero length buffers that do not end with a full 2-byte EndTag 
4906cause a fatal exception.
4907
4908Fixed a possible structure overwrite in the AcpiGetObjectInfo external 
4909interface. (With assistance from Thomas Renninger)
4910
4911Code and Data Size: The current and previous library sizes for the core 
4912subsystem are shown below. These are the code and data sizes for the 
4913acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
4914values do not include any ACPI driver or OSPM code. The debug version of the 
4915code includes the debug output trace mechanism and has a much larger code 
4916and data size. Note that these values will vary depending on the efficiency 
4917of the compiler and the compiler options used during generation.
4918
4919  Previous Release:
4920    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
4921    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
4922  Current Release:
4923    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
4924    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
4925
4926
49272) iASL Compiler/Disassembler:
4928
4929Fixed an internal error that was generated for any forward references to ASL 
4930Alias objects.
4931
4932----------------------------------------
493313 January 2006. Summary of changes for version 20060113:
4934
49351) ACPI CA Core Subsystem:
4936
4937Added 2006 copyright to all module headers and signons. This affects 
4938virtually every file in the ACPICA core subsystem, iASL compiler, and the 
4939utilities.
4940 
4941Enhanced the ACPICA error reporting in order to simplify user migration to 
4942the non-debug version of ACPICA. Replaced all instances of the 
4943ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug 
4944levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 
4945respectively. This preserves all error and warning messages in the non-debug 
4946version of the ACPICA code (this has been referred to as the "debug lite" 
4947option.) Over 200 cases were converted to create a total of over 380 
4948error/warning messages across the ACPICA code. This increases the code and 
4949data size of the default non-debug version of the code somewhat (about 13K), 
4950but all error/warning reporting may be disabled if desired (and code 
4951eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 
4952configuration option. The size of the debug version of ACPICA remains about 
4953the same.
4954
4955Fixed a memory leak within the AML Debugger "Set" command. One object was 
4956not properly deleted for every successful invocation of the command.
4957
4958Code and Data Size: The current and previous library sizes for the core 
4959subsystem are shown below. These are the code and data sizes for the 
4960acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
4961values do not include any ACPI driver or OSPM code. The debug version of the 
4962code includes the debug output trace mechanism and has a much larger code 
4963and data size. Note that these values will vary depending on the efficiency 
4964of the compiler and the compiler options used during generation.
4965
4966  Previous Release:
4967    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
4968    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
4969  Current Release:
4970    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
4971    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
4972
4973
49742) iASL Compiler/Disassembler:
4975
4976The compiler now officially supports the ACPI 3.0a specification that was 
4977released on December 30, 2005. (Specification is available at www.acpi.info)
4978
4979----------------------------------------
498016 December 2005. Summary of changes for version 20051216:
4981
49821) ACPI CA Core Subsystem:
4983
4984Implemented optional support to allow unresolved names within ASL Package 
4985objects. A null object is inserted in the package when a named reference 
4986cannot be located in the current namespace. Enabled via the interpreter 
4987slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines 
4988that contain such code.
4989
4990Implemented an optimization to the initialization sequence that can improve 
4991boot time. During ACPI device initialization, the _STA method is now run if 
4992and only if the _INI method exists. The _STA method is used to determine if 
4993the device is present; An _INI can only be run if _STA returns present, but 
4994it is a waste of time to run the _STA method if the _INI does not exist. 
4995(Prototype and assistance from Dong Wei)
4996
4997Implemented use of the C99 uintptr_t for the pointer casting macros if it is 
4998available in the current compiler. Otherwise, the default (void *) cast is 
4999used as before.
5000
5001Fixed some possible memory leaks found within the execution path of the 
5002Break, Continue, If, and CreateField operators. (Valery Podrezov)
5003
5004Fixed a problem introduced in the 20051202 release where an exception is 
5005generated during method execution if a control method attempts to declare 
5006another method.
5007
5008Moved resource descriptor string constants that are used by both the AML 
5009disassembler and AML debugger to the common utilities directory so that 
5010these components are independent.
5011
5012Implemented support in the AcpiExec utility (-e switch) to globally ignore 
5013exceptions during control method execution (method is not aborted.)
5014
5015Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 
5016generation.
5017
5018Code and Data Size: The current and previous library sizes for the core 
5019subsystem are shown below. These are the code and data sizes for the 
5020acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
5021values do not include any ACPI driver or OSPM code. The debug version of the 
5022code includes the debug output trace mechanism and has a much larger code 
5023and data size. Note that these values will vary depending on the efficiency 
5024of the compiler and the compiler options used during generation.
5025
5026  Previous Release:
5027    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
5028    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
5029  Current Release:
5030    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
5031    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
5032
5033
50342) iASL Compiler/Disassembler:
5035
5036Fixed a problem where a CPU stack overflow fault could occur if a recursive 
5037method call was made from within a Return statement.
5038
5039----------------------------------------
504002 December 2005. Summary of changes for version 20051202:
5041
50421) ACPI CA Core Subsystem:
5043
5044Modified the parsing of control methods to no longer create namespace 
5045objects during the first pass of the parse. Objects are now created only 
5046during the execute phase, at the moment the namespace creation operator is 
5047encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This 
5048should eliminate ALREADY_EXISTS exceptions seen on some machines where 
5049reentrant control methods are protected by an AML mutex. The mutex will now 
5050correctly block multiple threads from attempting to create the same object 
5051more than once.
5052
5053Increased the number of available Owner Ids for namespace object tracking 
5054from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on 
5055some machines with a large number of ACPI tables (either static or dynamic).
5056
5057Fixed a problem with the AcpiExec utility where a fault could occur when the 
5058-b switch (batch mode) is used.
5059
5060Enhanced the namespace dump routine to output the owner ID for each 
5061namespace object.
5062
5063Code and Data Size: The current and previous library sizes for the core 
5064subsystem are shown below. These are the code and data sizes for the 
5065acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
5066values do not include any ACPI driver or OSPM code. The debug version of the 
5067code includes the debug output trace mechanism and has a much larger code 
5068and data size. Note that these values will vary depending on the efficiency 
5069of the compiler and the compiler options used during generation.
5070
5071  Previous Release:
5072    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
5073    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
5074  Current Release:
5075    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
5076    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
5077
5078
50792) iASL Compiler/Disassembler:
5080
5081Fixed a parse error during compilation of certain Switch/Case constructs. To 
5082simplify the parse, the grammar now allows for multiple Default statements 
5083and this error is now detected and flagged during the analysis phase.
5084
5085Disassembler: The disassembly now includes the contents of the original 
5086table header within a comment at the start of the file. This includes the 
5087name and version of the original ASL compiler.
5088
5089----------------------------------------
509017 November 2005. Summary of changes for version 20051117:
5091
50921) ACPI CA Core Subsystem:
5093
5094Fixed a problem in the AML parser where the method thread count could be 
5095decremented below zero if any errors occurred during the method parse phase. 
5096This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines. 
5097This also fixed a related regression with the mechanism that detects and 
5098corrects methods that cannot properly handle reentrancy (related to the 
5099deployment of the new OwnerId mechanism.)
5100
5101Eliminated the pre-parsing of control methods (to detect errors) during 
5102table load. Related to the problem above, this was causing unwind issues if 
5103any errors occurred during the parse, and it seemed to be overkill. A table 
5104load should not be aborted if there are problems with any single control 
5105method, thus rendering this feature rather pointless.
5106
5107Fixed a problem with the new table-driven resource manager where an internal 
5108buffer overflow could occur for small resource templates.
5109
5110Implemented a new external interface, AcpiGetVendorResource. This interface 
5111will find and return a vendor-defined resource descriptor within a _CRS or 
5112_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas.
5113
5114Removed the length limit (200) on string objects as per the upcoming ACPI 
51153.0A specification. This affects the following areas of the interpreter: 1) 
5116any implicit conversion of a Buffer to a String, 2) a String object result 
5117of the ASL Concatentate operator, 3) the String object result of the ASL 
5118ToString operator.
5119
5120Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER 
5121on a semaphore object would incorrectly timeout. This allows the 
5122multithreading features of the AcpiExec utility to work properly under 
5123Windows.
5124
5125Updated the Linux makefiles for the iASL compiler and AcpiExec to include 
5126the recently added file named "utresrc.c".
5127
5128Code and Data Size: The current and previous library sizes for the core 
5129subsystem are shown below. These are the code and data sizes for the 
5130acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
5131values do not include any ACPI driver or OSPM code. The debug version of the 
5132code includes the debug output trace mechanism and has a much larger code 
5133and data size. Note that these values will vary depending on the efficiency 
5134of the compiler and the compiler options used during generation.
5135
5136  Previous Release:
5137    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
5138    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
5139  Current Release:
5140    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
5141    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
5142
5143
51442) iASL Compiler/Disassembler:
5145
5146Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 
5147specification. For the iASL compiler, this means that string literals within 
5148the source ASL can be of any length. 
5149
5150Enhanced the listing output to dump the AML code for resource descriptors 
5151immediately after the ASL code for each descriptor, instead of in a block at 
5152the end of the entire resource template.
5153
5154Enhanced the compiler debug output to dump the entire original parse tree 
5155constructed during the parse phase, before any transforms are applied to the 
5156tree. The transformed tree is dumped also.
5157
5158----------------------------------------
515902 November 2005. Summary of changes for version 20051102:
5160
51611) ACPI CA Core Subsystem:
5162
5163Modified the subsystem initialization sequence to improve GPE support. The 
5164GPE initialization has been split into two parts in order to defer execution 
5165of the _PRW methods (Power Resources for Wake) until after the hardware is 
5166fully initialized and the SCI handler is installed. This allows the _PRW 
5167methods to access fields protected by the Global Lock. This will fix systems 
5168where a NO_GLOBAL_LOCK exception has been seen during initialization.
5169
5170Converted the ACPI internal object disassemble and display code within the 
5171AML debugger to fully table-driven operation, reducing code size and 
5172increasing maintainability.
5173
5174Fixed a regression with the ConcatenateResTemplate() ASL operator introduced 
5175in the 20051021 release.
5176
5177Implemented support for "local" internal ACPI object types within the 
5178debugger "Object" command and the AcpiWalkNamespace external interfaces. 
5179These local types include RegionFields, BankFields, IndexFields, Alias, and 
5180reference objects.
5181
5182Moved common AML resource handling code into a new file, "utresrc.c". This 
5183code is shared by both the Resource Manager and the AML Debugger.
5184
5185Code and Data Size: The current and previous library sizes for the core 
5186subsystem are shown below. These are the code and data sizes for the 
5187acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
5188values do not include any ACPI driver or OSPM code. The debug version of the 
5189code includes the debug output trace mechanism and has a much larger code 
5190and data size. Note that these values will vary depending on the efficiency 
5191of the compiler and the compiler options used during generation.
5192
5193  Previous Release:
5194    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
5195    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
5196  Current Release:
5197    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
5198    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
5199
5200
52012) iASL Compiler/Disassembler:
5202
5203Fixed a problem with very large initializer lists (more than 4000 elements) 
5204for both Buffer and Package objects where the parse stack could overflow.
5205
5206Enhanced the pre-compile source code scan for non-ASCII characters to ignore 
5207characters within comment fields. The scan is now always performed and is no 
5208longer optional, detecting invalid characters within a source file 
5209immediately rather than during the parse phase or later.
5210
5211Enhanced the ASL grammar definition to force early reductions on all list-
5212style grammar elements so that the overall parse stack usage is greatly 
5213reduced. This should improve performance and reduce the possibility of parse 
5214stack overflow.
5215
5216Eliminated all reduce/reduce conflicts in the iASL parser generation. Also, 
5217with the addition of a %expected statement, the compiler generates from 
5218source with no warnings.
5219
5220Fixed a possible segment fault in the disassembler if the input filename 
5221does not contain a "dot" extension (Thomas Renninger).
5222
5223----------------------------------------
522421 October 2005. Summary of changes for version 20051021:
5225
52261) ACPI CA Core Subsystem:
5227
5228Implemented support for the EM64T and other x86-64 processors. This 
5229essentially entails recognizing that these processors support non-aligned 
5230memory transfers. Previously, all 64-bit processors were assumed to lack 
5231hardware support for non-aligned transfers.
5232
5233Completed conversion of the Resource Manager to nearly full table-driven 
5234operation. Specifically, the resource conversion code (convert AML to 
5235internal format and the reverse) and the debug code to dump internal 
5236resource descriptors are fully table-driven, reducing code and data size and 
5237improving maintainability.
5238
5239The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word 
5240on 64-bit processors instead of a fixed 32-bit word. (With assistance from 
5241Alexey Starikovskiy)
5242
5243Implemented support within the resource conversion code for the Type-
5244Specific byte within the various ACPI 3.0 *WordSpace macros.
5245
5246Fixed some issues within the resource conversion code for the type-specific 
5247flags for both Memory and I/O address resource descriptors. For Memory, 
5248implemented support for the MTP and TTP flags. For I/O, split the TRS and 
5249TTP flags into two separate fields.
5250
5251Code and Data Size: The current and previous library sizes for the core 
5252subsystem are shown below. These are the code and data sizes for the 
5253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
5254values do not include any ACPI driver or OSPM code. The debug version of the 
5255code includes the debug output trace mechanism and has a much larger code 
5256and data size. Note that these values will vary depending on the efficiency 
5257of the compiler and the compiler options used during generation.
5258
5259  Previous Release:
5260    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
5261    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
5262  Current Release:
5263    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
5264    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
5265
5266
5267
52682) iASL Compiler/Disassembler:
5269
5270Relaxed a compiler restriction that disallowed a ResourceIndex byte if the 
5271corresponding ResourceSource string was not also present in a resource 
5272descriptor declaration. This restriction caused problems with existing 
5273AML/ASL code that includes the Index byte without the string. When such AML 
5274was disassembled, it could not be compiled without modification. Further, 
5275the modified code created a resource template with a different size than the 
5276original, breaking code that used fixed offsets into the resource template 
5277buffer.
5278
5279Removed a recent feature of the disassembler to ignore a lone ResourceIndex 
5280byte. This byte is now emitted if present so that the exact AML can be 
5281reproduced when the disassembled code is recompiled.
5282
5283Improved comments and text alignment for the resource descriptor code 
5284emitted by the disassembler.
5285
5286Implemented disassembler support for the ACPI 3.0 AccessSize field within a 
5287Register() resource descriptor.
5288
5289----------------------------------------
529030 September 2005. Summary of changes for version 20050930:
5291
52921) ACPI CA Core Subsystem:
5293
5294Completed a major overhaul of the Resource Manager code - specifically, 
5295optimizations in the area of the AML/internal resource conversion code. The 
5296code has been optimized to simplify and eliminate duplicated code, CPU stack 
5297use has been decreased by optimizing function parameters and local 
5298variables, and naming conventions across the manager have been standardized 
5299for clarity and ease of maintenance (this includes function, parameter, 
5300variable, and struct/typedef names.) The update may force changes in some 
5301driver code, depending on how resources are handled by the host OS.
5302
5303All Resource Manager dispatch and information tables have been moved to a 
5304single location for clarity and ease of maintenance. One new file was 
5305created, named "rsinfo.c".
5306
5307The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 
5308guarantee that the argument is not evaluated twice, making them less prone 
5309to macro side-effects. However, since there exists the possibility of 
5310additional stack use if a particular compiler cannot optimize them (such as 
5311in the debug generation case), the original macros are optionally available.  
5312Note that some invocations of the return_VALUE macro may now cause size 
5313mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to 
5314eliminate these. (From Randy Dunlap)
5315
5316Implemented a new mechanism to enable debug tracing for individual control 
5317methods. A new external interface, AcpiDebugTrace, is provided to enable 
5318this mechanism. The intent is to allow the host OS to easily enable and 
5319disable tracing for problematic control methods. This interface can be 
5320easily exposed to a user or debugger interface if desired. See the file 
5321psxface.c for details.
5322
5323AcpiUtCallocate will now return a valid pointer if a length of zero is 
5324specified - a length of one is used and a warning is issued. This matches 
5325the behavior of AcpiUtAllocate.
5326
5327Code and Data Size: The current and previous library sizes for the core 
5328subsystem are shown below. These are the code and data sizes for the 
5329acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
5330values do not include any ACPI driver or OSPM code. The debug version of the 
5331code includes the debug output trace mechanism and has a much larger code 
5332and data size. Note that these values will vary depending on the efficiency 
5333of the compiler and the compiler options used during generation.
5334
5335  Previous Release:
5336    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
5337    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
5338  Current Release:
5339    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
5340    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
5341
5342
53432) iASL Compiler/Disassembler:
5344
5345A remark is issued if the effective compile-time length of a package or 
5346buffer is zero. Previously, this was a warning.
5347
5348----------------------------------------
534916 September 2005. Summary of changes for version 20050916:
5350
53511) ACPI CA Core Subsystem:
5352
5353Fixed a problem within the Resource Manager where support for the Generic 
5354Register descriptor was not fully implemented. This descriptor is now fully 
5355recognized, parsed, disassembled, and displayed.
5356
5357Completely restructured the Resource Manager code to utilize table-driven 
5358dispatch and lookup, eliminating many of the large switch() statements. This 
5359reduces overall subsystem code size and code complexity. Affects the 
5360resource parsing and construction, disassembly, and debug dump output.
5361
5362Cleaned up and restructured the debug dump output for all resource 
5363descriptors. Improved readability of the output and reduced code size.
5364
5365Fixed a problem where changes to internal data structures caused the 
5366optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
5367
5368Code and Data Size: The current and previous library sizes for the core 
5369subsystem are shown below. These are the code and data sizes for the 
5370acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 
5371values do not include any ACPI driver or OSPM code. The debug version of the 
5372code includes the debug output trace mechanism and has a much larger code 
5373and data size. Note that these values will vary depending on the efficiency 
5374of the compiler and the compiler options used during generation.
5375
5376  Previous Release:
5377    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
5378    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
5379  Current Release:
5380    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
5381    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
5382
5383
53842) iASL Compiler/Disassembler:
5385
5386Updated the disassembler to automatically insert an EndDependentFn() macro 
5387into the ASL stream if this macro is missing in the original AML code, 
5388simplifying compilation of the resulting ASL module.
5389
5390Fixed a problem in the disassembler where a disassembled ResourceSource 
5391string (within a large resource descriptor) was not surrounded by quotes and 
5392not followed by a comma, causing errors when the resulting ASL module was 
5393compiled. Also, escape sequences within a ResourceSource string are now 
5394handled correctly (especially "\\")
5395
5396----------------------------------------
539702 September 2005. Summary of changes for version 20050902:
5398
53991) ACPI CA Core Subsystem:
5400
5401Fixed a problem with the internal Owner ID allocation and deallocation 
5402mechanisms for control method execution and recursive method invocation. 
5403This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 
5404messages seen on some systems. Recursive method invocation depth is 
5405currently limited to 255. (Alexey Starikovskiy)
5406
5407Completely eliminated all vestiges of support for the "module-level 
5408executable code" until this support is fully implemented and debugged. This 
5409should eliminate the NO_RETURN_VALUE exceptions seen during table load on 
5410some systems that invoke this support.
5411
5412Fixed a problem within the resource manager code where the transaction flags 
5413for a 64-bit address descriptor were handled incorrectly in the type-
5414specific flag byte.
5415
5416Consolidated duplicate code within the address descriptor resource manager 
5417code, reducing overall subsystem code size.
5418
5419Fixed a fault when using the AML debugger "disassemble" command to 
5420disassemble individual control methods.
5421
5422Removed references to the "release_current" directory within the Unix 
5423release package.
5424
5425Code and Data Size: The current and previous core subsystem library sizes 
5426are shown below. These are the code and data sizes for the acpica.lib 
5427produced by the Microsoft Visual C++ 6.0 compiler. These values do not 
5428include any ACPI driver or OSPM code. The debug version of the code includes 
5429the debug output trace mechanism and has a much larger code and data size. 
5430Note that these values will vary depending on the efficiency of the compiler 
5431and the compiler options used during generation.
5432
5433  Previous Release:
5434    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
5435    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
5436  Current Release:
5437    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
5438    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
5439
5440
54412) iASL Compiler/Disassembler:
5442
5443Implemented an error check for illegal duplicate values in the interrupt and 
5444dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 
5445Interrupt().
5446
5447Implemented error checking for the Irq() and IrqNoFlags() macros to detect 
5448too many values in the interrupt list (16 max) and invalid values in the 
5449list (range 0 - 15)
5450
5451The maximum length string literal within an ASL file is now restricted to 
5452200 characters as per the ACPI specification.
5453
5454Fixed a fault when using the -ln option (generate namespace listing).
5455
5456Implemented an error check to determine if a DescriptorName within a 
5457resource descriptor has already been used within the current scope.
5458
5459----------------------------------------
546015 August 2005.  Summary of changes for version 20050815:
5461 
54621) ACPI CA Core Subsystem:
5463 
5464Implemented a full bytewise compare to determine if a table load request is 
5465attempting to load a duplicate table. The compare is performed if the table 
5466signatures and table lengths match. This will allow different tables with 
5467the same OEM Table ID and revision to be loaded - probably against the ACPI 
5468specification, but discovered in the field nonetheless.
5469 
5470Added the changes.txt logfile to each of the zipped release packages.
5471 
5472Code and Data Size: Current and previous core subsystem library sizes are 
5473shown below. These are the code and data sizes for the acpica.lib produced 
5474by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5475any ACPI driver or OSPM code. The debug version of the code includes the 
5476debug output trace mechanism and has a much larger code and data size. Note 
5477that these values will vary depending on the efficiency of the compiler and 
5478the compiler options used during generation.
5479 
5480  Previous Release:
5481    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
5482    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
5483  Current Release:
5484    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
5485    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
5486 
5487 
54882) iASL Compiler/Disassembler:
5489 
5490Fixed a problem where incorrect AML code could be generated for Package 
5491objects if optimization is disabled (via the -oa switch).
5492 
5493Fixed a problem with where incorrect AML code is generated for variable-
5494length packages when the package length is not specified and the number of 
5495initializer values is greater than 255.
5496 
5497
5498----------------------------------------
549929 July 2005.  Summary of changes for version 20050729:
5500
55011) ACPI CA Core Subsystem:
5502
5503Implemented support to ignore an attempt to install/load a particular ACPI 
5504table more than once. Apparently there exists BIOS code that repeatedly 
5505attempts to load the same SSDT upon certain events. With assistance from 
5506Venkatesh Pallipadi.
5507
5508Restructured the main interface to the AML parser in order to correctly 
5509handle all exceptional conditions. This will prevent leakage of the OwnerId 
5510resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some 
5511machines. With assistance from Alexey Starikovskiy.
5512
5513Support for "module level code" has been disabled in this version due to a 
5514number of issues that have appeared on various machines. The support can be 
5515enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 
5516compilation. When the issues are fully resolved, the code will be enabled by 
5517default again.
5518
5519Modified the internal functions for debug print support to define the 
5520FunctionName parameter as a (const char *) for compatibility with compiler 
5521built-in macros such as __FUNCTION__, etc.
5522
5523Linted the entire ACPICA source tree for both 32-bit and 64-bit.
5524
5525Implemented support to display an object count summary for the AML Debugger 
5526commands Object and Methods.
5527
5528Code and Data Size: Current and previous core subsystem library sizes are 
5529shown below. These are the code and data sizes for the acpica.lib produced 
5530by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5531any ACPI driver or OSPM code. The debug version of the code includes the 
5532debug output trace mechanism and has a much larger code and data size. Note 
5533that these values will vary depending on the efficiency of the compiler and 
5534the compiler options used during generation.
5535
5536  Previous Release:
5537    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
5538    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
5539  Current Release:
5540    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
5541    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
5542
5543
55442) iASL Compiler/Disassembler:
5545
5546Fixed a regression that appeared in the 20050708 version of the compiler 
5547where an error message was inadvertently emitted for invocations of the _OSI 
5548reserved control method.
5549
5550----------------------------------------
555108 July 2005.  Summary of changes for version 20050708:
5552
55531) ACPI CA Core Subsystem:
5554
5555The use of the CPU stack in the debug version of the subsystem has been 
5556considerably reduced. Previously, a debug structure was declared in every 
5557function that used the debug macros. This structure has been removed in 
5558favor of declaring the individual elements as parameters to the debug 
5559functions. This reduces the cumulative stack use during nested execution of 
5560ACPI function calls at the cost of a small increase in the code size of the 
5561debug version of the subsystem. With assistance from Alexey Starikovskiy and 
5562Len Brown.
5563
5564Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 
5565headers to define a macro that will return the current function name at 
5566runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by 
5567the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 
5568compiler-dependent header, the function name is saved on the CPU stack (one 
5569pointer per function.) This mechanism is used because apparently there 
5570exists no standard ANSI-C defined macro that that returns the function name.
5571
5572Redesigned and reimplemented the "Owner ID" mechanism used to track 
5573namespace objects created/deleted by ACPI tables and control method 
5574execution. A bitmap is now used to allocate and free the IDs, thus solving 
5575the wraparound problem present in the previous implementation. The size of 
5576the namespace node descriptor was reduced by 2 bytes as a result (Alexey 
5577Starikovskiy).
5578
5579Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield 
5580flag definitions within the headers for the predefined ACPI tables. These 
5581have been replaced by UINT8_BIT in order to increase the code portability of 
5582the subsystem. If the use of UINT8 remains a problem, we may be forced to 
5583eliminate bitfields entirely because of a lack of portability.
5584
5585Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This 
5586is a frequently used function and this improvement increases the performance 
5587of the entire subsystem (Alexey Starikovskiy).
5588
5589Fixed several possible memory leaks and the inverse - premature object 
5590deletion (Alexey Starikovskiy).
5591
5592Code and Data Size: Current and previous core subsystem library sizes are 
5593shown below. These are the code and data sizes for the acpica.lib produced 
5594by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5595any ACPI driver or OSPM code. The debug version of the code includes the 
5596debug output trace mechanism and has a much larger code and data size. Note 
5597that these values will vary depending on the efficiency of the compiler and 
5598the compiler options used during generation.
5599
5600  Previous Release:
5601    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
5602    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
5603  Current Release:
5604    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
5605    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
5606
5607----------------------------------------
560824 June 2005.  Summary of changes for version 20050624:
5609
56101) ACPI CA Core Subsystem:
5611
5612Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 
5613the host-defined cache object. This allows the OSL implementation to define 
5614and type this object in any manner desired, simplifying the OSL 
5615implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 
5616Linux, and should be defined in the OS-specific header file for other 
5617operating systems as required.
5618
5619Changed the interface to AcpiOsAcquireObject to directly return the 
5620requested object as the function return (instead of ACPI_STATUS.) This 
5621change was made for performance reasons, since this is the purpose of the 
5622interface in the first place. AcpiOsAcquireObject is now similar to the 
5623AcpiOsAllocate interface.
5624
5625Implemented a new AML debugger command named Businfo. This command displays 
5626information about all devices that have an associate _PRT object. The _ADR, 
5627_HID, _UID, and _CID are displayed for these devices.
5628
5629Modified the initialization sequence in AcpiInitializeSubsystem to call the 
5630OSL interface AcpiOslInitialize first, before any local initialization. This 
5631change was required because the global initialization now calls OSL 
5632interfaces.
5633
5634Enhanced the Dump command to display the entire contents of Package objects 
5635(including all sub-objects and their values.) 
5636
5637Restructured the code base to split some files because of size and/or 
5638because the code logically belonged in a separate file. New files are listed 
5639below. All makefiles and project files included in the ACPI CA release have 
5640been updated.
5641    utilities/utcache.c           /* Local cache interfaces */
5642    utilities/utmutex.c           /* Local mutex support */
5643    utilities/utstate.c           /* State object support */
5644    interpreter/parser/psloop.c   /* Main AML parse loop */
5645
5646Code and Data Size: Current and previous core subsystem library sizes are 
5647shown below. These are the code and data sizes for the acpica.lib produced 
5648by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5649any ACPI driver or OSPM code. The debug version of the code includes the 
5650debug output trace mechanism and has a much larger code and data size. Note 
5651that these values will vary depending on the efficiency of the compiler and 
5652the compiler options used during generation.
5653
5654  Previous Release:
5655    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
5656    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
5657  Current Release:
5658    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
5659    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
5660
5661
56622) iASL Compiler/Disassembler:
5663
5664Fixed a regression introduced in version 20050513 where the use of a Package 
5665object within a Case() statement caused a compile time exception. The 
5666original behavior has been restored (a Match() operator is emitted.)
5667
5668----------------------------------------
566917 June 2005.  Summary of changes for version 20050617:
5670
56711) ACPI CA Core Subsystem:
5672
5673Moved the object cache operations into the OS interface layer (OSL) to allow 
5674the host OS to handle these operations if desired (for example, the Linux 
5675OSL will invoke the slab allocator). This support is optional; the compile 
5676time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache 
5677code in the ACPI CA core. The new OSL interfaces are shown below. See 
5678utalloc.c for an example implementation, and acpiosxf.h for the exact 
5679interface definitions. With assistance from Alexey Starikovskiy.
5680    AcpiOsCreateCache
5681    AcpiOsDeleteCache
5682    AcpiOsPurgeCache
5683    AcpiOsAcquireObject
5684    AcpiOsReleaseObject
5685
5686Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return 
5687and restore a flags parameter. This fits better with many OS lock models. 
5688Note: the current execution state (interrupt handler or not) is no longer 
5689passed to these interfaces. If necessary, the OSL must determine this state 
5690by itself, a simple and fast operation. With assistance from Alexey 
5691Starikovskiy.
5692
5693Fixed a problem in the ACPI table handling where a valid XSDT was assumed 
5694present if the revision of the RSDP was 2 or greater. According to the ACPI 
5695specification, the XSDT is optional in all cases, and the table manager 
5696therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 
5697Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain 
5698only the RSDT.
5699
5700Fixed an interpreter problem with the Mid() operator in the case of an input 
5701string where the resulting output string is of zero length. It now correctly 
5702returns a valid, null terminated string object instead of a string object 
5703with a null pointer.
5704
5705Fixed a problem with the control method argument handling to allow a store 
5706to an Arg object that already contains an object of type Device. The Device 
5707object is now correctly overwritten. Previously, an error was returned.
5708
5709
5710Enhanced the debugger Find command to emit object values in addition to the 
5711found object pathnames. The output format is the same as the dump namespace 
5712command.
5713
5714Enhanced the debugger Set command. It now has the ability to set the value 
5715of any Named integer object in the namespace (Previously, only method locals 
5716and args could be set.)
5717
5718Code and Data Size: Current and previous core subsystem library sizes are 
5719shown below. These are the code and data sizes for the acpica.lib produced 
5720by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5721any ACPI driver or OSPM code. The debug version of the code includes the 
5722debug output trace mechanism and has a much larger code and data size. Note 
5723that these values will vary depending on the efficiency of the compiler and 
5724the compiler options used during generation.
5725
5726  Previous Release:
5727    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
5728    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
5729  Current Release:
5730    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
5731    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
5732
5733
57342) iASL Compiler/Disassembler:
5735
5736Fixed a regression in the disassembler where if/else/while constructs were 
5737output incorrectly. This problem was introduced in the previous release 
5738(20050526). This problem also affected the single-step disassembly in the 
5739debugger.
5740
5741Fixed a problem where compiling the reserved _OSI method would randomly (but 
5742rarely) produce compile errors.
5743
5744Enhanced the disassembler to emit compilable code in the face of incorrect 
5745AML resource descriptors. If the optional ResourceSourceIndex is present, 
5746but the ResourceSource is not, do not emit the ResourceSourceIndex in the 
5747disassembly. Otherwise, the resulting code cannot be compiled without 
5748errors.
5749
5750----------------------------------------
575126 May 2005.  Summary of changes for version 20050526:
5752
57531) ACPI CA Core Subsystem:
5754
5755Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 
5756the module level (not within a control method.) These opcodes are executed 
5757exactly once at the time the table is loaded. This type of code was legal up 
5758until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in 
5759order to provide backwards compatibility with earlier BIOS implementations. 
5760This eliminates the "Encountered executable code at module level" warning 
5761that was previously generated upon detection of such code.
5762
5763Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 
5764inadvertently be generated during the lookup of namespace objects in the 
5765second pass parse of ACPI tables and control methods. It appears that this 
5766problem could occur during the resolution of forward references to namespace 
5767objects.
5768
5769Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 
5770corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 
5771allows the deadlock detection debug code to be compiled out in the normal 
5772case, improving mutex performance (and overall subsystem performance) 
5773considerably.
5774
5775Implemented a handful of miscellaneous fixes for possible memory leaks on 
5776error conditions and error handling control paths. These fixes were 
5777suggested by FreeBSD and the Coverity Prevent source code analysis tool.
5778
5779Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c) 
5780to prevent a fault in this error case.
5781
5782Code and Data Size: Current and previous core subsystem library sizes are 
5783shown below. These are the code and data sizes for the acpica.lib produced 
5784by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5785any ACPI driver or OSPM code. The debug version of the code includes the 
5786debug output trace mechanism and has a much larger code and data size. Note 
5787that these values will vary depending on the efficiency of the compiler and 
5788the compiler options used during generation.
5789
5790  Previous Release:
5791    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5792    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5793  Current Release:
5794    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
5795    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
5796
5797
57982) iASL Compiler/Disassembler:
5799
5800Implemented support to allow Type 1 and Type 2 ASL operators to appear at 
5801the module level (not within a control method.) These operators will be 
5802executed once at the time the table is loaded. This type of code was legal 
5803up until the release of ACPI 2.0B (2002) and is now supported by the iASL 
5804compiler in order to provide backwards compatibility with earlier BIOS ASL 
5805code.
5806
5807The ACPI integer width (specified via the table revision ID or the -r 
5808override, 32 or 64 bits) is now used internally during compile-time constant 
5809folding to ensure that constants are truncated to 32 bits if necessary. 
5810Previously, the revision ID value was only emitted in the AML table header.
5811
5812An error message is now generated for the Mutex and Method operators if the 
5813SyncLevel parameter is outside the legal range of 0 through 15.
5814
5815Fixed a problem with the Method operator ParameterTypes list handling (ACPI 
58163.0). Previously, more than 2 types or 2 arguments generated a syntax error.  
5817The actual underlying implementation of method argument typechecking is 
5818still under development, however.
5819
5820----------------------------------------
582113 May 2005.  Summary of changes for version 20050513:
5822
58231) ACPI CA Core Subsystem:
5824
5825Implemented support for PCI Express root bridges -- added support for device 
5826PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
5827
5828The interpreter now automatically truncates incoming 64-bit constants to 32 
5829bits if currently executing out of a 32-bit ACPI table (Revision < 2). This 
5830also affects the iASL compiler constant folding. (Note: as per below, the 
5831iASL compiler no longer allows 64-bit constants within 32-bit tables.)
5832
5833Fixed a problem where string and buffer objects with "static" pointers 
5834(pointers to initialization data within an ACPI table) were not handled 
5835consistently. The internal object copy operation now always copies the data 
5836to a newly allocated buffer, regardless of whether the source object is 
5837static or not.
5838
5839Fixed a problem with the FromBCD operator where an implicit result 
5840conversion was improperly performed while storing the result to the target 
5841operand. Since this is an "explicit conversion" operator, the implicit 
5842conversion should never be performed on the output.
5843
5844Fixed a problem with the CopyObject operator where a copy to an existing 
5845named object did not always completely overwrite the existing object stored 
5846at name. Specifically, a buffer-to-buffer copy did not delete the existing 
5847buffer.
5848
5849Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and 
5850structs for consistency.
5851
5852Code and Data Size: Current and previous core subsystem library sizes are 
5853shown below. These are the code and data sizes for the acpica.lib produced 
5854by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5855any ACPI driver or OSPM code. The debug version of the code includes the 
5856debug output trace mechanism and has a much larger code and data size. Note 
5857that these values will vary depending on the efficiency of the compiler and 
5858the compiler options used during generation.
5859
5860  Previous Release:
5861    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5862    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5863  Current Release: (Same sizes)
5864    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5865    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5866
5867
58682) iASL Compiler/Disassembler:
5869
5870The compiler now emits a warning if an attempt is made to generate a 64-bit 
5871integer constant from within a 32-bit ACPI table (Revision < 2). The integer 
5872is truncated to 32 bits.
5873
5874Fixed a problem with large package objects: if the static length of the 
5875package is greater than 255, the "variable length package" opcode is 
5876emitted. Previously, this caused an error. This requires an update to the 
5877ACPI spec, since it currently (incorrectly) states that packages larger than 
5878255 elements are not allowed.
5879
5880The disassembler now correctly handles variable length packages and packages 
5881larger than 255 elements.
5882
5883----------------------------------------
588408 April 2005.  Summary of changes for version 20050408:
5885
58861) ACPI CA Core Subsystem:
5887
5888Fixed three cases in the interpreter where an "index" argument to an ASL 
5889function was still (internally) 32 bits instead of the required 64 bits. 
5890This was the Index argument to the Index, Mid, and Match operators.
5891
5892The "strupr" function is now permanently local (AcpiUtStrupr), since this is 
5893not a POSIX-defined function and not present in most kernel-level C 
5894libraries. All references to the C library strupr function have been removed 
5895from the headers.
5896
5897Completed the deployment of static functions/prototypes. All prototypes with 
5898the static attribute have been moved from the headers to the owning C file.
5899
5900Implemented an extract option (-e) for the AcpiBin utility (AML binary 
5901utility). This option allows the utility to extract individual ACPI tables 
5902from the output of AcpiDmp. It provides the same functionality of the 
5903acpixtract.pl perl script without the worry of setting the correct perl 
5904options. AcpiBin runs on Windows and has not yet been generated/validated in 
5905the Linux/Unix environment (but should be soon).
5906 
5907Updated and fixed the table dump option for AcpiBin (-d). This option 
5908converts a single ACPI table to a hex/ascii file, similar to the output of 
5909AcpiDmp.
5910
5911Code and Data Size: Current and previous core subsystem library sizes are 
5912shown below. These are the code and data sizes for the acpica.lib produced 
5913by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5914any ACPI driver or OSPM code. The debug version of the code includes the 
5915debug output trace mechanism and has a much larger code and data size. Note 
5916that these values will vary depending on the efficiency of the compiler and 
5917the compiler options used during generation.
5918
5919  Previous Release:
5920    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
5921    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
5922  Current Release:
5923    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5924    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5925
5926
59272) iASL Compiler/Disassembler:
5928
5929Disassembler fix: Added a check to ensure that the table length found in the 
5930ACPI table header within the input file is not longer than the actual input 
5931file size. This indicates some kind of file or table corruption.
5932
5933----------------------------------------
593429 March 2005.  Summary of changes for version 20050329:
5935
59361) ACPI CA Core Subsystem:
5937
5938An error is now generated if an attempt is made to create a Buffer Field of 
5939length zero (A CreateField with a length operand of zero.)
5940
5941The interpreter now issues a warning whenever executable code at the module 
5942level is detected during ACPI table load. This will give some idea of the 
5943prevalence of this type of code.
5944
5945Implemented support for references to named objects (other than control 
5946methods) within package objects.
5947
5948Enhanced package object output for the debug object. Package objects are now 
5949completely dumped, showing all elements.
5950
5951Enhanced miscellaneous object output for the debug object. Any object can 
5952now be written to the debug object (for example, a device object can be 
5953written, and the type of the object will be displayed.)
5954
5955The "static" qualifier has been added to all local functions across both the 
5956core subsystem and the iASL compiler.
5957
5958The number of "long" lines (> 80 chars) within the source has been 
5959significantly reduced, by about 1/3.
5960
5961Cleaned up all header files to ensure that all CA/iASL functions are 
5962prototyped (even static functions) and the formatting is consistent.
5963
5964Two new header files have been added, acopcode.h and acnames.h.
5965
5966Removed several obsolete functions that were no longer used.
5967
5968Code and Data Size: Current and previous core subsystem library sizes are 
5969shown below. These are the code and data sizes for the acpica.lib produced 
5970by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
5971any ACPI driver or OSPM code. The debug version of the code includes the 
5972debug output trace mechanism and has a much larger code and data size. Note 
5973that these values will vary depending on the efficiency of the compiler and 
5974the compiler options used during generation.
5975
5976  Previous Release:
5977    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
5978    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
5979  Current Release:
5980    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
5981    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
5982
5983
5984
59852) iASL Compiler/Disassembler:
5986
5987Fixed a problem with the resource descriptor generation/support. For the 
5988ResourceSourceIndex and the ResourceSource fields, both must be present, or 
5989both must be not present - can't have one without the other.
5990
5991The compiler now returns non-zero from the main procedure if any errors have 
5992occurred during the compilation.
5993
5994
5995----------------------------------------
599609 March 2005.  Summary of changes for version 20050309:
5997
59981) ACPI CA Core Subsystem:
5999
6000The string-to-buffer implicit conversion code has been modified again after 
6001a change to the ACPI specification.  In order to match the behavior of the 
6002other major ACPI implementation, the target buffer is no longer truncated if 
6003the source string is smaller than an existing target buffer. This change 
6004requires an update to the ACPI spec, and should eliminate the recent 
6005AE_AML_BUFFER_LIMIT issues.
6006
6007The "implicit return" support was rewritten to a new algorithm that solves 
6008the general case. Rather than attempt to determine when a method is about to 
6009exit, the result of every ASL operator is saved momentarily until the very 
6010next ASL operator is executed. Therefore, no matter how the method exits, 
6011there will always be a saved implicit return value. This feature is only 
6012enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate 
6013AE_AML_NO_RETURN_VALUE errors when enabled.
6014
6015Implemented implicit conversion support for the predicate (operand) of the 
6016If, Else, and While operators. String and Buffer arguments are automatically 
6017converted to Integers.
6018
6019Changed the string-to-integer conversion behavior to match the new ACPI 
6020errata: "If no integer object exists, a new integer is created. The ASCII 
6021string is interpreted as a hexadecimal constant. Each string character is 
6022interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 
6023with the first character as the most significant digit, and ending with the 
6024first non-hexadecimal character or end-of-string." This means that the first 
6025non-hex character terminates the conversion and this is the code that was 
6026changed.
6027
6028Fixed a problem where the ObjectType operator would fail (fault) when used 
6029on an Index of a Package which pointed to a null package element. The 
6030operator now properly returns zero (Uninitialized) in this case.
6031
6032Fixed a problem where the While operator used excessive memory by not 
6033properly popping the result stack during execution. There was no memory leak 
6034after execution, however. (Code provided by Valery Podrezov.)
6035
6036Fixed a problem where references to control methods within Package objects 
6037caused the method to be invoked, instead of producing a reference object 
6038pointing to the method.
6039
6040Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to 
6041improve performance and reduce code size. (Code provided by Alexey 
6042Starikovskiy.)
6043
6044Code and Data Size: Current and previous core subsystem library sizes are 
6045shown below. These are the code and data sizes for the acpica.lib produced 
6046by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6047any ACPI driver or OSPM code. The debug version of the code includes the 
6048debug output trace mechanism and has a much larger code and data size. Note 
6049that these values will vary depending on the efficiency of the compiler and 
6050the compiler options used during generation.
6051
6052  Previous Release:
6053    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
6054    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
6055  Current Release:
6056    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
6057    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
6058
6059
60602) iASL Compiler/Disassembler:
6061
6062Fixed a problem with the Return operator with no arguments. Since the AML 
6063grammar for the byte encoding requires an operand for the Return opcode, the 
6064compiler now emits a Return(Zero) for this case.  An ACPI specification 
6065update has been written for this case.
6066
6067For tables other than the DSDT, namepath optimization is automatically 
6068disabled. This is because SSDTs can be loaded anywhere in the namespace, the 
6069compiler has no knowledge of where, and thus cannot optimize namepaths.
6070
6071Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 
6072inadvertently omitted from the ACPI specification, and will require an 
6073update to the spec.
6074
6075The source file scan for ASCII characters is now optional (-a). This change 
6076was made because some vendors place non-ascii characters within comments. 
6077However, the scan is simply a brute-force byte compare to ensure all 
6078characters in the file are in the range 0x00 to 0x7F.
6079
6080Fixed a problem with the CondRefOf operator where the compiler was 
6081inappropriately checking for the existence of the target. Since the point of 
6082the operator is to check for the existence of the target at run-time, the 
6083compiler no longer checks for the target existence.
6084
6085Fixed a problem where errors generated from the internal AML interpreter 
6086during constant folding were not handled properly, causing a fault.
6087
6088Fixed a problem with overly aggressive range checking for the Stall 
6089operator. The valid range (max 255) is now only checked if the operand is of 
6090type Integer. All other operand types cannot be statically checked.
6091
6092Fixed a problem where control method references within the RefOf, DeRefOf, 
6093and ObjectType operators were not treated properly. They are now treated as 
6094actual references, not method invocations.
6095
6096Fixed and enhanced the "list namespace" option (-ln). This option was broken 
6097a number of releases ago.
6098
6099Improved error handling for the Field, IndexField, and BankField operators. 
6100The compiler now cleanly reports and recovers from errors in the field 
6101component (FieldUnit) list.
6102
6103Fixed a disassembler problem where the optional ResourceDescriptor fields 
6104TRS and TTP were not always handled correctly.
6105
6106Disassembler - Comments in output now use "//" instead of "/*"
6107
6108----------------------------------------
610928 February 2005.  Summary of changes for version 20050228:
6110
61111) ACPI CA Core Subsystem:
6112
6113Fixed a problem where the result of an Index() operator (an object 
6114reference) must increment the reference count on the target object for the 
6115life of the object reference.
6116
6117Implemented AML Interpreter and Debugger support for the new ACPI 3.0 
6118Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace 
6119resource descriptors.
6120
6121Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 
6122Space Descriptor" string, indicating interpreter support for the descriptors 
6123above.
6124
6125Implemented header support for the new ACPI 3.0 FADT flag bits.
6126
6127Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1 
6128status/enable registers.
6129
6130Updated header support for the MADT processor local Apic struct and MADT 
6131platform interrupt source struct for new ACPI 3.0 fields.
6132
6133Implemented header support for the SRAT and SLIT ACPI tables.
6134
6135Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag 
6136at runtime.
6137
6138Code and Data Size: Current and previous core subsystem library sizes are 
6139shown below. These are the code and data sizes for the acpica.lib produced 
6140by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6141any ACPI driver or OSPM code. The debug version of the code includes the 
6142debug output trace mechanism and has a much larger code and data size. Note 
6143that these values will vary depending on the efficiency of the compiler and 
6144the compiler options used during generation.
6145
6146  Previous Release:
6147    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
6148    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
6149  Current Release:
6150    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
6151    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
6152
6153
61542) iASL Compiler/Disassembler:
6155
6156Fixed a problem with the internal 64-bit String-to-integer conversion with 
6157strings less than two characters long.
6158
6159Fixed a problem with constant folding where the result of the Index() 
6160operator can not be considered a constant. This means that Index() cannot be 
6161a type3 opcode and this will require an update to the ACPI specification.
6162
6163Disassembler: Implemented support for the TTP, MTP, and TRS resource 
6164descriptor fields. These fields were inadvertently ignored and not output in 
6165the disassembly of the resource descriptor.
6166
6167
6168 ----------------------------------------
616911 February 2005.  Summary of changes for version 20050211:
6170
61711) ACPI CA Core Subsystem:
6172
6173Implemented ACPI 3.0 support for implicit conversion within the Match() 
6174operator. MatchObjects can now be of type integer, buffer, or string instead 
6175of just type integer.  Package elements are implicitly converted to the type 
6176of the MatchObject. This change aligns the behavior of Match() with the 
6177behavior of the other logical operators (LLess(), etc.) It also requires an 
6178errata change to the ACPI specification as this support was intended for 
6179ACPI 3.0, but was inadvertently omitted.
6180
6181Fixed a problem with the internal implicit "to buffer" conversion. Strings 
6182that are converted to buffers will cause buffer truncation if the string is 
6183smaller than the target buffer. Integers that are converted to buffers will 
6184not cause buffer truncation, only zero extension (both as per the ACPI 
6185spec.) The problem was introduced when code was added to truncate the 
6186buffer, but this should not be performed in all cases, only the string case.
6187
6188Fixed a problem with the Buffer and Package operators where the interpreter 
6189would get confused if two such operators were used as operands to an ASL 
6190operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 
6191stack was not being popped after the execution of these operators, resulting 
6192in an AE_NO_RETURN_VALUE exception.
6193
6194Fixed a problem with constructs of the form Store(Index(...),...). The 
6195reference object returned from Index was inadvertently resolved to an actual 
6196value. This problem was introduced in version 20050114 when the behavior of 
6197Store() was modified to restrict the object types that can be used as the 
6198source operand (to match the ACPI specification.)
6199
6200Reduced excessive stack use within the AcpiGetObjectInfo procedure.
6201
6202Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
6203
6204Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
6205
6206Code and Data Size: Current and previous core subsystem library sizes are 
6207shown below. These are the code and data sizes for the acpica.lib produced 
6208by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6209any ACPI driver or OSPM code. The debug version of the code includes the 
6210debug output trace mechanism and has a much larger code and data size. Note 
6211that these values will vary depending on the efficiency of the compiler and 
6212the compiler options used during generation.
6213
6214  Previous Release:
6215    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
6216    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
6217  Current Release:
6218    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
6219    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
6220
6221
62222) iASL Compiler/Disassembler:
6223
6224Fixed a code generation problem in the constant folding optimization code 
6225where incorrect code was generated if a constant was reduced to a buffer 
6226object (i.e., a reduced type 5 opcode.)
6227
6228Fixed a typechecking problem for the ToBuffer operator. Caused by an 
6229incorrect return type in the internal opcode information table.
6230
6231----------------------------------------
623225 January 2005.  Summary of changes for version 20050125:
6233
62341) ACPI CA Core Subsystem:
6235
6236Fixed a recently introduced problem with the Global Lock where the 
6237underlying semaphore was not created.  This problem was introduced in 
6238version 20050114, and caused an AE_AML_NO_OPERAND exception during an 
6239Acquire() operation on _GL.
6240
6241The local object cache is now optional, and is disabled by default. Both 
6242AcpiExec and the iASL compiler enable the cache because they run in user 
6243mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE 
6244to enable the local cache.
6245
6246Fixed an issue in the internal function AcpiUtEvaluateObject concerning the 
6247optional "implicit return" support where an error was returned if no return 
6248object was expected, but one was implicitly returned. AE_OK is now returned 
6249in this case and the implicitly returned object is deleted. 
6250AcpiUtEvaluateObject is only occasionally used, and only to execute reserved 
6251methods such as _STA and _INI where the return type is known up front.
6252
6253Fixed a few issues with the internal convert-to-integer code. It now returns 
6254an error if an attempt is made to convert a null string, a string of only 
6255blanks/tabs, or a zero-length buffer. This affects both implicit conversion 
6256and explicit conversion via the ToInteger() operator.
6257
6258The internal debug code in AcpiUtAcquireMutex has been commented out. It is 
6259not needed for normal operation and should increase the performance of the 
6260entire subsystem. The code remains in case it is needed for debug purposes 
6261again.
6262
6263The AcpiExec source and makefile are included in the Unix/Linux package for 
6264the first time.
6265
6266Code and Data Size: Current and previous core subsystem library sizes are 
6267shown below. These are the code and data sizes for the acpica.lib produced 
6268by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6269any ACPI driver or OSPM code. The debug version of the code includes the 
6270debug output trace mechanism and has a much larger code and data size. Note 
6271that these values will vary depending on the efficiency of the compiler and 
6272the compiler options used during generation.
6273
6274  Previous Release:
6275    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
6276    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
6277  Current Release:
6278    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
6279    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
6280
62812) iASL Compiler/Disassembler:
6282
6283Switch/Case support: A warning is now issued if the type of the Switch value 
6284cannot be determined at compile time. For example, Switch(Arg0) will 
6285generate the warning, and the type is assumed to be an integer. As per the 
6286ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the 
6287warning.
6288
6289Switch/Case support: Implemented support for buffer and string objects as 
6290the switch value.  This is an ACPI 3.0 feature, now that LEqual supports 
6291buffers and strings.
6292
6293Switch/Case support: The emitted code for the LEqual() comparisons now uses 
6294the switch value as the first operand, not the second. The case value is now 
6295the second operand, and this allows the case value to be implicitly 
6296converted to the type of the switch value, not the other way around.
6297
6298Switch/Case support: Temporary variables are now emitted immediately within 
6299the control method, not at the global level. This means that there are now 
630036 temps available per-method, not 36 temps per-module as was the case with 
6301the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
6302
6303----------------------------------------
630414 January 2005.  Summary of changes for version 20050114:
6305
6306Added 2005 copyright to all module headers.  This affects every module in 
6307the core subsystem, iASL compiler, and the utilities.
6308
63091) ACPI CA Core Subsystem:
6310
6311Fixed an issue with the String-to-Buffer conversion code where the string 
6312null terminator was not included in the buffer after conversion, but there 
6313is existing ASL that assumes the string null terminator is included. This is 
6314the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 
6315introduced in the previous version when the code was updated to correctly 
6316set the converted buffer size as per the ACPI specification. The ACPI spec 
6317is ambiguous and will be updated to specify that the null terminator must be 
6318included in the converted buffer. This also affects the ToBuffer() ASL 
6319operator.
6320
6321Fixed a problem with the Mid() ASL/AML operator where it did not work 
6322correctly on Buffer objects. Newly created sub-buffers were not being marked 
6323as initialized.
6324
6325
6326Fixed a problem in AcpiTbFindTable where incorrect string compares were 
6327performed on the OemId and OemTableId table header fields.  These fields are 
6328not null terminated, so strncmp is now used instead of strcmp.
6329
6330Implemented a restriction on the Store() ASL/AML operator to align the 
6331behavior with the ACPI specification.  Previously, any object could be used 
6332as the source operand.  Now, the only objects that may be used are Integers, 
6333Buffers, Strings, Packages, Object References, and DDB Handles.  If 
6334necessary, the original behavior can be restored by enabling the 
6335EnableInterpreterSlack flag.
6336
6337Enhanced the optional "implicit return" support to allow an implicit return 
6338value from methods that are invoked externally via the AcpiEvaluateObject 
6339interface.  This enables implicit returns from the _STA and _INI methods, 
6340for example.
6341
6342Changed the Revision() ASL/AML operator to return the current version of the 
6343AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned 
6344the supported ACPI version (This is the function of the _REV method).
6345
6346Updated the _REV predefined method to return the currently supported version 
6347of ACPI, now 3.
6348
6349Implemented batch mode option for the AcpiExec utility (-b).
6350
6351Code and Data Size: Current and previous core subsystem library sizes are 
6352shown below. These are the code and data sizes for the acpica.lib produced 
6353by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6354any ACPI driver or OSPM code. The debug version of the code includes the 
6355debug output trace mechanism and has a much larger code and data size. Note 
6356that these values will vary depending on the efficiency of the compiler and 
6357the compiler options used during generation.
6358
6359  Previous Release:
6360    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
6361    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
6362  Current Release:
6363    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
6364    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
6365
6366----------------------------------------
636710 December 2004.  Summary of changes for version 20041210:
6368
6369ACPI 3.0 support is nearing completion in both the iASL compiler and the 
6370ACPI CA core subsystem.
6371
63721) ACPI CA Core Subsystem:
6373
6374Fixed a problem in the ToDecimalString operator where the resulting string 
6375length was incorrectly calculated. The length is now calculated exactly, 
6376eliminating incorrect AE_STRING_LIMIT exceptions.
6377
6378Fixed a problem in the ToHexString operator to allow a maximum 200 character 
6379string to be produced.
6380
6381Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy 
6382routine where the length of the resulting buffer was not truncated to the 
6383new size (if the target buffer already existed).
6384
6385Code and Data Size: Current and previous core subsystem library sizes are 
6386shown below. These are the code and data sizes for the acpica.lib produced 
6387by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6388any ACPI driver or OSPM code. The debug version of the code includes the 
6389debug output trace mechanism and has a much larger code and data size. Note 
6390that these values will vary depending on the efficiency of the compiler and 
6391the compiler options used during generation.
6392
6393  Previous Release:
6394    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
6395    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
6396  Current Release:
6397    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
6398    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
6399
6400
64012) iASL Compiler/Disassembler:
6402
6403Implemented the new ACPI 3.0 resource template macros - DWordSpace, 
6404ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 
6405Includes support in the disassembler.
6406
6407Implemented support for the new (ACPI 3.0) parameter to the Register macro, 
6408AccessSize.
6409
6410Fixed a problem where the _HE resource name for the Interrupt macro was 
6411referencing bit 0 instead of bit 1.
6412
6413Implemented check for maximum 255 interrupts in the Interrupt macro.
6414
6415Fixed a problem with the predefined resource descriptor names where 
6416incorrect AML code was generated if the offset within the resource buffer 
6417was 0 or 1.  The optimizer shortened the AML code to a single byte opcode 
6418but did not update the surrounding package lengths.
6419
6420Changes to the Dma macro:  All channels within the channel list must be in 
6421the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is 
6422optional (default is BusMaster).
6423
6424Implemented check for maximum 7 data bytes for the VendorShort macro.
6425
6426The ReadWrite parameter is now optional for the Memory32 and similar macros.
6427
6428----------------------------------------
642903 December 2004.  Summary of changes for version 20041203:
6430
64311) ACPI CA Core Subsystem:
6432
6433The low-level field insertion/extraction code (exfldio) has been completely 
6434rewritten to eliminate unnecessary complexity, bugs, and boundary 
6435conditions.
6436
6437Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString 
6438operators where the input operand could be inadvertently deleted if no 
6439conversion was necessary (e.g., if the input to ToInteger was an Integer 
6440object.)
6441
6442Fixed a problem with the ToDecimalString and ToHexString where an incorrect 
6443exception code was returned if the resulting string would be > 200 chars.  
6444AE_STRING_LIMIT is now returned.
6445
6446Fixed a problem with the Concatenate operator where AE_OK was always 
6447returned, even if the operation failed.
6448
6449Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 
6450semaphores to be allocated.
6451
6452Code and Data Size: Current and previous core subsystem library sizes are 
6453shown below. These are the code and data sizes for the acpica.lib produced 
6454by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6455any ACPI driver or OSPM code. The debug version of the code includes the 
6456debug output trace mechanism and has a much larger code and data size. Note 
6457that these values will vary depending on the efficiency of the compiler and 
6458the compiler options used during generation.
6459
6460  Previous Release:
6461    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
6462    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
6463  Current Release:
6464    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
6465    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
6466
6467
64682) iASL Compiler/Disassembler:
6469
6470Fixed typechecking for the ObjectType and SizeOf operators.  Problem was 
6471recently introduced in 20041119.
6472
6473Fixed a problem with the ToUUID macro where the upper nybble of each buffer 
6474byte was inadvertently set to zero.
6475
6476----------------------------------------
647719 November 2004.  Summary of changes for version 20041119:
6478
64791) ACPI CA Core Subsystem:
6480
6481Fixed a problem in the internal ConvertToInteger routine where new integers 
6482were not truncated to 32 bits for 32-bit ACPI tables. This routine converts 
6483buffers and strings to integers.
6484
6485Implemented support to store a value to an Index() on a String object. This 
6486is an ACPI 2.0 feature that had not yet been implemented.
6487
6488Implemented new behavior for storing objects to individual package elements 
6489(via the Index() operator). The previous behavior was to invoke the implicit 
6490conversion rules if an object was already present at the index.  The new 
6491behavior is to simply delete any existing object and directly store the new 
6492object. Although the ACPI specification seems unclear on this subject, other 
6493ACPI implementations behave in this manner.  (This is the root of the 
6494AE_BAD_HEX_CONSTANT issue.)
6495
6496Modified the RSDP memory scan mechanism to support the extended checksum for 
6497ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 
6498RSDP signature is found with a valid checksum.
6499
6500Code and Data Size: Current and previous core subsystem library sizes are 
6501shown below. These are the code and data sizes for the acpica.lib produced 
6502by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6503any ACPI driver or OSPM code. The debug version of the code includes the 
6504debug output trace mechanism and has a much larger code and data size. Note 
6505that these values will vary depending on the efficiency of the compiler and 
6506the compiler options used during generation.
6507
6508  Previous Release:
6509    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
6510    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
6511  Current Release:
6512    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
6513    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
6514
6515
65162) iASL Compiler/Disassembler:
6517
6518Fixed a missing semicolon in the aslcompiler.y file.
6519
6520----------------------------------------
652105 November 2004.  Summary of changes for version 20041105:
6522
65231) ACPI CA Core Subsystem:
6524
6525Implemented support for FADT revision 2.  This was an interim table (between 
6526ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
6527
6528Implemented optional support to allow uninitialized LocalX and ArgX 
6529variables in a control method.  The variables are initialized to an Integer 
6530object with a value of zero.  This support is enabled by setting the 
6531AcpiGbl_EnableInterpreterSlack flag to TRUE.
6532
6533Implemented support for Integer objects for the SizeOf operator.  Either 4 
6534or 8 is returned, depending on the current integer size (32-bit or 64-bit, 
6535depending on the parent table revision).
6536
6537Fixed a problem in the implementation of the SizeOf and ObjectType operators 
6538where the operand was resolved to a value too early, causing incorrect 
6539return values for some objects.
6540
6541Fixed some possible memory leaks during exceptional conditions.
6542
6543Code and Data Size: Current and previous core subsystem library sizes are 
6544shown below. These are the code and data sizes for the acpica.lib produced 
6545by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6546any ACPI driver or OSPM code. The debug version of the code includes the 
6547debug output trace mechanism and has a much larger code and data size. Note 
6548that these values will vary depending on the efficiency of the compiler and 
6549the compiler options used during generation.
6550
6551  Previous Release:
6552    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
6553    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
6554  Current Release:
6555    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
6556    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
6557
6558
65592) iASL Compiler/Disassembler:
6560
6561Implemented support for all ACPI 3.0 reserved names and methods.
6562
6563Implemented all ACPI 3.0 grammar elements in the front-end, including 
6564support for semicolons.
6565
6566Implemented the ACPI 3.0 Function() and ToUUID() macros
6567
6568Fixed a problem in the disassembler where a Scope() operator would not be 
6569emitted properly if the target of the scope was in another table.
6570
6571----------------------------------------
657215 October 2004.  Summary of changes for version 20041015:
6573
6574Note:  ACPI CA is currently undergoing an in-depth and complete formal 
6575evaluation to test/verify the following areas. Other suggestions are 
6576welcome. This will result in an increase in the frequency of releases and 
6577the number of bug fixes in the next few months.
6578  - Functional tests for all ASL/AML operators
6579  - All implicit/explicit type conversions
6580  - Bit fields and operation regions
6581  - 64-bit math support and 32-bit-only "truncated" math support
6582  - Exceptional conditions, both compiler and interpreter
6583  - Dynamic object deletion and memory leaks
6584  - ACPI 3.0 support when implemented
6585  - External interfaces to the ACPI subsystem
6586
6587
65881) ACPI CA Core Subsystem:
6589
6590Fixed two alignment issues on 64-bit platforms - within debug statements in 
6591AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address 
6592field within the non-aligned ACPI generic address structure.
6593
6594Fixed a problem in the Increment and Decrement operators where incorrect 
6595operand resolution could result in the inadvertent modification of the 
6596original integer when the integer is passed into another method as an 
6597argument and the arg is then incremented/decremented.
6598
6599Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit 
6600BCD number were truncated during conversion.
6601
6602Fixed a problem in the ToDecimal operator where the length of the resulting 
6603string could be set incorrectly too long if the input operand was a Buffer 
6604object.
6605
6606Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0) 
6607within a buffer would prematurely terminate a compare between buffer 
6608objects.
6609
6610Added a check for string overflow (>200 characters as per the ACPI 
6611specification) during the Concatenate operator with two string operands.
6612
6613Code and Data Size: Current and previous core subsystem library sizes are 
6614shown below. These are the code and data sizes for the acpica.lib produced 
6615by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6616any ACPI driver or OSPM code. The debug version of the code includes the 
6617debug output trace mechanism and has a much larger code and data size. Note 
6618that these values will vary depending on the efficiency of the compiler and 
6619the compiler options used during generation.
6620
6621  Previous Release:
6622    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
6623    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
6624  Current Release:
6625    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
6626    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
6627
6628
6629
66302) iASL Compiler/Disassembler:
6631
6632Allow the use of the ObjectType operator on uninitialized Locals and Args 
6633(returns 0 as per the ACPI specification).
6634
6635Fixed a problem where the compiler would fault if there was a syntax error 
6636in the FieldName of all of the various CreateXXXField operators.
6637
6638Disallow the use of lower case letters within the EISAID macro, as per the 
6639ACPI specification.  All EISAID strings must be of the form "UUUNNNN" Where 
6640U is an uppercase letter and N is a hex digit.
6641
6642
6643----------------------------------------
664406 October 2004.  Summary of changes for version 20041006:
6645
66461) ACPI CA Core Subsystem:
6647
6648Implemented support for the ACPI 3.0 Timer operator. This ASL function 
6649implements a 64-bit timer with 100 nanosecond granularity.
6650
6651Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 
6652implement the ACPI 3.0 Timer operator.  This allows the host OS to implement 
6653the timer with the best clock available. Also, it keeps the core subsystem 
6654out of the clock handling business, since the host OS (usually) performs 
6655this function.
6656
6657Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 
6658functions use a 64-bit address which is part of the packed ACPI Generic 
6659Address Structure. Since the structure is non-aligned, the alignment macros 
6660are now used to extract the address to a local variable before use.
6661
6662Fixed a problem where the ToInteger operator assumed all input strings were 
6663hexadecimal. The operator now handles both decimal strings and hex strings 
6664(prefixed with "0x").
6665
6666Fixed a problem where the string length in the string object created as a 
6667result of the internal ConvertToString procedure could be incorrect. This 
6668potentially affected all implicit conversions and also the ToDecimalString 
6669and ToHexString operators.
6670
6671Fixed two problems in the ToString operator. If the length parameter was 
6672zero, an incorrect string object was created and the value of the input 
6673length parameter was inadvertently changed from zero to Ones.
6674
6675Fixed a problem where the optional ResourceSource string in the ExtendedIRQ 
6676resource macro was ignored.
6677
6678Simplified the interfaces to the internal division functions, reducing code 
6679size and complexity.
6680
6681Code and Data Size: Current and previous core subsystem library sizes are 
6682shown below. These are the code and data sizes for the acpica.lib produced 
6683by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6684any ACPI driver or OSPM code. The debug version of the code includes the 
6685debug output trace mechanism and has a much larger code and data size. Note 
6686that these values will vary depending on the efficiency of the compiler and 
6687the compiler options used during generation.
6688
6689  Previous Release:
6690    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
6691    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
6692  Current Release:
6693    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
6694    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
6695
6696
66972) iASL Compiler/Disassembler:
6698
6699Implemented support for the ACPI 3.0 Timer operator.
6700
6701Fixed a problem where the Default() operator was inadvertently ignored in a 
6702Switch/Case block.  This was a problem in the translation of the Switch 
6703statement to If...Else pairs.
6704
6705Added support to allow a standalone Return operator, with no parentheses (or 
6706operands).
6707
6708Fixed a problem with code generation for the ElseIf operator where the 
6709translated Else...If parse tree was improperly constructed leading to the 
6710loss of some code.
6711
6712----------------------------------------
671322 September 2004.  Summary of changes for version 20040922:
6714
67151) ACPI CA Core Subsystem:
6716
6717Fixed a problem with the implementation of the LNot() operator where "Ones" 
6718was not returned for the TRUE case. Changed the code to return Ones instead 
6719of (!Arg) which was usually 1. This change affects iASL constant folding for 
6720this operator also.
6721
6722Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not 
6723initialized properly -- Now zero the entire buffer in this case where the 
6724buffer already exists.
6725
6726Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 
6727Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 
6728related code considerably. This will require changes/updates to all OS 
6729interface layers (OSLs.)
6730
6731Implemented a new external interface, AcpiInstallExceptionHandler, to allow 
6732a system exception handler to be installed. This handler is invoked upon any 
6733run-time exception that occurs during control method execution.
6734
6735Added support for the DSDT in AcpiTbFindTable. This allows the 
6736DataTableRegion() operator to access the local copy of the DSDT.
6737
6738Code and Data Size: Current and previous core subsystem library sizes are 
6739shown below. These are the code and data sizes for the acpica.lib produced 
6740by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6741any ACPI driver or OSPM code. The debug version of the code includes the 
6742debug output trace mechanism and has a much larger code and data size. Note 
6743that these values will vary depending on the efficiency of the compiler and 
6744the compiler options used during generation.
6745
6746  Previous Release:
6747    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
6748    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
6749  Current Release:
6750    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
6751    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
6752
6753
67542) iASL Compiler/Disassembler:
6755
6756Fixed a problem with constant folding and the LNot operator. LNot was 
6757returning 1 in the TRUE case, not Ones as per the ACPI specification. This 
6758could result in the generation of an incorrect folded/reduced constant.
6759
6760End-Of-File is now allowed within a "//"-style comment.  A parse error no 
6761longer occurs if such a comment is at the very end of the input ASL source 
6762file.
6763
6764Implemented the "-r" option to override the Revision in the table header. 
6765The initial use of this option will be to simplify the evaluation of the AML 
6766interpreter by allowing a single ASL source module to be compiled for either 
676732-bit or 64-bit integers.
6768
6769
6770----------------------------------------
677127 August 2004.  Summary of changes for version 20040827:
6772
67731) ACPI CA Core Subsystem:
6774
6775- Implemented support for implicit object conversion in the non-numeric 
6776logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and 
6777LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used; 
6778the second operand is implicitly converted on the fly to match the type of 
6779the first operand.  For example:
6780
6781    LEqual (Source1, Source2)
6782
6783Source1 and Source2 must each evaluate to an integer, a string, or a buffer. 
6784The data type of Source1 dictates the required type of Source2. Source2 is 
6785implicitly converted if necessary to match the type of Source1.
6786
6787- Updated and corrected the behavior of the string conversion support.  The 
6788rules concerning conversion of buffers to strings (according to the ACPI 
6789specification) are as follows:
6790
6791ToDecimalString - explicit byte-wise conversion of buffer to string of 
6792decimal values (0-255) separated by commas. ToHexString - explicit byte-wise 
6793conversion of buffer to string of hex values (0-FF) separated by commas. 
6794ToString - explicit byte-wise conversion of buffer to string.  Byte-by-byte 
6795copy with no transform except NULL terminated. Any other implicit buffer-to-
6796string conversion - byte-wise conversion of buffer to string of hex values 
6797(0-FF) separated by spaces.
6798
6799- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
6800
6801- Fixed a problem in AcpiNsGetPathnameLength where the returned length was 
6802one byte too short in the case of a node in the root scope.  This could 
6803cause a fault during debug output.
6804
6805- Code and Data Size: Current and previous core subsystem library sizes are 
6806shown below.  These are the code and data sizes for the acpica.lib produced 
6807by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6808any ACPI driver or OSPM code.  The debug version of the code includes the 
6809debug output trace mechanism and has a much larger code and data size.  Note 
6810that these values will vary depending on the efficiency of the compiler and 
6811the compiler options used during generation.
6812
6813  Previous Release:
6814    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
6815    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
6816  Current Release:
6817    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
6818    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
6819
6820
68212) iASL Compiler/Disassembler:
6822
6823- Fixed a Linux generation error.
6824
6825
6826----------------------------------------
682716 August 2004.  Summary of changes for version 20040816:
6828
68291) ACPI CA Core Subsystem:
6830
6831Designed and implemented support within the AML interpreter for the so-
6832called "implicit return".  This support returns the result of the last ASL 
6833operation within a control method, in the absence of an explicit Return() 
6834operator.  A few machines depend on this behavior, even though it is not 
6835explicitly supported by the ASL language.  It is optional support that can 
6836be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
6837
6838Removed support for the PCI_Config address space from the internal low level 
6839hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This 
6840support was not used internally, and would not work correctly anyway because 
6841the PCI bus number and segment number were not supported.  There are 
6842separate interfaces for PCI configuration space access because of the unique 
6843interface.
6844
6845Code and Data Size: Current and previous core subsystem library sizes are 
6846shown below.  These are the code and data sizes for the acpica.lib produced 
6847by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6848any ACPI driver or OSPM code.  The debug version of the code includes the 
6849debug output trace mechanism and has a much larger code and data size.  Note 
6850that these values will vary depending on the efficiency of the compiler and 
6851the compiler options used during generation.
6852
6853  Previous Release:
6854    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
6855    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
6856  Current Release:
6857    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
6858    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
6859
6860
68612) iASL Compiler/Disassembler:
6862
6863Fixed a problem where constants in ASL expressions at the root level (not 
6864within a control method) could be inadvertently truncated during code 
6865generation.  This problem was introduced in the 20040715 release.
6866
6867
6868----------------------------------------
686915 July 2004.  Summary of changes for version 20040715:
6870
68711) ACPI CA Core Subsystem:
6872
6873Restructured the internal HW GPE interfaces to pass/track the current state 
6874of interrupts (enabled/disabled) in order to avoid possible deadlock and 
6875increase flexibility of the interfaces.
6876
6877Implemented a "lexicographical compare" for String and Buffer objects within 
6878the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -- 
6879as per further clarification to the ACPI specification.  Behavior is similar 
6880to C library "strcmp".
6881
6882Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 
6883external function.  In the 32-bit non-debug case, the stack use has been 
6884reduced from 168 bytes to 32 bytes.
6885
6886Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack, 
6887whose purpose is to allow the AML interpreter to forgive certain bad AML 
6888constructs.  Default setting is FALSE.
6889
6890Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO 
6891support code.  If enabled, it allows field access to go beyond the end of a 
6892region definition if the field is within the region length rounded up to the 
6893next access width boundary (a common coding error.)
6894
6895Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 
6896ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, these 
6897symbols are lowercased by the latest version of the AcpiSrc tool.
6898
6899The prototypes for the PCI interfaces in acpiosxf.h have been updated to 
6900rename "Register" to simply "Reg" to prevent certain compilers from 
6901complaining.
6902
6903Code and Data Size: Current and previous core subsystem library sizes are 
6904shown below.  These are the code and data sizes for the acpica.lib produced 
6905by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6906any ACPI driver or OSPM code.  The debug version of the code includes the 
6907debug output trace mechanism and has a much larger code and data size.  Note 
6908that these values will vary depending on the efficiency of the compiler and 
6909the compiler options used during generation.
6910
6911  Previous Release:
6912    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
6913    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
6914  Current Release:
6915    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
6916    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
6917
6918
69192) iASL Compiler/Disassembler:
6920
6921Implemented full support for Package objects within the Case() operator.  
6922Note: The Break() operator is currently not supported within Case blocks 
6923(TermLists) as there is some question about backward compatibility with ACPI 
69241.0 interpreters.
6925
6926
6927Fixed a problem where complex terms were not supported properly within the 
6928Switch() operator.
6929
6930Eliminated extraneous warning for compiler-emitted reserved names of the 
6931form "_T_x".  (Used in Switch/Case operators.)
6932
6933Eliminated optimization messages for "_T_x" objects and small constants 
6934within the DefinitionBlock operator.
6935
6936
6937----------------------------------------
693815 June 2004.  Summary of changes for version 20040615:
6939
69401) ACPI CA Core Subsystem:
6941
6942Implemented support for Buffer and String objects (as per ACPI 2.0) for the 
6943following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
6944LLessEqual.
6945
6946All directory names in the entire source package are lower case, as they 
6947were in earlier releases.
6948
6949Implemented "Disassemble" command in the AML debugger that will disassemble 
6950a single control method.
6951
6952Code and Data Size: Current and previous core subsystem library sizes are 
6953shown below.  These are the code and data sizes for the acpica.lib produced 
6954by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
6955any ACPI driver or OSPM code.  The debug version of the code includes the 
6956debug output trace mechanism and has a much larger code and data size.  Note 
6957that these values will vary depending on the efficiency of the compiler and 
6958the compiler options used during generation.
6959
6960  Previous Release:
6961    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
6962    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
6963
6964  Current Release:
6965    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
6966    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
6967
6968
69692) iASL Compiler/Disassembler:
6970
6971Implemented support for Buffer and String objects (as per ACPI 2.0) for the 
6972following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
6973LLessEqual.
6974
6975All directory names in the entire source package are lower case, as they 
6976were in earlier releases.
6977
6978Fixed a fault when using the -g or -d<nofilename> options if the FADT was 
6979not found.
6980
6981Fixed an issue with the Windows version of the compiler where later versions 
6982of Windows place the FADT in the registry under the name "FADT" and not 
6983"FACP" as earlier versions did.  This applies when using the -g or -
6984d<nofilename> options.  The compiler now looks for both strings as 
6985necessary.
6986
6987Fixed a problem with compiler namepath optimization where a namepath within 
6988the Scope() operator could not be optimized if the namepath was a subpath of 
6989the current scope path.
6990
6991----------------------------------------
699227 May 2004.  Summary of changes for version 20040527:
6993
69941) ACPI CA Core Subsystem:
6995
6996Completed a new design and implementation for EBDA (Extended BIOS Data Area) 
6997support in the RSDP scan code.  The original code improperly scanned for the 
6998EBDA by simply scanning from memory location 0 to 0x400.  The correct method 
6999is to first obtain the EBDA pointer from within the BIOS data area, then 
7000scan 1K of memory starting at the EBDA pointer.  There appear to be few if 
7001any machines that place the RSDP in the EBDA, however.
7002
7003Integrated a fix for a possible fault during evaluation of BufferField 
7004arguments.  Obsolete code that was causing the problem was removed.
7005
7006Found and fixed a problem in the Field Support Code where data could be 
7007corrupted on a bit field read that starts on an aligned boundary but does 
7008not end on an aligned boundary.  Merged the read/write "datum length" 
7009calculation code into a common procedure.
7010
7011Rolled in a couple of changes to the FreeBSD-specific header.
7012
7013
7014Code and Data Size: Current and previous core subsystem library sizes are 
7015shown below.  These are the code and data sizes for the acpica.lib produced 
7016by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
7017any ACPI driver or OSPM code.  The debug version of the code includes the 
7018debug output trace mechanism and has a much larger code and data size.  Note 
7019that these values will vary depending on the efficiency of the compiler and 
7020the compiler options used during generation.
7021
7022  Previous Release:
7023    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
7024    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
7025  Current Release:
7026    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
7027    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
7028
7029
70302) iASL Compiler/Disassembler:
7031
7032Fixed a generation warning produced by some overly-verbose compilers for a 
703364-bit constant.
7034
7035----------------------------------------
703614 May 2004.  Summary of changes for version 20040514:
7037
70381) ACPI CA Core Subsystem:
7039
7040Fixed a problem where hardware GPE enable bits sometimes not set properly 
7041during and after GPE method execution.  Result of 04/27 changes.
7042
7043Removed extra "clear all GPEs" when sleeping/waking.
7044
7045Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 
7046AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to 
7047the new AcpiEv* calls as appropriate.
7048
7049ACPI_OS_NAME was removed from the OS-specific headers.  The default name is 
7050now "Microsoft Windows NT" for maximum compatibility.  However this can be 
7051changed by modifying the acconfig.h file.
7052
7053Allow a single invocation of AcpiInstallNotifyHandler for a handler that 
7054traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag. 
7055
7056Run _INI methods on ThermalZone objects.  This is against the ACPI 
7057specification, but there is apparently ASL code in the field that has these 
7058_INI methods, and apparently "other" AML interpreters execute them.
7059
7060Performed a full 16/32/64 bit lint that resulted in some small changes.
7061
7062Added a sleep simulation command to the AML debugger to test sleep code. 
7063
7064Code and Data Size: Current and previous core subsystem library sizes are 
7065shown below.  These are the code and data sizes for the acpica.lib produced 
7066by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
7067any ACPI driver or OSPM code.  The debug version of the code includes the 
7068debug output trace mechanism and has a much larger code and data size.  Note 
7069that these values will vary depending on the efficiency of the compiler and 
7070the compiler options used during generation.
7071
7072  Previous Release:
7073    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
7074    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
7075  Current Release:
7076    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
7077    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
7078
7079----------------------------------------
708027 April 2004.  Summary of changes for version 20040427:
7081
70821) ACPI CA Core Subsystem:
7083
7084Completed a major overhaul of the GPE handling within ACPI CA.  There are 
7085now three types of GPEs:  wake-only, runtime-only, and combination wake/run.  
7086The only GPEs allowed to be combination wake/run are for button-style 
7087devices such as a control-method power button, control-method sleep button, 
7088or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are not 
7089referenced by any _PRW methods are marked for "runtime" and hardware 
7090enabled.  Any GPE that is referenced by a _PRW method is marked for "wake" 
7091(and disabled at runtime).  However, at sleep time, only those GPEs that 
7092have been specifically enabled for wake via the AcpiEnableGpe interface will 
7093actually be hardware enabled.
7094
7095A new external interface has been added, AcpiSetGpeType(), that is meant to 
7096be used by device drivers to force a GPE to a particular type.  It will be 
7097especially useful for the drivers for the button devices mentioned above.
7098
7099Completed restructuring of the ACPI CA initialization sequence so that 
7100default operation region handlers are installed before GPEs are initialized 
7101and the _PRW methods are executed.  This will prevent errors when the _PRW 
7102methods attempt to access system memory or I/O space.
7103
7104GPE enable/disable no longer reads the GPE enable register.  We now keep the 
7105enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We 
7106thus no longer depend on the hardware to maintain these bits.
7107
7108Always clear the wake status and fixed/GPE status bits before sleep, even 
7109for state S5.
7110
7111Improved the AML debugger output for displaying the GPE blocks and their 
7112current status.
7113
7114Added new strings for the _OSI method, of the form "Windows 2001 SPx" where 
7115x = 0,1,2,3,4.
7116
7117Fixed a problem where the physical address was incorrectly calculated when 
7118the Load() operator was used to directly load from an Operation Region (vs. 
7119loading from a Field object.)  Also added check for minimum table length for 
7120this case.
7121
7122Fix for multiple mutex acquisition.  Restore original thread SyncLevel on 
7123mutex release.
7124
7125Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 
7126consistency with the other fields returned.
7127
7128Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such 
7129structure for each GPE in the system, so the size of this structure is 
7130important.
7131
7132CPU stack requirement reduction:  Cleaned up the method execution and object 
7133evaluation paths so that now a parameter structure is passed, instead of 
7134copying the various method parameters over and over again.
7135
7136In evregion.c:  Correctly exit and reenter the interpreter region if and 
7137only if dispatching an operation region request to a user-installed handler.  
7138Do not exit/reenter when dispatching to a default handler (e.g., default 
7139system memory or I/O handlers)
7140
7141
7142Notes for updating drivers for the new GPE support.  The following changes 
7143must be made to ACPI-related device drivers that are attached to one or more 
7144GPEs: (This information will be added to the ACPI CA Programmer Reference.)
7145
71461) AcpiInstallGpeHandler no longer automatically enables the GPE, you must 
7147explicitly call AcpiEnableGpe.
71482) There is a new interface called AcpiSetGpeType. This should be called 
7149before enabling the GPE.  Also, this interface will automatically disable 
7150the GPE if it is currently enabled.
71513) AcpiEnableGpe no longer supports a GPE type flag.
7152
7153Specific drivers that must be changed:
71541) EC driver:
7155    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 
7156AeGpeHandler, NULL);
7157    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
7158    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
7159
71602) Button Drivers (Power, Lid, Sleep):
7161Run _PRW method under parent device
7162If _PRW exists: /* This is a control-method button */
7163    Extract GPE number and possibly GpeDevice
7164    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
7165    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
7166
7167For all other devices that have _PRWs, we automatically set the GPE type to 
7168ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  This 
7169must be done on a selective basis, usually requiring some kind of user app 
7170to allow the user to pick the wake devices.
7171
7172
7173Code and Data Size: Current and previous core subsystem library sizes are 
7174shown below.  These are the code and data sizes for the acpica.lib produced 
7175by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
7176any ACPI driver or OSPM code.  The debug version of the code includes the 
7177debug output trace mechanism and has a much larger code and data size.  Note 
7178that these values will vary depending on the efficiency of the compiler and 
7179the compiler options used during generation.
7180
7181  Previous Release:
7182    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
7183    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
7184  Current Release:
7185
7186    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
7187    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
7188
7189
7190
7191----------------------------------------
719202 April 2004.  Summary of changes for version 20040402:
7193
71941) ACPI CA Core Subsystem:
7195
7196Fixed an interpreter problem where an indirect store through an ArgX 
7197parameter was incorrectly applying the "implicit conversion rules" during 
7198the store.  From the ACPI specification: "If the target is a method local or 
7199argument (LocalX or ArgX), no conversion is performed and the result is 
7200stored directly to the target".  The new behavior is to disable implicit 
7201conversion during ALL stores to an ArgX.
7202
7203Changed the behavior of the _PRW method scan to ignore any and all errors 
7204returned by a given _PRW.  This prevents the scan from aborting from the 
7205failure of any single _PRW.
7206
7207Moved the runtime configuration parameters from the global init procedure to 
7208static variables in acglobal.h.  This will allow the host to override the 
7209default values easily.
7210
7211Code and Data Size: Current and previous core subsystem library sizes are 
7212shown below.  These are the code and data sizes for the acpica.lib produced 
7213by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
7214any ACPI driver or OSPM code.  The debug version of the code includes the 
7215debug output trace mechanism and has a much larger code and data size.  Note 
7216that these values will vary depending on the efficiency of the compiler and 
7217the compiler options used during generation.
7218
7219  Previous Release:
7220    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
7221    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
7222  Current Release:
7223    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
7224    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
7225
7226
72272) iASL Compiler/Disassembler:
7228
7229iASL now fully disassembles SSDTs.  However, External() statements are not 
7230generated automatically for unresolved symbols at this time.  This is a 
7231planned feature for future implementation.
7232
7233Fixed a scoping problem in the disassembler that occurs when the type of the 
7234target of a Scope() operator is overridden.  This problem caused an 
7235incorrectly nested internal namespace to be constructed.
7236
7237Any warnings or errors that are emitted during disassembly are now commented 
7238out automatically so that the resulting file can be recompiled without any 
7239hand editing.
7240
7241----------------------------------------
724226 March 2004.  Summary of changes for version 20040326:
7243
72441) ACPI CA Core Subsystem:
7245
7246Implemented support for "wake" GPEs via interaction between GPEs and the 
7247_PRW methods.  Every GPE that is pointed to by one or more _PRWs is 
7248identified as a WAKE GPE and by default will no longer be enabled at 
7249runtime.  Previously, we were blindly enabling all GPEs with a corresponding 
7250_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  We 
7251believe this has been the cause of thousands of "spurious" GPEs on some 
7252systems.
7253
7254This new GPE behavior is can be reverted to the original behavior (enable 
7255ALL GPEs at runtime) via a runtime flag.
7256
7257Fixed a problem where aliased control methods could not access objects 
7258properly.  The proper scope within the namespace was not initialized 
7259(transferred to the target of the aliased method) before executing the 
7260target method.
7261
7262Fixed a potential race condition on internal object deletion on the return 
7263object in AcpiEvaluateObject. 
7264
7265Integrated a fix for resource descriptors where both _MEM and _MTP were 
7266being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too 
7267wide, 0x0F instead of 0x03.)
7268
7269Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a 
7270fault in some cases.
7271
7272Updated Notify() values for debug statements in evmisc.c
7273
7274Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
7275
7276Code and Data Size: Current and previous core subsystem library sizes are 
7277shown below.  These are the code and data sizes for the acpica.lib produced 
7278by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
7279any ACPI driver or OSPM code.  The debug version of the code includes the 
7280debug output trace mechanism and has a much larger code and data size.  Note 
7281that these values will vary depending on the efficiency of the compiler and 
7282the compiler options used during generation.
7283
7284  Previous Release:
7285
7286    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
7287    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
7288  Current Release:
7289    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
7290    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
7291
7292----------------------------------------
729311 March 2004.  Summary of changes for version 20040311:
7294
72951) ACPI CA Core Subsystem:
7296
7297Fixed a problem where errors occurring during the parse phase of control 
7298method execution did not abort cleanly.  For example, objects created and 
7299installed in the namespace were not deleted.  This caused all subsequent 
7300invocations of the method to return the AE_ALREADY_EXISTS exception.
7301
7302Implemented a mechanism to force a control method to "Serialized" execution 
7303if the method attempts to create namespace objects. (The root of the 
7304AE_ALREADY_EXISTS problem.)
7305
7306Implemented support for the predefined _OSI "internal" control method.  
7307Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and 
7308"Windows 2001.1", and can be easily upgraded for new strings as necessary.  
7309This feature will allow "other" operating systems to execute the fully 
7310tested, "Windows" code path through the ASL code
7311
7312Global Lock Support:  Now allows multiple acquires and releases with any 
7313internal thread.  Removed concept of "owning thread" for this special mutex.
7314
7315Fixed two functions that were inappropriately declaring large objects on the 
7316CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage during 
7317method execution considerably.
7318
7319Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 
7320S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
7321
7322Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 
7323defined on the machine.
7324
7325Implemented two runtime options:  One to force all control method execution 
7326to "Serialized" to mimic Windows behavior, another to disable _OSI support 
7327if it causes problems on a given machine.
7328
7329Code and Data Size: Current and previous core subsystem library sizes are 
7330shown below.  These are the code and data sizes for the acpica.lib produced 
7331by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
7332any ACPI driver or OSPM code.  The debug version of the code includes the 
7333debug output trace mechanism and has a much larger code and data size.  Note 
7334that these values will vary depending on the efficiency of the compiler and 
7335the compiler options used during generation.
7336
7337  Previous Release:
7338    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
7339    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
7340  Current Release:
7341    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
7342    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
7343
73442) iASL Compiler/Disassembler:
7345
7346Fixed an array size problem for FreeBSD that would cause the compiler to 
7347fault.
7348
7349----------------------------------------
735020 February 2004.  Summary of changes for version 20040220:
7351
7352
73531) ACPI CA Core Subsystem:
7354
7355Implemented execution of _SxD methods for Device objects in the 
7356GetObjectInfo interface.
7357
7358Fixed calls to _SST method to pass the correct arguments.
7359
7360Added a call to _SST on wake to restore to "working" state.
7361
7362Check for End-Of-Buffer failure case in the WalkResources interface.
7363
7364Integrated fix for 64-bit alignment issue in acglobal.h by moving two 
7365structures to the beginning of the file.
7366
7367After wake, clear GPE status register(s) before enabling GPEs.
7368
7369After wake, clear/enable power button.  (Perhaps we should clear/enable all 
7370fixed events upon wake.)
7371
7372Fixed a couple of possible memory leaks in the Namespace manager.
7373
7374Integrated latest acnetbsd.h file.
7375
7376----------------------------------------
737711 February 2004.  Summary of changes for version 20040211:
7378
7379
73801) ACPI CA Core Subsystem:
7381
7382Completed investigation and implementation of the call-by-reference 
7383mechanism for control method arguments.
7384
7385Fixed a problem where a store of an object into an indexed package could 
7386fail if the store occurs within a different method than the method that 
7387created the package.
7388
7389Fixed a problem where the ToDecimal operator could return incorrect results.
7390
7391Fixed a problem where the CopyObject operator could fail on some of the more 
7392obscure objects (e.g., Reference objects.)
7393
7394Improved the output of the Debug object to display buffer, package, and 
7395index objects.
7396
7397Fixed a problem where constructs of the form "RefOf (ArgX)" did not return 
7398the expected result.
7399
7400Added permanent ACPI_REPORT_ERROR macros for all instances of the 
7401ACPI_AML_INTERNAL exception.
7402
7403Integrated latest version of acfreebsd.h
7404
7405----------------------------------------
740616 January 2004.  Summary of changes for version 20040116:
7407
7408The purpose of this release is primarily to update the copyright years in 
7409each module, thus causing a huge number of diffs.  There are a few small 
7410functional changes, however.
7411
74121) ACPI CA Core Subsystem:
7413
7414Improved error messages when there is a problem finding one or more of the 
7415required base ACPI tables
7416
7417Reintroduced the definition of APIC_HEADER in actbl.h
7418
7419Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
7420
7421Removed extraneous reference to NewObj in dsmthdat.c
7422
74232) iASL compiler
7424
7425Fixed a problem introduced in December that disabled the correct disassembly 
7426of Resource Templates
7427
7428
7429----------------------------------------
743003 December 2003.  Summary of changes for version 20031203:
7431
74321) ACPI CA Core Subsystem:
7433
7434Changed the initialization of Operation Regions during subsystem
7435init to perform two entire walks of the ACPI namespace; The first
7436to initialize the regions themselves, the second to execute the
7437_REG methods.  This fixed some interdependencies across _REG
7438methods found on some machines.
7439
7440Fixed a problem where a Store(Local0, Local1) could simply update
7441the object reference count, and not create a new copy of the
7442object if the Local1 is uninitialized.
7443
7444Implemented support for the _SST reserved method during sleep
7445transitions.
7446
7447Implemented support to clear the SLP_TYP and SLP_EN bits when
7448waking up, this is apparently required by some machines.
7449
7450When sleeping, clear the wake status only if SleepState is not S5.
7451
7452Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
7453pointer arithmetic advanced a string pointer too far.
7454
7455Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
7456could be returned if the requested table has not been loaded.
7457
7458Within the support for IRQ resources, restructured the handling of
7459the active and edge/level bits.
7460
7461Fixed a few problems in AcpiPsxExecute() where memory could be
7462leaked under certain error conditions.
7463
7464Improved error messages for the cases where the ACPI mode could
7465not be entered.
7466
7467Code and Data Size: Current and previous core subsystem library
7468sizes are shown below.  These are the code and data sizes for the
7469acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
7470these values do not include any ACPI driver or OSPM code.  The
7471debug version of the code includes the debug output trace
7472mechanism and has a much larger code and data size.  Note that
7473these values will vary depending on the efficiency of the compiler
7474and the compiler options used during generation.
7475
7476  Previous Release (20031029):
7477    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
7478    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
7479  Current Release:
7480    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
7481    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
7482
74832) iASL Compiler/Disassembler:
7484
7485Implemented a fix for the iASL disassembler where a bad index was
7486generated.  This was most noticeable on 64-bit platforms
7487
7488
7489----------------------------------------
749029 October 2003.  Summary of changes for version 20031029:
7491
74921) ACPI CA Core Subsystem:
7493
7494
7495Fixed a problem where a level-triggered GPE with an associated
7496_Lxx control method was incorrectly cleared twice.
7497
7498Fixed a problem with the Field support code where an access can
7499occur beyond the end-of-region if the field is non-aligned but
7500extends to the very end of the parent region (resulted in an
7501AE_AML_REGION_LIMIT exception.)
7502
7503Fixed a problem with ACPI Fixed Events where an RT Clock handler
7504would not get invoked on an RTC event.  The RTC event bitmasks for
7505the PM1 registers were not being initialized properly.
7506
7507Implemented support for executing _STA and _INI methods for
7508Processor objects.  Although this is currently not part of the
7509ACPI specification, there is existing ASL code that depends on the
7510init-time execution of these methods.
7511
7512Implemented and deployed a GetDescriptorName function to decode
7513the various types of internal descriptors.  Guards against null
7514descriptors during debug output also.
7515
7516Implemented and deployed a GetNodeName function to extract the 4-
7517character namespace node name.  This function simplifies the debug
7518and error output, as well as guarding against null pointers during
7519output.
7520
7521Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
7522simplify the debug and error output of 64-bit integers.  This
7523macro replaces the HIDWORD and LODWORD macros for dumping these
7524integers.
7525
7526Updated the implementation of the Stall() operator to only call
7527AcpiOsStall(), and also return an error if the operand is larger
7528than 255.  This preserves the required behavior of not
7529relinquishing the processor, as would happen if AcpiOsSleep() was
7530called for "long stalls".
7531
7532Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
7533initialized are now treated as NOOPs.
7534
7535Cleaned up a handful of warnings during 64-bit generation.
7536
7537Fixed a reported error where and incorrect GPE number was passed
7538to the GPE dispatch handler.  This value is only used for error
7539output, however.  Used this opportunity to clean up and streamline
7540the GPE dispatch code.
7541
7542Code and Data Size: Current and previous core subsystem library
7543sizes are shown below.  These are the code and data sizes for the
7544acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
7545these values do not include any ACPI driver or OSPM code.  The
7546
7547debug version of the code includes the debug output trace
7548mechanism and has a much larger code and data size.  Note that
7549these values will vary depending on the efficiency of the compiler
7550and the compiler options used during generation.
7551
7552  Previous Release (20031002):
7553    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
7554    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
7555  Current Release:
7556    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
7557    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
7558
7559
75602) iASL Compiler/Disassembler:
7561
7562Updated the iASL compiler to return an error if the operand to the
7563Stall() operator is larger than 255.
7564
7565
7566----------------------------------------
756702 October 2003.  Summary of changes for version 20031002:
7568
7569
75701) ACPI CA Core Subsystem:
7571
7572Fixed a problem with Index Fields where the index was not
7573incremented for fields that require multiple writes to the
7574index/data registers (Fields that are wider than the data
7575register.)
7576
7577Fixed a problem with all Field objects where a write could go
7578beyond the end-of-field if the field was larger than the access
7579granularity and therefore required multiple writes to complete the
7580request.  An extra write beyond the end of the field could happen
7581inadvertently.
7582
7583Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
7584would incorrectly be returned if the width of the Data Register
7585was larger than the specified field access width.
7586
7587Completed fixes for LoadTable() and Unload() and verified their
7588operation.  Implemented full support for the "DdbHandle" object
7589throughout the ACPI CA subsystem.
7590
7591Implemented full support for the MADT and ECDT tables in the ACPI
7592CA header files.  Even though these tables are not directly
7593consumed by ACPI CA, the header definitions are useful for ACPI
7594device drivers.
7595
7596Integrated resource descriptor fixes posted to the Linux ACPI
7597list.  This included checks for minimum descriptor length, and
7598support for trailing NULL strings within descriptors that have
7599optional string elements.
7600
7601Code and Data Size: Current and previous core subsystem library
7602sizes are shown below.  These are the code and data sizes for the
7603acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
7604these values do not include any ACPI driver or OSPM code.  The
7605debug version of the code includes the debug output trace
7606mechanism and has a much larger code and data size.  Note that
7607these values will vary depending on the efficiency of the compiler
7608and the compiler options used during generation.
7609
7610  Previous Release (20030918):
7611    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
7612    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
7613  Current Release:
7614    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
7615    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
7616
7617
76182) iASL Compiler:
7619
7620Implemented detection of non-ASCII characters within the input
7621source ASL file.  This catches attempts to compile binary (AML)
7622files early in the compile, with an informative error message.
7623
7624Fixed a problem where the disassembler would fault if the output
7625filename could not be generated or if the output file could not be
7626opened.
7627
7628----------------------------------------
762918 September 2003.  Summary of changes for version 20030918:
7630
7631
76321) ACPI CA Core Subsystem:
7633
7634Found and fixed a longstanding problem with the late execution of
7635the various deferred AML opcodes (such as Operation Regions,
7636Buffer Fields, Buffers, and Packages).  If the name string
7637specified for the name of the new object placed the object in a
7638scope other than the current scope, the initialization/execution
7639of the opcode failed.  The solution to this problem was to
7640implement a mechanism where the late execution of such opcodes
7641does not attempt to lookup/create the name a second time in an
7642incorrect scope.  This fixes the "region size computed
7643incorrectly" problem.
7644
7645Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
7646Global Lock AE_BAD_PARAMETER error.
7647
7648Fixed several 64-bit issues with prototypes, casting and data
7649types.
7650
7651Removed duplicate prototype from acdisasm.h
7652
7653Fixed an issue involving EC Operation Region Detach (Shaohua Li)
7654
7655Code and Data Size: Current and previous core subsystem library
7656sizes are shown below.  These are the code and data sizes for the
7657acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
7658these values do not include any ACPI driver or OSPM code.  The
7659debug version of the code includes the debug output trace
7660mechanism and has a much larger code and data size.  Note that
7661these values will vary depending on the efficiency of the compiler
7662and the compiler options used during generation.
7663
7664  Previous Release:
7665
7666    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
7667    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
7668  Current Release:
7669    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
7670    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
7671
7672
76732) Linux:
7674
7675Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
7676correct sleep time in seconds.
7677
7678----------------------------------------
767914 July 2003.  Summary of changes for version 20030619:
7680
76811) ACPI CA Core Subsystem:
7682
7683Parse SSDTs in order discovered, as opposed to reverse order
7684(Hrvoje Habjanic)
7685
7686Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
7687Klausner,
7688   Nate Lawson)
7689
7690
76912) Linux:
7692
7693Dynamically allocate SDT list (suggested by Andi Kleen)
7694
7695proc function return value cleanups (Andi Kleen)
7696
7697Correctly handle NMI watchdog during long stalls (Andrew Morton)
7698
7699Make it so acpismp=force works (reported by Andrew Morton)
7700
7701
7702----------------------------------------
770319 June 2003.  Summary of changes for version 20030619:
7704
77051) ACPI CA Core Subsystem:
7706
7707Fix To/FromBCD, eliminating the need for an arch-specific #define.
7708
7709Do not acquire a semaphore in the S5 shutdown path.
7710
7711Fix ex_digits_needed for 0. (Takayoshi Kochi)
7712
7713Fix sleep/stall code reversal. (Andi Kleen)
7714
7715Revert a change having to do with control method calling
7716semantics.
7717
77182) Linux:
7719
7720acpiphp update (Takayoshi Kochi)
7721
7722Export acpi_disabled for sonypi (Stelian Pop)
7723
7724Mention acpismp=force in config help
7725
7726Re-add acpitable.c and acpismp=force. This improves backwards
7727
7728compatibility and also cleans up the code to a significant degree.
7729
7730Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
7731
7732----------------------------------------
773322 May 2003.  Summary of changes for version 20030522:
7734
77351) ACPI CA Core Subsystem:
7736
7737Found and fixed a reported problem where an AE_NOT_FOUND error
7738occurred occasionally during _BST evaluation.  This turned out to
7739be an Owner ID allocation issue where a called method did not get
7740a new ID assigned to it.  Eventually, (after 64k calls), the Owner
7741ID UINT16 would wraparound so that the ID would be the same as the
7742caller's and the called method would delete the caller's
7743namespace.
7744
7745Implemented extended error reporting for control methods that are
7746aborted due to a run-time exception.  Output includes the exact
7747AML instruction that caused the method abort, a dump of the method
7748locals and arguments at the time of the abort, and a trace of all
7749nested control method calls.
7750
7751Modified the interpreter to allow the creation of buffers of zero
7752length from the AML code. Implemented new code to ensure that no
7753attempt is made to actually allocate a memory buffer (of length
7754zero) - instead, a simple buffer object with a NULL buffer pointer
7755and length zero is created.  A warning is no longer issued when
7756the AML attempts to create a zero-length buffer.
7757
7758Implemented a workaround for the "leading asterisk issue" in
7759_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
7760asterisk is automatically removed if present in any HID, UID, or
7761CID strings.  The iASL compiler will still flag this asterisk as
7762an error, however.
7763
7764Implemented full support for _CID methods that return a package of
7765multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
7766now additionally returns a device _CID list if present.  This
7767required a change to the external interface in order to pass an
7768ACPI_BUFFER object as a parameter since the _CID list is of
7769variable length.
7770
7771Fixed a problem with the new AE_SAME_HANDLER exception where
7772handler initialization code did not know about this exception.
7773
7774Code and Data Size: Current and previous core subsystem library
7775sizes are shown below.  These are the code and data sizes for the
7776acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
7777these values do not include any ACPI driver or OSPM code.  The
7778debug version of the code includes the debug output trace
7779mechanism and has a much larger code and data size.  Note that
7780these values will vary depending on the efficiency of the compiler
7781and the compiler options used during generation.
7782
7783  Previous Release (20030509):
7784    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
7785    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
7786  Current Release:
7787    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
7788    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
7789
7790
77912) Linux:
7792
7793Fixed a bug in which we would reinitialize the ACPI interrupt
7794after it was already working, thus disabling all ACPI and the IRQs
7795for any other device sharing the interrupt. (Thanks to Stian
7796Jordet)
7797
7798Toshiba driver update (John Belmonte)
7799
7800Return only 0 or 1 for our interrupt handler status (Andrew
7801Morton)
7802
7803
78043) iASL Compiler:
7805
7806Fixed a reported problem where multiple (nested) ElseIf()
7807statements were not handled correctly by the compiler, resulting
7808in incorrect warnings and incorrect AML code.  This was a problem
7809in both the ASL parser and the code generator.
7810
7811
78124) Documentation:
7813
7814Added changes to existing interfaces, new exception codes, and new
7815text concerning reference count object management versus garbage
7816collection.
7817
7818----------------------------------------
781909 May 2003.  Summary of changes for version 20030509.
7820
7821
78221) ACPI CA Core Subsystem:
7823
7824Changed the subsystem initialization sequence to hold off
7825installation of address space handlers until the hardware has been
7826initialized and the system has entered ACPI mode.  This is because
7827the installation of space handlers can cause _REG methods to be
7828run.  Previously, the _REG methods could potentially be run before
7829ACPI mode was enabled.
7830
7831Fixed some memory leak issues related to address space handler and
7832notify handler installation.  There were some problems with the
7833reference count mechanism caused by the fact that the handler
7834objects are shared across several namespace objects.
7835
7836Fixed a reported problem where reference counts within the
7837namespace were not properly updated when named objects created by
7838method execution were deleted.
7839
7840Fixed a reported problem where multiple SSDTs caused a deletion
7841issue during subsystem termination.  Restructured the table data
7842structures to simplify the linked lists and the related code.
7843
7844Fixed a problem where the table ID associated with secondary
7845tables (SSDTs) was not being propagated into the namespace objects
7846created by those tables.  This would only present a problem for
7847tables that are unloaded at run-time, however.
7848
7849Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
7850type as the length parameter (instead of UINT32).
7851
7852Solved a long-standing problem where an ALREADY_EXISTS error
7853appears on various systems.  This problem could happen when there
7854are multiple PCI_Config operation regions under a single PCI root
7855bus.  This doesn't happen very frequently, but there are some
7856systems that do this in the ASL.
7857
7858Fixed a reported problem where the internal DeleteNode function
7859was incorrectly handling the case where a namespace node was the
7860first in the parent's child list, and had additional peers (not
7861the only child, but first in the list of children.)
7862
7863Code and Data Size: Current core subsystem library sizes are shown
7864below.  These are the code and data sizes for the acpica.lib
7865produced by the Microsoft Visual C++ 6.0 compiler, and these
7866values do not include any ACPI driver or OSPM code.  The debug
7867version of the code includes the debug output trace mechanism and
7868has a much larger code and data size.  Note that these values will
7869vary depending on the efficiency of the compiler and the compiler
7870options used during generation.
7871
7872  Previous Release
7873    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
7874    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
7875  Current Release:
7876    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
7877    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
7878
7879
78802) Linux:
7881
7882Allow ":" in OS override string (Ducrot Bruno)
7883
7884Kobject fix (Greg KH)
7885
7886
78873 iASL Compiler/Disassembler:
7888
7889Fixed a problem in the generation of the C source code files (AML
7890is emitted in C source statements for BIOS inclusion) where the
7891Ascii dump that appears within a C comment at the end of each line
7892could cause a compile time error if the AML sequence happens to
7893have an open comment or close comment sequence embedded.
7894
7895
7896----------------------------------------
789724 April 2003.  Summary of changes for version 20030424.
7898
7899
79001) ACPI CA Core Subsystem:
7901
7902Support for big-endian systems has been implemented.  Most of the
7903support has been invisibly added behind big-endian versions of the
7904ACPI_MOVE_* macros.
7905
7906Fixed a problem in AcpiHwDisableGpeBlock() and
7907AcpiHwClearGpeBlock() where an incorrect offset was passed to the
7908low level hardware write routine.  The offset parameter was
7909actually eliminated from the low level read/write routines because
7910they had become obsolete.
7911
7912Fixed a problem where a handler object was deleted twice during
7913the removal of a fixed event handler.
7914
7915
79162) Linux:
7917
7918A fix for SMP systems with link devices was contributed by
7919
7920Compaq's Dan Zink.
7921
7922(2.5) Return whether we handled the interrupt in our IRQ handler.
7923(Linux ISRs no longer return void, so we can propagate the handler
7924return value from the ACPI CA core back to the OS.)
7925
7926
7927
79283) Documentation:
7929
7930The ACPI CA Programmer Reference has been updated to reflect new
7931interfaces and changes to existing interfaces.
7932
7933----------------------------------------
793428 March 2003.  Summary of changes for version 20030328.
7935
79361) ACPI CA Core Subsystem:
7937
7938The GPE Block Device support has been completed.  New interfaces
7939are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
7940interfaces (enable, disable, clear, getstatus) have been split
7941into separate interfaces for Fixed Events and General Purpose
7942Events (GPEs) in order to support GPE Block Devices properly.
7943
7944Fixed a problem where the error message "Failed to acquire
7945semaphore" would appear during operations on the embedded
7946controller (EC).
7947
7948Code and Data Size: Current core subsystem library sizes are shown
7949below.  These are the code and data sizes for the acpica.lib
7950produced by the Microsoft Visual C++ 6.0 compiler, and these
7951values do not include any ACPI driver or OSPM code.  The debug
7952version of the code includes the debug output trace mechanism and
7953has a much larger code and data size.  Note that these values will
7954vary depending on the efficiency of the compiler and the compiler
7955options used during generation.
7956
7957  Previous Release
7958    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
7959    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
7960  Current Release:
7961    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
7962    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
7963
7964
7965----------------------------------------
796628 February 2003.  Summary of changes for version 20030228.
7967
7968
79691) ACPI CA Core Subsystem:
7970
7971The GPE handling and dispatch code has been completely overhauled
7972in preparation for support of GPE Block Devices (ID ACPI0006).
7973This affects internal data structures and code only; there should
7974be no differences visible externally.  One new file has been
7975added, evgpeblk.c
7976
7977The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
7978fields that are used to determine the GPE block lengths.  The
7979REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
7980structures are ignored.  This is per the ACPI specification but it
7981isn't very clear.  The full 256 Block 0/1 GPEs are now supported
7982(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
7983
7984In the SCI interrupt handler, removed the read of the PM1_CONTROL
7985register to look at the SCI_EN bit.  On some machines, this read
7986causes an SMI event and greatly slows down SCI events.  (This may
7987in fact be the cause of slow battery status response on some
7988systems.)
7989
7990Fixed a problem where a store of a NULL string to a package object
7991could cause the premature deletion of the object.  This was seen
7992during execution of the battery _BIF method on some systems,
7993resulting in no battery data being returned.
7994
7995Added AcpiWalkResources interface to simplify parsing of resource
7996lists.
7997
7998Code and Data Size: Current core subsystem library sizes are shown
7999below.  These are the code and data sizes for the acpica.lib
8000produced by the Microsoft Visual C++ 6.0 compiler, and these
8001values do not include any ACPI driver or OSPM code.  The debug
8002version of the code includes the debug output trace mechanism and
8003has a much larger code and data size.  Note that these values will
8004vary depending on the efficiency of the compiler and the compiler
8005options used during generation.
8006
8007  Previous Release
8008    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
8009    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
8010  Current Release:
8011    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
8012    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
8013
8014
80152) Linux
8016
8017S3 fixes (Ole Rohne)
8018
8019Update ACPI PHP driver with to use new acpi_walk_resource API
8020(Bjorn Helgaas)
8021
8022Add S4BIOS support (Pavel Machek)
8023
8024Map in entire table before performing checksum (John Stultz)
8025
8026Expand the mem= cmdline to allow the specification of reserved and
8027ACPI DATA blocks (Pavel Machek)
8028
8029Never use ACPI on VISWS
8030
8031Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
8032
8033Revert a change that allowed P_BLK lengths to be 4 or 5. This is
8034causing us to think that some systems support C2 when they really
8035don't.
8036
8037Do not count processor objects for non-present CPUs (Thanks to
8038Dominik Brodowski)
8039
8040
80413) iASL Compiler:
8042
8043Fixed a problem where ASL include files could not be found and
8044opened.
8045
8046Added support for the _PDC reserved name.
8047
8048
8049----------------------------------------
805022 January 2003.  Summary of changes for version 20030122.
8051
8052
80531) ACPI CA Core Subsystem:
8054
8055Added a check for constructs of the form:  Store (Local0, Local0)
8056where Local0 is not initialized.  Apparently, some BIOS
8057programmers believe that this is a NOOP.  Since this store doesn't
8058do anything anyway, the new prototype behavior will ignore this
8059error.  This is a case where we can relax the strict checking in
8060the interpreter in the name of compatibility.
8061
8062
80632) Linux
8064
8065The AcpiSrc Source Conversion Utility has been released with the
8066Linux package for the first time.  This is the utility that is
8067used to convert the ACPI CA base source code to the Linux version.
8068
8069(Both) Handle P_BLK lengths shorter than 6 more gracefully
8070
8071(Both) Move more headers to include/acpi, and delete an unused
8072header.
8073
8074(Both) Move drivers/acpi/include directory to include/acpi
8075
8076(Both) Boot functions don't use cmdline, so don't pass it around
8077
8078(Both) Remove include of unused header (Adrian Bunk)
8079
8080(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
8081the
8082former now also includes the latter, acpiphp.h only needs the one,
8083now.
8084
8085(2.5) Make it possible to select method of bios restoring after S3
8086resume. [=> no more ugly ifdefs] (Pavel Machek)
8087
8088(2.5) Make proc write interfaces work (Pavel Machek)
8089
8090(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
8091
8092(2.5) Break out ACPI Perf code into its own module, under cpufreq
8093(Dominik Brodowski)
8094
8095(2.4) S4BIOS support (Ducrot Bruno)
8096
8097(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
8098Visinoni)
8099
8100
81013) iASL Compiler:
8102
8103Added support to disassemble SSDT and PSDTs.
8104
8105Implemented support to obtain SSDTs from the Windows registry if
8106available.
8107
8108
8109----------------------------------------
811009 January 2003.  Summary of changes for version 20030109.
8111
81121) ACPI CA Core Subsystem:
8113
8114Changed the behavior of the internal Buffer-to-String conversion
8115function.  The current ACPI specification states that the contents
8116of the buffer are "converted to a string of two-character
8117hexadecimal numbers, each separated by a space".  Unfortunately,
8118this definition is not backwards compatible with existing ACPI 1.0
8119implementations (although the behavior was not defined in the ACPI
81201.0 specification).  The new behavior simply copies data from the
8121buffer to the string until a null character is found or the end of
8122the buffer is reached.  The new String object is always null
8123terminated.  This problem was seen during the generation of _BIF
8124battery data where incorrect strings were returned for battery
8125type, etc.  This will also require an errata to the ACPI
8126specification.
8127
8128Renamed all instances of NATIVE_UINT and NATIVE_INT to
8129ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
8130
8131Copyright in all module headers (both Linux and non-Linux) has be
8132updated to 2003.
8133
8134Code and Data Size: Current core subsystem library sizes are shown
8135below.  These are the code and data sizes for the acpica.lib
8136produced by the Microsoft Visual C++ 6.0 compiler, and these
8137values do not include any ACPI driver or OSPM code.  The debug
8138version of the code includes the debug output trace mechanism and
8139has a much larger code and data size.  Note that these values will
8140vary depending on the efficiency of the compiler and the compiler
8141options used during generation.
8142
8143  Previous Release
8144    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
8145    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
8146  Current Release:
8147    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
8148    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
8149
8150
81512) Linux
8152
8153Fixed an oops on module insertion/removal (Matthew Tippett)
8154
8155(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
8156
8157(2.5) Replace pr_debug (Randy Dunlap)
8158
8159(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
8160
8161(Both) Eliminate spawning of thread from timer callback, in favor
8162of schedule_work()
8163
8164(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
8165
8166(Both) Added define for Fixed Function HW region (Matthew Wilcox)
8167
8168(Both) Add missing statics to button.c (Pavel Machek)
8169
8170Several changes have been made to the source code translation
8171utility that generates the Linux Code in order to make the code
8172more "Linux-like":
8173
8174All typedefs on structs and unions have been removed in keeping
8175with the Linux coding style.
8176
8177Removed the non-Linux SourceSafe module revision number from each
8178module header.
8179
8180Completed major overhaul of symbols to be lowercased for linux.
8181Doubled the number of symbols that are lowercased.
8182
8183Fixed a problem where identifiers within procedure headers and
8184within quotes were not fully lower cased (they were left with a
8185starting capital.)
8186
8187Some C macros whose only purpose is to allow the generation of 16-
8188bit code are now completely removed in the Linux code, increasing
8189readability and maintainability.
8190
8191----------------------------------------
8192
819312 December 2002.  Summary of changes for version 20021212.
8194
8195
81961) ACPI CA Core Subsystem:
8197
8198Fixed a problem where the creation of a zero-length AML Buffer
8199would cause a fault.
8200
8201Fixed a problem where a Buffer object that pointed to a static AML
8202buffer (in an ACPI table) could inadvertently be deleted, causing
8203memory corruption.
8204
8205Fixed a problem where a user buffer (passed in to the external
8206ACPI CA interfaces) could be overwritten if the buffer was too
8207small to complete the operation, causing memory corruption.
8208
8209Fixed a problem in the Buffer-to-String conversion code where a
8210string of length one was always returned, regardless of the size
8211of the input Buffer object.
8212
8213Removed the NATIVE_CHAR data type across the entire source due to
8214lack of need and lack of consistent use.
8215
8216Code and Data Size: Current core subsystem library sizes are shown
8217below.  These are the code and data sizes for the acpica.lib
8218produced by the Microsoft Visual C++ 6.0 compiler, and these
8219values do not include any ACPI driver or OSPM code.  The debug
8220version of the code includes the debug output trace mechanism and
8221has a much larger code and data size.  Note that these values will
8222vary depending on the efficiency of the compiler and the compiler
8223options used during generation.
8224
8225  Previous Release
8226    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
8227    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
8228  Current Release:
8229    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
8230    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
8231
8232
8233----------------------------------------
823405 December 2002.  Summary of changes for version 20021205.
8235
82361) ACPI CA Core Subsystem:
8237
8238Fixed a problem where a store to a String or Buffer object could
8239cause corruption of the DSDT if the object type being stored was
8240the same as the target object type and the length of the object
8241being stored was equal to or smaller than the original (existing)
8242target object.  This was seen to cause corruption of battery _BIF
8243buffers if the _BIF method modified the buffer on the fly.
8244
8245Fixed a problem where an internal error was generated if a control
8246method invocation was used in an OperationRegion, Buffer, or
8247Package declaration.  This was caused by the deferred parsing of
8248the control method and thus the deferred creation of the internal
8249method object.  The solution to this problem was to create the
8250internal method object at the moment the method is encountered in
8251the first pass - so that subsequent references to the method will
8252able to obtain the required parameter count and thus properly
8253parse the method invocation.  This problem presented itself as an
8254AE_AML_INTERNAL during the pass 1 parse phase during table load.
8255
8256Fixed a problem where the internal String object copy routine did
8257not always allocate sufficient memory for the target String object
8258and caused memory corruption.  This problem was seen to cause
8259"Allocation already present in list!" errors as memory allocation
8260became corrupted.
8261
8262Implemented a new function for the evaluation of namespace objects
8263that allows the specification of the allowable return object
8264types.  This simplifies a lot of code that checks for a return
8265object of one or more specific objects returned from the
8266evaluation (such as _STA, etc.)  This may become and external
8267function if it would be useful to ACPI-related drivers.
8268
8269Completed another round of prefixing #defines with "ACPI_" for
8270clarity.
8271
8272Completed additional code restructuring to allow more modular
8273linking for iASL compiler and AcpiExec.  Several files were split
8274creating new files.  New files:  nsparse.c dsinit.c evgpe.c
8275
8276Implemented an abort mechanism to terminate an executing control
8277method via the AML debugger.  This feature is useful for debugging
8278control methods that depend (wait) for specific hardware
8279responses.
8280
8281Code and Data Size: Current core subsystem library sizes are shown
8282below.  These are the code and data sizes for the acpica.lib
8283produced by the Microsoft Visual C++ 6.0 compiler, and these
8284values do not include any ACPI driver or OSPM code.  The debug
8285version of the code includes the debug output trace mechanism and
8286has a much larger code and data size.  Note that these values will
8287vary depending on the efficiency of the compiler and the compiler
8288options used during generation.
8289
8290  Previous Release
8291    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
8292    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
8293  Current Release:
8294    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
8295    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
8296
8297
82982) iASL Compiler/Disassembler
8299
8300Fixed a compiler code generation problem for "Interrupt" Resource
8301Descriptors.  If specified in the ASL, the optional "Resource
8302Source Index" and "Resource Source" fields were not inserted into
8303the correct location within the AML resource descriptor, creating
8304an invalid descriptor.
8305
8306Fixed a disassembler problem for "Interrupt" resource descriptors.
8307The optional "Resource Source Index" and "Resource Source" fields
8308were ignored.
8309
8310
8311----------------------------------------
831222 November 2002.  Summary of changes for version 20021122.
8313
8314
83151) ACPI CA Core Subsystem:
8316
8317Fixed a reported problem where an object stored to a Method Local
8318or Arg was not copied to a new object during the store - the
8319object pointer was simply copied to the Local/Arg.  This caused
8320all subsequent operations on the Local/Arg to also affect the
8321original source of the store operation.
8322
8323Fixed a problem where a store operation to a Method Local or Arg
8324was not completed properly if the Local/Arg contained a reference
8325(from RefOf) to a named field.  The general-purpose store-to-
8326namespace-node code is now used so that this case is handled
8327automatically.
8328
8329Fixed a problem where the internal object copy routine would cause
8330a protection fault if the object being copied was a Package and
8331contained either 1) a NULL package element or 2) a nested sub-
8332package.
8333
8334Fixed a problem with the GPE initialization that resulted from an
8335ambiguity in the ACPI specification.  One section of the
8336specification states that both the address and length of the GPE
8337block must be zero if the block is not supported.  Another section
8338implies that only the address need be zero if the block is not
8339supported.  The code has been changed so that both the address and
8340the length must be non-zero to indicate a valid GPE block (i.e.,
8341if either the address or the length is zero, the GPE block is
8342invalid.)
8343
8344Code and Data Size: Current core subsystem library sizes are shown
8345below.  These are the code and data sizes for the acpica.lib
8346produced by the Microsoft Visual C++ 6.0 compiler, and these
8347values do not include any ACPI driver or OSPM code.  The debug
8348version of the code includes the debug output trace mechanism and
8349has a much larger code and data size.  Note that these values will
8350vary depending on the efficiency of the compiler and the compiler
8351options used during generation.
8352
8353  Previous Release
8354    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
8355    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
8356  Current Release:
8357    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
8358    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
8359
8360
83612) Linux
8362
8363Cleaned up EC driver. Exported an external EC read/write
8364interface. By going through this, other drivers (most notably
8365sonypi) will be able to serialize access to the EC.
8366
8367
83683) iASL Compiler/Disassembler
8369
8370Implemented support to optionally generate include files for both
8371ASM and C (the -i switch).  This simplifies BIOS development by
8372automatically creating include files that contain external
8373declarations for the symbols that are created within the
8374
8375(optionally generated) ASM and C AML source files.
8376
8377
8378----------------------------------------
837915 November 2002.  Summary of changes for version 20021115.
8380
83811) ACPI CA Core Subsystem:
8382
8383Fixed a memory leak problem where an error during resolution of
8384
8385method arguments during a method invocation from another method
8386failed to cleanup properly by deleting all successfully resolved
8387argument objects.
8388
8389Fixed a problem where the target of the Index() operator was not
8390correctly constructed if the source object was a package.  This
8391problem has not been detected because the use of a target operand
8392with Index() is very rare.
8393
8394Fixed a problem with the Index() operator where an attempt was
8395made to delete the operand objects twice.
8396
8397Fixed a problem where an attempt was made to delete an operand
8398twice during execution of the CondRefOf() operator if the target
8399did not exist.
8400
8401Implemented the first of perhaps several internal create object
8402functions that create and initialize a specific object type.  This
8403consolidates duplicated code wherever the object is created, thus
8404shrinking the size of the subsystem.
8405
8406Implemented improved debug/error messages for errors that occur
8407during nested method invocations.  All executing method pathnames
8408are displayed (with the error) as the call stack is unwound - thus
8409simplifying debug.
8410
8411Fixed a problem introduced in the 10/02 release that caused
8412premature deletion of a buffer object if a buffer was used as an
8413ASL operand where an integer operand is required (Thus causing an
8414implicit object conversion from Buffer to Integer.)  The change in
8415the 10/02 release was attempting to fix a memory leak (albeit
8416incorrectly.)
8417
8418Code and Data Size: Current core subsystem library sizes are shown
8419below.  These are the code and data sizes for the acpica.lib
8420produced by the Microsoft Visual C++ 6.0 compiler, and these
8421values do not include any ACPI driver or OSPM code.  The debug
8422version of the code includes the debug output trace mechanism and
8423has a much larger code and data size.  Note that these values will
8424vary depending on the efficiency of the compiler and the compiler
8425options used during generation.
8426
8427  Previous Release
8428    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
8429    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
8430  Current Release:
8431    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
8432    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
8433
8434
84352) Linux
8436
8437Changed the implementation of the ACPI semaphores to use down()
8438instead of down_interruptable().  It is important that the
8439execution of ACPI control methods not be interrupted by signals.
8440Methods must run to completion, or the system may be left in an
8441unknown/unstable state.
8442
8443Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
8444(Shawn Starr)
8445
8446
84473) iASL Compiler/Disassembler
8448
8449
8450Changed the default location of output files.  All output files
8451are now placed in the current directory by default instead of in
8452the directory of the source file.  This change may affect some
8453existing makefiles, but it brings the behavior of the compiler in
8454line with other similar tools.  The location of the output files
8455can be overridden with the -p command line switch.
8456
8457
8458----------------------------------------
845911 November 2002.  Summary of changes for version 20021111.
8460
8461
84620) ACPI Specification 2.0B is released and is now available at:
8463http://www.acpi.info/index.html
8464
8465
84661) ACPI CA Core Subsystem:
8467
8468Implemented support for the ACPI 2.0 SMBus Operation Regions.
8469This includes the early detection and handoff of the request to
8470the SMBus region handler (avoiding all of the complex field
8471support code), and support for the bidirectional return packet
8472from an SMBus write operation.  This paves the way for the
8473development of SMBus drivers in each host operating system.
8474
8475Fixed a problem where the semaphore WAIT_FOREVER constant was
8476defined as 32 bits, but must be 16 bits according to the ACPI
8477specification.  This had the side effect of causing ASL
8478Mutex/Event timeouts even though the ASL code requested a wait
8479forever.  Changed all internal references to the ACPI timeout
8480parameter to 16 bits to prevent future problems.  Changed the name
8481of WAIT_FOREVER to ACPI_WAIT_FOREVER.
8482
8483Code and Data Size: Current core subsystem library sizes are shown
8484below.  These are the code and data sizes for the acpica.lib
8485produced by the Microsoft Visual C++ 6.0 compiler, and these
8486values do not include any ACPI driver or OSPM code.  The debug
8487version of the code includes the debug output trace mechanism and
8488has a much larger code and data size.  Note that these values will
8489vary depending on the efficiency of the compiler and the compiler
8490options used during generation.
8491
8492  Previous Release
8493    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
8494    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
8495  Current Release:
8496    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
8497    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
8498
8499
85002) Linux
8501
8502Module loading/unloading fixes (John Cagle)
8503
8504
85053) iASL Compiler/Disassembler
8506
8507Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
8508
8509Implemented support for the disassembly of all SMBus protocol
8510keywords (SMBQuick, SMBWord, etc.)
8511
8512----------------------------------------
851301 November 2002.  Summary of changes for version 20021101.
8514
8515
85161) ACPI CA Core Subsystem:
8517
8518Fixed a problem where platforms that have a GPE1 block but no GPE0
8519block were not handled correctly.  This resulted in a "GPE
8520overlap" error message.  GPE0 is no longer required.
8521
8522Removed code added in the previous release that inserted nodes
8523into the namespace in alphabetical order.  This caused some side-
8524effects on various machines.  The root cause of the problem is
8525still under investigation since in theory, the internal ordering
8526of the namespace nodes should not matter.
8527
8528
8529Enhanced error reporting for the case where a named object is not
8530found during control method execution.  The full ACPI namepath
8531(name reference) of the object that was not found is displayed in
8532this case.
8533
8534Note: as a result of the overhaul of the namespace object types in
8535the previous release, the namespace nodes for the predefined
8536scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
8537instead of ACPI_TYPE_ANY.  This simplifies the namespace
8538management code but may affect code that walks the namespace tree
8539looking for specific object types.
8540
8541Code and Data Size: Current core subsystem library sizes are shown
8542below.  These are the code and data sizes for the acpica.lib
8543produced by the Microsoft Visual C++ 6.0 compiler, and these
8544values do not include any ACPI driver or OSPM code.  The debug
8545version of the code includes the debug output trace mechanism and
8546has a much larger code and data size.  Note that these values will
8547vary depending on the efficiency of the compiler and the compiler
8548options used during generation.
8549
8550  Previous Release
8551    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
8552    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
8553  Current Release:
8554    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
8555    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
8556
8557
85582) Linux
8559
8560Fixed a problem introduced in the previous release where the
8561Processor and Thermal objects were not recognized and installed in
8562/proc.  This was related to the scope type change described above.
8563
8564
85653) iASL Compiler/Disassembler
8566
8567Implemented the -g option to get all of the required ACPI tables
8568from the registry and save them to files (Windows version of the
8569compiler only.)  The required tables are the FADT, FACS, and DSDT.
8570
8571Added ACPI table checksum validation during table disassembly in
8572order to catch corrupted tables.
8573
8574
8575----------------------------------------
857622 October 2002.  Summary of changes for version 20021022.
8577
85781) ACPI CA Core Subsystem:
8579
8580Implemented a restriction on the Scope operator that the target
8581must already exist in the namespace at the time the operator is
8582encountered (during table load or method execution).  In other
8583words, forward references are not allowed and Scope() cannot
8584create a new object. This changes the previous behavior where the
8585interpreter would create the name if not found.  This new behavior
8586correctly enables the search-to-root algorithm during namespace
8587lookup of the target name.  Because of this upsearch, this fixes
8588the known Compaq _SB_.OKEC problem and makes both the AML
8589interpreter and iASL compiler compatible with other ACPI
8590implementations.
8591
8592Completed a major overhaul of the internal ACPI object types for
8593the ACPI Namespace and the associated operand objects.  Many of
8594these types had become obsolete with the introduction of the two-
8595pass namespace load.  This cleanup simplifies the code and makes
8596the entire namespace load mechanism much clearer and easier to
8597understand.
8598
8599Improved debug output for tracking scope opening/closing to help
8600diagnose scoping issues.  The old scope name as well as the new
8601scope name are displayed.  Also improved error messages for
8602problems with ASL Mutex objects and error messages for GPE
8603problems.
8604
8605Cleaned up the namespace dump code, removed obsolete code.
8606
8607All string output (for all namespace/object dumps) now uses the
8608common ACPI string output procedure which handles escapes properly
8609and does not emit non-printable characters.
8610
8611Fixed some issues with constants in the 64-bit version of the
8612local C library (utclib.c)
8613
8614
86152) Linux
8616
8617EC Driver:  No longer attempts to acquire the Global Lock at
8618interrupt level.
8619
8620
86213) iASL Compiler/Disassembler
8622
8623Implemented ACPI 2.0B grammar change that disallows all Type 1 and
86242 opcodes outside of a control method.  This means that the
8625"executable" operators (versus the "namespace" operators) cannot
8626be used at the table level; they can only be used within a control
8627method.
8628
8629Implemented the restriction on the Scope() operator where the
8630target must already exist in the namespace at the time the
8631operator is encountered (during ASL compilation). In other words,
8632forward references are not allowed and Scope() cannot create a new
8633object.  This makes the iASL compiler compatible with other ACPI
8634implementations and makes the Scope() implementation adhere to the
8635ACPI specification.
8636
8637Fixed a problem where namepath optimization for the Alias operator
8638was optimizing the wrong path (of the two namepaths.)  This caused
8639a "Missing alias link" error message.
8640
8641Fixed a problem where an "unknown reserved name" warning could be
8642incorrectly generated for names like "_SB" when the trailing
8643underscore is not used in the original ASL.
8644
8645Fixed a problem where the reserved name check did not handle
8646NamePaths with multiple NameSegs correctly.  The first nameseg of
8647the NamePath was examined instead of the last NameSeg.
8648
8649
8650----------------------------------------
8651
865202 October 2002.  Summary of changes for this release.
8653
8654
86551) ACPI CA Core Subsystem version 20021002:
8656
8657Fixed a problem where a store/copy of a string to an existing
8658string did not always set the string length properly in the String
8659object.
8660
8661Fixed a reported problem with the ToString operator where the
8662behavior was identical to the ToHexString operator instead of just
8663simply converting a raw buffer to a string data type.
8664
8665Fixed a problem where CopyObject and the other "explicit"
8666conversion operators were not updating the internal namespace node
8667type as part of the store operation.
8668
8669Fixed a memory leak during implicit source operand conversion
8670where the original object was not deleted if it was converted to a
8671new object of a different type.
8672
8673Enhanced error messages for all problems associated with namespace
8674lookups.  Common procedure generates and prints the lookup name as
8675well as the formatted status.
8676
8677Completed implementation of a new design for the Alias support
8678within the namespace.  The existing design did not handle the case
8679where a new object was assigned to one of the two names due to the
8680use of an explicit conversion operator, resulting in the two names
8681pointing to two different objects.  The new design simply points
8682the Alias name to the original name node - not to the object.
8683This results in a level of indirection that must be handled in the
8684name resolution mechanism.
8685
8686Code and Data Size: Current core subsystem library sizes are shown
8687below.  These are the code and data sizes for the acpica.lib
8688produced by the Microsoft Visual C++ 6.0 compiler, and these
8689values do not include any ACPI driver or OSPM code.  The debug
8690version of the code includes the debug output trace mechanism and
8691has a larger code and data size.  Note that these values will vary
8692depending on the efficiency of the compiler and the compiler
8693options used during generation.
8694
8695  Previous Release
8696    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
8697    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
8698  Current Release:
8699    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
8700    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
8701
8702
87032) Linux
8704
8705Initialize thermal driver's timer before it is used. (Knut
8706Neumann)
8707
8708Allow handling negative celsius values. (Kochi Takayoshi)
8709
8710Fix thermal management and make trip points. R/W (Pavel Machek)
8711
8712Fix /proc/acpi/sleep. (P. Christeas)
8713
8714IA64 fixes. (David Mosberger)
8715
8716Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
8717
8718Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
8719Brodowski)
8720
8721
87223) iASL Compiler/Disassembler
8723
8724Clarified some warning/error messages.
8725
8726
8727----------------------------------------
872818 September 2002.  Summary of changes for this release.
8729
8730
87311) ACPI CA Core Subsystem version 20020918:
8732
8733Fixed a reported problem with reference chaining (via the Index()
8734and RefOf() operators) in the ObjectType() and SizeOf() operators.
8735The definition of these operators includes the dereferencing of
8736all chained references to return information on the base object.
8737
8738Fixed a problem with stores to indexed package elements - the
8739existing code would not complete the store if an "implicit
8740conversion" was not performed.  In other words, if the existing
8741object (package element) was to be replaced completely, the code
8742didn't handle this case.
8743
8744Relaxed typechecking on the ASL "Scope" operator to allow the
8745target name to refer to an object of type Integer, String, or
8746Buffer, in addition to the scoping object types (Device,
8747predefined Scopes, Processor, PowerResource, and ThermalZone.)
8748This allows existing AML code that has workarounds for a bug in
8749Windows to function properly.  A warning is issued, however.  This
8750affects both the AML interpreter and the iASL compiler. Below is
8751an example of this type of ASL code:
8752
8753      Name(DEB,0x00)
8754      Scope(DEB)
8755      {
8756
8757Fixed some reported problems with 64-bit integer support in the
8758local implementation of C library functions (clib.c)
8759
8760
87612) Linux
8762
8763Use ACPI fix map region instead of IOAPIC region, since it is
8764undefined in non-SMP.
8765
8766Ensure that the SCI has the proper polarity and trigger, even on
8767systems that do not have an interrupt override entry in the MADT.
8768
87692.5 big driver reorganization (Pat Mochel)
8770
8771Use early table mapping code from acpitable.c (Andi Kleen)
8772
8773New blacklist entries (Andi Kleen)
8774
8775Blacklist improvements. Split blacklist code out into a separate
8776file. Move checking the blacklist to very early. Previously, we
8777would use ACPI tables, and then halfway through init, check the
8778blacklist -- too late. Now, it's early enough to completely fall-
8779back to non-ACPI.
8780
8781
87823) iASL Compiler/Disassembler version 20020918:
8783
8784Fixed a problem where the typechecking code didn't know that an
8785alias could point to a method.  In other words, aliases were not
8786being dereferenced during typechecking.
8787
8788
8789----------------------------------------
879029 August 2002.  Summary of changes for this release.
8791
87921) ACPI CA Core Subsystem Version 20020829:
8793
8794If the target of a Scope() operator already exists, it must be an
8795object type that actually opens a scope -- such as a Device,
8796Method, Scope, etc.  This is a fatal runtime error.  Similar error
8797check has been added to the iASL compiler also.
8798
8799Tightened up the namespace load to disallow multiple names in the
8800same scope.  This previously was allowed if both objects were of
8801the same type.  (i.e., a lookup was the same as entering a new
8802name).
8803
8804
88052) Linux
8806
8807Ensure that the ACPI interrupt has the proper trigger and
8808polarity.
8809
8810local_irq_disable is extraneous. (Matthew Wilcox)
8811
8812Make "acpi=off" actually do what it says, and not use the ACPI
8813interpreter *or* the tables.
8814
8815Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
8816Takayoshi)
8817
8818
88193) iASL Compiler/Disassembler  Version 20020829:
8820
8821Implemented namepath optimization for name declarations.  For
8822example, a declaration like "Method (\_SB_.ABCD)" would get
8823optimized to "Method (ABCD)" if the declaration is within the
8824\_SB_ scope.  This optimization is in addition to the named
8825reference path optimization first released in the previous
8826version. This would seem to complete all possible optimizations
8827for namepaths within the ASL/AML.
8828
8829If the target of a Scope() operator already exists, it must be an
8830object type that actually opens a scope -- such as a Device,
8831Method, Scope, etc.
8832
8833Implemented a check and warning for unreachable code in the same
8834block below a Return() statement.
8835
8836Fixed a problem where the listing file was not generated if the
8837compiler aborted if the maximum error count was exceeded (200).
8838
8839Fixed a problem where the typechecking of method return values was
8840broken.  This includes the check for a return value when the
8841method is invoked as a TermArg (a return value is expected.)
8842
8843Fixed a reported problem where EOF conditions during a quoted
8844string or comment caused a fault.
8845
8846
8847----------------------------------------
884815 August 2002.  Summary of changes for this release.
8849
88501) ACPI CA Core Subsystem Version 20020815:
8851
8852Fixed a reported problem where a Store to a method argument that
8853contains a reference did not perform the indirect store correctly.
8854This problem was created during the conversion to the new
8855reference object model - the indirect store to a method argument
8856code was not updated to reflect the new model.
8857
8858Reworked the ACPI mode change code to better conform to ACPI 2.0,
8859handle corner cases, and improve code legibility (Kochi Takayoshi)
8860
8861Fixed a problem with the pathname parsing for the carat (^)
8862prefix.  The heavy use of the carat operator by the new namepath
8863optimization in the iASL compiler uncovered a problem with the AML
8864interpreter handling of this prefix.  In the case where one or
8865more carats precede a single nameseg, the nameseg was treated as
8866standalone and the search rule (to root) was inadvertently
8867applied.  This could cause both the iASL compiler and the
8868interpreter to find the wrong object or to miss the error that
8869should occur if the object does not exist at that exact pathname.
8870
8871Found and fixed the problem where the HP Pavilion DSDT would not
8872load.  This was a relatively minor tweak to the table loading code
8873(a problem caused by the unexpected encounter with a method
8874invocation not within a control method), but it does not solve the
8875overall issue of the execution of AML code at the table level.
8876This investigation is still ongoing.
8877
8878Code and Data Size: Current core subsystem library sizes are shown
8879below.  These are the code and data sizes for the acpica.lib
8880produced by the Microsoft Visual C++ 6.0 compiler, and these
8881values do not include any ACPI driver or OSPM code.  The debug
8882version of the code includes the debug output trace mechanism and
8883has a larger code and data size.  Note that these values will vary
8884depending on the efficiency of the compiler and the compiler
8885options used during generation.
8886
8887  Previous Release
8888    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
8889    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
8890  Current Release:
8891    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
8892    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
8893
8894
88952) Linux
8896
8897Remove redundant slab.h include (Brad Hards)
8898
8899Fix several bugs in thermal.c (Herbert Nachtnebel)
8900
8901Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
8902
8903Change acpi_system_suspend to use updated irq functions (Pavel
8904Machek)
8905
8906Export acpi_get_firmware_table (Matthew Wilcox)
8907
8908Use proper root proc entry for ACPI (Kochi Takayoshi)
8909
8910Fix early-boot table parsing (Bjorn Helgaas)
8911
8912
89133) iASL Compiler/Disassembler
8914
8915Reworked the compiler options to make them more consistent and to
8916use two-letter options where appropriate.  We were running out of
8917sensible letters.   This may break some makefiles, so check the
8918current options list by invoking the compiler with no parameters.
8919
8920Completed the design and implementation of the ASL namepath
8921optimization option for the compiler.  This option optimizes all
8922references to named objects to the shortest possible path.  The
8923first attempt tries to utilize a single nameseg (4 characters) and
8924the "search-to-root" algorithm used by the interpreter.  If that
8925cannot be used (because either the name is not in the search path
8926or there is a conflict with another object with the same name),
8927the pathname is optimized using the carat prefix (usually a
8928shorter string than specifying the entire path from the root.)
8929
8930Implemented support to obtain the DSDT from the Windows registry
8931(when the disassembly option is specified with no input file).
8932Added this code as the implementation for AcpiOsTableOverride in
8933the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
8934utility) to scan memory for the DSDT to the AcpiOsTableOverride
8935function in the DOS OSL to make the disassembler truly OS
8936independent.
8937
8938Implemented a new option to disassemble and compile in one step.
8939When used without an input filename, this option will grab the
8940DSDT from the local machine, disassemble it, and compile it in one
8941step.
8942
8943Added a warning message for invalid escapes (a backslash followed
8944by any character other than the allowable escapes).  This catches
8945the quoted string error "\_SB_" (which should be "\\_SB_" ).
8946
8947Also, there are numerous instances in the ACPI specification where
8948this error occurs.
8949
8950Added a compiler option to disable all optimizations.  This is
8951basically the "compatibility mode" because by using this option,
8952the AML code will come out exactly the same as other ASL
8953compilers.
8954
8955Added error messages for incorrectly ordered dependent resource
8956functions.  This includes: missing EndDependentFn macro at end of
8957dependent resource list, nested dependent function macros (both
8958start and end), and missing StartDependentFn macro.  These are
8959common errors that should be caught at compile time.
8960
8961Implemented _OSI support for the disassembler and compiler.  _OSI
8962must be included in the namespace for proper disassembly (because
8963the disassembler must know the number of arguments.)
8964
8965Added an "optimization" message type that is optional (off by
8966default).  This message is used for all optimizations - including
8967constant folding, integer optimization, and namepath optimization.
8968
8969----------------------------------------
897025 July 2002.  Summary of changes for this release.
8971
8972
89731) ACPI CA Core Subsystem Version 20020725:
8974
8975The AML Disassembler has been enhanced to produce compilable ASL
8976code and has been integrated into the iASL compiler (see below) as
8977well as the single-step disassembly for the AML debugger and the
8978disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
8979resource templates and macros are fully supported.  The
8980disassembler has been tested on over 30 different AML files,
8981producing identical AML when the resulting disassembled ASL file
8982is recompiled with the same ASL compiler.
8983
8984Modified the Resource Manager to allow zero interrupts and zero
8985dma channels during the GetCurrentResources call.  This was
8986causing problems on some platforms.
8987
8988Added the AcpiOsRedirectOutput interface to the OSL to simplify
8989output redirection for the AcpiOsPrintf and AcpiOsVprintf
8990interfaces.
8991
8992Code and Data Size: Current core subsystem library sizes are shown
8993below.  These are the code and data sizes for the acpica.lib
8994produced by the Microsoft Visual C++ 6.0 compiler, and these
8995values do not include any ACPI driver or OSPM code.  The debug
8996version of the code includes the debug output trace mechanism and
8997has a larger code and data size.  Note that these values will vary
8998depending on the efficiency of the compiler and the compiler
8999options used during generation.
9000
9001  Previous Release
9002    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
9003    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
9004  Current Release:
9005    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
9006    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
9007
9008
90092) Linux
9010
9011Fixed a panic in the EC driver (Dominik Brodowski)
9012
9013Implemented checksum of the R/XSDT itself during Linux table scan
9014(Richard Schaal)
9015
9016
90173) iASL compiler
9018
9019The AML disassembler is integrated into the compiler.  The "-d"
9020option invokes the disassembler  to completely disassemble an
9021input AML file, producing as output a text ASL file with the
9022extension ".dsl" (to avoid name collisions with existing .asl
9023source files.)  A future enhancement will allow the disassembler
9024to obtain the BIOS DSDT from the registry under Windows.
9025
9026Fixed a problem with the VendorShort and VendorLong resource
9027descriptors where an invalid AML sequence was created.
9028
9029Implemented a fix for BufferData term in the ASL parser.  It was
9030inadvertently defined twice, allowing invalid syntax to pass and
9031causing reduction conflicts.
9032
9033Fixed a problem where the Ones opcode could get converted to a
9034value of zero if "Ones" was used where a byte, word or dword value
9035was expected.  The 64-bit value is now truncated to the correct
9036size with the correct value.
9037
9038
9039
9040----------------------------------------
904102 July 2002.  Summary of changes for this release.
9042
9043
90441) ACPI CA Core Subsystem Version 20020702:
9045
9046The Table Manager code has been restructured to add several new
9047features.  Tables that are not required by the core subsystem
9048(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
9049validated in any way and are returned from AcpiGetFirmwareTable if
9050requested.  The AcpiOsTableOverride interface is now called for
9051each table that is loaded by the subsystem in order to allow the
9052host to override any table it chooses.  Previously, only the DSDT
9053could be overridden.  Added one new files, tbrsdt.c and
9054tbgetall.c.
9055
9056Fixed a problem with the conversion of internal package objects to
9057external objects (when a package is returned from a control
9058method.)  The return buffer length was set to zero instead of the
9059proper length of the package object.
9060
9061Fixed a reported problem with the use of the RefOf and DeRefOf
9062operators when passing reference arguments to control methods.  A
9063new type of Reference object is used internally for references
9064produced by the RefOf operator.
9065
9066Added additional error messages in the Resource Manager to explain
9067AE_BAD_DATA errors when they occur during resource parsing.
9068
9069Split the AcpiEnableSubsystem into two primitives to enable a
9070finer granularity initialization sequence.  These two calls should
9071be called in this order: AcpiEnableSubsystem (flags),
9072AcpiInitializeObjects (flags).  The flags parameter remains the
9073same.
9074
9075
90762) Linux
9077
9078Updated the ACPI utilities module to understand the new style of
9079fully resolved package objects that are now returned from the core
9080subsystem.  This eliminates errors of the form:
9081
9082    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
9083    acpi_utils-0430 [145] acpi_evaluate_reference:
9084        Invalid element in package (not a device reference)
9085
9086The method evaluation utility uses the new buffer allocation
9087scheme instead of calling AcpiEvaluate Object twice.
9088
9089Added support for ECDT. This allows the use of the Embedded
9090
9091Controller before the namespace has been fully initialized, which
9092is necessary for ACPI 2.0 support, and for some laptops to
9093initialize properly. (Laptops using ECDT are still rare, so only
9094limited testing was performed of the added functionality.)
9095
9096Fixed memory leaks in the EC driver.
9097
9098Eliminated a brittle code structure in acpi_bus_init().
9099
9100Eliminated the acpi_evaluate() helper function in utils.c. It is
9101no longer needed since acpi_evaluate_object can optionally
9102allocate memory for the return object.
9103
9104Implemented fix for keyboard hang when getting battery readings on
9105some systems (Stephen White)
9106
9107PCI IRQ routing update (Dominik Brodowski)
9108
9109Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
9110support
9111
9112----------------------------------------
911311 June 2002.  Summary of changes for this release.
9114
9115
91161) ACPI CA Core Subsystem Version 20020611:
9117
9118Fixed a reported problem where constants such as Zero and One
9119appearing within _PRT packages were not handled correctly within
9120the resource manager code.  Originally reported against the ASL
9121compiler because the code generator now optimizes integers to
9122their minimal AML representation (i.e. AML constants if possible.)
9123The _PRT code now handles all AML constant opcodes correctly
9124(Zero, One, Ones, Revision).
9125
9126Fixed a problem with the Concatenate operator in the AML
9127interpreter where a buffer result object was incorrectly marked as
9128not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
9129
9130All package sub-objects are now fully resolved before they are
9131returned from the external ACPI interfaces.  This means that name
9132strings are resolved to object handles, and constant operators
9133(Zero, One, Ones, Revision) are resolved to Integers.
9134
9135Implemented immediate resolution of the AML Constant opcodes
9136(Zero, One, Ones, Revision) to Integer objects upon detection
9137within the AML stream. This has simplified and reduced the
9138generated code size of the subsystem by eliminating about 10
9139switch statements for these constants (which previously were
9140contained in Reference objects.)  The complicating issues are that
9141the Zero opcode is used as a "placeholder" for unspecified
9142optional target operands and stores to constants are defined to be
9143no-ops.
9144
9145Code and Data Size: Current core subsystem library sizes are shown
9146below. These are the code and data sizes for the acpica.lib
9147produced by the Microsoft Visual C++ 6.0 compiler, and these
9148values do not include any ACPI driver or OSPM code.  The debug
9149version of the code includes the debug output trace mechanism and
9150has a larger code and data size.  Note that these values will vary
9151depending on the efficiency of the compiler and the compiler
9152options used during generation.
9153
9154  Previous Release
9155    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
9156    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
9157  Current Release:
9158    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
9159    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
9160
9161
91622) Linux
9163
9164
9165Added preliminary support for obtaining _TRA data for PCI root
9166bridges (Bjorn Helgaas).
9167
9168
91693) iASL Compiler Version X2046:
9170
9171Fixed a problem where the "_DDN" reserved name was defined to be a
9172control method with one argument.  There are no arguments, and
9173_DDN does not have to be a control method.
9174
9175Fixed a problem with the Linux version of the compiler where the
9176source lines printed with error messages were the wrong lines.
9177This turned out to be the "LF versus CR/LF" difference between
9178Windows and Unix.  This appears to be the longstanding issue
9179concerning listing output and error messages.
9180
9181Fixed a problem with the Linux version of compiler where opcode
9182names within error messages were wrong.  This was caused by a
9183slight difference in the output of the Flex tool on Linux versus
9184Windows.
9185
9186Fixed a problem with the Linux compiler where the hex output files
9187contained some garbage data caused by an internal buffer overrun.
9188
9189
9190----------------------------------------
919117 May 2002.  Summary of changes for this release.
9192
9193
91941) ACPI CA Core Subsystem Version 20020517:
9195
9196Implemented a workaround to an BIOS bug discovered on the HP
9197OmniBook where the FADT revision number and the table size are
9198inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
9199behavior is to fallback to using only the ACPI 1.0 fields of the
9200FADT if the table is too small to be a ACPI 2.0 table as claimed
9201by the revision number.  Although this is a BIOS bug, this is a
9202case where the workaround is simple enough and with no side
9203effects, so it seemed prudent to add it.  A warning message is
9204issued, however.
9205
9206Implemented minimum size checks for the fixed-length ACPI tables -
9207- the FADT and FACS, as well as consistency checks between the
9208revision number and the table size.
9209
9210Fixed a reported problem in the table override support where the
9211new table pointer was incorrectly treated as a physical address
9212instead of a logical address.
9213
9214Eliminated the use of the AE_AML_ERROR exception and replaced it
9215with more descriptive codes.
9216
9217Fixed a problem where an exception would occur if an ASL Field was
9218defined with no named Field Units underneath it (used by some
9219index fields).
9220
9221Code and Data Size: Current core subsystem library sizes are shown
9222below.  These are the code and data sizes for the acpica.lib
9223produced by the Microsoft Visual C++ 6.0 compiler, and these
9224values do not include any ACPI driver or OSPM code.  The debug
9225version of the code includes the debug output trace mechanism and
9226has a larger code and data size.  Note that these values will vary
9227depending on the efficiency of the compiler and the compiler
9228options used during generation.
9229
9230  Previous Release
9231    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
9232    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
9233  Current Release:
9234    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
9235    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
9236
9237
9238
92392) Linux
9240
9241Much work done on ACPI init (MADT and PCI IRQ routing support).
9242(Paul D. and Dominik Brodowski)
9243
9244Fix PCI IRQ-related panic on boot (Sam Revitch)
9245
9246Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
9247
9248Fix "MHz" typo (Dominik Brodowski)
9249
9250Fix RTC year 2000 issue (Dominik Brodowski)
9251
9252Preclude multiple button proc entries (Eric Brunet)
9253
9254Moved arch-specific code out of include/platform/aclinux.h
9255
92563) iASL Compiler Version X2044:
9257
9258Implemented error checking for the string used in the EISAID macro
9259(Usually used in the definition of the _HID object.)  The code now
9260strictly enforces the PnP format - exactly 7 characters, 3
9261uppercase letters and 4 hex digits.
9262
9263If a raw string is used in the definition of the _HID object
9264(instead of the EISAID macro), the string must contain all
9265alphanumeric characters (e.g., "*PNP0011" is not allowed because
9266of the asterisk.)
9267
9268Implemented checking for invalid use of ACPI reserved names for
9269most of the name creation operators (Name, Device, Event, Mutex,
9270OperationRegion, PowerResource, Processor, and ThermalZone.)
9271Previously, this check was only performed for control methods.
9272
9273Implemented an additional check on the Name operator to emit an
9274error if a reserved name that must be implemented in ASL as a
9275control method is used.  We know that a reserved name must be a
9276method if it is defined with input arguments.
9277
9278The warning emitted when a namespace object reference is not found
9279during the cross reference phase has been changed into an error.
9280The "External" directive should be used for names defined in other
9281modules.
9282
9283
92844) Tools and Utilities
9285
9286The 16-bit tools (adump16 and aexec16) have been regenerated and
9287tested.
9288
9289Fixed a problem with the output of both acpidump and adump16 where
9290the indentation of closing parentheses and brackets was not
9291
9292aligned properly with the parent block.
9293
9294
9295----------------------------------------
929603 May 2002.  Summary of changes for this release.
9297
9298
92991) ACPI CA Core Subsystem Version 20020503:
9300
9301Added support a new OSL interface that allows the host operating
9302
9303system software to override the DSDT found in the firmware -
9304AcpiOsTableOverride.  With this interface, the OSL can examine the
9305version of the firmware DSDT and replace it with a different one
9306if desired.
9307
9308Added new external interfaces for accessing ACPI registers from
9309device drivers and other system software - AcpiGetRegister and
9310AcpiSetRegister.  This was simply an externalization of the
9311existing AcpiHwBitRegister interfaces.
9312
9313Fixed a regression introduced in the previous build where the
9314ASL/AML CreateField operator always returned an error,
9315"destination must be a NS Node".
9316
9317Extended the maximum time (before failure) to successfully enable
9318ACPI mode to 3 seconds.
9319
9320Code and Data Size: Current core subsystem library sizes are shown
9321below.  These are the code and data sizes for the acpica.lib
9322produced by the Microsoft Visual C++ 6.0 compiler, and these
9323values do not include any ACPI driver or OSPM code.  The debug
9324version of the code includes the debug output trace mechanism and
9325has a larger code and data size.  Note that these values will vary
9326depending on the efficiency of the compiler and the compiler
9327options used during generation.
9328
9329  Previous Release
9330    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
9331    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
9332  Current Release:
9333    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
9334    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
9335
9336
93372) Linux
9338
9339Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
9340free. While 3 out of 4 of our in-house systems work fine, the last
9341one still hangs when testing the LAPIC timer.
9342
9343Renamed many files in 2.5 kernel release to omit "acpi_" from the
9344name.
9345
9346Added warning on boot for Presario 711FR.
9347
9348Sleep improvements (Pavel Machek)
9349
9350ACPI can now be built without CONFIG_PCI enabled.
9351
9352IA64: Fixed memory map functions (JI Lee)
9353
9354
93553) iASL Compiler Version X2043:
9356
9357Added support to allow the compiler to be integrated into the MS
9358VC++ development environment for one-button compilation of single
9359files or entire projects -- with error-to-source-line mapping.
9360
9361Implemented support for compile-time constant folding for the
9362Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
9363specification.  This allows the ASL writer to use expressions
9364instead of Integer/Buffer/String constants in terms that must
9365evaluate to constants at compile time and will also simplify the
9366emitted AML in any such sub-expressions that can be folded
9367(evaluated at compile-time.)  This increases the size of the
9368compiler significantly because a portion of the ACPI CA AML
9369interpreter is included within the compiler in order to pre-
9370evaluate constant expressions.
9371
9372
9373Fixed a problem with the "Unicode" ASL macro that caused the
9374compiler to fault.  (This macro is used in conjunction with the
9375_STR reserved name.)
9376
9377Implemented an AML opcode optimization to use the Zero, One, and
9378Ones opcodes where possible to further reduce the size of integer
9379constants and thus reduce the overall size of the generated AML
9380code.
9381
9382Implemented error checking for new reserved terms for ACPI version
93832.0A.
9384
9385Implemented the -qr option to display the current list of ACPI
9386reserved names known to the compiler.
9387
9388Implemented the -qc option to display the current list of ASL
9389operators that are allowed within constant expressions and can
9390therefore be folded at compile time if the operands are constants.
9391
9392
93934) Documentation
9394
9395Updated the Programmer's Reference for new interfaces, data types,
9396and memory allocation model options.
9397
9398Updated the iASL Compiler User Reference to apply new format and
9399add information about new features and options.
9400
9401----------------------------------------
940219 April 2002.  Summary of changes for this release.
9403
94041) ACPI CA Core Subsystem Version 20020419:
9405
9406The source code base for the Core Subsystem has been completely
9407cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
9408versions.  The Lint option files used are included in the
9409/acpi/generate/lint directory.
9410
9411Implemented enhanced status/error checking across the entire
9412Hardware manager subsystem.  Any hardware errors (reported from
9413the OSL) are now bubbled up and will abort a running control
9414method.
9415
9416
9417Fixed a problem where the per-ACPI-table integer width (32 or 64)
9418was stored only with control method nodes, causing a fault when
9419non-control method code was executed during table loading.  The
9420solution implemented uses a global variable to indicate table
9421width across the entire ACPI subsystem.  Therefore, ACPI CA does
9422not support mixed integer widths across different ACPI tables
9423(DSDT, SSDT).
9424
9425Fixed a problem where NULL extended fields (X fields) in an ACPI
94262.0 ACPI FADT caused the table load to fail.  Although the
9427existing ACPI specification is a bit fuzzy on this topic, the new
9428behavior is to fall back on a ACPI 1.0 field if the corresponding
9429ACPI 2.0 X field is zero (even though the table revision indicates
9430a full ACPI 2.0 table.)  The ACPI specification will be updated to
9431clarify this issue.
9432
9433Fixed a problem with the SystemMemory operation region handler
9434where memory was always accessed byte-wise even if the AML-
9435specified access width was larger than a byte.  This caused
9436problems on systems with memory-mapped I/O.  Memory is now
9437accessed with the width specified.  On systems that do not support
9438non-aligned transfers, a check is made to guarantee proper address
9439alignment before proceeding in order to avoid an AML-caused
9440alignment fault within the kernel.
9441
9442
9443Fixed a problem with the ExtendedIrq resource where only one byte
9444of the 4-byte Irq field was extracted.
9445
9446Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
9447function was out of date and required a rewrite.
9448
9449Code and Data Size: Current core subsystem library sizes are shown
9450below.  These are the code and data sizes for the acpica.lib
9451produced by the Microsoft Visual C++ 6.0 compiler, and these
9452values do not include any ACPI driver or OSPM code.  The debug
9453version of the code includes the debug output trace mechanism and
9454has a larger code and data size.  Note that these values will vary
9455depending on the efficiency of the compiler and the compiler
9456options used during generation.
9457
9458  Previous Release
9459    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
9460    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
9461  Current Release:
9462    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
9463    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
9464
9465
94662) Linux
9467
9468PCI IRQ routing fixes (Dominik Brodowski)
9469
9470
94713) iASL Compiler Version X2042:
9472
9473Implemented an additional compile-time error check for a field
9474unit whose size + minimum access width would cause a run-time
9475access beyond the end-of-region.  Previously, only the field size
9476itself was checked.
9477
9478The Core subsystem and iASL compiler now share a common parse
9479object in preparation for compile-time evaluation of the type
94803/4/5 ASL operators.
9481
9482
9483----------------------------------------
9484Summary of changes for this release: 03_29_02
9485
94861) ACPI CA Core Subsystem Version 20020329:
9487
9488Implemented support for late evaluation of TermArg operands to
9489Buffer and Package objects.  This allows complex expressions to be
9490used in the declarations of these object types.
9491
9492Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
94931.0, if the field was larger than 32 bits, it was returned as a
9494buffer - otherwise it was returned as an integer.  In ACPI 2.0,
9495the field is returned as a buffer only if the field is larger than
949664 bits.  The TableRevision is now considered when making this
9497conversion to avoid incompatibility with existing ASL code.
9498
9499Implemented logical addressing for AcpiOsGetRootPointer.  This
9500allows an RSDP with either a logical or physical address.  With
9501this support, the host OS can now override all ACPI tables with
9502one logical RSDP.  Includes implementation of  "typed" pointer
9503support to allow a common data type for both physical and logical
9504pointers internally.  This required a change to the
9505AcpiOsGetRootPointer interface.
9506
9507Implemented the use of ACPI 2.0 Generic Address Structures for all
9508GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
9509mapped I/O for these ACPI features.
9510
9511Initialization now ignores not only non-required tables (All
9512tables other than the FADT, FACS, DSDT, and SSDTs), but also does
9513not validate the table headers of unrecognized tables.
9514
9515Fixed a problem where a notify handler could only be
9516installed/removed on an object of type Device.  All "notify"
9517
9518objects are now supported -- Devices, Processor, Power, and
9519Thermal.
9520
9521Removed most verbosity from the ACPI_DB_INFO debug level.  Only
9522critical information is returned when this debug level is enabled.
9523
9524Code and Data Size: Current core subsystem library sizes are shown
9525below.  These are the code and data sizes for the acpica.lib
9526produced by the Microsoft Visual C++ 6.0 compiler, and these
9527values do not include any ACPI driver or OSPM code.  The debug
9528version of the code includes the debug output trace mechanism and
9529has a larger code and data size.  Note that these values will vary
9530depending on the efficiency of the compiler and the compiler
9531options used during generation.
9532
9533  Previous Release
9534    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
9535    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
9536  Current Release:
9537    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
9538    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
9539
9540
95412) Linux:
9542
9543The processor driver (acpi_processor.c) now fully supports ACPI
95442.0-based processor performance control (e.g. Intel(R)
9545SpeedStep(TM) technology) Note that older laptops that only have
9546the Intel "applet" interface are not supported through this.  The
9547'limit' and 'performance' interface (/proc) are fully functional.
9548[Note that basic policy for controlling performance state
9549transitions will be included in the next version of ospmd.]  The
9550idle handler was modified to more aggressively use C2, and PIIX4
9551errata handling underwent a complete overhaul (big thanks to
9552Dominik Brodowski).
9553
9554Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
9555based devices in the ACPI namespace are now dynamically bound
9556(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
9557This allows, among other things, ACPI to resolve bus numbers for
9558subordinate PCI bridges.
9559
9560Enhanced PCI IRQ routing to get the proper bus number for _PRT
9561entries defined underneath PCI bridges.
9562
9563Added IBM 600E to bad bios list due to invalid _ADR value for
9564PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
9565
9566In the process of adding full MADT support (e.g. IOAPIC) for IA32
9567(acpi.c, mpparse.c) -- stay tuned.
9568
9569Added back visual differentiation between fixed-feature and
9570control-method buttons in dmesg.  Buttons are also subtyped (e.g.
9571button/power/PWRF) to simplify button identification.
9572
9573We no longer use -Wno-unused when compiling debug. Please ignore
9574any "_THIS_MODULE defined but not used" messages.
9575
9576Can now shut down the system using "magic sysrq" key.
9577
9578
95793) iASL Compiler version 2041:
9580
9581Fixed a problem where conversion errors for hex/octal/decimal
9582constants were not reported.
9583
9584Implemented a fix for the General Register template Address field.
9585This field was 8 bits when it should be 64.
9586
9587Fixed a problem where errors/warnings were no longer being emitted
9588within the listing output file.
9589
9590Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
9591exactly 4 characters, alphanumeric only.
9592
9593
9594
9595
9596----------------------------------------
9597Summary of changes for this release: 03_08_02
9598
9599
96001) ACPI CA Core Subsystem Version 20020308:
9601
9602Fixed a problem with AML Fields where the use of the "AccessAny"
9603keyword could cause an interpreter error due to attempting to read
9604or write beyond the end of the parent Operation Region.
9605
9606Fixed a problem in the SystemMemory Operation Region handler where
9607an attempt was made to map memory beyond the end of the region.
9608This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
9609errors on some Linux systems.
9610
9611Fixed a problem where the interpreter/namespace "search to root"
9612algorithm was not functioning for some object types.  Relaxed the
9613internal restriction on the search to allow upsearches for all
9614external object types as well as most internal types.
9615
9616
96172) Linux:
9618
9619We now use safe_halt() macro versus individual calls to sti | hlt.
9620
9621Writing to the processor limit interface should now work. "echo 1"
9622will increase the limit, 2 will decrease, and 0 will reset to the
9623
9624default.
9625
9626
96273) ASL compiler:
9628
9629Fixed segfault on Linux version.
9630
9631
9632----------------------------------------
9633Summary of changes for this release: 02_25_02
9634
96351) ACPI CA Core Subsystem:
9636
9637
9638Fixed a problem where the GPE bit masks were not initialized
9639properly, causing erratic GPE behavior.
9640
9641Implemented limited support for multiple calling conventions.  The
9642code can be generated with either the VPL (variable parameter
9643list, or "C") convention, or the FPL (fixed parameter list, or
9644"Pascal") convention.  The core subsystem is about 3.4% smaller
9645when generated with FPL.
9646
9647
96482) Linux
9649
9650Re-add some /proc/acpi/event functionality that was lost during
9651the rewrite
9652
9653Resolved issue with /proc events for fixed-feature buttons showing
9654up as the system device.
9655
9656Fixed checks on C2/C3 latencies to be inclusive of maximum values.
9657
9658Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
9659
9660Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
9661
9662Fixed limit interface & usage to fix bugs with passive cooling
9663hysterisis.
9664
9665Restructured PRT support.
9666
9667
9668----------------------------------------
9669Summary of changes for this label: 02_14_02
9670
9671
96721) ACPI CA Core Subsystem:
9673
9674Implemented support in AcpiLoadTable to allow loading of FACS and
9675FADT tables.
9676
9677Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
9678been removed.  All 64-bit platforms should be migrated to the ACPI
96792.0 tables.  The actbl71.h header has been removed from the source
9680tree.
9681
9682All C macros defined within the subsystem have been prefixed with
9683"ACPI_" to avoid collision with other system include files.
9684
9685Removed the return value for the two AcpiOsPrint interfaces, since
9686it is never used and causes lint warnings for ignoring the return
9687value.
9688
9689Added error checking to all internal mutex acquire and release
9690calls.  Although a failure from one of these interfaces is
9691probably a fatal system error, these checks will cause the
9692immediate abort of the currently executing method or interface.
9693
9694Fixed a problem where the AcpiSetCurrentResources interface could
9695fault.  This was a side effect of the deployment of the new memory
9696allocation model.
9697
9698Fixed a couple of problems with the Global Lock support introduced
9699in the last major build.  The "common" (1.0/2.0) internal FACS was
9700being overwritten with the FACS signature and clobbering the
9701Global Lock pointer.  Also, the actual firmware FACS was being
9702unmapped after construction of the "common" FACS, preventing
9703access to the actual Global Lock field within it.  The "common"
9704internal FACS is no longer installed as an actual ACPI table; it
9705is used simply as a global.
9706
9707Code and Data Size: Current core subsystem library sizes are shown
9708below.  These are the code and data sizes for the acpica.lib
9709produced by the Microsoft Visual C++ 6.0 compiler, and these
9710values do not include any ACPI driver or OSPM code.  The debug
9711version of the code includes the debug output trace mechanism and
9712has a larger code and data size.  Note that these values will vary
9713depending on the efficiency of the compiler and the compiler
9714options used during generation.
9715
9716  Previous Release (02_07_01)
9717    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
9718    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
9719  Current Release:
9720    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
9721    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
9722
9723
97242) Linux
9725
9726Updated Linux-specific code for core macro and OSL interface
9727changes described above.
9728
9729Improved /proc/acpi/event. It now can be opened only once and has
9730proper poll functionality.
9731
9732Fixed and restructured power management (acpi_bus).
9733
9734Only create /proc "view by type" when devices of that class exist.
9735
9736Fixed "charging/discharging" bug (and others) in acpi_battery.
9737
9738Improved thermal zone code.
9739
9740
97413) ASL Compiler, version X2039:
9742
9743
9744Implemented the new compiler restriction on ASL String hex/octal
9745escapes to non-null, ASCII values.  An error results if an invalid
9746value is used.  (This will require an ACPI 2.0 specification
9747change.)
9748
9749AML object labels that are output to the optional C and ASM source
9750are now prefixed with both the ACPI table signature and table ID
9751to help guarantee uniqueness within a large BIOS project.
9752
9753
9754----------------------------------------
9755Summary of changes for this label: 02_01_02
9756
97571) ACPI CA Core Subsystem:
9758
9759ACPI 2.0 support is complete in the entire Core Subsystem and the
9760ASL compiler. All new ACPI 2.0 operators are implemented and all
9761other changes for ACPI 2.0 support are complete.  With
9762simultaneous code and data optimizations throughout the subsystem,
9763ACPI 2.0 support has been implemented with almost no additional
9764cost in terms of code and data size.
9765
9766Implemented a new mechanism for allocation of return buffers.  If
9767the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
9768be allocated on behalf of the caller.  Consolidated all return
9769buffer validation and allocation to a common procedure.  Return
9770buffers will be allocated via the primary OSL allocation interface
9771since it appears that a separate pool is not needed by most users.
9772If a separate pool is required for these buffers, the caller can
9773still use the original mechanism and pre-allocate the buffer(s).
9774
9775Implemented support for string operands within the DerefOf
9776operator.
9777
9778Restructured the Hardware and Event managers to be table driven,
9779simplifying the source code and reducing the amount of generated
9780code.
9781
9782Split the common read/write low-level ACPI register bitfield
9783procedure into a separate read and write, simplifying the code
9784considerably.
9785
9786Obsoleted the AcpiOsCallocate OSL interface.  This interface was
9787used only a handful of times and didn't have enough critical mass
9788for a separate interface.  Replaced with a common calloc procedure
9789in the core.
9790
9791Fixed a reported problem with the GPE number mapping mechanism
9792that allows GPE1 numbers to be non-contiguous with GPE0.
9793Reorganized the GPE information and shrunk a large array that was
9794originally large enough to hold info for all possible GPEs (256)
9795to simply large enough to hold all GPEs up to the largest GPE
9796number on the machine.
9797
9798Fixed a reported problem with resource structure alignment on 64-
9799bit platforms.
9800
9801Changed the AcpiEnableEvent and AcpiDisableEvent external
9802interfaces to not require any flags for the common case of
9803enabling/disabling a GPE.
9804
9805Implemented support to allow a "Notify" on a Processor object.
9806
9807Most TBDs in comments within the source code have been resolved
9808and eliminated.
9809
9810
9811Fixed a problem in the interpreter where a standalone parent
9812prefix (^) was not handled correctly in the interpreter and
9813debugger.
9814
9815Removed obsolete and unnecessary GPE save/restore code.
9816
9817Implemented Field support in the ASL Load operator.  This allows a
9818table to be loaded from a named field, in addition to loading a
9819table directly from an Operation Region.
9820
9821Implemented timeout and handle support in the external Global Lock
9822interfaces.
9823
9824Fixed a problem in the AcpiDump utility where pathnames were no
9825longer being generated correctly during the dump of named objects.
9826
9827Modified the AML debugger to give a full display of if/while
9828predicates instead of just one AML opcode at a time.  (The
9829predicate can have several nested ASL statements.)  The old method
9830was confusing during single stepping.
9831
9832Code and Data Size: Current core subsystem library sizes are shown
9833below. These are the code and data sizes for the acpica.lib
9834produced by the Microsoft Visual C++ 6.0 compiler, and these
9835values do not include any ACPI driver or OSPM code.  The debug
9836version of the code includes the debug output trace mechanism and
9837has a larger code and data size.  Note that these values will vary
9838depending on the efficiency of the compiler and the compiler
9839options used during generation.
9840
9841  Previous Release (12_18_01)
9842     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
9843     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
9844   Current Release:
9845     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
9846     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
9847
98482) Linux
9849
9850 Implemented fix for PIIX reverse throttling errata (Processor
9851driver)
9852
9853Added new Limit interface (Processor and Thermal drivers)
9854
9855New thermal policy (Thermal driver)
9856
9857Many updates to /proc
9858
9859Battery "low" event support (Battery driver)
9860
9861Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
9862
9863IA32 - IA64 initialization unification, no longer experimental
9864
9865Menuconfig options redesigned
9866
98673) ASL Compiler, version X2037:
9868
9869Implemented several new output features to simplify integration of
9870AML code into  firmware: 1) Output the AML in C source code with
9871labels for each named ASL object.  The    original ASL source code
9872is interleaved as C comments. 2) Output the AML in ASM source code
9873with labels and interleaved ASL    source. 3) Output the AML in
9874raw hex table form, in either C or ASM.
9875
9876Implemented support for optional string parameters to the
9877LoadTable operator.
9878
9879Completed support for embedded escape sequences within string
9880literals.  The compiler now supports all single character escapes
9881as well as the Octal and Hex escapes.  Note: the insertion of a
9882null byte into a string literal (via the hex/octal escape) causes
9883the string to be immediately terminated.  A warning is issued.
9884
9885Fixed a problem where incorrect AML was generated for the case
9886where an ASL namepath consists of a single parent prefix (
9887
9888) with no trailing name segments.
9889
9890The compiler has been successfully generated with a 64-bit C
9891compiler.
9892
9893
9894
9895
9896----------------------------------------
9897Summary of changes for this label: 12_18_01
9898
98991) Linux
9900
9901Enhanced blacklist with reason and severity fields. Any table's
9902signature may now be used to identify a blacklisted system.
9903
9904Call _PIC control method to inform the firmware which interrupt
9905model the OS is using. Turn on any disabled link devices.
9906
9907Cleaned up busmgr /proc error handling (Andreas Dilger)
9908
9909 2) ACPI CA Core Subsystem:
9910
9911Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
9912while loop)
9913
9914Completed implementation of the ACPI 2.0 "Continue",
9915"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
9916operators.  All new ACPI 2.0 operators are now implemented in both
9917the ASL compiler and the AML interpreter.  The only remaining ACPI
99182.0 task is support for the String data type in the DerefOf
9919operator.  Fixed a problem with AcquireMutex where the status code
9920was lost if the caller had to actually wait for the mutex.
9921
9922Increased the maximum ASL Field size from 64K bits to 4G bits.
9923
9924Completed implementation of the external Global Lock interfaces --
9925AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
9926Handler parameters were added.
9927
9928Completed another pass at removing warnings and issues when
9929compiling with 64-bit compilers.  The code now compiles cleanly
9930with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
9931add and subtract (diff) macros have changed considerably.
9932
9933
9934Created and deployed a new ACPI_SIZE type that is 64-bits wide on
993564-bit platforms, 32-bits on all others.  This type is used
9936wherever memory allocation and/or the C sizeof() operator is used,
9937and affects the OSL memory allocation interfaces AcpiOsAllocate
9938and AcpiOsCallocate.
9939
9940Implemented sticky user breakpoints in the AML debugger.
9941
9942Code and Data Size: Current core subsystem library sizes are shown
9943below. These are the code and data sizes for the acpica.lib
9944produced by the Microsoft Visual C++ 6.0 compiler, and these
9945values do not include any ACPI driver or OSPM code.  The debug
9946version of the code includes the debug output trace mechanism and
9947has a larger code and data size. Note that these values will vary
9948depending on the efficiency of the compiler and the compiler
9949options used during generation.
9950
9951  Previous Release (12_05_01)
9952     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
9953     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
9954   Current Release:
9955     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
9956     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
9957
9958 3) ASL Compiler, version X2034:
9959
9960Now checks for (and generates an error if detected) the use of a
9961Break or Continue statement without an enclosing While statement.
9962
9963
9964Successfully generated the compiler with the Intel 64-bit C
9965compiler.
9966
9967 ----------------------------------------
9968Summary of changes for this label: 12_05_01
9969
9970 1) ACPI CA Core Subsystem:
9971
9972The ACPI 2.0 CopyObject operator is fully implemented.  This
9973operator creates a new copy of an object (and is also used to
9974bypass the "implicit conversion" mechanism of the Store operator.)
9975
9976The ACPI 2.0 semantics for the SizeOf operator are fully
9977implemented.  The change is that performing a SizeOf on a
9978reference object causes an automatic dereference of the object to
9979tha actual value before the size is evaluated. This behavior was
9980undefined in ACPI 1.0.
9981
9982The ACPI 2.0 semantics for the Extended IRQ resource descriptor
9983have been implemented.  The interrupt polarity and mode are now
9984independently set.
9985
9986Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
9987appearing in Package objects were not properly converted to
9988integers when the internal Package was converted to an external
9989object (via the AcpiEvaluateObject interface.)
9990
9991Fixed a problem with the namespace object deletion mechanism for
9992objects created by control methods.  There were two parts to this
9993problem: 1) Objects created during the initialization phase method
9994parse were not being deleted, and 2) The object owner ID mechanism
9995to track objects was broken.
9996
9997Fixed a problem where the use of the ASL Scope operator within a
9998control method would result in an invalid opcode exception.
9999
10000Fixed a problem introduced in the previous label where the buffer
10001length required for the _PRT structure was not being returned
10002correctly.
10003
10004Code and Data Size: Current core subsystem library sizes are shown
10005below. These are the code and data sizes for the acpica.lib
10006produced by the Microsoft Visual C++ 6.0 compiler, and these
10007values do not include any ACPI driver or OSPM code.  The debug
10008version of the code includes the debug output trace mechanism and
10009has a larger code and data size.  Note that these values will vary
10010depending on the efficiency of the compiler and the compiler
10011options used during generation.
10012
10013  Previous Release (11_20_01)
10014     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
10015     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
10016
10017  Current Release:
10018     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
10019     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
10020
10021 2) Linux:
10022
10023Updated all files to apply cleanly against 2.4.16.
10024
10025Added basic PCI Interrupt Routing Table (PRT) support for IA32
10026(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
10027version supports both static and dyanmic PRT entries, but dynamic
10028entries are treated as if they were static (not yet
10029reconfigurable).  Architecture- specific code to use this data is
10030absent on IA32 but should be available shortly.
10031
10032Changed the initialization sequence to start the ACPI interpreter
10033(acpi_init) prior to initialization of the PCI driver (pci_init)
10034in init/main.c.  This ordering is required to support PRT and
10035facilitate other (future) enhancement.  A side effect is that the
10036ACPI bus driver and certain device drivers can no longer be loaded
10037as modules.
10038
10039Modified the 'make menuconfig' options to allow PCI Interrupt
10040Routing support to be included without the ACPI Bus and other
10041device drivers.
10042
10043 3) ASL Compiler, version X2033:
10044
10045Fixed some issues with the use of the new CopyObject and
10046DataTableRegion operators.  Both are fully functional.
10047
10048 ----------------------------------------
10049Summary of changes for this label: 11_20_01
10050
10051 20 November 2001.  Summary of changes for this release.
10052
10053 1) ACPI CA Core Subsystem:
10054
10055Updated Index support to match ACPI 2.0 semantics.  Storing a
10056Integer, String, or Buffer to an Index of a Buffer will store only
10057the least-significant byte of the source to the Indexed buffer
10058byte.  Multiple writes are not performed.
10059
10060Fixed a problem where the access type used in an AccessAs ASL
10061operator was not recorded correctly into the field object.
10062
10063Fixed a problem where ASL Event objects were created in a
10064signalled state. Events are now created in an unsignalled state.
10065
10066The internal object cache is now purged after table loading and
10067initialization to reduce the use of dynamic kernel memory -- on
10068the assumption that object use is greatest during the parse phase
10069of the entire table (versus the run-time use of individual control
10070methods.)
10071
10072ACPI 2.0 variable-length packages are now fully operational.
10073
10074Code and Data Size: Code and Data optimizations have permitted new
10075feature development with an actual reduction in the library size.
10076Current core subsystem library sizes are shown below.  These are
10077the code and data sizes for the acpica.lib produced by the
10078Microsoft Visual C++ 6.0 compiler, and these values do not include
10079any ACPI driver or OSPM code.  The debug version of the code
10080includes the debug output trace mechanism and has a larger code
10081and data size.  Note that these values will vary depending on the
10082efficiency of the compiler and the compiler options used during
10083generation.
10084
10085  Previous Release (11_09_01):
10086     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
10087     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
10088
10089  Current Release:
10090     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
10091     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
10092
10093 2) Linux:
10094
10095Enhanced the ACPI boot-time initialization code to allow the use
10096of Local APIC tables for processor enumeration on IA-32, and to
10097pave the way for a fully MPS-free boot (on SMP systems) in the
10098near future.  This functionality replaces
10099arch/i386/kernel/acpitables.c, which was introduced in an earlier
101002.4.15-preX release.  To enable this feature you must add
10101"acpi_boot=on" to the kernel command line -- see the help entry
10102for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
10103the works...
10104
10105Restructured the configuration options to allow boot-time table
10106parsing support without inclusion of the ACPI Interpreter (and
10107other) code.
10108
10109NOTE: This release does not include fixes for the reported events,
10110power-down, and thermal passive cooling issues (coming soon).
10111
10112 3) ASL Compiler:
10113
10114Added additional typechecking for Fields within restricted access
10115Operation Regions.  All fields within EC and CMOS regions must be
10116declared with ByteAcc. All fields withing SMBus regions must be
10117declared with the BufferAcc access type.
10118
10119Fixed a problem where the listing file output of control methods
10120no longer interleaved the actual AML code with the ASL source
10121code.
10122
10123
10124
10125
10126----------------------------------------
10127Summary of changes for this label: 11_09_01
10128
101291) ACPI CA Core Subsystem:
10130
10131Implemented ACPI 2.0-defined support for writes to fields with a
10132Buffer, String, or Integer source operand that is smaller than the
10133target field. In these cases, the source operand is zero-extended
10134to fill the target field.
10135
10136Fixed a problem where a Field starting bit offset (within the
10137parent operation region) was calculated incorrectly if the
10138
10139alignment of the field differed from the access width.  This
10140affected CreateWordField, CreateDwordField, CreateQwordField, and
10141possibly other fields that use the "AccessAny" keyword.
10142
10143Fixed a problem introduced in the 11_02_01 release where indirect
10144stores through method arguments did not operate correctly.
10145
101462) Linux:
10147
10148Implemented boot-time ACPI table parsing support
10149(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
10150facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
10151legacy BIOS interfaces (e.g. MPS) for the configuration of system
10152processors, memory, and interrupts during setup_arch().  Note that
10153this patch does not include the required architecture-specific
10154changes required to apply this information -- subsequent patches
10155will be posted for both IA32 and IA64 to achieve this.
10156
10157Added low-level sleep support for IA32 platforms, courtesy of Pat
10158Mochel. This allows IA32 systems to transition to/from various
10159sleeping states (e.g. S1, S3), although the lack of a centralized
10160driver model and power-manageable drivers will prevent its
10161(successful) use on most systems.
10162
10163Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
10164submenu, unified IA32 and IA64 options, added new "Boot using ACPI
10165tables" option, etc.
10166
10167Increased the default timeout for the EC driver from 1ms to 10ms
10168(1000 cycles of 10us) to try to address AE_TIME errors during EC
10169transactions.
10170
10171 ----------------------------------------
10172Summary of changes for this label: 11_02_01
10173
101741) ACPI CA Core Subsystem:
10175
10176ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
10177(QWordAcc keyword). All ACPI 2.0 64-bit support is now
10178implemented.
10179
10180OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
10181changes to support ACPI 2.0 Qword field access.  Read/Write
10182PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
10183accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
10184the value parameter for the address space handler interface is now
10185an ACPI_INTEGER.  OSL implementations of these interfaces must now
10186handle the case where the Width parameter is 64.
10187
10188Index Fields: Fixed a problem where unaligned bit assembly and
10189disassembly for IndexFields was not supported correctly.
10190
10191Index and Bank Fields:  Nested Index and Bank Fields are now
10192supported. During field access, a check is performed to ensure
10193that the value written to an Index or Bank register is not out of
10194the range of the register.  The Index (or Bank) register is
10195written before each access to the field data. Future support will
10196include allowing individual IndexFields to be wider than the
10197DataRegister width.
10198
10199Fields: Fixed a problem where the AML interpreter was incorrectly
10200attempting to write beyond the end of a Field/OpRegion.  This was
10201a boundary case that occurred when a DWORD field was written to a
10202BYTE access OpRegion, forcing multiple writes and causing the
10203interpreter to write one datum too many.
10204
10205Fields: Fixed a problem with Field/OpRegion access where the
10206starting bit address of a field was incorrectly calculated if the
10207current access type was wider than a byte (WordAcc, DwordAcc, or
10208QwordAcc).
10209
10210Fields: Fixed a problem where forward references to individual
10211FieldUnits (individual Field names within a Field definition) were
10212not resolved during the AML table load.
10213
10214Fields: Fixed a problem where forward references from a Field
10215definition to the parent Operation Region definition were not
10216resolved during the AML table load.
10217
10218Fields: Duplicate FieldUnit names within a scope are now detected
10219during AML table load.
10220
10221Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
10222returned an incorrect name for the root node.
10223
10224Code and Data Size: Code and Data optimizations have permitted new
10225feature development with an actual reduction in the library size.
10226Current core subsystem library sizes are shown below.  These are
10227the code and data sizes for the acpica.lib produced by the
10228Microsoft Visual C++ 6.0 compiler, and these values do not include
10229any ACPI driver or OSPM code.  The debug version of the code
10230includes the debug output trace mechanism and has a larger code
10231and data size.  Note that these values will vary depending on the
10232efficiency of the compiler and the compiler options used during
10233generation.
10234
10235  Previous Release (10_18_01):
10236     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
10237     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
10238
10239  Current Release:
10240     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
10241     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
10242
10243 2) Linux:
10244
10245Improved /proc processor output (Pavel Machek) Re-added
10246MODULE_LICENSE("GPL") to all modules.
10247
10248 3) ASL Compiler version X2030:
10249
10250Duplicate FieldUnit names within a scope are now detected and
10251flagged as errors.
10252
10253 4) Documentation:
10254
10255Programmer Reference updated to reflect OSL and address space
10256handler interface changes described above.
10257
10258----------------------------------------
10259Summary of changes for this label: 10_18_01
10260
10261ACPI CA Core Subsystem:
10262
10263Fixed a problem with the internal object reference count mechanism
10264that occasionally caused premature object deletion. This resolves
10265all of the outstanding problem reports where an object is deleted
10266in the middle of an interpreter evaluation.  Although this problem
10267only showed up in rather obscure cases, the solution to the
10268problem involved an adjustment of all reference counts involving
10269objects attached to namespace nodes.
10270
10271Fixed a problem with Field support in the interpreter where
10272writing to an aligned field whose length is an exact multiple (2
10273or greater) of the field access granularity would cause an attempt
10274to write beyond the end of the field.
10275
10276The top level AML opcode execution functions within the
10277interpreter have been renamed with a more meaningful and
10278consistent naming convention.  The modules exmonad.c and
10279exdyadic.c were eliminated.  New modules are exoparg1.c,
10280exoparg2.c, exoparg3.c, and exoparg6.c.
10281
10282Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
10283
10284Fixed a problem where the AML debugger was causing some internal
10285objects to not be deleted during subsystem termination.
10286
10287Fixed a problem with the external AcpiEvaluateObject interface
10288where the subsystem would fault if the named object to be
10289evaluated refered to a constant such as Zero, Ones, etc.
10290
10291Fixed a problem with IndexFields and BankFields where the
10292subsystem would fault if the index, data, or bank registers were
10293not defined in the same scope as the field itself.
10294
10295Added printf format string checking for compilers that support
10296this feature.  Corrected more than 50 instances of issues with
10297format specifiers within invocations of ACPI_DEBUG_PRINT
10298throughout the core subsystem code.
10299
10300The ASL "Revision" operator now returns the ACPI support level
10301implemented in the core - the value "2" since the ACPI 2.0 support
10302is more than 50% implemented.
10303
10304Enhanced the output of the AML debugger "dump namespace" command
10305to output in a more human-readable form.
10306
10307Current core subsystem library code sizes are shown below.  These
10308
10309are the code and data sizes for the acpica.lib produced by the
10310Microsoft Visual C++ 6.0 compiler, and these values do not include
10311any ACPI driver or OSPM code.  The debug version of the code
10312includes the full debug trace mechanism -- leading to a much
10313
10314larger code and data size.  Note that these values will vary
10315depending on the efficiency of the compiler and the compiler
10316options used during generation.
10317
10318     Previous Label (09_20_01):
10319     Non-Debug Version:    65K Code,     5K Data,     70K Total
10320     Debug Version:       138K Code,    58K Data,    196K Total
10321
10322     This Label:
10323
10324     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
10325     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
10326
10327Linux:
10328
10329Implemented a "Bad BIOS Blacklist" to track machines that have
10330known ASL/AML problems.
10331
10332Enhanced the /proc interface for the thermal zone driver and added
10333support for _HOT (the critical suspend trip point).  The 'info'
10334file now includes threshold/policy information, and allows setting
10335of _SCP (cooling preference) and _TZP (polling frequency) values
10336to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
10337frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
10338preference to the passive/quiet mode (if supported by the ASL).
10339
10340Implemented a workaround for a gcc bug that resuted in an OOPs
10341when loading the control method battery driver.
10342
10343 ----------------------------------------
10344Summary of changes for this label: 09_20_01
10345
10346 ACPI CA Core Subsystem:
10347
10348The AcpiEnableEvent and AcpiDisableEvent interfaces have been
10349modified to allow individual GPE levels to be flagged as wake-
10350enabled (i.e., these GPEs are to remain enabled when the platform
10351sleeps.)
10352
10353The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
10354support wake-enabled GPEs.  This means that upon entering the
10355sleep state, all GPEs that are not wake-enabled are disabled.
10356When leaving the sleep state, these GPEs are reenabled.
10357
10358A local double-precision divide/modulo module has been added to
10359enhance portability to OS kernels where a 64-bit math library is
10360not available.  The new module is "utmath.c".
10361
10362Several optimizations have been made to reduce the use of CPU
10363stack.  Originally over 2K, the maximum stack usage is now below
103642K at 1860  bytes (1.82k)
10365
10366Fixed a problem with the AcpiGetFirmwareTable interface where the
10367root table pointer was not mapped into a logical address properly.
10368
10369Fixed a problem where a NULL pointer was being dereferenced in the
10370interpreter code for the ASL Notify operator.
10371
10372Fixed a problem where the use of the ASL Revision operator
10373returned an error. This operator now returns the current version
10374of the ACPI CA core subsystem.
10375
10376Fixed a problem where objects passed as control method parameters
10377to AcpiEvaluateObject were always deleted at method termination.
10378However, these objects may end up being stored into the namespace
10379by the called method.  The object reference count mechanism was
10380applied to these objects instead of a force delete.
10381
10382Fixed a problem where static strings or buffers (contained in the
10383AML code) that are declared as package elements within the ASL
10384code could cause a fault because the interpreter would attempt to
10385delete them.  These objects are now marked with the "static
10386object" flag to prevent any attempt to delete them.
10387
10388Implemented an interpreter optimization to use operands directly
10389from the state object instead of extracting the operands to local
10390variables.  This reduces stack use and code size, and improves
10391performance.
10392
10393The module exxface.c was eliminated as it was an unnecessary extra
10394layer of code.
10395
10396Current core subsystem library code sizes are shown below.  These
10397are the code and data sizes for the acpica.lib produced by the
10398Microsoft Visual C++ 6.0 compiler, and these values do not include
10399any ACPI driver or OSPM code.  The debug version of the code
10400includes the full debug trace mechanism -- leading to a much
10401larger code and data size.  Note that these values will vary
10402depending on the efficiency of the compiler and the compiler
10403options used during generation.
10404
10405  Non-Debug Version:  65K Code,   5K Data,   70K Total
10406(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
10407Total  (Previously 195K)
10408
10409Linux:
10410
10411Support for ACPI 2.0 64-bit integers has been added.   All ACPI
10412Integer objects are now 64 bits wide
10413
10414All Acpi data types and structures are now in lower case.  Only
10415Acpi macros are upper case for differentiation.
10416
10417 Documentation:
10418
10419Changes to the external interfaces as described above.
10420
10421 ----------------------------------------
10422Summary of changes for this label: 08_31_01
10423
10424 ACPI CA Core Subsystem:
10425
10426A bug with interpreter implementation of the ASL Divide operator
10427was found and fixed.  The implicit function return value (not the
10428explicit store operands) was returning the remainder instead of
10429the quotient.  This was a longstanding bug and it fixes several
10430known outstanding issues on various platforms.
10431
10432The ACPI_DEBUG_PRINT and function trace entry/exit macros have
10433been further optimized for size.  There are 700 invocations of the
10434DEBUG_PRINT macro alone, so each optimization reduces the size of
10435the debug version of the subsystem significantly.
10436
10437A stack trace mechanism has been implemented.  The maximum stack
10438usage is about 2K on 32-bit platforms.  The debugger command "stat
10439stack" will display the current maximum stack usage.
10440
10441All public symbols and global variables within the subsystem are
10442now prefixed with the string "Acpi".  This keeps all of the
10443symbols grouped together in a kernel map, and avoids conflicts
10444with other kernel subsystems.
10445
10446Most of the internal fixed lookup tables have been moved into the
10447code segment via the const operator.
10448
10449Several enhancements have been made to the interpreter to both
10450reduce the code size and improve performance.
10451
10452Current core subsystem library code sizes are shown below.  These
10453are the code and data sizes for the acpica.lib produced by the
10454Microsoft Visual C++ 6.0 compiler, and these values do not include
10455any ACPI driver or OSPM code.  The debug version of the code
10456includes the full debug trace mechanism which contains over 700
10457invocations of the DEBUG_PRINT macro, 500 function entry macro
10458invocations, and over 900 function exit macro invocations --
10459leading to a much larger code and data size.  Note that these
10460values will vary depending on the efficiency of the compiler and
10461the compiler options used during generation.
10462
10463        Non-Debug Version:  64K Code,   5K Data,   69K Total
10464Debug Version:     137K Code,  58K Data,  195K Total
10465
10466 Linux:
10467
10468Implemented wbinvd() macro, pending a kernel-wide definition.
10469
10470Fixed /proc/acpi/event to handle poll() and short reads.
10471
10472 ASL Compiler, version X2026:
10473
10474Fixed a problem introduced in the previous label where the AML
10475
10476code emitted for package objects produced packages with zero
10477length.
10478
10479 ----------------------------------------
10480Summary of changes for this label: 08_16_01
10481
10482ACPI CA Core Subsystem:
10483
10484The following ACPI 2.0 ASL operators have been implemented in the
10485AML interpreter (These are already supported by the Intel ASL
10486compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
10487ToBuffer.  Support for 64-bit AML constants is implemented in the
10488AML parser, debugger, and disassembler.
10489
10490The internal memory tracking mechanism (leak detection code) has
10491been upgraded to reduce the memory overhead (a separate tracking
10492block is no longer allocated for each memory allocation), and now
10493supports all of the internal object caches.
10494
10495The data structures and code for the internal object caches have
10496been coelesced and optimized so that there is a single cache and
10497memory list data structure and a single group of functions that
10498implement generic cache management.  This has reduced the code
10499size in both the debug and release versions of the subsystem.
10500
10501The DEBUG_PRINT macro(s) have been optimized for size and replaced
10502by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
10503different, because it generates a single call to an internal
10504function.  This results in a savings of about 90 bytes per
10505invocation, resulting in an overall code and data savings of about
1050616% in the debug version of the subsystem.
10507
10508 Linux:
10509
10510Fixed C3 disk corruption problems and re-enabled C3 on supporting
10511machines.
10512
10513Integrated low-level sleep code by Patrick Mochel.
10514
10515Further tweaked source code Linuxization.
10516
10517Other minor fixes.
10518
10519 ASL Compiler:
10520
10521Support for ACPI 2.0 variable length packages is fixed/completed.
10522
10523Fixed a problem where the optional length parameter for the ACPI
105242.0 ToString operator.
10525
10526Fixed multiple extraneous error messages when a syntax error is
10527detected within the declaration line of a control method.
10528
10529 ----------------------------------------
10530Summary of changes for this label: 07_17_01
10531
10532ACPI CA Core Subsystem:
10533
10534Added a new interface named AcpiGetFirmwareTable to obtain any
10535ACPI table via the ACPI signature.  The interface can be called at
10536any time during kernel initialization, even before the kernel
10537virtual memory manager is initialized and paging is enabled.  This
10538allows kernel subsystems to obtain ACPI tables very early, even
10539before the ACPI CA subsystem is initialized.
10540
10541Fixed a problem where Fields defined with the AnyAcc attribute
10542could be resolved to the incorrect address under the following
10543conditions: 1) the field width is larger than 8 bits and 2) the
10544parent operation region is not defined on a DWORD boundary.
10545
10546Fixed a problem where the interpreter is not being locked during
10547namespace initialization (during execution of the _INI control
10548methods), causing an error when an attempt is made to release it
10549later.
10550
10551ACPI 2.0 support in the AML Interpreter has begun and will be
10552ongoing throughout the rest of this year.  In this label, The Mod
10553operator is implemented.
10554
10555Added a new data type to contain full PCI addresses named
10556ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
10557and Function values.
10558
10559 Linux:
10560
10561Enhanced the Linux version of the source code to change most
10562capitalized ACPI type names to lowercase. For example, all
10563instances of ACPI_STATUS are changed to acpi_status.  This will
10564result in a large diff, but the change is strictly cosmetic and
10565aligns the CA code closer to the Linux coding standard.
10566
10567OSL Interfaces:
10568
10569The interfaces to the PCI configuration space have been changed to
10570add the PCI Segment number and to split the single 32-bit combined
10571DeviceFunction field into two 16-bit fields.  This was
10572accomplished by moving the four values that define an address in
10573PCI configuration space (segment, bus, device, and function) to
10574the new ACPI_PCI_ID structure.
10575
10576The changes to the PCI configuration space interfaces led to a
10577reexamination of the complete set of address space access
10578interfaces for PCI, I/O, and Memory.  The previously existing 18
10579interfaces have proven difficult to maintain (any small change
10580must be propagated across at least 6 interfaces) and do not easily
10581allow for future expansion to 64 bits if necessary.  Also, on some
10582systems, it would not be appropriate to demultiplex the access
10583width (8, 16, 32,or 64) before calling the OSL if the
10584corresponding native OS interfaces contain a similar access width
10585parameter.  For these reasons, the 18 address space interfaces
10586have been replaced by these 6 new ones:
10587
10588AcpiOsReadPciConfiguration
10589AcpiOsWritePciConfiguration
10590AcpiOsReadMemory
10591AcpiOsWriteMemory
10592AcpiOsReadPort
10593AcpiOsWritePort
10594
10595Added a new interface named AcpiOsGetRootPointer to allow the OSL
10596to perform the platform and/or OS-specific actions necessary to
10597obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
10598interface will simply call down to the CA core to perform the low-
10599memory search for the table.  On IA-64, the RSDP is obtained from
10600EFI.  Migrating this interface to the OSL allows the CA core to
10601
10602remain OS and platform independent.
10603
10604Added a new interface named AcpiOsSignal to provide a generic
10605"function code and pointer" interface for various miscellaneous
10606signals and notifications that must be made to the host OS.   The
10607first such signals are intended to support the ASL Fatal and
10608Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
10609interface has been obsoleted.
10610
10611The definition of the AcpiFormatException interface has been
10612changed to simplify its use.  The caller no longer must supply a
10613buffer to the call; A pointer to a const string is now returned
10614directly.  This allows the call to be easily used in printf
10615statements, etc. since the caller does not have to manage a local
10616buffer.
10617
10618
10619 ASL Compiler, Version X2025:
10620
10621The ACPI 2.0 Switch/Case/Default operators have been implemented
10622and are fully functional.  They will work with all ACPI 1.0
10623interpreters, since the operators are simply translated to If/Else
10624pairs.
10625
10626The ACPI 2.0 ElseIf operator is implemented and will also work
10627with 1.0 interpreters, for the same reason.
10628
10629Implemented support for ACPI 2.0 variable-length packages.  These
10630packages have a separate opcode, and their size is determined by
10631the interpreter at run-time.
10632
10633Documentation The ACPI CA Programmer Reference has been updated to
10634reflect the new interfaces and changes to existing interfaces.
10635
10636 ------------------------------------------
10637Summary of changes for this label: 06_15_01
10638
10639 ACPI CA Core Subsystem:
10640
10641Fixed a problem where a DWORD-accessed field within a Buffer
10642object would get its byte address inadvertently rounded down to
10643the nearest DWORD.  Buffers are always Byte-accessible.
10644
10645 ASL Compiler, version X2024:
10646
10647Fixed a problem where the Switch() operator would either fault or
10648hang the compiler.  Note however, that the AML code for this ACPI
106492.0 operator is not yet implemented.
10650
10651Compiler uses the new AcpiOsGetTimer interface to obtain compile
10652timings.
10653
10654Implementation of the CreateField operator automatically converts
10655a reference to a named field within a resource descriptor from a
10656byte offset to a bit offset if required.
10657
10658Added some missing named fields from the resource descriptor
10659support. These are the names that are automatically created by the
10660compiler to reference fields within a descriptor.  They are only
10661valid at compile time and are not passed through to the AML
10662interpreter.
10663
10664Resource descriptor named fields are now typed as Integers and
10665subject to compile-time typechecking when used in expressions.
10666
10667 ------------------------------------------
10668Summary of changes for this label: 05_18_01
10669
10670 ACPI CA Core Subsystem:
10671
10672Fixed a couple of problems in the Field support code where bits
10673from adjacent fields could be returned along with the proper field
10674bits. Restructured the field support code to improve performance,
10675readability and maintainability.
10676
10677New DEBUG_PRINTP macro automatically inserts the procedure name
10678into the output, saving hundreds of copies of procedure name
10679strings within the source, shrinking the memory footprint of the
10680debug version of the core subsystem.
10681
10682 Source Code Structure:
10683
10684The source code directory tree was restructured to reflect the
10685current organization of the component architecture.  Some files
10686and directories have been moved and/or renamed.
10687
10688 Linux:
10689
10690Fixed leaking kacpidpc processes.
10691
10692Fixed queueing event data even when /proc/acpi/event is not
10693opened.
10694
10695 ASL Compiler, version X2020:
10696
10697Memory allocation performance enhancement - over 24X compile time
10698improvement on large ASL files.  Parse nodes and namestring
10699buffers are now allocated from a large internal compiler buffer.
10700
10701The temporary .SRC file is deleted unless the "-s" option is
10702specified
10703
10704The "-d" debug output option now sends all output to the .DBG file
10705instead of the console.
10706
10707"External" second parameter is now optional
10708
10709"ElseIf" syntax now properly allows the predicate
10710
10711Last operand to "Load" now recognized as a Target operand
10712
10713Debug object can now be used anywhere as a normal object.
10714
10715ResourceTemplate now returns an object of type BUFFER
10716
10717EISAID now returns an object of type INTEGER
10718
10719"Index" now works with a STRING operand
10720
10721"LoadTable" now accepts optional parameters
10722
10723"ToString" length parameter is now optional
10724
10725"Interrupt (ResourceType," parse error fixed.
10726
10727"Register" with a user-defined region space parse error fixed
10728
10729Escaped backslash at the end of a string ("\\") scan/parse error
10730fixed
10731
10732"Revision" is now an object of type INTEGER.
10733
10734
10735
10736------------------------------------------
10737Summary of changes for this label: 05_02_01
10738
10739Linux:
10740
10741/proc/acpi/event now blocks properly.
10742
10743Removed /proc/sys/acpi. You can still dump your DSDT from
10744/proc/acpi/dsdt.
10745
10746 ACPI CA Core Subsystem:
10747
10748Fixed a problem introduced in the previous label where some of the
10749"small" resource descriptor types were not recognized.
10750
10751Improved error messages for the case where an ASL Field is outside
10752the range of the parent operation region.
10753
10754 ASL Compiler, version X2018:
10755
10756
10757Added error detection for ASL Fields that extend beyond the length
10758of the parent operation region (only if the length of the region
10759is known at compile time.)  This includes fields that have a
10760minimum access width that is smaller than the parent region, and
10761individual field units that are partially or entirely beyond the
10762extent of the parent.
10763
10764
10765
10766------------------------------------------
10767Summary of changes for this label: 04_27_01
10768
10769 ACPI CA Core Subsystem:
10770
10771Fixed a problem where the namespace mutex could be released at the
10772wrong time during execution of AcpiRemoveAddressSpaceHandler.
10773
10774Added optional thread ID output for debug traces, to simplify
10775debugging of multiple threads.  Added context switch notification
10776when the debug code realizes that a different thread is now
10777executing ACPI code.
10778
10779Some additional external data types have been prefixed with the
10780string "ACPI_" for consistency.  This may effect existing code.
10781The data types affected are the external callback typedefs - e.g.,
10782
10783WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
10784
10785 Linux:
10786
10787Fixed an issue with the OSL semaphore implementation where a
10788thread was waking up with an error from receiving a SIGCHLD
10789signal.
10790
10791Linux version of ACPI CA now uses the system C library for string
10792manipulation routines instead of a local implementation.
10793
10794Cleaned up comments and removed TBDs.
10795
10796 ASL Compiler, version X2017:
10797
10798Enhanced error detection and reporting for all file I/O
10799operations.
10800
10801 Documentation:
10802
10803Programmer Reference updated to version 1.06.
10804
10805
10806
10807------------------------------------------
10808Summary of changes for this label: 04_13_01
10809
10810 ACPI CA Core Subsystem:
10811
10812Restructured support for BufferFields and RegionFields.
10813BankFields support is now fully operational.  All known 32-bit
10814limitations on field sizes have been removed.  Both BufferFields
10815and (Operation) RegionFields are now supported by the same field
10816management code.
10817
10818Resource support now supports QWORD address and IO resources. The
1081916/32/64 bit address structures and the Extended IRQ structure
10820have been changed to properly handle Source Resource strings.
10821
10822A ThreadId of -1 is now used to indicate a "mutex not acquired"
10823condition internally and must never be returned by AcpiOsThreadId.
10824This reserved value was changed from 0 since Unix systems allow a
10825thread ID of 0.
10826
10827Linux:
10828
10829Driver code reorganized to enhance portability
10830
10831Added a kernel configuration option to control ACPI_DEBUG
10832
10833Fixed the EC driver to honor _GLK.
10834
10835ASL Compiler, version X2016:
10836
10837Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
10838address space was set to 0, not 0x7f as it should be.
10839
10840 ------------------------------------------
10841Summary of changes for this label: 03_13_01
10842
10843 ACPI CA Core Subsystem:
10844
10845During ACPI initialization, the _SB_._INI method is now run if
10846present.
10847
10848Notify handler fix - notifies are deferred until the parent method
10849completes execution.  This fixes the "mutex already acquired"
10850issue seen occasionally.
10851
10852Part of the "implicit conversion" rules in ACPI 2.0 have been
10853found to cause compatibility problems with existing ASL/AML.  The
10854convert "result-to-target-type" implementation has been removed
10855for stores to method Args and Locals.  Source operand conversion
10856is still fully implemented.  Possible changes to ACPI 2.0
10857specification pending.
10858
10859Fix to AcpiRsCalculatePciRoutingTableLength to return correct
10860length.
10861
10862Fix for compiler warnings for 64-bit compiles.
10863
10864 Linux:
10865
10866/proc output aligned for easier parsing.
10867
10868Release-version compile problem fixed.
10869
10870New kernel configuration options documented in Configure.help.
10871
10872IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
10873context" message.
10874
10875 OSPM:
10876
10877Power resource driver integrated with bus manager.
10878
10879Fixed kernel fault during active cooling for thermal zones.
10880
10881Source Code:
10882
10883The source code tree has been restructured.
10884
10885
10886
10887------------------------------------------
10888Summary of changes for this label: 03_02_01
10889
10890 Linux OS Services Layer (OSL):
10891
10892Major revision of all Linux-specific code.
10893
10894Modularized all ACPI-specific drivers.
10895
10896Added new thermal zone and power resource drivers.
10897
10898Revamped /proc interface (new functionality is under /proc/acpi).
10899
10900New kernel configuration options.
10901
10902 Linux known issues:
10903
10904New kernel configuration options not documented in Configure.help
10905yet.
10906
10907
10908Module dependencies not currently implemented. If used, they
10909should be loaded in this order: busmgr, power, ec, system,
10910processor, battery, ac_adapter, button, thermal.
10911
10912Modules will not load if CONFIG_MODVERSION is set.
10913
10914IBM 600E - entering S5 may reboot instead of shutting down.
10915
10916IBM 600E - Sleep button may generate "Invalid <NULL> context"
10917message.
10918
10919Some systems may fail with "execution mutex already acquired"
10920message.
10921
10922 ACPI CA Core Subsystem:
10923
10924Added a new OSL Interface, AcpiOsGetThreadId.  This was required
10925for the  deadlock detection code. Defined to return a non-zero, 32-
10926bit thread ID for the currently executing thread.  May be a non-
10927zero constant integer on single-thread systems.
10928
10929Implemented deadlock detection for internal subsystem mutexes.  We
10930may add conditional compilation for this code (debug only) later.
10931
10932ASL/AML Mutex object semantics are now fully supported.  This
10933includes multiple acquires/releases by owner and support for the
10934
10935Mutex SyncLevel parameter.
10936
10937A new "Force Release" mechanism automatically frees all ASL
10938Mutexes that have been acquired but not released when a thread
10939exits the interpreter.  This forces conformance to the ACPI spec
10940("All mutexes must be released when an invocation exits") and
10941prevents deadlocked ASL threads.  This mechanism can be expanded
10942(later) to monitor other resource acquisitions if OEM ASL code
10943continues to misbehave (which it will).
10944
10945Several new ACPI exception codes have been added for the Mutex
10946support.
10947
10948Recursive method calls are now allowed and supported (the ACPI
10949spec does in fact allow recursive method calls.)  The number of
10950recursive calls is subject to the restrictions imposed by the
10951SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
10952parameter.
10953
10954Implemented support for the SyncLevel parameter for control
10955methods (ACPI 2.0 feature)
10956
10957Fixed a deadlock problem when multiple threads attempted to use
10958the interpreter.
10959
10960Fixed a problem where the string length of a String package
10961element was not always set in a package returned from
10962AcpiEvaluateObject.
10963
10964Fixed a problem where the length of a String package element was
10965not always included in the length of the overall package returned
10966from AcpiEvaluateObject.
10967
10968Added external interfaces (Acpi*) to the ACPI debug memory
10969manager.  This manager keeps a list of all outstanding
10970allocations, and can therefore detect memory leaks and attempts to
10971free memory blocks more than once. Useful for code such as the
10972power manager, etc.  May not be appropriate for device drivers.
10973Performance with the debug code enabled is slow.
10974
10975The ACPI Global Lock is now an optional hardware element.
10976
10977 ASL Compiler Version X2015:
10978
10979Integrated changes to allow the compiler to be generated on
10980multiple platforms.
10981
10982Linux makefile added to generate the compiler on Linux
10983
10984 Source Code:
10985
10986All platform-specific headers have been moved to their own
10987subdirectory, Include/Platform.
10988
10989New source file added, Interpreter/ammutex.c
10990
10991New header file, Include/acstruct.h
10992
10993 Documentation:
10994
10995The programmer reference has been updated for the following new
10996interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
10997
10998 ------------------------------------------
10999Summary of changes for this label: 02_08_01
11000
11001Core ACPI CA Subsystem: Fixed a problem where an error was
11002incorrectly returned if the return resource buffer was larger than
11003the actual data (in the resource interfaces).
11004
11005References to named objects within packages are resolved to the
11006
11007full pathname string before packages are returned directly (via
11008the AcpiEvaluateObject interface) or indirectly via the resource
11009interfaces.
11010
11011Linux OS Services Layer (OSL):
11012
11013Improved /proc battery interface.
11014
11015
11016Added C-state debugging output and other miscellaneous fixes.
11017
11018ASL Compiler Version X2014:
11019
11020All defined method arguments can now be used as local variables,
11021including the ones that are not actually passed in as parameters.
11022The compiler tracks initialization of the arguments and issues an
11023exception if they are used without prior assignment (just like
11024locals).
11025
11026The -o option now specifies a filename prefix that is used for all
11027output files, including the AML output file.  Otherwise, the
11028default behavior is as follows:  1) the AML goes to the file
11029specified in the DSDT.  2) all other output files use the input
11030source filename as the base.
11031
11032 ------------------------------------------
11033Summary of changes for this label: 01_25_01
11034
11035Core ACPI CA Subsystem: Restructured the implementation of object
11036store support within the  interpreter.  This includes support for
11037the Store operator as well  as any ASL operators that include a
11038target operand.
11039
11040Partially implemented support for Implicit Result-to-Target
11041conversion. This is when a result object is converted on the fly
11042to the type of  an existing target object.  Completion of this
11043support is pending  further analysis of the ACPI specification
11044concerning this matter.
11045
11046CPU-specific code has been removed from the subsystem (hardware
11047directory).
11048
11049New Power Management Timer functions added
11050
11051Linux OS Services Layer (OSL): Moved system state transition code
11052to the core, fixed it, and modified  Linux OSL accordingly.
11053
11054Fixed C2 and C3 latency calculations.
11055
11056
11057We no longer use the compilation date for the version message on
11058initialization, but retrieve the version from AcpiGetSystemInfo().
11059
11060Incorporated for fix Sony VAIO machines.
11061
11062Documentation:  The Programmer Reference has been updated and
11063reformatted.
11064
11065
11066ASL Compiler:  Version X2013: Fixed a problem where the line
11067numbering and error reporting could get out  of sync in the
11068presence of multiple include files.
11069
11070 ------------------------------------------
11071Summary of changes for this label: 01_15_01
11072
11073Core ACPI CA Subsystem:
11074
11075Implemented support for type conversions in the execution of the
11076ASL  Concatenate operator (The second operand is converted to
11077match the type  of the first operand before concatenation.)
11078
11079Support for implicit source operand conversion is partially
11080implemented.   The ASL source operand types Integer, Buffer, and
11081String are freely  interchangeable for most ASL operators and are
11082converted by the interpreter  on the fly as required.  Implicit
11083Target operand conversion (where the  result is converted to the
11084target type before storing) is not yet implemented.
11085
11086Support for 32-bit and 64-bit BCD integers is implemented.
11087
11088Problem fixed where a field read on an aligned field could cause a
11089read  past the end of the field.
11090
11091New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
11092does not return a value, but the caller expects one.  (The ASL
11093compiler flags this as a warning.)
11094
11095ASL Compiler:
11096
11097Version X2011:
110981. Static typechecking of all operands is implemented. This
11099prevents the use of invalid objects (such as using a Package where
11100an Integer is required) at compile time instead of at interpreter
11101run-time.
111022. The ASL source line is printed with ALL errors and warnings.
111033. Bug fix for source EOF without final linefeed.
111044. Debug option is split into a parse trace and a namespace trace.
111055. Namespace output option (-n) includes initial values for
11106integers and strings.
111076. Parse-only option added for quick syntax checking.
111087. Compiler checks for duplicate ACPI name declarations
11109
11110Version X2012:
111111. Relaxed typechecking to allow interchangeability between
11112strings, integers, and buffers.  These types are now converted by
11113the interpreter at runtime.
111142. Compiler reports time taken by each internal subsystem in the
11115debug         output file.
11116
11117
11118 ------------------------------------------
11119Summary of changes for this label: 12_14_00
11120
11121ASL Compiler:
11122
11123This is the first official release of the compiler. Since the
11124compiler requires elements of the Core Subsystem, this label
11125synchronizes everything.
11126
11127------------------------------------------
11128Summary of changes for this label: 12_08_00
11129
11130
11131Fixed a problem where named references within the ASL definition
11132of both OperationRegions and CreateXXXFields did not work
11133properly.  The symptom was an AE_AML_OPERAND_TYPE during
11134initialization of the region/field. This is similar (but not
11135related internally) to the problem that was fixed in the last
11136label.
11137
11138Implemented both 32-bit and 64-bit support for the BCD ASL
11139functions ToBCD and FromBCD.
11140
11141Updated all legal headers to include "2000" in the copyright
11142years.
11143
11144 ------------------------------------------
11145Summary of changes for this label: 12_01_00
11146
11147Fixed a problem where method invocations within the ASL definition
11148of both OperationRegions and CreateXXXFields did not work
11149properly.  The symptom was an AE_AML_OPERAND_TYPE during
11150initialization of the region/field:
11151
11152  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
11153[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
11154(0x3005)
11155
11156Fixed a problem where operators with more than one nested
11157subexpression would fail.  The symptoms were varied, by mostly
11158AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
11159problem that has gone unnoticed until now.
11160
11161  Subtract (Add (1,2), Multiply (3,4))
11162
11163Fixed a problem where AcpiGetHandle didn't quite get fixed in the
11164previous build (The prefix part of a relative path was handled
11165incorrectly).
11166
11167Fixed a problem where Operation Region initialization failed if
11168the operation region name was a "namepath" instead of a simple
11169"nameseg". Symptom was an AE_NO_OPERAND error.
11170
11171Fixed a problem where an assignment to a local variable via the
11172indirect RefOf mechanism only worked for the first such
11173assignment.  Subsequent assignments were ignored.
11174
11175 ------------------------------------------
11176Summary of changes for this label: 11_15_00
11177
11178ACPI 2.0 table support with backwards support for ACPI 1.0 and the
111790.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
11180the AML  interpreter does NOT have support for the new 2.0 ASL
11181grammar terms at this time.
11182
11183All ACPI hardware access is via the GAS structures in the ACPI 2.0
11184FADT.
11185
11186All physical memory addresses across all platforms are now 64 bits
11187wide. Logical address width remains dependent on the platform
11188(i.e., "void *").
11189
11190AcpiOsMapMemory interface changed to a 64-bit physical address.
11191
11192The AML interpreter integer size is now 64 bits, as per the ACPI
111932.0 specification.
11194
11195For backwards compatibility with ACPI 1.0, ACPI tables with a
11196revision number less than 2 use 32-bit integers only.
11197
11198Fixed a problem where the evaluation of OpRegion operands did not
11199always resolve them to numbers properly.
11200
11201------------------------------------------
11202Summary of changes for this label: 10_20_00
11203
11204Fix for CBN_._STA issue.  This fix will allow correct access to
11205CBN_ OpRegions when the _STA returns 0x8.
11206
11207Support to convert ACPI constants (Ones, Zeros, One) to actual
11208values before a package object is returned
11209
11210Fix for method call as predicate to if/while construct causing
11211incorrect if/while behavior
11212
11213Fix for Else block package lengths sometimes calculated wrong (if
11214block > 63 bytes)
11215
11216Fix for Processor object length field, was always zero
11217
11218Table load abort if FACP sanity check fails
11219
11220Fix for problem with Scope(name) if name already exists
11221
11222Warning emitted if a named object referenced cannot be found
11223(resolved) during method execution.
11224
11225
11226
11227
11228
11229------------------------------------------
11230Summary of changes for this label: 9_29_00
11231
11232New table initialization interfaces: AcpiInitializeSubsystem no
11233longer has any parameters AcpiFindRootPointer - Find the RSDP (if
11234necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
11235>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
11236AcpiLoadTables
11237
11238Note: These interface changes require changes to all existing OSDs
11239
11240The PCI_Config default address space handler is always installed
11241at the root namespace object.
11242
11243-------------------------------------------
11244Summary of changes for this label: 09_15_00
11245
11246The new initialization architecture is implemented.  New
11247interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
11248AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
11249
11250(Namespace is automatically loaded when a table is loaded)
11251
11252The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1125352 bytes to 32 bytes.  There is usually one of these for every
11254namespace object, so the memory savings is significant.
11255
11256Implemented just-in-time evaluation of the CreateField operators.
11257
11258Bug fixes for IA-64 support have been integrated.
11259
11260Additional code review comments have been implemented
11261
11262The so-called "third pass parse" has been replaced by a final walk
11263through the namespace to initialize all operation regions (address
11264spaces) and fields that have not yet been initialized during the
11265execution of the various _INI and REG methods.
11266
11267New file - namespace/nsinit.c
11268
11269-------------------------------------------
11270Summary of changes for this label: 09_01_00
11271
11272Namespace manager data structures have been reworked to change the
11273primary  object from a table to a single object.  This has
11274resulted in dynamic memory  savings of 3X within the namespace and
112752X overall in the ACPI CA subsystem.
11276
11277Fixed problem where the call to AcpiEvFindPciRootBuses was
11278inadvertently left  commented out.
11279
11280Reduced the warning count when generating the source with the GCC
11281compiler.
11282
11283Revision numbers added to each module header showing the
11284SourceSafe version of the file.  Please refer to this version
11285number when giving us feedback or comments on individual modules.
11286
11287The main object types within the subsystem have been renamed to
11288clarify their  purpose:
11289
11290ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
11291ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
11292ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
11293
11294NOTE: no changes to the initialization sequence are included in
11295this label.
11296
11297-------------------------------------------
11298Summary of changes for this label: 08_23_00
11299
11300Fixed problem where TerminateControlMethod was being called
11301multiple times per  method
11302
11303Fixed debugger problem where single stepping caused a semaphore to
11304be  oversignalled
11305
11306Improved performance through additional parse object caching -
11307added  ACPI_EXTENDED_OP type
11308
11309-------------------------------------------
11310Summary of changes for this label: 08_10_00
11311
11312Parser/Interpreter integration:  Eliminated the creation of
11313complete parse trees  for ACPI tables and control methods.
11314Instead, parse subtrees are created and  then deleted as soon as
11315they are processed (Either entered into the namespace or  executed
11316by the interpreter).  This reduces the use of dynamic kernel
11317memory  significantly. (about 10X)
11318
11319Exception codes broken into classes and renumbered.  Be sure to
11320recompile all  code that includes acexcep.h.  Hopefully we won't
11321have to renumber the codes  again now that they are split into
11322classes (environment, programmer, AML code,  ACPI table, and
11323internal).
11324
11325Fixed some additional alignment issues in the Resource Manager
11326subcomponent
11327
11328Implemented semaphore tracking in the AcpiExec utility, and fixed
11329several places  where mutexes/semaphores were being unlocked
11330without a corresponding lock  operation.  There are no known
11331semaphore or mutex "leaks" at this time.
11332
11333Fixed the case where an ASL Return operator is used to return an
11334unnamed  package.
11335
11336-------------------------------------------
11337Summary of changes for this label: 07_28_00
11338
11339Fixed a problem with the way addresses were calculated in
11340AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
11341manifested itself when a Field was  created with WordAccess or
11342DwordAccess, but the field unit defined within the  Field was less
11343
11344than a Word or Dword.
11345
11346Fixed a problem in AmlDumpOperands() module's loop to pull
11347operands off of the  operand stack to display information. The
11348problem manifested itself as a TLB  error on 64-bit systems when
11349accessing an operand stack with two or more  operands.
11350
11351Fixed a problem with the PCI configuration space handlers where
11352context was  getting confused between accesses. This required a
11353change to the generic address  space handler and address space
11354setup definitions. Handlers now get both a  global handler context
11355(this is the one passed in by the user when executing
11356AcpiInstallAddressSpaceHandler() and a specific region context
11357that is unique to  each region (For example, the _ADR, _SEG and
11358_BBN values associated with a  specific region). The generic
11359function definitions have changed to the  following:
11360
11361typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
11362UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
11363*HandlerContext, // This used to be void *Context void
11364*RegionContext); // This is an additional parameter
11365
11366typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
11367RegionHandle, UINT32 Function, void *HandlerContext,  void
11368**RegionContext); // This used to be **ReturnContext
11369
11370-------------------------------------------
11371Summary of changes for this label: 07_21_00
11372
11373Major file consolidation and rename.  All files within the
11374interpreter have been  renamed as well as most header files.  This
11375was done to prevent collisions with  existing files in the host
11376OSs -- filenames such as "config.h" and "global.h"  seem to be
11377quite common.  The VC project files have been updated.  All
11378makefiles  will require modification.
11379
11380The parser/interpreter integration continues in Phase 5 with the
11381implementation  of a complete 2-pass parse (the AML is parsed
11382twice) for each table;  This  avoids the construction of a huge
11383parse tree and therefore reduces the amount of  dynamic memory
11384required by the subsystem.  Greater use of the parse object cache
11385means that performance is unaffected.
11386
11387Many comments from the two code reviews have been rolled in.
11388
11389The 64-bit alignment support is complete.
11390
11391-------------------------------------------
11392Summary of changes for this label: 06_30_00
11393
11394With a nod and a tip of the hat to the technology of yesteryear,
11395we've added  support in the source code for 80 column output
11396devices.  The code is now mostly  constrained to 80 columns or
11397less to support environments and editors that 1)  cannot display
11398or print more than 80 characters on a single line, and 2) cannot
11399disable line wrapping.
11400
11401A major restructuring of the namespace data structure has been
11402completed.  The  result is 1) cleaner and more
11403understandable/maintainable code, and 2) a  significant reduction
11404in the dynamic memory requirement for each named ACPI  object
11405(almost half).
11406
11407-------------------------------------------
11408Summary of changes for this label: 06_23_00
11409
11410Linux support has been added.  In order to obtain approval to get
11411the ACPI CA  subsystem into the Linux kernel, we've had to make
11412quite a few changes to the  base subsystem that will affect all
11413users (all the changes are generic and OS- independent).  The
11414effects of these global changes have been somewhat far  reaching.
11415Files have been merged and/or renamed and interfaces have been
11416renamed.   The major changes are described below.
11417
11418Osd* interfaces renamed to AcpiOs* to eliminate namespace
11419pollution/confusion  within our target kernels.  All OSD
11420interfaces must be modified to match the new  naming convention.
11421
11422Files merged across the subsystem.  A number of the smaller source
11423and header  files have been merged to reduce the file count and
11424increase the density of the  existing files.  There are too many
11425to list here.  In general, makefiles that  call out individual
11426files will require rebuilding.
11427
11428Interpreter files renamed.  All interpreter files now have the
11429prefix am*  instead of ie* and is*.
11430
11431Header files renamed:  The acapi.h file is now acpixf.h.  The
11432acpiosd.h file is  now acpiosxf.h.  We are removing references to
11433the acronym "API" since it is  somewhat windowsy. The new name is
11434"external interface" or xface or xf in the  filenames.j
11435
11436
11437All manifest constants have been forced to upper case (some were
11438mixed case.)   Also, the string "ACPI_" has been prepended to many
11439(not all) of the constants,  typedefs, and structs.
11440
11441The globals "DebugLevel" and "DebugLayer" have been renamed
11442"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
11443
11444All other globals within the subsystem are now prefixed with
11445"AcpiGbl_" Internal procedures within the subsystem are now
11446prefixed with "Acpi" (with only  a few exceptions).  The original
11447two-letter abbreviation for the subcomponent  remains after "Acpi"
11448- for example, CmCallocate became AcpiCmCallocate.
11449
11450Added a source code translation/conversion utility.  Used to
11451generate the Linux  source code, it can be modified to generate
11452other types of source as well. Can  also be used to cleanup
11453existing source by removing extraneous spaces and blank  lines.
11454Found in tools/acpisrc/*
11455
11456OsdUnMapMemory was renamed to OsdUnmapMemory and then
11457AcpiOsUnmapMemory.  (UnMap  became Unmap).
11458
11459A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
11460When set to  one, this indicates that the caller wants to use the
11461
11462semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
11463both types.  However, implementers of this  call may want to use
11464different OS primitives depending on the type of semaphore
11465requested.  For example, some operating systems provide separate
11466
11467"mutex" and  "semaphore" interfaces - where the mutex interface is
11468much faster because it  doesn't have all the overhead of a full
11469semaphore implementation.
11470
11471Fixed a deadlock problem where a method that accesses the PCI
11472address space can  block forever if it is the first access to the
11473space.
11474
11475-------------------------------------------
11476Summary of changes for this label: 06_02_00
11477
11478Support for environments that cannot handle unaligned data
11479accesses (e.g.  firmware and OS environments devoid of alignment
11480handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
11481been added (via configurable macros) in  these three areas: -
11482Transfer of data from the raw AML byte stream is done via byte
11483moves instead of    word/dword/qword moves. - External objects are
11484aligned within the user buffer, including package   elements (sub-
11485objects). - Conversion of name strings to UINT32 Acpi Names is now
11486done byte-wise.
11487
11488The Store operator was modified to mimic Microsoft's
11489implementation when storing  to a Buffer Field.
11490
11491Added a check of the BM_STS bit before entering C3.
11492
11493The methods subdirectory has been obsoleted and removed.  A new
11494file, cmeval.c  subsumes the functionality.
11495
11496A 16-bit (DOS) version of AcpiExec has been developed.  The
11497makefile is under  the acpiexec directory.
11498