changes.txt revision 281075
1----------------------------------------
204 February 2015. Summary of changes for version 20150204:
3
4This release is available at https://acpica.org/downloads
5
6ACPICA kernel-resident subsystem:
7
8Updated all ACPICA copyrights and signons to 2014. Added the 2014 
9copyright to all module headers and signons, including the standard Linux 
10header. This affects virtually every file in the ACPICA core subsystem, 
11iASL compiler, all ACPICA utilities, and the test suites.
12
13Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
14A raw gpe handling mechanism was created to allow better handling of GPE
15storms that aren't easily managed by the normal handler. The raw handler
16allows disabling/renabling of the the GPE so that interrupt storms can be
17avoided in cases where events cannot be timely serviced. In this scenario,
18handlers should use the AcpiSetGpe() API to disable/enable the GPE. This API
19will leave the reference counts undisturbed, thereby preventing unintentional
20clearing of the GPE when the intent in only to temporarily disable it. Raw
21handlers allow enabling and disabling of a GPE by removing GPE register
22locking. As such, raw handlers much provide their own locks while using
23GPE API's to protect access to GPE data structures.
24Lv Zheng
25
26Events: Always modify GPE registers under the GPE lock.
27Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
28values. Reported as bug by joe.liu@apple.com.
29
30Unix makefiles: Separate option to disable optimizations and _FORTIFY_SOURCE.
31This change removes the _FORTIFY_SOURCE flag from the NOOPT disable option and
32creates a separate flag (NOFORTIFY) for this purpose. Some toolchains may
33define _FORTIFY_SOURCE which leads redefined errors when building ACPICA. This
34allows disabling the option without also having to disable optimazations.
35David Box
36
37  Current Release:
38    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
39    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
40
41----------------------------------------
4207 November 2014. Summary of changes for version 20141107:
43
44This release is available at https://acpica.org/downloads
45
46This release introduces and implements language extensions to ASL that 
47provide support for symbolic ("C-style") operators and expressions. These 
48language extensions are known collectively as ASL+.
49
50
511) iASL Compiler/Disassembler and Tools:
52
53Disassembler: Fixed a problem with disassembly of the UartSerialBus 
54macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 
55Box.
56
57Disassembler: Fixed the Unicode macro support to add escape sequences. 
58All non-printable ASCII values are emitted as escape sequences, as well 
59as the standard escapes for quote and backslash. Ensures that the 
60disassembled macro can be correctly recompiled.
61
62iASL: Added Printf/Fprintf macros for formatted output. These macros are 
63translated to existing AML Concatenate and Store operations. Printf 
64writes to the ASL Debug object. Fprintf allows the specification of an 
65ASL name as the target. Only a single format specifier is required, %o, 
66since the AML interpreter dynamically converts objects to the required 
67type. David E. Box.
68
69    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
70                 (Concatenate (Concatenate (Concatenate ("", Arg0),
71                 ": Unexpected value for "), Arg1), ", "), Arg2),
72                 " at line "), Arg3), Debug)
73
74    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
75                 Arg0, Arg1, Arg2, Arg3)
76
77    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
78                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
79
80    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
81
82iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 
83ASL parse tree before the AML code is generated. This allows blocks of 
84ASL code to be removed in order to help locate and identify problem 
85devices and/or code. David E. Box.
86
87AcpiExec: Added support (-fi) for an optional namespace object 
88initialization file. This file specifies initial values for namespace 
89objects as necessary for debugging and testing different ASL code paths 
90that may be taken as a result of BIOS options.
91
92
932) Overview of symbolic operator support for ASL (ASL+)
94-------------------------------------------------------
95
96As an extension to the ASL language, iASL implements support for symbolic 
97(C-style) operators for math and logical expressions. This can greatly 
98simplify ASL code as well as improve both readability and 
99maintainability. These language extensions can exist concurrently with 
100all legacy ASL code and expressions.
101
102The symbolic extensions are 100% compatible with existing AML 
103interpreters, since no new AML opcodes are created. To implement the 
104extensions, the iASL compiler transforms the symbolic expressions into 
105the legacy ASL/AML equivalents at compile time.
106
107Full symbolic expressions are supported, along with the standard C 
108precedence and associativity rules.
109
110Full disassembler support for the symbolic expressions is provided, and 
111creates an automatic migration path for existing ASL code to ASL+ code 
112via the disassembly process. By default, the disassembler now emits ASL+ 
113code with symbolic expressions. An option (-dl) is provided to force the 
114disassembler to emit legacy ASL code if desired.
115
116Below is the complete list of the currently supported symbolic operators 
117with examples. See the iASL User Guide for additional information.
118
119
120ASL+ Syntax      Legacy ASL Equivalent
121-----------      ---------------------
122
123    // Math operators
124
125Z = X + Y        Add (X, Y, Z)
126Z = X - Y        Subtract (X, Y, Z)
127Z = X * Y        Multiply (X, Y, Z)
128Z = X / Y        Divide (X, Y, , Z)
129Z = X % Y        Mod (X, Y, Z)
130Z = X << Y       ShiftLeft (X, Y, Z)
131Z = X >> Y       ShiftRight (X, Y, Z)
132Z = X & Y        And (X, Y, Z)
133Z = X | Y        Or (X, Y, Z)
134Z = X ^ Y        Xor (X, Y, Z)
135Z = ~X           Not (X, Z)
136X++              Increment (X)
137X--              Decrement (X)
138
139    // Logical operators
140
141(X == Y)         LEqual (X, Y)
142(X != Y)         LNotEqual (X, Y)
143(X < Y)          LLess (X, Y)
144(X > Y)          LGreater (X, Y)
145(X <= Y)         LLessEqual (X, Y)
146(X >= Y)         LGreaterEqual (X, Y)
147(X && Y)         LAnd (X, Y)
148(X || Y)         LOr (X, Y)
149(!X)             LNot (X)
150
151    // Assignment and compound assignment operations
152
153X = Y           Store (Y, X)
154X += Y          Add (X, Y, X)
155X -= Y          Subtract (X, Y, X)
156X *= Y          Multiply (X, Y, X)
157X /= Y          Divide (X, Y, , X)
158X %= Y          Mod (X, Y, X)
159X <<= Y         ShiftLeft (X, Y, X)
160X >>= Y         ShiftRight (X, Y, X)
161X &= Y          And (X, Y, X)
162X |= Y          Or (X, Y, X)
163X ^= Y          Xor (X, Y, X)
164
165
1663) ASL+ Examples:
167-----------------
168
169Legacy ASL:
170        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
171            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 
1720x03FB), 
173            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
174        {
175            And (MEMB, 0xFFFFFFF0, SRMB)
176            Store (MEMB, Local2)
177            Store (PDBM, Local1)
178            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
179            Store (SRMB, MEMB)
180            Or (PDBM, 0x02, PDBM)
181        }
182
183ASL+ version:
184        If (((R510 & 0x03FB) == 0x02E0) ||
185            ((R520 & 0x03FB) == 0x02E0) ||
186            ((R530 & 0x03FB) == 0x02E0) || 
187            ((R540 & 0x03FB) == 0x02E0))
188        {
189            SRMB = (MEMB & 0xFFFFFFF0)
190            Local2 = MEMB
191            Local1 = PDBM
192            PDBM &= 0xFFFFFFFFFFFFFFF9
193            MEMB = SRMB
194            PDBM |= 0x02
195        }
196
197Legacy ASL:
198        Store (0x1234, Local1)
199        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
200        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
201        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
202        Store (Index (PKG1, 0x03), Local6)
203        Store (Add (Local3, Local2), Debug)
204        Add (Local1, 0x0F, Local2)
205        Add (Local1, Multiply (Local2, Local3), Local2)
206        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
207
208ASL+ version:
209        Local1 = 0x1234
210        Local3 = (((Local1 + TEST) + 0x20) * Local2)
211        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
212        Local3 = (Local1 + (TEST + (0x20 * Local2)))
213        Local6 = Index (PKG1, 0x03)
214        Debug = (Local3 + Local2)
215        Local2 = (Local1 + 0x0F)
216        Local2 = (Local1 + (Local2 * Local3))
217        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
218
219
220----------------------------------------
22126 September 2014. Summary of changes for version 20140926:
222
2231) ACPICA kernel-resident subsystem:
224
225Updated the GPIO operation region handler interface (GeneralPurposeIo). 
226In order to support GPIO Connection objects with multiple pins, along 
227with the related Field objects, the following changes to the interface 
228have been made: The Address is now defined to be the offset in bits of 
229the field unit from the previous invocation of a Connection. It can be 
230viewed as a "Pin Number Index" into the connection resource descriptor. 
231The BitWidth is the exact bit width of the field. It is usually one bit, 
232but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 
233additional information and examples.
234
235GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 
236corresponding _Lxx/_Exx methods are disabled (they may have been enabled 
237by the firmware), so that they cannot fire until they are enabled via 
238AcpiUpdateAllGpes. Rafael J. Wysocki.
239
240Added a new return flag for the Event/GPE status interfaces -- 
241AcpiGetEventStatus and AcpiGetGpeStatus. The new 
242ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 
243GPE currently has a handler associated with it, and can thus actually 
244affect the system. Lv Zheng.
245
246Example Code and Data Size: These are the sizes for the OS-independent 
247acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
248debug version of the code includes the debug output trace mechanism and 
249has a much larger code and data size.
250
251  Current Release:
252    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
253    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
254  Previous Release:
255    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
256    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
257
2582) iASL Compiler/Disassembler and Tools:
259
260iASL: Fixed a memory allocation/free regression introduced in 20140828 
261that could cause the compiler to crash. This was introduced inadvertently 
262during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 
2631113.
264
265iASL: Removed two error messages that have been found to create false 
266positives, until they can be fixed and fully validated (ACPICA BZ 1112):
2671) Illegal forward reference within a method
2682) Illegal reference across two methods
269
270iASL: Implemented a new option (-lm) to create a hardware mapping file 
271that summarizes all GPIO, I2C, SPI, and UART connections. This option 
272works for both the compiler and disassembler. See the iASL compiler user 
273guide for additional information and examples (section 6.4.6).
274
275AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 
276version 2. This corrects the AE_BAD_HEADER exception seen on systems with 
277a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
278
279AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 
280unless STDIN is actually a terminal. Assists with batch-mode processing. 
281ACPICA BZ 1114.
282
283Disassembler/AcpiHelp: Added another large group of recognized _HID 
284values.
285
286
287----------------------------------------
28828 August 2014. Summary of changes for version 20140828:
289
2901) ACPICA kernel-resident subsystem:
291
292Fixed a problem related to the internal use of the Timer() operator where 
293a 64-bit divide could cause an attempted link to a double-precision math 
294library. This divide is not actually necessary, so the code was 
295restructured to eliminate it. Lv Zheng.
296
297ACPI 5.1: Added support for the runtime validation of the _DSD package 
298(similar to the iASL support).
299
300ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 
301SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
302
303Example Code and Data Size: These are the sizes for the OS-independent 
304acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
305debug version of the code includes the debug output trace mechanism and 
306has a much larger code and data size.
307
308  Current Release:
309    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
310    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
311  Previous Release:
312    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
313    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
314
3152) iASL Compiler/Disassembler and Tools:
316
317AcpiExec: Fixed a problem on unix systems where the original terminal 
318state was not always properly restored upon exit. Seen when using the -v 
319option. ACPICA BZ 1104.
320
321iASL: Fixed a problem with the validation of the ranges/length within the 
322Memory24 resource descriptor. There was a boundary condition when the 
323range was equal to the (length -1) caused by the fact that these values 
324are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
325
326Disassembler: Fixed a problem with the GpioInt descriptor interrupt 
327polarity 
328flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 
329is 
330now supported properly.
331
332ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 
333in the disassembler, data table compiler, and table template generator.
334
335iASL: Added a requirement for Device() objects that one of either a _HID 
336or _ADR must exist within the scope of a Device, as per the ACPI 
337specification. Remove a similar requirement that was incorrectly in place 
338for the _DSD object.
339
340iASL: Added error detection for illegal named references within control 
341methods that would cause runtime failures. Now trapped as errors are: 1) 
342References to objects within a non-parent control method. 2) Forward 
343references (within a method) -- for control methods, AML interpreters use 
344a one-pass parse of control methods. ACPICA BZ 1008.
345
346iASL: Added error checking for dependencies related to the _PSx power 
347methods. ACPICA BZ 1029.
3481) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 
349_PS3.
3502) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 
351scope.
352
353iASL and table compiler: Cleanup miscellaneous memory leaks by fully 
354deploying the existing object and string caches and adding new caches for 
355the table compiler.
356
357iASL: Split the huge parser source file into multiple subfiles to improve 
358manageability. Generation now requires the M4 macro preprocessor, which 
359is part of the Bison distribution on both unix and windows platforms.
360
361AcpiSrc: Fixed and removed all extraneous warnings generated during 
362entire ACPICA source code scan and/or conversion.
363
364
365----------------------------------------
366
36724 July 2014. Summary of changes for version 20140724: 
368
369The ACPI 5.1 specification has been released and is available at: 
370http://uefi.org/specs/access
371
372
3730) ACPI 5.1 support in ACPICA:
374
375ACPI 5.1 is fully supported in ACPICA as of this release.
376
377New predefined names. Support includes iASL and runtime ACPICA 
378validation.
379    _CCA (Cache Coherency Attribute).
380    _DSD (Device-Specific Data). David Box.
381
382Modifications to existing ACPI tables. Support includes headers, iASL 
383Data Table compiler, disassembler, and the template generator.
384    FADT - New fields and flags. Graeme Gregory.
385    GTDT - One new subtable and new fields. Tomasz Nowicki.
386    MADT - Two new subtables. Tomasz Nowicki.
387    PCCT - One new subtable.
388
389Miscellaneous.
390    New notification type for System Resource Affinity change events.
391
392
3931) ACPICA kernel-resident subsystem:
394
395Fixed a regression introduced in 20140627 where a fault can happen during 
396the deletion of Alias AML namespace objects. The problem affected both 
397the core ACPICA and the ACPICA tools including iASL and AcpiExec.
398
399Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 
400simple mechanism to enable wake GPEs that have no associated handler or 
401control method. Rafael Wysocki.
402
403Updated the AcpiEnableGpe interface to disallow the enable if there is no 
404handler or control method associated with the particular GPE. This will 
405help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
406
407Updated GPE handling and dispatch by disabling the GPE before clearing 
408the status bit for edge-triggered GPEs. Lv Zheng.
409
410Added Timer() support to the AML Debug object. The current timer value is 
411now displayed with each invocation of (Store to) the debug object to 
412enable simple generation of execution times for AML code (method 
413execution for example.) ACPICA BZ 1093.
414
415Example Code and Data Size: These are the sizes for the OS-independent 
416acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
417debug version of the code includes the debug output trace mechanism and 
418has a much larger code and data size.
419
420  Current Release:
421    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
422    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
423  Previous Release:
424    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
425    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
426
427
4282) iASL Compiler/Disassembler and Tools:
429
430Fixed an issue with the recently added local printf implementation, 
431concerning width/precision specifiers that could cause incorrect output. 
432Lv Zheng. ACPICA BZ 1094.
433
434Disassembler: Added support to detect buffers that contain UUIDs and 
435disassemble them to an invocation of the ToUUID operator. Also emit 
436commented descriptions of known ACPI-related UUIDs.
437
438AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 
439-u. Adds three new files. 
440
441iASL: Update table compiler and disassembler for DMAR table changes that 
442were introduced in September 2013. With assistance by David Woodhouse.
443
444----------------------------------------
44527 June 2014. Summary of changes for version 20140627:
446
4471) ACPICA kernel-resident subsystem:
448
449Formatted Output: Implemented local versions of standard formatted output 
450utilities such as printf, etc. Over time, it has been discovered that 
451there are in fact many portability issues with printf, and the addition 
452of this feature will fix/prevent these issues once and for all. Some 
453known issues are summarized below:
454
4551) Output of 64-bit values is not portable. For example, UINT64 is %ull 
456for the Linux kernel and is %uI64 for some MSVC versions.
4572) Invoking printf consistently in a manner that is portable across both 
45832-bit and 64-bit platforms is difficult at best in many situations.
4593) The output format for pointers varies from system to system (leading 
460zeros especially), and leads to inconsistent output from ACPICA across 
461platforms.
4624) Certain platform-specific printf formats may conflict with ACPICA use.
4635) If there is no local C library available, ACPICA now has local support 
464for printf.
465
466-- To address these printf issues in a complete manner, ACPICA now 
467directly implements a small subset of printf format specifiers, only 
468those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
469
470Implemented support for ACPICA generation within the EFI environment. 
471Initially, the AcpiDump utility is supported in the UEFI shell 
472environment. Lv Zheng.
473
474Added a new external interface, AcpiLogError, to improve ACPICA 
475portability. This allows the host to redirect error messages from the 
476ACPICA utilities. Lv Zheng.
477
478Added and deployed new OSL file I/O interfaces to improve ACPICA 
479portability:
480  AcpiOsOpenFile
481  AcpiOsCloseFile
482  AcpiOsReadFile
483  AcpiOsWriteFile
484  AcpiOsGetFileOffset
485  AcpiOsSetFileOffset
486There are C library implementations of these functions in the new file 
487service_layers/oslibcfs.c -- however, the functions can be implemented by 
488the local host in any way necessary. Lv Zheng.
489
490Implemented a mechanism to disable/enable ACPI table checksum validation 
491at runtime. This can be useful when loading tables very early during OS 
492initialization when it may not be possible to map the entire table in 
493order to compute the checksum. Lv Zheng.
494
495Fixed a buffer allocation issue for the Generic Serial Bus support. 
496Originally, a fixed buffer length was used. This change allows for 
497variable-length buffers based upon the protocol indicated by the field 
498access attributes. Reported by Lan Tianyu. Lv Zheng.
499
500Fixed a problem where an object detached from a namespace node was not 
501properly terminated/cleared and could cause a circular list problem if 
502reattached. ACPICA BZ 1063. David Box.
503
504Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
505
506Fixed a possible memory leak in an error return path within the function 
507AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
508
509Example Code and Data Size: These are the sizes for the OS-independent 
510acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
511debug version of the code includes the debug output trace mechanism and 
512has a much larger code and data size.
513
514  Current Release:
515    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
516    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
517  Previous Release:
518    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
519    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
520
521
5222) iASL Compiler/Disassembler and Tools:
523
524Disassembler: Add dump of ASCII equivalent text within a comment at the 
525end of each line of the output for the Buffer() ASL operator.
526
527AcpiDump: Miscellaneous changes:
528  Fixed repetitive table dump in -n mode.
529  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 
530the ACPI 2.0 GUID fails.
531
532iASL: Fixed a problem where the compiler could fault if incorrectly given 
533an acpidump output file as input. ACPICA BZ 1088. David Box.
534
535AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 
536they are invoked without any arguments.
537
538Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 
5391086. Colin Ian King.
540
541Disassembler: Cleaned up a block of code that extracts a parent Op 
542object. Added a comment that explains that the parent is guaranteed to be 
543valid in this case. ACPICA BZ 1069.
544
545----------------------------------------
54624 April 2014. Summary of changes for version 20140424:
547
5481) ACPICA kernel-resident subsystem:
549
550Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 
551Some of these tables are known to contain a trailing NULL entry. Lv 
552Zheng.
553
554Removed an extraneous error message for the case where there are a large 
555number of system GPEs (> 124). This was the "32-bit FADT register is too 
556long to convert to GAS struct" message, which is irrelevant for GPEs 
557since the GPEx_BLK_LEN fields of the FADT are always used instead of the 
558(limited capacity) GAS bit length. Also, several changes to ensure proper 
559support for GPE numbers > 255, where some "GPE number" fields were 8-bits 
560internally.
561
562Implemented and deployed additional configuration support for the public 
563ACPICA external interfaces. Entire classes of interfaces can now be 
564easily modified or configured out, replaced by stubbed inline functions 
565by default. Lv Zheng.
566
567Moved all public ACPICA runtime configuration globals to the public 
568ACPICA external interface file for convenience. Also, removed some 
569obsolete/unused globals. See the file acpixf.h. Lv Zheng.
570
571Documentation: Added a new section to the ACPICA reference describing the 
572maximum number of GPEs that can be supported by the FADT-defined GPEs in 
573block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 
574reference.
575
576Example Code and Data Size: These are the sizes for the OS-independent 
577acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
578debug version of the code includes the debug output trace mechanism and 
579has a much larger code and data size.
580
581  Current Release:
582    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
583    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
584  Previous Release:
585    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
586    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
587
588
5892) iASL Compiler/Disassembler and Tools:
590
591iASL and disassembler: Add full support for the LPIT table (Low Power 
592Idle Table). Includes support in the disassembler, data table compiler, 
593and template generator.
594
595AcpiDump utility:
5961) Add option to force the use of the RSDT (over the XSDT).
5972) Improve validation of the RSDP signature (use 8 chars instead of 4).
598
599iASL: Add check for predefined packages that are too large.  For 
600predefined names that contain subpackages, check if each subpackage is 
601too large. (Check for too small already exists.)
602
603Debugger: Updated the GPE command (which simulates a GPE by executing the 
604GPE code paths in ACPICA). The GPE device is now optional, and defaults 
605to the GPE 0/1 FADT-defined blocks.
606
607Unix application OSL: Update line-editing support. Add additional error 
608checking and take care not to reset terminal attributes on exit if they 
609were never set. This should help guarantee that the terminal is always 
610left in the previous state on program exit.
611
612----------------------------------------
61325 March 2014. Summary of changes for version 20140325:
614
6151) ACPICA kernel-resident subsystem:
616
617Updated the auto-serialize feature for control methods. This feature 
618automatically serializes all methods that create named objects in order 
619to prevent runtime errors. The update adds support to ignore the 
620currently executing AML SyncLevel when invoking such a method, in order 
621to prevent disruption of any existing SyncLevel priorities that may exist 
622in the AML code. Although the use of SyncLevels is relatively rare, this 
623change fixes a regression where an AE_AML_MUTEX_ORDER exception can 
624appear on some machines starting with the 20140214 release.
625
626Added a new external interface to allow the host to install ACPI tables 
627very early, before the namespace is even created. AcpiInstallTable gives 
628the host additional flexibility for ACPI table management. Tables can be 
629installed directly by the host as if they had originally appeared in the 
630XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 
631(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 
632with additional internal restructuring and cleanup. See the ACPICA 
633Reference for interface details. Lv Zheng.
634
635Added validation of the checksum for all incoming dynamically loaded 
636tables (via external interfaces or via AML Load/LoadTable operators). Lv 
637Zheng.
638
639Updated the use of the AcpiOsWaitEventsComplete interface during Notify 
640and GPE handler removal. Restructured calls to eliminate possible race 
641conditions. Lv Zheng.
642
643Added a warning for the use/execution of the ASL/AML Unload (table) 
644operator. This will help detect and identify machines that use this 
645operator if and when it is ever used. This operator has never been seen 
646in the field and the usage model and possible side-effects of the drastic 
647runtime action of a full table removal are unknown.
648
649Reverted the use of #pragma push/pop which was introduced in the 20140214 
650release. It appears that push and pop are not implemented by enough 
651compilers to make the use of this feature feasible for ACPICA at this 
652time. However, these operators may be deployed in a future ACPICA 
653release.
654
655Added the missing EXPORT_SYMBOL macros for the install and remove SCI 
656handler interfaces.
657
658Source code generation:
6591) Disabled the use of the "strchr" macro for the gcc-specific 
660generation. For some versions of gcc, this macro can periodically expose 
661a compiler bug which in turn causes compile-time error(s).
6622) Added support for PPC64 compilation. Colin Ian King.
663
664Example Code and Data Size: These are the sizes for the OS-independent 
665acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
666debug version of the code includes the debug output trace mechanism and 
667has a much larger code and data size.
668
669  Current Release:
670    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
671    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
672  Previous Release:
673    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
674    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
675
676
6772) iASL Compiler/Disassembler and Tools:
678
679Disassembler: Added several new features to improve the readability of 
680the resulting ASL code. Extra information is emitted within comment 
681fields in the ASL code:
6821) Known _HID/_CID values are decoded to descriptive text.
6832) Standard values for the Notify() operator are decoded to descriptive 
684text.
6853) Target operands are expanded to full pathnames (in a comment) when 
686possible.
687
688Disassembler: Miscellaneous updates for extern() handling:
6891) Abort compiler if file specified by -fe option does not exist.
6902) Silence unnecessary warnings about argument count mismatches.
6913) Update warning messages concerning unresolved method externals.
6924) Emit "UnknownObj" keyword for externals whose type cannot be 
693determined.
694
695AcpiHelp utility:
6961) Added the -a option to display both the ASL syntax and the AML 
697encoding for an input ASL operator. This effectively displays all known 
698information about an ASL operator with one AcpiHelp invocation.
6992) Added substring match support (similar to a wildcard) for the -i 
700(_HID/PNP IDs) option.
701
702iASL/Disassembler: Since this tool does not yet support execution on big-
703endian machines, added detection of endianness and an error message if 
704execution is attempted on big-endian. Support for big-endian within iASL 
705is a feature that is on the ACPICA to-be-done list.
706
707AcpiBin utility:
7081) Remove option to extract binary files from an acpidump; this function 
709is made obsolete by the AcpiXtract utility.
7102) General cleanup of open files and allocated buffers.
711
712----------------------------------------
71314 February 2014. Summary of changes for version 20140214:
714
7151) ACPICA kernel-resident subsystem:
716
717Implemented a new mechanism to proactively prevent problems with ill-
718behaved reentrant control methods that create named ACPI objects. This 
719behavior is illegal as per the ACPI specification, but is nonetheless 
720frequently seen in the field. Previously, this could lead to an 
721AE_ALREADY_EXISTS exception if the method was actually entered by more 
722than one thread. This new mechanism detects such methods at table load 
723time and marks them "serialized" to prevent reentrancy. A new global 
724option, AcpiGbl_AutoSerializeMethods, has been added to disable this 
725feature if desired. This mechanism and global option obsoletes and 
726supersedes the previous AcpiGbl_SerializeAllMethods option.
727
728Added the "Windows 2013" string to the _OSI support. ACPICA will now 
729respond TRUE to _OSI queries with this string. It is the stated policy of 
730ACPICA to add new strings to the _OSI support as soon as possible after 
731they are defined. See the full ACPICA _OSI policy which has been added to 
732the utilities/utosi.c file.
733
734Hardened/updated the _PRT return value auto-repair code:
7351) Do not abort the repair on a single subpackage failure, continue to 
736check all subpackages.
7372) Add check for the minimum subpackage length (4).
7383) Properly handle extraneous NULL package elements.
739
740Added support to avoid the possibility of infinite loops when traversing 
741object linked lists. Never allow an infinite loop, even in the face of 
742corrupted object lists.
743
744ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 
745pack(pop) directives to ensure that the ACPICA headers are independent of 
746compiler settings or other host headers.
747
748Example Code and Data Size: These are the sizes for the OS-independent 
749acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
750debug version of the code includes the debug output trace mechanism and 
751has a much larger code and data size.
752
753  Current Release:
754    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
755    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
756  Previous Release:
757    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
758    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
759
760
7612) iASL Compiler/Disassembler and Tools:
762
763iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 
764first reserved field was incorrectly forced to have a value of zero. This 
765change correctly forces the field to have a value of one. ACPICA BZ 1081.
766
767Debugger: Added missing support for the "Extra" and "Data" subobjects 
768when displaying object data.
769
770Debugger: Added support to display entire object linked lists when 
771displaying object data.
772
773iASL: Removed the obsolete -g option to obtain ACPI tables from the 
774Windows registry. This feature has been superseded by the acpidump 
775utility. 
776
777----------------------------------------
77814 January 2014. Summary of changes for version 20140114:
779
7801) ACPICA kernel-resident subsystem:
781
782Updated all ACPICA copyrights and signons to 2014. Added the 2014 
783copyright to all module headers and signons, including the standard Linux 
784header. This affects virtually every file in the ACPICA core subsystem, 
785iASL compiler, all ACPICA utilities, and the test suites.
786
787Improved parameter validation for AcpiInstallGpeBlock. Added the 
788following checks:
7891) The incoming device handle refers to type ACPI_TYPE_DEVICE.
7902) There is not already a GPE block attached to the device.
791Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 
792device.
793
794Correctly support "references" in the ACPI_OBJECT. This change fixes the 
795support to allow references (namespace nodes) to be passed as arguments 
796to control methods via the evaluate object interface. This is probably 
797most useful for testing purposes, however.
798
799Improved support for 32/64 bit physical addresses in printf()-like 
800output. This change improves the support for physical addresses in printf 
801debug statements and other output on both 32-bit and 64-bit hosts. It 
802consistently outputs the appropriate number of bytes for each host. The 
803%p specifier is unsatisfactory since it does not emit uniform output on 
804all hosts/clib implementations (on some, leading zeros are not supported, 
805leading to difficult-to-read output).
806
807Example Code and Data Size: These are the sizes for the OS-independent 
808acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
809debug version of the code includes the debug output trace mechanism and 
810has a much larger code and data size.
811
812  Current Release:
813    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
814    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
815  Previous Release:
816    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
817    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
818
819
8202) iASL Compiler/Disassembler and Tools:
821
822iASL: Fix a possible fault when using the Connection() operator. Fixes a 
823problem if the parent Field definition for the Connection operator refers 
824to an operation region that does not exist. ACPICA BZ 1064.
825
826AcpiExec: Load of local test tables is now optional. The utility has the 
827capability to load some various tables to test features of ACPICA. 
828However, there are enough of them that the output of the utility became 
829confusing. With this change, only the required local tables are displayed 
830(RSDP, XSDT, etc.) along with the actual tables loaded via the command 
831line specification. This makes the default output simler and easier to 
832understand. The -el command line option restores the original behavior 
833for testing purposes.
834
835AcpiExec: Added support for overlapping operation regions. This change 
836expands the simulation of operation regions by supporting regions that 
837overlap within the given address space. Supports SystemMemory and 
838SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
839
840AcpiExec: Added region handler support for PCI_Config and EC spaces. This 
841allows AcpiExec to simulate these address spaces, similar to the current 
842support for SystemMemory and SystemIO.
843
844Debugger: Added new command to read/write/compare all namespace objects. 
845The command "test objects" will exercise the entire namespace by writing 
846new values to each data object, and ensuring that the write was 
847successful. The original value is then restored and verified.
848
849Debugger: Added the "test predefined" command. This change makes this 
850test public and puts it under the new "test" command. The test executes 
851each and every predefined name within the current namespace.
852
853----------------------------------------
85418 December 2013. Summary of changes for version 20131218:
855
856Global note: The ACPI 5.0A specification was released this month. There 
857are no changes needed for ACPICA since this release of ACPI is an 
858errata/clarification release. The specification is available at 
859acpi.info. 
860
861
8621) ACPICA kernel-resident subsystem:
863
864Added validation of the XSDT root table if it is present. Some older 
865platforms contain an XSDT that is ill-formed or otherwise invalid (such 
866as containing some or all entries that are NULL pointers). This change 
867adds a new function to validate the XSDT before actually using it. If the 
868XSDT is found to be invalid, ACPICA will now automatically fall back to 
869using the RSDT instead. Original implementation by Zhao Yakui. Ported to 
870ACPICA and enhanced by Lv Zheng and Bob Moore.
871
872Added a runtime option to ignore the XSDT and force the use of the RSDT. 
873This change adds a runtime option that will force ACPICA to use the RSDT 
874instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 
875requires that an XSDT be used instead of the RSDT, the XSDT has been 
876found to be corrupt or ill-formed on some machines. Lv Zheng.
877
878Added a runtime option to favor 32-bit FADT register addresses over the 
87964-bit addresses. This change adds an option to favor 32-bit FADT 
880addresses when there is a conflict between the 32-bit and 64-bit versions 
881of the same register. The default behavior is to use the 64-bit version 
882in accordance with the ACPI specification. This can now be overridden via 
883the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
884
885During the change above, the internal "Convert FADT" and "Verify FADT" 
886functions have been merged to simplify the code, making it easier to 
887understand and maintain. ACPICA BZ 933.
888
889Improve exception reporting and handling for GPE block installation. 
890Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 
891status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
892
893Added helper macros to extract bus/segment numbers from the HEST table. 
894This change adds two macros to extract the encoded bus and segment 
895numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 
896Betty Dall <betty.dall@hp.com>
897
898Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 
899by ACPICA. It is not a public macro, so it should have no effect on 
900existing OSV code. Lv Zheng.
901
902Example Code and Data Size: These are the sizes for the OS-independent 
903acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
904debug version of the code includes the debug output trace mechanism and 
905has a much larger code and data size.
906
907  Current Release:
908    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
909    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
910  Previous Release:
911    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
912    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
913
914
9152) iASL Compiler/Disassembler and Tools:
916
917Disassembler: Improved pathname support for emitted External() 
918statements. This change adds full pathname support for external names 
919that have been resolved internally by the inclusion of additional ACPI 
920tables (via the iASL -e option). Without this change, the disassembler 
921can emit multiple externals for the same object, or it become confused 
922when the Scope() operator is used on an external object. Overall, greatly 
923improves the ability to actually recompile the emitted ASL code when 
924objects a referenced across multiple ACPI tables. Reported by Michael 
925Tsirkin (mst@redhat.com).
926
927Tests/ASLTS: Updated functional control suite to execute with no errors. 
928David Box. Fixed several errors related to the testing of the interpreter 
929slack mode. Lv Zheng.
930
931iASL: Added support to detect names that are declared within a control 
932method, but are unused (these are temporary names that are only valid 
933during the time the method is executing). A remark is issued for these 
934cases. ACPICA BZ 1022.
935
936iASL: Added full support for the DBG2 table. Adds full disassembler, 
937table compiler, and template generator support for the DBG2 table (Debug 
938Port 2 table).
939
940iASL: Added full support for the PCCT table, update the table definition. 
941Updates the PCCT table definition in the actbl3.h header and adds table 
942compiler and template generator support.
943
944iASL: Added an option to emit only error messages (no warnings/remarks). 
945The -ve option will enable only error messages, warnings and remarks are 
946suppressed. This can simplify debugging when only the errors are 
947important, such as when an ACPI table is disassembled and there are many 
948warnings and remarks -- but only the actual errors are of real interest.
949
950Example ACPICA code (source/tools/examples): Updated the example code so 
951that it builds to an actual working program, not just example code. Added 
952ACPI tables and execution of an example control method in the DSDT. Added 
953makefile support for Unix generation.
954
955----------------------------------------
95615 November 2013. Summary of changes for version 20131115:
957
958This release is available at https://acpica.org/downloads
959
960
9611) ACPICA kernel-resident subsystem:
962
963Resource Manager: Fixed loop termination for the "get AML length" 
964function. The loop previously had an error termination on a NULL resource 
965pointer, which can never happen since the loop simply increments a valid 
966resource pointer. This fix changes the loop to terminate with an error on 
967an invalid end-of-buffer condition. The problem can be seen as an 
968infinite loop by callers to AcpiSetCurrentResources with an invalid or 
969corrupted resource descriptor, or a resource descriptor that is missing 
970an END_TAG descriptor. Reported by Dan Carpenter 
971<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
972
973Table unload and ACPICA termination: Delete all attached data objects 
974during namespace node deletion. This fix updates namespace node deletion 
975to delete the entire list of attached objects (attached via 
976AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 
9771024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
978
979ACPICA termination: Added support to delete all objects attached to the 
980root namespace node. This fix deletes any and all objects that have been 
981attached to the root node via AcpiAttachData. Previously, none of these 
982objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
983
984Debug output: Do not emit the function nesting level for the in-kernel 
985build. The nesting level is really only useful during a single-thread 
986execution. Therefore, only enable this output for the AcpiExec utility. 
987Also, only emit the thread ID when executing under AcpiExec (Context 
988switches are still always detected and a message is emitted). ACPICA BZ 
989972.
990
991Example Code and Data Size: These are the sizes for the OS-independent 
992acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
993debug version of the code includes the debug output trace mechanism and 
994has a much larger code and data size.
995
996  Current Release:
997    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
998    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
999  Previous Release:
1000    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1001    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1002
1003
10042) iASL Compiler/Disassembler and Tools:
1005
1006AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 
1007correct portable POSIX header for terminal control functions.
1008
1009Disassembler: Fixed control method invocation issues related to the use 
1010of the CondRefOf() operator. The problem is seen in the disassembly where 
1011control method invocations may not be disassembled properly if the 
1012control method name has been used previously as an argument to CondRefOf. 
1013The solution is to not attempt to emit an external declaration for the 
1014CondRefOf target (it is not necessary in the first place). This prevents 
1015disassembler object type confusion. ACPICA BZ 988.
1016
1017Unix Makefiles: Added an option to disable compiler optimizations and the 
1018_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 
1019with optimizations (reportedly, gcc 4.4 for example). This change adds a 
1020command line option for make (NOOPT) that disables all compiler 
1021optimizations and the _FORTIFY_SOURCE compiler flag. The default 
1022optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 
10231034. Lv Zheng, Bob Moore.
1024
1025Tests/ASLTS: Added options to specify individual test cases and modes. 
1026This allows testers running aslts.sh to optionally specify individual 
1027test modes and test cases. Also added an option to disable the forced 
1028generation of the ACPICA tools from source if desired. Lv Zheng.
1029
1030----------------------------------------
103127 September 2013. Summary of changes for version 20130927:
1032
1033This release is available at https://acpica.org/downloads
1034
1035
10361) ACPICA kernel-resident subsystem:
1037
1038Fixed a problem with store operations to reference objects. This change 
1039fixes a problem where a Store operation to an ArgX object that contained 
1040a 
1041reference to a field object did not complete the automatic dereference 
1042and 
1043then write to the actual field object. Instead, the object type of the 
1044field object was inadvertently changed to match the type of the source 
1045operand. The new behavior will actually write to the field object (buffer 
1046field or field unit), thus matching the correct ACPI-defined behavior.
1047
1048Implemented support to allow the host to redefine individual OSL 
1049prototypes. This change enables the host to redefine OSL prototypes found 
1050in the acpiosxf.h file. This allows the host to implement OSL interfaces 
1051with a macro or inlined function. Further, it allows the host to add any 
1052additional required modifiers such as __iomem, __init, __exit, etc., as 
1053necessary on a per-interface basis. Enables maximum flexibility for the 
1054OSL interfaces. Lv Zheng.
1055
1056Hardcoded the access width for the FADT-defined reset register. The ACPI 
1057specification requires the reset register width to be 8 bits. ACPICA now 
1058hardcodes the width to 8 and ignores the FADT width value. This provides 
1059compatibility with other ACPI implementations that have allowed BIOS code 
1060with bad register width values to go unnoticed. Matthew Garett, Bob 
1061Moore, 
1062Lv Zheng.
1063
1064Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 
1065used 
1066in the OSL header (acpiosxf). The change modifies the position of this 
1067macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 
1068build issues if the OSL defines the implementation of the interface to be 
1069an inline stub function. Lv Zheng.
1070
1071Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 
1072initialization interfaces. This change adds a new macro for the main init 
1073and terminate external interfaces in order to support hosts that require 
1074additional or different processing for these functions. Changed from 
1075ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 
1076Zheng, Bob Moore.
1077
1078Cleaned up the memory allocation macros for configurability. In the 
1079common 
1080case, the ACPI_ALLOCATE and related macros now resolve directly to their 
1081respective AcpiOs* OSL interfaces. Two options:
10821) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 
1083default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
10842) For AcpiExec (and for debugging), the macros can optionally be 
1085resolved 
1086to the local ACPICA interfaces that track each allocation (local tracking 
1087is used to immediately detect memory leaks).
1088Lv Zheng.
1089
1090Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 
1091to predefine this macro to either TRUE or FALSE during the system build.
1092
1093Replaced __FUNCTION_ with __func__ in the gcc-specific header.
1094
1095Example Code and Data Size: These are the sizes for the OS-independent 
1096acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1097debug version of the code includes the debug output trace mechanism and 
1098has a much larger code and data size.
1099
1100  Current Release:
1101    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1102    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1103  Previous Release:
1104    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
1105    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1106
1107
11082) iASL Compiler/Disassembler and Tools:
1109
1110iASL: Implemented wildcard support for the -e option. This simplifies use 
1111when there are many SSDTs that must be included to resolve external 
1112method 
1113declarations. ACPICA BZ 1041. Example:
1114    iasl -e ssdt*.dat -d dsdt.dat
1115
1116AcpiExec: Add history/line-editing for Unix/Linux systems. This change 
1117adds a portable module that implements full history and limited line 
1118editing for Unix and Linux systems. It does not use readline() due to 
1119portability issues. Instead it uses the POSIX termio interface to put the 
1120terminal in raw input mode so that the various special keys can be 
1121trapped 
1122(such as up/down-arrow for history support and left/right-arrow for line 
1123editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
1124
1125AcpiXtract: Add support to handle (ignore) "empty" lines containing only 
1126one or more spaces. This provides compatible with early or different 
1127versions of the AcpiDump utility. ACPICA BZ 1044.
1128
1129AcpiDump: Do not ignore tables that contain only an ACPI table header. 
1130Apparently, some BIOSs create SSDTs that contain an ACPI table header but 
1131no other data. This change adds support to dump these tables. Any tables 
1132shorter than the length of an ACPI table header remain in error (an error 
1133message is emitted). Reported by Yi Li.
1134
1135Debugger: Echo actual command along with the "unknown command" message.
1136
1137----------------------------------------
113823 August 2013. Summary of changes for version 20130823:
1139
11401) ACPICA kernel-resident subsystem:
1141
1142Implemented support for host-installed System Control Interrupt (SCI) 
1143handlers. Certain ACPI functionality requires the host to handle raw 
1144SCIs. For example, the "SCI Doorbell" that is defined for memory power 
1145state support requires the host device driver to handle SCIs to examine 
1146if the doorbell has been activated. Multiple SCI handlers can be 
1147installed to allow for future expansion. New external interfaces are 
1148AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 
1149details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
1150
1151Operation region support: Never locally free the handler "context" 
1152pointer. This change removes some dangerous code that attempts to free 
1153the handler context pointer in some (rare) circumstances. The owner of 
1154the handler owns this pointer and the ACPICA code should never touch it. 
1155Although not seen to be an issue in any kernel, it did show up as a 
1156problem (fault) under AcpiExec. Also, set the internal storage field for 
1157the context pointer to zero when the region is deactivated, simply for 
1158sanity. David Box. ACPICA BZ 1039.
1159
1160AcpiRead: On error, do not modify the return value target location. If an 
1161error happens in the middle of a split 32/32 64-bit I/O operation, do not 
1162modify the target of the return value pointer. Makes the code consistent 
1163with the rest of ACPICA. Bjorn Helgaas.
1164
1165Example Code and Data Size: These are the sizes for the OS-independent 
1166acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1167debug version of the code includes the debug output trace mechanism and 
1168has a much larger code and data size.
1169
1170  Current Release:
1171    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
1172    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1173  Previous Release:
1174    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
1175    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
1176
1177
11782) iASL Compiler/Disassembler and Tools:
1179
1180AcpiDump: Implemented several new features and fixed some problems:
11811) Added support to dump the RSDP, RSDT, and XSDT tables.
11822) Added support for multiple table instances (SSDT, UEFI).
11833) Added option to dump "customized" (overridden) tables (-c).
11844) Fixed a problem where some table filenames were improperly 
1185constructed.
11865) Improved some error messages, removed some unnecessary messages.
1187
1188iASL: Implemented additional support for disassembly of ACPI tables that 
1189contain invocations of external control methods. The -fe<file> option 
1190allows the import of a file that specifies the external methods along 
1191with the required number of arguments for each -- allowing for the 
1192correct disassembly of the table. This is a workaround for a limitation 
1193of AML code where the disassembler often cannot determine the number of 
1194arguments required for an external control method and generates incorrect 
1195ASL code. See the iASL reference for details. ACPICA BZ 1030.
1196
1197Debugger: Implemented a new command (paths) that displays the full 
1198pathnames (namepaths) and object types of all objects in the namespace. 
1199This is an alternative to the namespace command.
1200
1201Debugger: Implemented a new command (sci) that invokes the SCI dispatch 
1202mechanism and any installed handlers.
1203
1204iASL: Fixed a possible segfault for "too many parent prefixes" condition. 
1205This can occur if there are too many parent prefixes in a namepath (for 
1206example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
1207
1208Application OSLs: Set the return value for the PCI read functions. These 
1209functions simply return AE_OK, but should set the return value to zero 
1210also. This change implements this. ACPICA BZ 1038.
1211
1212Debugger: Prevent possible command line buffer overflow. Increase the 
1213size of a couple of the debugger line buffers, and ensure that overflow 
1214cannot happen. ACPICA BZ 1037.
1215
1216iASL: Changed to abort immediately on serious errors during the parsing 
1217phase. Due to the nature of ASL, there is no point in attempting to 
1218compile these types of errors, and they typically end up causing a 
1219cascade of hundreds of errors which obscure the original problem.
1220
1221----------------------------------------
122225 July 2013. Summary of changes for version 20130725:
1223
12241) ACPICA kernel-resident subsystem:
1225
1226Fixed a problem with the DerefOf operator where references to FieldUnits 
1227and BufferFields incorrectly returned the parent object, not the actual 
1228value of the object. After this change, a dereference of a FieldUnit 
1229reference results in a read operation on the field to get the value, and 
1230likewise, the appropriate BufferField value is extracted from the target 
1231buffer.
1232
1233Fixed a problem where the _WAK method could cause a fault under these 
1234circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 
1235method returned no value. The problem is rarely seen because most kernels 
1236run ACPICA in slack mode.
1237
1238For the DerefOf operator, a fatal error now results if an attempt is made 
1239to dereference a reference (created by the Index operator) to a NULL 
1240package element. Provides compatibility with other ACPI implementations, 
1241and this behavior will be added to a future version of the ACPI 
1242specification.
1243
1244The ACPI Power Management Timer (defined in the FADT) is now optional. 
1245This provides compatibility with other ACPI implementations and will 
1246appear in the next version of the ACPI specification. If there is no PM 
1247Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 
1248zero in the FADT indicates no PM timer.
1249
1250Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 
1251allows the host to globally enable/disable all vendor strings, all 
1252feature strings, or both. Intended to be primarily used for debugging 
1253purposes only. Lv Zheng.
1254
1255Expose the collected _OSI data to the host via a global variable. This 
1256data tracks the highest level vendor ID that has been invoked by the BIOS 
1257so that the host (and potentially ACPICA itself) can change behaviors 
1258based upon the age of the BIOS.
1259
1260Example Code and Data Size: These are the sizes for the OS-independent 
1261acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1262debug version of the code includes the debug output trace mechanism and 
1263has a much larger code and data size.
1264
1265  Current Release:
1266    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
1267    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1268  Previous Release:
1269    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1270    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1271
1272
12732) iASL Compiler/Disassembler and Tools:
1274
1275iASL: Created the following enhancements for the -so option (create 
1276offset table):
12771)Add offsets for the last nameseg in each namepath for every supported 
1278object type
12792)Add support for Processor, Device, Thermal Zone, and Scope objects
12803)Add the actual AML opcode for the parent object of every supported 
1281object type
12824)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
1283
1284Disassembler: Emit all unresolved external symbols in a single block. 
1285These are external references to control methods that could not be 
1286resolved, and thus, the disassembler had to make a guess at the number of 
1287arguments to parse.
1288
1289iASL: The argument to the -T option (create table template) is now 
1290optional. If not specified, the default table is a DSDT, typically the 
1291most common case.
1292
1293----------------------------------------
129426 June 2013. Summary of changes for version 20130626:
1295
12961) ACPICA kernel-resident subsystem:
1297
1298Fixed an issue with runtime repair of the _CST object. Null or invalid 
1299elements were not always removed properly. Lv Zheng. 
1300
1301Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 
1302FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 
1303the maximum number of GPEs is 1016. Use of multiple GPE block devices 
1304makes the system-wide number of GPEs essentially unlimited.
1305
1306Example Code and Data Size: These are the sizes for the OS-independent 
1307acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1308debug version of the code includes the debug output trace mechanism and 
1309has a much larger code and data size.
1310
1311  Current Release:
1312    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1313    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1314  Previous Release:
1315    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1316    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1317
1318
13192) iASL Compiler/Disassembler and Tools:
1320
1321Portable AcpiDump: Implemented full support for the Linux and FreeBSD 
1322hosts. Now supports Linux, FreeBSD, and Windows.
1323
1324Disassembler: Added some missing types for the HEST and EINJ tables: "Set 
1325Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
1326
1327iASL/Preprocessor: Implemented full support for nested 
1328#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
1329
1330Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 
1331max. The original purpose of this constraint was to limit the amount of 
1332debug output. However, the string function in question (UtPrintString) is 
1333now used for the disassembler also, where 256 bytes is insufficient. 
1334Reported by RehabMan@GitHub.
1335
1336iASL/DataTables: Fixed some problems and issues with compilation of DMAR 
1337tables. ACPICA BZ 999. Lv Zheng.
1338
1339iASL: Fixed a couple of error exit issues that could result in a "Could 
1340not delete <file>" message during ASL compilation.
1341
1342AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 
1343the actual signatures for these tables are "FACP" and "APIC", 
1344respectively.
1345
1346AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 
1347tables are allowed to have multiple instances.
1348
1349----------------------------------------
135017 May 2013. Summary of changes for version 20130517:
1351
13521) ACPICA kernel-resident subsystem:
1353
1354Fixed a regression introduced in version 20130328 for _INI methods. This 
1355change fixes a problem introduced in 20130328 where _INI methods are no 
1356longer executed properly because of a memory block that was not 
1357initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 
1358<tomasz.nowicki@linaro.org>.
1359
1360Fixed a possible problem with the new extended sleep registers in the 
1361ACPI 
13625.0 FADT. Do not use these registers (even if populated) unless the HW-
1363reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 
13641020. Lv Zheng.
1365
1366Implemented return value repair code for _CST predefined objects: Sort 
1367the 
1368list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
1369
1370Implemented a debug-only option to disable loading of SSDTs from the 
1371RSDT/XSDT during ACPICA initialization. This can be useful for debugging 
1372ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 
1373acglobal.h - ACPICA BZ 1005. Lv Zheng.
1374
1375Fixed some issues in the ACPICA initialization and termination code: 
1376Tomasz Nowicki <tomasz.nowicki@linaro.org>
13771) Clear events initialized flag upon event component termination. ACPICA 
1378BZ 1013.
13792) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 
13803) Delete global lock pending lock during termination. ACPICA BZ 1012.
13814) Clear debug buffer global on termination to prevent possible multiple 
1382delete. ACPICA BZ 1010.
1383
1384Standardized all switch() blocks across the entire source base. After 
1385many 
1386years, different formatting for switch() had crept in. This change makes 
1387the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
1388
1389Split some files to enhance ACPICA modularity and configurability:
13901) Split buffer dump routines into utilities/utbuffer.c
13912) Split internal error message routines into utilities/uterror.c
13923) Split table print utilities into tables/tbprint.c
13934) Split iASL command-line option processing into asloptions.c
1394
1395Makefile enhancements:
13961) Support for all new files above.
13972) Abort make on errors from any subcomponent. Chao Guan.
13983) Add build support for Apple Mac OS X. Liang Qi.
1399
1400Example Code and Data Size: These are the sizes for the OS-independent 
1401acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1402debug version of the code includes the debug output trace mechanism and 
1403has a much larger code and data size.
1404
1405  Current Release:
1406    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1407    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1408  Previous Release:
1409    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1410    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1411
1412
14132) iASL Compiler/Disassembler and Tools:
1414
1415New utility: Implemented an easily portable version of the acpidump 
1416utility to extract ACPI tables from the system (or a file) in an ASCII 
1417hex 
1418dump format. The top-level code implements the various command line 
1419options, file I/O, and table dump routines. To port to a new host, only 
1420three functions need to be implemented to get tables -- since this 
1421functionality is OS-dependent. See the tools/acpidump/apmain.c module and 
1422the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
14231) The Windows version obtains the ACPI tables from the Registry.
14242) The Linux version is under development.
14253) Other hosts - If an OS-dependent module is submitted, it will be 
1426distributed with ACPICA.
1427
1428iASL: Fixed a regression for -D preprocessor option (define symbol). A 
1429restructuring/change to the initialization sequence caused this option to 
1430no longer work properly.
1431
1432iASL: Implemented a mechanism to disable specific warnings and remarks. 
1433Adds a new command line option, "-vw <messageid> as well as "#pragma 
1434disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
1435
1436iASL: Fix for too-strict package object validation. The package object 
1437validation for return values from the predefined names is a bit too 
1438strict, it does not allow names references within the package (which will 
1439be resolved at runtime.) These types of references cannot be validated at 
1440compile time. This change ignores named references within package objects 
1441for names that return or define static packages.
1442
1443Debugger: Fixed the 80-character command line limitation for the History 
1444command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
1445
1446iASL: Added control method and package support for the -so option 
1447(generates AML offset table for BIOS support.)
1448
1449iASL: issue a remark if a non-serialized method creates named objects. If 
1450a thread blocks within the method for any reason, and another thread 
1451enters the method, the method will fail because an attempt will be made 
1452to 
1453create the same (named) object twice. In this case, issue a remark that 
1454the method should be marked serialized. NOTE: may become a warning later. 
1455ACPICA BZ 909.
1456
1457----------------------------------------
145818 April 2013. Summary of changes for version 20130418:
1459
14601) ACPICA kernel-resident subsystem:
1461
1462Fixed a possible buffer overrun during some rare but specific field unit 
1463read operations. This overrun can only happen if the DSDT version is 1 -- 
1464meaning that all AML integers are 32 bits -- and the field length is 
1465between 33 and 55 bits long. During the read, an internal buffer object 
1466is 
1467created for the field unit because the field is larger than an integer 
1468(32 
1469bits). However, in this case, the buffer will be incorrectly written 
1470beyond the end because the buffer length is less than the internal 
1471minimum 
1472of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 
1473long, but a full 8 bytes will be written.
1474
1475Updated the Embedded Controller "orphan" _REG method support. This refers 
1476to _REG methods under the EC device that have no corresponding operation 
1477region. This is allowed by the ACPI specification. This update removes a 
1478dependency on the existence an ECDT table. It will execute an orphan _REG 
1479method as long as the operation region handler for the EC is installed at 
1480the EC device node and not the namespace root. Rui Zhang (original 
1481update), Bob Moore (update/integrate).
1482
1483Implemented run-time argument typechecking for all predefined ACPI names 
1484(_STA, _BIF, etc.) This change performs object typechecking on all 
1485incoming arguments for all predefined names executed via 
1486AcpiEvaluateObject. This ensures that ACPI-related device drivers are 
1487passing correct object types as well as the correct number of arguments 
1488(therefore identifying any issues immediately). Also, the ASL/namespace 
1489definition of the predefined name is checked against the ACPI 
1490specification for the proper argument count. Adds one new file, 
1491nsarguments.c
1492
1493Changed an exception code for the ASL UnLoad() operator. Changed the 
1494exception code for the case where the input DdbHandle is invalid, from 
1495AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
1496
1497Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 
1498global makefile. The use of this flag causes compiler errors on earlier 
1499versions of GCC, so it has been removed for compatibility.
1500
1501Miscellaneous cleanup:
15021) Removed some unused/obsolete macros
15032) Fixed a possible memory leak in the _OSI support
15043) Removed an unused variable in the predefined name support
15054) Windows OSL: remove obsolete reference to a memory list field
1506
1507Example Code and Data Size: These are the sizes for the OS-independent 
1508acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1509debug version of the code includes the debug output trace mechanism and 
1510has a much larger code and data size.
1511
1512  Current Release:
1513    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1514    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1515  Previous Release:
1516    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1517    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1518
1519
15202) iASL Compiler/Disassembler and Tools:
1521
1522AcpiExec: Added installation of a handler for the SystemCMOS address 
1523space. This prevents control method abort if a method accesses this 
1524space.
1525
1526AcpiExec: Added support for multiple EC devices, and now install EC 
1527operation region handler(s) at the actual EC device instead of the 
1528namespace root. This reflects the typical behavior of host operating 
1529systems.
1530
1531AcpiExec: Updated to ensure that all operation region handlers are 
1532installed before the _REG methods are executed. This prevents a _REG 
1533method from aborting if it accesses an address space has no handler. 
1534AcpiExec installs a handler for every possible address space.
1535
1536Debugger: Enhanced the "handlers" command to display non-root handlers. 
1537This change enhances the handlers command to display handlers associated 
1538with individual devices throughout the namespace, in addition to the 
1539currently supported display of handlers associated with the root 
1540namespace 
1541node.
1542
1543ASL Test Suite: Several test suite errors have been identified and 
1544resolved, reducing the total error count during execution. Chao Guan.
1545
1546----------------------------------------
154728 March 2013. Summary of changes for version 20130328:
1548
15491) ACPICA kernel-resident subsystem:
1550
1551Fixed several possible race conditions with the internal object reference 
1552counting mechanism. Some of the external ACPICA interfaces update object 
1553reference counts without holding the interpreter or namespace lock. This 
1554change adds a spinlock to protect reference count updates on the internal 
1555ACPICA objects. Reported by and with assistance from Andriy Gapon 
1556(avg@FreeBSD.org).
1557
1558FADT support: Removed an extraneous warning for very large GPE register 
1559sets. This change removes a size mismatch warning if the legacy length 
1560field for a GPE register set is larger than the 64-bit GAS structure can 
1561accommodate. GPE register sets can be larger than the 255-bit width 
1562limitation of the GAS structure. Linn Crosetto (linn@hp.com).
1563
1564_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 
1565return from this interface. Handles a possible timeout case if 
1566ACPI_WAIT_FOREVER is modified by the host to be a value less than 
1567"forever". Jung-uk Kim.
1568
1569Predefined name support: Add allowed/required argument type information 
1570to 
1571the master predefined info table. This change adds the infrastructure to 
1572enable typechecking on incoming arguments for all predefined 
1573methods/objects. It does not actually contain the code that will fully 
1574utilize this information, this is still under development. Also condenses 
1575some duplicate code for the predefined names into a new module, 
1576utilities/utpredef.c
1577
1578Example Code and Data Size: These are the sizes for the OS-independent 
1579acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1580debug version of the code includes the debug output trace mechanism and 
1581has a much larger code and data size.
1582
1583  Previous Release:
1584    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1585    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1586  Current Release:
1587    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1588    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1589
1590
15912) iASL Compiler/Disassembler and Tools:
1592
1593iASL: Implemented a new option to simplify the development of ACPI-
1594related 
1595BIOS code. Adds support for a new "offset table" output file. The -so 
1596option will create a C table containing the AML table offsets of various 
1597named objects in the namespace so that BIOS code can modify them easily 
1598at 
1599boot time. This can simplify BIOS runtime code by eliminating expensive 
1600searches for "magic values", enhancing boot times and adding greater 
1601reliability. With assistance from Lee Hamel.
1602
1603iASL: Allow additional predefined names to return zero-length packages. 
1604Now, all predefined names that are defined by the ACPI specification to 
1605return a "variable-length package of packages" are allowed to return a 
1606zero length top-level package. This allows the BIOS to tell the host that 
1607the requested feature is not supported, and supports existing BIOS/ASL 
1608code and practices.
1609
1610iASL: Changed the "result not used" warning to an error. This is the case 
1611where an ASL operator is effectively a NOOP because the result of the 
1612operation is not stored anywhere. For example:
1613    Add (4, Local0)
1614There is no target (missing 3rd argument), nor is the function return 
1615value used. This is potentially a very serious problem -- since the code 
1616was probably intended to do something, but for whatever reason, the value 
1617was not stored. Therefore, this issue has been upgraded from a warning to 
1618an error.
1619
1620AcpiHelp: Added allowable/required argument types to the predefined names 
1621info display. This feature utilizes the recent update to the predefined 
1622names table (above).
1623
1624----------------------------------------
162514 February 2013. Summary of changes for version 20130214:
1626
16271) ACPICA Kernel-resident Subsystem:
1628
1629Fixed a possible regression on some hosts: Reinstated the safe return 
1630macros (return_ACPI_STATUS, etc.) that ensure that the argument is 
1631evaluated only once. Although these macros are not needed for the ACPICA 
1632code itself, they are often used by ACPI-related host device drivers 
1633where 
1634the safe feature may be necessary.
1635
1636Fixed several issues related to the ACPI 5.0 reduced hardware support 
1637(SOC): Now ensure that if the platform declares itself as hardware-
1638reduced 
1639via the FADT, the following functions become NOOPs (and always return 
1640AE_OK) because ACPI is always enabled by definition on these machines:
1641  AcpiEnable
1642  AcpiDisable
1643  AcpiHwGetMode
1644  AcpiHwSetMode
1645
1646Dynamic Object Repair: Implemented additional runtime repairs for 
1647predefined name return values. Both of these repairs can simplify code in 
1648the related device drivers that invoke these methods:
16491) For the _STR and _MLS names, automatically repair/convert an ASCII 
1650string to a Unicode buffer. 
16512) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 
1652a 
1653lone end tag descriptor in the following cases: A Return(0) was executed, 
1654a null buffer was returned, or no object at all was returned (non-slack 
1655mode only). Adds a new file, nsconvert.c
1656ACPICA BZ 998. Bob Moore, Lv Zheng.
1657
1658Resource Manager: Added additional code to prevent possible infinite 
1659loops 
1660while traversing corrupted or ill-formed resource template buffers. Check 
1661for zero-length resource descriptors in all code that loops through 
1662resource templates (the length field is used to index through the 
1663template). This change also hardens the external AcpiWalkResources and 
1664AcpiWalkResourceBuffer interfaces.
1665
1666Local Cache Manager: Enhanced the main data structure to eliminate an 
1667unnecessary mechanism to access the next object in the list. Actually 
1668provides a small performance enhancement for hosts that use the local 
1669ACPICA cache manager. Jung-uk Kim.
1670
1671Example Code and Data Size: These are the sizes for the OS-independent 
1672acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1673debug version of the code includes the debug output trace mechanism and 
1674has a much larger code and data size.
1675
1676  Previous Release:
1677    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1678    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1679  Current Release:
1680    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1681    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1682
1683
16842) iASL Compiler/Disassembler and Tools:
1685
1686iASL/Disassembler: Fixed several issues with the definition of the ACPI 
16875.0 RASF table (RAS Feature Table). This change incorporates late changes 
1688that were made to the ACPI 5.0 specification.
1689
1690iASL/Disassembler: Added full support for the following new ACPI tables:
1691  1) The MTMR table (MID Timer Table)
1692  2) The VRTC table (Virtual Real Time Clock Table).
1693Includes header file, disassembler, table compiler, and template support 
1694for both tables.
1695
1696iASL: Implemented compile-time validation of package objects returned by 
1697predefined names. This new feature validates static package objects 
1698returned by the various predefined names defined to return packages. Both 
1699object types and package lengths are validated, for both parent packages 
1700and sub-packages, if any. The code is similar in structure and behavior 
1701to 
1702the runtime repair mechanism within the AML interpreter and uses the 
1703existing predefined name information table. Adds a new file, aslprepkg.c. 
1704ACPICA BZ 938.
1705
1706iASL: Implemented auto-detection of binary ACPI tables for disassembly. 
1707This feature detects a binary file with a valid ACPI table header and 
1708invokes the disassembler automatically. Eliminates the need to 
1709specifically invoke the disassembler with the -d option. ACPICA BZ 862.
1710
1711iASL/Disassembler: Added several warnings for the case where there are 
1712unresolved control methods during the disassembly. This can potentially 
1713cause errors when the output file is compiled, because the disassembler 
1714assumes zero method arguments in these cases (it cannot determine the 
1715actual number of arguments without resolution/definition of the method).
1716
1717Debugger: Added support to display all resources with a single command. 
1718Invocation of the resources command with no arguments will now display 
1719all 
1720resources within the current namespace.
1721
1722AcpiHelp: Added descriptive text for each ACPICA exception code displayed 
1723via the -e option.
1724
1725----------------------------------------
172617 January 2013. Summary of changes for version 20130117:
1727
17281) ACPICA Kernel-resident Subsystem:
1729
1730Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 
1731return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 
1732objects to return a package containing one integer, most BIOS code 
1733returns 
1734two integers and the previous code reflects that. However, we also need 
1735to 
1736support BIOS code that actually implements to the ACPI spec, and this 
1737change reflects this.
1738
1739Fixed two issues with the ACPI_DEBUG_PRINT macros:
17401) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 
1741C compilers that require this support.
17422) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 
1743ACPI_DEBUG is already used by many of the various hosts.
1744
1745Updated all ACPICA copyrights and signons to 2013. Added the 2013 
1746copyright to all module headers and signons, including the standard Linux 
1747header. This affects virtually every file in the ACPICA core subsystem, 
1748iASL compiler, all ACPICA utilities, and the test suites.
1749
1750Example Code and Data Size: These are the sizes for the OS-independent 
1751acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1752debug version of the code includes the debug output trace mechanism and 
1753has a much larger code and data size.
1754
1755  Previous Release:
1756    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1757    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1758  Current Release:
1759    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1760    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1761
1762
17632) iASL Compiler/Disassembler and Tools:
1764
1765Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 
1766prevent a possible fault on some hosts. Some C libraries modify the arg 
1767pointer parameter to vfprintf making it difficult to call it twice in the 
1768AcpiOsVprintf function. Use a local buffer to workaround this issue. This 
1769does not affect the Windows OSL since the Win C library does not modify 
1770the arg pointer. Chao Guan, Bob Moore.
1771
1772iASL: Fixed a possible infinite loop when the maximum error count is 
1773reached. If an output file other than the .AML file is specified (such as 
1774a listing file), and the maximum number of errors is reached, do not 
1775attempt to flush data to the output file(s) as the compiler is aborting. 
1776This can cause an infinite loop as the max error count code essentially 
1777keeps calling itself.
1778
1779iASL/Disassembler: Added an option (-in) to ignore NOOP 
1780opcodes/operators. 
1781Implemented for both the compiler and the disassembler. Often, the NOOP 
1782opcode is used as padding for packages that are changed dynamically by 
1783the 
1784BIOS. When disassembled and recompiled, these NOOPs will cause syntax 
1785errors. This option causes the disassembler to ignore all NOOP opcodes 
1786(0xA3), and it also causes the compiler to ignore all ASL source code 
1787NOOP 
1788statements as well.
1789
1790Debugger: Enhanced the Sleep command to execute all sleep states. This 
1791change allows Sleep to be invoked with no arguments and causes the 
1792debugger to execute all of the sleep states, 0-5, automatically.
1793
1794----------------------------------------
179520 December 2012. Summary of changes for version 20121220:
1796
17971) ACPICA Kernel-resident Subsystem:
1798
1799Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 
1800alternate entry point for AcpiWalkResources and improves the usability of 
1801the resource manager by accepting as input a buffer containing the output 
1802of either a _CRS, _PRS, or _AEI method. The key functionality is that the 
1803input buffer is not deleted by this interface so that it can be used by 
1804the host later. See the ACPICA reference for details.
1805
1806Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 
1807(DSDT version < 2). The constant will be truncated and this warning 
1808reflects that behavior.
1809
1810Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 
1811ExtendedInterrupt, and GpioInt descriptors. This change adds support to 
1812both get and set the new wake bit in these descriptors, separately from 
1813the existing share bit. Reported by Aaron Lu.
1814
1815Interpreter: Fix Store() when an implicit conversion is not possible. For 
1816example, in the cases such as a store of a string to an existing package 
1817object, implement the store as a CopyObject(). This is a small departure 
1818from the ACPI specification which states that the control method should 
1819be 
1820aborted in this case. However, the ASLTS suite depends on this behavior.
1821
1822Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 
1823macros: check if debug output is currently enabled as soon as possible to 
1824minimize performance impact if debug is in fact not enabled.
1825
1826Source code restructuring: Cleanup to improve modularity. The following 
1827new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 
1828psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 
1829Associated makefiles and project files have been updated.
1830
1831Changed an exception code for LoadTable operator. For the case where one 
1832of the input strings is too long, change the returned exception code from 
1833AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
1834
1835Fixed a possible memory leak in dispatcher error path. On error, delete 
1836the mutex object created during method mutex creation. Reported by 
1837tim.gardner@canonical.com.
1838
1839Example Code and Data Size: These are the sizes for the OS-independent 
1840acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1841debug version of the code includes the debug output trace mechanism and 
1842has a much larger code and data size.
1843
1844  Previous Release:
1845    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1846    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1847  Current Release:
1848    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1849    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1850
1851
18522) iASL Compiler/Disassembler and Tools:
1853
1854iASL: Disallow a method call as argument to the ObjectType ASL operator. 
1855This change tracks an errata to the ACPI 5.0 document. The AML grammar 
1856will not allow the interpreter to differentiate between a method and a 
1857method invocation when these are used as an argument to the ObjectType 
1858operator. The ACPI specification change is to disallow a method 
1859invocation 
1860(UserTerm) for the ObjectType operator.
1861
1862Finish support for the TPM2 and CSRT tables in the headers, table 
1863compiler, and disassembler.
1864
1865Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 
1866always expires immediately if the semaphore is not available. The 
1867original 
1868code was using a relative-time timeout, but sem_timedwait requires the 
1869use 
1870of an absolute time.
1871
1872iASL: Added a remark if the Timer() operator is used within a 32-bit 
1873table. This operator returns a 64-bit time value that will be truncated 
1874within a 32-bit table.
1875
1876iASL Source code restructuring: Cleanup to improve modularity. The 
1877following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 
1878aslmethod.c, and aslfileio.c. Associated makefiles and project files have 
1879been updated.
1880
1881
1882----------------------------------------
188314 November 2012. Summary of changes for version 20121114:
1884
18851) ACPICA Kernel-resident Subsystem:
1886
1887Implemented a performance enhancement for ACPI/AML Package objects. This 
1888change greatly increases the performance of Package objects within the 
1889interpreter. It changes the processing of reference counts for packages 
1890by 
1891optimizing for the most common case where the package sub-objects are 
1892either Integers, Strings, or Buffers. Increases the overall performance 
1893of 
1894the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 
18952X.) 
1896Chao Guan. ACPICA BZ 943.
1897
1898Implemented and deployed common macros to extract flag bits from resource 
1899descriptors. Improves readability and maintainability of the code. Fixes 
1900a 
1901problem with the UART serial bus descriptor for the number of data bits 
1902flags (was incorrectly 2 bits, should be 3).
1903
1904Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 
1905of the macros and changed the SETx macros to the style of (destination, 
1906source). Also added ACPI_CASTx companion macros. Lv Zheng.
1907
1908Example Code and Data Size: These are the sizes for the OS-independent 
1909acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
1910debug version of the code includes the debug output trace mechanism and 
1911has a much larger code and data size.
1912
1913  Previous Release:
1914    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1915    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1916  Current Release:
1917    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1918    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1919
1920
19212) iASL Compiler/Disassembler and Tools:
1922
1923Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 
1924adds the ShareAndWake and ExclusiveAndWake flags which were added to the 
1925Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
1926
1927Disassembler: Fixed a problem with external declaration generation. Fixes 
1928a problem where an incorrect pathname could be generated for an external 
1929declaration if the original reference to the object includes leading 
1930carats (^). ACPICA BZ 984.
1931
1932Debugger: Completed a major update for the Disassemble<method> command. 
1933This command was out-of-date and did not properly disassemble control 
1934methods that had any reasonable complexity. This fix brings the command 
1935up 
1936to the same level as the rest of the disassembler. Adds one new file, 
1937dmdeferred.c, which is existing code that is now common with the main 
1938disassembler and the debugger disassemble command. ACPICA MZ 978.
1939
1940iASL: Moved the parser entry prototype to avoid a duplicate declaration. 
1941Newer versions of Bison emit this prototype, so moved the prototype out 
1942of 
1943the iASL header to where it is actually used in order to avoid a 
1944duplicate 
1945declaration.
1946
1947iASL/Tools: Standardized use of the stream I/O functions:
1948  1) Ensure check for I/O error after every fopen/fread/fwrite
1949  2) Ensure proper order of size/count arguments for fread/fwrite
1950  3) Use test of (Actual != Requested) after all fwrite, and most fread
1951  4) Standardize I/O error messages
1952Improves reliability and maintainability of the code. Bob Moore, Lv 
1953Zheng. 
1954ACPICA BZ 981.
1955
1956Disassembler: Prevent duplicate External() statements. During generation 
1957of external statements, detect similar pathnames that are actually 
1958duplicates such as these:
1959  External (\ABCD)
1960  External (ABCD)
1961Remove all leading '\' characters from pathnames during the external 
1962statement generation so that duplicates will be detected and tossed. 
1963ACPICA BZ 985.
1964
1965Tools: Replace low-level I/O with stream I/O functions. Replace 
1966open/read/write/close with the stream I/O equivalents 
1967fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 
1968Moore.
1969
1970AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 
1971name header so that AcpiXtract recognizes the output file/table.
1972
1973iASL: Remove obsolete -2 option flag. Originally intended to force the 
1974compiler/disassembler into an ACPI 2.0 mode, this was never implemented 
1975and the entire concept is now obsolete.
1976
1977----------------------------------------
197818 October 2012. Summary of changes for version 20121018:
1979
1980
19811) ACPICA Kernel-resident Subsystem:
1982
1983Updated support for the ACPI 5.0 MPST table. Fixes some problems 
1984introduced by late changes to the table as it was added to the ACPI 5.0 
1985specification. Includes header, disassembler, and data table compiler 
1986support as well as a new version of the MPST template.
1987
1988AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 
19895.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 
1990methods: _HID, _CID, and _UID.
1991
1992Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 
1993ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 
1994name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 
1995names for their various drivers. Affects the AcpiGetObjectInfo external 
1996interface, and other internal interfaces as well.
1997
1998Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 
1999This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 
2000on machines that support non-aligned transfers. Optimizes for this case 
2001rather than using a strncpy. With assistance from Zheng Lv.
2002
2003Resource Manager: Small fix for buffer size calculation. Fixed a one byte 
2004error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
2005
2006Added a new debug print message for AML mutex objects that are force-
2007released. At control method termination, any currently acquired mutex 
2008objects are force-released. Adds a new debug-only message for each one 
2009that is released.
2010
2011Audited/updated all ACPICA return macros and the function debug depth 
2012counter: 1) Ensure that all functions that use the various TRACE macros 
2013also use the appropriate ACPICA return macros. 2) Ensure that all normal 
2014return statements surround the return expression (value) with parens to 
2015ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 
2016Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
2017
2018Global source code changes/maintenance: All extra lines at the start and 
2019end of each source file have been removed for consistency. Also, within 
2020comments, all new sentences start with a single space instead of a double 
2021space, again for consistency across the code base.
2022
2023Example Code and Data Size: These are the sizes for the OS-independent 
2024acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2025debug version of the code includes the debug output trace mechanism and 
2026has a much larger code and data size.
2027
2028  Previous Release:
2029    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2030    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2031  Current Release:
2032    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
2033    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2034
2035
20362) iASL Compiler/Disassembler and Tools:
2037
2038AcpiExec: Improved the algorithm used for memory leak/corruption 
2039detection. Added some intelligence to the code that maintains the global 
2040list of allocated memory. The list is now ordered by allocated memory 
2041address, significantly improving performance. When running AcpiExec on 
2042the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 
2043on the platform and/or the environment. Note, this performance 
2044enhancement affects the AcpiExec utility only, not the kernel-resident 
2045ACPICA code.
2046
2047Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 
2048the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 
2049incorrect table offset reported for invalid opcodes. Report the original 
205032-bit value for bad ACPI_NAMEs (as well as the repaired name.)
2051
2052Disassembler: Enhanced the -vt option to emit the binary table data in 
2053hex format to assist with debugging.
2054
2055Fixed a potential filename buffer overflow in osunixdir.c. Increased the 
2056size of file structure. Colin Ian King.
2057
2058----------------------------------------
205913 September 2012. Summary of changes for version 20120913:
2060
2061
20621) ACPICA Kernel-resident Subsystem:
2063
2064ACPI 5.0: Added two new notify types for the Hardware Error Notification 
2065Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 
2066and 
2067MCE(6).
2068 
2069Table Manager: Merged/removed duplicate code in the root table resize 
2070functions. One function is external, the other is internal. Lv Zheng, 
2071ACPICA 
2072BZ 846.
2073
2074Makefiles: Completely removed the obsolete "Linux" makefiles under 
2075acpica/generate/linux. These makefiles are obsolete and have been 
2076replaced 
2077by 
2078the generic unix makefiles under acpica/generate/unix.
2079
2080Makefiles: Ensure that binary files always copied properly. Minor rule 
2081change 
2082to ensure that the final binary output files are always copied up to the 
2083appropriate binary directory (bin32 or bin64.)
2084
2085Example Code and Data Size: These are the sizes for the OS-independent 
2086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2087debug 
2088version of the code includes the debug output trace mechanism and has a 
2089much 
2090larger code and data size.
2091
2092  Previous Release:
2093    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2094    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2095  Current Release:
2096    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2097    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2098
2099
21002) iASL Compiler/Disassembler and Tools:
2101
2102Disassembler: Fixed a possible fault during the disassembly of resource 
2103descriptors when a second parse is required because of the invocation of 
2104external control methods within the table. With assistance from 
2105adq@lidskialf.net. ACPICA BZ 976.
2106
2107iASL: Fixed a namepath optimization problem. An error can occur if the 
2108parse 
2109node that contains the namepath to be optimized does not have a parent 
2110node 
2111that is a named object. This change fixes the problem.
2112
2113iASL: Fixed a regression where the AML file is not deleted on errors. The 
2114AML 
2115output file should be deleted if there are any errors during the 
2116compiler. 
2117The 
2118only exception is if the -f (force output) option is used. ACPICA BZ 974.
2119
2120iASL: Added a feature to automatically increase internal line buffer 
2121sizes. 
2122Via realloc(), automatically increase the internal line buffer sizes as 
2123necessary to support very long source code lines. The current version of 
2124the 
2125preprocessor requires a buffer long enough to contain full source code 
2126lines. 
2127This change increases the line buffer(s) if the input lines go beyond the 
2128current buffer size. This eliminates errors that occurred when a source 
2129code 
2130line was longer than the buffer.
2131
2132iASL: Fixed a problem with constant folding in method declarations. The 
2133SyncLevel term is a ByteConstExpr, and incorrect code would be generated 
2134if a 
2135Type3 opcode was used.
2136
2137Debugger: Improved command help support. For incorrect argument count, 
2138display 
2139full help for the command. For help command itself, allow an argument to 
2140specify a command.
2141
2142Test Suites: Several bug fixes for the ASLTS suite reduces the number of 
2143errors during execution of the suite. Guan Chao.
2144
2145----------------------------------------
214616 August 2012. Summary of changes for version 20120816:
2147
2148
21491) ACPICA Kernel-resident Subsystem:
2150
2151Removed all use of the deprecated _GTS and _BFS predefined methods. The 
2152_GTS 
2153(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 
2154deprecated and will probably be removed from the ACPI specification. 
2155Windows 
2156does not invoke them, and reportedly never will. The final nail in the 
2157coffin 
2158is that the ACPI specification states that these methods must be run with 
2159interrupts off, which is not going to happen in a kernel interpreter. 
2160Note: 
2161Linux has removed all use of the methods also. It was discovered that 
2162invoking these functions caused failures on some machines, probably 
2163because 
2164they were never tested since Windows does not call them. Affects two 
2165external 
2166interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 
2167ACPICA BZ 969.
2168
2169Implemented support for complex bit-packed buffers returned from the _PLD 
2170(Physical Location of Device) predefined method. Adds a new external 
2171interface, AcpiDecodePldBuffer that parses the buffer into a more usable 
2172C 
2173structure. Note: C Bitfields cannot be used for this type of predefined 
2174structure since the memory layout of individual bitfields is not defined 
2175by 
2176the C language. In addition, there are endian concerns where a compiler 
2177will 
2178change the bitfield ordering based on the machine type. The new ACPICA 
2179interface eliminates these issues, and should be called after _PLD is 
2180executed. ACPICA BZ 954.
2181
2182Implemented a change to allow a scope change to root (via "Scope (\)") 
2183during 
2184execution of module-level ASL code (code that is executed at table load 
2185time.) Lin Ming.
2186
2187Added the Windows8/Server2012 string for the _OSI method. This change 
2188adds 
2189a 
2190new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 
21912012.
2192
2193Added header support for the new ACPI tables DBG2 (Debug Port Table Type 
21942) 
2195and CSRT (Core System Resource Table).
2196
2197Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 
2198names. This simplifies access to the buffers returned by these predefined 
2199names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
2200
2201GPE support: Removed an extraneous parameter from the various low-level 
2202internal GPE functions. Tang Feng.
2203
2204Removed the linux makefiles from the unix packages. The generate/linux 
2205makefiles are obsolete and have been removed from the unix tarball 
2206release 
2207packages. The replacement makefiles are under generate/unix, and there is 
2208a 
2209top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
2210
2211Updates for Unix makefiles:
22121) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
22132) Update linker flags (move to end of command line) for AcpiExec 
2214utility. 
2215Guan Chao.
2216
2217Split ACPICA initialization functions to new file, utxfinit.c. Split from 
2218utxface.c to improve modularity and reduce file size.
2219
2220Example Code and Data Size: These are the sizes for the OS-independent 
2221acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2222debug version of the code includes the debug output trace mechanism and 
2223has a 
2224much larger code and data size.
2225
2226  Previous Release:
2227    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2228    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2229  Current Release:
2230    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2231    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2232
2233
22342) iASL Compiler/Disassembler and Tools:
2235
2236iASL: Fixed a problem with constant folding for fixed-length constant 
2237expressions. The constant-folding code was not being invoked for constant 
2238expressions that allow the use of type 3/4/5 opcodes to generate 
2239constants 
2240for expressions such as ByteConstExpr, WordConstExpr, etc. This could 
2241result 
2242in the generation of invalid AML bytecode. ACPICA BZ 970.
2243
2244iASL: Fixed a generation issue on newer versions of Bison. Newer versions 
2245apparently automatically emit some of the necessary externals. This 
2246change 
2247handles these versions in order to eliminate generation warnings.
2248
2249Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
2250
2251Disassembler: Add support to decode _PLD buffers. The decoded buffer 
2252appears 
2253within comments in the output file.
2254
2255Debugger: Fixed a regression with the "Threads" command where 
2256AE_BAD_PARAMETER was always returned.
2257
2258----------------------------------------
225911 July 2012. Summary of changes for version 20120711:
2260
22611) ACPICA Kernel-resident Subsystem:
2262
2263Fixed a possible fault in the return package object repair code. Fixes a 
2264problem that can occur when a lone package object is wrapped with an 
2265outer 
2266package object in order to force conformance to the ACPI specification. 
2267Can 
2268affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 
2269_DLM, 
2270_CSD, _PSD, _TSD.
2271
2272Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 
2273PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 
2274ARB_DIS bit must be implemented in the host-dependent C3 processor power 
2275state 
2276support. Note, ARB_DIS is obsolete and only applies to older chipsets, 
2277both 
2278Intel and other vendors. (for Intel: ICH4-M and earlier)
2279
2280This change removes the code to disable/enable bus master arbitration 
2281during 
2282suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 
2283causes 
2284resume problems on some machines. The change has been in use for over 
2285seven 
2286years within Linux.
2287
2288Implemented two new external interfaces to support host-directed dynamic 
2289ACPI 
2290table load and unload. They are intended to simplify the host 
2291implementation 
2292of hot-plug support:
2293  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
2294  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 
2295table.
2296See the ACPICA reference for additional details. Adds one new file, 
2297components/tables/tbxfload.c
2298
2299Implemented and deployed two new interfaces for errors and warnings that 
2300are 
2301known to be caused by BIOS/firmware issues:
2302  AcpiBiosError: Prints "ACPI Firmware Error" message.
2303  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
2304Deployed these new interfaces in the ACPICA Table Manager code for ACPI 
2305table 
2306and FADT errors. Additional deployment to be completed as appropriate in 
2307the 
2308future. The associated conditional macros are ACPI_BIOS_ERROR and 
2309ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 
2310ACPICA 
2311BZ 
2312843.
2313
2314Implicit notify support: ensure that no memory allocation occurs within a 
2315critical region. This fix moves a memory allocation outside of the time 
2316that a 
2317spinlock is held. Fixes issues on systems that do not allow this 
2318behavior. 
2319Jung-uk Kim.
2320
2321Split exception code utilities and tables into a new file, 
2322utilities/utexcep.c
2323
2324Example Code and Data Size: These are the sizes for the OS-independent 
2325acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2326debug 
2327version of the code includes the debug output trace mechanism and has a 
2328much 
2329larger code and data size.
2330
2331  Previous Release:
2332    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2333    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2334  Current Release:
2335    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2336    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2337
2338
23392) iASL Compiler/Disassembler and Tools:
2340
2341iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 
2342of 
23430. Jung-uk Kim.
2344
2345Debugger: Enhanced the "tables" command to emit additional information 
2346about 
2347the current set of ACPI tables, including the owner ID and flags decode.
2348
2349Debugger: Reimplemented the "unload" command to use the new 
2350AcpiUnloadParentTable external interface. This command was disable 
2351previously 
2352due to need for an unload interface.
2353
2354AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 
2355option 
2356will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
2357
2358----------------------------------------
235920 June 2012. Summary of changes for version 20120620:
2360
2361
23621) ACPICA Kernel-resident Subsystem:
2363
2364Implemented support to expand the "implicit notify" feature to allow 
2365multiple 
2366devices to be notified by a single GPE. This feature automatically 
2367generates a 
2368runtime device notification in the absence of a BIOS-provided GPE control 
2369method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 
2370notify is 
2371provided by ACPICA for Windows compatibility, and is a workaround for 
2372BIOS 
2373AML 
2374code errors. See the description of the AcpiSetupGpeForWake interface in 
2375the 
2376APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
2377
2378Changed some comments and internal function names to simplify and ensure 
2379correctness of the Linux code translation. No functional changes.
2380
2381Example Code and Data Size: These are the sizes for the OS-independent 
2382acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2383debug 
2384version of the code includes the debug output trace mechanism and has a 
2385much 
2386larger code and data size.
2387
2388  Previous Release:
2389    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2390    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2391  Current Release:
2392    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2393    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2394
2395
23962) iASL Compiler/Disassembler and Tools:
2397
2398Disassembler: Added support to emit short, commented descriptions for the 
2399ACPI 
2400predefined names in order to improve the readability of the disassembled 
2401output. ACPICA BZ 959. Changes include:
2402  1) Emit descriptions for all standard predefined names (_INI, _STA, 
2403_PRW, 
2404etc.)
2405  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
2406  3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 
2407etc.)
2408
2409AcpiSrc: Fixed several long-standing Linux code translation issues. 
2410Argument 
2411descriptions in function headers are now translated properly to lower 
2412case 
2413and 
2414underscores. ACPICA BZ 961. Also fixes translation problems such as 
2415these: 
2416(old -> new)
2417  i_aSL -> iASL
2418  00-7_f -> 00-7F
2419  16_k -> 16K
2420  local_fADT -> local_FADT
2421  execute_oSI -> execute_OSI
2422
2423iASL: Fixed a problem where null bytes were inadvertently emitted into 
2424some 
2425listing files.
2426
2427iASL: Added the existing debug options to the standard help screen. There 
2428are 
2429no longer two different help screens. ACPICA BZ 957.
2430
2431AcpiHelp: Fixed some typos in the various predefined name descriptions. 
2432Also 
2433expand some of the descriptions where appropriate.
2434
2435iASL: Fixed the -ot option (display compile times/statistics). Was not 
2436working 
2437properly for standard output; only worked for the debug file case.
2438
2439----------------------------------------
244018 May 2012. Summary of changes for version 20120518:
2441
2442
24431) ACPICA Core Subsystem:
2444
2445Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 
2446defined 
2447to block until asynchronous events such as notifies and GPEs have 
2448completed. 
2449Within ACPICA, it is only called before a notify or GPE handler is 
2450removed/uninstalled. It also may be useful for the host OS within related 
2451drivers such as the Embedded Controller driver. See the ACPICA reference 
2452for 
2453additional information. ACPICA BZ 868.
2454
2455ACPI Tables: Added a new error message for a possible overflow failure 
2456during 
2457the conversion of FADT 32-bit legacy register addresses to internal 
2458common 
245964-
2460bit GAS structure representation. The GAS has a one-byte "bit length" 
2461field, 
2462thus limiting the register length to 255 bits. ACPICA BZ 953.
2463
2464Example Code and Data Size: These are the sizes for the OS-independent 
2465acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2466debug 
2467version of the code includes the debug output trace mechanism and has a 
2468much 
2469larger code and data size.
2470
2471  Previous Release:
2472    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2473    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2474  Current Release:
2475    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2476    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2477
2478
24792) iASL Compiler/Disassembler and Tools:
2480
2481iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 
2482macro. 
2483This keyword was added late in the ACPI 5.0 release cycle and was not 
2484implemented until now.
2485
2486Disassembler: Added support for Operation Region externals. Adds missing 
2487support for operation regions that are defined in another table, and 
2488referenced locally via a Field or BankField ASL operator. Now generates 
2489the 
2490correct External statement.
2491
2492Disassembler: Several additional fixes for the External() statement 
2493generation 
2494related to some ASL operators. Also, order the External() statements 
2495alphabetically in the disassembler output. Fixes the External() 
2496generation 
2497for 
2498the Create* field, Alias, and Scope operators:
2499 1) Create* buffer field operators - fix type mismatch warning on 
2500disassembly
2501 2) Alias - implement missing External support
2502 3) Scope - fix to make sure all necessary externals are emitted.
2503
2504iASL: Improved pathname support. For include files, merge the prefix 
2505pathname 
2506with the file pathname and eliminate unnecessary components. Convert 
2507backslashes in all pathnames to forward slashes, for readability. Include 
2508file 
2509pathname changes affect both #include and Include() type operators.
2510
2511iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 
2512end 
2513of a valid line by inserting a newline and then returning the EOF during 
2514the 
2515next call to GetNextLine. Prevents the line from being ignored due to EOF 
2516condition.
2517
2518iASL: Implemented some changes to enhance the IDE support (-vi option.) 
2519Error 
2520and Warning messages are now correctly recognized for both the source 
2521code 
2522browser and the global error and warning counts.
2523
2524----------------------------------------
252520 April 2012. Summary of changes for version 20120420:
2526
2527
25281) ACPICA Core Subsystem:
2529
2530Implemented support for multiple notify handlers. This change adds 
2531support 
2532to 
2533allow multiple system and device notify handlers on Device, Thermal Zone, 
2534and 
2535Processor objects. This can simplify the host OS notification 
2536implementation. 
2537Also re-worked and restructured the entire notify support code to 
2538simplify 
2539handler installation, handler removal, notify event queuing, and notify 
2540dispatch to handler(s). Note: there can still only be two global notify 
2541handlers - one for system notifies and one for device notifies. There are 
2542no 
2543changes to the existing handler install/remove interfaces. Lin Ming, Bob 
2544Moore, Rafael Wysocki.
2545
2546Fixed a regression in the package repair code where the object reference 
2547count was calculated incorrectly. Regression was introduced in the commit 
2548"Support to add Package wrappers".
2549
2550Fixed a couple possible memory leaks in the AML parser, in the error 
2551recovery 
2552path. Jesper Juhl, Lin Ming.
2553
2554Example Code and Data Size: These are the sizes for the OS-independent 
2555acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2556debug version of the code includes the debug output trace mechanism and 
2557has a 
2558much larger code and data size.
2559
2560  Previous Release:
2561    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2562    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2563  Current Release:
2564    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2565    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2566
2567
25682) iASL Compiler/Disassembler and Tools:
2569
2570iASL: Fixed a problem with the resource descriptor support where the 
2571length 
2572of the StartDependentFn and StartDependentFnNoPrio descriptors were not 
2573included in cumulative descriptor offset, resulting in incorrect values 
2574for 
2575resource tags within resource descriptors appearing after a 
2576StartDependent* 
2577descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
2578
2579iASL and Preprocessor: Implemented full support for the #line directive 
2580to 
2581correctly track original source file line numbers through the .i 
2582preprocessor 
2583output file - for error and warning messages.
2584
2585iASL: Expand the allowable byte constants for address space IDs. 
2586Previously, 
2587the allowable range was 0x80-0xFF (user-defined spaces), now the range is 
25880x0A-0xFF to allow for custom and new IDs without changing the compiler.
2589
2590iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
2591
2592iASL: Add option to completely disable the preprocessor (-Pn).
2593
2594iASL: Now emit all error/warning messages to standard error (stderr) by 
2595default (instead of the previous stdout).
2596
2597ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 
2598Update 
2599for resource descriptor offset fix above. Update/cleanup error output 
2600routines. Enable and send iASL errors/warnings to an error logfile 
2601(error.txt). Send all other iASL output to a logfile (compiler.txt). 
2602Fixed 
2603several extraneous "unrecognized operator" messages.
2604
2605----------------------------------------
260620 March 2012. Summary of changes for version 20120320:
2607
2608
26091) ACPICA Core Subsystem:
2610
2611Enhanced the sleep/wake interfaces to optionally execute the _GTS method 
2612(Going To Sleep) and the _BFS method (Back From Sleep). Windows 
2613apparently 
2614does not execute these methods, and therefore these methods are often 
2615untested. It has been seen on some systems where the execution of these 
2616methods causes errors and also prevents the machine from entering S5. It 
2617is 
2618therefore suggested that host operating systems do not execute these 
2619methods 
2620by default. In the future, perhaps these methods can be optionally 
2621executed 
2622based on the age of the system and/or what is the newest version of 
2623Windows 
2624that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 
2625and 
2626AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 
2627Ming.
2628
2629Fixed a problem where the length of the local/common FADT was set too 
2630early. 
2631The local FADT table length cannot be set to the common length until the 
2632original length has been examined. There is code that checks the table 
2633length 
2634and sets various fields appropriately. This can affect older machines 
2635with 
2636early FADT versions. For example, this can cause inadvertent writes to 
2637the 
2638CST_CNT register. Julian Anastasov.
2639
2640Fixed a mapping issue related to a physical table override. Use the 
2641deferred 
2642mapping mechanism for tables loaded via the physical override OSL 
2643interface. 
2644This allows for early mapping before the virtual memory manager is 
2645available. 
2646Thomas Renninger, Bob Moore.
2647
2648Enhanced the automatic return-object repair code: Repair a common problem 
2649with 
2650predefined methods that are defined to return a variable-length Package 
2651of 
2652sub-objects. If there is only one sub-object, some BIOS ASL code 
2653mistakenly 
2654simply returns the single object instead of a Package with one sub-
2655object. 
2656This new support will repair this error by wrapping a Package object 
2657around 
2658the original object, creating the correct and expected Package with one 
2659sub-
2660object. Names that can be repaired in this manner include: _ALR, _CSD, 
2661_HPX, 
2662_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 
2663939.
2664
2665Changed the exception code returned for invalid ACPI paths passed as 
2666parameters to external interfaces such as AcpiEvaluateObject. Was 
2667AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
2668
2669Example Code and Data Size: These are the sizes for the OS-independent 
2670acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2671debug 
2672version of the code includes the debug output trace mechanism and has a 
2673much 
2674larger code and data size.
2675
2676  Previous Release:
2677    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2678    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2679  Current Release:
2680    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2681    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2682
2683
26842) iASL Compiler/Disassembler and Tools:
2685
2686iASL: Added the infrastructure and initial implementation of a integrated 
2687C-
2688like preprocessor. This will simplify BIOS development process by 
2689eliminating 
2690the need for a separate preprocessing step during builds. On Windows, it 
2691also 
2692eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 
2693features including full #define() macro support are still under 
2694development. 
2695These preprocessor directives are supported:
2696    #define
2697    #elif
2698    #else
2699    #endif
2700    #error
2701    #if
2702    #ifdef
2703    #ifndef
2704    #include
2705    #pragma message
2706    #undef
2707    #warning
2708In addition, these new command line options are supported:
2709    -D <symbol> Define symbol for preprocessor use
2710    -li         Create preprocessed output file (*.i)
2711    -P          Preprocess only and create preprocessor output file (*.i)
2712
2713Table Compiler: Fixed a problem where the equals operator within an 
2714expression 
2715did not work properly.
2716
2717Updated iASL to use the current versions of Bison/Flex. Updated the 
2718Windows 
2719project file to invoke these tools from the standard location. ACPICA BZ 
2720904. 
2721Versions supported:
2722    Flex for Windows:  V2.5.4
2723    Bison for Windows: V2.4.1
2724
2725----------------------------------------
272615 February 2012. Summary of changes for version 20120215:
2727
2728
27291) ACPICA Core Subsystem:
2730
2731There have been some major changes to the sleep/wake support code, as 
2732described below (a - e).
2733
2734a) The AcpiLeaveSleepState has been split into two interfaces, similar to 
2735AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 
2736AcpiLeaveSleepStatePrep. This allows the host to perform actions between 
2737the 
2738time the _BFS method is called and the _WAK method is called. NOTE: all 
2739hosts 
2740must update their wake/resume code or else sleep/wake will not work 
2741properly. 
2742Rafael Wysocki.
2743
2744b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 
2745_WAK 
2746method. Some machines require that the GPEs are enabled before the _WAK 
2747method 
2748is executed. Thomas Renninger.
2749
2750c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 
2751bit. 
2752Some BIOS code assumes that WAK_STS will be cleared on resume and use it 
2753to 
2754determine whether the system is rebooting or resuming. Matthew Garrett.
2755
2756d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 
2757Sleep) to 
2758match the ACPI specification requirement. Rafael Wysocki.
2759
2760e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 
2761registers within the V5 FADT. This support adds two new files: 
2762hardware/hwesleep.c implements the support for the new registers. Moved 
2763all 
2764sleep/wake external interfaces to hardware/hwxfsleep.c.
2765
2766
2767Added a new OSL interface for ACPI table overrides, 
2768AcpiOsPhysicalTableOverride. This interface allows the host to override a 
2769table via a physical address, instead of the logical address required by 
2770AcpiOsTableOverride. This simplifies the host implementation. Initial 
2771implementation by Thomas Renninger. The ACPICA implementation creates a 
2772single 
2773shared function for table overrides that attempts both a logical and a 
2774physical override.
2775
2776Expanded the OSL memory read/write interfaces to 64-bit data 
2777(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 
2778transfer support for GAS register structures passed to AcpiRead and 
2779AcpiWrite.
2780
2781Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 
2782custom 
2783build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 
2784model. 
2785See the ACPICA reference for details. ACPICA BZ 942. This option removes 
2786about 
278710% of the code and 5% of the static data, and the following hardware 
2788ACPI 
2789features become unavailable:
2790    PM Event and Control registers
2791    SCI interrupt (and handler)
2792    Fixed Events
2793    General Purpose Events (GPEs)
2794    Global Lock
2795    ACPI PM timer
2796    FACS table (Waking vectors and Global Lock)
2797
2798Updated the unix tarball directory structure to match the ACPICA git 
2799source 
2800tree. This ensures that the generic unix makefiles work properly (in 
2801generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ 
2802867.
2803
2804Updated the return value of the _REV predefined method to integer value 5 
2805to 
2806reflect ACPI 5.0 support.
2807
2808Moved the external ACPI PM timer interface prototypes to the public 
2809acpixf.h 
2810file where they belong.
2811
2812Example Code and Data Size: These are the sizes for the OS-independent 
2813acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2814debug 
2815version of the code includes the debug output trace mechanism and has a 
2816much 
2817larger code and data size.
2818
2819  Previous Release:
2820    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2821    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2822  Current Release:
2823    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2824    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2825
2826
28272) iASL Compiler/Disassembler and Tools:
2828
2829Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 
2830descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 
2831incorrectly displayed.
2832
2833AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 
2834specification.
2835
2836----------------------------------------
283711 January 2012. Summary of changes for version 20120111:
2838
2839
28401) ACPICA Core Subsystem:
2841
2842Implemented a new mechanism to allow host device drivers to check for 
2843address 
2844range conflicts with ACPI Operation Regions. Both SystemMemory and 
2845SystemIO 
2846address spaces are supported. A new external interface, 
2847AcpiCheckAddressRange, 
2848allows drivers to check an address range against the ACPI namespace. See 
2849the 
2850ACPICA reference for additional details. Adds one new file, 
2851utilities/utaddress.c. Lin Ming, Bob Moore.
2852
2853Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 
2854Control 
2855and 
2856Status registers, update the ACPI 5.0 flags, and update internal data 
2857structures to handle an FADT larger than 256 bytes. The size of the ACPI 
28585.0 
2859FADT is 268 bytes.
2860
2861Updated all ACPICA copyrights and signons to 2012. Added the 2012 
2862copyright to 
2863all module headers and signons, including the standard Linux header. This 
2864affects virtually every file in the ACPICA core subsystem, iASL compiler, 
2865and 
2866all ACPICA utilities.
2867
2868Example Code and Data Size: These are the sizes for the OS-independent 
2869acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
2870debug 
2871version of the code includes the debug output trace mechanism and has a 
2872much 
2873larger code and data size.
2874
2875  Previous Release:
2876    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2877    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2878  Current Release:
2879    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2880    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2881
2882
28832) iASL Compiler/Disassembler and Tools:
2884
2885Disassembler: fixed a problem with the automatic resource tag generation 
2886support. Fixes a problem where the resource tags are inadvertently not 
2887constructed if the table being disassembled contains external references 
2888to 
2889control methods. Moved the actual construction of the tags to after the 
2890final 
2891namespace is constructed (after 2nd parse is invoked due to external 
2892control 
2893method references.) ACPICA BZ 941.
2894
2895Table Compiler: Make all "generic" operators caseless. These are the 
2896operators 
2897like UINT8, String, etc. Making these caseless improves ease-of-use. 
2898ACPICA BZ 
2899934.
2900
2901----------------------------------------
290223 November 2011. Summary of changes for version 20111123:
2903
29040) ACPI 5.0 Support:
2905
2906This release contains full support for the ACPI 5.0 specification, as 
2907summarized below.
2908
2909Reduced Hardware Support:
2910-------------------------
2911
2912This support allows for ACPI systems without the usual ACPI hardware. 
2913This 
2914support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 
2915will 
2916not attempt to initialize or use any of the usual ACPI hardware. Note, 
2917when 
2918this flag is set, all of the following ACPI hardware is assumed to be not 
2919present and is not initialized or accessed:
2920
2921    General Purpose Events (GPEs)
2922    Fixed Events (PM1a/PM1b and PM Control)
2923    Power Management Timer and Console Buttons (power/sleep)
2924    Real-time Clock Alarm
2925    Global Lock
2926    System Control Interrupt (SCI)
2927    The FACS is assumed to be non-existent
2928
2929ACPI Tables:
2930------------
2931
2932All new tables and updates to existing tables are fully supported in the 
2933ACPICA headers (for use by device drivers), the disassembler, and the 
2934iASL 
2935Data Table Compiler. ACPI 5.0 defines these new tables:
2936
2937    BGRT        /* Boot Graphics Resource Table */
2938    DRTM        /* Dynamic Root of Trust for Measurement table */
2939    FPDT        /* Firmware Performance Data Table */
2940    GTDT        /* Generic Timer Description Table */
2941    MPST        /* Memory Power State Table */
2942    PCCT        /* Platform Communications Channel Table */
2943    PMTT        /* Platform Memory Topology Table */
2944    RASF        /* RAS Feature table */
2945
2946Operation Regions/SpaceIDs:
2947---------------------------
2948
2949All new operation regions are fully supported by the iASL compiler, the 
2950disassembler, and the ACPICA runtime code (for dispatch to region 
2951handlers.) 
2952The new operation region Space IDs are:
2953
2954    GeneralPurposeIo
2955    GenericSerialBus
2956
2957Resource Descriptors:
2958---------------------
2959
2960All new ASL resource descriptors are fully supported by the iASL 
2961compiler, 
2962the 
2963ASL/AML disassembler, and the ACPICA runtime Resource Manager code 
2964(including 
2965all new predefined resource tags). New descriptors are:
2966
2967    FixedDma
2968    GpioIo
2969    GpioInt
2970    I2cSerialBus
2971    SpiSerialBus
2972    UartSerialBus
2973
2974ASL/AML Operators, New and Modified:
2975------------------------------------
2976
2977One new operator is added, the Connection operator, which is used to 
2978associate 
2979a GeneralPurposeIo or GenericSerialBus resource descriptor with 
2980individual 
2981field objects within an operation region. Several new protocols are 
2982associated 
2983with the AccessAs operator. All are fully supported by the iASL compiler, 
2984disassembler, and runtime ACPICA AML interpreter:
2985
2986    Connection                      // Declare Field Connection 
2987attributes
2988    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
2989    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes 
2990Protocol
2991    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
2992    RawDataBuffer                       // Data type for Vendor Data 
2993fields
2994
2995Predefined ASL/AML Objects:
2996---------------------------
2997
2998All new predefined objects/control-methods are supported by the iASL 
2999compiler 
3000and the ACPICA runtime validation/repair (arguments and return values.) 
3001New 
3002predefined names include the following:
3003
3004Standard Predefined Names (Objects or Control Methods):
3005    _AEI, _CLS, _CPC, _CWS, _DEP,
3006    _DLM, _EVT, _GCP, _CRT, _GWS,
3007    _HRV, _PRE, _PSE, _SRT, _SUB.
3008
3009Resource Tags (Names used to access individual fields within resource 
3010descriptors):
3011    _DBT, _DPL, _DRS, _END, _FLC,
3012    _IOR, _LIN, _MOD, _PAR, _PHA,
3013    _PIN, _PPI, _POL, _RXL, _SLV,
3014    _SPE, _STB, _TXL, _VEN.
3015
3016ACPICA External Interfaces:
3017---------------------------
3018
3019Several new interfaces have been defined for use by ACPI-related device 
3020drivers and other host OS services:
3021
3022AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 
3023to 
3024acquire and release AML mutexes that are defined in the DSDT/SSDT tables 
3025provided by the BIOS. They are intended to be used in conjunction with 
3026the 
3027ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 
3028mutual exclusion with the AML code/interpreter.
3029
3030AcpiGetEventResources: Returns the (formatted) resource descriptors as 
3031defined 
3032by the ACPI 5.0 _AEI object (ACPI Event Information).  This object 
3033provides 
3034resource descriptors associated with hardware-reduced platform events, 
3035similar 
3036to the AcpiGetCurrentResources interface.
3037
3038Operation Region Handlers: For General Purpose IO and Generic Serial Bus 
3039operation regions, information about the Connection() object and any 
3040optional 
3041length information is passed to the region handler within the Context 
3042parameter.
3043
3044AcpiBufferToResource: This interface converts a raw AML buffer containing 
3045a 
3046resource template or resource descriptor to the ACPI_RESOURCE internal 
3047format 
3048suitable for use by device drivers. Can be used by an operation region 
3049handler 
3050to convert the Connection() buffer object into a ACPI_RESOURCE.
3051
3052Miscellaneous/Tools/TestSuites: 
3053-------------------------------
3054
3055Support for extended _HID names (Four alpha characters instead of three).
3056Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
3057Support for ACPI 5.0 features in the ASLTS test suite.
3058Fully updated documentation (ACPICA and iASL reference documents.)
3059
3060ACPI Table Definition Language:
3061-------------------------------
3062
3063Support for this language was implemented and released as a subsystem of 
3064the 
3065iASL compiler in 2010. (See the iASL compiler User Guide.)
3066
3067
3068Non-ACPI 5.0 changes for this release:
3069--------------------------------------
3070
30711) ACPICA Core Subsystem:
3072
3073Fix a problem with operation region declarations where a failure can 
3074occur 
3075if 
3076the region name and an argument that evaluates to an object (such as the 
3077region address) are in different namespace scopes. Lin Ming, ACPICA BZ 
3078937.
3079
3080Do not abort an ACPI table load if an invalid space ID is found within. 
3081This 
3082will be caught later if the offending method is executed. ACPICA BZ 925.
3083
3084Fixed an issue with the FFixedHW space ID where the ID was not always 
3085recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
3086
3087Fixed a problem with the 32-bit generation of the unix-specific OSL 
3088(osunixxf.c). Lin Ming, ACPICA BZ 936.
3089
3090Several changes made to enable generation with the GCC 4.6 compiler. 
3091ACPICA BZ 
3092935.
3093
3094New error messages: Unsupported I/O requests (not 8/16/32 bit), and 
3095Index/Bank 
3096field registers out-of-range.
3097
30982) iASL Compiler/Disassembler and Tools:
3099
3100iASL: Implemented the __PATH__ operator, which returns the full pathname 
3101of 
3102the current source file.
3103
3104AcpiHelp: Automatically display expanded keyword information for all ASL 
3105operators.
3106
3107Debugger: Add "Template" command to disassemble/dump resource template 
3108buffers.
3109
3110Added a new master script to generate and execute the ASLTS test suite. 
3111Automatically handles 32- and 64-bit generation. See tests/aslts.sh
3112
3113iASL: Fix problem with listing generation during processing of the 
3114Switch() 
3115operator where AML listing was disabled until the entire Switch block was 
3116completed.
3117
3118iASL: Improve support for semicolon statement terminators. Fix "invalid 
3119character" message for some cases when the semicolon is used. Semicolons 
3120are 
3121now allowed after every <Term> grammar element. ACPICA BZ 927.
3122
3123iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 
3124923.
3125
3126Disassembler: Fix problem with disassembly of the DataTableRegion 
3127operator 
3128where an inadvertent "Unhandled deferred opcode" message could be 
3129generated.
3130
31313) Example Code and Data Size
3132
3133These are the sizes for the OS-independent acpica.lib produced by the 
3134Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
3135includes the debug output trace mechanism and has a much larger code and 
3136data 
3137size.
3138
3139  Previous Release:
3140    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3141    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3142  Current Release:
3143    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
3144    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
3145
3146----------------------------------------
314722 September 2011. Summary of changes for version 20110922:
3148
31490) ACPI 5.0 News:
3150
3151Support for ACPI 5.0 in ACPICA has been underway for several months and 
3152will 
3153be released at the same time that ACPI 5.0 is officially released.
3154
3155The ACPI 5.0 specification is on track for release in the next few 
3156months.
3157 
31581) ACPICA Core Subsystem:
3159
3160Fixed a problem where the maximum sleep time for the Sleep() operator was 
3161intended to be limited to two seconds, but was inadvertently limited to 
316220 
3163seconds instead.
3164
3165Linux and Unix makefiles: Added header file dependencies to ensure 
3166correct 
3167generation of ACPICA core code and utilities. Also simplified the 
3168makefiles 
3169considerably through the use of the vpath variable to specify search 
3170paths. 
3171ACPICA BZ 924.
3172
31732) iASL Compiler/Disassembler and Tools:
3174
3175iASL: Implemented support to check the access length for all fields 
3176created to 
3177access named Resource Descriptor fields. For example, if a resource field 
3178is 
3179defined to be two bits, a warning is issued if a CreateXxxxField() is 
3180used 
3181with an incorrect bit length. This is implemented for all current 
3182resource 
3183descriptor names. ACPICA BZ 930.
3184  
3185Disassembler: Fixed a byte ordering problem with the output of 24-bit and 
318656-
3187bit integers.
3188
3189iASL: Fixed a couple of issues associated with variable-length package 
3190objects. 1) properly handle constants like One, Ones, Zero -- do not make 
3191a 
3192VAR_PACKAGE when these are used as a package length. 2) Allow the 
3193VAR_PACKAGE 
3194opcode (in addition to PACKAGE) when validating object types for 
3195predefined 
3196names.
3197
3198iASL: Emit statistics for all output files (instead of just the ASL input 
3199and 
3200AML output). Includes listings, hex files, etc.
3201
3202iASL: Added -G option to the table compiler to allow the compilation of 
3203custom 
3204ACPI tables. The only part of a table that is required is the standard 
320536-
3206byte 
3207ACPI header.
3208
3209AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 
3210headers), 
3211which also adds correct 64-bit support. Also, now all output filenames 
3212are 
3213completely lower case.
3214
3215AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 
3216loading table files. A warning is issued for any such tables. The only 
3217exception is an FADT. This also fixes a possible fault when attempting to 
3218load 
3219non-AML tables. ACPICA BZ 932.
3220
3221AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 
3222a 
3223missing table terminator could cause a fault when using the -p option.
3224
3225AcpiSrc: Fixed a possible divide-by-zero fault when generating file 
3226statistics.
3227
32283) Example Code and Data Size
3229
3230These are the sizes for the OS-independent acpica.lib produced by the 
3231Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 
3232includes the debug output trace mechanism and has a much larger code and 
3233data 
3234size.
3235
3236  Previous Release (VC 9.0):
3237    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3238    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3239  Current Release (VC 9.0):
3240    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3241    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3242
3243
3244----------------------------------------
324523 June 2011. Summary of changes for version 20110623:
3246
32471) ACPI CA Core Subsystem:
3248
3249Updated the predefined name repair mechanism to not attempt repair of a 
3250_TSS 
3251return object if a _PSS object is present. We can only sort the _TSS 
3252return 
3253package if there is no _PSS within the same scope. This is because if 
3254_PSS 
3255is 
3256present, the ACPI specification dictates that the _TSS Power Dissipation 
3257field 
3258is to be ignored, and therefore some BIOSs leave garbage values in the 
3259_TSS 
3260Power field(s). In this case, it is best to just return the _TSS package 
3261as-
3262is. Reported by, and fixed with assistance from Fenghua Yu.
3263
3264Added an option to globally disable the control method return value 
3265validation 
3266and repair. This runtime option can be used to disable return value 
3267repair 
3268if 
3269this is causing a problem on a particular machine. Also added an option 
3270to 
3271AcpiExec (-dr) to set this disable flag.
3272
3273All makefiles and project files: Major changes to improve generation of 
3274ACPICA 
3275tools. ACPICA BZ 912:
3276    Reduce default optimization levels to improve compatibility
3277    For Linux, add strict-aliasing=0 for gcc 4
3278    Cleanup and simplify use of command line defines
3279    Cleanup multithread library support
3280    Improve usage messages
3281
3282Linux-specific header: update handling of THREAD_ID and pthread. For the 
328332-
3284bit case, improve casting to eliminate possible warnings, especially with 
3285the 
3286acpica tools.
3287
3288Example Code and Data Size: These are the sizes for the OS-independent 
3289acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3290debug 
3291version of the code includes the debug output trace mechanism and has a 
3292much 
3293larger code and data size.
3294
3295  Previous Release (VC 9.0):
3296    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3297    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3298  Current Release (VC 9.0):
3299    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3300    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3301
33022) iASL Compiler/Disassembler and Tools:
3303
3304With this release, a new utility named "acpihelp" has been added to the 
3305ACPICA 
3306package. This utility summarizes the ACPI specification chapters for the 
3307ASL 
3308and AML languages. It generates under Linux/Unix as well as Windows, and 
3309provides the following functionality:
3310    Find/display ASL operator(s) -- with description and syntax.
3311    Find/display ASL keyword(s) -- with exact spelling and descriptions.
3312    Find/display ACPI predefined name(s) -- with description, number
3313        of arguments, and the return value data type.
3314    Find/display AML opcode name(s) -- with opcode, arguments, and 
3315grammar.
3316    Decode/display AML opcode -- with opcode name, arguments, and 
3317grammar.
3318
3319Service Layers: Make multi-thread support configurable. Conditionally 
3320compile 
3321the multi-thread support so that threading libraries will not be linked 
3322if 
3323not 
3324necessary. The only tool that requires multi-thread support is AcpiExec.
3325
3326iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 
3327of 
3328Bison appear to want the interface to yyerror to be a const char * (or at 
3329least this is a problem when generating iASL on some systems.) ACPICA BZ 
3330923 
3331Pierre Lejeune.
3332
3333Tools: Fix for systems where O_BINARY is not defined. Only used for 
3334Windows 
3335versions of the tools.
3336
3337----------------------------------------
333827 May 2011. Summary of changes for version 20110527:
3339
33401) ACPI CA Core Subsystem:
3341
3342ASL Load() operator: Reinstate most restrictions on the incoming ACPI 
3343table 
3344signature. Now, only allow SSDT, OEMx, and a null signature. History:
3345    1) Originally, we checked the table signature for "SSDT" or "PSDT".
3346       (PSDT is now obsolete.)
3347    2) We added support for OEMx tables, signature "OEM" plus a fourth
3348       "don't care" character.
3349    3) Valid tables were encountered with a null signature, so we just
3350       gave up on validating the signature, (05/2008).
3351    4) We encountered non-AML tables such as the MADT, which caused
3352       interpreter errors and kernel faults. So now, we once again allow
3353       only SSDT, OEMx, and now, also a null signature. (05/2011).
3354
3355Added the missing _TDL predefined name to the global name list in order 
3356to 
3357enable validation. Affects both the core ACPICA code and the iASL 
3358compiler.
3359
3360Example Code and Data Size: These are the sizes for the OS-independent 
3361acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3362debug 
3363version of the code includes the debug output trace mechanism and has a 
3364much 
3365larger code and data size.
3366
3367  Previous Release (VC 9.0):
3368    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3369    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3370  Current Release (VC 9.0):
3371    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3372    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3373
33742) iASL Compiler/Disassembler and Tools:
3375
3376Debugger/AcpiExec: Implemented support for "complex" method arguments on 
3377the 
3378debugger command line. This adds support beyond simple integers -- 
3379including 
3380Strings, Buffers, and Packages. Includes support for nested packages. 
3381Increased the default command line buffer size to accommodate these 
3382arguments. 
3383See the ACPICA reference for details and syntax. ACPICA BZ 917.
3384 
3385Debugger/AcpiExec: Implemented support for "default" method arguments for 
3386the 
3387Execute/Debug command. Now, the debugger will always invoke a control 
3388method 
3389with the required number of arguments -- even if the command line 
3390specifies 
3391none or insufficient arguments. It uses default integer values for any 
3392missing 
3393arguments. Also fixes a bug where only six method arguments maximum were 
3394supported instead of the required seven.
3395
3396Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 
3397and 
3398also return status in order to prevent buffer overruns. See the ACPICA 
3399reference for details and syntax. ACPICA BZ 921
3400
3401iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 
3402makefiles to simplify support for the two different but similar parser 
3403generators, bison and yacc.
3404
3405Updated the generic unix makefile for gcc 4. The default gcc version is 
3406now 
3407expected to be 4 or greater, since options specific to gcc 4 are used.
3408
3409----------------------------------------
341013 April 2011. Summary of changes for version 20110413:
3411
34121) ACPI CA Core Subsystem:
3413
3414Implemented support to execute a so-called "orphan" _REG method under the 
3415EC 
3416device. This change will force the execution of a _REG method underneath 
3417the 
3418EC 
3419device even if there is no corresponding operation region of type 
3420EmbeddedControl. Fixes a problem seen on some machines and apparently is 
3421compatible with Windows behavior. ACPICA BZ 875.
3422
3423Added more predefined methods that are eligible for automatic NULL 
3424package 
3425element removal. This change adds another group of predefined names to 
3426the 
3427list 
3428of names that can be repaired by having NULL package elements dynamically 
3429removed. This group are those methods that return a single variable-
3430length 
3431package containing simple data types such as integers, buffers, strings. 
3432This 
3433includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 
3434_PSL, 
3435_Sx, 
3436and _TZD. ACPICA BZ 914.
3437
3438Split and segregated all internal global lock functions to a new file, 
3439evglock.c.
3440
3441Updated internal address SpaceID for DataTable regions. Moved this 
3442internal 
3443space 
3444id in preparation for ACPI 5.0 changes that will include some new space 
3445IDs. 
3446This 
3447change should not affect user/host code.
3448
3449Example Code and Data Size: These are the sizes for the OS-independent 
3450acpica.lib 
3451produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
3452version of 
3453the code includes the debug output trace mechanism and has a much larger 
3454code 
3455and 
3456data size.
3457
3458  Previous Release (VC 9.0):
3459    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3460    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3461  Current Release (VC 9.0):
3462    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3463    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3464
34652) iASL Compiler/Disassembler and Tools:
3466
3467iASL/DTC: Major update for new grammar features. Allow generic data types 
3468in 
3469custom ACPI tables. Field names are now optional. Any line can be split 
3470to 
3471multiple lines using the continuation char (\). Large buffers now use 
3472line-
3473continuation character(s) and no colon on the continuation lines. See the 
3474grammar 
3475update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 
3476Moore.
3477
3478iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 
3479statements. 
3480Since the parser stuffs a "zero" as the return value for these statements 
3481(due 
3482to 
3483the underlying AML grammar), they were seen as "return with value" by the 
3484iASL 
3485semantic checking. They are now seen correctly as "null" return 
3486statements.
3487
3488iASL: Check if a_REG declaration has a corresponding Operation Region. 
3489Adds a 
3490check for each _REG to ensure that there is in fact a corresponding 
3491operation 
3492region declaration in the same scope. If not, the _REG method is not very 
3493useful 
3494since it probably won't be executed. ACPICA BZ 915.
3495
3496iASL/DTC: Finish support for expression evaluation. Added a new 
3497expression 
3498parser 
3499that implements c-style operator precedence and parenthesization. ACPICA 
3500bugzilla 
3501908.
3502
3503Disassembler/DTC: Remove support for () and <> style comments in data 
3504tables. 
3505Now 
3506that DTC has full expression support, we don't want to have comment 
3507strings 
3508that 
3509start with a parentheses or a less-than symbol. Now, only the standard /* 
3510and 
3511// 
3512comments are supported, as well as the bracket [] comments.
3513
3514AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 
3515"unusual" 
3516headers in the acpidump file. Update the header validation to support 
3517these 
3518tables. Problem introduced in previous AcpiXtract version in the change 
3519to 
3520support "wrong checksum" error messages emitted by acpidump utility.
3521
3522iASL: Add a * option to generate all template files (as a synonym for 
3523ALL) 
3524as 
3525in 
3526"iasl -T *" or "iasl -T ALL".
3527
3528iASL/DTC: Do not abort compiler on fatal errors. We do not want to 
3529completely 
3530abort the compiler on "fatal" errors, simply should abort the current 
3531compile. 
3532This allows multiple compiles with a single (possibly wildcard) compiler 
3533invocation.
3534
3535----------------------------------------
353616 March 2011. Summary of changes for version 20110316:
3537
35381) ACPI CA Core Subsystem:
3539
3540Fixed a problem caused by a _PRW method appearing at the namespace root 
3541scope 
3542during the setup of wake GPEs. A fault could occur if a _PRW directly 
3543under 
3544the 
3545root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
3546
3547Implemented support for "spurious" Global Lock interrupts. On some 
3548systems, a 
3549global lock interrupt can occur without the pending flag being set. Upon 
3550a 
3551GL 
3552interrupt, we now ensure that a thread is actually waiting for the lock 
3553before 
3554signaling GL availability. Rafael Wysocki, Bob Moore.
3555
3556Example Code and Data Size: These are the sizes for the OS-independent 
3557acpica.lib 
3558produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 
3559version of 
3560the code includes the debug output trace mechanism and has a much larger 
3561code 
3562and 
3563data size.
3564
3565  Previous Release (VC 9.0):
3566    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3567    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3568  Current Release (VC 9.0):
3569    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3570    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3571
35722) iASL Compiler/Disassembler and Tools:
3573
3574Implemented full support for the "SLIC" ACPI table. Includes support in 
3575the 
3576header files, disassembler, table compiler, and template generator. Bob 
3577Moore, 
3578Lin Ming.
3579
3580AcpiXtract: Correctly handle embedded comments and messages from 
3581AcpiDump. 
3582Apparently some or all versions of acpidump will occasionally emit a 
3583comment 
3584like 
3585"Wrong checksum", etc., into the dump file. This was causing problems for 
3586AcpiXtract. ACPICA BZ 905.
3587
3588iASL: Fix the Linux makefile by removing an inadvertent double file 
3589inclusion. 
3590ACPICA BZ 913.
3591
3592AcpiExec: Update installation of operation region handlers. Install one 
3593handler 
3594for a user-defined address space. This is used by the ASL test suite 
3595(ASLTS).
3596
3597----------------------------------------
359811 February 2011. Summary of changes for version 20110211:
3599
36001) ACPI CA Core Subsystem:
3601
3602Added a mechanism to defer _REG methods for some early-installed 
3603handlers. 
3604Most user handlers should be installed before call to 
3605AcpiEnableSubsystem. 
3606However, Event handlers and region handlers should be installed after 
3607AcpiInitializeObjects. Override handlers for the "default" regions should 
3608be 
3609installed early, however. This change executes all _REG methods for the 
3610default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 
3611chicken/egg issues between them. ACPICA BZ 848.
3612
3613Implemented an optimization for GPE detection. This optimization will 
3614simply 
3615ignore GPE registers that contain no enabled GPEs -- there is no need to 
3616read the register since this information is available internally. This 
3617becomes more important on machines with a large GPE space. ACPICA 
3618bugzilla 
3619884. Lin Ming. Suggestion from Joe Liu.
3620
3621Removed all use of the highly unreliable FADT revision field. The 
3622revision 
3623number in the FADT has been found to be completely unreliable and cannot 
3624be 
3625trusted. Only the actual table length can be used to infer the version. 
3626This 
3627change updates the ACPICA core and the disassembler so that both no 
3628longer 
3629even look at the FADT version and instead depend solely upon the FADT 
3630length.
3631
3632Fix an unresolved name issue for the no-debug and no-error-message source 
3633generation cases. The _AcpiModuleName was left undefined in these cases, 
3634but 
3635it is actually needed as a parameter to some interfaces. Define 
3636_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
3637
3638Split several large files (makefiles and project files updated)
3639  utglobal.c   -> utdecode.c
3640  dbcomds.c    -> dbmethod.c dbnames.c
3641  dsopcode.c   -> dsargs.c dscontrol.c
3642  dsload.c     -> dsload2.c
3643  aslanalyze.c -> aslbtypes.c aslwalks.c
3644
3645Example Code and Data Size: These are the sizes for the OS-independent 
3646acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3647debug version of the code includes the debug output trace mechanism and 
3648has 
3649a much larger code and data size.
3650
3651  Previous Release (VC 9.0):
3652    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3653    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3654  Current Release (VC 9.0):
3655    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3656    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3657
36582) iASL Compiler/Disassembler and Tools:
3659
3660iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 
3661These are useful C-style macros with the standard definitions. ACPICA 
3662bugzilla 898.
3663
3664iASL/DTC: Added support for integer expressions and labels. Support for 
3665full 
3666expressions for all integer fields in all ACPI tables. Support for labels 
3667in 
3668"generic" portions of tables such as UEFI. See the iASL reference manual.
3669
3670Debugger: Added a command to display the status of global handlers. The 
3671"handlers" command will display op region, fixed event, and miscellaneous 
3672global handlers. installation status -- and for op regions, whether 
3673default 
3674or user-installed handler will be used.
3675
3676iASL: Warn if reserved method incorrectly returns a value. Many 
3677predefined 
3678names are defined such that they do not return a value. If implemented as 
3679a 
3680method, issue a warning if such a name explicitly returns a value. ACPICA 
3681Bugzilla 855.
3682
3683iASL: Added detection of GPE method name conflicts. Detects a conflict 
3684where 
3685there are two GPE methods of the form _Lxy and _Exy in the same scope. 
3686(For 
3687example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
3688
3689iASL/DTC: Fixed a couple input scanner issues with comments and line 
3690numbers. Comment remover could get confused and miss a comment ending. 
3691Fixed 
3692a problem with line counter maintenance.
3693
3694iASL/DTC: Reduced the severity of some errors from fatal to error. There 
3695is 
3696no need to abort on simple errors within a field definition.
3697
3698Debugger: Simplified the output of the help command. All help output now 
3699in 
3700a single screen, instead of help subcommands. ACPICA Bugzilla 897.
3701
3702----------------------------------------
370312 January 2011. Summary of changes for version 20110112:
3704
37051) ACPI CA Core Subsystem:
3706
3707Fixed a race condition between method execution and namespace walks that 
3708can 
3709possibly cause a fault. The problem was apparently introduced in version 
371020100528 as a result of a performance optimization that reduces the 
3711number 
3712of 
3713namespace walks upon method exit by using the delete_namespace_subtree 
3714function instead of the delete_namespace_by_owner function used 
3715previously. 
3716Bug is a missing namespace lock in the delete_namespace_subtree function. 
3717dana.myers@oracle.com
3718
3719Fixed several issues and a possible fault with the automatic "serialized" 
3720method support. History: This support changes a method to "serialized" on 
3721the 
3722fly if the method generates an AE_ALREADY_EXISTS error, indicating the 
3723possibility that it cannot handle reentrancy. This fix repairs a couple 
3724of 
3725issues seen in the field, especially on machines with many cores:
3726
3727    1) Delete method children only upon the exit of the last thread,
3728       so as to not delete objects out from under other running threads
3729      (and possibly causing a fault.)
3730    2) Set the "serialized" bit for the method only upon the exit of the
3731       Last thread, so as to not cause deadlock when running threads
3732       attempt to exit.
3733    3) Cleanup the use of the AML "MethodFlags" and internal method flags
3734       so that there is no longer any confusion between the two.
3735
3736    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
3737
3738Debugger: Now lock the namespace for duration of a namespace dump. 
3739Prevents 
3740issues if the namespace is changing dynamically underneath the debugger. 
3741Especially affects temporary namespace nodes, since the debugger displays 
3742these also.
3743
3744Updated the ordering of include files. The ACPICA headers should appear 
3745before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 
3746set 
3747any necessary compiler-specific defines, etc. Affects the ACPI-related 
3748tools 
3749and utilities.
3750
3751Updated all ACPICA copyrights and signons to 2011. Added the 2011 
3752copyright 
3753to all module headers and signons, including the Linux header. This 
3754affects 
3755virtually every file in the ACPICA core subsystem, iASL compiler, and all 
3756utilities.
3757
3758Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 
3759project files for VC++ 6.0 are now obsolete. New project files can be 
3760found 
3761under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 
3762details.
3763
3764Example Code and Data Size: These are the sizes for the OS-independent 
3765acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
3766debug version of the code includes the debug output trace mechanism and 
3767has a 
3768much larger code and data size.
3769
3770  Previous Release (VC 6.0):
3771    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3772    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3773  Current Release (VC 9.0):
3774    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3775    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3776
37772) iASL Compiler/Disassembler and Tools:
3778
3779iASL: Added generic data types to the Data Table compiler. Add "generic" 
3780data 
3781types such as UINT32, String, Unicode, etc., to simplify the generation 
3782of 
3783platform-defined tables such as UEFI. Lin Ming.
3784
3785iASL: Added listing support for the Data Table Compiler. Adds listing 
3786support 
3787(-l) to display actual binary output for each line of input code.
3788
3789----------------------------------------
379009 December 2010. Summary of changes for version 20101209:
3791
37921) ACPI CA Core Subsystem:
3793
3794Completed the major overhaul of the GPE support code that was begun in 
3795July 
37962010. Major features include: removal of _PRW execution in ACPICA (host 
3797executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 
3798changes to existing interfaces, simplification of GPE handler operation, 
3799and 
3800a handful of new interfaces:
3801
3802    AcpiUpdateAllGpes
3803    AcpiFinishGpe
3804    AcpiSetupGpeForWake
3805    AcpiSetGpeWakeMask
3806    One new file, evxfgpe.c to consolidate all external GPE interfaces.
3807
3808See the ACPICA Programmer Reference for full details and programming 
3809information. See the new section 4.4 "General Purpose Event (GPE) 
3810Support" 
3811for a full overview, and section 8.7 "ACPI General Purpose Event 
3812Management" 
3813for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 
3814Ming, 
3815Bob Moore, Rafael Wysocki.
3816
3817Implemented a new GPE feature for Windows compatibility, the "Implicit 
3818Wake 
3819GPE Notify". This feature will automatically issue a Notify(2) on a 
3820device 
3821when a Wake GPE is received if there is no corresponding GPE method or 
3822handler. ACPICA BZ 870.
3823
3824Fixed a problem with the Scope() operator during table parse and load 
3825phase. 
3826During load phase (table load or method execution), the scope operator 
3827should 
3828not enter the target into the namespace. Instead, it should open a new 
3829scope 
3830at the target location. Linux BZ 19462, ACPICA BZ 882.
3831
3832Example Code and Data Size: These are the sizes for the OS-independent 
3833acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3834debug version of the code includes the debug output trace mechanism and 
3835has a 
3836much larger code and data size.
3837
3838  Previous Release:
3839    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3840    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3841  Current Release:
3842    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3843    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3844
38452) iASL Compiler/Disassembler and Tools:
3846
3847iASL: Relax the alphanumeric restriction on _CID strings. These strings 
3848are 
3849"bus-specific" per the ACPI specification, and therefore any characters 
3850are 
3851acceptable. The only checks that can be performed are for a null string 
3852and 
3853perhaps for a leading asterisk. ACPICA BZ 886.
3854
3855iASL: Fixed a problem where a syntax error that caused a premature EOF 
3856condition on the source file emitted a very confusing error message. The 
3857premature EOF is now detected correctly. ACPICA BZ 891.
3858
3859Disassembler: Decode the AccessSize within a Generic Address Structure 
3860(byte 
3861access, word access, etc.) Note, this field does not allow arbitrary bit 
3862access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
3863
3864New: AcpiNames utility - Example namespace dump utility. Shows an example 
3865of 
3866ACPICA configuration for a minimal namespace dump utility. Uses table and 
3867namespace managers, but no AML interpreter. Does not add any 
3868functionality 
3869over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 
3870partition and configure ACPICA. ACPICA BZ 883.
3871
3872AML Debugger: Increased the debugger buffer size for method return 
3873objects. 
3874Was 4K, increased to 16K. Also enhanced error messages for debugger 
3875method 
3876execution, including the buffer overflow case.
3877
3878----------------------------------------
387913 October 2010. Summary of changes for version 20101013:
3880
38811) ACPI CA Core Subsystem:
3882
3883Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 
3884now 
3885clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 
3886HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
3887
3888Changed the type of the predefined namespace object _TZ from ThermalZone 
3889to 
3890Device. This was found to be confusing to the host software that 
3891processes 
3892the various thermal zones, since _TZ is not really a ThermalZone. 
3893However, 
3894a 
3895Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 
3896Zhang.
3897
3898Added Windows Vista SP2 to the list of supported _OSI strings. The actual 
3899string is "Windows 2006 SP2".
3900
3901Eliminated duplicate code in AcpiUtExecute* functions. Now that the 
3902nsrepair 
3903code automatically repairs _HID-related strings, this type of code is no 
3904longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 
3905878.
3906
3907Example Code and Data Size: These are the sizes for the OS-independent 
3908acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
3909debug version of the code includes the debug output trace mechanism and 
3910has a 
3911much larger code and data size.
3912
3913  Previous Release:
3914    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3915    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3916  Current Release:
3917    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3918    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3919
39202) iASL Compiler/Disassembler and Tools:
3921
3922iASL: Implemented additional compile-time validation for _HID strings. 
3923The 
3924non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 
3925length 
3926of 
3927the string must be exactly seven or eight characters. For both _HID and 
3928_CID 
3929strings, all characters must be alphanumeric. ACPICA BZ 874.
3930
3931iASL: Allow certain "null" resource descriptors. Some BIOS code creates 
3932descriptors that are mostly or all zeros, with the expectation that they 
3933will 
3934be filled in at runtime. iASL now allows this as long as there is a 
3935"resource 
3936tag" (name) associated with the descriptor, which gives the ASL a handle 
3937needed to modify the descriptor. ACPICA BZ 873.
3938
3939Added single-thread support to the generic Unix application OSL. 
3940Primarily 
3941for iASL support, this change removes the use of semaphores in the 
3942single-
3943threaded ACPICA tools/applications - increasing performance. The 
3944_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 
3945option. ACPICA BZ 879.
3946
3947AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 
3948support 
3949for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
3950
3951iASL: Moved all compiler messages to a new file, aslmessages.h.
3952
3953----------------------------------------
395415 September 2010. Summary of changes for version 20100915:
3955
39561) ACPI CA Core Subsystem:
3957
3958Removed the AcpiOsDerivePciId OSL interface. The various host 
3959implementations 
3960of this function were not OS-dependent and are now obsolete and can be 
3961removed from all host OSLs. This function has been replaced by 
3962AcpiHwDerivePciId, which is now part of the ACPICA core code. 
3963AcpiHwDerivePciId has been implemented without recursion. Adds one new 
3964module, hwpci.c. ACPICA BZ 857.
3965
3966Implemented a dynamic repair for _HID and _CID strings. The following 
3967problems are now repaired at runtime: 1) Remove a leading asterisk in the 
3968string, and 2) the entire string is uppercased. Both repairs are in 
3969accordance with the ACPI specification and will simplify host driver 
3970code. 
3971ACPICA BZ 871.
3972
3973The ACPI_THREAD_ID type is no longer configurable, internally it is now 
3974always UINT64. This simplifies the ACPICA code, especially any printf 
3975output. 
3976UINT64 is the only common data type for all thread_id types across all 
3977operating systems. It is now up to the host OSL to cast the native 
3978thread_id 
3979type to UINT64 before returning the value to ACPICA (via 
3980AcpiOsGetThreadId). 
3981Lin Ming, Bob Moore.
3982
3983Added the ACPI_INLINE type to enhance the ACPICA configuration. The 
3984"inline" 
3985keyword is not standard across compilers, and this type allows inline to 
3986be 
3987configured on a per-compiler basis. Lin Ming.
3988
3989Made the system global AcpiGbl_SystemAwakeAndRunning publically 
3990available. 
3991Added an extern for this boolean in acpixf.h. Some hosts utilize this 
3992value 
3993during suspend/restore operations. ACPICA BZ 869.
3994
3995All code that implements error/warning messages with the "ACPI:" prefix 
3996has 
3997been moved to a new module, utxferror.c.
3998
3999The UINT64_OVERLAY was moved to utmath.c, which is the only module where 
4000it 
4001is used. ACPICA BZ 829. Lin Ming, Bob Moore.
4002
4003Example Code and Data Size: These are the sizes for the OS-independent 
4004acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4005debug version of the code includes the debug output trace mechanism and 
4006has a 
4007much larger code and data size.
4008
4009  Previous Release:
4010    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4011    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4012  Current Release:
4013    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4014    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4015
40162) iASL Compiler/Disassembler and Tools:
4017
4018iASL/Disassembler: Write ACPI errors to stderr instead of the output 
4019file. 
4020This keeps the output files free of random error messages that may 
4021originate 
4022from within the namespace/interpreter code. Used this opportunity to 
4023merge 
4024all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 
4025866. Lin Ming, Bob Moore.
4026
4027Tools: update some printfs for ansi warnings on size_t. Handle width 
4028change 
4029of size_t on 32-bit versus 64-bit generations. Lin Ming.
4030
4031----------------------------------------
403206 August 2010. Summary of changes for version 20100806:
4033
40341) ACPI CA Core Subsystem:
4035
4036Designed and implemented a new host interface to the _OSI support code. 
4037This 
4038will allow the host to dynamically add or remove multiple _OSI strings, 
4039as 
4040well as install an optional handler that is called for each _OSI 
4041invocation. 
4042Also added a new AML debugger command, 'osi' to display and modify the 
4043global 
4044_OSI string table, and test support in the AcpiExec utility. See the 
4045ACPICA 
4046reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
4047New Functions:
4048    AcpiInstallInterface - Add an _OSI string.
4049    AcpiRemoveInterface - Delete an _OSI string.
4050    AcpiInstallInterfaceHandler - Install optional _OSI handler.
4051Obsolete Functions:
4052    AcpiOsValidateInterface - no longer used.
4053New Files:
4054    source/components/utilities/utosi.c
4055
4056Re-introduced the support to enable multi-byte transfers for Embedded 
4057Controller (EC) operation regions. A reported problem was found to be a 
4058bug 
4059in the host OS, not in the multi-byte support. Previously, the maximum 
4060data 
4061size passed to the EC operation region handler was a single byte. There 
4062are 
4063often EC Fields larger than one byte that need to be transferred, and it 
4064is 
4065useful for the EC driver to lock these as a single transaction. This 
4066change 
4067enables single transfers larger than 8 bits. This effectively changes the 
4068access to the EC space from ByteAcc to AnyAcc, and will probably require 
4069changes to the host OS Embedded Controller driver to enable 16/32/64/256-
4070bit 
4071transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
4072
4073Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 
4074prototype in acpiosxf.h had the output value pointer as a (void *).
4075It should be a (UINT64 *). This may affect some host OSL code.
4076
4077Fixed a couple problems with the recently modified Linux makefiles for 
4078iASL 
4079and AcpiExec. These new makefiles place the generated object files in the 
4080local directory so that there can be no collisions between the files that 
4081are 
4082shared between them that are compiled with different options.
4083
4084Example Code and Data Size: These are the sizes for the OS-independent 
4085acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4086debug version of the code includes the debug output trace mechanism and 
4087has a 
4088much larger code and data size.
4089
4090  Previous Release:
4091    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4092    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
4093  Current Release:
4094    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4095    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4096
40972) iASL Compiler/Disassembler and Tools:
4098
4099iASL/Disassembler: Added a new option (-da, "disassemble all") to load 
4100the 
4101namespace from and disassemble an entire group of AML files. Useful for 
4102loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 
4103and 
4104disassembling with one simple command. ACPICA BZ 865. Lin Ming.
4105
4106iASL: Allow multiple invocations of -e option. This change allows 
4107multiple 
4108uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 
4109834. 
4110Lin Ming.
4111
4112----------------------------------------
411302 July 2010. Summary of changes for version 20100702:
4114
41151) ACPI CA Core Subsystem:
4116
4117Implemented several updates to the recently added GPE reference count 
4118support. The model for "wake" GPEs is changing to give the host OS 
4119complete 
4120control of these GPEs. Eventually, the ACPICA core will not execute any 
4121_PRW 
4122methods, since the host already must execute them. Also, additional 
4123changes 
4124were made to help ensure that the reference counts are kept in proper 
4125synchronization with reality. Rafael J. Wysocki.
4126
41271) Ensure that GPEs are not enabled twice during initialization.
41282) Ensure that GPE enable masks stay in sync with the reference count.
41293) Do not inadvertently enable GPEs when writing GPE registers.
41304) Remove the internal wake reference counter and add new AcpiGpeWakeup 
4131interface. This interface will set or clear individual GPEs for wakeup.
41325) Remove GpeType argument from AcpiEnable and AcpiDisable. These 
4133interfaces 
4134are now used for "runtime" GPEs only.
4135
4136Changed the behavior of the GPE install/remove handler interfaces. The 
4137GPE 
4138is 
4139no longer disabled during this process, as it was found to cause problems 
4140on 
4141some machines. Rafael J. Wysocki.
4142
4143Reverted a change introduced in version 20100528 to enable Embedded 
4144Controller multi-byte transfers. This change was found to cause problems 
4145with 
4146Index Fields and possibly Bank Fields. It will be reintroduced when these 
4147problems have been resolved.
4148
4149Fixed a problem with references to Alias objects within Package Objects. 
4150A 
4151reference to an Alias within the definition of a Package was not always 
4152resolved properly. Aliases to objects like Processors, Thermal zones, 
4153etc. 
4154were resolved to the actual object instead of a reference to the object 
4155as 
4156it 
4157should be. Package objects are only allowed to contain integer, string, 
4158buffer, package, and reference objects. Redhat bugzilla 608648.
4159
4160Example Code and Data Size: These are the sizes for the OS-independent 
4161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4162debug version of the code includes the debug output trace mechanism and 
4163has a 
4164much larger code and data size.
4165
4166  Previous Release:
4167    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4168    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
4169  Current Release:
4170    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4171    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
4172
41732) iASL Compiler/Disassembler and Tools:
4174
4175iASL: Implemented a new compiler subsystem to allow definition and 
4176compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 
4177These 
4178are called "ACPI Data Tables", and the new compiler is the "Data Table 
4179Compiler". This compiler is intended to simplify the existing error-prone 
4180process of creating these tables for the BIOS, as well as allowing the 
4181disassembly, modification, recompilation, and override of existing ACPI 
4182data 
4183tables. See the iASL User Guide for detailed information.
4184
4185iASL: Implemented a new Template Generator option in support of the new 
4186Data 
4187Table Compiler. This option will create examples of all known ACPI tables 
4188that can be used as the basis for table development. See the iASL 
4189documentation and the -T option.
4190
4191Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 
4192Descriptor Table).
4193
4194Updated the Linux makefiles for iASL and AcpiExec to place the generated 
4195object files in the local directory so that there can be no collisions 
4196between the shared files between them that are generated with different 
4197options.
4198
4199Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 
4200Use 
4201the #define __APPLE__ to enable this support.
4202
4203----------------------------------------
420428 May 2010. Summary of changes for version 20100528:
4205
4206Note: The ACPI 4.0a specification was released on April 5, 2010 and is 
4207available at www.acpi.info. This is primarily an errata release.
4208
42091) ACPI CA Core Subsystem:
4210
4211Undefined ACPI tables: We are looking for the definitions for the 
4212following 
4213ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
4214
4215Implemented support to enable multi-byte transfers for Embedded 
4216Controller 
4217(EC) operation regions. Previously, the maximum data size passed to the 
4218EC 
4219operation region handler was a single byte. There are often EC Fields 
4220larger 
4221than one byte that need to be transferred, and it is useful for the EC 
4222driver 
4223to lock these as a single transaction. This change enables single 
4224transfers 
4225larger than 8 bits. This effectively changes the access to the EC space 
4226from 
4227ByteAcc to AnyAcc, and will probably require changes to the host OS 
4228Embedded 
4229Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
4230bit 
4231transfers. Alexey Starikovskiy, Lin Ming
4232
4233Implemented a performance enhancement for namespace search and access. 
4234This 
4235change enhances the performance of namespace searches and walks by adding 
4236a 
4237backpointer to the parent in each namespace node. On large namespaces, 
4238this 
4239change can improve overall ACPI performance by up to 9X. Adding a pointer 
4240to 
4241each namespace node increases the overall size of the internal namespace 
4242by 
4243about 5%, since each namespace entry usually consists of both a namespace 
4244node and an ACPI operand object. However, this is the first growth of the 
4245namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
4246
4247Implemented a performance optimization that reduces the number of 
4248namespace 
4249walks. On control method exit, only walk the namespace if the method is 
4250known 
4251to have created namespace objects outside of its local scope. Previously, 
4252the 
4253entire namespace was traversed on each control method exit. This change 
4254can 
4255improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 
4256Moore.
4257
4258Added support to truncate I/O addresses to 16 bits for Windows 
4259compatibility. 
4260Some ASL code has been seen in the field that inadvertently has bits set 
4261above bit 15. This feature is optional and is enabled if the BIOS 
4262requests 
4263any Windows OSI strings. It can also be enabled by the host OS. Matthew 
4264Garrett, Bob Moore.
4265
4266Added support to limit the maximum time for the ASL Sleep() operator. To 
4267prevent accidental deep sleeps, limit the maximum time that Sleep() will 
4268actually sleep. Configurable, the default maximum is two seconds. ACPICA 
4269bugzilla 854.
4270
4271Added run-time validation support for the _WDG and_WED Microsoft 
4272predefined 
4273methods. These objects are defined by "Windows Instrumentation", and are 
4274not 
4275part of the ACPI spec. ACPICA BZ 860.
4276
4277Expanded all statistic counters used during namespace and device 
4278initialization from 16 to 32 bits in order to support very large 
4279namespaces.
4280
4281Replaced all instances of %d in printf format specifiers with %u since 
4282nearly 
4283all integers in ACPICA are unsigned.
4284
4285Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 
4286returned 
4287as AE_NO_HANDLER.
4288
4289Example Code and Data Size: These are the sizes for the OS-independent 
4290acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4291debug version of the code includes the debug output trace mechanism and 
4292has a 
4293much larger code and data size.
4294
4295  Previous Release:
4296    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4297    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4298  Current Release:
4299    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4300    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
4301
43022) iASL Compiler/Disassembler and Tools:
4303
4304iASL: Added compiler support for the _WDG and_WED Microsoft predefined 
4305methods. These objects are defined by "Windows Instrumentation", and are 
4306not 
4307part of the ACPI spec. ACPICA BZ 860.
4308
4309AcpiExec: added option to disable the memory tracking mechanism. The -dt 
4310option will disable the tracking mechanism, which improves performance 
4311considerably.
4312
4313AcpiExec: Restructured the command line options into -d (disable) and -e 
4314(enable) options.
4315
4316----------------------------------------
431728 April 2010. Summary of changes for version 20100428:
4318
43191) ACPI CA Core Subsystem:
4320
4321Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 
4322including FADT-based and GPE Block Devices, execute any _PRW methods in 
4323the 
4324new table, and process any _Lxx/_Exx GPE methods in the new table. Any 
4325runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 
4326immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 
4327Devices. Provides compatibility with other ACPI implementations. Two new 
4328files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 
4329Moore.
4330
4331Fixed a regression introduced in version 20100331 within the table 
4332manager 
4333where initial table loading could fail. This was introduced in the fix 
4334for 
4335AcpiReallocateRootTable. Also, renamed some of fields in the table 
4336manager 
4337data structures to clarify their meaning and use.
4338
4339Fixed a possible allocation overrun during internal object copy in 
4340AcpiUtCopySimpleObject. The original code did not correctly handle the 
4341case 
4342where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 
4343847.
4344
4345Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 
4346possible access beyond end-of-allocation. Also, now fully validate 
4347descriptor 
4348(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
4349
4350Example Code and Data Size: These are the sizes for the OS-independent 
4351acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4352debug version of the code includes the debug output trace mechanism and 
4353has a 
4354much larger code and data size.
4355
4356  Previous Release:
4357    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4358    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4359  Current Release:
4360    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4361    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4362
43632) iASL Compiler/Disassembler and Tools:
4364
4365iASL: Implemented Min/Max/Len/Gran validation for address resource 
4366descriptors. This change implements validation for the address fields 
4367that 
4368are common to all address-type resource descriptors. These checks are 
4369implemented: Checks for valid Min/Max, length within the Min/Max window, 
4370valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 
4371per 
4372table 6-40 in the ACPI 4.0a specification. Also split the large 
4373aslrestype1.c 
4374and aslrestype2.c files into five new files. ACPICA BZ 840.
4375
4376iASL: Added support for the _Wxx predefined names. This support was 
4377missing 
4378and these names were not recognized by the compiler as valid predefined 
4379names. ACPICA BZ 851.
4380
4381iASL: Added an error for all predefined names that are defined to return 
4382no 
4383value and thus must be implemented as Control Methods. These include all 
4384of 
4385the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 
4386names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
4387
4388iASL: Implemented the -ts option to emit hex AML data in ASL format, as 
4389an 
4390ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 
4391be 
4392dynamically loaded via the Load() operator. Also cleaned up output for 
4393the 
4394-
4395ta and -tc options. ACPICA BZ 853.
4396
4397Tests: Added a new file with examples of extended iASL error checking. 
4398Demonstrates the advanced error checking ability of the iASL compiler. 
4399Available at tests/misc/badcode.asl.
4400
4401----------------------------------------
440231 March 2010. Summary of changes for version 20100331:
4403
44041) ACPI CA Core Subsystem:
4405
4406Completed a major update for the GPE support in order to improve support 
4407for 
4408shared GPEs and to simplify both host OS and ACPICA code. Added a 
4409reference 
4410count mechanism to support shared GPEs that require multiple device 
4411drivers. 
4412Several external interfaces have changed. One external interface has been 
4413removed. One new external interface was added. Most of the GPE external 
4414interfaces now use the GPE spinlock instead of the events mutex (and the 
4415Flags parameter for many GPE interfaces has been removed.) See the 
4416updated 
4417ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 
4418Rafael 
4419Wysocki. ACPICA BZ 831.
4420
4421Changed:
4422    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
4423Removed:
4424    AcpiSetGpeType
4425New:
4426    AcpiSetGpe
4427
4428Implemented write support for DataTable operation regions. These regions 
4429are 
4430defined via the DataTableRegion() operator. Previously, only read support 
4431was 
4432implemented. The ACPI specification allows DataTableRegions to be 
4433read/write, 
4434however.
4435
4436Implemented a new subsystem option to force a copy of the DSDT to local 
4437memory. Optionally copy the entire DSDT to local memory (instead of 
4438simply 
4439mapping it.) There are some (albeit very rare) BIOSs that corrupt or 
4440replace 
4441the original DSDT, creating the need for this option. Default is FALSE, 
4442do 
4443not copy the DSDT.
4444
4445Implemented detection of a corrupted or replaced DSDT. This change adds 
4446support to detect a DSDT that has been corrupted and/or replaced from 
4447outside 
4448the OS (by firmware). This is typically catastrophic for the system, but 
4449has 
4450been seen on some machines. Once this problem has been detected, the DSDT 
4451copy option can be enabled via system configuration. Lin Ming, Bob Moore.
4452
4453Fixed two problems with AcpiReallocateRootTable during the root table 
4454copy. 
4455When copying the root table to the new allocation, the length used was 
4456incorrect. The new size was used instead of the current table size, 
4457meaning 
4458too much data was copied. Also, the count of available slots for ACPI 
4459tables 
4460was not set correctly. Alexey Starikovskiy, Bob Moore.
4461
4462Example Code and Data Size: These are the sizes for the OS-independent 
4463acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4464debug version of the code includes the debug output trace mechanism and 
4465has a 
4466much larger code and data size.
4467
4468  Previous Release:
4469    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4470    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4471  Current Release:
4472    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4473    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4474
44752) iASL Compiler/Disassembler and Tools:
4476
4477iASL: Implement limited typechecking for values returned from predefined 
4478control methods. The type of any returned static (unnamed) object is now 
4479validated. For example, Return(1). ACPICA BZ 786.
4480
4481iASL: Fixed a predefined name object verification regression. Fixes a 
4482problem 
4483introduced in version 20100304. An error is incorrectly generated if a 
4484predefined name is declared as a static named object with a value defined 
4485using the keywords "Zero", "One", or "Ones". Lin Ming.
4486
4487iASL: Added Windows 7 support for the -g option (get local ACPI tables) 
4488by 
4489reducing the requested registry access rights. ACPICA BZ 842.
4490
4491Disassembler: fixed a possible fault when generating External() 
4492statements. 
4493Introduced in commit ae7d6fd: Properly handle externals with parent-
4494prefix 
4495(carat). Fixes a string length allocation calculation. Lin Ming.
4496
4497----------------------------------------
449804 March 2010. Summary of changes for version 20100304:
4499
45001) ACPI CA Core Subsystem:
4501
4502Fixed a possible problem with the AML Mutex handling function 
4503AcpiExReleaseMutex where the function could fault under the very rare 
4504condition when the interpreter has blocked, the interpreter lock is 
4505released, 
4506the interpreter is then reentered via the same thread, and attempts to 
4507acquire an AML mutex that was previously acquired. FreeBSD report 140979. 
4508Lin 
4509Ming.
4510
4511Implemented additional configuration support for the AML "Debug Object". 
4512Output from the debug object can now be enabled via a global variable, 
4513AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 
4514debugging. 
4515This debug output is now available in the release version of ACPICA 
4516instead 
4517of just the debug version. Also, the entire debug output module can now 
4518be 
4519configured out of the ACPICA build if desired. One new file added, 
4520executer/exdebug.c. Lin Ming, Bob Moore.
4521
4522Added header support for the ACPI MCHI table (Management Controller Host 
4523Interface Table). This table was added in ACPI 4.0, but the defining 
4524document 
4525has only recently become available.
4526
4527Standardized output of integer values for ACPICA warnings/errors. Always 
4528use 
45290x prefix for hex output, always use %u for unsigned integer decimal 
4530output. 
4531Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 
4532400 
4533invocations.) These invocations were converted from the original 
4534ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
4535
4536Example Code and Data Size: These are the sizes for the OS-independent 
4537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4538debug version of the code includes the debug output trace mechanism and 
4539has a 
4540much larger code and data size.
4541
4542  Previous Release:
4543    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4544    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4545  Current Release:
4546    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4547    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4548
45492) iASL Compiler/Disassembler and Tools:
4550
4551iASL: Implemented typechecking support for static (non-control method) 
4552predefined named objects that are declared with the Name() operator. For 
4553example, the type of this object is now validated to be of type Integer: 
4554Name(_BBN, 1). This change migrates the compiler to using the core 
4555predefined 
4556name table instead of maintaining a local version. Added a new file, 
4557aslpredef.c. ACPICA BZ 832.
4558
4559Disassembler: Added support for the ACPI 4.0 MCHI table.
4560
4561----------------------------------------
456221 January 2010. Summary of changes for version 20100121:
4563
45641) ACPI CA Core Subsystem:
4565
4566Added the 2010 copyright to all module headers and signons. This affects 
4567virtually every file in the ACPICA core subsystem, the iASL compiler, the 
4568tools/utilities, and the test suites.
4569
4570Implemented a change to the AcpiGetDevices interface to eliminate 
4571unnecessary 
4572invocations of the _STA method. In the case where a specific _HID is 
4573requested, do not run _STA until a _HID match is found. This eliminates 
4574potentially dozens of _STA calls during a search for a particular 
4575device/HID, 
4576which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
4577
4578Implemented an additional repair for predefined method return values. 
4579Attempt 
4580to repair unexpected NULL elements within returned Package objects. 
4581Create 
4582an 
4583Integer of value zero, a NULL String, or a zero-length Buffer as 
4584appropriate. 
4585ACPICA BZ 818. Lin Ming, Bob Moore.
4586
4587Removed the obsolete ACPI_INTEGER data type. This type was introduced as 
4588the 
4589code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 
4590(with 
459164-bit AML integers). It is now obsolete and this change removes it from 
4592the 
4593ACPICA code base, replaced by UINT64. The original typedef has been 
4594retained 
4595for now for compatibility with existing device driver code. ACPICA BZ 
4596824.
4597
4598Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 
4599in 
4600the parse tree object.
4601
4602Added additional warning options for the gcc-4 generation. Updated the 
4603source 
4604accordingly. This includes some code restructuring to eliminate 
4605unreachable 
4606code, elimination of some gotos, elimination of unused return values, 
4607some 
4608additional casting, and removal of redundant declarations.
4609
4610Example Code and Data Size: These are the sizes for the OS-independent 
4611acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4612debug version of the code includes the debug output trace mechanism and 
4613has a 
4614much larger code and data size.
4615
4616  Previous Release:
4617    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4618    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4619  Current Release:
4620    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4621    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4622
46232) iASL Compiler/Disassembler and Tools:
4624
4625No functional changes for this release.
4626
4627----------------------------------------
462814 December 2009. Summary of changes for version 20091214:
4629
46301) ACPI CA Core Subsystem:
4631
4632Enhanced automatic data type conversions for predefined name repairs. 
4633This 
4634change expands the automatic repairs/conversions for predefined name 
4635return 
4636values to make Integers, Strings, and Buffers fully interchangeable. 
4637Also, 
4638a 
4639Buffer can be converted to a Package of Integers if necessary. The 
4640nsrepair.c 
4641module was completely restructured. Lin Ming, Bob Moore.
4642
4643Implemented automatic removal of null package elements during predefined 
4644name 
4645repairs. This change will automatically remove embedded and trailing NULL 
4646package elements from returned package objects that are defined to 
4647contain 
4648a 
4649variable number of sub-packages. The driver is then presented with a 
4650package 
4651with no null elements to deal with. ACPICA BZ 819.
4652
4653Implemented a repair for the predefined _FDE and _GTM names. The expected 
4654return value for both names is a Buffer of 5 DWORDs. This repair fixes 
4655two 
4656possible problems (both seen in the field), where a package of integers 
4657is 
4658returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 
4659Kim.
4660
4661Implemented additional module-level code support. This change will 
4662properly 
4663execute module-level code that is not at the root of the namespace (under 
4664a 
4665Device object, etc.). Now executes the code within the current scope 
4666instead 
4667of the root. ACPICA BZ 762. Lin Ming.
4668
4669Fixed possible mutex acquisition errors when running _REG methods. Fixes 
4670a 
4671problem where mutex errors can occur when running a _REG method that is 
4672in 
4673the same scope as a method-defined operation region or an operation 
4674region 
4675under a module-level IF block. This type of code is rare, so the problem 
4676has 
4677not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
4678
4679Fixed a possible memory leak during module-level code execution. An 
4680object 
4681could be leaked for each block of executed module-level code if the 
4682interpreter slack mode is enabled This change deletes any implicitly 
4683returned 
4684object from the module-level code block. Lin Ming.
4685
4686Removed messages for successful predefined repair(s). The repair 
4687mechanism 
4688was considered too wordy. Now, messages are only unconditionally emitted 
4689if 
4690the return object cannot be repaired. Existing messages for successful 
4691repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 
4692827.
4693
4694Example Code and Data Size: These are the sizes for the OS-independent 
4695acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4696debug version of the code includes the debug output trace mechanism and 
4697has a 
4698much larger code and data size.
4699
4700  Previous Release:
4701    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4702    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4703  Current Release:
4704    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4705    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4706
47072) iASL Compiler/Disassembler and Tools:
4708
4709iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 
4710files 
4711were no longer automatically removed at the termination of the compile.
4712
4713acpiexec: Implemented the -f option to specify default region fill value. 
4714This option specifies the value used to initialize buffers that simulate 
4715operation regions. Default value is zero. Useful for debugging problems 
4716that 
4717depend on a specific initial value for a region or field.
4718
4719----------------------------------------
472012 November 2009. Summary of changes for version 20091112:
4721
47221) ACPI CA Core Subsystem:
4723
4724Implemented a post-order callback to AcpiWalkNamespace. The existing 
4725interface only has a pre-order callback. This change adds an additional 
4726parameter for a post-order callback which will be more useful for bus 
4727scans. 
4728ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
4729
4730Modified the behavior of the operation region memory mapping cache for 
4731SystemMemory. Ensure that the memory mappings created for operation 
4732regions 
4733do not cross 4K page boundaries. Crossing a page boundary while mapping 
4734regions can cause kernel warnings on some hosts if the pages have 
4735different 
4736attributes. Such regions are probably BIOS bugs, and this is the 
4737workaround. 
4738Linux BZ 14445. Lin Ming.
4739
4740Implemented an automatic repair for predefined methods that must return 
4741sorted lists. This change will repair (by sorting) packages returned by 
4742_ALR, 
4743_PSS, and _TSS. Drivers can now assume that the packages are correctly 
4744sorted 
4745and do not contain NULL package elements. Adds one new file, 
4746namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
4747
4748Fixed a possible fault during predefined name validation if a return 
4749Package 
4750object contains NULL elements. Also adds a warning if a NULL element is 
4751followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 
4752may 
4753include repair or removal of all such NULL elements where possible.
4754
4755Implemented additional module-level executable AML code support. This 
4756change 
4757will execute module-level code that is not at the root of the namespace 
4758(under a Device object, etc.) at table load time. Module-level executable 
4759AML 
4760code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
4761
4762Implemented a new internal function to create Integer objects. This 
4763function 
4764simplifies miscellaneous object creation code. ACPICA BZ 823.
4765
4766Reduced the severity of predefined repair messages, Warning to Info. 
4767Since 
4768the object was successfully repaired, a warning is too severe. Reduced to 
4769an 
4770info message for now. These messages may eventually be changed to debug-
4771only. 
4772ACPICA BZ 812.
4773
4774Example Code and Data Size: These are the sizes for the OS-independent 
4775acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4776debug version of the code includes the debug output trace mechanism and 
4777has a 
4778much larger code and data size.
4779
4780  Previous Release:
4781    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4782    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4783  Current Release:
4784    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4785    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4786
47872) iASL Compiler/Disassembler and Tools:
4788
4789iASL: Implemented Switch() with While(1) so that Break works correctly. 
4790This 
4791change correctly implements the Switch operator with a surrounding 
4792While(1) 
4793so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
4794
4795iASL: Added a message if a package initializer list is shorter than 
4796package 
4797length. Adds a new remark for a Package() declaration if an initializer 
4798list 
4799exists, but is shorter than the declared length of the package. Although 
4800technically legal, this is probably a coding error and it is seen in the 
4801field. ACPICA BZ 815. Lin Ming, Bob Moore.
4802
4803iASL: Fixed a problem where the compiler could fault after the maximum 
4804number 
4805of errors was reached (200).
4806
4807acpixtract: Fixed a possible warning for pointer cast if the compiler 
4808warning 
4809level set very high.
4810
4811----------------------------------------
481213 October 2009. Summary of changes for version 20091013:
4813
48141) ACPI CA Core Subsystem:
4815
4816Fixed a problem where an Operation Region _REG method could be executed 
4817more 
4818than once. If a custom address space handler is installed by the host 
4819before 
4820the "initialize operation regions" phase of the ACPICA initialization, 
4821any 
4822_REG methods for that address space could be executed twice. This change 
4823fixes the problem. ACPICA BZ 427. Lin Ming.
4824
4825Fixed a possible memory leak for the Scope() ASL operator. When the exact 
4826invocation of "Scope(\)" is executed (change scope to root), one internal 
4827operand object was leaked. Lin Ming.
4828
4829Implemented a run-time repair for the _MAT predefined method. If the _MAT 
4830return value is defined as a Field object in the AML, and the field
4831size is less than or equal to the default width of an integer (32 or 
483264),_MAT 
4833can incorrectly return an Integer instead of a Buffer. ACPICA now 
4834automatically repairs this problem. ACPICA BZ 810.
4835
4836Implemented a run-time repair for the _BIF and _BIX predefined methods. 
4837The 
4838"OEM Information" field is often incorrectly returned as an Integer with 
4839value zero if the field is not supported by the platform. This is due to 
4840an 
4841ambiguity in the ACPI specification. The field should always be a string. 
4842ACPICA now automatically repairs this problem by returning a NULL string 
4843within the returned Package. ACPICA BZ 807.
4844
4845Example Code and Data Size: These are the sizes for the OS-independent 
4846acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4847debug version of the code includes the debug output trace mechanism and 
4848has a 
4849much larger code and data size.
4850
4851  Previous Release:
4852    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4853    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4854  Current Release:
4855    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4856    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4857
48582) iASL Compiler/Disassembler and Tools:
4859
4860Disassembler: Fixed a problem where references to external symbols that 
4861contained one or more parent-prefixes (carats) were not handled 
4862correctly, 
4863possibly causing a fault. ACPICA BZ 806. Lin Ming.
4864
4865Disassembler: Restructured the code so that all functions that handle 
4866external symbols are in a single module. One new file is added, 
4867common/dmextern.c.
4868
4869AML Debugger: Added a max count argument for the Batch command (which 
4870executes multiple predefined methods within the namespace.)
4871
4872iASL: Updated the compiler documentation (User Reference.) Available at 
4873http://www.acpica.org/documentation/. ACPICA BZ 750.
4874
4875AcpiXtract: Updated for Lint and other formatting changes. Close all open 
4876files.
4877
4878----------------------------------------
487903 September 2009. Summary of changes for version 20090903:
4880
48811) ACPI CA Core Subsystem:
4882
4883For Windows Vista compatibility, added the automatic execution of an _INI 
4884method located at the namespace root (\_INI). This method is executed at 
4885table load time. This support is in addition to the automatic execution 
4886of 
4887\_SB._INI. Lin Ming.
4888
4889Fixed a possible memory leak in the interpreter for AML package objects 
4890if 
4891the package initializer list is longer than the defined size of the 
4892package. 
4893This apparently can only happen if the BIOS changes the package size on 
4894the 
4895fly (seen in a _PSS object), as ASL compilers do not allow this. The 
4896interpreter will truncate the package to the defined size (and issue an 
4897error 
4898message), but previously could leave the extra objects undeleted if they 
4899were 
4900pre-created during the argument processing (such is the case if the 
4901package 
4902consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
4903
4904Fixed a problem seen when a Buffer or String is stored to itself via ASL. 
4905This has been reported in the field. Previously, ACPICA would zero out 
4906the 
4907buffer/string. Now, the operation is treated as a noop. Provides Windows 
4908compatibility. ACPICA BZ 803. Lin Ming.
4909
4910Removed an extraneous error message for ASL constructs of the form 
4911Store(LocalX,LocalX) when LocalX is uninitialized. These curious 
4912statements 
4913are seen in many BIOSs and are once again treated as NOOPs and no error 
4914is 
4915emitted when they are encountered. ACPICA BZ 785.
4916
4917Fixed an extraneous warning message if a _DSM reserved method returns a 
4918Package object. _DSM can return any type of object, so validation on the 
4919return type cannot be performed. ACPICA BZ 802.
4920
4921Example Code and Data Size: These are the sizes for the OS-independent 
4922acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
4923debug version of the code includes the debug output trace mechanism and 
4924has a 
4925much larger code and data size.
4926
4927  Previous Release:
4928    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
4929    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
4930  Current Release:
4931    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4932    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4933
49342) iASL Compiler/Disassembler and Tools:
4935
4936iASL: Fixed a problem with the use of the Alias operator and Resource 
4937Templates. The correct alias is now constructed and no error is emitted. 
4938ACPICA BZ 738.
4939
4940iASL: Implemented the -I option to specify additional search directories 
4941for 
4942include files. Allows multiple additional search paths for include files. 
4943Directories are searched in the order specified on the command line 
4944(after 
4945the local directory is searched.) ACPICA BZ 800.
4946
4947iASL: Fixed a problem where the full pathname for include files was not 
4948emitted for warnings/errors. This caused the IDE support to not work 
4949properly. ACPICA BZ 765.
4950
4951iASL: Implemented the -@ option to specify a Windows-style response file 
4952containing additional command line options. ACPICA BZ 801.
4953
4954AcpiExec: Added support to load multiple AML files simultaneously (such 
4955as 
4956a 
4957DSDT and multiple SSDTs). Also added support for wildcards within the AML 
4958pathname. These features allow all machine tables to be easily loaded and 
4959debugged together. ACPICA BZ 804.
4960
4961Disassembler: Added missing support for disassembly of HEST table Error 
4962Bank 
4963subtables. 
4964
4965----------------------------------------
496630 July 2009. Summary of changes for version 20090730:
4967
4968The ACPI 4.0 implementation for ACPICA is complete with this release.
4969
49701) ACPI CA Core Subsystem:
4971
4972ACPI 4.0: Added header file support for all new and changed ACPI tables. 
4973Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 
4974new 
4975for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 
4976BERT, 
4977EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 
4978There 
4979have been some ACPI 4.0 changes to other existing tables. Split the large 
4980actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
4981
4982ACPI 4.0: Implemented predefined name validation for all new names. There 
4983are 
498431 new names in ACPI 4.0. The predefined validation module was split into 
4985two 
4986files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
4987
4988Implemented support for so-called "module-level executable code". This is 
4989executable AML code that exists outside of any control method and is 
4990intended 
4991to be executed at table load time. Although illegal since ACPI 2.0, this 
4992type 
4993of code still exists and is apparently still being created. Blocks of 
4994this 
4995code are now detected and executed as intended. Currently, the code 
4996blocks 
4997must exist under either an If, Else, or While construct; these are the 
4998typical cases seen in the field. ACPICA BZ 762. Lin Ming.
4999
5000Implemented an automatic dynamic repair for predefined names that return 
5001nested Package objects. This applies to predefined names that are defined 
5002to 
5003return a variable-length Package of sub-packages. If the number of sub-
5004packages is one, BIOS code is occasionally seen that creates a simple 
5005single 
5006package with no sub-packages. This code attempts to fix the problem by 
5007wrapping a new package object around the existing package. These methods 
5008can 
5009be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 
5010BZ 
5011790.
5012
5013Fixed a regression introduced in 20090625 for the AcpiGetDevices 
5014interface. 
5015The _HID/_CID matching was broken and no longer matched IDs correctly. 
5016ACPICA 
5017BZ 793.
5018
5019Fixed a problem with AcpiReset where the reset would silently fail if the 
5020register was one of the protected I/O ports. AcpiReset now bypasses the 
5021port 
5022validation mechanism. This may eventually be driven into the 
5023AcpiRead/Write 
5024interfaces.
5025
5026Fixed a regression related to the recent update of the AcpiRead/Write 
5027interfaces. A sleep/suspend could fail if the optional PM2 Control 
5028register 
5029does not exist during an attempt to write the Bus Master Arbitration bit. 
5030(However, some hosts already delete the code that writes this bit, and 
5031the 
5032code may in fact be obsolete at this date.) ACPICA BZ 799.
5033
5034Fixed a problem where AcpiTerminate could fault if inadvertently called 
5035twice 
5036in succession. ACPICA BZ 795.
5037
5038Example Code and Data Size: These are the sizes for the OS-independent 
5039acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5040debug version of the code includes the debug output trace mechanism and 
5041has a 
5042much larger code and data size.
5043
5044  Previous Release:
5045    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5046    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
5047  Current Release:
5048    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
5049    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
5050
50512) iASL Compiler/Disassembler and Tools:
5052
5053ACPI 4.0: Implemented disassembler support for all new ACPI tables and 
5054changes to existing tables. ACPICA BZ 775.
5055
5056----------------------------------------
505725 June 2009. Summary of changes for version 20090625:
5058
5059The ACPI 4.0 Specification was released on June 16 and is available at 
5060www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 
5061continue for the next few releases.
5062
50631) ACPI CA Core Subsystem:
5064
5065ACPI 4.0: Implemented interpreter support for the IPMI operation region 
5066address space. Includes support for bi-directional data buffers and an 
5067IPMI 
5068address space handler (to be installed by an IPMI device driver.) ACPICA 
5069BZ 
5070773. Lin Ming.
5071
5072ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 
5073Includes 
5074support in both the header files and the disassembler.
5075
5076Completed a major update for the AcpiGetObjectInfo external interface. 
5077Changes include:
5078 - Support for variable, unlimited length HID, UID, and CID strings.
5079 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 
5080etc.)
5081 - Call the _SxW power methods on behalf of a device object.
5082 - Determine if a device is a PCI root bridge.
5083 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
5084These changes will require an update to all callers of this interface. 
5085See 
5086the updated ACPICA Programmer Reference for details. One new source file 
5087has 
5088been added - utilities/utids.c. ACPICA BZ 368, 780.
5089
5090Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 
5091transfers. The Value parameter has been extended from 32 bits to 64 bits 
5092in 
5093order to support new ACPI 4.0 tables. These changes will require an 
5094update 
5095to 
5096all callers of these interfaces. See the ACPICA Programmer Reference for 
5097details. ACPICA BZ 768.
5098
5099Fixed several problems with AcpiAttachData. The handler was not invoked 
5100when 
5101the host node was deleted. The data sub-object was not automatically 
5102deleted 
5103when the host node was deleted. The interface to the handler had an 
5104unused 
5105parameter, this was removed. ACPICA BZ 778.
5106
5107Enhanced the function that dumps ACPI table headers. All non-printable 
5108characters in the string fields are now replaced with '?' (Signature, 
5109OemId, 
5110OemTableId, and CompilerId.) ACPI tables with non-printable characters in 
5111these fields are occasionally seen in the field. ACPICA BZ 788.
5112
5113Fixed a problem with predefined method repair code where the code that 
5114attempts to repair/convert an object of incorrect type is only executed 
5115on 
5116the first time the predefined method is called. The mechanism that 
5117disables 
5118warnings on subsequent calls was interfering with the repair mechanism. 
5119ACPICA BZ 781.
5120
5121Fixed a possible memory leak in the predefined validation/repair code 
5122when 
5123a 
5124buffer is automatically converted to an expected string object.
5125
5126Removed obsolete 16-bit files from the distribution and from the current 
5127git 
5128tree head. ACPICA BZ 776.
5129
5130Example Code and Data Size: These are the sizes for the OS-independent 
5131acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5132debug version of the code includes the debug output trace mechanism and 
5133has a 
5134much larger code and data size.
5135
5136  Previous Release:
5137    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5138    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5139  Current Release:
5140    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5141    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
5142
51432) iASL Compiler/Disassembler and Tools:
5144
5145ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 
5146operation region keyword. ACPICA BZ 771, 772. Lin Ming.
5147
5148ACPI 4.0: iASL - implemented compile-time validation support for all new 
5149predefined names and control methods (31 total). ACPICA BZ 769.
5150
5151----------------------------------------
515221 May 2009. Summary of changes for version 20090521:
5153
51541) ACPI CA Core Subsystem:
5155
5156Disabled the preservation of the SCI enable bit in the PM1 control 
5157register. 
5158The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 
5159to 
5160be 
5161a "preserved" bit - "OSPM always preserves this bit position", section 
51624.7.3.2.1. However, some machines fail if this bit is in fact preserved 
5163because the bit needs to be explicitly set by the OS as a workaround. No 
5164machines fail if the bit is not preserved. Therefore, ACPICA no longer 
5165attempts to preserve this bit.
5166
5167Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 
5168incorrectly formed _PRT package could cause a fault. Added validation to 
5169ensure that each package element is actually a sub-package.
5170
5171Implemented a new interface to install or override a single control 
5172method, 
5173AcpiInstallMethod. This interface is useful when debugging in order to 
5174repair 
5175an existing method or to install a missing method without having to 
5176override 
5177the entire ACPI table. See the ACPICA Programmer Reference for use and 
5178examples. Lin Ming, Bob Moore.
5179
5180Fixed several reference count issues with the DdbHandle object that is 
5181created from a Load or LoadTable operator. Prevent premature deletion of 
5182the 
5183object. Also, mark the object as invalid once the table has been 
5184unloaded. 
5185This is needed because the handle itself may not be deleted after the 
5186table 
5187unload, depending on whether it has been stored in a named object by the 
5188caller. Lin Ming.
5189
5190Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 
5191mutexes of the same sync level are acquired but then not released in 
5192strict 
5193opposite order, the internally maintained Current Sync Level becomes 
5194confused 
5195and can cause subsequent execution errors. ACPICA BZ 471.
5196
5197Changed the allowable release order for ASL mutex objects. The ACPI 4.0 
5198specification has been changed to make the SyncLevel for mutex objects 
5199more 
5200useful. When releasing a mutex, the SyncLevel of the mutex must now be 
5201the 
5202same as the current sync level. This makes more sense than the previous 
5203rule 
5204(SyncLevel less than or equal). This change updates the code to match the 
5205specification.
5206
5207Fixed a problem with the local version of the AcpiOsPurgeCache function. 
5208The 
5209(local) cache must be locked during all cache object deletions. Andrew 
5210Baumann.
5211
5212Updated the Load operator to use operation region interfaces. This 
5213replaces 
5214direct memory mapping with region access calls. Now, all region accesses 
5215go 
5216through the installed region handler as they should.
5217
5218Simplified and optimized the NsGetNextNode function. Reduced parameter 
5219count 
5220and reduced code for this frequently used function.
5221
5222Example Code and Data Size: These are the sizes for the OS-independent 
5223acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5224debug version of the code includes the debug output trace mechanism and 
5225has a 
5226much larger code and data size.
5227
5228  Previous Release:
5229    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5230    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5231  Current Release:
5232    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5233    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5234
52352) iASL Compiler/Disassembler and Tools:
5236
5237Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 
5238problems 
5239with sub-table disassembly and handling invalid sub-tables. Attempt 
5240recovery 
5241after an invalid sub-table ID.
5242
5243----------------------------------------
524422 April 2009. Summary of changes for version 20090422:
5245
52461) ACPI CA Core Subsystem:
5247
5248Fixed a compatibility issue with the recently released I/O port 
5249protection 
5250mechanism. For windows compatibility, 1) On a port protection violation, 
5251simply ignore the request and do not return an exception (allow the 
5252control 
5253method to continue execution.) 2) If only part of the request overlaps a 
5254protected port, read/write the individual ports that are not protected. 
5255Linux 
5256BZ 13036. Lin Ming
5257
5258Enhanced the execution of the ASL/AML BreakPoint operator so that it 
5259actually 
5260breaks into the AML debugger if the debugger is present. This matches the 
5261ACPI-defined behavior.
5262
5263Fixed several possible warnings related to the use of the configurable 
5264ACPI_THREAD_ID. This type can now be configured as either an integer or a 
5265pointer with no warnings. Also fixes several warnings in printf-like 
5266statements for the 64-bit build when the type is configured as a pointer. 
5267ACPICA BZ 766, 767.
5268
5269Fixed a number of possible warnings when compiling with gcc 4+ (depending 
5270on 
5271warning options.) Examples include printf formats, aliasing, unused 
5272globals, 
5273missing prototypes, missing switch default statements, use of non-ANSI 
5274library functions, use of non-ANSI constructs. See generate/unix/Makefile 
5275for 
5276a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
5277
5278Example Code and Data Size: These are the sizes for the OS-independent 
5279acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5280debug version of the code includes the debug output trace mechanism and 
5281has a 
5282much larger code and data size.
5283
5284  Previous Release:
5285    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5286    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5287  Current Release:
5288    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5289    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5290
52912) iASL Compiler/Disassembler and Tools:
5292
5293iASL: Fixed a generation warning from Bison 2.3 and fixed several 
5294warnings 
5295on 
5296the 64-bit build.
5297
5298iASL: Fixed a problem where the Unix/Linux versions of the compiler could 
5299not 
5300correctly digest Windows/DOS formatted files (with CR/LF).
5301
5302iASL: Added a new option for "quiet mode" (-va) that produces only the 
5303compilation summary, not individual errors and warnings. Useful for large 
5304batch compilations.
5305
5306AcpiExec: Implemented a new option (-z) to enable a forced 
5307semaphore/mutex 
5308timeout that can be used to detect hang conditions during execution of 
5309AML 
5310code (includes both internal semaphores and AML-defined mutexes and 
5311events.)
5312
5313Added new makefiles for the generation of acpica in a generic unix-like 
5314environment. These makefiles are intended to generate the acpica tools 
5315and 
5316utilities from the original acpica git source tree structure.
5317
5318Test Suites: Updated and cleaned up the documentation files. Updated the 
5319copyrights to 2009, affecting all source files. Use the new version of 
5320iASL 
5321with quiet mode. Increased the number of available semaphores in the 
5322Windows 
5323OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 
5324added 
5325an alternate implementation of the semaphore timeout to allow aslts to 
5326execute fully on Cygwin.
5327
5328----------------------------------------
532920 March 2009. Summary of changes for version 20090320:
5330
53311) ACPI CA Core Subsystem:
5332
5333Fixed a possible race condition between AcpiWalkNamespace and dynamic 
5334table 
5335unloads. Added a reader/writer locking mechanism to allow multiple 
5336concurrent 
5337namespace walks (readers), but block a dynamic table unload until it can 
5338gain 
5339exclusive write access to the namespace. This fixes a problem where a 
5340table 
5341unload could (possibly catastrophically) delete the portion of the 
5342namespace 
5343that is currently being examined by a walk. Adds a new file, utlock.c, 
5344that 
5345implements the reader/writer lock mechanism. ACPICA BZ 749.
5346
5347Fixed a regression introduced in version 20090220 where a change to the 
5348FADT 
5349handling could cause the ACPICA subsystem to access non-existent I/O 
5350ports.
5351
5352Modified the handling of FADT register and table (FACS/DSDT) addresses. 
5353The 
5354FADT can contain both 32-bit and 64-bit versions of these addresses. 
5355Previously, the 64-bit versions were favored, meaning that if both 32 and 
535664 
5357versions were valid, but not equal, the 64-bit version was used. This was 
5358found to cause some machines to fail. Now, in this case, the 32-bit 
5359version 
5360is used instead. This now matches the Windows behavior.
5361
5362Implemented a new mechanism to protect certain I/O ports. Provides 
5363Microsoft 
5364compatibility and protects the standard PC I/O ports from access via AML 
5365code. Adds a new file, hwvalid.c
5366
5367Fixed a possible extraneous warning message from the FADT support. The 
5368message warns of a 32/64 length mismatch between the legacy and GAS 
5369definitions for a register.
5370
5371Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 
5372is 
5373made obsolete by the port protection mechanism above. It was previously 
5374used 
5375to validate the entire address range of an operation region, which could 
5376be 
5377incorrect if the range included illegal ports, but fields within the 
5378operation region did not actually access those ports. Validation is now 
5379performed on a per-field basis instead of the entire region.
5380
5381Modified the handling of the PM1 Status Register ignored bit (bit 11.) 
5382Ignored bits must be "preserved" according to the ACPI spec. Usually, 
5383this 
5384means a read/modify/write when writing to the register. However, for 
5385status 
5386registers, writing a one means clear the event. Writing a zero means 
5387preserve 
5388the event (do not clear.) This behavior is clarified in the ACPI 4.0 
5389spec, 
5390and the ACPICA code now simply always writes a zero to the ignored bit.
5391
5392Modified the handling of ignored bits for the PM1 A/B Control Registers. 
5393As 
5394per the ACPI specification, for the control registers, preserve 
5395(read/modify/write) all bits that are defined as either reserved or 
5396ignored.
5397
5398Updated the handling of write-only bits in the PM1 A/B Control Registers. 
5399When reading the register, zero the write-only bits as per the ACPI spec. 
5400ACPICA BZ 443. Lin Ming.
5401
5402Removed "Linux" from the list of supported _OSI strings. Linux no longer 
5403wants to reply true to this request. The Windows strings are the only 
5404paths 
5405through the AML that are tested and known to work properly.
5406
5407  Previous Release:
5408    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5409    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5410  Current Release:
5411    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5412    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5413
54142) iASL Compiler/Disassembler and Tools:
5415
5416Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 
5417and 
5418aetables.c
5419
5420----------------------------------------
542120 February 2009. Summary of changes for version 20090220:
5422
54231) ACPI CA Core Subsystem:
5424
5425Optimized the ACPI register locking. Removed locking for reads from the 
5426ACPI 
5427bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 
5428is 
5429not required when reading the single-bit registers. The 
5430AcpiGetRegisterUnlocked function is no longer needed and has been 
5431removed. 
5432This will improve performance for reads on these registers. ACPICA BZ 
5433760.
5434
5435Fixed the parameter validation for AcpiRead/Write. Now return 
5436AE_BAD_PARAMETER if the input register pointer is null, and 
5437AE_BAD_ADDRESS 
5438if 
5439the register has an address of zero. Previously, these cases simply 
5440returned 
5441AE_OK. For optional registers such as PM1B status/enable/control, the 
5442caller 
5443should check for a valid register address before calling. ACPICA BZ 748.
5444
5445Renamed the external ACPI bit register access functions. Renamed 
5446AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 
5447functions. The new names are AcpiReadBitRegister and 
5448AcpiWriteBitRegister. 
5449Also, restructured the code for these functions by simplifying the code 
5450path 
5451and condensing duplicate code to reduce code size.
5452
5453Added new functions to transparently handle the possibly split PM1 A/B 
5454registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 
5455functions 
5456now handle the split registers for PM1 Status, Enable, and Control. 
5457ACPICA 
5458BZ 
5459746.
5460
5461Added a function to handle the PM1 control registers, 
5462AcpiHwWritePm1Control. 
5463This function writes both of the PM1 control registers (A/B). These 
5464registers 
5465are different than the PM1 A/B status and enable registers in that 
5466different 
5467values can be written to the A/B registers. Most notably, the SLP_TYP 
5468bits 
5469can be different, as per the values returned from the _Sx predefined 
5470methods.
5471
5472Removed an extra register write within AcpiHwClearAcpiStatus. This 
5473function 
5474was writing an optional PM1B status register twice. The existing call to 
5475the 
5476low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 
5477A/B 
5478register. ACPICA BZ 751.
5479
5480Split out the PM1 Status registers from the FADT. Added new globals for 
5481these 
5482registers (A/B), similar to the way the PM1 Enable registers are handled. 
5483Instead of overloading the FADT Event Register blocks. This makes the 
5484code 
5485clearer and less prone to error.
5486
5487Fixed the warning message for when the platform contains too many ACPI 
5488tables 
5489for the default size of the global root table data structure. The 
5490calculation 
5491for the truncation value was incorrect.
5492
5493Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 
5494obsolete macro, since it is now a simple reference to ->common.type. 
5495There 
5496were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
5497
5498Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 
5499TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 
5500simply SLEEP_TYPE. ACPICA BZ 754.
5501
5502Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 
5503function is only needed on 64-bit host operating systems and is thus not 
5504included for 32-bit hosts.
5505
5506Debug output: print the input and result for invocations of the _OSI 
5507reserved 
5508control method via the ACPI_LV_INFO debug level. Also, reduced some of 
5509the 
5510verbosity of this debug level. Len Brown.
5511
5512Example Code and Data Size: These are the sizes for the OS-independent 
5513acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5514debug version of the code includes the debug output trace mechanism and 
5515has a 
5516much larger code and data size.
5517
5518  Previous Release:
5519    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5520    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5521  Current Release:
5522    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5523    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5524
55252) iASL Compiler/Disassembler and Tools:
5526
5527Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 
5528various legal performance profiles.
5529
5530----------------------------------------
553123 January 2009. Summary of changes for version 20090123:
5532
55331) ACPI CA Core Subsystem:
5534
5535Added the 2009 copyright to all module headers and signons. This affects 
5536virtually every file in the ACPICA core subsystem, the iASL compiler, and 
5537the tools/utilities.
5538
5539Implemented a change to allow the host to override any ACPI table, 
5540including 
5541dynamically loaded tables. Previously, only the DSDT could be replaced by 
5542the 
5543host. With this change, the AcpiOsTableOverride interface is called for 
5544each 
5545table found in the RSDT/XSDT during ACPICA initialization, and also 
5546whenever 
5547a table is dynamically loaded via the AML Load operator.
5548
5549Updated FADT flag definitions, especially the Boot Architecture flags.
5550
5551Debugger: For the Find command, automatically pad the input ACPI name 
5552with 
5553underscores if the name is shorter than 4 characters. This enables a 
5554match 
5555with the actual namespace entry which is itself padded with underscores.
5556
5557Example Code and Data Size: These are the sizes for the OS-independent 
5558acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5559debug version of the code includes the debug output trace mechanism and 
5560has a 
5561much larger code and data size.
5562
5563  Previous Release:
5564    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5565    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5566  Current Release:
5567    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5568    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5569
55702) iASL Compiler/Disassembler and Tools:
5571
5572Fix build error under Bison-2.4.
5573
5574Dissasembler: Enhanced FADT support. Added decoding of the Boot 
5575Architecture 
5576flags. Now decode all flags, regardless of the FADT version. Flag output 
5577includes the FADT version which first defined each flag.
5578
5579The iASL -g option now dumps the RSDT to a file (in addition to the FADT 
5580and 
5581DSDT). Windows only.
5582
5583----------------------------------------
558404 December 2008. Summary of changes for version 20081204:
5585
55861) ACPI CA Core Subsystem:
5587
5588The ACPICA Programmer Reference has been completely updated and revamped 
5589for 
5590this release. This includes updates to the external interfaces, OSL 
5591interfaces, the overview sections, and the debugger reference.
5592
5593Several new ACPICA interfaces have been implemented and documented in the 
5594programmer reference:
5595AcpiReset - Writes the reset value to the FADT-defined reset register.
5596AcpiDisableAllGpes - Disable all available GPEs.
5597AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
5598AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
5599AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
5600AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
5601AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
5602
5603Most of the public ACPI hardware-related interfaces have been moved to a 
5604new 
5605file, components/hardware/hwxface.c
5606
5607Enhanced the FADT parsing and low-level ACPI register access: The ACPI 
5608register lengths within the FADT are now used, and the low level ACPI 
5609register access no longer hardcodes the ACPI register lengths. Given that 
5610there may be some risk in actually trusting the FADT register lengths, a 
5611run-
5612time option was added to fall back to the default hardcoded lengths if 
5613the 
5614FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 
5615option is set to true for now, and a warning is issued if a suspicious 
5616FADT 
5617register length is overridden with the default value.
5618
5619Fixed a reference count issue in NsRepairObject. This problem was 
5620introduced 
5621in version 20081031 as part of a fix to repair Buffer objects within 
5622Packages. Lin Ming.
5623
5624Added semaphore support to the Linux/Unix application OS-services layer 
5625(OSL). ACPICA BZ 448. Lin Ming.
5626
5627Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 
5628will 
5629be implemented in the OSL, or will binary semaphores be used instead.
5630
5631Example Code and Data Size: These are the sizes for the OS-independent 
5632acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5633debug version of the code includes the debug output trace mechanism and 
5634has a 
5635much larger code and data size.
5636
5637  Previous Release:
5638    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5639    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5640  Current Release:
5641    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5642    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5643
56442) iASL Compiler/Disassembler and Tools:
5645
5646iASL: Completed the '-e' option to include additional ACPI tables in 
5647order 
5648to 
5649aid with disassembly and External statement generation. ACPICA BZ 742. 
5650Lin 
5651Ming.
5652
5653iASL: Removed the "named object in while loop" error. The compiler cannot 
5654determine how many times a loop will execute. ACPICA BZ 730.
5655
5656Disassembler: Implemented support for FADT revision 2 (MS extension). 
5657ACPICA 
5658BZ 743.
5659
5660Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 
5661MCFG).
5662
5663----------------------------------------
566431 October 2008. Summary of changes for version 20081031:
5665
56661) ACPI CA Core Subsystem:
5667
5668Restructured the ACPICA header files into public/private. acpi.h now 
5669includes 
5670only the "public" acpica headers. All other acpica headers are "private" 
5671and 
5672should not be included by acpica users. One new file, accommon.h is used 
5673to 
5674include the commonly used private headers for acpica code generation. 
5675Future 
5676plans include moving all private headers to a new subdirectory.
5677
5678Implemented an automatic Buffer->String return value conversion for 
5679predefined ACPI methods. For these methods (such as _BIF), added 
5680automatic 
5681conversion for return objects that are required to be a String, but a 
5682Buffer 
5683was found instead. This can happen when reading string battery data from 
5684an 
5685operation region, because it used to be difficult to convert the data 
5686from 
5687buffer to string from within the ASL. Ensures that the host OS is 
5688provided 
5689with a valid null-terminated string. Linux BZ 11822.
5690
5691Updated the FACS waking vector interfaces. Split 
5692AcpiSetFirmwareWakingVector 
5693into two: one for the 32-bit vector, another for the 64-bit vector. This 
5694is 
5695required because the host OS must setup the wake much differently for 
5696each 
5697vector (real vs. protected mode, etc.) and the interface itself should 
5698not 
5699be 
5700deciding which vector to use. Also, eliminated the 
5701GetFirmwareWakingVector 
5702interface, as it served no purpose (only the firmware reads the vector, 
5703OS 
5704only writes the vector.) ACPICA BZ 731.
5705
5706Implemented a mechanism to escape infinite AML While() loops. Added a 
5707loop 
5708counter to force exit from AML While loops if the count becomes too 
5709large. 
5710This can occur in poorly written AML when the hardware does not respond 
5711within a while loop and the loop does not implement a timeout. The 
5712maximum 
5713loop count is configurable. A new exception code is returned when a loop 
5714is 
5715broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
5716
5717Optimized the execution of AML While loops. Previously, a control state 
5718object was allocated and freed for each execution of the loop. The 
5719optimization is to simply reuse the control state for each iteration. 
5720This 
5721speeds up the raw loop execution time by about 5%.
5722
5723Enhanced the implicit return mechanism. For Windows compatibility, return 
5724an 
5725implicit integer of value zero for methods that contain no executable 
5726code. 
5727Such methods are seen in the field as stubs (presumably), and can cause 
5728drivers to fail if they expect a return value. Lin Ming.
5729
5730Allow multiple backslashes as root prefixes in namepaths. In a fully 
5731qualified namepath, allow multiple backslash prefixes. This can happen 
5732(and 
5733is seen in the field) because of the use of a double-backslash in strings 
5734(since backslash is the escape character) causing confusion. ACPICA BZ 
5735739 
5736Lin Ming.
5737
5738Emit a warning if two different FACS or DSDT tables are discovered in the 
5739FADT. Checks if there are two valid but different addresses for the FACS 
5740and 
5741DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
5742
5743Consolidated the method argument count validation code. Merged the code 
5744that 
5745validates control method argument counts into the predefined validation 
5746module. Eliminates possible multiple warnings for incorrect argument 
5747counts.
5748
5749Implemented ACPICA example code. Includes code for ACPICA initialization, 
5750handler installation, and calling a control method. Available at 
5751source/tools/examples.
5752
5753Added a global pointer for FACS table to simplify internal FACS access. 
5754Use 
5755the global pointer instead of using AcpiGetTableByIndex for each FACS 
5756access. 
5757This simplifies the code for the Global Lock and the Firmware Waking 
5758Vector(s).
5759
5760Example Code and Data Size: These are the sizes for the OS-independent 
5761acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5762debug version of the code includes the debug output trace mechanism and 
5763has a 
5764much larger code and data size.
5765
5766  Previous Release:
5767    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5768    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5769  Current Release:
5770    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5771    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5772
57732) iASL Compiler/Disassembler and Tools:
5774
5775iASL: Improved disassembly of external method calls. Added the -e option 
5776to 
5777allow the inclusion of additional ACPI tables to help with the 
5778disassembly 
5779of 
5780method invocations and the generation of external declarations during the 
5781disassembly. Certain external method invocations cannot be disassembled 
5782properly without the actual declaration of the method. Use the -e option 
5783to 
5784include the table where the external method(s) are actually declared. 
5785Most 
5786useful for disassembling SSDTs that make method calls back to the master 
5787DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl 
5788-d 
5789-e dsdt.aml ssdt1.aml
5790
5791iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 
5792problem where the use of an alias within a namepath would result in a not 
5793found error or cause the compiler to fault. Also now allows forward 
5794references from the Alias operator itself. ACPICA BZ 738.
5795
5796----------------------------------------
579726 September 2008. Summary of changes for version 20080926:
5798
57991) ACPI CA Core Subsystem:
5800
5801Designed and implemented a mechanism to validate predefined ACPI methods 
5802and 
5803objects. This code validates the predefined ACPI objects (objects whose 
5804names 
5805start with underscore) that appear in the namespace, at the time they are 
5806evaluated. The argument count and the type of the returned object are 
5807validated against the ACPI specification. The purpose of this validation 
5808is 
5809to detect problems with the BIOS-implemented predefined ACPI objects 
5810before 
5811the results are returned to the ACPI-related drivers. Future enhancements 
5812may 
5813include actual repair of incorrect return objects where possible. Two new 
5814files are nspredef.c and acpredef.h.
5815
5816Fixed a fault in the AML parser if a memory allocation fails during the 
5817Op 
5818completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
5819
5820Fixed an issue with implicit return compatibility. This change improves 
5821the 
5822implicit return mechanism to be more compatible with the MS interpreter. 
5823Lin 
5824Ming, ACPICA BZ 349.
5825
5826Implemented support for zero-length buffer-to-string conversions. Allow 
5827zero 
5828length strings during interpreter buffer-to-string conversions. For 
5829example, 
5830during the ToDecimalString and ToHexString operators, as well as implicit 
5831conversions. Fiodor Suietov, ACPICA BZ 585.
5832
5833Fixed two possible memory leaks in the error exit paths of 
5834AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 
5835are 
5836similar in that they use a stack of state objects in order to eliminate 
5837recursion. The stack must be fully unwound and deallocated if an error 
5838occurs. Lin Ming. ACPICA BZ 383.
5839
5840Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 
5841global 
5842ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 
5843Moore ACPICA BZ 442.
5844
5845Removed the obsolete version number in module headers. Removed the 
5846"$Revision" number that appeared in each module header. This version 
5847number 
5848was useful under SourceSafe and CVS, but has no meaning under git. It is 
5849not 
5850only incorrect, it could also be misleading.
5851
5852Example Code and Data Size: These are the sizes for the OS-independent 
5853acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5854debug version of the code includes the debug output trace mechanism and 
5855has a 
5856much larger code and data size.
5857
5858  Previous Release:
5859    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5860    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5861  Current Release:
5862    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5863    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5864
5865----------------------------------------
586629 August 2008. Summary of changes for version 20080829:
5867
58681) ACPI CA Core Subsystem:
5869
5870Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 
5871Reference. Changes include the elimination of cheating on the Object 
5872field 
5873for the DdbHandle subtype, addition of a reference class field to 
5874differentiate the various reference types (instead of an AML opcode), and 
5875the 
5876cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
5877
5878Reduce an error to a warning for an incorrect method argument count. 
5879Previously aborted with an error if too few arguments were passed to a 
5880control method via the external ACPICA interface. Now issue a warning 
5881instead 
5882and continue. Handles the case where the method inadvertently declares 
5883too 
5884many arguments, but does not actually use the extra ones. Applies mainly 
5885to 
5886the predefined methods. Lin Ming. Linux BZ 11032.
5887
5888Disallow the evaluation of named object types with no intrinsic value. 
5889Return 
5890AE_TYPE for objects that have no value and therefore evaluation is 
5891undefined: 
5892Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 
5893of 
5894these types were allowed, but an exception would be generated at some 
5895point 
5896during the evaluation. Now, the error is generated up front.
5897
5898Fixed a possible memory leak in the AcpiNsGetExternalPathname function 
5899(nsnames.c). Fixes a leak in the error exit path.
5900
5901Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 
5902debug 
5903levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 
5904ACPI_EXCEPTION 
5905interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 
5906ACPI_LV_EVENTS.
5907
5908Removed obsolete and/or unused exception codes from the acexcep.h header. 
5909There is the possibility that certain device drivers may be affected if 
5910they 
5911use any of these exceptions.
5912
5913The ACPICA documentation has been added to the public git source tree, 
5914under 
5915acpica/documents. Included are the ACPICA programmer reference, the iASL 
5916compiler reference, and the changes.txt release logfile.
5917
5918Example Code and Data Size: These are the sizes for the OS-independent 
5919acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
5920debug version of the code includes the debug output trace mechanism and 
5921has a 
5922much larger code and data size.
5923
5924  Previous Release:
5925    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5926    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
5927  Current Release:
5928    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5929    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5930
59312) iASL Compiler/Disassembler and Tools:
5932
5933Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 
5934defines _SCP with 3 arguments. Previous versions defined it with only 1 
5935argument. iASL now allows both definitions.
5936
5937iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 
5938zero-
5939length subtables when disassembling ACPI tables. Also fixed a couple of 
5940errors where a full 16-bit table type field was not extracted from the 
5941input 
5942properly.
5943
5944acpisrc: Improve comment counting mechanism for generating source code 
5945statistics. Count first and last lines of multi-line comments as 
5946whitespace, 
5947not comment lines. Handle Linux legal header in addition to standard 
5948acpica 
5949header.
5950
5951----------------------------------------
5952
595329 July 2008. Summary of changes for version 20080729:
5954
59551) ACPI CA Core Subsystem:
5956
5957Fix a possible deadlock in the GPE dispatch. Remove call to 
5958AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 
5959attempt 
5960to acquire the GPE lock but can deadlock since the GPE lock is already 
5961held 
5962at dispatch time. This code was introduced in version 20060831 as a 
5963response 
5964to Linux BZ 6881 and has since been removed from Linux.
5965
5966Add a function to dereference returned reference objects. Examines the 
5967return 
5968object from a call to AcpiEvaluateObject. Any Index or RefOf references 
5969are 
5970automatically dereferenced in an attempt to return something useful 
5971(these 
5972reference types cannot be converted into an external ACPI_OBJECT.) 
5973Provides 
5974MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
5975
5976x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 
5977subtables for the MADT and one new subtable for the SRAT. Includes 
5978disassembler and AcpiSrc support. Data from the Intel 64 Architecture 
5979x2APIC 
5980Specification, June 2008.
5981
5982Additional error checking for pathname utilities. Add error check after 
5983all 
5984calls to AcpiNsGetPathnameLength. Add status return from 
5985AcpiNsBuildExternalPath and check after all calls. Add parameter 
5986validation 
5987to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
5988
5989Return status from the global init function AcpiUtGlobalInitialize. This 
5990is 
5991used by both the kernel subsystem and the utilities such as iASL 
5992compiler. 
5993The function could possibly fail when the caches are initialized. Yang 
5994Yi.
5995
5996Add a function to decode reference object types to strings. Created for 
5997improved error messages. 
5998
5999Improve object conversion error messages. Better error messages during 
6000object 
6001conversion from internal to the external ACPI_OBJECT. Used for external 
6002calls 
6003to AcpiEvaluateObject.
6004
6005Example Code and Data Size: These are the sizes for the OS-independent 
6006acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6007debug version of the code includes the debug output trace mechanism and 
6008has a 
6009much larger code and data size.
6010
6011  Previous Release:
6012    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
6013    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
6014  Current Release:
6015    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6016    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
6017
60182) iASL Compiler/Disassembler and Tools:
6019
6020Debugger: fix a possible hang when evaluating non-methods. Fixes a 
6021problem 
6022introduced in version 20080701. If the object being evaluated (via 
6023execute 
6024command) is not a method, the debugger can hang while trying to obtain 
6025non-
6026existent parameters.
6027
6028iASL: relax error for using reserved "_T_x" identifiers. These names can 
6029appear in a disassembled ASL file if they were emitted by the original 
6030compiler. Instead of issuing an error or warning and forcing the user to 
6031manually change these names, issue a remark instead.
6032
6033iASL: error if named object created in while loop. Emit an error if any 
6034named 
6035object is created within a While loop. If allowed, this code will 
6036generate 
6037a 
6038run-time error on the second iteration of the loop when an attempt is 
6039made 
6040to 
6041create the same named object twice. ACPICA bugzilla 730.
6042
6043iASL: Support absolute pathnames for include files. Add support for 
6044absolute 
6045pathnames within the Include operator. previously, only relative 
6046pathnames 
6047were supported.
6048
6049iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 
6050Descriptor. 
6051The ACPI spec requires one interrupt minimum. BZ 423
6052
6053iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 
6054Handles the case for the Interrupt Resource Descriptor where
6055the ResourceSource argument is omitted but ResourceSourceIndex
6056is present. Now leave room for the Index. BZ 426
6057
6058iASL: Prevent error message if CondRefOf target does not exist. Fixes 
6059cases 
6060where an error message is emitted if the target does not exist. BZ 516
6061
6062iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 
6063(get ACPI tables on Windows). This was apparently broken in version 
606420070919.
6065
6066AcpiXtract: Handle EOF while extracting data. Correctly handle the case 
6067where 
6068the EOF happens immediately after the last table in the input file. Print 
6069completion message. Previously, no message was displayed in this case.
6070
6071----------------------------------------
607201 July 2008. Summary of changes for version 20080701:
6073
60740) Git source tree / acpica.org
6075
6076Fixed a problem where a git-clone from http would not transfer the entire 
6077source tree.
6078
60791) ACPI CA Core Subsystem:
6080
6081Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 
6082enable bit. Now performs a read-change-write of the enable register 
6083instead 
6084of simply writing out the cached enable mask. This will prevent 
6085inadvertent 
6086enabling of GPEs if a rogue GPE is received during initialization (before 
6087GPE 
6088handlers are installed.)
6089
6090Implemented a copy for dynamically loaded tables. Previously, dynamically 
6091loaded tables were simply mapped - but on some machines this memory is 
6092corrupted after suspend. Now copy the table to a local buffer. For the 
6093OpRegion case, added checksum verify. Use the table length from the table 
6094header, not the region length. For the Buffer case, use the table length 
6095also. Dennis Noordsij, Bob Moore. BZ 10734
6096
6097Fixed a problem where the same ACPI table could not be dynamically loaded 
6098and 
6099unloaded more than once. Without this change, a table cannot be loaded 
6100again 
6101once it has been loaded/unloaded one time. The current mechanism does not 
6102unregister a table upon an unload. During a load, if the same table is 
6103found, 
6104this no longer returns an exception. BZ 722
6105
6106Fixed a problem where the wrong descriptor length was calculated for the 
6107EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 
6108EndTag 
6109are calculated as 12 bytes long, but the actual length in the internal 
6110descriptor is 16 because of the round-up to 8 on the 64-bit build. 
6111Reported 
6112by Linn Crosetto. BZ 728
6113
6114Fixed a possible memory leak in the Unload operator. The DdbHandle 
6115returned 
6116by Load() did not have its reference count decremented during unload, 
6117leading 
6118to a memory leak. Lin Ming. BZ 727
6119
6120Fixed a possible memory leak when deleting thermal/processor objects. Any 
6121associated notify handlers (and objects) were not being deleted. Fiodor 
6122Suietov. BZ 506
6123
6124Fixed the ordering of the ASCII names in the global mutex table to match 
6125the 
6126actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 
6127only. 
6128Vegard Nossum. BZ 726
6129
6130Enhanced the AcpiGetObjectInfo interface to return the number of required 
6131arguments if the object is a control method. Added this call to the 
6132debugger 
6133so the proper number of default arguments are passed to a method. This 
6134prevents a warning when executing methods from AcpiExec.
6135
6136Added a check for an invalid handle in AcpiGetObjectInfo. Return 
6137AE_BAD_PARAMETER if input handle is invalid. BZ 474
6138
6139Fixed an extraneous warning from exconfig.c on the 64-bit build.
6140
6141Example Code and Data Size: These are the sizes for the OS-independent 
6142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6143debug version of the code includes the debug output trace mechanism and 
6144has a 
6145much larger code and data size.
6146
6147  Previous Release:
6148    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
6149    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
6150  Current Release:
6151    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
6152    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
6153
61542) iASL Compiler/Disassembler and Tools:
6155
6156iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 
6157resource descriptor names.
6158
6159iASL: Detect invalid ASCII characters in input (windows version). Removed 
6160the 
6161"-CF" flag from the flex compile, enables correct detection of non-ASCII 
6162characters in the input. BZ 441
6163
6164iASL: Eliminate warning when result of LoadTable is not used. Eliminate 
6165the 
6166"result of operation not used" warning when the DDB handle returned from 
6167LoadTable is not used. The warning is not needed. BZ 590
6168
6169AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 
6170method 
6171to 
6172pass address of table to the AML. Added option to disable OpRegion 
6173simulation 
6174to allow creation of an OpRegion with a real address that was passed to 
6175_CFG. 
6176All of this allows testing of the Load and Unload operators from 
6177AcpiExec.
6178
6179Debugger: update tables command for unloaded tables. Handle unloaded 
6180tables 
6181and use the standard table header output routine.
6182
6183----------------------------------------
618409 June 2008. Summary of changes for version 20080609:
6185
61861) ACPI CA Core Subsystem:
6187
6188Implemented a workaround for reversed _PRT entries. A significant number 
6189of 
6190BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 
6191change dynamically detects and repairs this problem. Provides 
6192compatibility 
6193with MS ACPI. BZ 6859
6194
6195Simplified the internal ACPI hardware interfaces to eliminate the locking 
6196flag parameter from Register Read/Write. Added a new external interface, 
6197AcpiGetRegisterUnlocked.
6198
6199Fixed a problem where the invocation of a GPE control method could hang. 
6200This 
6201was a regression introduced in 20080514. The new method argument count 
6202validation mechanism can enter an infinite loop when a GPE method is 
6203dispatched. Problem fixed by removing the obsolete code that passed GPE 
6204block 
6205information to the notify handler via the control method parameter 
6206pointer.
6207
6208Fixed a problem where the _SST execution status was incorrectly returned 
6209to 
6210the caller of AcpiEnterSleepStatePrep. This was a regression introduced 
6211in 
621220080514. _SST is optional and a NOT_FOUND exception should never be 
6213returned. BZ 716
6214
6215Fixed a problem where a deleted object could be accessed from within the 
6216AML 
6217parser. This was a regression introduced in version 20080123 as a fix for 
6218the 
6219Unload operator. Lin Ming. BZ 10669
6220
6221Cleaned up the debug operand dump mechanism. Eliminated unnecessary 
6222operands 
6223and eliminated the use of a negative index in a loop. Operands are now 
6224displayed in the correct order, not backwards. This also fixes a 
6225regression 
6226introduced in 20080514 on 64-bit systems where the elimination of 
6227ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 
6228715
6229
6230Fixed a possible memory leak in EvPciConfigRegionSetup where the error 
6231exit 
6232path did not delete a locally allocated structure.
6233
6234Updated definitions for the DMAR and SRAT tables to synchronize with the 
6235current specifications. Includes disassembler support.
6236
6237Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 
6238loop termination value was used. Loop terminated on iteration early, 
6239missing 
6240one mutex. Linn Crosetto
6241
6242Example Code and Data Size: These are the sizes for the OS-independent 
6243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6244debug version of the code includes the debug output trace mechanism and 
6245has a 
6246much larger code and data size.
6247
6248  Previous Release:
6249    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6250    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6251  Current Release:
6252    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
6253    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
6254
62552) iASL Compiler/Disassembler and Tools:
6256
6257Disassembler: Implemented support for EisaId() within _CID objects. Now 
6258disassemble integer _CID objects back to EisaId invocations, including 
6259multiple integers within _CID packages. Includes single-step support for 
6260debugger also.
6261
6262Disassembler: Added support for DMAR and SRAT table definition changes.
6263
6264----------------------------------------
626514 May 2008. Summary of changes for version 20080514:
6266
62671) ACPI CA Core Subsystem:
6268
6269Fixed a problem where GPEs were enabled too early during the ACPICA 
6270initialization. This could lead to "handler not installed" errors on some 
6271machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 
6272This 
6273ensures that all operation regions and devices throughout the namespace 
6274have 
6275been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
6276
6277Implemented a change to the enter sleep code. Moved execution of the _GTS 
6278method to just before setting sleep enable bit. The execution was moved 
6279from 
6280AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 
6281immediately before the SLP_EN bit is set, as per the ACPI specification. 
6282Luming Yu, BZ 1653.
6283
6284Implemented a fix to disable unknown GPEs (2nd version). Now always 
6285disable 
6286the GPE, even if ACPICA thinks that that it is already disabled. It is 
6287possible that the AML or some other code has enabled the GPE unbeknownst 
6288to 
6289the ACPICA code.
6290
6291Fixed a problem with the Field operator where zero-length fields would 
6292return 
6293an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 
6294ASL 
6295field declarations in Field(), BankField(), and IndexField(). BZ 10606.
6296
6297Implemented a fix for the Load operator, now load the table at the 
6298namespace 
6299root. This reverts a change introduced in version 20071019. The table is 
6300now 
6301loaded at the namespace root even though this goes against the ACPI 
6302specification. This provides compatibility with other ACPI 
6303implementations. 
6304The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 
6305Ming.
6306
6307Fixed a problem where ACPICA would not Load() tables with unusual 
6308signatures. 
6309Now ignore ACPI table signature for Load() operator. Only "SSDT" is 
6310acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 
6311Therefore, signature validation is worthless. Apparently MS ACPI accepts 
6312such 
6313signatures, ACPICA must be compatible. BZ 10454.
6314
6315Fixed a possible negative array index in AcpiUtValidateException. Added 
6316NULL 
6317fields to the exception string arrays to eliminate a -1 subtraction on 
6318the 
6319SubStatus field.
6320
6321Updated the debug tracking macros to reduce overall code and data size. 
6322Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 
6323instead of pointers to static strings. Jan Beulich and Bob Moore.
6324
6325Implemented argument count checking in control method invocation via 
6326AcpiEvaluateObject. Now emit an error if too few arguments, warning if 
6327too 
6328many. This applies only to extern programmatic control method execution, 
6329not 
6330method-to-method calls within the AML. Lin Ming.
6331
6332Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 
6333no 
6334longer needed, especially with the removal of 16-bit support. It was 
6335replaced 
6336mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 
6337bit 
6338on 
633932/64-bit platforms is required.
6340
6341Added the C const qualifier for appropriate string constants -- mostly 
6342MODULE_NAME and printf format strings. Jan Beulich.
6343
6344Example Code and Data Size: These are the sizes for the OS-independent 
6345acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6346debug version of the code includes the debug output trace mechanism and 
6347has a 
6348much larger code and data size.
6349
6350  Previous Release:
6351    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6352    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6353  Current Release:
6354    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6355    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6356
63572) iASL Compiler/Disassembler and Tools:
6358
6359Implemented ACPI table revision ID validation in the disassembler. Zero 
6360is 
6361always invalid. For DSDTs, the ID controls the interpreter integer width. 
63621 
6363means 32-bit and this is unusual. 2 or greater is 64-bit.
6364
6365----------------------------------------
636621 March 2008. Summary of changes for version 20080321:
6367
63681) ACPI CA Core Subsystem:
6369
6370Implemented an additional change to the GPE support in order to suppress 
6371spurious or stray GPEs. The AcpiEvDisableGpe function will now 
6372permanently 
6373disable incoming GPEs that are neither enabled nor disabled -- meaning 
6374that 
6375the GPE is unknown to the system. This should prevent future interrupt 
6376floods 
6377from that GPE. BZ 6217 (Zhang Rui)
6378
6379Fixed a problem where NULL package elements were not returned to the 
6380AcpiEvaluateObject interface correctly. The element was simply ignored 
6381instead of returning a NULL ACPI_OBJECT package element, potentially 
6382causing 
6383a buffer overflow and/or confusing the caller who expected a fixed number 
6384of 
6385elements. BZ 10132 (Lin Ming, Bob Moore)
6386
6387Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 
6388Dword, 
6389Qword), Field, BankField, and IndexField operators when invoked from 
6390inside 
6391an executing control method. In this case, these operators created 
6392namespace 
6393nodes that were incorrectly left marked as permanent nodes instead of 
6394temporary nodes. This could cause a problem if there is race condition 
6395between an exiting control method and a running namespace walk. (Reported 
6396by 
6397Linn Crosetto)
6398
6399Fixed a problem where the CreateField and CreateXXXField operators would 
6400incorrectly allow duplicate names (the name of the field) with no 
6401exception 
6402generated.
6403
6404Implemented several changes for Notify handling. Added support for new 
6405Notify 
6406values (ACPI 2.0+) and improved the Notify debug output. Notify on 
6407PowerResource objects is no longer allowed, as per the ACPI 
6408specification. 
6409(Bob Moore, Zhang Rui)
6410
6411All Reference Objects returned via the AcpiEvaluateObject interface are 
6412now 
6413marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 
6414for 
6415NULL objects - either NULL package elements or unresolved named 
6416references.
6417
6418Fixed a problem where an extraneous debug message was produced for 
6419package 
6420objects (when debugging enabled). The message "Package List length larger 
6421than NumElements count" is now produced in the correct case, and is now 
6422an 
6423error message rather than a debug message. Added a debug message for the 
6424opposite case, where NumElements is larger than the Package List (the 
6425package 
6426will be padded out with NULL elements as per the ACPI spec.)
6427
6428Implemented several improvements for the output of the ASL "Debug" object 
6429to 
6430clarify and keep all data for a given object on one output line.
6431
6432Fixed two size calculation issues with the variable-length Start 
6433Dependent 
6434resource descriptor.
6435
6436Example Code and Data Size: These are the sizes for the OS-independent 
6437acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6438debug version of the code includes the debug output trace mechanism and 
6439has 
6440a much larger code and data size.
6441
6442  Previous Release:
6443    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6444    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6445  Current Release:
6446    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6447    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6448
64492) iASL Compiler/Disassembler and Tools:
6450
6451Fixed a problem with the use of the Switch operator where execution of 
6452the 
6453containing method by multiple concurrent threads could cause an 
6454AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 
6455actual Switch opcode, it must be simulated with local named temporary 
6456variables and if/else pairs. The solution chosen was to mark any method 
6457that 
6458uses Switch as Serialized, thus preventing multiple thread entries. BZ 
6459469.
6460
6461----------------------------------------
646213 February 2008. Summary of changes for version 20080213:
6463
64641) ACPI CA Core Subsystem:
6465
6466Implemented another MS compatibility design change for GPE/Notify 
6467handling. 
6468GPEs are now cleared/enabled asynchronously to allow all pending notifies 
6469to 
6470complete first. It is expected that the OSL will queue the enable request 
6471behind all pending notify requests (may require changes to the local host 
6472OSL 
6473in AcpiOsExecute). Alexey Starikovskiy.
6474
6475Fixed a problem where buffer and package objects passed as arguments to a 
6476control method via the external AcpiEvaluateObject interface could cause 
6477an 
6478AE_AML_INTERNAL exception depending on the order and type of operators 
6479executed by the target control method.
6480
6481Fixed a problem where resource descriptor size optimization could cause a 
6482problem when a _CRS resource template is passed to a _SRS method. The 
6483_SRS 
6484resource template must use the same descriptors (with the same size) as 
6485returned from _CRS. This change affects the following resource 
6486descriptors: 
6487IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 
64889487)
6489
6490Fixed a problem where a CopyObject to RegionField, BankField, and 
6491IndexField 
6492objects did not perform an implicit conversion as it should. These types 
6493must 
6494retain their initial type permanently as per the ACPI specification. 
6495However, 
6496a CopyObject to all other object types should not perform an implicit 
6497conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
6498
6499Fixed a problem with the AcpiGetDevices interface where the mechanism to 
6500match device CIDs did not examine the entire list of available CIDs, but 
6501instead aborted on the first non-matching CID. Andrew Patterson.
6502
6503Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 
6504was 
6505inadvertently changed to return a 16-bit value instead of a 32-bit value, 
6506truncating the upper dword of a 64-bit value. This macro is only used to 
6507display debug output, so no incorrect calculations were made. Also, 
6508reimplemented the macro so that a 64-bit shift is not performed by 
6509inefficient compilers.
6510
6511Added missing va_end statements that should correspond with each va_start 
6512statement.
6513
6514Example Code and Data Size: These are the sizes for the OS-independent 
6515acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6516debug version of the code includes the debug output trace mechanism and 
6517has 
6518a much larger code and data size.
6519
6520  Previous Release:
6521    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6522    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6523  Current Release:
6524    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6525    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6526
65272) iASL Compiler/Disassembler and Tools:
6528
6529Implemented full disassembler support for the following new ACPI tables: 
6530BERT, EINJ, and ERST. Implemented partial disassembler support for the 
6531complicated HEST table. These tables support the Windows Hardware Error 
6532Architecture (WHEA).
6533
6534----------------------------------------
653523 January 2008. Summary of changes for version 20080123:
6536
65371) ACPI CA Core Subsystem:
6538
6539Added the 2008 copyright to all module headers and signons. This affects 
6540virtually every file in the ACPICA core subsystem, the iASL compiler, and 
6541the tools/utilities.
6542
6543Fixed a problem with the SizeOf operator when used with Package and 
6544Buffer 
6545objects. These objects have deferred execution for some arguments, and 
6546the 
6547execution is now completed before the SizeOf is executed. This problem 
6548caused 
6549unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 
6550BZ 
65519558
6552
6553Implemented an enhancement to the interpreter "slack mode". In the 
6554absence 
6555of 
6556an explicit return or an implicitly returned object from the last 
6557executed 
6558opcode, a control method will now implicitly return an integer of value 0 
6559for 
6560Microsoft compatibility. (Lin Ming) BZ 392
6561
6562Fixed a problem with the Load operator where an exception was not 
6563returned 
6564in 
6565the case where the table is already loaded. (Lin Ming) BZ 463
6566
6567Implemented support for the use of DDBHandles as an Indexed Reference, as 
6568per 
6569the ACPI spec. (Lin Ming) BZ 486
6570
6571Implemented support for UserTerm (Method invocation) for the Unload 
6572operator 
6573as per the ACPI spec. (Lin Ming) BZ 580
6574
6575Fixed a problem with the LoadTable operator where the OemId and 
6576OemTableId 
6577input strings could cause unexpected failures if they were shorter than 
6578the 
6579maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
6580
6581Implemented support for UserTerm (Method invocation) for the Unload 
6582operator 
6583as per the ACPI spec. (Lin Ming) BZ 580
6584
6585Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 
6586HEST, 
6587IBFT, UEFI, WDAT. Disassembler support is forthcoming.
6588
6589Example Code and Data Size: These are the sizes for the OS-independent 
6590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6591debug version of the code includes the debug output trace mechanism and 
6592has 
6593a much larger code and data size.
6594
6595  Previous Release:
6596    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
6597    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6598  Current Release:
6599    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6600    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6601
66022) iASL Compiler/Disassembler and Tools:
6603
6604Implemented support in the disassembler for checksum validation on 
6605incoming 
6606binary DSDTs and SSDTs. If incorrect, a message is displayed within the 
6607table 
6608header dump at the start of the disassembly.
6609
6610Implemented additional debugging information in the namespace listing 
6611file 
6612created during compilation. In addition to the namespace hierarchy, the 
6613full 
6614pathname to each namespace object is displayed.
6615
6616Fixed a problem with the disassembler where invalid ACPI tables could 
6617cause 
6618faults or infinite loops.
6619
6620Fixed an unexpected parse error when using the optional "parameter types" 
6621list in a control method declaration. (Lin Ming) BZ 397
6622
6623Fixed a problem where two External declarations with the same name did 
6624not 
6625cause an error (Lin Ming) BZ 509
6626
6627Implemented support for full TermArgs (adding Argx, Localx and method 
6628invocation) for the ParameterData parameter to the LoadTable operator. 
6629(Lin 
6630Ming) BZ 583,587
6631
6632----------------------------------------
663319 December 2007. Summary of changes for version 20071219:
6634
66351) ACPI CA Core Subsystem:
6636
6637Implemented full support for deferred execution for the TermArg string 
6638arguments for DataTableRegion. This enables forward references and full 
6639operand resolution for the three string arguments. Similar to 
6640OperationRegion 
6641deferred argument execution.) Lin Ming. BZ 430
6642
6643Implemented full argument resolution support for the BankValue argument 
6644to 
6645BankField. Previously, only constants were supported, now any TermArg may 
6646be 
6647used. Lin Ming BZ 387, 393
6648
6649Fixed a problem with AcpiGetDevices where the search of a branch of the 
6650device tree could be terminated prematurely. In accordance with the ACPI 
6651specification, the search down the current branch is terminated if a 
6652device 
6653is both not present and not functional (instead of just not present.) 
6654Yakui 
6655Zhao.
6656
6657Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 
6658if 
6659the underlying AML code changed the GPE enable registers. Now, any 
6660unknown 
6661incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 
6662disabled 
6663instead of simply ignored. Rui Zhang.
6664
6665Fixed a problem with Index Fields where the Index register was 
6666incorrectly 
6667limited to a maximum of 32 bits. Now any size may be used.
6668
6669Fixed a couple memory leaks associated with "implicit return" objects 
6670when 
6671the AML Interpreter slack mode is enabled. Lin Ming BZ 349
6672
6673Example Code and Data Size: These are the sizes for the OS-independent 
6674acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6675debug version of the code includes the debug output trace mechanism and 
6676has 
6677a much larger code and data size.
6678
6679  Previous Release:
6680    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
6681    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6682  Current Release:
6683    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
6684    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6685
6686----------------------------------------
668714 November 2007. Summary of changes for version 20071114:
6688
66891) ACPI CA Core Subsystem:
6690
6691Implemented event counters for each of the Fixed Events, the ACPI SCI 
6692(interrupt) itself, and control methods executed. Named 
6693AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 
6694These 
6695should be useful for debugging and statistics.
6696
6697Implemented a new external interface, AcpiGetStatistics, to retrieve the 
6698contents of the various event counters. Returns the current values for 
6699AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 
6700AcpiMethodCount. The interface can be expanded in the future if new 
6701counters 
6702are added. Device drivers should use this interface rather than access 
6703the 
6704counters directly.
6705
6706Fixed a problem with the FromBCD and ToBCD operators. With some 
6707compilers, 
6708the ShortDivide function worked incorrectly, causing problems with the 
6709BCD 
6710functions with large input values. A truncation from 64-bit to 32-bit 
6711inadvertently occurred. Internal BZ 435. Lin Ming
6712
6713Fixed a problem with Index references passed as method arguments. 
6714References 
6715passed as arguments to control methods were dereferenced immediately 
6716(before 
6717control was passed to the called method). The references are now 
6718correctly 
6719passed directly to the called method. BZ 5389. Lin Ming
6720
6721Fixed a problem with CopyObject used in conjunction with the Index 
6722operator. 
6723The reference was incorrectly dereferenced before the copy. The reference 
6724is 
6725now correctly copied. BZ 5391. Lin Ming
6726
6727Fixed a problem with Control Method references within Package objects. 
6728These 
6729references are now correctly generated. This completes the package 
6730construction overhaul that began in version 20071019.
6731
6732Example Code and Data Size: These are the sizes for the OS-independent 
6733acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6734debug version of the code includes the debug output trace mechanism and 
6735has 
6736a much larger code and data size.
6737
6738  Previous Release:
6739    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6740    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6741  Current Release:
6742    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
6743    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6744
6745
67462) iASL Compiler/Disassembler and Tools:
6747
6748The AcpiExec utility now installs handlers for all of the predefined 
6749Operation Region types. New types supported are: PCI_Config, CMOS, and 
6750PCIBARTarget.
6751
6752Fixed a problem with the 64-bit version of AcpiExec where the extended 
6753(64-
6754bit) address fields for the DSDT and FACS within the FADT were not being 
6755used, causing truncation of the upper 32-bits of these addresses. Lin 
6756Ming 
6757and Bob Moore
6758
6759----------------------------------------
676019 October 2007. Summary of changes for version 20071019:
6761
67621) ACPI CA Core Subsystem:
6763
6764Fixed a problem with the Alias operator when the target of the alias is a 
6765named ASL operator that opens a new scope -- Scope, Device, 
6766PowerResource, 
6767Processor, and ThermalZone. In these cases, any children of the original 
6768operator could not be accessed via the alias, potentially causing 
6769unexpected 
6770AE_NOT_FOUND exceptions. (BZ 9067)
6771
6772Fixed a problem with the Package operator where all named references were 
6773created as object references and left otherwise unresolved. According to 
6774the 
6775ACPI specification, a Package can only contain Data Objects or references 
6776to 
6777control methods. The implication is that named references to Data Objects 
6778(Integer, Buffer, String, Package, BufferField, Field) should be resolved 
6779immediately upon package creation. This is the approach taken with this 
6780change. References to all other named objects (Methods, Devices, Scopes, 
6781etc.) are all now properly created as reference objects. (BZ 5328)
6782
6783Reverted a change to Notify handling that was introduced in version 
678420070508. This version changed the Notify handling from asynchronous to 
6785fully synchronous (Device driver Notify handling with respect to the 
6786Notify 
6787ASL operator). It was found that this change caused more problems than it 
6788solved and was removed by most users.
6789
6790Fixed a problem with the Increment and Decrement operators where the type 
6791of 
6792the target object could be unexpectedly and incorrectly changed. (BZ 353) 
6793Lin Ming.
6794
6795Fixed a problem with the Load and LoadTable operators where the table 
6796location within the namespace was ignored. Instead, the table was always 
6797loaded into the root or current scope. Lin Ming.
6798
6799Fixed a problem with the Load operator when loading a table from a buffer 
6800object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
6801
6802Fixed a problem with the Debug object where a store of a DdbHandle 
6803reference 
6804object to the Debug object could cause a fault.
6805
6806Added a table checksum verification for the Load operator, in the case 
6807where 
6808the load is from a buffer. (BZ 578).
6809
6810Implemented additional parameter validation for the LoadTable operator. 
6811The 
6812length of the input strings SignatureString, OemIdString, and OemTableId 
6813are 
6814now checked for maximum lengths. (BZ 582) Lin Ming.
6815
6816Example Code and Data Size: These are the sizes for the OS-independent 
6817acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6818debug version of the code includes the debug output trace mechanism and 
6819has 
6820a much larger code and data size.
6821
6822  Previous Release:
6823    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6824    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6825  Current Release:
6826    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6827    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6828
6829
68302) iASL Compiler/Disassembler:
6831
6832Fixed a problem where if a single file was specified and the file did not 
6833exist, no error message was emitted. (Introduced with wildcard support in 
6834version 20070917.)
6835
6836----------------------------------------
683719 September 2007. Summary of changes for version 20070919:
6838
68391) ACPI CA Core Subsystem:
6840
6841Designed and implemented new external interfaces to install and remove 
6842handlers for ACPI table-related events. Current events that are defined 
6843are 
6844LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 
6845they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 
6846AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
6847
6848Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 
6849(acpi_serialized option on Linux) could cause some systems to hang during 
6850initialization. (Bob Moore) BZ 8171
6851
6852Fixed a problem where objects of certain types (Device, ThermalZone, 
6853Processor, PowerResource) can be not found if they are declared and 
6854referenced from within the same control method (Lin Ming) BZ 341
6855
6856Example Code and Data Size: These are the sizes for the OS-independent 
6857acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6858debug version of the code includes the debug output trace mechanism and 
6859has 
6860a much larger code and data size.
6861
6862  Previous Release:
6863    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6864    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6865  Current Release:
6866    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6867    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6868
6869
68702) iASL Compiler/Disassembler:
6871
6872Implemented support to allow multiple files to be compiled/disassembled 
6873in 
6874a 
6875single invocation. This includes command line wildcard support for both 
6876the 
6877Windows and Unix versions of the compiler. This feature simplifies the 
6878disassembly and compilation of multiple ACPI tables in a single 
6879directory.
6880
6881----------------------------------------
688208 May 2007. Summary of changes for version 20070508:
6883
68841) ACPI CA Core Subsystem:
6885
6886Implemented a Microsoft compatibility design change for the handling of 
6887the 
6888Notify AML operator. Previously, notify handlers were dispatched and 
6889executed completely asynchronously in a deferred thread. The new design 
6890still executes the notify handlers in a different thread, but the 
6891original 
6892thread that executed the Notify() now waits at a synchronization point 
6893for 
6894the notify handler to complete. Some machines depend on a synchronous 
6895Notify 
6896operator in order to operate correctly.
6897
6898Implemented support to allow Package objects to be passed as method 
6899arguments to the external AcpiEvaluateObject interface. Previously, this 
6900would return the AE_NOT_IMPLEMENTED exception. This feature had not been 
6901implemented since there were no reserved control methods that required it 
6902until recently.
6903
6904Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 
6905that 
6906contained invalid non-zero values in reserved fields could cause later 
6907failures because these fields have meaning in later revisions of the 
6908FADT. 
6909For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 
6910fields 
6911are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
6912
6913Fixed a problem where the Global Lock handle was not properly updated if 
6914a 
6915thread that acquired the Global Lock via executing AML code then 
6916attempted 
6917to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 
6918Joe 
6919Liu.
6920
6921Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 
6922could be corrupted if the interrupt being removed was at the head of the 
6923list. Reported by Linn Crosetto.
6924
6925Example Code and Data Size: These are the sizes for the OS-independent 
6926acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6927debug version of the code includes the debug output trace mechanism and 
6928has 
6929a much larger code and data size.
6930
6931  Previous Release:
6932    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6933    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
6934  Current Release:
6935    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6936    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6937
6938----------------------------------------
693920 March 2007. Summary of changes for version 20070320:
6940
69411) ACPI CA Core Subsystem:
6942
6943Implemented a change to the order of interpretation and evaluation of AML 
6944operand objects within the AML interpreter. The interpreter now evaluates 
6945operands in the order that they appear in the AML stream (and the 
6946corresponding ASL code), instead of in the reverse order (after the 
6947entire 
6948operand list has been parsed). The previous behavior caused several 
6949subtle 
6950incompatibilities with the Microsoft AML interpreter as well as being 
6951somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
6952
6953Implemented a change to the ACPI Global Lock support. All interfaces to 
6954the 
6955global lock now allow the same thread to acquire the lock multiple times. 
6956This affects the AcpiAcquireGlobalLock external interface to the global 
6957lock 
6958as well as the internal use of the global lock to support AML fields -- a 
6959control method that is holding the global lock can now simultaneously 
6960access 
6961AML fields that require global lock protection. Previously, in both 
6962cases, 
6963this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 
6964to 
6965AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 
6966Controller. There is no change to the behavior of the AML Acquire 
6967operator, 
6968as this can already be used to acquire a mutex multiple times by the same 
6969thread. BZ 8066. With assistance from Alexey Starikovskiy.
6970
6971Fixed a problem where invalid objects could be referenced in the AML 
6972Interpreter after error conditions. During operand evaluation, ensure 
6973that 
6974the internal "Return Object" field is cleared on error and only valid 
6975pointers are stored there. Caused occasional access to deleted objects 
6976that 
6977resulted in "large reference count" warning messages. Valery Podrezov.
6978
6979Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 
6980on 
6981deeply nested control method invocations. BZ 7873, local BZ 487. Valery 
6982Podrezov.
6983
6984Fixed an internal problem with the handling of result objects on the 
6985interpreter result stack. BZ 7872. Valery Podrezov.
6986
6987Removed obsolete code that handled the case where AML_NAME_OP is the 
6988target 
6989of a reference (Reference.Opcode). This code was no longer necessary. BZ 
69907874. Valery Podrezov.
6991
6992Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 
6993was 
6994a 
6995remnant from the previously discontinued 16-bit support.
6996
6997Example Code and Data Size: These are the sizes for the OS-independent 
6998acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
6999debug version of the code includes the debug output trace mechanism and 
7000has 
7001a much larger code and data size.
7002
7003  Previous Release:
7004    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7005    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7006  Current Release:
7007    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7008    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
7009
7010----------------------------------------
701126 January 2007. Summary of changes for version 20070126:
7012
70131) ACPI CA Core Subsystem:
7014
7015Added the 2007 copyright to all module headers and signons. This affects 
7016virtually every file in the ACPICA core subsystem, the iASL compiler, and 
7017the utilities.
7018
7019Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 
7020during a table load. A bad pointer was passed in the case where the DSDT 
7021is 
7022overridden, causing a fault in this case.
7023
7024Example Code and Data Size: These are the sizes for the OS-independent 
7025acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7026debug version of the code includes the debug output trace mechanism and 
7027has 
7028a much larger code and data size.
7029
7030  Previous Release:
7031    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7032    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7033  Current Release:
7034    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7035    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7036
7037----------------------------------------
703815 December 2006. Summary of changes for version 20061215:
7039
70401) ACPI CA Core Subsystem:
7041
7042Support for 16-bit ACPICA has been completely removed since it is no 
7043longer 
7044necessary and it clutters the code. All 16-bit macros, types, and 
7045conditional compiles have been removed, cleaning up and simplifying the 
7046code 
7047across the entire subsystem. DOS support is no longer needed since the 
7048bootable Linux firmware kit is now available.
7049
7050The handler for the Global Lock is now removed during AcpiTerminate to 
7051enable a clean subsystem restart, via the implementation of the 
7052AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 
7053HP)
7054
7055Implemented enhancements to the multithreading support within the 
7056debugger 
7057to enable improved multithreading debugging and evaluation of the 
7058subsystem. 
7059(Valery Podrezov)
7060
7061Debugger: Enhanced the Statistics/Memory command to emit the total 
7062(maximum) 
7063memory used during the execution, as well as the maximum memory consumed 
7064by 
7065each of the various object types. (Valery Podrezov)
7066
7067Example Code and Data Size: These are the sizes for the OS-independent 
7068acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7069debug version of the code includes the debug output trace mechanism and 
7070has 
7071a much larger code and data size.
7072
7073  Previous Release:
7074    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7075    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7076  Current Release:
7077    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7078    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7079
7080
70812) iASL Compiler/Disassembler and Tools:
7082
7083AcpiExec: Implemented a new option (-m) to display full memory use 
7084statistics upon subsystem/program termination. (Valery Podrezov)
7085
7086----------------------------------------
708709 November 2006. Summary of changes for version 20061109:
7088
70891) ACPI CA Core Subsystem:
7090
7091Optimized the Load ASL operator in the case where the source operand is 
7092an 
7093operation region. Simply map the operation region memory, instead of 
7094performing a bytewise read. (Region must be of type SystemMemory, see 
7095below.)
7096
7097Fixed the Load ASL operator for the case where the source operand is a 
7098region field. A buffer object is also allowed as the source operand. BZ 
7099480
7100
7101Fixed a problem where the Load ASL operator allowed the source operand to 
7102be 
7103an operation region of any type. It is now restricted to regions of type 
7104SystemMemory, as per the ACPI specification. BZ 481
7105
7106Additional cleanup and optimizations for the new Table Manager code.
7107
7108AcpiEnable will now fail if all of the required ACPI tables are not 
7109loaded 
7110(FADT, FACS, DSDT). BZ 477
7111
7112Added #pragma pack(8/4) to acobject.h to ensure that the structures in 
7113this 
7114header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 
7115manually optimized to be aligned and will not work if it is byte-packed. 
7116
7117Example Code and Data Size: These are the sizes for the OS-independent 
7118acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7119debug version of the code includes the debug output trace mechanism and 
7120has 
7121a much larger code and data size.
7122
7123  Previous Release:
7124    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
7125    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
7126  Current Release:
7127    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7128    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7129
7130
71312) iASL Compiler/Disassembler and Tools:
7132
7133Fixed a problem where the presence of the _OSI predefined control method 
7134within complex expressions could cause an internal compiler error.
7135
7136AcpiExec: Implemented full region support for multiple address spaces. 
7137SpaceId is now part of the REGION object. BZ 429
7138
7139----------------------------------------
714011 October 2006. Summary of changes for version 20061011:
7141
71421) ACPI CA Core Subsystem:
7143
7144Completed an AML interpreter performance enhancement for control method 
7145execution. Previously a 2-pass parse/execution, control methods are now 
7146completely parsed and executed in a single pass. This improves overall 
7147interpreter performance by ~25%, reduces code size, and reduces CPU stack 
7148use. (Valery Podrezov + interpreter changes in version 20051202 that 
7149eliminated namespace loading during the pass one parse.)
7150
7151Implemented _CID support for PCI Root Bridge detection. If the _HID does 
7152not 
7153match the predefined PCI Root Bridge IDs, the _CID list (if present) is 
7154now 
7155obtained and also checked for an ID match.
7156
7157Implemented additional support for the PCI _ADR execution: upsearch until 
7158a 
7159device scope is found before executing _ADR. This allows PCI_Config 
7160operation regions to be declared locally within control methods 
7161underneath 
7162PCI device objects.
7163
7164Fixed a problem with a possible race condition between threads executing 
7165AcpiWalkNamespace and the AML interpreter. This condition was removed by 
7166modifying AcpiWalkNamespace to (by default) ignore all temporary 
7167namespace 
7168entries created during any concurrent control method execution. An 
7169additional namespace race condition is known to exist between 
7170AcpiWalkNamespace and the Load/Unload ASL operators and is still under 
7171investigation.
7172
7173Restructured the AML ParseLoop function, breaking it into several 
7174subfunctions in order to reduce CPU stack use and improve 
7175maintainability. 
7176(Mikhail Kouzmich)
7177
7178AcpiGetHandle: Fix for parameter validation to detect invalid 
7179combinations 
7180of prefix handle and pathname. BZ 478
7181
7182Example Code and Data Size: These are the sizes for the OS-independent 
7183acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7184debug version of the code includes the debug output trace mechanism and 
7185has 
7186a much larger code and data size.
7187
7188  Previous Release:
7189    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7190    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
7191  Current Release:
7192    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
7193    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
7194
71952) iASL Compiler/Disassembler and Tools:
7196
7197Ported the -g option (get local ACPI tables) to the new ACPICA Table 
7198Manager 
7199to restore original behavior.
7200
7201----------------------------------------
720227 September 2006. Summary of changes for version 20060927:
7203
72041) ACPI CA Core Subsystem:
7205
7206Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 
7207These functions now use a spinlock for mutual exclusion and the interrupt 
7208level indication flag is not needed.
7209
7210Fixed a problem with the Global Lock where the lock could appear to be 
7211obtained before it is actually obtained. The global lock semaphore was 
7212inadvertently created with one unit instead of zero units. (BZ 464) 
7213Fiodor 
7214Suietov.
7215
7216Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 
7217during 
7218a read from a buffer or region field. (BZ 458) Fiodor Suietov.
7219
7220Example Code and Data Size: These are the sizes for the OS-independent 
7221acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7222debug version of the code includes the debug output trace mechanism and 
7223has 
7224a much larger code and data size.
7225
7226  Previous Release:
7227    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7228    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7229  Current Release:
7230    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7231    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
7232
7233
72342) iASL Compiler/Disassembler and Tools:
7235
7236Fixed a compilation problem with the pre-defined Resource Descriptor 
7237field 
7238names where an "object does not exist" error could be incorrectly 
7239generated 
7240if the parent ResourceTemplate pathname places the template within a 
7241different namespace scope than the current scope. (BZ 7212)
7242
7243Fixed a problem where the compiler could hang after syntax errors 
7244detected 
7245in an ElseIf construct. (BZ 453)
7246
7247Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 
7248operator. An incorrect output filename was produced when this parameter 
7249was 
7250a null string (""). Now, the original input filename is used as the AML 
7251output filename, with an ".aml" extension.
7252
7253Implemented a generic batch command mode for the AcpiExec utility 
7254(execute 
7255any AML debugger command) (Valery Podrezov).
7256
7257----------------------------------------
725812 September 2006. Summary of changes for version 20060912:
7259
72601) ACPI CA Core Subsystem:
7261
7262Enhanced the implementation of the "serialized mode" of the interpreter 
7263(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 
7264specified, instead of creating a serialization semaphore per control 
7265method, 
7266the interpreter lock is simply no longer released before a blocking 
7267operation during control method execution. This effectively makes the AML 
7268Interpreter single-threaded. The overhead of a semaphore per-method is 
7269eliminated.
7270
7271Fixed a regression where an error was no longer emitted if a control 
7272method 
7273attempts to create 2 objects of the same name. This once again returns 
7274AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 
7275that 
7276will dynamically serialize the control method to possible prevent future 
7277errors. (BZ 440)
7278
7279Integrated a fix for a problem with PCI Express HID detection in the PCI 
7280Config Space setup procedure. (BZ 7145)
7281
7282Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 
7283AcpiHwInitialize function - the FADT registers are now validated when the 
7284table is loaded.
7285
7286Added two new warnings during FADT verification - 1) if the FADT is 
7287larger 
7288than the largest known FADT version, and 2) if there is a mismatch 
7289between 
7290a 
729132-bit block address and the 64-bit X counterpart (when both are non-
7292zero.)
7293
7294Example Code and Data Size: These are the sizes for the OS-independent 
7295acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7296debug version of the code includes the debug output trace mechanism and 
7297has 
7298a much larger code and data size.
7299
7300  Previous Release:
7301    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7302    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7303  Current Release:
7304    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7305    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7306
7307
73082) iASL Compiler/Disassembler and Tools:
7309
7310Fixed a problem with the implementation of the Switch() operator where 
7311the 
7312temporary variable was declared too close to the actual Switch, instead 
7313of 
7314at method level. This could cause a problem if the Switch() operator is 
7315within a while loop, causing an error on the second iteration. (BZ 460)
7316
7317Disassembler - fix for error emitted for unknown type for target of scope 
7318operator. Now, ignore it and continue.
7319
7320Disassembly of an FADT now verifies the input FADT and reports any errors 
7321found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
7322
7323Disassembly of raw data buffers with byte initialization data now 
7324prefixes 
7325each output line with the current buffer offset.
7326
7327Disassembly of ASF! table now includes all variable-length data fields at 
7328the end of some of the subtables.
7329
7330The disassembler now emits a comment if a buffer appears to be a 
7331ResourceTemplate, but cannot be disassembled as such because the EndTag 
7332does 
7333not appear at the very end of the buffer.
7334
7335AcpiExec - Added the "-t" command line option to enable the serialized 
7336mode 
7337of the AML interpreter.
7338
7339----------------------------------------
734031 August 2006. Summary of changes for version 20060831:
7341
73421) ACPI CA Core Subsystem:
7343
7344Miscellaneous fixes for the Table Manager:
7345- Correctly initialize internal common FADT for all 64-bit "X" fields
7346- Fixed a couple table mapping issues during table load
7347- Fixed a couple alignment issues for IA64
7348- Initialize input array to zero in AcpiInitializeTables
7349- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 
7350AcpiGetTableByIndex
7351
7352Change for GPE support: when a "wake" GPE is received, all wake GPEs are 
7353now 
7354immediately disabled to prevent the waking GPE from firing again and to 
7355prevent other wake GPEs from interrupting the wake process.
7356
7357Added the AcpiGpeCount global that tracks the number of processed GPEs, 
7358to 
7359be used for debugging systems with a large number of ACPI interrupts.
7360
7361Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 
7362both the ACPICA headers and the disassembler.
7363
7364Example Code and Data Size: These are the sizes for the OS-independent 
7365acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7366debug version of the code includes the debug output trace mechanism and 
7367has 
7368a much larger code and data size.
7369
7370  Previous Release:
7371    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7372    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7373  Current Release:
7374    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7375    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7376
7377
73782) iASL Compiler/Disassembler and Tools:
7379
7380Disassembler support for the DMAR ACPI table.
7381
7382----------------------------------------
738323 August 2006. Summary of changes for version 20060823:
7384
73851) ACPI CA Core Subsystem:
7386
7387The Table Manager component has been completely redesigned and 
7388reimplemented. The new design is much simpler, and reduces the overall 
7389code 
7390and data size of the kernel-resident ACPICA by approximately 5%. Also, it 
7391is 
7392now possible to obtain the ACPI tables very early during kernel 
7393initialization, even before dynamic memory management is initialized. 
7394(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
7395
7396Obsolete ACPICA interfaces:
7397
7398- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 
7399init 
7400time).
7401- AcpiLoadTable: Not needed.
7402- AcpiUnloadTable: Not needed.
7403
7404New ACPICA interfaces:
7405
7406- AcpiInitializeTables: Must be called before the table manager can be 
7407used.
7408- AcpiReallocateRootTable: Used to transfer the root table to dynamically 
7409allocated memory after it becomes available.
7410- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 
7411tables 
7412in the RSDT/XSDT.
7413
7414Other ACPICA changes:
7415
7416- AcpiGetTableHeader returns the actual mapped table header, not a copy. 
7417Use 
7418AcpiOsUnmapMemory to free this mapping.
7419- AcpiGetTable returns the actual mapped table. The mapping is managed 
7420internally and must not be deleted by the caller. Use of this interface 
7421causes no additional dynamic memory allocation.
7422- AcpiFindRootPointer: Support for physical addressing has been 
7423eliminated, 
7424it appeared to be unused.
7425- The interface to AcpiOsMapMemory has changed to be consistent with the 
7426other allocation interfaces.
7427- The interface to AcpiOsGetRootPointer has changed to eliminate 
7428unnecessary 
7429parameters.
7430- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 
743164-
7432bit platforms. Was previously 64 bits on all platforms.
7433- The interface to the ACPI Global Lock acquire/release macros have 
7434changed 
7435slightly since ACPICA no longer keeps a local copy of the FACS with a 
7436constructed pointer to the actual global lock.
7437
7438Porting to the new table manager:
7439
7440- AcpiInitializeTables: Must be called once, and can be called anytime 
7441during the OS initialization process. It allows the host to specify an 
7442area 
7443of memory to be used to store the internal version of the RSDT/XSDT (root 
7444table). This allows the host to access ACPI tables before memory 
7445management 
7446is initialized and running.
7447- AcpiReallocateRootTable: Can be called after memory management is 
7448running 
7449to copy the root table to a dynamically allocated array, freeing up the 
7450scratch memory specified in the call to AcpiInitializeTables.
7451- AcpiSubsystemInitialize: This existing interface is independent of the 
7452Table Manager, and does not have to be called before the Table Manager 
7453can 
7454be used, it only must be called before the rest of ACPICA can be used.
7455- ACPI Tables: Some changes have been made to the names and structure of 
7456the 
7457actbl.h and actbl1.h header files and may require changes to existing 
7458code. 
7459For example, bitfields have been completely removed because of their lack 
7460of 
7461portability across C compilers.
7462- Update interfaces to the Global Lock acquire/release macros if local 
7463versions are used. (see acwin.h)
7464
7465Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
7466
7467New files: tbfind.c
7468
7469Example Code and Data Size: These are the sizes for the OS-independent 
7470acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7471debug version of the code includes the debug output trace mechanism and 
7472has 
7473a much larger code and data size.
7474
7475  Previous Release:
7476    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7477    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7478  Current Release:
7479    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7480    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7481
7482
74832) iASL Compiler/Disassembler and Tools:
7484
7485No changes for this release.
7486
7487----------------------------------------
748821 July 2006. Summary of changes for version 20060721:
7489
74901) ACPI CA Core Subsystem:
7491
7492The full source code for the ASL test suite used to validate the iASL 
7493compiler and the ACPICA core subsystem is being released with the ACPICA 
7494source for the first time. The source is contained in a separate package 
7495and 
7496consists of over 1100 files that exercise all ASL/AML operators. The 
7497package 
7498should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 
7499Fiodor 
7500Suietov)
7501
7502Completed a new design and implementation for support of the ACPI Global 
7503Lock. On the OS side, the global lock is now treated as a standard AML 
7504mutex. Previously, multiple OS threads could "acquire" the global lock 
7505simultaneously. However, this could cause the BIOS to be starved out of 
7506the 
7507lock - especially in cases such as the Embedded Controller driver where 
7508there is a tight coupling between the OS and the BIOS.
7509
7510Implemented an optimization for the ACPI Global Lock interrupt mechanism. 
7511The Global Lock interrupt handler no longer queues the execution of a 
7512separate thread to signal the global lock semaphore. Instead, the 
7513semaphore 
7514is signaled directly from the interrupt handler.
7515
7516Implemented support within the AML interpreter for package objects that 
7517contain a larger AML length (package list length) than the package 
7518element 
7519count. In this case, the length of the package is truncated to match the 
7520package element count. Some BIOS code apparently modifies the package 
7521length 
7522on the fly, and this change supports this behavior. Provides 
7523compatibility 
7524with the MS AML interpreter. (With assistance from Fiodor Suietov)
7525
7526Implemented a temporary fix for the BankValue parameter of a Bank Field 
7527to 
7528support all constant values, now including the Zero and One opcodes. 
7529Evaluation of this parameter must eventually be converted to a full 
7530TermArg 
7531evaluation. A not-implemented error is now returned (temporarily) for 
7532non-
7533constant values for this parameter.
7534
7535Fixed problem reports (Fiodor Suietov) integrated:
7536- Fix for premature object deletion after CopyObject on Operation Region 
7537(BZ 
7538350)
7539
7540Example Code and Data Size: These are the sizes for the OS-independent 
7541acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7542debug version of the code includes the debug output trace mechanism and 
7543has 
7544a much larger code and data size.
7545
7546  Previous Release:
7547    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
7548    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
7549  Current Release:
7550    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7551    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7552
7553
75542) iASL Compiler/Disassembler and Tools:
7555
7556No changes for this release.
7557
7558----------------------------------------
755907 July 2006. Summary of changes for version 20060707:
7560
75611) ACPI CA Core Subsystem:
7562
7563Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 
7564that do not allow the initialization of address pointers within packed 
7565structures - even though the hardware itself may support misaligned 
7566transfers. Some of the debug data structures are packed by default to 
7567minimize size.
7568
7569Added an error message for the case where AcpiOsGetThreadId() returns 
7570zero. 
7571A non-zero value is required by the core ACPICA code to ensure the proper 
7572operation of AML mutexes and recursive control methods.
7573
7574The DSDT is now the only ACPI table that determines whether the AML 
7575interpreter is in 32-bit or 64-bit mode. Not really a functional change, 
7576but 
7577the hooks for per-table 32/64 switching have been removed from the code. 
7578A 
7579clarification to the ACPI specification is forthcoming in ACPI 3.0B.
7580
7581Fixed a possible leak of an OwnerID in the error path of 
7582AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 
7583deletion to a single place in AcpiTbUninstallTable to correct possible 
7584leaks 
7585when using the AcpiTbDeleteTablesByType interface (with assistance from 
7586Lance Ortiz.)
7587
7588Fixed a problem with Serialized control methods where the semaphore 
7589associated with the method could be over-signaled after multiple method 
7590invocations.
7591
7592Fixed two issues with the locking of the internal namespace data 
7593structure. 
7594Both the Unload() operator and AcpiUnloadTable interface now lock the 
7595namespace during the namespace deletion associated with the table unload 
7596(with assistance from Linn Crosetto.)
7597
7598Fixed problem reports (Valery Podrezov) integrated:
7599- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
7600
7601Fixed problem reports (Fiodor Suietov) integrated:
7602- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
7603- On Address Space handler deletion, needless deactivation call (BZ 374)
7604- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 
7605375)
7606- Possible memory leak, Notify sub-objects of Processor, Power, 
7607ThermalZone 
7608(BZ 376)
7609- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
7610- Minimum Length of RSDT should be validated (BZ 379)
7611- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 
7612Handler (BZ (380)
7613- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 
7614loaded 
7615(BZ 381)
7616
7617Example Code and Data Size: These are the sizes for the OS-independent 
7618acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7619debug version of the code includes the debug output trace mechanism and 
7620has 
7621a much larger code and data size.
7622
7623  Previous Release:
7624    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7625    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7626  Current Release:
7627    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7628    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7629
7630
76312) iASL Compiler/Disassembler and Tools:
7632
7633Fixed problem reports:
7634Compiler segfault when ASL contains a long (>1024) String declaration (BZ 
7635436)
7636
7637----------------------------------------
763823 June 2006. Summary of changes for version 20060623:
7639
76401) ACPI CA Core Subsystem:
7641
7642Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 
7643allows the type to be customized to the host OS for improved efficiency 
7644(since a spinlock is usually a very small object.)
7645
7646Implemented support for "ignored" bits in the ACPI registers. According 
7647to 
7648the ACPI specification, these bits should be preserved when writing the 
7649registers via a read/modify/write cycle. There are 3 bits preserved in 
7650this 
7651manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
7652
7653Implemented the initial deployment of new OSL mutex interfaces. Since 
7654some 
7655host operating systems have separate mutex and semaphore objects, this 
7656feature was requested. The base code now uses mutexes (and the new mutex 
7657interfaces) wherever a binary semaphore was used previously. However, for 
7658the current release, the mutex interfaces are defined as macros to map 
7659them 
7660to the existing semaphore interfaces. Therefore, no OSL changes are 
7661required 
7662at this time. (See acpiosxf.h)
7663
7664Fixed several problems with the support for the control method SyncLevel 
7665parameter. The SyncLevel now works according to the ACPI specification 
7666and 
7667in concert with the Mutex SyncLevel parameter, since the current 
7668SyncLevel 
7669is a property of the executing thread. Mutual exclusion for control 
7670methods 
7671is now implemented with a mutex instead of a semaphore.
7672
7673Fixed three instances of the use of the C shift operator in the bitfield 
7674support code (exfldio.c) to avoid the use of a shift value larger than 
7675the 
7676target data width. The behavior of C compilers is undefined in this case 
7677and 
7678can cause unpredictable results, and therefore the case must be detected 
7679and 
7680avoided. (Fiodor Suietov)
7681
7682Added an info message whenever an SSDT or OEM table is loaded dynamically 
7683via the Load() or LoadTable() ASL operators. This should improve 
7684debugging 
7685capability since it will show exactly what tables have been loaded 
7686(beyond 
7687the tables present in the RSDT/XSDT.)
7688
7689Example Code and Data Size: These are the sizes for the OS-independent 
7690acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7691debug version of the code includes the debug output trace mechanism and 
7692has 
7693a much larger code and data size.
7694
7695  Previous Release:
7696    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7697    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7698  Current Release:
7699    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7700    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7701
7702
77032) iASL Compiler/Disassembler and Tools:
7704
7705No changes for this release.
7706
7707----------------------------------------
770808 June 2006. Summary of changes for version 20060608:
7709
77101) ACPI CA Core Subsystem:
7711
7712Converted the locking mutex used for the ACPI hardware to a spinlock. 
7713This 
7714change should eliminate all problems caused by attempting to acquire a 
7715semaphore at interrupt level, and it means that all ACPICA external 
7716interfaces that directly access the ACPI hardware can be safely called 
7717from 
7718interrupt level. OSL code that implements the semaphore interfaces should 
7719be 
7720able to eliminate any workarounds for being called at interrupt level.
7721
7722Fixed a regression introduced in 20060526 where the ACPI device 
7723initialization could be prematurely aborted with an AE_NOT_FOUND if a 
7724device 
7725did not have an optional _INI method.
7726
7727Fixed an IndexField issue where a write to the Data Register should be 
7728limited in size to the AccessSize (width) of the IndexField itself. (BZ 
7729433, 
7730Fiodor Suietov)
7731
7732Fixed problem reports (Valery Podrezov) integrated:
7733- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
7734
7735Fixed problem reports (Fiodor Suietov) integrated:
7736- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
7737
7738Removed four global mutexes that were obsolete and were no longer being 
7739used.
7740
7741Example Code and Data Size: These are the sizes for the OS-independent 
7742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7743debug version of the code includes the debug output trace mechanism and 
7744has 
7745a much larger code and data size.
7746
7747  Previous Release:
7748    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7749    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7750  Current Release:
7751    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7752    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7753
7754
77552) iASL Compiler/Disassembler and Tools:
7756
7757Fixed a fault when using -g option (get tables from registry) on Windows 
7758machines.
7759
7760Fixed problem reports integrated:
7761- Generate error if CreateField NumBits parameter is zero. (BZ 405)
7762- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 
7763Suietov)
7764- Global table revision override (-r) is ignored (BZ 413)
7765
7766----------------------------------------
776726 May 2006. Summary of changes for version 20060526:
7768
77691) ACPI CA Core Subsystem:
7770
7771Restructured, flattened, and simplified the internal interfaces for 
7772namespace object evaluation - resulting in smaller code, less CPU stack 
7773use, 
7774and fewer interfaces. (With assistance from Mikhail Kouzmich)
7775
7776Fixed a problem with the CopyObject operator where the first parameter 
7777was 
7778not typed correctly for the parser, interpreter, compiler, and 
7779disassembler. 
7780Caused various errors and unexpected behavior.
7781
7782Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 
7783produced incorrect results with some C compilers. Since the behavior of C 
7784compilers when the shift value is larger than the datatype width is 
7785apparently not well defined, the interpreter now detects this condition 
7786and 
7787simply returns zero as expected in all such cases. (BZ 395)
7788
7789Fixed problem reports (Valery Podrezov) integrated:
7790- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
7791- Allow interpreter to handle nested method declarations (BZ 5361)
7792
7793Fixed problem reports (Fiodor Suietov) integrated:
7794- AcpiTerminate doesn't free debug memory allocation list objects (BZ 
7795355)
7796- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 
7797356)
7798- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
7799- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
7800- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
7801- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
7802- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
7803- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
7804- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 
7805365)
7806- Status of the Global Initialization Handler call not used (BZ 366)
7807- Incorrect object parameter to Global Initialization Handler (BZ 367)
7808
7809Example Code and Data Size: These are the sizes for the OS-independent 
7810acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7811debug version of the code includes the debug output trace mechanism and 
7812has 
7813a much larger code and data size.
7814
7815  Previous Release:
7816    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7817    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7818  Current Release:
7819    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7820    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7821
7822
78232) iASL Compiler/Disassembler and Tools:
7824
7825Modified the parser to allow the names IO, DMA, and IRQ to be used as 
7826namespace identifiers with no collision with existing resource descriptor 
7827macro names. This provides compatibility with other ASL compilers and is 
7828most useful for disassembly/recompilation of existing tables without 
7829parse 
7830errors. (With assistance from Thomas Renninger)
7831
7832Disassembler: fixed an incorrect disassembly problem with the 
7833DataTableRegion and CopyObject operators. Fixed a possible fault during 
7834disassembly of some Alias operators.
7835
7836----------------------------------------
783712 May 2006. Summary of changes for version 20060512:
7838
78391) ACPI CA Core Subsystem:
7840
7841Replaced the AcpiOsQueueForExecution interface with a new interface named 
7842AcpiOsExecute. The major difference is that the new interface does not 
7843have 
7844a Priority parameter, this appeared to be useless and has been replaced 
7845by 
7846a 
7847Type parameter. The Type tells the host what type of execution is being 
7848requested, such as global lock handler, notify handler, GPE handler, etc. 
7849This allows the host to queue and execute the request as appropriate for 
7850the 
7851request type, possibly using different work queues and different 
7852priorities 
7853for the various request types. This enables fixes for multithreading 
7854deadlock problems such as BZ #5534, and will require changes to all 
7855existing 
7856OS interface layers. (Alexey Starikovskiy and Bob Moore)
7857
7858Fixed a possible memory leak associated with the support for the so-
7859called 
7860"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 
7861Suietov)
7862
7863Fixed a problem with the Load() operator where a table load from an 
7864operation region could overwrite an internal table buffer by up to 7 
7865bytes 
7866and cause alignment faults on IPF systems. (With assistance from Luming 
7867Yu)
7868
7869Example Code and Data Size: These are the sizes for the OS-independent 
7870acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7871debug version of the code includes the debug output trace mechanism and 
7872has 
7873a much larger code and data size.
7874
7875  Previous Release:
7876    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7877    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7878  Current Release:
7879    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7880    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7881
7882
7883
78842) iASL Compiler/Disassembler and Tools:
7885
7886Disassembler: Implemented support to cross reference the internal 
7887namespace 
7888and automatically generate ASL External() statements for symbols not 
7889defined 
7890within the current table being disassembled. This will simplify the 
7891disassembly and recompilation of interdependent tables such as SSDTs 
7892since 
7893these statements will no longer have to be added manually.
7894
7895Disassembler: Implemented experimental support to automatically detect 
7896invocations of external control methods and generate appropriate 
7897External() 
7898statements. This is problematic because the AML cannot be correctly 
7899parsed 
7900until the number of arguments for each control method is known. 
7901Currently, 
7902standalone method invocations and invocations as the source operand of a 
7903Store() statement are supported.
7904
7905Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 
7906LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 
7907LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 
7908more readable and likely closer to the original ASL source.
7909
7910----------------------------------------
791121 April 2006. Summary of changes for version 20060421:
7912
79131) ACPI CA Core Subsystem:
7914
7915Removed a device initialization optimization introduced in 20051216 where 
7916the _STA method was not run unless an _INI was also present for the same 
7917device. This optimization could cause problems because it could allow 
7918_INI 
7919methods to be run within a not-present device subtree. (If a not-present 
7920device had no _INI, _STA would not be run, the not-present status would 
7921not 
7922be discovered, and the children of the device would be incorrectly 
7923traversed.)
7924
7925Implemented a new _STA optimization where namespace subtrees that do not 
7926contain _INI are identified and ignored during device initialization. 
7927Selectively running _STA can significantly improve boot time on large 
7928machines (with assistance from Len Brown.)
7929
7930Implemented support for the device initialization case where the returned 
7931_STA flags indicate a device not-present but functioning. In this case, 
7932_INI 
7933is not run, but the device children are examined for presence, as per the 
7934ACPI specification.
7935
7936Implemented an additional change to the IndexField support in order to 
7937conform to MS behavior. The value written to the Index Register is not 
7938simply a byte offset, it is a byte offset in units of the access width of 
7939the parent Index Field. (Fiodor Suietov)
7940
7941Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 
7942interface is called during the creation of all AML operation regions, and 
7943allows the host OS to exert control over what addresses it will allow the 
7944AML code to access. Operation Regions whose addresses are disallowed will 
7945cause a runtime exception when they are actually accessed (will not 
7946affect 
7947or abort table loading.) See oswinxf or osunixxf for an example 
7948implementation.
7949
7950Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 
7951interface allows the host OS to match the various "optional" 
7952interface/behavior strings for the _OSI predefined control method as 
7953appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 
7954for an example implementation.
7955
7956Restructured and corrected various problems in the exception handling 
7957code 
7958paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 
7959(with assistance from Takayoshi Kochi.)
7960
7961Modified the Linux source converter to ignore quoted string literals 
7962while 
7963converting identifiers from mixed to lower case. This will correct 
7964problems 
7965with the disassembler and other areas where such strings must not be 
7966modified.
7967
7968The ACPI_FUNCTION_* macros no longer require quotes around the function 
7969name. This allows the Linux source converter to convert the names, now 
7970that 
7971the converter ignores quoted strings.
7972
7973Example Code and Data Size: These are the sizes for the OS-independent 
7974acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
7975debug version of the code includes the debug output trace mechanism and 
7976has 
7977a much larger code and data size.
7978
7979  Previous Release:
7980
7981    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
7982    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
7983  Current Release:
7984    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7985    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7986
7987
79882) iASL Compiler/Disassembler and Tools:
7989
7990Implemented 3 new warnings for iASL, and implemented multiple warning 
7991levels 
7992(w2 flag).
7993
79941) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 
7995not 
7996WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 
7997check for the possible timeout, a warning is issued.
7998
79992) Useless operators: If an ASL operator does not specify an optional 
8000target 
8001operand and it also does not use the function return value from the 
8002operator, a warning is issued since the operator effectively does 
8003nothing.
8004
80053) Unreferenced objects: If a namespace object is created, but never 
8006referenced, a warning is issued. This is a warning level 2 since there 
8007are 
8008cases where this is ok, such as when a secondary table is loaded that 
8009uses 
8010the unreferenced objects. Even so, care is taken to only flag objects 
8011that 
8012don't look like they will ever be used. For example, the reserved methods 
8013(starting with an underscore) are usually not referenced because it is 
8014expected that the OS will invoke them.
8015
8016----------------------------------------
801731 March 2006. Summary of changes for version 20060331:
8018
80191) ACPI CA Core Subsystem:
8020
8021Implemented header file support for the following additional ACPI tables: 
8022ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 
8023support, 
8024all current and known ACPI tables are now defined in the ACPICA headers 
8025and 
8026are available for use by device drivers and other software.
8027
8028Implemented support to allow tables that contain ACPI names with invalid 
8029characters to be loaded. Previously, this would cause the table load to 
8030fail, but since there are several known cases of such tables on existing 
8031machines, this change was made to enable ACPI support for them. Also, 
8032this 
8033matches the behavior of the Microsoft ACPI implementation.
8034
8035Fixed a couple regressions introduced during the memory optimization in 
8036the 
803720060317 release. The namespace node definition required additional 
8038reorganization and an internal datatype that had been changed to 8-bit 
8039was 
8040restored to 32-bit. (Valery Podrezov)
8041
8042Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 
8043could be passed through to AcpiOsReleaseObject which is unexpected. Such 
8044null pointers are now trapped and ignored, matching the behavior of the 
8045previous implementation before the deployment of AcpiOsReleaseObject.
8046(Valery Podrezov, Fiodor Suietov)
8047
8048Fixed a memory mapping leak during the deletion of a SystemMemory 
8049operation 
8050region where a cached memory mapping was not deleted. This became a 
8051noticeable problem for operation regions that are defined within 
8052frequently 
8053used control methods. (Dana Meyers)
8054
8055Reorganized the ACPI table header files into two main files: one for the 
8056ACPI tables consumed by the ACPICA core, and another for the 
8057miscellaneous 
8058ACPI tables that are consumed by the drivers and other software. The 
8059various 
8060FADT definitions were merged into one common section and three different 
8061tables (ACPI 1.0, 1.0+, and 2.0)
8062
8063Example Code and Data Size: These are the sizes for the OS-independent 
8064acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 
8065debug version of the code includes the debug output trace mechanism and 
8066has 
8067a much larger code and data size.
8068
8069  Previous Release:
8070    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
8071    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
8072  Current Release:
8073    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
8074    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
8075
8076
80772) iASL Compiler/Disassembler and Tools:
8078
8079Disassembler: Implemented support to decode and format all non-AML ACPI 
8080tables (tables other than DSDTs and SSDTs.) This includes the new tables 
8081added to the ACPICA headers, therefore all current and known ACPI tables 
8082are 
8083supported.
8084
8085Disassembler: The change to allow ACPI names with invalid characters also 
8086enables the disassembly of such tables. Invalid characters within names 
8087are 
8088changed to '*' to make the name printable; the iASL compiler will still 
8089generate an error for such names, however, since this is an invalid ACPI 
8090character.
8091
8092Implemented an option for AcpiXtract (-a) to extract all tables found in 
8093the 
8094input file. The default invocation extracts only the DSDTs and SSDTs.
8095
8096Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 
8097makefile for the AcpiXtract utility.
8098
8099----------------------------------------
810017 March 2006. Summary of changes for version 20060317:
8101
81021) ACPI CA Core Subsystem:
8103
8104Implemented the use of a cache object for all internal namespace nodes. 
8105Since there are about 1000 static nodes in a typical system, this will 
8106decrease memory use for cache implementations that minimize per-
8107allocation 
8108overhead (such as a slab allocator.)
8109
8110Removed the reference count mechanism for internal namespace nodes, since 
8111it 
8112was deemed unnecessary. This reduces the size of each namespace node by 
8113about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 
8114case, 
8115and 32 bytes for the 64-bit case.
8116
8117Optimized several internal data structures to reduce object size on 64-
8118bit 
8119platforms by packing data within the 64-bit alignment. This includes the 
8120frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 
8121instances corresponding to the namespace objects.
8122
8123Added two new strings for the predefined _OSI method: "Windows 2001.1 
8124SP1" 
8125and "Windows 2006".
8126
8127Split the allocation tracking mechanism out to a separate file, from 
8128utalloc.c to uttrack.c. This mechanism appears to be only useful for 
8129application-level code. Kernels may wish to not include uttrack.c in 
8130distributions.
8131
8132Removed all remnants of the obsolete ACPI_REPORT_* macros and the 
8133associated 
8134code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 
8135macros.)
8136
8137Code and Data Size: These are the sizes for the acpica.lib produced by 
8138the 
8139Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 
8140ACPI 
8141driver or OSPM code. The debug version of the code includes the debug 
8142output 
8143trace mechanism and has a much larger code and data size. Note that these 
8144values will vary depending on the efficiency of the compiler and the 
8145compiler options used during generation.
8146
8147  Previous Release:
8148    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8149    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
8150  Current Release:
8151    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
8152    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
8153
8154
81552) iASL Compiler/Disassembler and Tools:
8156
8157Implemented an ANSI C version of the acpixtract utility. This version 
8158will 
8159automatically extract the DSDT and all SSDTs from the input acpidump text 
8160file and dump the binary output to separate files. It can also display a 
8161summary of the input file including the headers for each table found and 
8162will extract any single ACPI table, with any signature. (See 
8163source/tools/acpixtract)
8164
8165----------------------------------------
816610 March 2006. Summary of changes for version 20060310:
8167
81681) ACPI CA Core Subsystem:
8169
8170Tagged all external interfaces to the subsystem with the new 
8171ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 
8172assist 
8173kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 
8174macro. The default definition is NULL.
8175
8176Added the ACPI_THREAD_ID type for the return value from 
8177AcpiOsGetThreadId. 
8178This allows the host to define this as necessary to simplify kernel 
8179integration. The default definition is ACPI_NATIVE_UINT.
8180
8181Fixed two interpreter problems related to error processing, the deletion 
8182of 
8183objects, and placing invalid pointers onto the internal operator result 
8184stack. BZ 6028, 6151 (Valery Podrezov)
8185
8186Increased the reference count threshold where a warning is emitted for 
8187large 
8188reference counts in order to eliminate unnecessary warnings on systems 
8189with 
8190large namespaces (especially 64-bit.) Increased the value from 0x400 to 
81910x800.
8192
8193Due to universal disagreement as to the meaning of the 'c' in the 
8194calloc() 
8195function, the ACPI_MEM_CALLOCATE macro has been renamed to 
8196ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 
8197ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 
8198ACPI_FREE.
8199
8200Code and Data Size: These are the sizes for the acpica.lib produced by 
8201the 
8202Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 
8203ACPI 
8204driver or OSPM code. The debug version of the code includes the debug 
8205output 
8206trace mechanism and has a much larger code and data size. Note that these 
8207values will vary depending on the efficiency of the compiler and the 
8208compiler options used during generation.
8209
8210  Previous Release:
8211    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
8212    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
8213  Current Release:
8214    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8215    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
8216
8217
82182) iASL Compiler/Disassembler:
8219
8220Disassembler: implemented support for symbolic resource descriptor 
8221references. If a CreateXxxxField operator references a fixed offset 
8222within 
8223a 
8224resource descriptor, a name is assigned to the descriptor and the offset 
8225is 
8226translated to the appropriate resource tag and pathname. The addition of 
8227this support brings the disassembled code very close to the original ASL 
8228source code and helps eliminate run-time errors when the disassembled 
8229code 
8230is modified (and recompiled) in such a way as to invalidate the original 
8231fixed offsets.
8232
8233Implemented support for a Descriptor Name as the last parameter to the 
8234ASL 
8235Register() macro. This parameter was inadvertently left out of the ACPI 
8236specification, and will be added for ACPI 3.0b.
8237
8238Fixed a problem where the use of the "_OSI" string (versus the full path 
8239"\_OSI") caused an internal compiler error. ("No back ptr to op")
8240
8241Fixed a problem with the error message that occurs when an invalid string 
8242is 
8243used for a _HID object (such as one with an embedded asterisk: 
8244"*PNP010A".) 
8245The correct message is now displayed.
8246
8247----------------------------------------
824817 February 2006. Summary of changes for version 20060217:
8249
82501) ACPI CA Core Subsystem:
8251
8252Implemented a change to the IndexField support to match the behavior of 
8253the 
8254Microsoft AML interpreter. The value written to the Index register is now 
8255a 
8256byte offset, no longer an index based upon the width of the Data 
8257register. 
8258This should fix IndexField problems seen on some machines where the Data 
8259register is not exactly one byte wide. The ACPI specification will be 
8260clarified on this point.
8261
8262Fixed a problem where several resource descriptor types could overrun the 
8263internal descriptor buffer due to size miscalculation: VendorShort, 
8264VendorLong, and Interrupt. This was noticed on IA64 machines, but could 
8265affect all platforms.
8266
8267Fixed a problem where individual resource descriptors were misaligned 
8268within 
8269the internal buffer, causing alignment faults on IA64 platforms.
8270
8271Code and Data Size: These are the sizes for the acpica.lib produced by 
8272the 
8273Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 
8274ACPI 
8275driver or OSPM code. The debug version of the code includes the debug 
8276output 
8277trace mechanism and has a much larger code and data size. Note that these 
8278values will vary depending on the efficiency of the compiler and the 
8279compiler options used during generation.
8280
8281  Previous Release:
8282    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8283    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8284  Current Release:
8285    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
8286    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
8287
8288
82892) iASL Compiler/Disassembler:
8290
8291Implemented support for new reserved names: _WDG and _WED are Microsoft 
8292extensions for Windows Instrumentation Management, _TDL is a new ACPI-
8293defined method (Throttling Depth Limit.)
8294
8295Fixed a problem where a zero-length VendorShort or VendorLong resource 
8296descriptor was incorrectly emitted as a descriptor of length one.
8297
8298----------------------------------------
829910 February 2006. Summary of changes for version 20060210:
8300
83011) ACPI CA Core Subsystem:
8302
8303Removed a couple of extraneous ACPI_ERROR messages that appeared during 
8304normal execution. These became apparent after the conversion from 
8305ACPI_DEBUG_PRINT.
8306
8307Fixed a problem where the CreateField operator could hang if the BitIndex 
8308or 
8309NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
8310
8311Fixed a problem where a DeRefOf operation on a buffer object incorrectly 
8312failed with an exception. This also fixes a couple of related RefOf and 
8313DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
8314
8315Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 
8316of 
8317AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 
8318BZ 
83195480)
8320
8321Implemented a memory cleanup at the end of the execution of each 
8322iteration 
8323of an AML While() loop, preventing the accumulation of outstanding 
8324objects. 
8325(Valery Podrezov, BZ 5427)
8326
8327Eliminated a chunk of duplicate code in the object resolution code. 
8328(Valery 
8329Podrezov, BZ 5336)
8330
8331Fixed several warnings during the 64-bit code generation.
8332
8333The AcpiSrc source code conversion tool now inserts one line of 
8334whitespace 
8335after an if() statement that is followed immediately by a comment, 
8336improving 
8337readability of the Linux code.
8338
8339Code and Data Size: The current and previous library sizes for the core 
8340subsystem are shown below. These are the code and data sizes for the 
8341acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8342These 
8343values do not include any ACPI driver or OSPM code. The debug version of 
8344the 
8345code includes the debug output trace mechanism and has a much larger code 
8346and data size. Note that these values will vary depending on the 
8347efficiency 
8348of the compiler and the compiler options used during generation.
8349
8350  Previous Release:
8351    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8352    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8353  Current Release:
8354    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8355    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8356
8357
83582) iASL Compiler/Disassembler:
8359
8360Fixed a problem with the disassembly of a BankField operator with a 
8361complex 
8362expression for the BankValue parameter.
8363
8364----------------------------------------
836527 January 2006. Summary of changes for version 20060127:
8366
83671) ACPI CA Core Subsystem:
8368
8369Implemented support in the Resource Manager to allow unresolved 
8370namestring 
8371references within resource package objects for the _PRT method. This 
8372support 
8373is in addition to the previously implemented unresolved reference support 
8374within the AML parser. If the interpreter slack mode is enabled, these 
8375unresolved references will be passed through to the caller as a NULL 
8376package 
8377entry.
8378
8379Implemented and deployed new macros and functions for error and warning 
8380messages across the subsystem. These macros are simpler and generate less 
8381code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 
8382ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 
8383macros remain defined to allow ACPI drivers time to migrate to the new 
8384macros.
8385
8386Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 
8387the 
8388Acquire/Release Lock OSL interfaces.
8389
8390Fixed a problem where Alias ASL operators are sometimes not correctly 
8391resolved, in both the interpreter and the iASL compiler.
8392
8393Fixed several problems with the implementation of the 
8394ConcatenateResTemplate 
8395ASL operator. As per the ACPI specification, zero length buffers are now 
8396treated as a single EndTag. One-length buffers always cause a fatal 
8397exception. Non-zero length buffers that do not end with a full 2-byte 
8398EndTag 
8399cause a fatal exception.
8400
8401Fixed a possible structure overwrite in the AcpiGetObjectInfo external 
8402interface. (With assistance from Thomas Renninger)
8403
8404Code and Data Size: The current and previous library sizes for the core 
8405subsystem are shown below. These are the code and data sizes for the 
8406acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8407These 
8408values do not include any ACPI driver or OSPM code. The debug version of 
8409the 
8410code includes the debug output trace mechanism and has a much larger code 
8411and data size. Note that these values will vary depending on the 
8412efficiency 
8413of the compiler and the compiler options used during generation.
8414
8415  Previous Release:
8416    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8417    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8418  Current Release:
8419    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8420    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8421
8422
84232) iASL Compiler/Disassembler:
8424
8425Fixed an internal error that was generated for any forward references to 
8426ASL 
8427Alias objects.
8428
8429----------------------------------------
843013 January 2006. Summary of changes for version 20060113:
8431
84321) ACPI CA Core Subsystem:
8433
8434Added 2006 copyright to all module headers and signons. This affects 
8435virtually every file in the ACPICA core subsystem, iASL compiler, and the 
8436utilities.
8437 
8438Enhanced the ACPICA error reporting in order to simplify user migration 
8439to 
8440the non-debug version of ACPICA. Replaced all instances of the 
8441ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 
8442debug 
8443levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 
8444respectively. This preserves all error and warning messages in the non-
8445debug 
8446version of the ACPICA code (this has been referred to as the "debug lite" 
8447option.) Over 200 cases were converted to create a total of over 380 
8448error/warning messages across the ACPICA code. This increases the code 
8449and 
8450data size of the default non-debug version of the code somewhat (about 
845113K), 
8452but all error/warning reporting may be disabled if desired (and code 
8453eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 
8454configuration option. The size of the debug version of ACPICA remains 
8455about 
8456the same.
8457
8458Fixed a memory leak within the AML Debugger "Set" command. One object was 
8459not properly deleted for every successful invocation of the command.
8460
8461Code and Data Size: The current and previous library sizes for the core 
8462subsystem are shown below. These are the code and data sizes for the 
8463acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8464These 
8465values do not include any ACPI driver or OSPM code. The debug version of 
8466the 
8467code includes the debug output trace mechanism and has a much larger code 
8468and data size. Note that these values will vary depending on the 
8469efficiency 
8470of the compiler and the compiler options used during generation.
8471
8472  Previous Release:
8473    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8474    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8475  Current Release:
8476    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8477    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8478
8479
84802) iASL Compiler/Disassembler:
8481
8482The compiler now officially supports the ACPI 3.0a specification that was 
8483released on December 30, 2005. (Specification is available at 
8484www.acpi.info)
8485
8486----------------------------------------
848716 December 2005. Summary of changes for version 20051216:
8488
84891) ACPI CA Core Subsystem:
8490
8491Implemented optional support to allow unresolved names within ASL Package 
8492objects. A null object is inserted in the package when a named reference 
8493cannot be located in the current namespace. Enabled via the interpreter 
8494slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 
8495machines 
8496that contain such code.
8497
8498Implemented an optimization to the initialization sequence that can 
8499improve 
8500boot time. During ACPI device initialization, the _STA method is now run 
8501if 
8502and only if the _INI method exists. The _STA method is used to determine 
8503if 
8504the device is present; An _INI can only be run if _STA returns present, 
8505but 
8506it is a waste of time to run the _STA method if the _INI does not exist. 
8507(Prototype and assistance from Dong Wei)
8508
8509Implemented use of the C99 uintptr_t for the pointer casting macros if it 
8510is 
8511available in the current compiler. Otherwise, the default (void *) cast 
8512is 
8513used as before.
8514
8515Fixed some possible memory leaks found within the execution path of the 
8516Break, Continue, If, and CreateField operators. (Valery Podrezov)
8517
8518Fixed a problem introduced in the 20051202 release where an exception is 
8519generated during method execution if a control method attempts to declare 
8520another method.
8521
8522Moved resource descriptor string constants that are used by both the AML 
8523disassembler and AML debugger to the common utilities directory so that 
8524these components are independent.
8525
8526Implemented support in the AcpiExec utility (-e switch) to globally 
8527ignore 
8528exceptions during control method execution (method is not aborted.)
8529
8530Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 
8531generation.
8532
8533Code and Data Size: The current and previous library sizes for the core 
8534subsystem are shown below. These are the code and data sizes for the 
8535acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8536These 
8537values do not include any ACPI driver or OSPM code. The debug version of 
8538the 
8539code includes the debug output trace mechanism and has a much larger code 
8540and data size. Note that these values will vary depending on the 
8541efficiency 
8542of the compiler and the compiler options used during generation.
8543
8544  Previous Release:
8545    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8546    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8547  Current Release:
8548    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8549    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8550
8551
85522) iASL Compiler/Disassembler:
8553
8554Fixed a problem where a CPU stack overflow fault could occur if a 
8555recursive 
8556method call was made from within a Return statement.
8557
8558----------------------------------------
855902 December 2005. Summary of changes for version 20051202:
8560
85611) ACPI CA Core Subsystem:
8562
8563Modified the parsing of control methods to no longer create namespace 
8564objects during the first pass of the parse. Objects are now created only 
8565during the execute phase, at the moment the namespace creation operator 
8566is 
8567encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 
8568This 
8569should eliminate ALREADY_EXISTS exceptions seen on some machines where 
8570reentrant control methods are protected by an AML mutex. The mutex will 
8571now 
8572correctly block multiple threads from attempting to create the same 
8573object 
8574more than once.
8575
8576Increased the number of available Owner Ids for namespace object tracking 
8577from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 
8578on 
8579some machines with a large number of ACPI tables (either static or 
8580dynamic).
8581
8582Fixed a problem with the AcpiExec utility where a fault could occur when 
8583the 
8584-b switch (batch mode) is used.
8585
8586Enhanced the namespace dump routine to output the owner ID for each 
8587namespace object.
8588
8589Code and Data Size: The current and previous library sizes for the core 
8590subsystem are shown below. These are the code and data sizes for the 
8591acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8592These 
8593values do not include any ACPI driver or OSPM code. The debug version of 
8594the 
8595code includes the debug output trace mechanism and has a much larger code 
8596and data size. Note that these values will vary depending on the 
8597efficiency 
8598of the compiler and the compiler options used during generation.
8599
8600  Previous Release:
8601    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8602    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8603  Current Release:
8604    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8605    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8606
8607
86082) iASL Compiler/Disassembler:
8609
8610Fixed a parse error during compilation of certain Switch/Case constructs. 
8611To 
8612simplify the parse, the grammar now allows for multiple Default 
8613statements 
8614and this error is now detected and flagged during the analysis phase.
8615
8616Disassembler: The disassembly now includes the contents of the original 
8617table header within a comment at the start of the file. This includes the 
8618name and version of the original ASL compiler.
8619
8620----------------------------------------
862117 November 2005. Summary of changes for version 20051117:
8622
86231) ACPI CA Core Subsystem:
8624
8625Fixed a problem in the AML parser where the method thread count could be 
8626decremented below zero if any errors occurred during the method parse 
8627phase. 
8628This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 
8629machines. 
8630This also fixed a related regression with the mechanism that detects and 
8631corrects methods that cannot properly handle reentrancy (related to the 
8632deployment of the new OwnerId mechanism.)
8633
8634Eliminated the pre-parsing of control methods (to detect errors) during 
8635table load. Related to the problem above, this was causing unwind issues 
8636if 
8637any errors occurred during the parse, and it seemed to be overkill. A 
8638table 
8639load should not be aborted if there are problems with any single control 
8640method, thus rendering this feature rather pointless.
8641
8642Fixed a problem with the new table-driven resource manager where an 
8643internal 
8644buffer overflow could occur for small resource templates.
8645
8646Implemented a new external interface, AcpiGetVendorResource. This 
8647interface 
8648will find and return a vendor-defined resource descriptor within a _CRS 
8649or 
8650_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 
8651Helgaas.
8652
8653Removed the length limit (200) on string objects as per the upcoming ACPI 
86543.0A specification. This affects the following areas of the interpreter: 
86551) 
8656any implicit conversion of a Buffer to a String, 2) a String object 
8657result 
8658of the ASL Concatentate operator, 3) the String object result of the ASL 
8659ToString operator.
8660
8661Fixed a problem in the Windows OS interface layer (OSL) where a 
8662WAIT_FOREVER 
8663on a semaphore object would incorrectly timeout. This allows the 
8664multithreading features of the AcpiExec utility to work properly under 
8665Windows.
8666
8667Updated the Linux makefiles for the iASL compiler and AcpiExec to include 
8668the recently added file named "utresrc.c".
8669
8670Code and Data Size: The current and previous library sizes for the core 
8671subsystem are shown below. These are the code and data sizes for the 
8672acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8673These 
8674values do not include any ACPI driver or OSPM code. The debug version of 
8675the 
8676code includes the debug output trace mechanism and has a much larger code 
8677and data size. Note that these values will vary depending on the 
8678efficiency 
8679of the compiler and the compiler options used during generation.
8680
8681  Previous Release:
8682    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8683    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8684  Current Release:
8685    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8686    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8687
8688
86892) iASL Compiler/Disassembler:
8690
8691Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 
8692specification. For the iASL compiler, this means that string literals 
8693within 
8694the source ASL can be of any length. 
8695
8696Enhanced the listing output to dump the AML code for resource descriptors 
8697immediately after the ASL code for each descriptor, instead of in a block 
8698at 
8699the end of the entire resource template.
8700
8701Enhanced the compiler debug output to dump the entire original parse tree 
8702constructed during the parse phase, before any transforms are applied to 
8703the 
8704tree. The transformed tree is dumped also.
8705
8706----------------------------------------
870702 November 2005. Summary of changes for version 20051102:
8708
87091) ACPI CA Core Subsystem:
8710
8711Modified the subsystem initialization sequence to improve GPE support. 
8712The 
8713GPE initialization has been split into two parts in order to defer 
8714execution 
8715of the _PRW methods (Power Resources for Wake) until after the hardware 
8716is 
8717fully initialized and the SCI handler is installed. This allows the _PRW 
8718methods to access fields protected by the Global Lock. This will fix 
8719systems 
8720where a NO_GLOBAL_LOCK exception has been seen during initialization.
8721
8722Converted the ACPI internal object disassemble and display code within 
8723the 
8724AML debugger to fully table-driven operation, reducing code size and 
8725increasing maintainability.
8726
8727Fixed a regression with the ConcatenateResTemplate() ASL operator 
8728introduced 
8729in the 20051021 release.
8730
8731Implemented support for "local" internal ACPI object types within the 
8732debugger "Object" command and the AcpiWalkNamespace external interfaces. 
8733These local types include RegionFields, BankFields, IndexFields, Alias, 
8734and 
8735reference objects.
8736
8737Moved common AML resource handling code into a new file, "utresrc.c". 
8738This 
8739code is shared by both the Resource Manager and the AML Debugger.
8740
8741Code and Data Size: The current and previous library sizes for the core 
8742subsystem are shown below. These are the code and data sizes for the 
8743acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8744These 
8745values do not include any ACPI driver or OSPM code. The debug version of 
8746the 
8747code includes the debug output trace mechanism and has a much larger code 
8748and data size. Note that these values will vary depending on the 
8749efficiency 
8750of the compiler and the compiler options used during generation.
8751
8752  Previous Release:
8753    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8754    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8755  Current Release:
8756    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8757    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8758
8759
87602) iASL Compiler/Disassembler:
8761
8762Fixed a problem with very large initializer lists (more than 4000 
8763elements) 
8764for both Buffer and Package objects where the parse stack could overflow.
8765
8766Enhanced the pre-compile source code scan for non-ASCII characters to 
8767ignore 
8768characters within comment fields. The scan is now always performed and is 
8769no 
8770longer optional, detecting invalid characters within a source file 
8771immediately rather than during the parse phase or later.
8772
8773Enhanced the ASL grammar definition to force early reductions on all 
8774list-
8775style grammar elements so that the overall parse stack usage is greatly 
8776reduced. This should improve performance and reduce the possibility of 
8777parse 
8778stack overflow.
8779
8780Eliminated all reduce/reduce conflicts in the iASL parser generation. 
8781Also, 
8782with the addition of a %expected statement, the compiler generates from 
8783source with no warnings.
8784
8785Fixed a possible segment fault in the disassembler if the input filename 
8786does not contain a "dot" extension (Thomas Renninger).
8787
8788----------------------------------------
878921 October 2005. Summary of changes for version 20051021:
8790
87911) ACPI CA Core Subsystem:
8792
8793Implemented support for the EM64T and other x86-64 processors. This 
8794essentially entails recognizing that these processors support non-aligned 
8795memory transfers. Previously, all 64-bit processors were assumed to lack 
8796hardware support for non-aligned transfers.
8797
8798Completed conversion of the Resource Manager to nearly full table-driven 
8799operation. Specifically, the resource conversion code (convert AML to 
8800internal format and the reverse) and the debug code to dump internal 
8801resource descriptors are fully table-driven, reducing code and data size 
8802and 
8803improving maintainability.
8804
8805The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 
8806word 
8807on 64-bit processors instead of a fixed 32-bit word. (With assistance 
8808from 
8809Alexey Starikovskiy)
8810
8811Implemented support within the resource conversion code for the Type-
8812Specific byte within the various ACPI 3.0 *WordSpace macros.
8813
8814Fixed some issues within the resource conversion code for the type-
8815specific 
8816flags for both Memory and I/O address resource descriptors. For Memory, 
8817implemented support for the MTP and TTP flags. For I/O, split the TRS and 
8818TTP flags into two separate fields.
8819
8820Code and Data Size: The current and previous library sizes for the core 
8821subsystem are shown below. These are the code and data sizes for the 
8822acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8823These 
8824values do not include any ACPI driver or OSPM code. The debug version of 
8825the 
8826code includes the debug output trace mechanism and has a much larger code 
8827and data size. Note that these values will vary depending on the 
8828efficiency 
8829of the compiler and the compiler options used during generation.
8830
8831  Previous Release:
8832    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8833    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8834  Current Release:
8835    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8836    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8837
8838
8839
88402) iASL Compiler/Disassembler:
8841
8842Relaxed a compiler restriction that disallowed a ResourceIndex byte if 
8843the 
8844corresponding ResourceSource string was not also present in a resource 
8845descriptor declaration. This restriction caused problems with existing 
8846AML/ASL code that includes the Index byte without the string. When such 
8847AML 
8848was disassembled, it could not be compiled without modification. Further, 
8849the modified code created a resource template with a different size than 
8850the 
8851original, breaking code that used fixed offsets into the resource 
8852template 
8853buffer.
8854
8855Removed a recent feature of the disassembler to ignore a lone 
8856ResourceIndex 
8857byte. This byte is now emitted if present so that the exact AML can be 
8858reproduced when the disassembled code is recompiled.
8859
8860Improved comments and text alignment for the resource descriptor code 
8861emitted by the disassembler.
8862
8863Implemented disassembler support for the ACPI 3.0 AccessSize field within 
8864a 
8865Register() resource descriptor.
8866
8867----------------------------------------
886830 September 2005. Summary of changes for version 20050930:
8869
88701) ACPI CA Core Subsystem:
8871
8872Completed a major overhaul of the Resource Manager code - specifically, 
8873optimizations in the area of the AML/internal resource conversion code. 
8874The 
8875code has been optimized to simplify and eliminate duplicated code, CPU 
8876stack 
8877use has been decreased by optimizing function parameters and local 
8878variables, and naming conventions across the manager have been 
8879standardized 
8880for clarity and ease of maintenance (this includes function, parameter, 
8881variable, and struct/typedef names.) The update may force changes in some 
8882driver code, depending on how resources are handled by the host OS.
8883
8884All Resource Manager dispatch and information tables have been moved to a 
8885single location for clarity and ease of maintenance. One new file was 
8886created, named "rsinfo.c".
8887
8888The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 
8889guarantee that the argument is not evaluated twice, making them less 
8890prone 
8891to macro side-effects. However, since there exists the possibility of 
8892additional stack use if a particular compiler cannot optimize them (such 
8893as 
8894in the debug generation case), the original macros are optionally 
8895available.  
8896Note that some invocations of the return_VALUE macro may now cause size 
8897mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 
8898to 
8899eliminate these. (From Randy Dunlap)
8900
8901Implemented a new mechanism to enable debug tracing for individual 
8902control 
8903methods. A new external interface, AcpiDebugTrace, is provided to enable 
8904this mechanism. The intent is to allow the host OS to easily enable and 
8905disable tracing for problematic control methods. This interface can be 
8906easily exposed to a user or debugger interface if desired. See the file 
8907psxface.c for details.
8908
8909AcpiUtCallocate will now return a valid pointer if a length of zero is 
8910specified - a length of one is used and a warning is issued. This matches 
8911the behavior of AcpiUtAllocate.
8912
8913Code and Data Size: The current and previous library sizes for the core 
8914subsystem are shown below. These are the code and data sizes for the 
8915acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8916These 
8917values do not include any ACPI driver or OSPM code. The debug version of 
8918the 
8919code includes the debug output trace mechanism and has a much larger code 
8920and data size. Note that these values will vary depending on the 
8921efficiency 
8922of the compiler and the compiler options used during generation.
8923
8924  Previous Release:
8925    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8926    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8927  Current Release:
8928    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8929    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8930
8931
89322) iASL Compiler/Disassembler:
8933
8934A remark is issued if the effective compile-time length of a package or 
8935buffer is zero. Previously, this was a warning.
8936
8937----------------------------------------
893816 September 2005. Summary of changes for version 20050916:
8939
89401) ACPI CA Core Subsystem:
8941
8942Fixed a problem within the Resource Manager where support for the Generic 
8943Register descriptor was not fully implemented. This descriptor is now 
8944fully 
8945recognized, parsed, disassembled, and displayed.
8946
8947Completely restructured the Resource Manager code to utilize table-driven 
8948dispatch and lookup, eliminating many of the large switch() statements. 
8949This 
8950reduces overall subsystem code size and code complexity. Affects the 
8951resource parsing and construction, disassembly, and debug dump output.
8952
8953Cleaned up and restructured the debug dump output for all resource 
8954descriptors. Improved readability of the output and reduced code size.
8955
8956Fixed a problem where changes to internal data structures caused the 
8957optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
8958
8959Code and Data Size: The current and previous library sizes for the core 
8960subsystem are shown below. These are the code and data sizes for the 
8961acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 
8962These 
8963values do not include any ACPI driver or OSPM code. The debug version of 
8964the 
8965code includes the debug output trace mechanism and has a much larger code 
8966and data size. Note that these values will vary depending on the 
8967efficiency 
8968of the compiler and the compiler options used during generation.
8969
8970  Previous Release:
8971    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
8972    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
8973  Current Release:
8974    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8975    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8976
8977
89782) iASL Compiler/Disassembler:
8979
8980Updated the disassembler to automatically insert an EndDependentFn() 
8981macro 
8982into the ASL stream if this macro is missing in the original AML code, 
8983simplifying compilation of the resulting ASL module.
8984
8985Fixed a problem in the disassembler where a disassembled ResourceSource 
8986string (within a large resource descriptor) was not surrounded by quotes 
8987and 
8988not followed by a comma, causing errors when the resulting ASL module was 
8989compiled. Also, escape sequences within a ResourceSource string are now 
8990handled correctly (especially "\\")
8991
8992----------------------------------------
899302 September 2005. Summary of changes for version 20050902:
8994
89951) ACPI CA Core Subsystem:
8996
8997Fixed a problem with the internal Owner ID allocation and deallocation 
8998mechanisms for control method execution and recursive method invocation. 
8999This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 
9000messages seen on some systems. Recursive method invocation depth is 
9001currently limited to 255. (Alexey Starikovskiy)
9002
9003Completely eliminated all vestiges of support for the "module-level 
9004executable code" until this support is fully implemented and debugged. 
9005This 
9006should eliminate the NO_RETURN_VALUE exceptions seen during table load on 
9007some systems that invoke this support.
9008
9009Fixed a problem within the resource manager code where the transaction 
9010flags 
9011for a 64-bit address descriptor were handled incorrectly in the type-
9012specific flag byte.
9013
9014Consolidated duplicate code within the address descriptor resource 
9015manager 
9016code, reducing overall subsystem code size.
9017
9018Fixed a fault when using the AML debugger "disassemble" command to 
9019disassemble individual control methods.
9020
9021Removed references to the "release_current" directory within the Unix 
9022release package.
9023
9024Code and Data Size: The current and previous core subsystem library sizes 
9025are shown below. These are the code and data sizes for the acpica.lib 
9026produced by the Microsoft Visual C++ 6.0 compiler. These values do not 
9027include any ACPI driver or OSPM code. The debug version of the code 
9028includes 
9029the debug output trace mechanism and has a much larger code and data 
9030size. 
9031Note that these values will vary depending on the efficiency of the 
9032compiler 
9033and the compiler options used during generation.
9034
9035  Previous Release:
9036    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9037    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9038  Current Release:
9039    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
9040    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
9041
9042
90432) iASL Compiler/Disassembler:
9044
9045Implemented an error check for illegal duplicate values in the interrupt 
9046and 
9047dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 
9048Interrupt().
9049
9050Implemented error checking for the Irq() and IrqNoFlags() macros to 
9051detect 
9052too many values in the interrupt list (16 max) and invalid values in the 
9053list (range 0 - 15)
9054
9055The maximum length string literal within an ASL file is now restricted to 
9056200 characters as per the ACPI specification.
9057
9058Fixed a fault when using the -ln option (generate namespace listing).
9059
9060Implemented an error check to determine if a DescriptorName within a 
9061resource descriptor has already been used within the current scope.
9062
9063----------------------------------------
906415 August 2005.  Summary of changes for version 20050815:
9065 
90661) ACPI CA Core Subsystem:
9067 
9068Implemented a full bytewise compare to determine if a table load request 
9069is 
9070attempting to load a duplicate table. The compare is performed if the 
9071table 
9072signatures and table lengths match. This will allow different tables with 
9073the same OEM Table ID and revision to be loaded - probably against the 
9074ACPI 
9075specification, but discovered in the field nonetheless.
9076 
9077Added the changes.txt logfile to each of the zipped release packages.
9078 
9079Code and Data Size: Current and previous core subsystem library sizes are 
9080shown below. These are the code and data sizes for the acpica.lib 
9081produced 
9082by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9083any ACPI driver or OSPM code. The debug version of the code includes the 
9084debug output trace mechanism and has a much larger code and data size. 
9085Note 
9086that these values will vary depending on the efficiency of the compiler 
9087and 
9088the compiler options used during generation.
9089 
9090  Previous Release:
9091    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9092    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
9093  Current Release:
9094    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9095    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9096 
9097 
90982) iASL Compiler/Disassembler:
9099 
9100Fixed a problem where incorrect AML code could be generated for Package 
9101objects if optimization is disabled (via the -oa switch).
9102 
9103Fixed a problem with where incorrect AML code is generated for variable-
9104length packages when the package length is not specified and the number 
9105of 
9106initializer values is greater than 255.
9107 
9108
9109----------------------------------------
911029 July 2005.  Summary of changes for version 20050729:
9111
91121) ACPI CA Core Subsystem:
9113
9114Implemented support to ignore an attempt to install/load a particular 
9115ACPI 
9116table more than once. Apparently there exists BIOS code that repeatedly 
9117attempts to load the same SSDT upon certain events. With assistance from 
9118Venkatesh Pallipadi.
9119
9120Restructured the main interface to the AML parser in order to correctly 
9121handle all exceptional conditions. This will prevent leakage of the 
9122OwnerId 
9123resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 
9124some 
9125machines. With assistance from Alexey Starikovskiy.
9126
9127Support for "module level code" has been disabled in this version due to 
9128a 
9129number of issues that have appeared on various machines. The support can 
9130be 
9131enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 
9132compilation. When the issues are fully resolved, the code will be enabled 
9133by 
9134default again.
9135
9136Modified the internal functions for debug print support to define the 
9137FunctionName parameter as a (const char *) for compatibility with 
9138compiler 
9139built-in macros such as __FUNCTION__, etc.
9140
9141Linted the entire ACPICA source tree for both 32-bit and 64-bit.
9142
9143Implemented support to display an object count summary for the AML 
9144Debugger 
9145commands Object and Methods.
9146
9147Code and Data Size: Current and previous core subsystem library sizes are 
9148shown below. These are the code and data sizes for the acpica.lib 
9149produced 
9150by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9151any ACPI driver or OSPM code. The debug version of the code includes the 
9152debug output trace mechanism and has a much larger code and data size. 
9153Note 
9154that these values will vary depending on the efficiency of the compiler 
9155and 
9156the compiler options used during generation.
9157
9158  Previous Release:
9159    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
9160    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
9161  Current Release:
9162    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9163    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
9164
9165
91662) iASL Compiler/Disassembler:
9167
9168Fixed a regression that appeared in the 20050708 version of the compiler 
9169where an error message was inadvertently emitted for invocations of the 
9170_OSI 
9171reserved control method.
9172
9173----------------------------------------
917408 July 2005.  Summary of changes for version 20050708:
9175
91761) ACPI CA Core Subsystem:
9177
9178The use of the CPU stack in the debug version of the subsystem has been 
9179considerably reduced. Previously, a debug structure was declared in every 
9180function that used the debug macros. This structure has been removed in 
9181favor of declaring the individual elements as parameters to the debug 
9182functions. This reduces the cumulative stack use during nested execution 
9183of 
9184ACPI function calls at the cost of a small increase in the code size of 
9185the 
9186debug version of the subsystem. With assistance from Alexey Starikovskiy 
9187and 
9188Len Brown.
9189
9190Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 
9191headers to define a macro that will return the current function name at 
9192runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 
9193by 
9194the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 
9195compiler-dependent header, the function name is saved on the CPU stack 
9196(one 
9197pointer per function.) This mechanism is used because apparently there 
9198exists no standard ANSI-C defined macro that that returns the function 
9199name.
9200
9201Redesigned and reimplemented the "Owner ID" mechanism used to track 
9202namespace objects created/deleted by ACPI tables and control method 
9203execution. A bitmap is now used to allocate and free the IDs, thus 
9204solving 
9205the wraparound problem present in the previous implementation. The size 
9206of 
9207the namespace node descriptor was reduced by 2 bytes as a result (Alexey 
9208Starikovskiy).
9209
9210Removed the UINT32_BIT and UINT16_BIT types that were used for the 
9211bitfield 
9212flag definitions within the headers for the predefined ACPI tables. These 
9213have been replaced by UINT8_BIT in order to increase the code portability 
9214of 
9215the subsystem. If the use of UINT8 remains a problem, we may be forced to 
9216eliminate bitfields entirely because of a lack of portability.
9217
9218Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 
9219This 
9220is a frequently used function and this improvement increases the 
9221performance 
9222of the entire subsystem (Alexey Starikovskiy).
9223
9224Fixed several possible memory leaks and the inverse - premature object 
9225deletion (Alexey Starikovskiy).
9226
9227Code and Data Size: Current and previous core subsystem library sizes are 
9228shown below. These are the code and data sizes for the acpica.lib 
9229produced 
9230by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9231any ACPI driver or OSPM code. The debug version of the code includes the 
9232debug output trace mechanism and has a much larger code and data size. 
9233Note 
9234that these values will vary depending on the efficiency of the compiler 
9235and 
9236the compiler options used during generation.
9237
9238  Previous Release:
9239    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9240    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9241  Current Release:
9242    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
9243    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
9244
9245----------------------------------------
924624 June 2005.  Summary of changes for version 20050624:
9247
92481) ACPI CA Core Subsystem:
9249
9250Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 
9251the host-defined cache object. This allows the OSL implementation to 
9252define 
9253and type this object in any manner desired, simplifying the OSL 
9254implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 
9255Linux, and should be defined in the OS-specific header file for other 
9256operating systems as required.
9257
9258Changed the interface to AcpiOsAcquireObject to directly return the 
9259requested object as the function return (instead of ACPI_STATUS.) This 
9260change was made for performance reasons, since this is the purpose of the 
9261interface in the first place. AcpiOsAcquireObject is now similar to the 
9262AcpiOsAllocate interface.
9263
9264Implemented a new AML debugger command named Businfo. This command 
9265displays 
9266information about all devices that have an associate _PRT object. The 
9267_ADR, 
9268_HID, _UID, and _CID are displayed for these devices.
9269
9270Modified the initialization sequence in AcpiInitializeSubsystem to call 
9271the 
9272OSL interface AcpiOslInitialize first, before any local initialization. 
9273This 
9274change was required because the global initialization now calls OSL 
9275interfaces.
9276
9277Enhanced the Dump command to display the entire contents of Package 
9278objects 
9279(including all sub-objects and their values.) 
9280
9281Restructured the code base to split some files because of size and/or 
9282because the code logically belonged in a separate file. New files are 
9283listed 
9284below. All makefiles and project files included in the ACPI CA release 
9285have 
9286been updated.
9287    utilities/utcache.c           /* Local cache interfaces */
9288    utilities/utmutex.c           /* Local mutex support */
9289    utilities/utstate.c           /* State object support */
9290    interpreter/parser/psloop.c   /* Main AML parse loop */
9291
9292Code and Data Size: Current and previous core subsystem library sizes are 
9293shown below. These are the code and data sizes for the acpica.lib 
9294produced 
9295by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9296any ACPI driver or OSPM code. The debug version of the code includes the 
9297debug output trace mechanism and has a much larger code and data size. 
9298Note 
9299that these values will vary depending on the efficiency of the compiler 
9300and 
9301the compiler options used during generation.
9302
9303  Previous Release:
9304    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9305    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9306  Current Release:
9307    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9308    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9309
9310
93112) iASL Compiler/Disassembler:
9312
9313Fixed a regression introduced in version 20050513 where the use of a 
9314Package 
9315object within a Case() statement caused a compile time exception. The 
9316original behavior has been restored (a Match() operator is emitted.)
9317
9318----------------------------------------
931917 June 2005.  Summary of changes for version 20050617:
9320
93211) ACPI CA Core Subsystem:
9322
9323Moved the object cache operations into the OS interface layer (OSL) to 
9324allow 
9325the host OS to handle these operations if desired (for example, the Linux 
9326OSL will invoke the slab allocator). This support is optional; the 
9327compile 
9328time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 
9329cache 
9330code in the ACPI CA core. The new OSL interfaces are shown below. See 
9331utalloc.c for an example implementation, and acpiosxf.h for the exact 
9332interface definitions. With assistance from Alexey Starikovskiy.
9333    AcpiOsCreateCache
9334    AcpiOsDeleteCache
9335    AcpiOsPurgeCache
9336    AcpiOsAcquireObject
9337    AcpiOsReleaseObject
9338
9339Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 
9340return 
9341and restore a flags parameter. This fits better with many OS lock models. 
9342Note: the current execution state (interrupt handler or not) is no longer 
9343passed to these interfaces. If necessary, the OSL must determine this 
9344state 
9345by itself, a simple and fast operation. With assistance from Alexey 
9346Starikovskiy.
9347
9348Fixed a problem in the ACPI table handling where a valid XSDT was assumed 
9349present if the revision of the RSDP was 2 or greater. According to the 
9350ACPI 
9351specification, the XSDT is optional in all cases, and the table manager 
9352therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 
9353Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 
9354contain 
9355only the RSDT.
9356
9357Fixed an interpreter problem with the Mid() operator in the case of an 
9358input 
9359string where the resulting output string is of zero length. It now 
9360correctly 
9361returns a valid, null terminated string object instead of a string object 
9362with a null pointer.
9363
9364Fixed a problem with the control method argument handling to allow a 
9365store 
9366to an Arg object that already contains an object of type Device. The 
9367Device 
9368object is now correctly overwritten. Previously, an error was returned.
9369
9370
9371Enhanced the debugger Find command to emit object values in addition to 
9372the 
9373found object pathnames. The output format is the same as the dump 
9374namespace 
9375command.
9376
9377Enhanced the debugger Set command. It now has the ability to set the 
9378value 
9379of any Named integer object in the namespace (Previously, only method 
9380locals 
9381and args could be set.)
9382
9383Code and Data Size: Current and previous core subsystem library sizes are 
9384shown below. These are the code and data sizes for the acpica.lib 
9385produced 
9386by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9387any ACPI driver or OSPM code. The debug version of the code includes the 
9388debug output trace mechanism and has a much larger code and data size. 
9389Note 
9390that these values will vary depending on the efficiency of the compiler 
9391and 
9392the compiler options used during generation.
9393
9394  Previous Release:
9395    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9396    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9397  Current Release:
9398    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9399    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9400
9401
94022) iASL Compiler/Disassembler:
9403
9404Fixed a regression in the disassembler where if/else/while constructs 
9405were 
9406output incorrectly. This problem was introduced in the previous release 
9407(20050526). This problem also affected the single-step disassembly in the 
9408debugger.
9409
9410Fixed a problem where compiling the reserved _OSI method would randomly 
9411(but 
9412rarely) produce compile errors.
9413
9414Enhanced the disassembler to emit compilable code in the face of 
9415incorrect 
9416AML resource descriptors. If the optional ResourceSourceIndex is present, 
9417but the ResourceSource is not, do not emit the ResourceSourceIndex in the 
9418disassembly. Otherwise, the resulting code cannot be compiled without 
9419errors.
9420
9421----------------------------------------
942226 May 2005.  Summary of changes for version 20050526:
9423
94241) ACPI CA Core Subsystem:
9425
9426Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 
9427the module level (not within a control method.) These opcodes are 
9428executed 
9429exactly once at the time the table is loaded. This type of code was legal 
9430up 
9431until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 
9432in 
9433order to provide backwards compatibility with earlier BIOS 
9434implementations. 
9435This eliminates the "Encountered executable code at module level" warning 
9436that was previously generated upon detection of such code.
9437
9438Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 
9439inadvertently be generated during the lookup of namespace objects in the 
9440second pass parse of ACPI tables and control methods. It appears that 
9441this 
9442problem could occur during the resolution of forward references to 
9443namespace 
9444objects.
9445
9446Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 
9447corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 
9448allows the deadlock detection debug code to be compiled out in the normal 
9449case, improving mutex performance (and overall subsystem performance) 
9450considerably.
9451
9452Implemented a handful of miscellaneous fixes for possible memory leaks on 
9453error conditions and error handling control paths. These fixes were 
9454suggested by FreeBSD and the Coverity Prevent source code analysis tool.
9455
9456Added a check for a null RSDT pointer in AcpiGetFirmwareTable 
9457(tbxfroot.c) 
9458to prevent a fault in this error case.
9459
9460Code and Data Size: Current and previous core subsystem library sizes are 
9461shown below. These are the code and data sizes for the acpica.lib 
9462produced 
9463by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9464any ACPI driver or OSPM code. The debug version of the code includes the 
9465debug output trace mechanism and has a much larger code and data size. 
9466Note 
9467that these values will vary depending on the efficiency of the compiler 
9468and 
9469the compiler options used during generation.
9470
9471  Previous Release:
9472    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9473    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9474  Current Release:
9475    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9476    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9477
9478
94792) iASL Compiler/Disassembler:
9480
9481Implemented support to allow Type 1 and Type 2 ASL operators to appear at 
9482the module level (not within a control method.) These operators will be 
9483executed once at the time the table is loaded. This type of code was 
9484legal 
9485up until the release of ACPI 2.0B (2002) and is now supported by the iASL 
9486compiler in order to provide backwards compatibility with earlier BIOS 
9487ASL 
9488code.
9489
9490The ACPI integer width (specified via the table revision ID or the -r 
9491override, 32 or 64 bits) is now used internally during compile-time 
9492constant 
9493folding to ensure that constants are truncated to 32 bits if necessary. 
9494Previously, the revision ID value was only emitted in the AML table 
9495header.
9496
9497An error message is now generated for the Mutex and Method operators if 
9498the 
9499SyncLevel parameter is outside the legal range of 0 through 15.
9500
9501Fixed a problem with the Method operator ParameterTypes list handling 
9502(ACPI 
95033.0). Previously, more than 2 types or 2 arguments generated a syntax 
9504error.  
9505The actual underlying implementation of method argument typechecking is 
9506still under development, however.
9507
9508----------------------------------------
950913 May 2005.  Summary of changes for version 20050513:
9510
95111) ACPI CA Core Subsystem:
9512
9513Implemented support for PCI Express root bridges -- added support for 
9514device 
9515PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
9516
9517The interpreter now automatically truncates incoming 64-bit constants to 
951832 
9519bits if currently executing out of a 32-bit ACPI table (Revision < 2). 
9520This 
9521also affects the iASL compiler constant folding. (Note: as per below, the 
9522iASL compiler no longer allows 64-bit constants within 32-bit tables.)
9523
9524Fixed a problem where string and buffer objects with "static" pointers 
9525(pointers to initialization data within an ACPI table) were not handled 
9526consistently. The internal object copy operation now always copies the 
9527data 
9528to a newly allocated buffer, regardless of whether the source object is 
9529static or not.
9530
9531Fixed a problem with the FromBCD operator where an implicit result 
9532conversion was improperly performed while storing the result to the 
9533target 
9534operand. Since this is an "explicit conversion" operator, the implicit 
9535conversion should never be performed on the output.
9536
9537Fixed a problem with the CopyObject operator where a copy to an existing 
9538named object did not always completely overwrite the existing object 
9539stored 
9540at name. Specifically, a buffer-to-buffer copy did not delete the 
9541existing 
9542buffer.
9543
9544Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 
9545and 
9546structs for consistency.
9547
9548Code and Data Size: Current and previous core subsystem library sizes are 
9549shown below. These are the code and data sizes for the acpica.lib 
9550produced 
9551by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9552any ACPI driver or OSPM code. The debug version of the code includes the 
9553debug output trace mechanism and has a much larger code and data size. 
9554Note 
9555that these values will vary depending on the efficiency of the compiler 
9556and 
9557the compiler options used during generation.
9558
9559  Previous Release:
9560    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9561    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9562  Current Release: (Same sizes)
9563    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9564    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9565
9566
95672) iASL Compiler/Disassembler:
9568
9569The compiler now emits a warning if an attempt is made to generate a 64-
9570bit 
9571integer constant from within a 32-bit ACPI table (Revision < 2). The 
9572integer 
9573is truncated to 32 bits.
9574
9575Fixed a problem with large package objects: if the static length of the 
9576package is greater than 255, the "variable length package" opcode is 
9577emitted. Previously, this caused an error. This requires an update to the 
9578ACPI spec, since it currently (incorrectly) states that packages larger 
9579than 
9580255 elements are not allowed.
9581
9582The disassembler now correctly handles variable length packages and 
9583packages 
9584larger than 255 elements.
9585
9586----------------------------------------
958708 April 2005.  Summary of changes for version 20050408:
9588
95891) ACPI CA Core Subsystem:
9590
9591Fixed three cases in the interpreter where an "index" argument to an ASL 
9592function was still (internally) 32 bits instead of the required 64 bits. 
9593This was the Index argument to the Index, Mid, and Match operators.
9594
9595The "strupr" function is now permanently local (AcpiUtStrupr), since this 
9596is 
9597not a POSIX-defined function and not present in most kernel-level C 
9598libraries. All references to the C library strupr function have been 
9599removed 
9600from the headers.
9601
9602Completed the deployment of static functions/prototypes. All prototypes 
9603with 
9604the static attribute have been moved from the headers to the owning C 
9605file.
9606
9607Implemented an extract option (-e) for the AcpiBin utility (AML binary 
9608utility). This option allows the utility to extract individual ACPI 
9609tables 
9610from the output of AcpiDmp. It provides the same functionality of the 
9611acpixtract.pl perl script without the worry of setting the correct perl 
9612options. AcpiBin runs on Windows and has not yet been generated/validated 
9613in 
9614the Linux/Unix environment (but should be soon).
9615 
9616Updated and fixed the table dump option for AcpiBin (-d). This option 
9617converts a single ACPI table to a hex/ascii file, similar to the output 
9618of 
9619AcpiDmp.
9620
9621Code and Data Size: Current and previous core subsystem library sizes are 
9622shown below. These are the code and data sizes for the acpica.lib 
9623produced 
9624by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9625any ACPI driver or OSPM code. The debug version of the code includes the 
9626debug output trace mechanism and has a much larger code and data size. 
9627Note 
9628that these values will vary depending on the efficiency of the compiler 
9629and 
9630the compiler options used during generation.
9631
9632  Previous Release:
9633    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9634    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9635  Current Release:
9636    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9637    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9638
9639
96402) iASL Compiler/Disassembler:
9641
9642Disassembler fix: Added a check to ensure that the table length found in 
9643the 
9644ACPI table header within the input file is not longer than the actual 
9645input 
9646file size. This indicates some kind of file or table corruption.
9647
9648----------------------------------------
964929 March 2005.  Summary of changes for version 20050329:
9650
96511) ACPI CA Core Subsystem:
9652
9653An error is now generated if an attempt is made to create a Buffer Field 
9654of 
9655length zero (A CreateField with a length operand of zero.)
9656
9657The interpreter now issues a warning whenever executable code at the 
9658module 
9659level is detected during ACPI table load. This will give some idea of the 
9660prevalence of this type of code.
9661
9662Implemented support for references to named objects (other than control 
9663methods) within package objects.
9664
9665Enhanced package object output for the debug object. Package objects are 
9666now 
9667completely dumped, showing all elements.
9668
9669Enhanced miscellaneous object output for the debug object. Any object can 
9670now be written to the debug object (for example, a device object can be 
9671written, and the type of the object will be displayed.)
9672
9673The "static" qualifier has been added to all local functions across both 
9674the 
9675core subsystem and the iASL compiler.
9676
9677The number of "long" lines (> 80 chars) within the source has been 
9678significantly reduced, by about 1/3.
9679
9680Cleaned up all header files to ensure that all CA/iASL functions are 
9681prototyped (even static functions) and the formatting is consistent.
9682
9683Two new header files have been added, acopcode.h and acnames.h.
9684
9685Removed several obsolete functions that were no longer used.
9686
9687Code and Data Size: Current and previous core subsystem library sizes are 
9688shown below. These are the code and data sizes for the acpica.lib 
9689produced 
9690by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9691any ACPI driver or OSPM code. The debug version of the code includes the 
9692debug output trace mechanism and has a much larger code and data size. 
9693Note 
9694that these values will vary depending on the efficiency of the compiler 
9695and 
9696the compiler options used during generation.
9697
9698  Previous Release:
9699    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9700    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9701  Current Release:
9702    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9703    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9704
9705
9706
97072) iASL Compiler/Disassembler:
9708
9709Fixed a problem with the resource descriptor generation/support. For the 
9710ResourceSourceIndex and the ResourceSource fields, both must be present, 
9711or 
9712both must be not present - can't have one without the other.
9713
9714The compiler now returns non-zero from the main procedure if any errors 
9715have 
9716occurred during the compilation.
9717
9718
9719----------------------------------------
972009 March 2005.  Summary of changes for version 20050309:
9721
97221) ACPI CA Core Subsystem:
9723
9724The string-to-buffer implicit conversion code has been modified again 
9725after 
9726a change to the ACPI specification.  In order to match the behavior of 
9727the 
9728other major ACPI implementation, the target buffer is no longer truncated 
9729if 
9730the source string is smaller than an existing target buffer. This change 
9731requires an update to the ACPI spec, and should eliminate the recent 
9732AE_AML_BUFFER_LIMIT issues.
9733
9734The "implicit return" support was rewritten to a new algorithm that 
9735solves 
9736the general case. Rather than attempt to determine when a method is about 
9737to 
9738exit, the result of every ASL operator is saved momentarily until the 
9739very 
9740next ASL operator is executed. Therefore, no matter how the method exits, 
9741there will always be a saved implicit return value. This feature is only 
9742enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 
9743eliminate 
9744AE_AML_NO_RETURN_VALUE errors when enabled.
9745
9746Implemented implicit conversion support for the predicate (operand) of 
9747the 
9748If, Else, and While operators. String and Buffer arguments are 
9749automatically 
9750converted to Integers.
9751
9752Changed the string-to-integer conversion behavior to match the new ACPI 
9753errata: "If no integer object exists, a new integer is created. The ASCII 
9754string is interpreted as a hexadecimal constant. Each string character is 
9755interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 
9756with the first character as the most significant digit, and ending with 
9757the 
9758first non-hexadecimal character or end-of-string." This means that the 
9759first 
9760non-hex character terminates the conversion and this is the code that was 
9761changed.
9762
9763Fixed a problem where the ObjectType operator would fail (fault) when 
9764used 
9765on an Index of a Package which pointed to a null package element. The 
9766operator now properly returns zero (Uninitialized) in this case.
9767
9768Fixed a problem where the While operator used excessive memory by not 
9769properly popping the result stack during execution. There was no memory 
9770leak 
9771after execution, however. (Code provided by Valery Podrezov.)
9772
9773Fixed a problem where references to control methods within Package 
9774objects 
9775caused the method to be invoked, instead of producing a reference object 
9776pointing to the method.
9777
9778Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 
9779to 
9780improve performance and reduce code size. (Code provided by Alexey 
9781Starikovskiy.)
9782
9783Code and Data Size: Current and previous core subsystem library sizes are 
9784shown below. These are the code and data sizes for the acpica.lib 
9785produced 
9786by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9787any ACPI driver or OSPM code. The debug version of the code includes the 
9788debug output trace mechanism and has a much larger code and data size. 
9789Note 
9790that these values will vary depending on the efficiency of the compiler 
9791and 
9792the compiler options used during generation.
9793
9794  Previous Release:
9795    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9796    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9797  Current Release:
9798    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9799    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9800
9801
98022) iASL Compiler/Disassembler:
9803
9804Fixed a problem with the Return operator with no arguments. Since the AML 
9805grammar for the byte encoding requires an operand for the Return opcode, 
9806the 
9807compiler now emits a Return(Zero) for this case.  An ACPI specification 
9808update has been written for this case.
9809
9810For tables other than the DSDT, namepath optimization is automatically 
9811disabled. This is because SSDTs can be loaded anywhere in the namespace, 
9812the 
9813compiler has no knowledge of where, and thus cannot optimize namepaths.
9814
9815Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 
9816inadvertently omitted from the ACPI specification, and will require an 
9817update to the spec.
9818
9819The source file scan for ASCII characters is now optional (-a). This 
9820change 
9821was made because some vendors place non-ascii characters within comments. 
9822However, the scan is simply a brute-force byte compare to ensure all 
9823characters in the file are in the range 0x00 to 0x7F.
9824
9825Fixed a problem with the CondRefOf operator where the compiler was 
9826inappropriately checking for the existence of the target. Since the point 
9827of 
9828the operator is to check for the existence of the target at run-time, the 
9829compiler no longer checks for the target existence.
9830
9831Fixed a problem where errors generated from the internal AML interpreter 
9832during constant folding were not handled properly, causing a fault.
9833
9834Fixed a problem with overly aggressive range checking for the Stall 
9835operator. The valid range (max 255) is now only checked if the operand is 
9836of 
9837type Integer. All other operand types cannot be statically checked.
9838
9839Fixed a problem where control method references within the RefOf, 
9840DeRefOf, 
9841and ObjectType operators were not treated properly. They are now treated 
9842as 
9843actual references, not method invocations.
9844
9845Fixed and enhanced the "list namespace" option (-ln). This option was 
9846broken 
9847a number of releases ago.
9848
9849Improved error handling for the Field, IndexField, and BankField 
9850operators. 
9851The compiler now cleanly reports and recovers from errors in the field 
9852component (FieldUnit) list.
9853
9854Fixed a disassembler problem where the optional ResourceDescriptor fields 
9855TRS and TTP were not always handled correctly.
9856
9857Disassembler - Comments in output now use "//" instead of "/*"
9858
9859----------------------------------------
986028 February 2005.  Summary of changes for version 20050228:
9861
98621) ACPI CA Core Subsystem:
9863
9864Fixed a problem where the result of an Index() operator (an object 
9865reference) must increment the reference count on the target object for 
9866the 
9867life of the object reference.
9868
9869Implemented AML Interpreter and Debugger support for the new ACPI 3.0 
9870Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 
9871WordSpace 
9872resource descriptors.
9873
9874Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 
9875Space Descriptor" string, indicating interpreter support for the 
9876descriptors 
9877above.
9878
9879Implemented header support for the new ACPI 3.0 FADT flag bits.
9880
9881Implemented header support for the new ACPI 3.0 PCI Express bits for the 
9882PM1 
9883status/enable registers.
9884
9885Updated header support for the MADT processor local Apic struct and MADT 
9886platform interrupt source struct for new ACPI 3.0 fields.
9887
9888Implemented header support for the SRAT and SLIT ACPI tables.
9889
9890Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 
9891flag 
9892at runtime.
9893
9894Code and Data Size: Current and previous core subsystem library sizes are 
9895shown below. These are the code and data sizes for the acpica.lib 
9896produced 
9897by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9898any ACPI driver or OSPM code. The debug version of the code includes the 
9899debug output trace mechanism and has a much larger code and data size. 
9900Note 
9901that these values will vary depending on the efficiency of the compiler 
9902and 
9903the compiler options used during generation.
9904
9905  Previous Release:
9906    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9907    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9908  Current Release:
9909    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9910    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9911
9912
99132) iASL Compiler/Disassembler:
9914
9915Fixed a problem with the internal 64-bit String-to-integer conversion 
9916with 
9917strings less than two characters long.
9918
9919Fixed a problem with constant folding where the result of the Index() 
9920operator can not be considered a constant. This means that Index() cannot 
9921be 
9922a type3 opcode and this will require an update to the ACPI specification.
9923
9924Disassembler: Implemented support for the TTP, MTP, and TRS resource 
9925descriptor fields. These fields were inadvertently ignored and not output 
9926in 
9927the disassembly of the resource descriptor.
9928
9929
9930 ----------------------------------------
993111 February 2005.  Summary of changes for version 20050211:
9932
99331) ACPI CA Core Subsystem:
9934
9935Implemented ACPI 3.0 support for implicit conversion within the Match() 
9936operator. MatchObjects can now be of type integer, buffer, or string 
9937instead 
9938of just type integer.  Package elements are implicitly converted to the 
9939type 
9940of the MatchObject. This change aligns the behavior of Match() with the 
9941behavior of the other logical operators (LLess(), etc.) It also requires 
9942an 
9943errata change to the ACPI specification as this support was intended for 
9944ACPI 3.0, but was inadvertently omitted.
9945
9946Fixed a problem with the internal implicit "to buffer" conversion. 
9947Strings 
9948that are converted to buffers will cause buffer truncation if the string 
9949is 
9950smaller than the target buffer. Integers that are converted to buffers 
9951will 
9952not cause buffer truncation, only zero extension (both as per the ACPI 
9953spec.) The problem was introduced when code was added to truncate the 
9954buffer, but this should not be performed in all cases, only the string 
9955case.
9956
9957Fixed a problem with the Buffer and Package operators where the 
9958interpreter 
9959would get confused if two such operators were used as operands to an ASL 
9960operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 
9961stack was not being popped after the execution of these operators, 
9962resulting 
9963in an AE_NO_RETURN_VALUE exception.
9964
9965Fixed a problem with constructs of the form Store(Index(...),...). The 
9966reference object returned from Index was inadvertently resolved to an 
9967actual 
9968value. This problem was introduced in version 20050114 when the behavior 
9969of 
9970Store() was modified to restrict the object types that can be used as the 
9971source operand (to match the ACPI specification.)
9972
9973Reduced excessive stack use within the AcpiGetObjectInfo procedure.
9974
9975Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
9976
9977Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
9978
9979Code and Data Size: Current and previous core subsystem library sizes are 
9980shown below. These are the code and data sizes for the acpica.lib 
9981produced 
9982by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
9983any ACPI driver or OSPM code. The debug version of the code includes the 
9984debug output trace mechanism and has a much larger code and data size. 
9985Note 
9986that these values will vary depending on the efficiency of the compiler 
9987and 
9988the compiler options used during generation.
9989
9990  Previous Release:
9991    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
9992    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
9993  Current Release:
9994    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9995    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9996
9997
99982) iASL Compiler/Disassembler:
9999
10000Fixed a code generation problem in the constant folding optimization code 
10001where incorrect code was generated if a constant was reduced to a buffer 
10002object (i.e., a reduced type 5 opcode.)
10003
10004Fixed a typechecking problem for the ToBuffer operator. Caused by an 
10005incorrect return type in the internal opcode information table.
10006
10007----------------------------------------
1000825 January 2005.  Summary of changes for version 20050125:
10009
100101) ACPI CA Core Subsystem:
10011
10012Fixed a recently introduced problem with the Global Lock where the 
10013underlying semaphore was not created.  This problem was introduced in 
10014version 20050114, and caused an AE_AML_NO_OPERAND exception during an 
10015Acquire() operation on _GL.
10016
10017The local object cache is now optional, and is disabled by default. Both 
10018AcpiExec and the iASL compiler enable the cache because they run in user 
10019mode and this enhances their performance. #define 
10020ACPI_ENABLE_OBJECT_CACHE 
10021to enable the local cache.
10022
10023Fixed an issue in the internal function AcpiUtEvaluateObject concerning 
10024the 
10025optional "implicit return" support where an error was returned if no 
10026return 
10027object was expected, but one was implicitly returned. AE_OK is now 
10028returned 
10029in this case and the implicitly returned object is deleted. 
10030AcpiUtEvaluateObject is only occasionally used, and only to execute 
10031reserved 
10032methods such as _STA and _INI where the return type is known up front.
10033
10034Fixed a few issues with the internal convert-to-integer code. It now 
10035returns 
10036an error if an attempt is made to convert a null string, a string of only 
10037blanks/tabs, or a zero-length buffer. This affects both implicit 
10038conversion 
10039and explicit conversion via the ToInteger() operator.
10040
10041The internal debug code in AcpiUtAcquireMutex has been commented out. It 
10042is 
10043not needed for normal operation and should increase the performance of 
10044the 
10045entire subsystem. The code remains in case it is needed for debug 
10046purposes 
10047again.
10048
10049The AcpiExec source and makefile are included in the Unix/Linux package 
10050for 
10051the first time.
10052
10053Code and Data Size: Current and previous core subsystem library sizes are 
10054shown below. These are the code and data sizes for the acpica.lib 
10055produced 
10056by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10057any ACPI driver or OSPM code. The debug version of the code includes the 
10058debug output trace mechanism and has a much larger code and data size. 
10059Note 
10060that these values will vary depending on the efficiency of the compiler 
10061and 
10062the compiler options used during generation.
10063
10064  Previous Release:
10065    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
10066    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
10067  Current Release:
10068    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
10069    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
10070
100712) iASL Compiler/Disassembler:
10072
10073Switch/Case support: A warning is now issued if the type of the Switch 
10074value 
10075cannot be determined at compile time. For example, Switch(Arg0) will 
10076generate the warning, and the type is assumed to be an integer. As per 
10077the 
10078ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 
10079the 
10080warning.
10081
10082Switch/Case support: Implemented support for buffer and string objects as 
10083the switch value.  This is an ACPI 3.0 feature, now that LEqual supports 
10084buffers and strings.
10085
10086Switch/Case support: The emitted code for the LEqual() comparisons now 
10087uses 
10088the switch value as the first operand, not the second. The case value is 
10089now 
10090the second operand, and this allows the case value to be implicitly 
10091converted to the type of the switch value, not the other way around.
10092
10093Switch/Case support: Temporary variables are now emitted immediately 
10094within 
10095the control method, not at the global level. This means that there are 
10096now 
1009736 temps available per-method, not 36 temps per-module as was the case 
10098with 
10099the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
10100
10101----------------------------------------
1010214 January 2005.  Summary of changes for version 20050114:
10103
10104Added 2005 copyright to all module headers.  This affects every module in 
10105the core subsystem, iASL compiler, and the utilities.
10106
101071) ACPI CA Core Subsystem:
10108
10109Fixed an issue with the String-to-Buffer conversion code where the string 
10110null terminator was not included in the buffer after conversion, but 
10111there 
10112is existing ASL that assumes the string null terminator is included. This 
10113is 
10114the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 
10115introduced in the previous version when the code was updated to correctly 
10116set the converted buffer size as per the ACPI specification. The ACPI 
10117spec 
10118is ambiguous and will be updated to specify that the null terminator must 
10119be 
10120included in the converted buffer. This also affects the ToBuffer() ASL 
10121operator.
10122
10123Fixed a problem with the Mid() ASL/AML operator where it did not work 
10124correctly on Buffer objects. Newly created sub-buffers were not being 
10125marked 
10126as initialized.
10127
10128
10129Fixed a problem in AcpiTbFindTable where incorrect string compares were 
10130performed on the OemId and OemTableId table header fields.  These fields 
10131are 
10132not null terminated, so strncmp is now used instead of strcmp.
10133
10134Implemented a restriction on the Store() ASL/AML operator to align the 
10135behavior with the ACPI specification.  Previously, any object could be 
10136used 
10137as the source operand.  Now, the only objects that may be used are 
10138Integers, 
10139Buffers, Strings, Packages, Object References, and DDB Handles.  If 
10140necessary, the original behavior can be restored by enabling the 
10141EnableInterpreterSlack flag.
10142
10143Enhanced the optional "implicit return" support to allow an implicit 
10144return 
10145value from methods that are invoked externally via the AcpiEvaluateObject 
10146interface.  This enables implicit returns from the _STA and _INI methods, 
10147for example.
10148
10149Changed the Revision() ASL/AML operator to return the current version of 
10150the 
10151AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 
10152returned 
10153the supported ACPI version (This is the function of the _REV method).
10154
10155Updated the _REV predefined method to return the currently supported 
10156version 
10157of ACPI, now 3.
10158
10159Implemented batch mode option for the AcpiExec utility (-b).
10160
10161Code and Data Size: Current and previous core subsystem library sizes are 
10162shown below. These are the code and data sizes for the acpica.lib 
10163produced 
10164by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10165any ACPI driver or OSPM code. The debug version of the code includes the 
10166debug output trace mechanism and has a much larger code and data size. 
10167Note 
10168that these values will vary depending on the efficiency of the compiler 
10169and 
10170the compiler options used during generation.
10171
10172  Previous Release:
10173    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10174    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
10175  Current Release:
10176    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
10177    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
10178
10179----------------------------------------
1018010 December 2004.  Summary of changes for version 20041210:
10181
10182ACPI 3.0 support is nearing completion in both the iASL compiler and the 
10183ACPI CA core subsystem.
10184
101851) ACPI CA Core Subsystem:
10186
10187Fixed a problem in the ToDecimalString operator where the resulting 
10188string 
10189length was incorrectly calculated. The length is now calculated exactly, 
10190eliminating incorrect AE_STRING_LIMIT exceptions.
10191
10192Fixed a problem in the ToHexString operator to allow a maximum 200 
10193character 
10194string to be produced.
10195
10196Fixed a problem in the internal string-to-buffer and buffer-to-buffer 
10197copy 
10198routine where the length of the resulting buffer was not truncated to the 
10199new size (if the target buffer already existed).
10200
10201Code and Data Size: Current and previous core subsystem library sizes are 
10202shown below. These are the code and data sizes for the acpica.lib 
10203produced 
10204by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10205any ACPI driver or OSPM code. The debug version of the code includes the 
10206debug output trace mechanism and has a much larger code and data size. 
10207Note 
10208that these values will vary depending on the efficiency of the compiler 
10209and 
10210the compiler options used during generation.
10211
10212  Previous Release:
10213    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10214    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
10215  Current Release:
10216    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10217    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
10218
10219
102202) iASL Compiler/Disassembler:
10221
10222Implemented the new ACPI 3.0 resource template macros - DWordSpace, 
10223ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 
10224Includes support in the disassembler.
10225
10226Implemented support for the new (ACPI 3.0) parameter to the Register 
10227macro, 
10228AccessSize.
10229
10230Fixed a problem where the _HE resource name for the Interrupt macro was 
10231referencing bit 0 instead of bit 1.
10232
10233Implemented check for maximum 255 interrupts in the Interrupt macro.
10234
10235Fixed a problem with the predefined resource descriptor names where 
10236incorrect AML code was generated if the offset within the resource buffer 
10237was 0 or 1.  The optimizer shortened the AML code to a single byte opcode 
10238but did not update the surrounding package lengths.
10239
10240Changes to the Dma macro:  All channels within the channel list must be 
10241in 
10242the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is 
10243optional (default is BusMaster).
10244
10245Implemented check for maximum 7 data bytes for the VendorShort macro.
10246
10247The ReadWrite parameter is now optional for the Memory32 and similar 
10248macros.
10249
10250----------------------------------------
1025103 December 2004.  Summary of changes for version 20041203:
10252
102531) ACPI CA Core Subsystem:
10254
10255The low-level field insertion/extraction code (exfldio) has been 
10256completely 
10257rewritten to eliminate unnecessary complexity, bugs, and boundary 
10258conditions.
10259
10260Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 
10261ToDecimalString 
10262operators where the input operand could be inadvertently deleted if no 
10263conversion was necessary (e.g., if the input to ToInteger was an Integer 
10264object.)
10265
10266Fixed a problem with the ToDecimalString and ToHexString where an 
10267incorrect 
10268exception code was returned if the resulting string would be > 200 chars.  
10269AE_STRING_LIMIT is now returned.
10270
10271Fixed a problem with the Concatenate operator where AE_OK was always 
10272returned, even if the operation failed.
10273
10274Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 
10275semaphores to be allocated.
10276
10277Code and Data Size: Current and previous core subsystem library sizes are 
10278shown below. These are the code and data sizes for the acpica.lib 
10279produced 
10280by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10281any ACPI driver or OSPM code. The debug version of the code includes the 
10282debug output trace mechanism and has a much larger code and data size. 
10283Note 
10284that these values will vary depending on the efficiency of the compiler 
10285and 
10286the compiler options used during generation.
10287
10288  Previous Release:
10289    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10290    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10291  Current Release:
10292    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10293    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
10294
10295
102962) iASL Compiler/Disassembler:
10297
10298Fixed typechecking for the ObjectType and SizeOf operators.  Problem was 
10299recently introduced in 20041119.
10300
10301Fixed a problem with the ToUUID macro where the upper nybble of each 
10302buffer 
10303byte was inadvertently set to zero.
10304
10305----------------------------------------
1030619 November 2004.  Summary of changes for version 20041119:
10307
103081) ACPI CA Core Subsystem:
10309
10310Fixed a problem in the internal ConvertToInteger routine where new 
10311integers 
10312were not truncated to 32 bits for 32-bit ACPI tables. This routine 
10313converts 
10314buffers and strings to integers.
10315
10316Implemented support to store a value to an Index() on a String object. 
10317This 
10318is an ACPI 2.0 feature that had not yet been implemented.
10319
10320Implemented new behavior for storing objects to individual package 
10321elements 
10322(via the Index() operator). The previous behavior was to invoke the 
10323implicit 
10324conversion rules if an object was already present at the index.  The new 
10325behavior is to simply delete any existing object and directly store the 
10326new 
10327object. Although the ACPI specification seems unclear on this subject, 
10328other 
10329ACPI implementations behave in this manner.  (This is the root of the 
10330AE_BAD_HEX_CONSTANT issue.)
10331
10332Modified the RSDP memory scan mechanism to support the extended checksum 
10333for 
10334ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 
10335RSDP signature is found with a valid checksum.
10336
10337Code and Data Size: Current and previous core subsystem library sizes are 
10338shown below. These are the code and data sizes for the acpica.lib 
10339produced 
10340by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10341any ACPI driver or OSPM code. The debug version of the code includes the 
10342debug output trace mechanism and has a much larger code and data size. 
10343Note 
10344that these values will vary depending on the efficiency of the compiler 
10345and 
10346the compiler options used during generation.
10347
10348  Previous Release:
10349    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10350    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10351  Current Release:
10352    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10353    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10354
10355
103562) iASL Compiler/Disassembler:
10357
10358Fixed a missing semicolon in the aslcompiler.y file.
10359
10360----------------------------------------
1036105 November 2004.  Summary of changes for version 20041105:
10362
103631) ACPI CA Core Subsystem:
10364
10365Implemented support for FADT revision 2.  This was an interim table 
10366(between 
10367ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
10368
10369Implemented optional support to allow uninitialized LocalX and ArgX 
10370variables in a control method.  The variables are initialized to an 
10371Integer 
10372object with a value of zero.  This support is enabled by setting the 
10373AcpiGbl_EnableInterpreterSlack flag to TRUE.
10374
10375Implemented support for Integer objects for the SizeOf operator.  Either 
103764 
10377or 8 is returned, depending on the current integer size (32-bit or 64-
10378bit, 
10379depending on the parent table revision).
10380
10381Fixed a problem in the implementation of the SizeOf and ObjectType 
10382operators 
10383where the operand was resolved to a value too early, causing incorrect 
10384return values for some objects.
10385
10386Fixed some possible memory leaks during exceptional conditions.
10387
10388Code and Data Size: Current and previous core subsystem library sizes are 
10389shown below. These are the code and data sizes for the acpica.lib 
10390produced 
10391by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10392any ACPI driver or OSPM code. The debug version of the code includes the 
10393debug output trace mechanism and has a much larger code and data size. 
10394Note 
10395that these values will vary depending on the efficiency of the compiler 
10396and 
10397the compiler options used during generation.
10398
10399  Previous Release:
10400    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10401    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10402  Current Release:
10403    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10404    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10405
10406
104072) iASL Compiler/Disassembler:
10408
10409Implemented support for all ACPI 3.0 reserved names and methods.
10410
10411Implemented all ACPI 3.0 grammar elements in the front-end, including 
10412support for semicolons.
10413
10414Implemented the ACPI 3.0 Function() and ToUUID() macros
10415
10416Fixed a problem in the disassembler where a Scope() operator would not be 
10417emitted properly if the target of the scope was in another table.
10418
10419----------------------------------------
1042015 October 2004.  Summary of changes for version 20041015:
10421
10422Note:  ACPI CA is currently undergoing an in-depth and complete formal 
10423evaluation to test/verify the following areas. Other suggestions are 
10424welcome. This will result in an increase in the frequency of releases and 
10425the number of bug fixes in the next few months.
10426  - Functional tests for all ASL/AML operators
10427  - All implicit/explicit type conversions
10428  - Bit fields and operation regions
10429  - 64-bit math support and 32-bit-only "truncated" math support
10430  - Exceptional conditions, both compiler and interpreter
10431  - Dynamic object deletion and memory leaks
10432  - ACPI 3.0 support when implemented
10433  - External interfaces to the ACPI subsystem
10434
10435
104361) ACPI CA Core Subsystem:
10437
10438Fixed two alignment issues on 64-bit platforms - within debug statements 
10439in 
10440AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 
10441Address 
10442field within the non-aligned ACPI generic address structure.
10443
10444Fixed a problem in the Increment and Decrement operators where incorrect 
10445operand resolution could result in the inadvertent modification of the 
10446original integer when the integer is passed into another method as an 
10447argument and the arg is then incremented/decremented.
10448
10449Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
10450bit 
10451BCD number were truncated during conversion.
10452
10453Fixed a problem in the ToDecimal operator where the length of the 
10454resulting 
10455string could be set incorrectly too long if the input operand was a 
10456Buffer 
10457object.
10458
10459Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 
10460(0) 
10461within a buffer would prematurely terminate a compare between buffer 
10462objects.
10463
10464Added a check for string overflow (>200 characters as per the ACPI 
10465specification) during the Concatenate operator with two string operands.
10466
10467Code and Data Size: Current and previous core subsystem library sizes are 
10468shown below. These are the code and data sizes for the acpica.lib 
10469produced 
10470by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10471any ACPI driver or OSPM code. The debug version of the code includes the 
10472debug output trace mechanism and has a much larger code and data size. 
10473Note 
10474that these values will vary depending on the efficiency of the compiler 
10475and 
10476the compiler options used during generation.
10477
10478  Previous Release:
10479    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10480    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10481  Current Release:
10482    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10483    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10484
10485
10486
104872) iASL Compiler/Disassembler:
10488
10489Allow the use of the ObjectType operator on uninitialized Locals and Args 
10490(returns 0 as per the ACPI specification).
10491
10492Fixed a problem where the compiler would fault if there was a syntax 
10493error 
10494in the FieldName of all of the various CreateXXXField operators.
10495
10496Disallow the use of lower case letters within the EISAID macro, as per 
10497the 
10498ACPI specification.  All EISAID strings must be of the form "UUUNNNN" 
10499Where 
10500U is an uppercase letter and N is a hex digit.
10501
10502
10503----------------------------------------
1050406 October 2004.  Summary of changes for version 20041006:
10505
105061) ACPI CA Core Subsystem:
10507
10508Implemented support for the ACPI 3.0 Timer operator. This ASL function 
10509implements a 64-bit timer with 100 nanosecond granularity.
10510
10511Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 
10512implement the ACPI 3.0 Timer operator.  This allows the host OS to 
10513implement 
10514the timer with the best clock available. Also, it keeps the core 
10515subsystem 
10516out of the clock handling business, since the host OS (usually) performs 
10517this function.
10518
10519Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 
10520functions use a 64-bit address which is part of the packed ACPI Generic 
10521Address Structure. Since the structure is non-aligned, the alignment 
10522macros 
10523are now used to extract the address to a local variable before use.
10524
10525Fixed a problem where the ToInteger operator assumed all input strings 
10526were 
10527hexadecimal. The operator now handles both decimal strings and hex 
10528strings 
10529(prefixed with "0x").
10530
10531Fixed a problem where the string length in the string object created as a 
10532result of the internal ConvertToString procedure could be incorrect. This 
10533potentially affected all implicit conversions and also the 
10534ToDecimalString 
10535and ToHexString operators.
10536
10537Fixed two problems in the ToString operator. If the length parameter was 
10538zero, an incorrect string object was created and the value of the input 
10539length parameter was inadvertently changed from zero to Ones.
10540
10541Fixed a problem where the optional ResourceSource string in the 
10542ExtendedIRQ 
10543resource macro was ignored.
10544
10545Simplified the interfaces to the internal division functions, reducing 
10546code 
10547size and complexity.
10548
10549Code and Data Size: Current and previous core subsystem library sizes are 
10550shown below. These are the code and data sizes for the acpica.lib 
10551produced 
10552by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10553any ACPI driver or OSPM code. The debug version of the code includes the 
10554debug output trace mechanism and has a much larger code and data size. 
10555Note 
10556that these values will vary depending on the efficiency of the compiler 
10557and 
10558the compiler options used during generation.
10559
10560  Previous Release:
10561    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10562    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10563  Current Release:
10564    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10565    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10566
10567
105682) iASL Compiler/Disassembler:
10569
10570Implemented support for the ACPI 3.0 Timer operator.
10571
10572Fixed a problem where the Default() operator was inadvertently ignored in 
10573a 
10574Switch/Case block.  This was a problem in the translation of the Switch 
10575statement to If...Else pairs.
10576
10577Added support to allow a standalone Return operator, with no parentheses 
10578(or 
10579operands).
10580
10581Fixed a problem with code generation for the ElseIf operator where the 
10582translated Else...If parse tree was improperly constructed leading to the 
10583loss of some code.
10584
10585----------------------------------------
1058622 September 2004.  Summary of changes for version 20040922:
10587
105881) ACPI CA Core Subsystem:
10589
10590Fixed a problem with the implementation of the LNot() operator where 
10591"Ones" 
10592was not returned for the TRUE case. Changed the code to return Ones 
10593instead 
10594of (!Arg) which was usually 1. This change affects iASL constant folding 
10595for 
10596this operator also.
10597
10598Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 
10599not 
10600initialized properly -- Now zero the entire buffer in this case where the 
10601buffer already exists.
10602
10603Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 
10604Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 
10605related code considerably. This will require changes/updates to all OS 
10606interface layers (OSLs.)
10607
10608Implemented a new external interface, AcpiInstallExceptionHandler, to 
10609allow 
10610a system exception handler to be installed. This handler is invoked upon 
10611any 
10612run-time exception that occurs during control method execution.
10613
10614Added support for the DSDT in AcpiTbFindTable. This allows the 
10615DataTableRegion() operator to access the local copy of the DSDT.
10616
10617Code and Data Size: Current and previous core subsystem library sizes are 
10618shown below. These are the code and data sizes for the acpica.lib 
10619produced 
10620by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10621any ACPI driver or OSPM code. The debug version of the code includes the 
10622debug output trace mechanism and has a much larger code and data size. 
10623Note 
10624that these values will vary depending on the efficiency of the compiler 
10625and 
10626the compiler options used during generation.
10627
10628  Previous Release:
10629    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10630    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10631  Current Release:
10632    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10633    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10634
10635
106362) iASL Compiler/Disassembler:
10637
10638Fixed a problem with constant folding and the LNot operator. LNot was 
10639returning 1 in the TRUE case, not Ones as per the ACPI specification. 
10640This 
10641could result in the generation of an incorrect folded/reduced constant.
10642
10643End-Of-File is now allowed within a "//"-style comment.  A parse error no 
10644longer occurs if such a comment is at the very end of the input ASL 
10645source 
10646file.
10647
10648Implemented the "-r" option to override the Revision in the table header. 
10649The initial use of this option will be to simplify the evaluation of the 
10650AML 
10651interpreter by allowing a single ASL source module to be compiled for 
10652either 
1065332-bit or 64-bit integers.
10654
10655
10656----------------------------------------
1065727 August 2004.  Summary of changes for version 20040827:
10658
106591) ACPI CA Core Subsystem:
10660
10661- Implemented support for implicit object conversion in the non-numeric 
10662logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 
10663and 
10664LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used; 
10665the second operand is implicitly converted on the fly to match the type 
10666of 
10667the first operand.  For example:
10668
10669    LEqual (Source1, Source2)
10670
10671Source1 and Source2 must each evaluate to an integer, a string, or a 
10672buffer. 
10673The data type of Source1 dictates the required type of Source2. Source2 
10674is 
10675implicitly converted if necessary to match the type of Source1.
10676
10677- Updated and corrected the behavior of the string conversion support.  
10678The 
10679rules concerning conversion of buffers to strings (according to the ACPI 
10680specification) are as follows:
10681
10682ToDecimalString - explicit byte-wise conversion of buffer to string of 
10683decimal values (0-255) separated by commas. ToHexString - explicit byte-
10684wise 
10685conversion of buffer to string of hex values (0-FF) separated by commas. 
10686ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
10687byte 
10688copy with no transform except NULL terminated. Any other implicit buffer-
10689to-
10690string conversion - byte-wise conversion of buffer to string of hex 
10691values 
10692(0-FF) separated by spaces.
10693
10694- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
10695
10696- Fixed a problem in AcpiNsGetPathnameLength where the returned length 
10697was 
10698one byte too short in the case of a node in the root scope.  This could 
10699cause a fault during debug output.
10700
10701- Code and Data Size: Current and previous core subsystem library sizes 
10702are 
10703shown below.  These are the code and data sizes for the acpica.lib 
10704produced 
10705by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10706any ACPI driver or OSPM code.  The debug version of the code includes the 
10707debug output trace mechanism and has a much larger code and data size.  
10708Note 
10709that these values will vary depending on the efficiency of the compiler 
10710and 
10711the compiler options used during generation.
10712
10713  Previous Release:
10714    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10715    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10716  Current Release:
10717    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10718    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10719
10720
107212) iASL Compiler/Disassembler:
10722
10723- Fixed a Linux generation error.
10724
10725
10726----------------------------------------
1072716 August 2004.  Summary of changes for version 20040816:
10728
107291) ACPI CA Core Subsystem:
10730
10731Designed and implemented support within the AML interpreter for the so-
10732called "implicit return".  This support returns the result of the last 
10733ASL 
10734operation within a control method, in the absence of an explicit Return() 
10735operator.  A few machines depend on this behavior, even though it is not 
10736explicitly supported by the ASL language.  It is optional support that 
10737can 
10738be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
10739
10740Removed support for the PCI_Config address space from the internal low 
10741level 
10742hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This 
10743support was not used internally, and would not work correctly anyway 
10744because 
10745the PCI bus number and segment number were not supported.  There are 
10746separate interfaces for PCI configuration space access because of the 
10747unique 
10748interface.
10749
10750Code and Data Size: Current and previous core subsystem library sizes are 
10751shown below.  These are the code and data sizes for the acpica.lib 
10752produced 
10753by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10754any ACPI driver or OSPM code.  The debug version of the code includes the 
10755debug output trace mechanism and has a much larger code and data size.  
10756Note 
10757that these values will vary depending on the efficiency of the compiler 
10758and 
10759the compiler options used during generation.
10760
10761  Previous Release:
10762    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10763    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10764  Current Release:
10765    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10766    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10767
10768
107692) iASL Compiler/Disassembler:
10770
10771Fixed a problem where constants in ASL expressions at the root level (not 
10772within a control method) could be inadvertently truncated during code 
10773generation.  This problem was introduced in the 20040715 release.
10774
10775
10776----------------------------------------
1077715 July 2004.  Summary of changes for version 20040715:
10778
107791) ACPI CA Core Subsystem:
10780
10781Restructured the internal HW GPE interfaces to pass/track the current 
10782state 
10783of interrupts (enabled/disabled) in order to avoid possible deadlock and 
10784increase flexibility of the interfaces.
10785
10786Implemented a "lexicographical compare" for String and Buffer objects 
10787within 
10788the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
10789- 
10790as per further clarification to the ACPI specification.  Behavior is 
10791similar 
10792to C library "strcmp".
10793
10794Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 
10795external function.  In the 32-bit non-debug case, the stack use has been 
10796reduced from 168 bytes to 32 bytes.
10797
10798Deployed a new run-time configuration flag, 
10799AcpiGbl_EnableInterpreterSlack, 
10800whose purpose is to allow the AML interpreter to forgive certain bad AML 
10801constructs.  Default setting is FALSE.
10802
10803Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 
10804IO 
10805support code.  If enabled, it allows field access to go beyond the end of 
10806a 
10807region definition if the field is within the region length rounded up to 
10808the 
10809next access width boundary (a common coding error.)
10810
10811Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 
10812ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, 
10813these 
10814symbols are lowercased by the latest version of the AcpiSrc tool.
10815
10816The prototypes for the PCI interfaces in acpiosxf.h have been updated to 
10817rename "Register" to simply "Reg" to prevent certain compilers from 
10818complaining.
10819
10820Code and Data Size: Current and previous core subsystem library sizes are 
10821shown below.  These are the code and data sizes for the acpica.lib 
10822produced 
10823by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10824any ACPI driver or OSPM code.  The debug version of the code includes the 
10825debug output trace mechanism and has a much larger code and data size.  
10826Note 
10827that these values will vary depending on the efficiency of the compiler 
10828and 
10829the compiler options used during generation.
10830
10831  Previous Release:
10832    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10833    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10834  Current Release:
10835    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10836    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10837
10838
108392) iASL Compiler/Disassembler:
10840
10841Implemented full support for Package objects within the Case() operator.  
10842Note: The Break() operator is currently not supported within Case blocks 
10843(TermLists) as there is some question about backward compatibility with 
10844ACPI 
108451.0 interpreters.
10846
10847
10848Fixed a problem where complex terms were not supported properly within 
10849the 
10850Switch() operator.
10851
10852Eliminated extraneous warning for compiler-emitted reserved names of the 
10853form "_T_x".  (Used in Switch/Case operators.)
10854
10855Eliminated optimization messages for "_T_x" objects and small constants 
10856within the DefinitionBlock operator.
10857
10858
10859----------------------------------------
1086015 June 2004.  Summary of changes for version 20040615:
10861
108621) ACPI CA Core Subsystem:
10863
10864Implemented support for Buffer and String objects (as per ACPI 2.0) for 
10865the 
10866following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
10867LLessEqual.
10868
10869All directory names in the entire source package are lower case, as they 
10870were in earlier releases.
10871
10872Implemented "Disassemble" command in the AML debugger that will 
10873disassemble 
10874a single control method.
10875
10876Code and Data Size: Current and previous core subsystem library sizes are 
10877shown below.  These are the code and data sizes for the acpica.lib 
10878produced 
10879by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10880any ACPI driver or OSPM code.  The debug version of the code includes the 
10881debug output trace mechanism and has a much larger code and data size.  
10882Note 
10883that these values will vary depending on the efficiency of the compiler 
10884and 
10885the compiler options used during generation.
10886
10887  Previous Release:
10888    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10889    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10890
10891  Current Release:
10892    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10893    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10894
10895
108962) iASL Compiler/Disassembler:
10897
10898Implemented support for Buffer and String objects (as per ACPI 2.0) for 
10899the 
10900following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and 
10901LLessEqual.
10902
10903All directory names in the entire source package are lower case, as they 
10904were in earlier releases.
10905
10906Fixed a fault when using the -g or -d<nofilename> options if the FADT was 
10907not found.
10908
10909Fixed an issue with the Windows version of the compiler where later 
10910versions 
10911of Windows place the FADT in the registry under the name "FADT" and not 
10912"FACP" as earlier versions did.  This applies when using the -g or -
10913d<nofilename> options.  The compiler now looks for both strings as 
10914necessary.
10915
10916Fixed a problem with compiler namepath optimization where a namepath 
10917within 
10918the Scope() operator could not be optimized if the namepath was a subpath 
10919of 
10920the current scope path.
10921
10922----------------------------------------
1092327 May 2004.  Summary of changes for version 20040527:
10924
109251) ACPI CA Core Subsystem:
10926
10927Completed a new design and implementation for EBDA (Extended BIOS Data 
10928Area) 
10929support in the RSDP scan code.  The original code improperly scanned for 
10930the 
10931EBDA by simply scanning from memory location 0 to 0x400.  The correct 
10932method 
10933is to first obtain the EBDA pointer from within the BIOS data area, then 
10934scan 1K of memory starting at the EBDA pointer.  There appear to be few 
10935if 
10936any machines that place the RSDP in the EBDA, however.
10937
10938Integrated a fix for a possible fault during evaluation of BufferField 
10939arguments.  Obsolete code that was causing the problem was removed.
10940
10941Found and fixed a problem in the Field Support Code where data could be 
10942corrupted on a bit field read that starts on an aligned boundary but does 
10943not end on an aligned boundary.  Merged the read/write "datum length" 
10944calculation code into a common procedure.
10945
10946Rolled in a couple of changes to the FreeBSD-specific header.
10947
10948
10949Code and Data Size: Current and previous core subsystem library sizes are 
10950shown below.  These are the code and data sizes for the acpica.lib 
10951produced 
10952by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
10953any ACPI driver or OSPM code.  The debug version of the code includes the 
10954debug output trace mechanism and has a much larger code and data size.  
10955Note 
10956that these values will vary depending on the efficiency of the compiler 
10957and 
10958the compiler options used during generation.
10959
10960  Previous Release:
10961    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10962    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
10963  Current Release:
10964    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10965    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10966
10967
109682) iASL Compiler/Disassembler:
10969
10970Fixed a generation warning produced by some overly-verbose compilers for 
10971a 
1097264-bit constant.
10973
10974----------------------------------------
1097514 May 2004.  Summary of changes for version 20040514:
10976
109771) ACPI CA Core Subsystem:
10978
10979Fixed a problem where hardware GPE enable bits sometimes not set properly 
10980during and after GPE method execution.  Result of 04/27 changes.
10981
10982Removed extra "clear all GPEs" when sleeping/waking.
10983
10984Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 
10985AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 
10986to 
10987the new AcpiEv* calls as appropriate.
10988
10989ACPI_OS_NAME was removed from the OS-specific headers.  The default name 
10990is 
10991now "Microsoft Windows NT" for maximum compatibility.  However this can 
10992be 
10993changed by modifying the acconfig.h file.
10994
10995Allow a single invocation of AcpiInstallNotifyHandler for a handler that 
10996traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag. 
10997
10998Run _INI methods on ThermalZone objects.  This is against the ACPI 
10999specification, but there is apparently ASL code in the field that has 
11000these 
11001_INI methods, and apparently "other" AML interpreters execute them.
11002
11003Performed a full 16/32/64 bit lint that resulted in some small changes.
11004
11005Added a sleep simulation command to the AML debugger to test sleep code. 
11006
11007Code and Data Size: Current and previous core subsystem library sizes are 
11008shown below.  These are the code and data sizes for the acpica.lib 
11009produced 
11010by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11011any ACPI driver or OSPM code.  The debug version of the code includes the 
11012debug output trace mechanism and has a much larger code and data size.  
11013Note 
11014that these values will vary depending on the efficiency of the compiler 
11015and 
11016the compiler options used during generation.
11017
11018  Previous Release:
11019    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11020    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
11021  Current Release:
11022    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11023    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
11024
11025----------------------------------------
1102627 April 2004.  Summary of changes for version 20040427:
11027
110281) ACPI CA Core Subsystem:
11029
11030Completed a major overhaul of the GPE handling within ACPI CA.  There are 
11031now three types of GPEs:  wake-only, runtime-only, and combination 
11032wake/run.  
11033The only GPEs allowed to be combination wake/run are for button-style 
11034devices such as a control-method power button, control-method sleep 
11035button, 
11036or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are 
11037not 
11038referenced by any _PRW methods are marked for "runtime" and hardware 
11039enabled.  Any GPE that is referenced by a _PRW method is marked for 
11040"wake" 
11041(and disabled at runtime).  However, at sleep time, only those GPEs that 
11042have been specifically enabled for wake via the AcpiEnableGpe interface 
11043will 
11044actually be hardware enabled.
11045
11046A new external interface has been added, AcpiSetGpeType(), that is meant 
11047to 
11048be used by device drivers to force a GPE to a particular type.  It will 
11049be 
11050especially useful for the drivers for the button devices mentioned above.
11051
11052Completed restructuring of the ACPI CA initialization sequence so that 
11053default operation region handlers are installed before GPEs are 
11054initialized 
11055and the _PRW methods are executed.  This will prevent errors when the 
11056_PRW 
11057methods attempt to access system memory or I/O space.
11058
11059GPE enable/disable no longer reads the GPE enable register.  We now keep 
11060the 
11061enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We 
11062thus no longer depend on the hardware to maintain these bits.
11063
11064Always clear the wake status and fixed/GPE status bits before sleep, even 
11065for state S5.
11066
11067Improved the AML debugger output for displaying the GPE blocks and their 
11068current status.
11069
11070Added new strings for the _OSI method, of the form "Windows 2001 SPx" 
11071where 
11072x = 0,1,2,3,4.
11073
11074Fixed a problem where the physical address was incorrectly calculated 
11075when 
11076the Load() operator was used to directly load from an Operation Region 
11077(vs. 
11078loading from a Field object.)  Also added check for minimum table length 
11079for 
11080this case.
11081
11082Fix for multiple mutex acquisition.  Restore original thread SyncLevel on 
11083mutex release.
11084
11085Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 
11086consistency with the other fields returned.
11087
11088Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such 
11089structure for each GPE in the system, so the size of this structure is 
11090important.
11091
11092CPU stack requirement reduction:  Cleaned up the method execution and 
11093object 
11094evaluation paths so that now a parameter structure is passed, instead of 
11095copying the various method parameters over and over again.
11096
11097In evregion.c:  Correctly exit and reenter the interpreter region if and 
11098only if dispatching an operation region request to a user-installed 
11099handler.  
11100Do not exit/reenter when dispatching to a default handler (e.g., default 
11101system memory or I/O handlers)
11102
11103
11104Notes for updating drivers for the new GPE support.  The following 
11105changes 
11106must be made to ACPI-related device drivers that are attached to one or 
11107more 
11108GPEs: (This information will be added to the ACPI CA Programmer 
11109Reference.)
11110
111111) AcpiInstallGpeHandler no longer automatically enables the GPE, you 
11112must 
11113explicitly call AcpiEnableGpe.
111142) There is a new interface called AcpiSetGpeType. This should be called 
11115before enabling the GPE.  Also, this interface will automatically disable 
11116the GPE if it is currently enabled.
111173) AcpiEnableGpe no longer supports a GPE type flag.
11118
11119Specific drivers that must be changed:
111201) EC driver:
11121    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 
11122AeGpeHandler, NULL);
11123    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
11124    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
11125
111262) Button Drivers (Power, Lid, Sleep):
11127Run _PRW method under parent device
11128If _PRW exists: /* This is a control-method button */
11129    Extract GPE number and possibly GpeDevice
11130    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
11131    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
11132
11133For all other devices that have _PRWs, we automatically set the GPE type 
11134to 
11135ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  
11136This 
11137must be done on a selective basis, usually requiring some kind of user 
11138app 
11139to allow the user to pick the wake devices.
11140
11141
11142Code and Data Size: Current and previous core subsystem library sizes are 
11143shown below.  These are the code and data sizes for the acpica.lib 
11144produced 
11145by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11146any ACPI driver or OSPM code.  The debug version of the code includes the 
11147debug output trace mechanism and has a much larger code and data size.  
11148Note 
11149that these values will vary depending on the efficiency of the compiler 
11150and 
11151the compiler options used during generation.
11152
11153  Previous Release:
11154    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
11155    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
11156  Current Release:
11157
11158    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11159    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
11160
11161
11162
11163----------------------------------------
1116402 April 2004.  Summary of changes for version 20040402:
11165
111661) ACPI CA Core Subsystem:
11167
11168Fixed an interpreter problem where an indirect store through an ArgX 
11169parameter was incorrectly applying the "implicit conversion rules" during 
11170the store.  From the ACPI specification: "If the target is a method local 
11171or 
11172argument (LocalX or ArgX), no conversion is performed and the result is 
11173stored directly to the target".  The new behavior is to disable implicit 
11174conversion during ALL stores to an ArgX.
11175
11176Changed the behavior of the _PRW method scan to ignore any and all errors 
11177returned by a given _PRW.  This prevents the scan from aborting from the 
11178failure of any single _PRW.
11179
11180Moved the runtime configuration parameters from the global init procedure 
11181to 
11182static variables in acglobal.h.  This will allow the host to override the 
11183default values easily.
11184
11185Code and Data Size: Current and previous core subsystem library sizes are 
11186shown below.  These are the code and data sizes for the acpica.lib 
11187produced 
11188by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11189any ACPI driver or OSPM code.  The debug version of the code includes the 
11190debug output trace mechanism and has a much larger code and data size.  
11191Note 
11192that these values will vary depending on the efficiency of the compiler 
11193and 
11194the compiler options used during generation.
11195
11196  Previous Release:
11197    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
11198    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
11199  Current Release:
11200    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
11201    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
11202
11203
112042) iASL Compiler/Disassembler:
11205
11206iASL now fully disassembles SSDTs.  However, External() statements are 
11207not 
11208generated automatically for unresolved symbols at this time.  This is a 
11209planned feature for future implementation.
11210
11211Fixed a scoping problem in the disassembler that occurs when the type of 
11212the 
11213target of a Scope() operator is overridden.  This problem caused an 
11214incorrectly nested internal namespace to be constructed.
11215
11216Any warnings or errors that are emitted during disassembly are now 
11217commented 
11218out automatically so that the resulting file can be recompiled without 
11219any 
11220hand editing.
11221
11222----------------------------------------
1122326 March 2004.  Summary of changes for version 20040326:
11224
112251) ACPI CA Core Subsystem:
11226
11227Implemented support for "wake" GPEs via interaction between GPEs and the 
11228_PRW methods.  Every GPE that is pointed to by one or more _PRWs is 
11229identified as a WAKE GPE and by default will no longer be enabled at 
11230runtime.  Previously, we were blindly enabling all GPEs with a 
11231corresponding 
11232_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  
11233We 
11234believe this has been the cause of thousands of "spurious" GPEs on some 
11235systems.
11236
11237This new GPE behavior is can be reverted to the original behavior (enable 
11238ALL GPEs at runtime) via a runtime flag.
11239
11240Fixed a problem where aliased control methods could not access objects 
11241properly.  The proper scope within the namespace was not initialized 
11242(transferred to the target of the aliased method) before executing the 
11243target method.
11244
11245Fixed a potential race condition on internal object deletion on the 
11246return 
11247object in AcpiEvaluateObject. 
11248
11249Integrated a fix for resource descriptors where both _MEM and _MTP were 
11250being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too 
11251wide, 0x0F instead of 0x03.)
11252
11253Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 
11254preventing 
11255a 
11256fault in some cases.
11257
11258Updated Notify() values for debug statements in evmisc.c
11259
11260Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
11261
11262Code and Data Size: Current and previous core subsystem library sizes are 
11263shown below.  These are the code and data sizes for the acpica.lib 
11264produced 
11265by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11266any ACPI driver or OSPM code.  The debug version of the code includes the 
11267debug output trace mechanism and has a much larger code and data size.  
11268Note 
11269that these values will vary depending on the efficiency of the compiler 
11270and 
11271the compiler options used during generation.
11272
11273  Previous Release:
11274
11275    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11276    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11277  Current Release:
11278    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
11279    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
11280
11281----------------------------------------
1128211 March 2004.  Summary of changes for version 20040311:
11283
112841) ACPI CA Core Subsystem:
11285
11286Fixed a problem where errors occurring during the parse phase of control 
11287method execution did not abort cleanly.  For example, objects created and 
11288installed in the namespace were not deleted.  This caused all subsequent 
11289invocations of the method to return the AE_ALREADY_EXISTS exception.
11290
11291Implemented a mechanism to force a control method to "Serialized" 
11292execution 
11293if the method attempts to create namespace objects. (The root of the 
11294AE_ALREADY_EXISTS problem.)
11295
11296Implemented support for the predefined _OSI "internal" control method.  
11297Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 
11298and 
11299"Windows 2001.1", and can be easily upgraded for new strings as 
11300necessary.  
11301This feature will allow "other" operating systems to execute the fully 
11302tested, "Windows" code path through the ASL code
11303
11304Global Lock Support:  Now allows multiple acquires and releases with any 
11305internal thread.  Removed concept of "owning thread" for this special 
11306mutex.
11307
11308Fixed two functions that were inappropriately declaring large objects on 
11309the 
11310CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage 
11311during 
11312method execution considerably.
11313
11314Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 
11315S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
11316
11317Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 
11318defined on the machine.
11319
11320Implemented two runtime options:  One to force all control method 
11321execution 
11322to "Serialized" to mimic Windows behavior, another to disable _OSI 
11323support 
11324if it causes problems on a given machine.
11325
11326Code and Data Size: Current and previous core subsystem library sizes are 
11327shown below.  These are the code and data sizes for the acpica.lib 
11328produced 
11329by the Microsoft Visual C++ 6.0 compiler, and these values do not include 
11330any ACPI driver or OSPM code.  The debug version of the code includes the 
11331debug output trace mechanism and has a much larger code and data size.  
11332Note 
11333that these values will vary depending on the efficiency of the compiler 
11334and 
11335the compiler options used during generation.
11336
11337  Previous Release:
11338    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11339    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11340  Current Release:
11341    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11342    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11343
113442) iASL Compiler/Disassembler:
11345
11346Fixed an array size problem for FreeBSD that would cause the compiler to 
11347fault.
11348
11349----------------------------------------
1135020 February 2004.  Summary of changes for version 20040220:
11351
11352
113531) ACPI CA Core Subsystem:
11354
11355Implemented execution of _SxD methods for Device objects in the 
11356GetObjectInfo interface.
11357
11358Fixed calls to _SST method to pass the correct arguments.
11359
11360Added a call to _SST on wake to restore to "working" state.
11361
11362Check for End-Of-Buffer failure case in the WalkResources interface.
11363
11364Integrated fix for 64-bit alignment issue in acglobal.h by moving two 
11365structures to the beginning of the file.
11366
11367After wake, clear GPE status register(s) before enabling GPEs.
11368
11369After wake, clear/enable power button.  (Perhaps we should clear/enable 
11370all 
11371fixed events upon wake.)
11372
11373Fixed a couple of possible memory leaks in the Namespace manager.
11374
11375Integrated latest acnetbsd.h file.
11376
11377----------------------------------------
1137811 February 2004.  Summary of changes for version 20040211:
11379
11380
113811) ACPI CA Core Subsystem:
11382
11383Completed investigation and implementation of the call-by-reference 
11384mechanism for control method arguments.
11385
11386Fixed a problem where a store of an object into an indexed package could 
11387fail if the store occurs within a different method than the method that 
11388created the package.
11389
11390Fixed a problem where the ToDecimal operator could return incorrect 
11391results.
11392
11393Fixed a problem where the CopyObject operator could fail on some of the 
11394more 
11395obscure objects (e.g., Reference objects.)
11396
11397Improved the output of the Debug object to display buffer, package, and 
11398index objects.
11399
11400Fixed a problem where constructs of the form "RefOf (ArgX)" did not 
11401return 
11402the expected result.
11403
11404Added permanent ACPI_REPORT_ERROR macros for all instances of the 
11405ACPI_AML_INTERNAL exception.
11406
11407Integrated latest version of acfreebsd.h
11408
11409----------------------------------------
1141016 January 2004.  Summary of changes for version 20040116:
11411
11412The purpose of this release is primarily to update the copyright years in 
11413each module, thus causing a huge number of diffs.  There are a few small 
11414functional changes, however.
11415
114161) ACPI CA Core Subsystem:
11417
11418Improved error messages when there is a problem finding one or more of 
11419the 
11420required base ACPI tables
11421
11422Reintroduced the definition of APIC_HEADER in actbl.h
11423
11424Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
11425
11426Removed extraneous reference to NewObj in dsmthdat.c
11427
114282) iASL compiler
11429
11430Fixed a problem introduced in December that disabled the correct 
11431disassembly 
11432of Resource Templates
11433
11434
11435----------------------------------------
1143603 December 2003.  Summary of changes for version 20031203:
11437
114381) ACPI CA Core Subsystem:
11439
11440Changed the initialization of Operation Regions during subsystem
11441init to perform two entire walks of the ACPI namespace; The first
11442to initialize the regions themselves, the second to execute the
11443_REG methods.  This fixed some interdependencies across _REG
11444methods found on some machines.
11445
11446Fixed a problem where a Store(Local0, Local1) could simply update
11447the object reference count, and not create a new copy of the
11448object if the Local1 is uninitialized.
11449
11450Implemented support for the _SST reserved method during sleep
11451transitions.
11452
11453Implemented support to clear the SLP_TYP and SLP_EN bits when
11454waking up, this is apparently required by some machines.
11455
11456When sleeping, clear the wake status only if SleepState is not S5.
11457
11458Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
11459pointer arithmetic advanced a string pointer too far.
11460
11461Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
11462could be returned if the requested table has not been loaded.
11463
11464Within the support for IRQ resources, restructured the handling of
11465the active and edge/level bits.
11466
11467Fixed a few problems in AcpiPsxExecute() where memory could be
11468leaked under certain error conditions.
11469
11470Improved error messages for the cases where the ACPI mode could
11471not be entered.
11472
11473Code and Data Size: Current and previous core subsystem library
11474sizes are shown below.  These are the code and data sizes for the
11475acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11476these values do not include any ACPI driver or OSPM code.  The
11477debug version of the code includes the debug output trace
11478mechanism and has a much larger code and data size.  Note that
11479these values will vary depending on the efficiency of the compiler
11480and the compiler options used during generation.
11481
11482  Previous Release (20031029):
11483    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11484    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11485  Current Release:
11486    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11487    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11488
114892) iASL Compiler/Disassembler:
11490
11491Implemented a fix for the iASL disassembler where a bad index was
11492generated.  This was most noticeable on 64-bit platforms
11493
11494
11495----------------------------------------
1149629 October 2003.  Summary of changes for version 20031029:
11497
114981) ACPI CA Core Subsystem:
11499
11500
11501Fixed a problem where a level-triggered GPE with an associated
11502_Lxx control method was incorrectly cleared twice.
11503
11504Fixed a problem with the Field support code where an access can
11505occur beyond the end-of-region if the field is non-aligned but
11506extends to the very end of the parent region (resulted in an
11507AE_AML_REGION_LIMIT exception.)
11508
11509Fixed a problem with ACPI Fixed Events where an RT Clock handler
11510would not get invoked on an RTC event.  The RTC event bitmasks for
11511the PM1 registers were not being initialized properly.
11512
11513Implemented support for executing _STA and _INI methods for
11514Processor objects.  Although this is currently not part of the
11515ACPI specification, there is existing ASL code that depends on the
11516init-time execution of these methods.
11517
11518Implemented and deployed a GetDescriptorName function to decode
11519the various types of internal descriptors.  Guards against null
11520descriptors during debug output also.
11521
11522Implemented and deployed a GetNodeName function to extract the 4-
11523character namespace node name.  This function simplifies the debug
11524and error output, as well as guarding against null pointers during
11525output.
11526
11527Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
11528simplify the debug and error output of 64-bit integers.  This
11529macro replaces the HIDWORD and LODWORD macros for dumping these
11530integers.
11531
11532Updated the implementation of the Stall() operator to only call
11533AcpiOsStall(), and also return an error if the operand is larger
11534than 255.  This preserves the required behavior of not
11535relinquishing the processor, as would happen if AcpiOsSleep() was
11536called for "long stalls".
11537
11538Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
11539initialized are now treated as NOOPs.
11540
11541Cleaned up a handful of warnings during 64-bit generation.
11542
11543Fixed a reported error where and incorrect GPE number was passed
11544to the GPE dispatch handler.  This value is only used for error
11545output, however.  Used this opportunity to clean up and streamline
11546the GPE dispatch code.
11547
11548Code and Data Size: Current and previous core subsystem library
11549sizes are shown below.  These are the code and data sizes for the
11550acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11551these values do not include any ACPI driver or OSPM code.  The
11552
11553debug version of the code includes the debug output trace
11554mechanism and has a much larger code and data size.  Note that
11555these values will vary depending on the efficiency of the compiler
11556and the compiler options used during generation.
11557
11558  Previous Release (20031002):
11559    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11560    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11561  Current Release:
11562    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11563    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11564
11565
115662) iASL Compiler/Disassembler:
11567
11568Updated the iASL compiler to return an error if the operand to the
11569Stall() operator is larger than 255.
11570
11571
11572----------------------------------------
1157302 October 2003.  Summary of changes for version 20031002:
11574
11575
115761) ACPI CA Core Subsystem:
11577
11578Fixed a problem with Index Fields where the index was not
11579incremented for fields that require multiple writes to the
11580index/data registers (Fields that are wider than the data
11581register.)
11582
11583Fixed a problem with all Field objects where a write could go
11584beyond the end-of-field if the field was larger than the access
11585granularity and therefore required multiple writes to complete the
11586request.  An extra write beyond the end of the field could happen
11587inadvertently.
11588
11589Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
11590would incorrectly be returned if the width of the Data Register
11591was larger than the specified field access width.
11592
11593Completed fixes for LoadTable() and Unload() and verified their
11594operation.  Implemented full support for the "DdbHandle" object
11595throughout the ACPI CA subsystem.
11596
11597Implemented full support for the MADT and ECDT tables in the ACPI
11598CA header files.  Even though these tables are not directly
11599consumed by ACPI CA, the header definitions are useful for ACPI
11600device drivers.
11601
11602Integrated resource descriptor fixes posted to the Linux ACPI
11603list.  This included checks for minimum descriptor length, and
11604support for trailing NULL strings within descriptors that have
11605optional string elements.
11606
11607Code and Data Size: Current and previous core subsystem library
11608sizes are shown below.  These are the code and data sizes for the
11609acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11610these values do not include any ACPI driver or OSPM code.  The
11611debug version of the code includes the debug output trace
11612mechanism and has a much larger code and data size.  Note that
11613these values will vary depending on the efficiency of the compiler
11614and the compiler options used during generation.
11615
11616  Previous Release (20030918):
11617    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11618    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11619  Current Release:
11620    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11621    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11622
11623
116242) iASL Compiler:
11625
11626Implemented detection of non-ASCII characters within the input
11627source ASL file.  This catches attempts to compile binary (AML)
11628files early in the compile, with an informative error message.
11629
11630Fixed a problem where the disassembler would fault if the output
11631filename could not be generated or if the output file could not be
11632opened.
11633
11634----------------------------------------
1163518 September 2003.  Summary of changes for version 20030918:
11636
11637
116381) ACPI CA Core Subsystem:
11639
11640Found and fixed a longstanding problem with the late execution of
11641the various deferred AML opcodes (such as Operation Regions,
11642Buffer Fields, Buffers, and Packages).  If the name string
11643specified for the name of the new object placed the object in a
11644scope other than the current scope, the initialization/execution
11645of the opcode failed.  The solution to this problem was to
11646implement a mechanism where the late execution of such opcodes
11647does not attempt to lookup/create the name a second time in an
11648incorrect scope.  This fixes the "region size computed
11649incorrectly" problem.
11650
11651Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
11652Global Lock AE_BAD_PARAMETER error.
11653
11654Fixed several 64-bit issues with prototypes, casting and data
11655types.
11656
11657Removed duplicate prototype from acdisasm.h
11658
11659Fixed an issue involving EC Operation Region Detach (Shaohua Li)
11660
11661Code and Data Size: Current and previous core subsystem library
11662sizes are shown below.  These are the code and data sizes for the
11663acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11664these values do not include any ACPI driver or OSPM code.  The
11665debug version of the code includes the debug output trace
11666mechanism and has a much larger code and data size.  Note that
11667these values will vary depending on the efficiency of the compiler
11668and the compiler options used during generation.
11669
11670  Previous Release:
11671
11672    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11673    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11674  Current Release:
11675    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11676    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11677
11678
116792) Linux:
11680
11681Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
11682correct sleep time in seconds.
11683
11684----------------------------------------
1168514 July 2003.  Summary of changes for version 20030619:
11686
116871) ACPI CA Core Subsystem:
11688
11689Parse SSDTs in order discovered, as opposed to reverse order
11690(Hrvoje Habjanic)
11691
11692Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
11693Klausner,
11694   Nate Lawson)
11695
11696
116972) Linux:
11698
11699Dynamically allocate SDT list (suggested by Andi Kleen)
11700
11701proc function return value cleanups (Andi Kleen)
11702
11703Correctly handle NMI watchdog during long stalls (Andrew Morton)
11704
11705Make it so acpismp=force works (reported by Andrew Morton)
11706
11707
11708----------------------------------------
1170919 June 2003.  Summary of changes for version 20030619:
11710
117111) ACPI CA Core Subsystem:
11712
11713Fix To/FromBCD, eliminating the need for an arch-specific #define.
11714
11715Do not acquire a semaphore in the S5 shutdown path.
11716
11717Fix ex_digits_needed for 0. (Takayoshi Kochi)
11718
11719Fix sleep/stall code reversal. (Andi Kleen)
11720
11721Revert a change having to do with control method calling
11722semantics.
11723
117242) Linux:
11725
11726acpiphp update (Takayoshi Kochi)
11727
11728Export acpi_disabled for sonypi (Stelian Pop)
11729
11730Mention acpismp=force in config help
11731
11732Re-add acpitable.c and acpismp=force. This improves backwards
11733
11734compatibility and also cleans up the code to a significant degree.
11735
11736Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
11737
11738----------------------------------------
1173922 May 2003.  Summary of changes for version 20030522:
11740
117411) ACPI CA Core Subsystem:
11742
11743Found and fixed a reported problem where an AE_NOT_FOUND error
11744occurred occasionally during _BST evaluation.  This turned out to
11745be an Owner ID allocation issue where a called method did not get
11746a new ID assigned to it.  Eventually, (after 64k calls), the Owner
11747ID UINT16 would wraparound so that the ID would be the same as the
11748caller's and the called method would delete the caller's
11749namespace.
11750
11751Implemented extended error reporting for control methods that are
11752aborted due to a run-time exception.  Output includes the exact
11753AML instruction that caused the method abort, a dump of the method
11754locals and arguments at the time of the abort, and a trace of all
11755nested control method calls.
11756
11757Modified the interpreter to allow the creation of buffers of zero
11758length from the AML code. Implemented new code to ensure that no
11759attempt is made to actually allocate a memory buffer (of length
11760zero) - instead, a simple buffer object with a NULL buffer pointer
11761and length zero is created.  A warning is no longer issued when
11762the AML attempts to create a zero-length buffer.
11763
11764Implemented a workaround for the "leading asterisk issue" in
11765_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
11766asterisk is automatically removed if present in any HID, UID, or
11767CID strings.  The iASL compiler will still flag this asterisk as
11768an error, however.
11769
11770Implemented full support for _CID methods that return a package of
11771multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
11772now additionally returns a device _CID list if present.  This
11773required a change to the external interface in order to pass an
11774ACPI_BUFFER object as a parameter since the _CID list is of
11775variable length.
11776
11777Fixed a problem with the new AE_SAME_HANDLER exception where
11778handler initialization code did not know about this exception.
11779
11780Code and Data Size: Current and previous core subsystem library
11781sizes are shown below.  These are the code and data sizes for the
11782acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11783these values do not include any ACPI driver or OSPM code.  The
11784debug version of the code includes the debug output trace
11785mechanism and has a much larger code and data size.  Note that
11786these values will vary depending on the efficiency of the compiler
11787and the compiler options used during generation.
11788
11789  Previous Release (20030509):
11790    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11791    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11792  Current Release:
11793    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11794    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11795
11796
117972) Linux:
11798
11799Fixed a bug in which we would reinitialize the ACPI interrupt
11800after it was already working, thus disabling all ACPI and the IRQs
11801for any other device sharing the interrupt. (Thanks to Stian
11802Jordet)
11803
11804Toshiba driver update (John Belmonte)
11805
11806Return only 0 or 1 for our interrupt handler status (Andrew
11807Morton)
11808
11809
118103) iASL Compiler:
11811
11812Fixed a reported problem where multiple (nested) ElseIf()
11813statements were not handled correctly by the compiler, resulting
11814in incorrect warnings and incorrect AML code.  This was a problem
11815in both the ASL parser and the code generator.
11816
11817
118184) Documentation:
11819
11820Added changes to existing interfaces, new exception codes, and new
11821text concerning reference count object management versus garbage
11822collection.
11823
11824----------------------------------------
1182509 May 2003.  Summary of changes for version 20030509.
11826
11827
118281) ACPI CA Core Subsystem:
11829
11830Changed the subsystem initialization sequence to hold off
11831installation of address space handlers until the hardware has been
11832initialized and the system has entered ACPI mode.  This is because
11833the installation of space handlers can cause _REG methods to be
11834run.  Previously, the _REG methods could potentially be run before
11835ACPI mode was enabled.
11836
11837Fixed some memory leak issues related to address space handler and
11838notify handler installation.  There were some problems with the
11839reference count mechanism caused by the fact that the handler
11840objects are shared across several namespace objects.
11841
11842Fixed a reported problem where reference counts within the
11843namespace were not properly updated when named objects created by
11844method execution were deleted.
11845
11846Fixed a reported problem where multiple SSDTs caused a deletion
11847issue during subsystem termination.  Restructured the table data
11848structures to simplify the linked lists and the related code.
11849
11850Fixed a problem where the table ID associated with secondary
11851tables (SSDTs) was not being propagated into the namespace objects
11852created by those tables.  This would only present a problem for
11853tables that are unloaded at run-time, however.
11854
11855Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
11856type as the length parameter (instead of UINT32).
11857
11858Solved a long-standing problem where an ALREADY_EXISTS error
11859appears on various systems.  This problem could happen when there
11860are multiple PCI_Config operation regions under a single PCI root
11861bus.  This doesn't happen very frequently, but there are some
11862systems that do this in the ASL.
11863
11864Fixed a reported problem where the internal DeleteNode function
11865was incorrectly handling the case where a namespace node was the
11866first in the parent's child list, and had additional peers (not
11867the only child, but first in the list of children.)
11868
11869Code and Data Size: Current core subsystem library sizes are shown
11870below.  These are the code and data sizes for the acpica.lib
11871produced by the Microsoft Visual C++ 6.0 compiler, and these
11872values do not include any ACPI driver or OSPM code.  The debug
11873version of the code includes the debug output trace mechanism and
11874has a much larger code and data size.  Note that these values will
11875vary depending on the efficiency of the compiler and the compiler
11876options used during generation.
11877
11878  Previous Release
11879    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11880    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11881  Current Release:
11882    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11883    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11884
11885
118862) Linux:
11887
11888Allow ":" in OS override string (Ducrot Bruno)
11889
11890Kobject fix (Greg KH)
11891
11892
118933 iASL Compiler/Disassembler:
11894
11895Fixed a problem in the generation of the C source code files (AML
11896is emitted in C source statements for BIOS inclusion) where the
11897Ascii dump that appears within a C comment at the end of each line
11898could cause a compile time error if the AML sequence happens to
11899have an open comment or close comment sequence embedded.
11900
11901
11902----------------------------------------
1190324 April 2003.  Summary of changes for version 20030424.
11904
11905
119061) ACPI CA Core Subsystem:
11907
11908Support for big-endian systems has been implemented.  Most of the
11909support has been invisibly added behind big-endian versions of the
11910ACPI_MOVE_* macros.
11911
11912Fixed a problem in AcpiHwDisableGpeBlock() and
11913AcpiHwClearGpeBlock() where an incorrect offset was passed to the
11914low level hardware write routine.  The offset parameter was
11915actually eliminated from the low level read/write routines because
11916they had become obsolete.
11917
11918Fixed a problem where a handler object was deleted twice during
11919the removal of a fixed event handler.
11920
11921
119222) Linux:
11923
11924A fix for SMP systems with link devices was contributed by
11925
11926Compaq's Dan Zink.
11927
11928(2.5) Return whether we handled the interrupt in our IRQ handler.
11929(Linux ISRs no longer return void, so we can propagate the handler
11930return value from the ACPI CA core back to the OS.)
11931
11932
11933
119343) Documentation:
11935
11936The ACPI CA Programmer Reference has been updated to reflect new
11937interfaces and changes to existing interfaces.
11938
11939----------------------------------------
1194028 March 2003.  Summary of changes for version 20030328.
11941
119421) ACPI CA Core Subsystem:
11943
11944The GPE Block Device support has been completed.  New interfaces
11945are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
11946interfaces (enable, disable, clear, getstatus) have been split
11947into separate interfaces for Fixed Events and General Purpose
11948Events (GPEs) in order to support GPE Block Devices properly.
11949
11950Fixed a problem where the error message "Failed to acquire
11951semaphore" would appear during operations on the embedded
11952controller (EC).
11953
11954Code and Data Size: Current core subsystem library sizes are shown
11955below.  These are the code and data sizes for the acpica.lib
11956produced by the Microsoft Visual C++ 6.0 compiler, and these
11957values do not include any ACPI driver or OSPM code.  The debug
11958version of the code includes the debug output trace mechanism and
11959has a much larger code and data size.  Note that these values will
11960vary depending on the efficiency of the compiler and the compiler
11961options used during generation.
11962
11963  Previous Release
11964    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
11965    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
11966  Current Release:
11967    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11968    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11969
11970
11971----------------------------------------
1197228 February 2003.  Summary of changes for version 20030228.
11973
11974
119751) ACPI CA Core Subsystem:
11976
11977The GPE handling and dispatch code has been completely overhauled
11978in preparation for support of GPE Block Devices (ID ACPI0006).
11979This affects internal data structures and code only; there should
11980be no differences visible externally.  One new file has been
11981added, evgpeblk.c
11982
11983The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
11984fields that are used to determine the GPE block lengths.  The
11985REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
11986structures are ignored.  This is per the ACPI specification but it
11987isn't very clear.  The full 256 Block 0/1 GPEs are now supported
11988(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
11989
11990In the SCI interrupt handler, removed the read of the PM1_CONTROL
11991register to look at the SCI_EN bit.  On some machines, this read
11992causes an SMI event and greatly slows down SCI events.  (This may
11993in fact be the cause of slow battery status response on some
11994systems.)
11995
11996Fixed a problem where a store of a NULL string to a package object
11997could cause the premature deletion of the object.  This was seen
11998during execution of the battery _BIF method on some systems,
11999resulting in no battery data being returned.
12000
12001Added AcpiWalkResources interface to simplify parsing of resource
12002lists.
12003
12004Code and Data Size: Current core subsystem library sizes are shown
12005below.  These are the code and data sizes for the acpica.lib
12006produced by the Microsoft Visual C++ 6.0 compiler, and these
12007values do not include any ACPI driver or OSPM code.  The debug
12008version of the code includes the debug output trace mechanism and
12009has a much larger code and data size.  Note that these values will
12010vary depending on the efficiency of the compiler and the compiler
12011options used during generation.
12012
12013  Previous Release
12014    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12015    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12016  Current Release:
12017    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
12018    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
12019
12020
120212) Linux
12022
12023S3 fixes (Ole Rohne)
12024
12025Update ACPI PHP driver with to use new acpi_walk_resource API
12026(Bjorn Helgaas)
12027
12028Add S4BIOS support (Pavel Machek)
12029
12030Map in entire table before performing checksum (John Stultz)
12031
12032Expand the mem= cmdline to allow the specification of reserved and
12033ACPI DATA blocks (Pavel Machek)
12034
12035Never use ACPI on VISWS
12036
12037Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
12038
12039Revert a change that allowed P_BLK lengths to be 4 or 5. This is
12040causing us to think that some systems support C2 when they really
12041don't.
12042
12043Do not count processor objects for non-present CPUs (Thanks to
12044Dominik Brodowski)
12045
12046
120473) iASL Compiler:
12048
12049Fixed a problem where ASL include files could not be found and
12050opened.
12051
12052Added support for the _PDC reserved name.
12053
12054
12055----------------------------------------
1205622 January 2003.  Summary of changes for version 20030122.
12057
12058
120591) ACPI CA Core Subsystem:
12060
12061Added a check for constructs of the form:  Store (Local0, Local0)
12062where Local0 is not initialized.  Apparently, some BIOS
12063programmers believe that this is a NOOP.  Since this store doesn't
12064do anything anyway, the new prototype behavior will ignore this
12065error.  This is a case where we can relax the strict checking in
12066the interpreter in the name of compatibility.
12067
12068
120692) Linux
12070
12071The AcpiSrc Source Conversion Utility has been released with the
12072Linux package for the first time.  This is the utility that is
12073used to convert the ACPI CA base source code to the Linux version.
12074
12075(Both) Handle P_BLK lengths shorter than 6 more gracefully
12076
12077(Both) Move more headers to include/acpi, and delete an unused
12078header.
12079
12080(Both) Move drivers/acpi/include directory to include/acpi
12081
12082(Both) Boot functions don't use cmdline, so don't pass it around
12083
12084(Both) Remove include of unused header (Adrian Bunk)
12085
12086(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
12087the
12088former now also includes the latter, acpiphp.h only needs the one,
12089now.
12090
12091(2.5) Make it possible to select method of bios restoring after S3
12092resume. [=> no more ugly ifdefs] (Pavel Machek)
12093
12094(2.5) Make proc write interfaces work (Pavel Machek)
12095
12096(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
12097
12098(2.5) Break out ACPI Perf code into its own module, under cpufreq
12099(Dominik Brodowski)
12100
12101(2.4) S4BIOS support (Ducrot Bruno)
12102
12103(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
12104Visinoni)
12105
12106
121073) iASL Compiler:
12108
12109Added support to disassemble SSDT and PSDTs.
12110
12111Implemented support to obtain SSDTs from the Windows registry if
12112available.
12113
12114
12115----------------------------------------
1211609 January 2003.  Summary of changes for version 20030109.
12117
121181) ACPI CA Core Subsystem:
12119
12120Changed the behavior of the internal Buffer-to-String conversion
12121function.  The current ACPI specification states that the contents
12122of the buffer are "converted to a string of two-character
12123hexadecimal numbers, each separated by a space".  Unfortunately,
12124this definition is not backwards compatible with existing ACPI 1.0
12125implementations (although the behavior was not defined in the ACPI
121261.0 specification).  The new behavior simply copies data from the
12127buffer to the string until a null character is found or the end of
12128the buffer is reached.  The new String object is always null
12129terminated.  This problem was seen during the generation of _BIF
12130battery data where incorrect strings were returned for battery
12131type, etc.  This will also require an errata to the ACPI
12132specification.
12133
12134Renamed all instances of NATIVE_UINT and NATIVE_INT to
12135ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
12136
12137Copyright in all module headers (both Linux and non-Linux) has be
12138updated to 2003.
12139
12140Code and Data Size: Current core subsystem library sizes are shown
12141below.  These are the code and data sizes for the acpica.lib
12142produced by the Microsoft Visual C++ 6.0 compiler, and these
12143values do not include any ACPI driver or OSPM code.  The debug
12144version of the code includes the debug output trace mechanism and
12145has a much larger code and data size.  Note that these values will
12146vary depending on the efficiency of the compiler and the compiler
12147options used during generation.
12148
12149  Previous Release
12150    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12151    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12152  Current Release:
12153    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12154    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12155
12156
121572) Linux
12158
12159Fixed an oops on module insertion/removal (Matthew Tippett)
12160
12161(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
12162
12163(2.5) Replace pr_debug (Randy Dunlap)
12164
12165(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
12166
12167(Both) Eliminate spawning of thread from timer callback, in favor
12168of schedule_work()
12169
12170(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
12171
12172(Both) Added define for Fixed Function HW region (Matthew Wilcox)
12173
12174(Both) Add missing statics to button.c (Pavel Machek)
12175
12176Several changes have been made to the source code translation
12177utility that generates the Linux Code in order to make the code
12178more "Linux-like":
12179
12180All typedefs on structs and unions have been removed in keeping
12181with the Linux coding style.
12182
12183Removed the non-Linux SourceSafe module revision number from each
12184module header.
12185
12186Completed major overhaul of symbols to be lowercased for linux.
12187Doubled the number of symbols that are lowercased.
12188
12189Fixed a problem where identifiers within procedure headers and
12190within quotes were not fully lower cased (they were left with a
12191starting capital.)
12192
12193Some C macros whose only purpose is to allow the generation of 16-
12194bit code are now completely removed in the Linux code, increasing
12195readability and maintainability.
12196
12197----------------------------------------
12198
1219912 December 2002.  Summary of changes for version 20021212.
12200
12201
122021) ACPI CA Core Subsystem:
12203
12204Fixed a problem where the creation of a zero-length AML Buffer
12205would cause a fault.
12206
12207Fixed a problem where a Buffer object that pointed to a static AML
12208buffer (in an ACPI table) could inadvertently be deleted, causing
12209memory corruption.
12210
12211Fixed a problem where a user buffer (passed in to the external
12212ACPI CA interfaces) could be overwritten if the buffer was too
12213small to complete the operation, causing memory corruption.
12214
12215Fixed a problem in the Buffer-to-String conversion code where a
12216string of length one was always returned, regardless of the size
12217of the input Buffer object.
12218
12219Removed the NATIVE_CHAR data type across the entire source due to
12220lack of need and lack of consistent use.
12221
12222Code and Data Size: Current core subsystem library sizes are shown
12223below.  These are the code and data sizes for the acpica.lib
12224produced by the Microsoft Visual C++ 6.0 compiler, and these
12225values do not include any ACPI driver or OSPM code.  The debug
12226version of the code includes the debug output trace mechanism and
12227has a much larger code and data size.  Note that these values will
12228vary depending on the efficiency of the compiler and the compiler
12229options used during generation.
12230
12231  Previous Release
12232    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12233    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12234  Current Release:
12235    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12236    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12237
12238
12239----------------------------------------
1224005 December 2002.  Summary of changes for version 20021205.
12241
122421) ACPI CA Core Subsystem:
12243
12244Fixed a problem where a store to a String or Buffer object could
12245cause corruption of the DSDT if the object type being stored was
12246the same as the target object type and the length of the object
12247being stored was equal to or smaller than the original (existing)
12248target object.  This was seen to cause corruption of battery _BIF
12249buffers if the _BIF method modified the buffer on the fly.
12250
12251Fixed a problem where an internal error was generated if a control
12252method invocation was used in an OperationRegion, Buffer, or
12253Package declaration.  This was caused by the deferred parsing of
12254the control method and thus the deferred creation of the internal
12255method object.  The solution to this problem was to create the
12256internal method object at the moment the method is encountered in
12257the first pass - so that subsequent references to the method will
12258able to obtain the required parameter count and thus properly
12259parse the method invocation.  This problem presented itself as an
12260AE_AML_INTERNAL during the pass 1 parse phase during table load.
12261
12262Fixed a problem where the internal String object copy routine did
12263not always allocate sufficient memory for the target String object
12264and caused memory corruption.  This problem was seen to cause
12265"Allocation already present in list!" errors as memory allocation
12266became corrupted.
12267
12268Implemented a new function for the evaluation of namespace objects
12269that allows the specification of the allowable return object
12270types.  This simplifies a lot of code that checks for a return
12271object of one or more specific objects returned from the
12272evaluation (such as _STA, etc.)  This may become and external
12273function if it would be useful to ACPI-related drivers.
12274
12275Completed another round of prefixing #defines with "ACPI_" for
12276clarity.
12277
12278Completed additional code restructuring to allow more modular
12279linking for iASL compiler and AcpiExec.  Several files were split
12280creating new files.  New files:  nsparse.c dsinit.c evgpe.c
12281
12282Implemented an abort mechanism to terminate an executing control
12283method via the AML debugger.  This feature is useful for debugging
12284control methods that depend (wait) for specific hardware
12285responses.
12286
12287Code and Data Size: Current core subsystem library sizes are shown
12288below.  These are the code and data sizes for the acpica.lib
12289produced by the Microsoft Visual C++ 6.0 compiler, and these
12290values do not include any ACPI driver or OSPM code.  The debug
12291version of the code includes the debug output trace mechanism and
12292has a much larger code and data size.  Note that these values will
12293vary depending on the efficiency of the compiler and the compiler
12294options used during generation.
12295
12296  Previous Release
12297    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12298    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12299  Current Release:
12300    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12301    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12302
12303
123042) iASL Compiler/Disassembler
12305
12306Fixed a compiler code generation problem for "Interrupt" Resource
12307Descriptors.  If specified in the ASL, the optional "Resource
12308Source Index" and "Resource Source" fields were not inserted into
12309the correct location within the AML resource descriptor, creating
12310an invalid descriptor.
12311
12312Fixed a disassembler problem for "Interrupt" resource descriptors.
12313The optional "Resource Source Index" and "Resource Source" fields
12314were ignored.
12315
12316
12317----------------------------------------
1231822 November 2002.  Summary of changes for version 20021122.
12319
12320
123211) ACPI CA Core Subsystem:
12322
12323Fixed a reported problem where an object stored to a Method Local
12324or Arg was not copied to a new object during the store - the
12325object pointer was simply copied to the Local/Arg.  This caused
12326all subsequent operations on the Local/Arg to also affect the
12327original source of the store operation.
12328
12329Fixed a problem where a store operation to a Method Local or Arg
12330was not completed properly if the Local/Arg contained a reference
12331(from RefOf) to a named field.  The general-purpose store-to-
12332namespace-node code is now used so that this case is handled
12333automatically.
12334
12335Fixed a problem where the internal object copy routine would cause
12336a protection fault if the object being copied was a Package and
12337contained either 1) a NULL package element or 2) a nested sub-
12338package.
12339
12340Fixed a problem with the GPE initialization that resulted from an
12341ambiguity in the ACPI specification.  One section of the
12342specification states that both the address and length of the GPE
12343block must be zero if the block is not supported.  Another section
12344implies that only the address need be zero if the block is not
12345supported.  The code has been changed so that both the address and
12346the length must be non-zero to indicate a valid GPE block (i.e.,
12347if either the address or the length is zero, the GPE block is
12348invalid.)
12349
12350Code and Data Size: Current core subsystem library sizes are shown
12351below.  These are the code and data sizes for the acpica.lib
12352produced by the Microsoft Visual C++ 6.0 compiler, and these
12353values do not include any ACPI driver or OSPM code.  The debug
12354version of the code includes the debug output trace mechanism and
12355has a much larger code and data size.  Note that these values will
12356vary depending on the efficiency of the compiler and the compiler
12357options used during generation.
12358
12359  Previous Release
12360    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12361    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12362  Current Release:
12363    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12364    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12365
12366
123672) Linux
12368
12369Cleaned up EC driver. Exported an external EC read/write
12370interface. By going through this, other drivers (most notably
12371sonypi) will be able to serialize access to the EC.
12372
12373
123743) iASL Compiler/Disassembler
12375
12376Implemented support to optionally generate include files for both
12377ASM and C (the -i switch).  This simplifies BIOS development by
12378automatically creating include files that contain external
12379declarations for the symbols that are created within the
12380
12381(optionally generated) ASM and C AML source files.
12382
12383
12384----------------------------------------
1238515 November 2002.  Summary of changes for version 20021115.
12386
123871) ACPI CA Core Subsystem:
12388
12389Fixed a memory leak problem where an error during resolution of
12390
12391method arguments during a method invocation from another method
12392failed to cleanup properly by deleting all successfully resolved
12393argument objects.
12394
12395Fixed a problem where the target of the Index() operator was not
12396correctly constructed if the source object was a package.  This
12397problem has not been detected because the use of a target operand
12398with Index() is very rare.
12399
12400Fixed a problem with the Index() operator where an attempt was
12401made to delete the operand objects twice.
12402
12403Fixed a problem where an attempt was made to delete an operand
12404twice during execution of the CondRefOf() operator if the target
12405did not exist.
12406
12407Implemented the first of perhaps several internal create object
12408functions that create and initialize a specific object type.  This
12409consolidates duplicated code wherever the object is created, thus
12410shrinking the size of the subsystem.
12411
12412Implemented improved debug/error messages for errors that occur
12413during nested method invocations.  All executing method pathnames
12414are displayed (with the error) as the call stack is unwound - thus
12415simplifying debug.
12416
12417Fixed a problem introduced in the 10/02 release that caused
12418premature deletion of a buffer object if a buffer was used as an
12419ASL operand where an integer operand is required (Thus causing an
12420implicit object conversion from Buffer to Integer.)  The change in
12421the 10/02 release was attempting to fix a memory leak (albeit
12422incorrectly.)
12423
12424Code and Data Size: Current core subsystem library sizes are shown
12425below.  These are the code and data sizes for the acpica.lib
12426produced by the Microsoft Visual C++ 6.0 compiler, and these
12427values do not include any ACPI driver or OSPM code.  The debug
12428version of the code includes the debug output trace mechanism and
12429has a much larger code and data size.  Note that these values will
12430vary depending on the efficiency of the compiler and the compiler
12431options used during generation.
12432
12433  Previous Release
12434    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12435    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12436  Current Release:
12437    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12438    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12439
12440
124412) Linux
12442
12443Changed the implementation of the ACPI semaphores to use down()
12444instead of down_interruptable().  It is important that the
12445execution of ACPI control methods not be interrupted by signals.
12446Methods must run to completion, or the system may be left in an
12447unknown/unstable state.
12448
12449Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
12450(Shawn Starr)
12451
12452
124533) iASL Compiler/Disassembler
12454
12455
12456Changed the default location of output files.  All output files
12457are now placed in the current directory by default instead of in
12458the directory of the source file.  This change may affect some
12459existing makefiles, but it brings the behavior of the compiler in
12460line with other similar tools.  The location of the output files
12461can be overridden with the -p command line switch.
12462
12463
12464----------------------------------------
1246511 November 2002.  Summary of changes for version 20021111.
12466
12467
124680) ACPI Specification 2.0B is released and is now available at:
12469http://www.acpi.info/index.html
12470
12471
124721) ACPI CA Core Subsystem:
12473
12474Implemented support for the ACPI 2.0 SMBus Operation Regions.
12475This includes the early detection and handoff of the request to
12476the SMBus region handler (avoiding all of the complex field
12477support code), and support for the bidirectional return packet
12478from an SMBus write operation.  This paves the way for the
12479development of SMBus drivers in each host operating system.
12480
12481Fixed a problem where the semaphore WAIT_FOREVER constant was
12482defined as 32 bits, but must be 16 bits according to the ACPI
12483specification.  This had the side effect of causing ASL
12484Mutex/Event timeouts even though the ASL code requested a wait
12485forever.  Changed all internal references to the ACPI timeout
12486parameter to 16 bits to prevent future problems.  Changed the name
12487of WAIT_FOREVER to ACPI_WAIT_FOREVER.
12488
12489Code and Data Size: Current core subsystem library sizes are shown
12490below.  These are the code and data sizes for the acpica.lib
12491produced by the Microsoft Visual C++ 6.0 compiler, and these
12492values do not include any ACPI driver or OSPM code.  The debug
12493version of the code includes the debug output trace mechanism and
12494has a much larger code and data size.  Note that these values will
12495vary depending on the efficiency of the compiler and the compiler
12496options used during generation.
12497
12498  Previous Release
12499    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12500    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12501  Current Release:
12502    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12503    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12504
12505
125062) Linux
12507
12508Module loading/unloading fixes (John Cagle)
12509
12510
125113) iASL Compiler/Disassembler
12512
12513Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
12514
12515Implemented support for the disassembly of all SMBus protocol
12516keywords (SMBQuick, SMBWord, etc.)
12517
12518----------------------------------------
1251901 November 2002.  Summary of changes for version 20021101.
12520
12521
125221) ACPI CA Core Subsystem:
12523
12524Fixed a problem where platforms that have a GPE1 block but no GPE0
12525block were not handled correctly.  This resulted in a "GPE
12526overlap" error message.  GPE0 is no longer required.
12527
12528Removed code added in the previous release that inserted nodes
12529into the namespace in alphabetical order.  This caused some side-
12530effects on various machines.  The root cause of the problem is
12531still under investigation since in theory, the internal ordering
12532of the namespace nodes should not matter.
12533
12534
12535Enhanced error reporting for the case where a named object is not
12536found during control method execution.  The full ACPI namepath
12537(name reference) of the object that was not found is displayed in
12538this case.
12539
12540Note: as a result of the overhaul of the namespace object types in
12541the previous release, the namespace nodes for the predefined
12542scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
12543instead of ACPI_TYPE_ANY.  This simplifies the namespace
12544management code but may affect code that walks the namespace tree
12545looking for specific object types.
12546
12547Code and Data Size: Current core subsystem library sizes are shown
12548below.  These are the code and data sizes for the acpica.lib
12549produced by the Microsoft Visual C++ 6.0 compiler, and these
12550values do not include any ACPI driver or OSPM code.  The debug
12551version of the code includes the debug output trace mechanism and
12552has a much larger code and data size.  Note that these values will
12553vary depending on the efficiency of the compiler and the compiler
12554options used during generation.
12555
12556  Previous Release
12557    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12558    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12559  Current Release:
12560    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12561    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12562
12563
125642) Linux
12565
12566Fixed a problem introduced in the previous release where the
12567Processor and Thermal objects were not recognized and installed in
12568/proc.  This was related to the scope type change described above.
12569
12570
125713) iASL Compiler/Disassembler
12572
12573Implemented the -g option to get all of the required ACPI tables
12574from the registry and save them to files (Windows version of the
12575compiler only.)  The required tables are the FADT, FACS, and DSDT.
12576
12577Added ACPI table checksum validation during table disassembly in
12578order to catch corrupted tables.
12579
12580
12581----------------------------------------
1258222 October 2002.  Summary of changes for version 20021022.
12583
125841) ACPI CA Core Subsystem:
12585
12586Implemented a restriction on the Scope operator that the target
12587must already exist in the namespace at the time the operator is
12588encountered (during table load or method execution).  In other
12589words, forward references are not allowed and Scope() cannot
12590create a new object. This changes the previous behavior where the
12591interpreter would create the name if not found.  This new behavior
12592correctly enables the search-to-root algorithm during namespace
12593lookup of the target name.  Because of this upsearch, this fixes
12594the known Compaq _SB_.OKEC problem and makes both the AML
12595interpreter and iASL compiler compatible with other ACPI
12596implementations.
12597
12598Completed a major overhaul of the internal ACPI object types for
12599the ACPI Namespace and the associated operand objects.  Many of
12600these types had become obsolete with the introduction of the two-
12601pass namespace load.  This cleanup simplifies the code and makes
12602the entire namespace load mechanism much clearer and easier to
12603understand.
12604
12605Improved debug output for tracking scope opening/closing to help
12606diagnose scoping issues.  The old scope name as well as the new
12607scope name are displayed.  Also improved error messages for
12608problems with ASL Mutex objects and error messages for GPE
12609problems.
12610
12611Cleaned up the namespace dump code, removed obsolete code.
12612
12613All string output (for all namespace/object dumps) now uses the
12614common ACPI string output procedure which handles escapes properly
12615and does not emit non-printable characters.
12616
12617Fixed some issues with constants in the 64-bit version of the
12618local C library (utclib.c)
12619
12620
126212) Linux
12622
12623EC Driver:  No longer attempts to acquire the Global Lock at
12624interrupt level.
12625
12626
126273) iASL Compiler/Disassembler
12628
12629Implemented ACPI 2.0B grammar change that disallows all Type 1 and
126302 opcodes outside of a control method.  This means that the
12631"executable" operators (versus the "namespace" operators) cannot
12632be used at the table level; they can only be used within a control
12633method.
12634
12635Implemented the restriction on the Scope() operator where the
12636target must already exist in the namespace at the time the
12637operator is encountered (during ASL compilation). In other words,
12638forward references are not allowed and Scope() cannot create a new
12639object.  This makes the iASL compiler compatible with other ACPI
12640implementations and makes the Scope() implementation adhere to the
12641ACPI specification.
12642
12643Fixed a problem where namepath optimization for the Alias operator
12644was optimizing the wrong path (of the two namepaths.)  This caused
12645a "Missing alias link" error message.
12646
12647Fixed a problem where an "unknown reserved name" warning could be
12648incorrectly generated for names like "_SB" when the trailing
12649underscore is not used in the original ASL.
12650
12651Fixed a problem where the reserved name check did not handle
12652NamePaths with multiple NameSegs correctly.  The first nameseg of
12653the NamePath was examined instead of the last NameSeg.
12654
12655
12656----------------------------------------
12657
1265802 October 2002.  Summary of changes for this release.
12659
12660
126611) ACPI CA Core Subsystem version 20021002:
12662
12663Fixed a problem where a store/copy of a string to an existing
12664string did not always set the string length properly in the String
12665object.
12666
12667Fixed a reported problem with the ToString operator where the
12668behavior was identical to the ToHexString operator instead of just
12669simply converting a raw buffer to a string data type.
12670
12671Fixed a problem where CopyObject and the other "explicit"
12672conversion operators were not updating the internal namespace node
12673type as part of the store operation.
12674
12675Fixed a memory leak during implicit source operand conversion
12676where the original object was not deleted if it was converted to a
12677new object of a different type.
12678
12679Enhanced error messages for all problems associated with namespace
12680lookups.  Common procedure generates and prints the lookup name as
12681well as the formatted status.
12682
12683Completed implementation of a new design for the Alias support
12684within the namespace.  The existing design did not handle the case
12685where a new object was assigned to one of the two names due to the
12686use of an explicit conversion operator, resulting in the two names
12687pointing to two different objects.  The new design simply points
12688the Alias name to the original name node - not to the object.
12689This results in a level of indirection that must be handled in the
12690name resolution mechanism.
12691
12692Code and Data Size: Current core subsystem library sizes are shown
12693below.  These are the code and data sizes for the acpica.lib
12694produced by the Microsoft Visual C++ 6.0 compiler, and these
12695values do not include any ACPI driver or OSPM code.  The debug
12696version of the code includes the debug output trace mechanism and
12697has a larger code and data size.  Note that these values will vary
12698depending on the efficiency of the compiler and the compiler
12699options used during generation.
12700
12701  Previous Release
12702    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12703    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12704  Current Release:
12705    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12706    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12707
12708
127092) Linux
12710
12711Initialize thermal driver's timer before it is used. (Knut
12712Neumann)
12713
12714Allow handling negative celsius values. (Kochi Takayoshi)
12715
12716Fix thermal management and make trip points. R/W (Pavel Machek)
12717
12718Fix /proc/acpi/sleep. (P. Christeas)
12719
12720IA64 fixes. (David Mosberger)
12721
12722Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
12723
12724Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
12725Brodowski)
12726
12727
127283) iASL Compiler/Disassembler
12729
12730Clarified some warning/error messages.
12731
12732
12733----------------------------------------
1273418 September 2002.  Summary of changes for this release.
12735
12736
127371) ACPI CA Core Subsystem version 20020918:
12738
12739Fixed a reported problem with reference chaining (via the Index()
12740and RefOf() operators) in the ObjectType() and SizeOf() operators.
12741The definition of these operators includes the dereferencing of
12742all chained references to return information on the base object.
12743
12744Fixed a problem with stores to indexed package elements - the
12745existing code would not complete the store if an "implicit
12746conversion" was not performed.  In other words, if the existing
12747object (package element) was to be replaced completely, the code
12748didn't handle this case.
12749
12750Relaxed typechecking on the ASL "Scope" operator to allow the
12751target name to refer to an object of type Integer, String, or
12752Buffer, in addition to the scoping object types (Device,
12753predefined Scopes, Processor, PowerResource, and ThermalZone.)
12754This allows existing AML code that has workarounds for a bug in
12755Windows to function properly.  A warning is issued, however.  This
12756affects both the AML interpreter and the iASL compiler. Below is
12757an example of this type of ASL code:
12758
12759      Name(DEB,0x00)
12760      Scope(DEB)
12761      {
12762
12763Fixed some reported problems with 64-bit integer support in the
12764local implementation of C library functions (clib.c)
12765
12766
127672) Linux
12768
12769Use ACPI fix map region instead of IOAPIC region, since it is
12770undefined in non-SMP.
12771
12772Ensure that the SCI has the proper polarity and trigger, even on
12773systems that do not have an interrupt override entry in the MADT.
12774
127752.5 big driver reorganization (Pat Mochel)
12776
12777Use early table mapping code from acpitable.c (Andi Kleen)
12778
12779New blacklist entries (Andi Kleen)
12780
12781Blacklist improvements. Split blacklist code out into a separate
12782file. Move checking the blacklist to very early. Previously, we
12783would use ACPI tables, and then halfway through init, check the
12784blacklist -- too late. Now, it's early enough to completely fall-
12785back to non-ACPI.
12786
12787
127883) iASL Compiler/Disassembler version 20020918:
12789
12790Fixed a problem where the typechecking code didn't know that an
12791alias could point to a method.  In other words, aliases were not
12792being dereferenced during typechecking.
12793
12794
12795----------------------------------------
1279629 August 2002.  Summary of changes for this release.
12797
127981) ACPI CA Core Subsystem Version 20020829:
12799
12800If the target of a Scope() operator already exists, it must be an
12801object type that actually opens a scope -- such as a Device,
12802Method, Scope, etc.  This is a fatal runtime error.  Similar error
12803check has been added to the iASL compiler also.
12804
12805Tightened up the namespace load to disallow multiple names in the
12806same scope.  This previously was allowed if both objects were of
12807the same type.  (i.e., a lookup was the same as entering a new
12808name).
12809
12810
128112) Linux
12812
12813Ensure that the ACPI interrupt has the proper trigger and
12814polarity.
12815
12816local_irq_disable is extraneous. (Matthew Wilcox)
12817
12818Make "acpi=off" actually do what it says, and not use the ACPI
12819interpreter *or* the tables.
12820
12821Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
12822Takayoshi)
12823
12824
128253) iASL Compiler/Disassembler  Version 20020829:
12826
12827Implemented namepath optimization for name declarations.  For
12828example, a declaration like "Method (\_SB_.ABCD)" would get
12829optimized to "Method (ABCD)" if the declaration is within the
12830\_SB_ scope.  This optimization is in addition to the named
12831reference path optimization first released in the previous
12832version. This would seem to complete all possible optimizations
12833for namepaths within the ASL/AML.
12834
12835If the target of a Scope() operator already exists, it must be an
12836object type that actually opens a scope -- such as a Device,
12837Method, Scope, etc.
12838
12839Implemented a check and warning for unreachable code in the same
12840block below a Return() statement.
12841
12842Fixed a problem where the listing file was not generated if the
12843compiler aborted if the maximum error count was exceeded (200).
12844
12845Fixed a problem where the typechecking of method return values was
12846broken.  This includes the check for a return value when the
12847method is invoked as a TermArg (a return value is expected.)
12848
12849Fixed a reported problem where EOF conditions during a quoted
12850string or comment caused a fault.
12851
12852
12853----------------------------------------
1285415 August 2002.  Summary of changes for this release.
12855
128561) ACPI CA Core Subsystem Version 20020815:
12857
12858Fixed a reported problem where a Store to a method argument that
12859contains a reference did not perform the indirect store correctly.
12860This problem was created during the conversion to the new
12861reference object model - the indirect store to a method argument
12862code was not updated to reflect the new model.
12863
12864Reworked the ACPI mode change code to better conform to ACPI 2.0,
12865handle corner cases, and improve code legibility (Kochi Takayoshi)
12866
12867Fixed a problem with the pathname parsing for the carat (^)
12868prefix.  The heavy use of the carat operator by the new namepath
12869optimization in the iASL compiler uncovered a problem with the AML
12870interpreter handling of this prefix.  In the case where one or
12871more carats precede a single nameseg, the nameseg was treated as
12872standalone and the search rule (to root) was inadvertently
12873applied.  This could cause both the iASL compiler and the
12874interpreter to find the wrong object or to miss the error that
12875should occur if the object does not exist at that exact pathname.
12876
12877Found and fixed the problem where the HP Pavilion DSDT would not
12878load.  This was a relatively minor tweak to the table loading code
12879(a problem caused by the unexpected encounter with a method
12880invocation not within a control method), but it does not solve the
12881overall issue of the execution of AML code at the table level.
12882This investigation is still ongoing.
12883
12884Code and Data Size: Current core subsystem library sizes are shown
12885below.  These are the code and data sizes for the acpica.lib
12886produced by the Microsoft Visual C++ 6.0 compiler, and these
12887values do not include any ACPI driver or OSPM code.  The debug
12888version of the code includes the debug output trace mechanism and
12889has a larger code and data size.  Note that these values will vary
12890depending on the efficiency of the compiler and the compiler
12891options used during generation.
12892
12893  Previous Release
12894    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
12895    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
12896  Current Release:
12897    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12898    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12899
12900
129012) Linux
12902
12903Remove redundant slab.h include (Brad Hards)
12904
12905Fix several bugs in thermal.c (Herbert Nachtnebel)
12906
12907Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
12908
12909Change acpi_system_suspend to use updated irq functions (Pavel
12910Machek)
12911
12912Export acpi_get_firmware_table (Matthew Wilcox)
12913
12914Use proper root proc entry for ACPI (Kochi Takayoshi)
12915
12916Fix early-boot table parsing (Bjorn Helgaas)
12917
12918
129193) iASL Compiler/Disassembler
12920
12921Reworked the compiler options to make them more consistent and to
12922use two-letter options where appropriate.  We were running out of
12923sensible letters.   This may break some makefiles, so check the
12924current options list by invoking the compiler with no parameters.
12925
12926Completed the design and implementation of the ASL namepath
12927optimization option for the compiler.  This option optimizes all
12928references to named objects to the shortest possible path.  The
12929first attempt tries to utilize a single nameseg (4 characters) and
12930the "search-to-root" algorithm used by the interpreter.  If that
12931cannot be used (because either the name is not in the search path
12932or there is a conflict with another object with the same name),
12933the pathname is optimized using the carat prefix (usually a
12934shorter string than specifying the entire path from the root.)
12935
12936Implemented support to obtain the DSDT from the Windows registry
12937(when the disassembly option is specified with no input file).
12938Added this code as the implementation for AcpiOsTableOverride in
12939the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
12940utility) to scan memory for the DSDT to the AcpiOsTableOverride
12941function in the DOS OSL to make the disassembler truly OS
12942independent.
12943
12944Implemented a new option to disassemble and compile in one step.
12945When used without an input filename, this option will grab the
12946DSDT from the local machine, disassemble it, and compile it in one
12947step.
12948
12949Added a warning message for invalid escapes (a backslash followed
12950by any character other than the allowable escapes).  This catches
12951the quoted string error "\_SB_" (which should be "\\_SB_" ).
12952
12953Also, there are numerous instances in the ACPI specification where
12954this error occurs.
12955
12956Added a compiler option to disable all optimizations.  This is
12957basically the "compatibility mode" because by using this option,
12958the AML code will come out exactly the same as other ASL
12959compilers.
12960
12961Added error messages for incorrectly ordered dependent resource
12962functions.  This includes: missing EndDependentFn macro at end of
12963dependent resource list, nested dependent function macros (both
12964start and end), and missing StartDependentFn macro.  These are
12965common errors that should be caught at compile time.
12966
12967Implemented _OSI support for the disassembler and compiler.  _OSI
12968must be included in the namespace for proper disassembly (because
12969the disassembler must know the number of arguments.)
12970
12971Added an "optimization" message type that is optional (off by
12972default).  This message is used for all optimizations - including
12973constant folding, integer optimization, and namepath optimization.
12974
12975----------------------------------------
1297625 July 2002.  Summary of changes for this release.
12977
12978
129791) ACPI CA Core Subsystem Version 20020725:
12980
12981The AML Disassembler has been enhanced to produce compilable ASL
12982code and has been integrated into the iASL compiler (see below) as
12983well as the single-step disassembly for the AML debugger and the
12984disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
12985resource templates and macros are fully supported.  The
12986disassembler has been tested on over 30 different AML files,
12987producing identical AML when the resulting disassembled ASL file
12988is recompiled with the same ASL compiler.
12989
12990Modified the Resource Manager to allow zero interrupts and zero
12991dma channels during the GetCurrentResources call.  This was
12992causing problems on some platforms.
12993
12994Added the AcpiOsRedirectOutput interface to the OSL to simplify
12995output redirection for the AcpiOsPrintf and AcpiOsVprintf
12996interfaces.
12997
12998Code and Data Size: Current core subsystem library sizes are shown
12999below.  These are the code and data sizes for the acpica.lib
13000produced by the Microsoft Visual C++ 6.0 compiler, and these
13001values do not include any ACPI driver or OSPM code.  The debug
13002version of the code includes the debug output trace mechanism and
13003has a larger code and data size.  Note that these values will vary
13004depending on the efficiency of the compiler and the compiler
13005options used during generation.
13006
13007  Previous Release
13008    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
13009    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
13010  Current Release:
13011    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
13012    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
13013
13014
130152) Linux
13016
13017Fixed a panic in the EC driver (Dominik Brodowski)
13018
13019Implemented checksum of the R/XSDT itself during Linux table scan
13020(Richard Schaal)
13021
13022
130233) iASL compiler
13024
13025The AML disassembler is integrated into the compiler.  The "-d"
13026option invokes the disassembler  to completely disassemble an
13027input AML file, producing as output a text ASL file with the
13028extension ".dsl" (to avoid name collisions with existing .asl
13029source files.)  A future enhancement will allow the disassembler
13030to obtain the BIOS DSDT from the registry under Windows.
13031
13032Fixed a problem with the VendorShort and VendorLong resource
13033descriptors where an invalid AML sequence was created.
13034
13035Implemented a fix for BufferData term in the ASL parser.  It was
13036inadvertently defined twice, allowing invalid syntax to pass and
13037causing reduction conflicts.
13038
13039Fixed a problem where the Ones opcode could get converted to a
13040value of zero if "Ones" was used where a byte, word or dword value
13041was expected.  The 64-bit value is now truncated to the correct
13042size with the correct value.
13043
13044
13045
13046----------------------------------------
1304702 July 2002.  Summary of changes for this release.
13048
13049
130501) ACPI CA Core Subsystem Version 20020702:
13051
13052The Table Manager code has been restructured to add several new
13053features.  Tables that are not required by the core subsystem
13054(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
13055validated in any way and are returned from AcpiGetFirmwareTable if
13056requested.  The AcpiOsTableOverride interface is now called for
13057each table that is loaded by the subsystem in order to allow the
13058host to override any table it chooses.  Previously, only the DSDT
13059could be overridden.  Added one new files, tbrsdt.c and
13060tbgetall.c.
13061
13062Fixed a problem with the conversion of internal package objects to
13063external objects (when a package is returned from a control
13064method.)  The return buffer length was set to zero instead of the
13065proper length of the package object.
13066
13067Fixed a reported problem with the use of the RefOf and DeRefOf
13068operators when passing reference arguments to control methods.  A
13069new type of Reference object is used internally for references
13070produced by the RefOf operator.
13071
13072Added additional error messages in the Resource Manager to explain
13073AE_BAD_DATA errors when they occur during resource parsing.
13074
13075Split the AcpiEnableSubsystem into two primitives to enable a
13076finer granularity initialization sequence.  These two calls should
13077be called in this order: AcpiEnableSubsystem (flags),
13078AcpiInitializeObjects (flags).  The flags parameter remains the
13079same.
13080
13081
130822) Linux
13083
13084Updated the ACPI utilities module to understand the new style of
13085fully resolved package objects that are now returned from the core
13086subsystem.  This eliminates errors of the form:
13087
13088    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
13089    acpi_utils-0430 [145] acpi_evaluate_reference:
13090        Invalid element in package (not a device reference)
13091
13092The method evaluation utility uses the new buffer allocation
13093scheme instead of calling AcpiEvaluate Object twice.
13094
13095Added support for ECDT. This allows the use of the Embedded
13096
13097Controller before the namespace has been fully initialized, which
13098is necessary for ACPI 2.0 support, and for some laptops to
13099initialize properly. (Laptops using ECDT are still rare, so only
13100limited testing was performed of the added functionality.)
13101
13102Fixed memory leaks in the EC driver.
13103
13104Eliminated a brittle code structure in acpi_bus_init().
13105
13106Eliminated the acpi_evaluate() helper function in utils.c. It is
13107no longer needed since acpi_evaluate_object can optionally
13108allocate memory for the return object.
13109
13110Implemented fix for keyboard hang when getting battery readings on
13111some systems (Stephen White)
13112
13113PCI IRQ routing update (Dominik Brodowski)
13114
13115Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
13116support
13117
13118----------------------------------------
1311911 June 2002.  Summary of changes for this release.
13120
13121
131221) ACPI CA Core Subsystem Version 20020611:
13123
13124Fixed a reported problem where constants such as Zero and One
13125appearing within _PRT packages were not handled correctly within
13126the resource manager code.  Originally reported against the ASL
13127compiler because the code generator now optimizes integers to
13128their minimal AML representation (i.e. AML constants if possible.)
13129The _PRT code now handles all AML constant opcodes correctly
13130(Zero, One, Ones, Revision).
13131
13132Fixed a problem with the Concatenate operator in the AML
13133interpreter where a buffer result object was incorrectly marked as
13134not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
13135
13136All package sub-objects are now fully resolved before they are
13137returned from the external ACPI interfaces.  This means that name
13138strings are resolved to object handles, and constant operators
13139(Zero, One, Ones, Revision) are resolved to Integers.
13140
13141Implemented immediate resolution of the AML Constant opcodes
13142(Zero, One, Ones, Revision) to Integer objects upon detection
13143within the AML stream. This has simplified and reduced the
13144generated code size of the subsystem by eliminating about 10
13145switch statements for these constants (which previously were
13146contained in Reference objects.)  The complicating issues are that
13147the Zero opcode is used as a "placeholder" for unspecified
13148optional target operands and stores to constants are defined to be
13149no-ops.
13150
13151Code and Data Size: Current core subsystem library sizes are shown
13152below. These are the code and data sizes for the acpica.lib
13153produced by the Microsoft Visual C++ 6.0 compiler, and these
13154values do not include any ACPI driver or OSPM code.  The debug
13155version of the code includes the debug output trace mechanism and
13156has a larger code and data size.  Note that these values will vary
13157depending on the efficiency of the compiler and the compiler
13158options used during generation.
13159
13160  Previous Release
13161    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
13162    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
13163  Current Release:
13164    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
13165    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
13166
13167
131682) Linux
13169
13170
13171Added preliminary support for obtaining _TRA data for PCI root
13172bridges (Bjorn Helgaas).
13173
13174
131753) iASL Compiler Version X2046:
13176
13177Fixed a problem where the "_DDN" reserved name was defined to be a
13178control method with one argument.  There are no arguments, and
13179_DDN does not have to be a control method.
13180
13181Fixed a problem with the Linux version of the compiler where the
13182source lines printed with error messages were the wrong lines.
13183This turned out to be the "LF versus CR/LF" difference between
13184Windows and Unix.  This appears to be the longstanding issue
13185concerning listing output and error messages.
13186
13187Fixed a problem with the Linux version of compiler where opcode
13188names within error messages were wrong.  This was caused by a
13189slight difference in the output of the Flex tool on Linux versus
13190Windows.
13191
13192Fixed a problem with the Linux compiler where the hex output files
13193contained some garbage data caused by an internal buffer overrun.
13194
13195
13196----------------------------------------
1319717 May 2002.  Summary of changes for this release.
13198
13199
132001) ACPI CA Core Subsystem Version 20020517:
13201
13202Implemented a workaround to an BIOS bug discovered on the HP
13203OmniBook where the FADT revision number and the table size are
13204inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
13205behavior is to fallback to using only the ACPI 1.0 fields of the
13206FADT if the table is too small to be a ACPI 2.0 table as claimed
13207by the revision number.  Although this is a BIOS bug, this is a
13208case where the workaround is simple enough and with no side
13209effects, so it seemed prudent to add it.  A warning message is
13210issued, however.
13211
13212Implemented minimum size checks for the fixed-length ACPI tables -
13213- the FADT and FACS, as well as consistency checks between the
13214revision number and the table size.
13215
13216Fixed a reported problem in the table override support where the
13217new table pointer was incorrectly treated as a physical address
13218instead of a logical address.
13219
13220Eliminated the use of the AE_AML_ERROR exception and replaced it
13221with more descriptive codes.
13222
13223Fixed a problem where an exception would occur if an ASL Field was
13224defined with no named Field Units underneath it (used by some
13225index fields).
13226
13227Code and Data Size: Current core subsystem library sizes are shown
13228below.  These are the code and data sizes for the acpica.lib
13229produced by the Microsoft Visual C++ 6.0 compiler, and these
13230values do not include any ACPI driver or OSPM code.  The debug
13231version of the code includes the debug output trace mechanism and
13232has a larger code and data size.  Note that these values will vary
13233depending on the efficiency of the compiler and the compiler
13234options used during generation.
13235
13236  Previous Release
13237    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13238    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13239  Current Release:
13240    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
13241    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
13242
13243
13244
132452) Linux
13246
13247Much work done on ACPI init (MADT and PCI IRQ routing support).
13248(Paul D. and Dominik Brodowski)
13249
13250Fix PCI IRQ-related panic on boot (Sam Revitch)
13251
13252Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
13253
13254Fix "MHz" typo (Dominik Brodowski)
13255
13256Fix RTC year 2000 issue (Dominik Brodowski)
13257
13258Preclude multiple button proc entries (Eric Brunet)
13259
13260Moved arch-specific code out of include/platform/aclinux.h
13261
132623) iASL Compiler Version X2044:
13263
13264Implemented error checking for the string used in the EISAID macro
13265(Usually used in the definition of the _HID object.)  The code now
13266strictly enforces the PnP format - exactly 7 characters, 3
13267uppercase letters and 4 hex digits.
13268
13269If a raw string is used in the definition of the _HID object
13270(instead of the EISAID macro), the string must contain all
13271alphanumeric characters (e.g., "*PNP0011" is not allowed because
13272of the asterisk.)
13273
13274Implemented checking for invalid use of ACPI reserved names for
13275most of the name creation operators (Name, Device, Event, Mutex,
13276OperationRegion, PowerResource, Processor, and ThermalZone.)
13277Previously, this check was only performed for control methods.
13278
13279Implemented an additional check on the Name operator to emit an
13280error if a reserved name that must be implemented in ASL as a
13281control method is used.  We know that a reserved name must be a
13282method if it is defined with input arguments.
13283
13284The warning emitted when a namespace object reference is not found
13285during the cross reference phase has been changed into an error.
13286The "External" directive should be used for names defined in other
13287modules.
13288
13289
132904) Tools and Utilities
13291
13292The 16-bit tools (adump16 and aexec16) have been regenerated and
13293tested.
13294
13295Fixed a problem with the output of both acpidump and adump16 where
13296the indentation of closing parentheses and brackets was not
13297
13298aligned properly with the parent block.
13299
13300
13301----------------------------------------
1330203 May 2002.  Summary of changes for this release.
13303
13304
133051) ACPI CA Core Subsystem Version 20020503:
13306
13307Added support a new OSL interface that allows the host operating
13308
13309system software to override the DSDT found in the firmware -
13310AcpiOsTableOverride.  With this interface, the OSL can examine the
13311version of the firmware DSDT and replace it with a different one
13312if desired.
13313
13314Added new external interfaces for accessing ACPI registers from
13315device drivers and other system software - AcpiGetRegister and
13316AcpiSetRegister.  This was simply an externalization of the
13317existing AcpiHwBitRegister interfaces.
13318
13319Fixed a regression introduced in the previous build where the
13320ASL/AML CreateField operator always returned an error,
13321"destination must be a NS Node".
13322
13323Extended the maximum time (before failure) to successfully enable
13324ACPI mode to 3 seconds.
13325
13326Code and Data Size: Current core subsystem library sizes are shown
13327below.  These are the code and data sizes for the acpica.lib
13328produced by the Microsoft Visual C++ 6.0 compiler, and these
13329values do not include any ACPI driver or OSPM code.  The debug
13330version of the code includes the debug output trace mechanism and
13331has a larger code and data size.  Note that these values will vary
13332depending on the efficiency of the compiler and the compiler
13333options used during generation.
13334
13335  Previous Release
13336    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13337    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13338  Current Release:
13339    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13340    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13341
13342
133432) Linux
13344
13345Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
13346free. While 3 out of 4 of our in-house systems work fine, the last
13347one still hangs when testing the LAPIC timer.
13348
13349Renamed many files in 2.5 kernel release to omit "acpi_" from the
13350name.
13351
13352Added warning on boot for Presario 711FR.
13353
13354Sleep improvements (Pavel Machek)
13355
13356ACPI can now be built without CONFIG_PCI enabled.
13357
13358IA64: Fixed memory map functions (JI Lee)
13359
13360
133613) iASL Compiler Version X2043:
13362
13363Added support to allow the compiler to be integrated into the MS
13364VC++ development environment for one-button compilation of single
13365files or entire projects -- with error-to-source-line mapping.
13366
13367Implemented support for compile-time constant folding for the
13368Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
13369specification.  This allows the ASL writer to use expressions
13370instead of Integer/Buffer/String constants in terms that must
13371evaluate to constants at compile time and will also simplify the
13372emitted AML in any such sub-expressions that can be folded
13373(evaluated at compile-time.)  This increases the size of the
13374compiler significantly because a portion of the ACPI CA AML
13375interpreter is included within the compiler in order to pre-
13376evaluate constant expressions.
13377
13378
13379Fixed a problem with the "Unicode" ASL macro that caused the
13380compiler to fault.  (This macro is used in conjunction with the
13381_STR reserved name.)
13382
13383Implemented an AML opcode optimization to use the Zero, One, and
13384Ones opcodes where possible to further reduce the size of integer
13385constants and thus reduce the overall size of the generated AML
13386code.
13387
13388Implemented error checking for new reserved terms for ACPI version
133892.0A.
13390
13391Implemented the -qr option to display the current list of ACPI
13392reserved names known to the compiler.
13393
13394Implemented the -qc option to display the current list of ASL
13395operators that are allowed within constant expressions and can
13396therefore be folded at compile time if the operands are constants.
13397
13398
133994) Documentation
13400
13401Updated the Programmer's Reference for new interfaces, data types,
13402and memory allocation model options.
13403
13404Updated the iASL Compiler User Reference to apply new format and
13405add information about new features and options.
13406
13407----------------------------------------
1340819 April 2002.  Summary of changes for this release.
13409
134101) ACPI CA Core Subsystem Version 20020419:
13411
13412The source code base for the Core Subsystem has been completely
13413cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
13414versions.  The Lint option files used are included in the
13415/acpi/generate/lint directory.
13416
13417Implemented enhanced status/error checking across the entire
13418Hardware manager subsystem.  Any hardware errors (reported from
13419the OSL) are now bubbled up and will abort a running control
13420method.
13421
13422
13423Fixed a problem where the per-ACPI-table integer width (32 or 64)
13424was stored only with control method nodes, causing a fault when
13425non-control method code was executed during table loading.  The
13426solution implemented uses a global variable to indicate table
13427width across the entire ACPI subsystem.  Therefore, ACPI CA does
13428not support mixed integer widths across different ACPI tables
13429(DSDT, SSDT).
13430
13431Fixed a problem where NULL extended fields (X fields) in an ACPI
134322.0 ACPI FADT caused the table load to fail.  Although the
13433existing ACPI specification is a bit fuzzy on this topic, the new
13434behavior is to fall back on a ACPI 1.0 field if the corresponding
13435ACPI 2.0 X field is zero (even though the table revision indicates
13436a full ACPI 2.0 table.)  The ACPI specification will be updated to
13437clarify this issue.
13438
13439Fixed a problem with the SystemMemory operation region handler
13440where memory was always accessed byte-wise even if the AML-
13441specified access width was larger than a byte.  This caused
13442problems on systems with memory-mapped I/O.  Memory is now
13443accessed with the width specified.  On systems that do not support
13444non-aligned transfers, a check is made to guarantee proper address
13445alignment before proceeding in order to avoid an AML-caused
13446alignment fault within the kernel.
13447
13448
13449Fixed a problem with the ExtendedIrq resource where only one byte
13450of the 4-byte Irq field was extracted.
13451
13452Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
13453function was out of date and required a rewrite.
13454
13455Code and Data Size: Current core subsystem library sizes are shown
13456below.  These are the code and data sizes for the acpica.lib
13457produced by the Microsoft Visual C++ 6.0 compiler, and these
13458values do not include any ACPI driver or OSPM code.  The debug
13459version of the code includes the debug output trace mechanism and
13460has a larger code and data size.  Note that these values will vary
13461depending on the efficiency of the compiler and the compiler
13462options used during generation.
13463
13464  Previous Release
13465    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13466    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13467  Current Release:
13468    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13469    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13470
13471
134722) Linux
13473
13474PCI IRQ routing fixes (Dominik Brodowski)
13475
13476
134773) iASL Compiler Version X2042:
13478
13479Implemented an additional compile-time error check for a field
13480unit whose size + minimum access width would cause a run-time
13481access beyond the end-of-region.  Previously, only the field size
13482itself was checked.
13483
13484The Core subsystem and iASL compiler now share a common parse
13485object in preparation for compile-time evaluation of the type
134863/4/5 ASL operators.
13487
13488
13489----------------------------------------
13490Summary of changes for this release: 03_29_02
13491
134921) ACPI CA Core Subsystem Version 20020329:
13493
13494Implemented support for late evaluation of TermArg operands to
13495Buffer and Package objects.  This allows complex expressions to be
13496used in the declarations of these object types.
13497
13498Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
134991.0, if the field was larger than 32 bits, it was returned as a
13500buffer - otherwise it was returned as an integer.  In ACPI 2.0,
13501the field is returned as a buffer only if the field is larger than
1350264 bits.  The TableRevision is now considered when making this
13503conversion to avoid incompatibility with existing ASL code.
13504
13505Implemented logical addressing for AcpiOsGetRootPointer.  This
13506allows an RSDP with either a logical or physical address.  With
13507this support, the host OS can now override all ACPI tables with
13508one logical RSDP.  Includes implementation of  "typed" pointer
13509support to allow a common data type for both physical and logical
13510pointers internally.  This required a change to the
13511AcpiOsGetRootPointer interface.
13512
13513Implemented the use of ACPI 2.0 Generic Address Structures for all
13514GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
13515mapped I/O for these ACPI features.
13516
13517Initialization now ignores not only non-required tables (All
13518tables other than the FADT, FACS, DSDT, and SSDTs), but also does
13519not validate the table headers of unrecognized tables.
13520
13521Fixed a problem where a notify handler could only be
13522installed/removed on an object of type Device.  All "notify"
13523
13524objects are now supported -- Devices, Processor, Power, and
13525Thermal.
13526
13527Removed most verbosity from the ACPI_DB_INFO debug level.  Only
13528critical information is returned when this debug level is enabled.
13529
13530Code and Data Size: Current core subsystem library sizes are shown
13531below.  These are the code and data sizes for the acpica.lib
13532produced by the Microsoft Visual C++ 6.0 compiler, and these
13533values do not include any ACPI driver or OSPM code.  The debug
13534version of the code includes the debug output trace mechanism and
13535has a larger code and data size.  Note that these values will vary
13536depending on the efficiency of the compiler and the compiler
13537options used during generation.
13538
13539  Previous Release
13540    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13541    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13542  Current Release:
13543    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13544    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13545
13546
135472) Linux:
13548
13549The processor driver (acpi_processor.c) now fully supports ACPI
135502.0-based processor performance control (e.g. Intel(R)
13551SpeedStep(TM) technology) Note that older laptops that only have
13552the Intel "applet" interface are not supported through this.  The
13553'limit' and 'performance' interface (/proc) are fully functional.
13554[Note that basic policy for controlling performance state
13555transitions will be included in the next version of ospmd.]  The
13556idle handler was modified to more aggressively use C2, and PIIX4
13557errata handling underwent a complete overhaul (big thanks to
13558Dominik Brodowski).
13559
13560Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
13561based devices in the ACPI namespace are now dynamically bound
13562(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
13563This allows, among other things, ACPI to resolve bus numbers for
13564subordinate PCI bridges.
13565
13566Enhanced PCI IRQ routing to get the proper bus number for _PRT
13567entries defined underneath PCI bridges.
13568
13569Added IBM 600E to bad bios list due to invalid _ADR value for
13570PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
13571
13572In the process of adding full MADT support (e.g. IOAPIC) for IA32
13573(acpi.c, mpparse.c) -- stay tuned.
13574
13575Added back visual differentiation between fixed-feature and
13576control-method buttons in dmesg.  Buttons are also subtyped (e.g.
13577button/power/PWRF) to simplify button identification.
13578
13579We no longer use -Wno-unused when compiling debug. Please ignore
13580any "_THIS_MODULE defined but not used" messages.
13581
13582Can now shut down the system using "magic sysrq" key.
13583
13584
135853) iASL Compiler version 2041:
13586
13587Fixed a problem where conversion errors for hex/octal/decimal
13588constants were not reported.
13589
13590Implemented a fix for the General Register template Address field.
13591This field was 8 bits when it should be 64.
13592
13593Fixed a problem where errors/warnings were no longer being emitted
13594within the listing output file.
13595
13596Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
13597exactly 4 characters, alphanumeric only.
13598
13599
13600
13601
13602----------------------------------------
13603Summary of changes for this release: 03_08_02
13604
13605
136061) ACPI CA Core Subsystem Version 20020308:
13607
13608Fixed a problem with AML Fields where the use of the "AccessAny"
13609keyword could cause an interpreter error due to attempting to read
13610or write beyond the end of the parent Operation Region.
13611
13612Fixed a problem in the SystemMemory Operation Region handler where
13613an attempt was made to map memory beyond the end of the region.
13614This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
13615errors on some Linux systems.
13616
13617Fixed a problem where the interpreter/namespace "search to root"
13618algorithm was not functioning for some object types.  Relaxed the
13619internal restriction on the search to allow upsearches for all
13620external object types as well as most internal types.
13621
13622
136232) Linux:
13624
13625We now use safe_halt() macro versus individual calls to sti | hlt.
13626
13627Writing to the processor limit interface should now work. "echo 1"
13628will increase the limit, 2 will decrease, and 0 will reset to the
13629
13630default.
13631
13632
136333) ASL compiler:
13634
13635Fixed segfault on Linux version.
13636
13637
13638----------------------------------------
13639Summary of changes for this release: 02_25_02
13640
136411) ACPI CA Core Subsystem:
13642
13643
13644Fixed a problem where the GPE bit masks were not initialized
13645properly, causing erratic GPE behavior.
13646
13647Implemented limited support for multiple calling conventions.  The
13648code can be generated with either the VPL (variable parameter
13649list, or "C") convention, or the FPL (fixed parameter list, or
13650"Pascal") convention.  The core subsystem is about 3.4% smaller
13651when generated with FPL.
13652
13653
136542) Linux
13655
13656Re-add some /proc/acpi/event functionality that was lost during
13657the rewrite
13658
13659Resolved issue with /proc events for fixed-feature buttons showing
13660up as the system device.
13661
13662Fixed checks on C2/C3 latencies to be inclusive of maximum values.
13663
13664Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
13665
13666Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
13667
13668Fixed limit interface & usage to fix bugs with passive cooling
13669hysterisis.
13670
13671Restructured PRT support.
13672
13673
13674----------------------------------------
13675Summary of changes for this label: 02_14_02
13676
13677
136781) ACPI CA Core Subsystem:
13679
13680Implemented support in AcpiLoadTable to allow loading of FACS and
13681FADT tables.
13682
13683Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
13684been removed.  All 64-bit platforms should be migrated to the ACPI
136852.0 tables.  The actbl71.h header has been removed from the source
13686tree.
13687
13688All C macros defined within the subsystem have been prefixed with
13689"ACPI_" to avoid collision with other system include files.
13690
13691Removed the return value for the two AcpiOsPrint interfaces, since
13692it is never used and causes lint warnings for ignoring the return
13693value.
13694
13695Added error checking to all internal mutex acquire and release
13696calls.  Although a failure from one of these interfaces is
13697probably a fatal system error, these checks will cause the
13698immediate abort of the currently executing method or interface.
13699
13700Fixed a problem where the AcpiSetCurrentResources interface could
13701fault.  This was a side effect of the deployment of the new memory
13702allocation model.
13703
13704Fixed a couple of problems with the Global Lock support introduced
13705in the last major build.  The "common" (1.0/2.0) internal FACS was
13706being overwritten with the FACS signature and clobbering the
13707Global Lock pointer.  Also, the actual firmware FACS was being
13708unmapped after construction of the "common" FACS, preventing
13709access to the actual Global Lock field within it.  The "common"
13710internal FACS is no longer installed as an actual ACPI table; it
13711is used simply as a global.
13712
13713Code and Data Size: Current core subsystem library sizes are shown
13714below.  These are the code and data sizes for the acpica.lib
13715produced by the Microsoft Visual C++ 6.0 compiler, and these
13716values do not include any ACPI driver or OSPM code.  The debug
13717version of the code includes the debug output trace mechanism and
13718has a larger code and data size.  Note that these values will vary
13719depending on the efficiency of the compiler and the compiler
13720options used during generation.
13721
13722  Previous Release (02_07_01)
13723    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13724    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13725  Current Release:
13726    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13727    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13728
13729
137302) Linux
13731
13732Updated Linux-specific code for core macro and OSL interface
13733changes described above.
13734
13735Improved /proc/acpi/event. It now can be opened only once and has
13736proper poll functionality.
13737
13738Fixed and restructured power management (acpi_bus).
13739
13740Only create /proc "view by type" when devices of that class exist.
13741
13742Fixed "charging/discharging" bug (and others) in acpi_battery.
13743
13744Improved thermal zone code.
13745
13746
137473) ASL Compiler, version X2039:
13748
13749
13750Implemented the new compiler restriction on ASL String hex/octal
13751escapes to non-null, ASCII values.  An error results if an invalid
13752value is used.  (This will require an ACPI 2.0 specification
13753change.)
13754
13755AML object labels that are output to the optional C and ASM source
13756are now prefixed with both the ACPI table signature and table ID
13757to help guarantee uniqueness within a large BIOS project.
13758
13759
13760----------------------------------------
13761Summary of changes for this label: 02_01_02
13762
137631) ACPI CA Core Subsystem:
13764
13765ACPI 2.0 support is complete in the entire Core Subsystem and the
13766ASL compiler. All new ACPI 2.0 operators are implemented and all
13767other changes for ACPI 2.0 support are complete.  With
13768simultaneous code and data optimizations throughout the subsystem,
13769ACPI 2.0 support has been implemented with almost no additional
13770cost in terms of code and data size.
13771
13772Implemented a new mechanism for allocation of return buffers.  If
13773the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
13774be allocated on behalf of the caller.  Consolidated all return
13775buffer validation and allocation to a common procedure.  Return
13776buffers will be allocated via the primary OSL allocation interface
13777since it appears that a separate pool is not needed by most users.
13778If a separate pool is required for these buffers, the caller can
13779still use the original mechanism and pre-allocate the buffer(s).
13780
13781Implemented support for string operands within the DerefOf
13782operator.
13783
13784Restructured the Hardware and Event managers to be table driven,
13785simplifying the source code and reducing the amount of generated
13786code.
13787
13788Split the common read/write low-level ACPI register bitfield
13789procedure into a separate read and write, simplifying the code
13790considerably.
13791
13792Obsoleted the AcpiOsCallocate OSL interface.  This interface was
13793used only a handful of times and didn't have enough critical mass
13794for a separate interface.  Replaced with a common calloc procedure
13795in the core.
13796
13797Fixed a reported problem with the GPE number mapping mechanism
13798that allows GPE1 numbers to be non-contiguous with GPE0.
13799Reorganized the GPE information and shrunk a large array that was
13800originally large enough to hold info for all possible GPEs (256)
13801to simply large enough to hold all GPEs up to the largest GPE
13802number on the machine.
13803
13804Fixed a reported problem with resource structure alignment on 64-
13805bit platforms.
13806
13807Changed the AcpiEnableEvent and AcpiDisableEvent external
13808interfaces to not require any flags for the common case of
13809enabling/disabling a GPE.
13810
13811Implemented support to allow a "Notify" on a Processor object.
13812
13813Most TBDs in comments within the source code have been resolved
13814and eliminated.
13815
13816
13817Fixed a problem in the interpreter where a standalone parent
13818prefix (^) was not handled correctly in the interpreter and
13819debugger.
13820
13821Removed obsolete and unnecessary GPE save/restore code.
13822
13823Implemented Field support in the ASL Load operator.  This allows a
13824table to be loaded from a named field, in addition to loading a
13825table directly from an Operation Region.
13826
13827Implemented timeout and handle support in the external Global Lock
13828interfaces.
13829
13830Fixed a problem in the AcpiDump utility where pathnames were no
13831longer being generated correctly during the dump of named objects.
13832
13833Modified the AML debugger to give a full display of if/while
13834predicates instead of just one AML opcode at a time.  (The
13835predicate can have several nested ASL statements.)  The old method
13836was confusing during single stepping.
13837
13838Code and Data Size: Current core subsystem library sizes are shown
13839below. These are the code and data sizes for the acpica.lib
13840produced by the Microsoft Visual C++ 6.0 compiler, and these
13841values do not include any ACPI driver or OSPM code.  The debug
13842version of the code includes the debug output trace mechanism and
13843has a larger code and data size.  Note that these values will vary
13844depending on the efficiency of the compiler and the compiler
13845options used during generation.
13846
13847  Previous Release (12_18_01)
13848     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13849     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13850   Current Release:
13851     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13852     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13853
138542) Linux
13855
13856 Implemented fix for PIIX reverse throttling errata (Processor
13857driver)
13858
13859Added new Limit interface (Processor and Thermal drivers)
13860
13861New thermal policy (Thermal driver)
13862
13863Many updates to /proc
13864
13865Battery "low" event support (Battery driver)
13866
13867Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
13868
13869IA32 - IA64 initialization unification, no longer experimental
13870
13871Menuconfig options redesigned
13872
138733) ASL Compiler, version X2037:
13874
13875Implemented several new output features to simplify integration of
13876AML code into  firmware: 1) Output the AML in C source code with
13877labels for each named ASL object.  The    original ASL source code
13878is interleaved as C comments. 2) Output the AML in ASM source code
13879with labels and interleaved ASL    source. 3) Output the AML in
13880raw hex table form, in either C or ASM.
13881
13882Implemented support for optional string parameters to the
13883LoadTable operator.
13884
13885Completed support for embedded escape sequences within string
13886literals.  The compiler now supports all single character escapes
13887as well as the Octal and Hex escapes.  Note: the insertion of a
13888null byte into a string literal (via the hex/octal escape) causes
13889the string to be immediately terminated.  A warning is issued.
13890
13891Fixed a problem where incorrect AML was generated for the case
13892where an ASL namepath consists of a single parent prefix (
13893
13894) with no trailing name segments.
13895
13896The compiler has been successfully generated with a 64-bit C
13897compiler.
13898
13899
13900
13901
13902----------------------------------------
13903Summary of changes for this label: 12_18_01
13904
139051) Linux
13906
13907Enhanced blacklist with reason and severity fields. Any table's
13908signature may now be used to identify a blacklisted system.
13909
13910Call _PIC control method to inform the firmware which interrupt
13911model the OS is using. Turn on any disabled link devices.
13912
13913Cleaned up busmgr /proc error handling (Andreas Dilger)
13914
13915 2) ACPI CA Core Subsystem:
13916
13917Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
13918while loop)
13919
13920Completed implementation of the ACPI 2.0 "Continue",
13921"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
13922operators.  All new ACPI 2.0 operators are now implemented in both
13923the ASL compiler and the AML interpreter.  The only remaining ACPI
139242.0 task is support for the String data type in the DerefOf
13925operator.  Fixed a problem with AcquireMutex where the status code
13926was lost if the caller had to actually wait for the mutex.
13927
13928Increased the maximum ASL Field size from 64K bits to 4G bits.
13929
13930Completed implementation of the external Global Lock interfaces --
13931AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
13932Handler parameters were added.
13933
13934Completed another pass at removing warnings and issues when
13935compiling with 64-bit compilers.  The code now compiles cleanly
13936with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
13937add and subtract (diff) macros have changed considerably.
13938
13939
13940Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1394164-bit platforms, 32-bits on all others.  This type is used
13942wherever memory allocation and/or the C sizeof() operator is used,
13943and affects the OSL memory allocation interfaces AcpiOsAllocate
13944and AcpiOsCallocate.
13945
13946Implemented sticky user breakpoints in the AML debugger.
13947
13948Code and Data Size: Current core subsystem library sizes are shown
13949below. These are the code and data sizes for the acpica.lib
13950produced by the Microsoft Visual C++ 6.0 compiler, and these
13951values do not include any ACPI driver or OSPM code.  The debug
13952version of the code includes the debug output trace mechanism and
13953has a larger code and data size. Note that these values will vary
13954depending on the efficiency of the compiler and the compiler
13955options used during generation.
13956
13957  Previous Release (12_05_01)
13958     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
13959     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
13960   Current Release:
13961     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13962     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13963
13964 3) ASL Compiler, version X2034:
13965
13966Now checks for (and generates an error if detected) the use of a
13967Break or Continue statement without an enclosing While statement.
13968
13969
13970Successfully generated the compiler with the Intel 64-bit C
13971compiler.
13972
13973 ----------------------------------------
13974Summary of changes for this label: 12_05_01
13975
13976 1) ACPI CA Core Subsystem:
13977
13978The ACPI 2.0 CopyObject operator is fully implemented.  This
13979operator creates a new copy of an object (and is also used to
13980bypass the "implicit conversion" mechanism of the Store operator.)
13981
13982The ACPI 2.0 semantics for the SizeOf operator are fully
13983implemented.  The change is that performing a SizeOf on a
13984reference object causes an automatic dereference of the object to
13985tha actual value before the size is evaluated. This behavior was
13986undefined in ACPI 1.0.
13987
13988The ACPI 2.0 semantics for the Extended IRQ resource descriptor
13989have been implemented.  The interrupt polarity and mode are now
13990independently set.
13991
13992Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
13993appearing in Package objects were not properly converted to
13994integers when the internal Package was converted to an external
13995object (via the AcpiEvaluateObject interface.)
13996
13997Fixed a problem with the namespace object deletion mechanism for
13998objects created by control methods.  There were two parts to this
13999problem: 1) Objects created during the initialization phase method
14000parse were not being deleted, and 2) The object owner ID mechanism
14001to track objects was broken.
14002
14003Fixed a problem where the use of the ASL Scope operator within a
14004control method would result in an invalid opcode exception.
14005
14006Fixed a problem introduced in the previous label where the buffer
14007length required for the _PRT structure was not being returned
14008correctly.
14009
14010Code and Data Size: Current core subsystem library sizes are shown
14011below. These are the code and data sizes for the acpica.lib
14012produced by the Microsoft Visual C++ 6.0 compiler, and these
14013values do not include any ACPI driver or OSPM code.  The debug
14014version of the code includes the debug output trace mechanism and
14015has a larger code and data size.  Note that these values will vary
14016depending on the efficiency of the compiler and the compiler
14017options used during generation.
14018
14019  Previous Release (11_20_01)
14020     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14021     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14022
14023  Current Release:
14024     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
14025     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
14026
14027 2) Linux:
14028
14029Updated all files to apply cleanly against 2.4.16.
14030
14031Added basic PCI Interrupt Routing Table (PRT) support for IA32
14032(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
14033version supports both static and dyanmic PRT entries, but dynamic
14034entries are treated as if they were static (not yet
14035reconfigurable).  Architecture- specific code to use this data is
14036absent on IA32 but should be available shortly.
14037
14038Changed the initialization sequence to start the ACPI interpreter
14039(acpi_init) prior to initialization of the PCI driver (pci_init)
14040in init/main.c.  This ordering is required to support PRT and
14041facilitate other (future) enhancement.  A side effect is that the
14042ACPI bus driver and certain device drivers can no longer be loaded
14043as modules.
14044
14045Modified the 'make menuconfig' options to allow PCI Interrupt
14046Routing support to be included without the ACPI Bus and other
14047device drivers.
14048
14049 3) ASL Compiler, version X2033:
14050
14051Fixed some issues with the use of the new CopyObject and
14052DataTableRegion operators.  Both are fully functional.
14053
14054 ----------------------------------------
14055Summary of changes for this label: 11_20_01
14056
14057 20 November 2001.  Summary of changes for this release.
14058
14059 1) ACPI CA Core Subsystem:
14060
14061Updated Index support to match ACPI 2.0 semantics.  Storing a
14062Integer, String, or Buffer to an Index of a Buffer will store only
14063the least-significant byte of the source to the Indexed buffer
14064byte.  Multiple writes are not performed.
14065
14066Fixed a problem where the access type used in an AccessAs ASL
14067operator was not recorded correctly into the field object.
14068
14069Fixed a problem where ASL Event objects were created in a
14070signalled state. Events are now created in an unsignalled state.
14071
14072The internal object cache is now purged after table loading and
14073initialization to reduce the use of dynamic kernel memory -- on
14074the assumption that object use is greatest during the parse phase
14075of the entire table (versus the run-time use of individual control
14076methods.)
14077
14078ACPI 2.0 variable-length packages are now fully operational.
14079
14080Code and Data Size: Code and Data optimizations have permitted new
14081feature development with an actual reduction in the library size.
14082Current core subsystem library sizes are shown below.  These are
14083the code and data sizes for the acpica.lib produced by the
14084Microsoft Visual C++ 6.0 compiler, and these values do not include
14085any ACPI driver or OSPM code.  The debug version of the code
14086includes the debug output trace mechanism and has a larger code
14087and data size.  Note that these values will vary depending on the
14088efficiency of the compiler and the compiler options used during
14089generation.
14090
14091  Previous Release (11_09_01):
14092     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14093     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14094
14095  Current Release:
14096     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14097     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14098
14099 2) Linux:
14100
14101Enhanced the ACPI boot-time initialization code to allow the use
14102of Local APIC tables for processor enumeration on IA-32, and to
14103pave the way for a fully MPS-free boot (on SMP systems) in the
14104near future.  This functionality replaces
14105arch/i386/kernel/acpitables.c, which was introduced in an earlier
141062.4.15-preX release.  To enable this feature you must add
14107"acpi_boot=on" to the kernel command line -- see the help entry
14108for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
14109the works...
14110
14111Restructured the configuration options to allow boot-time table
14112parsing support without inclusion of the ACPI Interpreter (and
14113other) code.
14114
14115NOTE: This release does not include fixes for the reported events,
14116power-down, and thermal passive cooling issues (coming soon).
14117
14118 3) ASL Compiler:
14119
14120Added additional typechecking for Fields within restricted access
14121Operation Regions.  All fields within EC and CMOS regions must be
14122declared with ByteAcc. All fields withing SMBus regions must be
14123declared with the BufferAcc access type.
14124
14125Fixed a problem where the listing file output of control methods
14126no longer interleaved the actual AML code with the ASL source
14127code.
14128
14129
14130
14131
14132----------------------------------------
14133Summary of changes for this label: 11_09_01
14134
141351) ACPI CA Core Subsystem:
14136
14137Implemented ACPI 2.0-defined support for writes to fields with a
14138Buffer, String, or Integer source operand that is smaller than the
14139target field. In these cases, the source operand is zero-extended
14140to fill the target field.
14141
14142Fixed a problem where a Field starting bit offset (within the
14143parent operation region) was calculated incorrectly if the
14144
14145alignment of the field differed from the access width.  This
14146affected CreateWordField, CreateDwordField, CreateQwordField, and
14147possibly other fields that use the "AccessAny" keyword.
14148
14149Fixed a problem introduced in the 11_02_01 release where indirect
14150stores through method arguments did not operate correctly.
14151
141522) Linux:
14153
14154Implemented boot-time ACPI table parsing support
14155(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
14156facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
14157legacy BIOS interfaces (e.g. MPS) for the configuration of system
14158processors, memory, and interrupts during setup_arch().  Note that
14159this patch does not include the required architecture-specific
14160changes required to apply this information -- subsequent patches
14161will be posted for both IA32 and IA64 to achieve this.
14162
14163Added low-level sleep support for IA32 platforms, courtesy of Pat
14164Mochel. This allows IA32 systems to transition to/from various
14165sleeping states (e.g. S1, S3), although the lack of a centralized
14166driver model and power-manageable drivers will prevent its
14167(successful) use on most systems.
14168
14169Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
14170submenu, unified IA32 and IA64 options, added new "Boot using ACPI
14171tables" option, etc.
14172
14173Increased the default timeout for the EC driver from 1ms to 10ms
14174(1000 cycles of 10us) to try to address AE_TIME errors during EC
14175transactions.
14176
14177 ----------------------------------------
14178Summary of changes for this label: 11_02_01
14179
141801) ACPI CA Core Subsystem:
14181
14182ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
14183(QWordAcc keyword). All ACPI 2.0 64-bit support is now
14184implemented.
14185
14186OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
14187changes to support ACPI 2.0 Qword field access.  Read/Write
14188PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
14189accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
14190the value parameter for the address space handler interface is now
14191an ACPI_INTEGER.  OSL implementations of these interfaces must now
14192handle the case where the Width parameter is 64.
14193
14194Index Fields: Fixed a problem where unaligned bit assembly and
14195disassembly for IndexFields was not supported correctly.
14196
14197Index and Bank Fields:  Nested Index and Bank Fields are now
14198supported. During field access, a check is performed to ensure
14199that the value written to an Index or Bank register is not out of
14200the range of the register.  The Index (or Bank) register is
14201written before each access to the field data. Future support will
14202include allowing individual IndexFields to be wider than the
14203DataRegister width.
14204
14205Fields: Fixed a problem where the AML interpreter was incorrectly
14206attempting to write beyond the end of a Field/OpRegion.  This was
14207a boundary case that occurred when a DWORD field was written to a
14208BYTE access OpRegion, forcing multiple writes and causing the
14209interpreter to write one datum too many.
14210
14211Fields: Fixed a problem with Field/OpRegion access where the
14212starting bit address of a field was incorrectly calculated if the
14213current access type was wider than a byte (WordAcc, DwordAcc, or
14214QwordAcc).
14215
14216Fields: Fixed a problem where forward references to individual
14217FieldUnits (individual Field names within a Field definition) were
14218not resolved during the AML table load.
14219
14220Fields: Fixed a problem where forward references from a Field
14221definition to the parent Operation Region definition were not
14222resolved during the AML table load.
14223
14224Fields: Duplicate FieldUnit names within a scope are now detected
14225during AML table load.
14226
14227Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
14228returned an incorrect name for the root node.
14229
14230Code and Data Size: Code and Data optimizations have permitted new
14231feature development with an actual reduction in the library size.
14232Current core subsystem library sizes are shown below.  These are
14233the code and data sizes for the acpica.lib produced by the
14234Microsoft Visual C++ 6.0 compiler, and these values do not include
14235any ACPI driver or OSPM code.  The debug version of the code
14236includes the debug output trace mechanism and has a larger code
14237and data size.  Note that these values will vary depending on the
14238efficiency of the compiler and the compiler options used during
14239generation.
14240
14241  Previous Release (10_18_01):
14242     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14243     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14244
14245  Current Release:
14246     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14247     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14248
14249 2) Linux:
14250
14251Improved /proc processor output (Pavel Machek) Re-added
14252MODULE_LICENSE("GPL") to all modules.
14253
14254 3) ASL Compiler version X2030:
14255
14256Duplicate FieldUnit names within a scope are now detected and
14257flagged as errors.
14258
14259 4) Documentation:
14260
14261Programmer Reference updated to reflect OSL and address space
14262handler interface changes described above.
14263
14264----------------------------------------
14265Summary of changes for this label: 10_18_01
14266
14267ACPI CA Core Subsystem:
14268
14269Fixed a problem with the internal object reference count mechanism
14270that occasionally caused premature object deletion. This resolves
14271all of the outstanding problem reports where an object is deleted
14272in the middle of an interpreter evaluation.  Although this problem
14273only showed up in rather obscure cases, the solution to the
14274problem involved an adjustment of all reference counts involving
14275objects attached to namespace nodes.
14276
14277Fixed a problem with Field support in the interpreter where
14278writing to an aligned field whose length is an exact multiple (2
14279or greater) of the field access granularity would cause an attempt
14280to write beyond the end of the field.
14281
14282The top level AML opcode execution functions within the
14283interpreter have been renamed with a more meaningful and
14284consistent naming convention.  The modules exmonad.c and
14285exdyadic.c were eliminated.  New modules are exoparg1.c,
14286exoparg2.c, exoparg3.c, and exoparg6.c.
14287
14288Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
14289
14290Fixed a problem where the AML debugger was causing some internal
14291objects to not be deleted during subsystem termination.
14292
14293Fixed a problem with the external AcpiEvaluateObject interface
14294where the subsystem would fault if the named object to be
14295evaluated refered to a constant such as Zero, Ones, etc.
14296
14297Fixed a problem with IndexFields and BankFields where the
14298subsystem would fault if the index, data, or bank registers were
14299not defined in the same scope as the field itself.
14300
14301Added printf format string checking for compilers that support
14302this feature.  Corrected more than 50 instances of issues with
14303format specifiers within invocations of ACPI_DEBUG_PRINT
14304throughout the core subsystem code.
14305
14306The ASL "Revision" operator now returns the ACPI support level
14307implemented in the core - the value "2" since the ACPI 2.0 support
14308is more than 50% implemented.
14309
14310Enhanced the output of the AML debugger "dump namespace" command
14311to output in a more human-readable form.
14312
14313Current core subsystem library code sizes are shown below.  These
14314
14315are the code and data sizes for the acpica.lib produced by the
14316Microsoft Visual C++ 6.0 compiler, and these values do not include
14317any ACPI driver or OSPM code.  The debug version of the code
14318includes the full debug trace mechanism -- leading to a much
14319
14320larger code and data size.  Note that these values will vary
14321depending on the efficiency of the compiler and the compiler
14322options used during generation.
14323
14324     Previous Label (09_20_01):
14325     Non-Debug Version:    65K Code,     5K Data,     70K Total
14326     Debug Version:       138K Code,    58K Data,    196K Total
14327
14328     This Label:
14329
14330     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14331     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14332
14333Linux:
14334
14335Implemented a "Bad BIOS Blacklist" to track machines that have
14336known ASL/AML problems.
14337
14338Enhanced the /proc interface for the thermal zone driver and added
14339support for _HOT (the critical suspend trip point).  The 'info'
14340file now includes threshold/policy information, and allows setting
14341of _SCP (cooling preference) and _TZP (polling frequency) values
14342to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
14343frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
14344preference to the passive/quiet mode (if supported by the ASL).
14345
14346Implemented a workaround for a gcc bug that resuted in an OOPs
14347when loading the control method battery driver.
14348
14349 ----------------------------------------
14350Summary of changes for this label: 09_20_01
14351
14352 ACPI CA Core Subsystem:
14353
14354The AcpiEnableEvent and AcpiDisableEvent interfaces have been
14355modified to allow individual GPE levels to be flagged as wake-
14356enabled (i.e., these GPEs are to remain enabled when the platform
14357sleeps.)
14358
14359The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
14360support wake-enabled GPEs.  This means that upon entering the
14361sleep state, all GPEs that are not wake-enabled are disabled.
14362When leaving the sleep state, these GPEs are reenabled.
14363
14364A local double-precision divide/modulo module has been added to
14365enhance portability to OS kernels where a 64-bit math library is
14366not available.  The new module is "utmath.c".
14367
14368Several optimizations have been made to reduce the use of CPU
14369stack.  Originally over 2K, the maximum stack usage is now below
143702K at 1860  bytes (1.82k)
14371
14372Fixed a problem with the AcpiGetFirmwareTable interface where the
14373root table pointer was not mapped into a logical address properly.
14374
14375Fixed a problem where a NULL pointer was being dereferenced in the
14376interpreter code for the ASL Notify operator.
14377
14378Fixed a problem where the use of the ASL Revision operator
14379returned an error. This operator now returns the current version
14380of the ACPI CA core subsystem.
14381
14382Fixed a problem where objects passed as control method parameters
14383to AcpiEvaluateObject were always deleted at method termination.
14384However, these objects may end up being stored into the namespace
14385by the called method.  The object reference count mechanism was
14386applied to these objects instead of a force delete.
14387
14388Fixed a problem where static strings or buffers (contained in the
14389AML code) that are declared as package elements within the ASL
14390code could cause a fault because the interpreter would attempt to
14391delete them.  These objects are now marked with the "static
14392object" flag to prevent any attempt to delete them.
14393
14394Implemented an interpreter optimization to use operands directly
14395from the state object instead of extracting the operands to local
14396variables.  This reduces stack use and code size, and improves
14397performance.
14398
14399The module exxface.c was eliminated as it was an unnecessary extra
14400layer of code.
14401
14402Current core subsystem library code sizes are shown below.  These
14403are the code and data sizes for the acpica.lib produced by the
14404Microsoft Visual C++ 6.0 compiler, and these values do not include
14405any ACPI driver or OSPM code.  The debug version of the code
14406includes the full debug trace mechanism -- leading to a much
14407larger code and data size.  Note that these values will vary
14408depending on the efficiency of the compiler and the compiler
14409options used during generation.
14410
14411  Non-Debug Version:  65K Code,   5K Data,   70K Total
14412(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
14413Total  (Previously 195K)
14414
14415Linux:
14416
14417Support for ACPI 2.0 64-bit integers has been added.   All ACPI
14418Integer objects are now 64 bits wide
14419
14420All Acpi data types and structures are now in lower case.  Only
14421Acpi macros are upper case for differentiation.
14422
14423 Documentation:
14424
14425Changes to the external interfaces as described above.
14426
14427 ----------------------------------------
14428Summary of changes for this label: 08_31_01
14429
14430 ACPI CA Core Subsystem:
14431
14432A bug with interpreter implementation of the ASL Divide operator
14433was found and fixed.  The implicit function return value (not the
14434explicit store operands) was returning the remainder instead of
14435the quotient.  This was a longstanding bug and it fixes several
14436known outstanding issues on various platforms.
14437
14438The ACPI_DEBUG_PRINT and function trace entry/exit macros have
14439been further optimized for size.  There are 700 invocations of the
14440DEBUG_PRINT macro alone, so each optimization reduces the size of
14441the debug version of the subsystem significantly.
14442
14443A stack trace mechanism has been implemented.  The maximum stack
14444usage is about 2K on 32-bit platforms.  The debugger command "stat
14445stack" will display the current maximum stack usage.
14446
14447All public symbols and global variables within the subsystem are
14448now prefixed with the string "Acpi".  This keeps all of the
14449symbols grouped together in a kernel map, and avoids conflicts
14450with other kernel subsystems.
14451
14452Most of the internal fixed lookup tables have been moved into the
14453code segment via the const operator.
14454
14455Several enhancements have been made to the interpreter to both
14456reduce the code size and improve performance.
14457
14458Current core subsystem library code sizes are shown below.  These
14459are the code and data sizes for the acpica.lib produced by the
14460Microsoft Visual C++ 6.0 compiler, and these values do not include
14461any ACPI driver or OSPM code.  The debug version of the code
14462includes the full debug trace mechanism which contains over 700
14463invocations of the DEBUG_PRINT macro, 500 function entry macro
14464invocations, and over 900 function exit macro invocations --
14465leading to a much larger code and data size.  Note that these
14466values will vary depending on the efficiency of the compiler and
14467the compiler options used during generation.
14468
14469        Non-Debug Version:  64K Code,   5K Data,   69K Total
14470Debug Version:     137K Code,  58K Data,  195K Total
14471
14472 Linux:
14473
14474Implemented wbinvd() macro, pending a kernel-wide definition.
14475
14476Fixed /proc/acpi/event to handle poll() and short reads.
14477
14478 ASL Compiler, version X2026:
14479
14480Fixed a problem introduced in the previous label where the AML
14481
14482code emitted for package objects produced packages with zero
14483length.
14484
14485 ----------------------------------------
14486Summary of changes for this label: 08_16_01
14487
14488ACPI CA Core Subsystem:
14489
14490The following ACPI 2.0 ASL operators have been implemented in the
14491AML interpreter (These are already supported by the Intel ASL
14492compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
14493ToBuffer.  Support for 64-bit AML constants is implemented in the
14494AML parser, debugger, and disassembler.
14495
14496The internal memory tracking mechanism (leak detection code) has
14497been upgraded to reduce the memory overhead (a separate tracking
14498block is no longer allocated for each memory allocation), and now
14499supports all of the internal object caches.
14500
14501The data structures and code for the internal object caches have
14502been coelesced and optimized so that there is a single cache and
14503memory list data structure and a single group of functions that
14504implement generic cache management.  This has reduced the code
14505size in both the debug and release versions of the subsystem.
14506
14507The DEBUG_PRINT macro(s) have been optimized for size and replaced
14508by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
14509different, because it generates a single call to an internal
14510function.  This results in a savings of about 90 bytes per
14511invocation, resulting in an overall code and data savings of about
1451216% in the debug version of the subsystem.
14513
14514 Linux:
14515
14516Fixed C3 disk corruption problems and re-enabled C3 on supporting
14517machines.
14518
14519Integrated low-level sleep code by Patrick Mochel.
14520
14521Further tweaked source code Linuxization.
14522
14523Other minor fixes.
14524
14525 ASL Compiler:
14526
14527Support for ACPI 2.0 variable length packages is fixed/completed.
14528
14529Fixed a problem where the optional length parameter for the ACPI
145302.0 ToString operator.
14531
14532Fixed multiple extraneous error messages when a syntax error is
14533detected within the declaration line of a control method.
14534
14535 ----------------------------------------
14536Summary of changes for this label: 07_17_01
14537
14538ACPI CA Core Subsystem:
14539
14540Added a new interface named AcpiGetFirmwareTable to obtain any
14541ACPI table via the ACPI signature.  The interface can be called at
14542any time during kernel initialization, even before the kernel
14543virtual memory manager is initialized and paging is enabled.  This
14544allows kernel subsystems to obtain ACPI tables very early, even
14545before the ACPI CA subsystem is initialized.
14546
14547Fixed a problem where Fields defined with the AnyAcc attribute
14548could be resolved to the incorrect address under the following
14549conditions: 1) the field width is larger than 8 bits and 2) the
14550parent operation region is not defined on a DWORD boundary.
14551
14552Fixed a problem where the interpreter is not being locked during
14553namespace initialization (during execution of the _INI control
14554methods), causing an error when an attempt is made to release it
14555later.
14556
14557ACPI 2.0 support in the AML Interpreter has begun and will be
14558ongoing throughout the rest of this year.  In this label, The Mod
14559operator is implemented.
14560
14561Added a new data type to contain full PCI addresses named
14562ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
14563and Function values.
14564
14565 Linux:
14566
14567Enhanced the Linux version of the source code to change most
14568capitalized ACPI type names to lowercase. For example, all
14569instances of ACPI_STATUS are changed to acpi_status.  This will
14570result in a large diff, but the change is strictly cosmetic and
14571aligns the CA code closer to the Linux coding standard.
14572
14573OSL Interfaces:
14574
14575The interfaces to the PCI configuration space have been changed to
14576add the PCI Segment number and to split the single 32-bit combined
14577DeviceFunction field into two 16-bit fields.  This was
14578accomplished by moving the four values that define an address in
14579PCI configuration space (segment, bus, device, and function) to
14580the new ACPI_PCI_ID structure.
14581
14582The changes to the PCI configuration space interfaces led to a
14583reexamination of the complete set of address space access
14584interfaces for PCI, I/O, and Memory.  The previously existing 18
14585interfaces have proven difficult to maintain (any small change
14586must be propagated across at least 6 interfaces) and do not easily
14587allow for future expansion to 64 bits if necessary.  Also, on some
14588systems, it would not be appropriate to demultiplex the access
14589width (8, 16, 32,or 64) before calling the OSL if the
14590corresponding native OS interfaces contain a similar access width
14591parameter.  For these reasons, the 18 address space interfaces
14592have been replaced by these 6 new ones:
14593
14594AcpiOsReadPciConfiguration
14595AcpiOsWritePciConfiguration
14596AcpiOsReadMemory
14597AcpiOsWriteMemory
14598AcpiOsReadPort
14599AcpiOsWritePort
14600
14601Added a new interface named AcpiOsGetRootPointer to allow the OSL
14602to perform the platform and/or OS-specific actions necessary to
14603obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
14604interface will simply call down to the CA core to perform the low-
14605memory search for the table.  On IA-64, the RSDP is obtained from
14606EFI.  Migrating this interface to the OSL allows the CA core to
14607
14608remain OS and platform independent.
14609
14610Added a new interface named AcpiOsSignal to provide a generic
14611"function code and pointer" interface for various miscellaneous
14612signals and notifications that must be made to the host OS.   The
14613first such signals are intended to support the ASL Fatal and
14614Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
14615interface has been obsoleted.
14616
14617The definition of the AcpiFormatException interface has been
14618changed to simplify its use.  The caller no longer must supply a
14619buffer to the call; A pointer to a const string is now returned
14620directly.  This allows the call to be easily used in printf
14621statements, etc. since the caller does not have to manage a local
14622buffer.
14623
14624
14625 ASL Compiler, Version X2025:
14626
14627The ACPI 2.0 Switch/Case/Default operators have been implemented
14628and are fully functional.  They will work with all ACPI 1.0
14629interpreters, since the operators are simply translated to If/Else
14630pairs.
14631
14632The ACPI 2.0 ElseIf operator is implemented and will also work
14633with 1.0 interpreters, for the same reason.
14634
14635Implemented support for ACPI 2.0 variable-length packages.  These
14636packages have a separate opcode, and their size is determined by
14637the interpreter at run-time.
14638
14639Documentation The ACPI CA Programmer Reference has been updated to
14640reflect the new interfaces and changes to existing interfaces.
14641
14642 ------------------------------------------
14643Summary of changes for this label: 06_15_01
14644
14645 ACPI CA Core Subsystem:
14646
14647Fixed a problem where a DWORD-accessed field within a Buffer
14648object would get its byte address inadvertently rounded down to
14649the nearest DWORD.  Buffers are always Byte-accessible.
14650
14651 ASL Compiler, version X2024:
14652
14653Fixed a problem where the Switch() operator would either fault or
14654hang the compiler.  Note however, that the AML code for this ACPI
146552.0 operator is not yet implemented.
14656
14657Compiler uses the new AcpiOsGetTimer interface to obtain compile
14658timings.
14659
14660Implementation of the CreateField operator automatically converts
14661a reference to a named field within a resource descriptor from a
14662byte offset to a bit offset if required.
14663
14664Added some missing named fields from the resource descriptor
14665support. These are the names that are automatically created by the
14666compiler to reference fields within a descriptor.  They are only
14667valid at compile time and are not passed through to the AML
14668interpreter.
14669
14670Resource descriptor named fields are now typed as Integers and
14671subject to compile-time typechecking when used in expressions.
14672
14673 ------------------------------------------
14674Summary of changes for this label: 05_18_01
14675
14676 ACPI CA Core Subsystem:
14677
14678Fixed a couple of problems in the Field support code where bits
14679from adjacent fields could be returned along with the proper field
14680bits. Restructured the field support code to improve performance,
14681readability and maintainability.
14682
14683New DEBUG_PRINTP macro automatically inserts the procedure name
14684into the output, saving hundreds of copies of procedure name
14685strings within the source, shrinking the memory footprint of the
14686debug version of the core subsystem.
14687
14688 Source Code Structure:
14689
14690The source code directory tree was restructured to reflect the
14691current organization of the component architecture.  Some files
14692and directories have been moved and/or renamed.
14693
14694 Linux:
14695
14696Fixed leaking kacpidpc processes.
14697
14698Fixed queueing event data even when /proc/acpi/event is not
14699opened.
14700
14701 ASL Compiler, version X2020:
14702
14703Memory allocation performance enhancement - over 24X compile time
14704improvement on large ASL files.  Parse nodes and namestring
14705buffers are now allocated from a large internal compiler buffer.
14706
14707The temporary .SRC file is deleted unless the "-s" option is
14708specified
14709
14710The "-d" debug output option now sends all output to the .DBG file
14711instead of the console.
14712
14713"External" second parameter is now optional
14714
14715"ElseIf" syntax now properly allows the predicate
14716
14717Last operand to "Load" now recognized as a Target operand
14718
14719Debug object can now be used anywhere as a normal object.
14720
14721ResourceTemplate now returns an object of type BUFFER
14722
14723EISAID now returns an object of type INTEGER
14724
14725"Index" now works with a STRING operand
14726
14727"LoadTable" now accepts optional parameters
14728
14729"ToString" length parameter is now optional
14730
14731"Interrupt (ResourceType," parse error fixed.
14732
14733"Register" with a user-defined region space parse error fixed
14734
14735Escaped backslash at the end of a string ("\\") scan/parse error
14736fixed
14737
14738"Revision" is now an object of type INTEGER.
14739
14740
14741
14742------------------------------------------
14743Summary of changes for this label: 05_02_01
14744
14745Linux:
14746
14747/proc/acpi/event now blocks properly.
14748
14749Removed /proc/sys/acpi. You can still dump your DSDT from
14750/proc/acpi/dsdt.
14751
14752 ACPI CA Core Subsystem:
14753
14754Fixed a problem introduced in the previous label where some of the
14755"small" resource descriptor types were not recognized.
14756
14757Improved error messages for the case where an ASL Field is outside
14758the range of the parent operation region.
14759
14760 ASL Compiler, version X2018:
14761
14762
14763Added error detection for ASL Fields that extend beyond the length
14764of the parent operation region (only if the length of the region
14765is known at compile time.)  This includes fields that have a
14766minimum access width that is smaller than the parent region, and
14767individual field units that are partially or entirely beyond the
14768extent of the parent.
14769
14770
14771
14772------------------------------------------
14773Summary of changes for this label: 04_27_01
14774
14775 ACPI CA Core Subsystem:
14776
14777Fixed a problem where the namespace mutex could be released at the
14778wrong time during execution of AcpiRemoveAddressSpaceHandler.
14779
14780Added optional thread ID output for debug traces, to simplify
14781debugging of multiple threads.  Added context switch notification
14782when the debug code realizes that a different thread is now
14783executing ACPI code.
14784
14785Some additional external data types have been prefixed with the
14786string "ACPI_" for consistency.  This may effect existing code.
14787The data types affected are the external callback typedefs - e.g.,
14788
14789WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
14790
14791 Linux:
14792
14793Fixed an issue with the OSL semaphore implementation where a
14794thread was waking up with an error from receiving a SIGCHLD
14795signal.
14796
14797Linux version of ACPI CA now uses the system C library for string
14798manipulation routines instead of a local implementation.
14799
14800Cleaned up comments and removed TBDs.
14801
14802 ASL Compiler, version X2017:
14803
14804Enhanced error detection and reporting for all file I/O
14805operations.
14806
14807 Documentation:
14808
14809Programmer Reference updated to version 1.06.
14810
14811
14812
14813------------------------------------------
14814Summary of changes for this label: 04_13_01
14815
14816 ACPI CA Core Subsystem:
14817
14818Restructured support for BufferFields and RegionFields.
14819BankFields support is now fully operational.  All known 32-bit
14820limitations on field sizes have been removed.  Both BufferFields
14821and (Operation) RegionFields are now supported by the same field
14822management code.
14823
14824Resource support now supports QWORD address and IO resources. The
1482516/32/64 bit address structures and the Extended IRQ structure
14826have been changed to properly handle Source Resource strings.
14827
14828A ThreadId of -1 is now used to indicate a "mutex not acquired"
14829condition internally and must never be returned by AcpiOsThreadId.
14830This reserved value was changed from 0 since Unix systems allow a
14831thread ID of 0.
14832
14833Linux:
14834
14835Driver code reorganized to enhance portability
14836
14837Added a kernel configuration option to control ACPI_DEBUG
14838
14839Fixed the EC driver to honor _GLK.
14840
14841ASL Compiler, version X2016:
14842
14843Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
14844address space was set to 0, not 0x7f as it should be.
14845
14846 ------------------------------------------
14847Summary of changes for this label: 03_13_01
14848
14849 ACPI CA Core Subsystem:
14850
14851During ACPI initialization, the _SB_._INI method is now run if
14852present.
14853
14854Notify handler fix - notifies are deferred until the parent method
14855completes execution.  This fixes the "mutex already acquired"
14856issue seen occasionally.
14857
14858Part of the "implicit conversion" rules in ACPI 2.0 have been
14859found to cause compatibility problems with existing ASL/AML.  The
14860convert "result-to-target-type" implementation has been removed
14861for stores to method Args and Locals.  Source operand conversion
14862is still fully implemented.  Possible changes to ACPI 2.0
14863specification pending.
14864
14865Fix to AcpiRsCalculatePciRoutingTableLength to return correct
14866length.
14867
14868Fix for compiler warnings for 64-bit compiles.
14869
14870 Linux:
14871
14872/proc output aligned for easier parsing.
14873
14874Release-version compile problem fixed.
14875
14876New kernel configuration options documented in Configure.help.
14877
14878IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
14879context" message.
14880
14881 OSPM:
14882
14883Power resource driver integrated with bus manager.
14884
14885Fixed kernel fault during active cooling for thermal zones.
14886
14887Source Code:
14888
14889The source code tree has been restructured.
14890
14891
14892
14893------------------------------------------
14894Summary of changes for this label: 03_02_01
14895
14896 Linux OS Services Layer (OSL):
14897
14898Major revision of all Linux-specific code.
14899
14900Modularized all ACPI-specific drivers.
14901
14902Added new thermal zone and power resource drivers.
14903
14904Revamped /proc interface (new functionality is under /proc/acpi).
14905
14906New kernel configuration options.
14907
14908 Linux known issues:
14909
14910New kernel configuration options not documented in Configure.help
14911yet.
14912
14913
14914Module dependencies not currently implemented. If used, they
14915should be loaded in this order: busmgr, power, ec, system,
14916processor, battery, ac_adapter, button, thermal.
14917
14918Modules will not load if CONFIG_MODVERSION is set.
14919
14920IBM 600E - entering S5 may reboot instead of shutting down.
14921
14922IBM 600E - Sleep button may generate "Invalid <NULL> context"
14923message.
14924
14925Some systems may fail with "execution mutex already acquired"
14926message.
14927
14928 ACPI CA Core Subsystem:
14929
14930Added a new OSL Interface, AcpiOsGetThreadId.  This was required
14931for the  deadlock detection code. Defined to return a non-zero, 32-
14932bit thread ID for the currently executing thread.  May be a non-
14933zero constant integer on single-thread systems.
14934
14935Implemented deadlock detection for internal subsystem mutexes.  We
14936may add conditional compilation for this code (debug only) later.
14937
14938ASL/AML Mutex object semantics are now fully supported.  This
14939includes multiple acquires/releases by owner and support for the
14940
14941Mutex SyncLevel parameter.
14942
14943A new "Force Release" mechanism automatically frees all ASL
14944Mutexes that have been acquired but not released when a thread
14945exits the interpreter.  This forces conformance to the ACPI spec
14946("All mutexes must be released when an invocation exits") and
14947prevents deadlocked ASL threads.  This mechanism can be expanded
14948(later) to monitor other resource acquisitions if OEM ASL code
14949continues to misbehave (which it will).
14950
14951Several new ACPI exception codes have been added for the Mutex
14952support.
14953
14954Recursive method calls are now allowed and supported (the ACPI
14955spec does in fact allow recursive method calls.)  The number of
14956recursive calls is subject to the restrictions imposed by the
14957SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
14958parameter.
14959
14960Implemented support for the SyncLevel parameter for control
14961methods (ACPI 2.0 feature)
14962
14963Fixed a deadlock problem when multiple threads attempted to use
14964the interpreter.
14965
14966Fixed a problem where the string length of a String package
14967element was not always set in a package returned from
14968AcpiEvaluateObject.
14969
14970Fixed a problem where the length of a String package element was
14971not always included in the length of the overall package returned
14972from AcpiEvaluateObject.
14973
14974Added external interfaces (Acpi*) to the ACPI debug memory
14975manager.  This manager keeps a list of all outstanding
14976allocations, and can therefore detect memory leaks and attempts to
14977free memory blocks more than once. Useful for code such as the
14978power manager, etc.  May not be appropriate for device drivers.
14979Performance with the debug code enabled is slow.
14980
14981The ACPI Global Lock is now an optional hardware element.
14982
14983 ASL Compiler Version X2015:
14984
14985Integrated changes to allow the compiler to be generated on
14986multiple platforms.
14987
14988Linux makefile added to generate the compiler on Linux
14989
14990 Source Code:
14991
14992All platform-specific headers have been moved to their own
14993subdirectory, Include/Platform.
14994
14995New source file added, Interpreter/ammutex.c
14996
14997New header file, Include/acstruct.h
14998
14999 Documentation:
15000
15001The programmer reference has been updated for the following new
15002interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
15003
15004 ------------------------------------------
15005Summary of changes for this label: 02_08_01
15006
15007Core ACPI CA Subsystem: Fixed a problem where an error was
15008incorrectly returned if the return resource buffer was larger than
15009the actual data (in the resource interfaces).
15010
15011References to named objects within packages are resolved to the
15012
15013full pathname string before packages are returned directly (via
15014the AcpiEvaluateObject interface) or indirectly via the resource
15015interfaces.
15016
15017Linux OS Services Layer (OSL):
15018
15019Improved /proc battery interface.
15020
15021
15022Added C-state debugging output and other miscellaneous fixes.
15023
15024ASL Compiler Version X2014:
15025
15026All defined method arguments can now be used as local variables,
15027including the ones that are not actually passed in as parameters.
15028The compiler tracks initialization of the arguments and issues an
15029exception if they are used without prior assignment (just like
15030locals).
15031
15032The -o option now specifies a filename prefix that is used for all
15033output files, including the AML output file.  Otherwise, the
15034default behavior is as follows:  1) the AML goes to the file
15035specified in the DSDT.  2) all other output files use the input
15036source filename as the base.
15037
15038 ------------------------------------------
15039Summary of changes for this label: 01_25_01
15040
15041Core ACPI CA Subsystem: Restructured the implementation of object
15042store support within the  interpreter.  This includes support for
15043the Store operator as well  as any ASL operators that include a
15044target operand.
15045
15046Partially implemented support for Implicit Result-to-Target
15047conversion. This is when a result object is converted on the fly
15048to the type of  an existing target object.  Completion of this
15049support is pending  further analysis of the ACPI specification
15050concerning this matter.
15051
15052CPU-specific code has been removed from the subsystem (hardware
15053directory).
15054
15055New Power Management Timer functions added
15056
15057Linux OS Services Layer (OSL): Moved system state transition code
15058to the core, fixed it, and modified  Linux OSL accordingly.
15059
15060Fixed C2 and C3 latency calculations.
15061
15062
15063We no longer use the compilation date for the version message on
15064initialization, but retrieve the version from AcpiGetSystemInfo().
15065
15066Incorporated for fix Sony VAIO machines.
15067
15068Documentation:  The Programmer Reference has been updated and
15069reformatted.
15070
15071
15072ASL Compiler:  Version X2013: Fixed a problem where the line
15073numbering and error reporting could get out  of sync in the
15074presence of multiple include files.
15075
15076 ------------------------------------------
15077Summary of changes for this label: 01_15_01
15078
15079Core ACPI CA Subsystem:
15080
15081Implemented support for type conversions in the execution of the
15082ASL  Concatenate operator (The second operand is converted to
15083match the type  of the first operand before concatenation.)
15084
15085Support for implicit source operand conversion is partially
15086implemented.   The ASL source operand types Integer, Buffer, and
15087String are freely  interchangeable for most ASL operators and are
15088converted by the interpreter  on the fly as required.  Implicit
15089Target operand conversion (where the  result is converted to the
15090target type before storing) is not yet implemented.
15091
15092Support for 32-bit and 64-bit BCD integers is implemented.
15093
15094Problem fixed where a field read on an aligned field could cause a
15095read  past the end of the field.
15096
15097New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
15098does not return a value, but the caller expects one.  (The ASL
15099compiler flags this as a warning.)
15100
15101ASL Compiler:
15102
15103Version X2011:
151041. Static typechecking of all operands is implemented. This
15105prevents the use of invalid objects (such as using a Package where
15106an Integer is required) at compile time instead of at interpreter
15107run-time.
151082. The ASL source line is printed with ALL errors and warnings.
151093. Bug fix for source EOF without final linefeed.
151104. Debug option is split into a parse trace and a namespace trace.
151115. Namespace output option (-n) includes initial values for
15112integers and strings.
151136. Parse-only option added for quick syntax checking.
151147. Compiler checks for duplicate ACPI name declarations
15115
15116Version X2012:
151171. Relaxed typechecking to allow interchangeability between
15118strings, integers, and buffers.  These types are now converted by
15119the interpreter at runtime.
151202. Compiler reports time taken by each internal subsystem in the
15121debug         output file.
15122
15123
15124 ------------------------------------------
15125Summary of changes for this label: 12_14_00
15126
15127ASL Compiler:
15128
15129This is the first official release of the compiler. Since the
15130compiler requires elements of the Core Subsystem, this label
15131synchronizes everything.
15132
15133------------------------------------------
15134Summary of changes for this label: 12_08_00
15135
15136
15137Fixed a problem where named references within the ASL definition
15138of both OperationRegions and CreateXXXFields did not work
15139properly.  The symptom was an AE_AML_OPERAND_TYPE during
15140initialization of the region/field. This is similar (but not
15141related internally) to the problem that was fixed in the last
15142label.
15143
15144Implemented both 32-bit and 64-bit support for the BCD ASL
15145functions ToBCD and FromBCD.
15146
15147Updated all legal headers to include "2000" in the copyright
15148years.
15149
15150 ------------------------------------------
15151Summary of changes for this label: 12_01_00
15152
15153Fixed a problem where method invocations within the ASL definition
15154of both OperationRegions and CreateXXXFields did not work
15155properly.  The symptom was an AE_AML_OPERAND_TYPE during
15156initialization of the region/field:
15157
15158  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
15159[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
15160(0x3005)
15161
15162Fixed a problem where operators with more than one nested
15163subexpression would fail.  The symptoms were varied, by mostly
15164AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
15165problem that has gone unnoticed until now.
15166
15167  Subtract (Add (1,2), Multiply (3,4))
15168
15169Fixed a problem where AcpiGetHandle didn't quite get fixed in the
15170previous build (The prefix part of a relative path was handled
15171incorrectly).
15172
15173Fixed a problem where Operation Region initialization failed if
15174the operation region name was a "namepath" instead of a simple
15175"nameseg". Symptom was an AE_NO_OPERAND error.
15176
15177Fixed a problem where an assignment to a local variable via the
15178indirect RefOf mechanism only worked for the first such
15179assignment.  Subsequent assignments were ignored.
15180
15181 ------------------------------------------
15182Summary of changes for this label: 11_15_00
15183
15184ACPI 2.0 table support with backwards support for ACPI 1.0 and the
151850.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
15186the AML  interpreter does NOT have support for the new 2.0 ASL
15187grammar terms at this time.
15188
15189All ACPI hardware access is via the GAS structures in the ACPI 2.0
15190FADT.
15191
15192All physical memory addresses across all platforms are now 64 bits
15193wide. Logical address width remains dependent on the platform
15194(i.e., "void *").
15195
15196AcpiOsMapMemory interface changed to a 64-bit physical address.
15197
15198The AML interpreter integer size is now 64 bits, as per the ACPI
151992.0 specification.
15200
15201For backwards compatibility with ACPI 1.0, ACPI tables with a
15202revision number less than 2 use 32-bit integers only.
15203
15204Fixed a problem where the evaluation of OpRegion operands did not
15205always resolve them to numbers properly.
15206
15207------------------------------------------
15208Summary of changes for this label: 10_20_00
15209
15210Fix for CBN_._STA issue.  This fix will allow correct access to
15211CBN_ OpRegions when the _STA returns 0x8.
15212
15213Support to convert ACPI constants (Ones, Zeros, One) to actual
15214values before a package object is returned
15215
15216Fix for method call as predicate to if/while construct causing
15217incorrect if/while behavior
15218
15219Fix for Else block package lengths sometimes calculated wrong (if
15220block > 63 bytes)
15221
15222Fix for Processor object length field, was always zero
15223
15224Table load abort if FACP sanity check fails
15225
15226Fix for problem with Scope(name) if name already exists
15227
15228Warning emitted if a named object referenced cannot be found
15229(resolved) during method execution.
15230
15231
15232
15233
15234
15235------------------------------------------
15236Summary of changes for this label: 9_29_00
15237
15238New table initialization interfaces: AcpiInitializeSubsystem no
15239longer has any parameters AcpiFindRootPointer - Find the RSDP (if
15240necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
15241>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
15242AcpiLoadTables
15243
15244Note: These interface changes require changes to all existing OSDs
15245
15246The PCI_Config default address space handler is always installed
15247at the root namespace object.
15248
15249-------------------------------------------
15250Summary of changes for this label: 09_15_00
15251
15252The new initialization architecture is implemented.  New
15253interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
15254AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
15255
15256(Namespace is automatically loaded when a table is loaded)
15257
15258The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1525952 bytes to 32 bytes.  There is usually one of these for every
15260namespace object, so the memory savings is significant.
15261
15262Implemented just-in-time evaluation of the CreateField operators.
15263
15264Bug fixes for IA-64 support have been integrated.
15265
15266Additional code review comments have been implemented
15267
15268The so-called "third pass parse" has been replaced by a final walk
15269through the namespace to initialize all operation regions (address
15270spaces) and fields that have not yet been initialized during the
15271execution of the various _INI and REG methods.
15272
15273New file - namespace/nsinit.c
15274
15275-------------------------------------------
15276Summary of changes for this label: 09_01_00
15277
15278Namespace manager data structures have been reworked to change the
15279primary  object from a table to a single object.  This has
15280resulted in dynamic memory  savings of 3X within the namespace and
152812X overall in the ACPI CA subsystem.
15282
15283Fixed problem where the call to AcpiEvFindPciRootBuses was
15284inadvertently left  commented out.
15285
15286Reduced the warning count when generating the source with the GCC
15287compiler.
15288
15289Revision numbers added to each module header showing the
15290SourceSafe version of the file.  Please refer to this version
15291number when giving us feedback or comments on individual modules.
15292
15293The main object types within the subsystem have been renamed to
15294clarify their  purpose:
15295
15296ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
15297ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
15298ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
15299
15300NOTE: no changes to the initialization sequence are included in
15301this label.
15302
15303-------------------------------------------
15304Summary of changes for this label: 08_23_00
15305
15306Fixed problem where TerminateControlMethod was being called
15307multiple times per  method
15308
15309Fixed debugger problem where single stepping caused a semaphore to
15310be  oversignalled
15311
15312Improved performance through additional parse object caching -
15313added  ACPI_EXTENDED_OP type
15314
15315-------------------------------------------
15316Summary of changes for this label: 08_10_00
15317
15318Parser/Interpreter integration:  Eliminated the creation of
15319complete parse trees  for ACPI tables and control methods.
15320Instead, parse subtrees are created and  then deleted as soon as
15321they are processed (Either entered into the namespace or  executed
15322by the interpreter).  This reduces the use of dynamic kernel
15323memory  significantly. (about 10X)
15324
15325Exception codes broken into classes and renumbered.  Be sure to
15326recompile all  code that includes acexcep.h.  Hopefully we won't
15327have to renumber the codes  again now that they are split into
15328classes (environment, programmer, AML code,  ACPI table, and
15329internal).
15330
15331Fixed some additional alignment issues in the Resource Manager
15332subcomponent
15333
15334Implemented semaphore tracking in the AcpiExec utility, and fixed
15335several places  where mutexes/semaphores were being unlocked
15336without a corresponding lock  operation.  There are no known
15337semaphore or mutex "leaks" at this time.
15338
15339Fixed the case where an ASL Return operator is used to return an
15340unnamed  package.
15341
15342-------------------------------------------
15343Summary of changes for this label: 07_28_00
15344
15345Fixed a problem with the way addresses were calculated in
15346AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
15347manifested itself when a Field was  created with WordAccess or
15348DwordAccess, but the field unit defined within the  Field was less
15349
15350than a Word or Dword.
15351
15352Fixed a problem in AmlDumpOperands() module's loop to pull
15353operands off of the  operand stack to display information. The
15354problem manifested itself as a TLB  error on 64-bit systems when
15355accessing an operand stack with two or more  operands.
15356
15357Fixed a problem with the PCI configuration space handlers where
15358context was  getting confused between accesses. This required a
15359change to the generic address  space handler and address space
15360setup definitions. Handlers now get both a  global handler context
15361(this is the one passed in by the user when executing
15362AcpiInstallAddressSpaceHandler() and a specific region context
15363that is unique to  each region (For example, the _ADR, _SEG and
15364_BBN values associated with a  specific region). The generic
15365function definitions have changed to the  following:
15366
15367typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
15368UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
15369*HandlerContext, // This used to be void *Context void
15370*RegionContext); // This is an additional parameter
15371
15372typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
15373RegionHandle, UINT32 Function, void *HandlerContext,  void
15374**RegionContext); // This used to be **ReturnContext
15375
15376-------------------------------------------
15377Summary of changes for this label: 07_21_00
15378
15379Major file consolidation and rename.  All files within the
15380interpreter have been  renamed as well as most header files.  This
15381was done to prevent collisions with  existing files in the host
15382OSs -- filenames such as "config.h" and "global.h"  seem to be
15383quite common.  The VC project files have been updated.  All
15384makefiles  will require modification.
15385
15386The parser/interpreter integration continues in Phase 5 with the
15387implementation  of a complete 2-pass parse (the AML is parsed
15388twice) for each table;  This  avoids the construction of a huge
15389parse tree and therefore reduces the amount of  dynamic memory
15390required by the subsystem.  Greater use of the parse object cache
15391means that performance is unaffected.
15392
15393Many comments from the two code reviews have been rolled in.
15394
15395The 64-bit alignment support is complete.
15396
15397-------------------------------------------
15398Summary of changes for this label: 06_30_00
15399
15400With a nod and a tip of the hat to the technology of yesteryear,
15401we've added  support in the source code for 80 column output
15402devices.  The code is now mostly  constrained to 80 columns or
15403less to support environments and editors that 1)  cannot display
15404or print more than 80 characters on a single line, and 2) cannot
15405disable line wrapping.
15406
15407A major restructuring of the namespace data structure has been
15408completed.  The  result is 1) cleaner and more
15409understandable/maintainable code, and 2) a  significant reduction
15410in the dynamic memory requirement for each named ACPI  object
15411(almost half).
15412
15413-------------------------------------------
15414Summary of changes for this label: 06_23_00
15415
15416Linux support has been added.  In order to obtain approval to get
15417the ACPI CA  subsystem into the Linux kernel, we've had to make
15418quite a few changes to the  base subsystem that will affect all
15419users (all the changes are generic and OS- independent).  The
15420effects of these global changes have been somewhat far  reaching.
15421Files have been merged and/or renamed and interfaces have been
15422renamed.   The major changes are described below.
15423
15424Osd* interfaces renamed to AcpiOs* to eliminate namespace
15425pollution/confusion  within our target kernels.  All OSD
15426interfaces must be modified to match the new  naming convention.
15427
15428Files merged across the subsystem.  A number of the smaller source
15429and header  files have been merged to reduce the file count and
15430increase the density of the  existing files.  There are too many
15431to list here.  In general, makefiles that  call out individual
15432files will require rebuilding.
15433
15434Interpreter files renamed.  All interpreter files now have the
15435prefix am*  instead of ie* and is*.
15436
15437Header files renamed:  The acapi.h file is now acpixf.h.  The
15438acpiosd.h file is  now acpiosxf.h.  We are removing references to
15439the acronym "API" since it is  somewhat windowsy. The new name is
15440"external interface" or xface or xf in the  filenames.j
15441
15442
15443All manifest constants have been forced to upper case (some were
15444mixed case.)   Also, the string "ACPI_" has been prepended to many
15445(not all) of the constants,  typedefs, and structs.
15446
15447The globals "DebugLevel" and "DebugLayer" have been renamed
15448"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
15449
15450All other globals within the subsystem are now prefixed with
15451"AcpiGbl_" Internal procedures within the subsystem are now
15452prefixed with "Acpi" (with only  a few exceptions).  The original
15453two-letter abbreviation for the subcomponent  remains after "Acpi"
15454- for example, CmCallocate became AcpiCmCallocate.
15455
15456Added a source code translation/conversion utility.  Used to
15457generate the Linux  source code, it can be modified to generate
15458other types of source as well. Can  also be used to cleanup
15459existing source by removing extraneous spaces and blank  lines.
15460Found in tools/acpisrc/*
15461
15462OsdUnMapMemory was renamed to OsdUnmapMemory and then
15463AcpiOsUnmapMemory.  (UnMap  became Unmap).
15464
15465A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
15466When set to  one, this indicates that the caller wants to use the
15467
15468semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
15469both types.  However, implementers of this  call may want to use
15470different OS primitives depending on the type of semaphore
15471requested.  For example, some operating systems provide separate
15472
15473"mutex" and  "semaphore" interfaces - where the mutex interface is
15474much faster because it  doesn't have all the overhead of a full
15475semaphore implementation.
15476
15477Fixed a deadlock problem where a method that accesses the PCI
15478address space can  block forever if it is the first access to the
15479space.
15480
15481-------------------------------------------
15482Summary of changes for this label: 06_02_00
15483
15484Support for environments that cannot handle unaligned data
15485accesses (e.g.  firmware and OS environments devoid of alignment
15486handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
15487been added (via configurable macros) in  these three areas: -
15488Transfer of data from the raw AML byte stream is done via byte
15489moves instead of    word/dword/qword moves. - External objects are
15490aligned within the user buffer, including package   elements (sub-
15491objects). - Conversion of name strings to UINT32 Acpi Names is now
15492done byte-wise.
15493
15494The Store operator was modified to mimic Microsoft's
15495implementation when storing  to a Buffer Field.
15496
15497Added a check of the BM_STS bit before entering C3.
15498
15499The methods subdirectory has been obsoleted and removed.  A new
15500file, cmeval.c  subsumes the functionality.
15501
15502A 16-bit (DOS) version of AcpiExec has been developed.  The
15503makefile is under  the acpiexec directory.
15504