changes.txt revision 138287
1----------------------------------------
219 November 2004.  Summary of changes for version 20041119:
3
41) ACPI CA Core Subsystem:
5
6Fixed a problem in the internal ConvertToInteger routine where new
7integers were not truncated to 32 bits for 32-bit ACPI tables. This
8routine converts buffers and strings to integers.
9
10Implemented support to store a value to an Index() on a String object.
11This is an ACPI 2.0 feature that had not yet been implemented.
12
13Implemented new behavior for storing objects to individual package
14elements (via the Index() operator). The previous behavior was to invoke
15the implicit conversion rules if an object was already present at the
16index.  The new behavior is to simply delete any existing object and
17directly store the new object. Although the ACPI specification seems
18unclear on this subject, other ACPI implementations behave in this
19manner.  (This is the root of the AE_BAD_HEX_CONSTANT issue.)
20
21Modified the RSDP memory scan mechanism to support the extended checksum
22for ACPI 2.0 (and above) RSDPs. Note that the search continues until a
23valid RSDP signature is found with a valid checksum.
24
25Code and Data Size: Current and previous core subsystem library sizes
26are shown below. These are the code and data sizes for the acpica.lib
27produced by the Microsoft Visual C++ 6.0 compiler, and these values do
28not include any ACPI driver or OSPM code. The debug version of the code
29includes the debug output trace mechanism and has a much larger code and
30data size. Note that these values will vary depending on the efficiency
31of the compiler and the compiler options used during generation.
32
33   Previous Release:
34     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
35     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
36   Current Release:
37     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
38     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
39
40
412) iASL Compiler/Disassembler:
42
43Fixed a missing semicolon in the aslcompiler.y file.
44
45----------------------------------------
4605 November 2004.  Summary of changes for version 20041105:
47
481) ACPI CA Core Subsystem:
49
50Implemented support for FADT revision 2.  This was an interim
51table (between ACPI 1.0 and ACPI 2.0) that adds support for the
52FADT reset register.
53
54Implemented optional support to allow uninitialized LocalX and
55ArgX variables in a control method.  The variables are
56initialized to an Integer object with a value of zero.  This
57support is enabled by setting the AcpiGbl_EnableInterpreterSlack
58flag to TRUE.
59
60Implemented support for Integer objects for the SizeOf operator.
61Either 4 or 8 is returned, depending on the current integer size
62(32-bit or 64-bit, depending on the parent table revision).
63
64Fixed a problem in the implementation of the SizeOf and
65ObjectType operators where the operand was resolved to a value
66too early, causing incorrect return values for some objects.
67
68Fixed some possible memory leaks during exceptional conditions.
69
70Code and Data Size: Current and previous core subsystem library
71sizes are shown below. These are the code and data sizes for the
72acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
73these values do not include any ACPI driver or OSPM code. The
74debug version of the code includes the debug output trace
75mechanism and has a much larger code and data size. Note that
76these values will vary depending on the efficiency of the
77compiler and the compiler options used during generation.
78
79  Previous Release:
80    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
81    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
82  Current Release:
83    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
84    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
85
86
872) iASL Compiler/Disassembler:
88
89Implemented support for all ACPI 3.0 reserved names and methods.
90
91Implemented all ACPI 3.0 grammar elements in the front-end,
92including support for semicolons.
93
94Implemented the ACPI 3.0 Function() and ToUUID() macros
95
96Fixed a problem in the disassembler where a Scope() operator
97would not be emitted properly if the target of the scope was in
98another table.
99
100----------------------------------------
10115 October 2004.  Summary of changes for version 20041015:
102
103Note:  ACPI CA is currently undergoing an in-depth and complete
104formal evaluation to test/verify the following areas. Other
105suggestions are welcome. This will result in an increase in the
106frequency of releases and the number of bug fixes in the next few
107months.
108  - Functional tests for all ASL/AML operators
109  - All implicit/explicit type conversions
110  - Bit fields and operation regions
111  - 64-bit math support and 32-bit-only "truncated" math support
112  - Exceptional conditions, both compiler and interpreter
113  - Dynamic object deletion and memory leaks
114  - ACPI 3.0 support when implemented
115  - External interfaces to the ACPI subsystem
116
117
1181) ACPI CA Core Subsystem:
119
120Fixed two alignment issues on 64-bit platforms - within debug
121statements in AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed
122references to the Address field within the non-aligned ACPI
123generic address structure.
124
125Fixed a problem in the Increment and Decrement operators where
126incorrect operand resolution could result in the inadvertent
127modification of the original integer when the integer is passed
128into another method as an argument and the arg is then
129incremented/decremented.
130
131Fixed a problem in the FromBCD operator where the upper 32-bits
132of a 64-bit BCD number were truncated during conversion.
133
134Fixed a problem in the ToDecimal operator where the length of the
135resulting string could be set incorrectly too long if the input
136operand was a Buffer object.
137
138Fixed a problem in the Logical operators (LLess, etc.) where a
139NULL byte (0) within a buffer would prematurely terminate a
140compare between buffer objects.
141
142Added a check for string overflow (>200 characters as per the
143ACPI specification) during the Concatenate operator with two
144string operands.
145
146Code and Data Size: Current and previous core subsystem library
147sizes are shown below. These are the code and data sizes for the
148acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
149these values do not include any ACPI driver or OSPM code. The
150debug version of the code includes the debug output trace
151mechanism and has a much larger code and data size. Note that
152these values will vary depending on the efficiency of the
153compiler and the compiler options used during generation.
154
155  Previous Release:
156    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
157    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
158  Current Release:
159    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
160    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
161
162
1632) iASL Compiler/Disassembler:
164
165Allow the use of the ObjectType operator on uninitialized Locals
166and Args (returns 0 as per the ACPI specification).
167
168Fixed a problem where the compiler would fault if there was a
169syntax error in the FieldName of all of the various
170CreateXXXField operators.
171
172Disallow the use of lower case letters within the EISAID macro,
173as per the ACPI specification.  All EISAID strings must be of the
174form "UUUNNNN" Where U is an uppercase letter and N is a hex
175digit.
176
177
178----------------------------------------
17906 October 2004.  Summary of changes for version 20041006:
180
1811) ACPI CA Core Subsystem:
182
183Implemented support for the ACPI 3.0 Timer operator. This ASL
184function implements a 64-bit timer with 100 nanosecond
185granularity.
186
187Defined a new OSL interface, AcpiOsGetTimer. This interface is
188used to implement the ACPI 3.0 Timer operator.  This allows the
189host OS to implement the timer with the best clock available.
190Also, it keeps the core subsystem out of the clock handling
191business, since the host OS (usually) performs this function.
192
193Fixed an alignment issue on 64-bit platforms. The
194HwLowLevelRead(Write) functions use a 64-bit address which is
195part of the packed ACPI Generic Address Structure. Since the
196structure is non-aligned, the alignment macros are now used to
197extract the address to a local variable before use.
198
199Fixed a problem where the ToInteger operator assumed all input
200strings were hexadecimal. The operator now handles both decimal
201strings and hex strings (prefixed with "0x").
202
203Fixed a problem where the string length in the string object
204created as a result of the internal ConvertToString procedure
205could be incorrect. This potentially affected all implicit
206conversions and also the ToDecimalString and ToHexString
207operators.
208
209Fixed two problems in the ToString operator. If the length
210parameter was zero, an incorrect string object was created and
211the value of the input length parameter was inadvertently changed
212from zero to Ones.
213
214Fixed a problem where the optional ResourceSource string in the
215ExtendedIRQ resource macro was ignored.
216
217Simplified the interfaces to the internal division functions,
218reducing code size and complexity.
219
220Code and Data Size: Current and previous core subsystem library
221sizes are shown below. These are the code and data sizes for the
222acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
223these values do not include any ACPI driver or OSPM code. The
224debug version of the code includes the debug output trace
225mechanism and has a much larger code and data size. Note that
226these values will vary depending on the efficiency of the
227compiler and the compiler options used during generation.
228
229  Previous Release:
230    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
231    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
232  Current Release:
233    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
234    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
235
236
2372) iASL Compiler/Disassembler:
238
239Implemented support for the ACPI 3.0 Timer operator.
240
241Fixed a problem where the Default() operator was inadvertently
242ignored in a Switch/Case block.  This was a problem in the
243translation of the Switch statement to If...Else pairs.
244
245Added support to allow a standalone Return operator, with no
246parentheses (or operands).
247
248Fixed a problem with code generation for the ElseIf operator
249where the translated Else...If parse tree was improperly
250constructed leading to the loss of some code.
251
252----------------------------------------
25322 September 2004.  Summary of changes for version 20040922:
254
2551) ACPI CA Core Subsystem:
256
257Fixed a problem with the implementation of the LNot() operator
258where "Ones" was not returned for the TRUE case. Changed the code
259to return Ones instead of (!Arg) which was usually 1. This change
260affects iASL constant folding for this operator also.
261
262Fixed a problem in AcpiUtInitializeBuffer where an existing
263buffer was not initialized properly -- Now zero the entire buffer
264in this case where the buffer already exists.
265
266Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
267Milliseconds) to simply (ACPI_INTEGER Milliseconds). This
268simplifies all related code considerably. This will require
269changes/updates to all OS interface layers (OSLs.)
270
271Implemented a new external interface,
272AcpiInstallExceptionHandler, to allow a system exception handler
273to be installed. This handler is invoked upon any run-time
274exception that occurs during control method execution.
275
276Added support for the DSDT in AcpiTbFindTable. This allows the
277DataTableRegion() operator to access the local copy of the DSDT.
278
279Code and Data Size: Current and previous core subsystem library
280sizes are shown below. These are the code and data sizes for the
281acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
282these values do not include any ACPI driver or OSPM code. The
283debug version of the code includes the debug output trace
284mechanism and has a much larger code and data size. Note that
285these values will vary depending on the efficiency of the
286compiler and the compiler options used during generation.
287
288  Previous Release:
289    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
290    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
291  Current Release:
292    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
293    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
294
295
2962) iASL Compiler/Disassembler:
297
298Fixed a problem with constant folding and the LNot operator. LNot
299was returning 1 in the TRUE case, not Ones as per the ACPI
300specification. This could result in the generation of an
301incorrect folded/reduced constant.
302
303End-Of-File is now allowed within a "//"-style comment.  A parse
304error no longer occurs if such a comment is at the very end of
305the input ASL source file.
306
307Implemented the "-r" option to override the Revision in the table
308header. The initial use of this option will be to simplify the
309evaluation of the AML interpreter by allowing a single ASL source
310module to be compiled for either 32-bit or 64-bit integers.
311
312
313----------------------------------------
31427 August 2004.  Summary of changes for version 20040827:
315
3161) ACPI CA Core Subsystem:
317
318- Implemented support for implicit object conversion in the non-
319numeric logical operators (LEqual, LGreater, LGreaterEqual,
320LLess, LLessEqual, and LNotEqual.)  Any combination of
321Integers/Strings/Buffers may now be used; the second operand is
322implicitly converted on the fly to match the type of the first
323operand.  For example:
324
325    LEqual (Source1, Source2)
326
327Source1 and Source2 must each evaluate to an integer, a string,
328or a buffer. The data type of Source1 dictates the required type
329of Source2. Source2 is implicitly converted if necessary to match
330the type of Source1.
331
332- Updated and corrected the behavior of the string conversion
333support.  The rules concerning conversion of buffers to strings
334(according to the ACPI specification) are as follows:
335
336ToDecimalString - explicit byte-wise conversion of buffer to
337string of decimal values (0-255) separated by commas. ToHexString
338- explicit byte-wise conversion of buffer to string of hex values
339(0-FF) separated by commas. ToString - explicit byte-wise
340conversion of buffer to string.  Byte-by-byte copy with no
341transform except NULL terminated. Any other implicit buffer-to-
342string conversion - byte-wise conversion of buffer to string of
343hex values (0-FF) separated by spaces.
344
345- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
346
347- Fixed a problem in AcpiNsGetPathnameLength where the returned
348length was one byte too short in the case of a node in the root
349scope.  This could cause a fault during debug output.
350
351- Code and Data Size: Current and previous core subsystem library
352sizes are shown below.  These are the code and data sizes for the
353acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
354these values do not include any ACPI driver or OSPM code.  The
355debug version of the code includes the debug output trace
356mechanism and has a much larger code and data size.  Note that
357these values will vary depending on the efficiency of the
358compiler and the compiler options used during generation.
359
360  Previous Release:
361    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
362    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
363  Current Release:
364    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
365    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
366
367
3682) iASL Compiler/Disassembler:
369
370- Fixed a Linux generation error.
371
372
373----------------------------------------
37416 August 2004.  Summary of changes for version 20040816:
375
3761) ACPI CA Core Subsystem:
377
378Designed and implemented support within the AML interpreter for
379the so-called "implicit return".  This support returns the result
380of the last ASL operation within a control method, in the absence
381of an explicit Return() operator.  A few machines depend on this
382behavior, even though it is not explicitly supported by the ASL
383language.  It is optional support that can be enabled at runtime
384via the AcpiGbl_EnableInterpeterSlack flag.
385
386Removed support for the PCI_Config address space from the
387internal low level hardware interfaces (AcpiHwLowLevelRead and
388AcpiHwLowLevelWrite).  This support was not used internally, and
389would not work correctly anyway because the PCI bus number and
390segment number were not supported.  There are separate interfaces
391for PCI configuration space access because of the unique
392interface.
393
394Code and Data Size: Current and previous core subsystem library
395sizes are shown below.  These are the code and data sizes for the
396acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
397these values do not include any ACPI driver or OSPM code.  The
398debug version of the code includes the debug output trace
399mechanism and has a much larger code and data size.  Note that
400these values will vary depending on the efficiency of the
401compiler and the compiler options used during generation.
402
403  Previous Release:
404    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
405    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
406  Current Release:
407    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
408    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
409
410
4112) iASL Compiler/Disassembler:
412
413Fixed a problem where constants in ASL expressions at the root
414level (not within a control method) could be inadvertently
415truncated during code generation.  This problem was introduced in
416the 20040715 release.
417
418
419----------------------------------------
42015 July 2004.  Summary of changes for version 20040715:
421
4221) ACPI CA Core Subsystem:
423
424Restructured the internal HW GPE interfaces to pass/track the
425current state of interrupts (enabled/disabled) in order to avoid
426possible deadlock and increase flexibility of the interfaces.
427
428Implemented a "lexicographical compare" for String and Buffer
429objects within the logical operators -- LGreater, LLess,
430LGreaterEqual, and LLessEqual -- as per further clarification to
431the ACPI specification.  Behavior is similar to C library
432"strcmp".
433
434Completed a major reduction in CPU stack use for the
435AcpiGetFirmwareTable external function.  In the 32-bit non-debug
436case, the stack use has been reduced from 168 bytes to 32 bytes.
437
438Deployed a new run-time configuration flag,
439AcpiGbl_EnableInterpreterSlack, whose purpose is to allow the AML
440interpreter to forgive certain bad AML constructs.  Default
441setting is FALSE.
442
443Implemented the first use of AcpiGbl_EnableInterpreterSlack in
444the Field IO support code.  If enabled, it allows field access to
445go beyond the end of a region definition if the field is within
446the region length rounded up to the next access width boundary (a
447common coding error.)
448
449Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and
450OSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency
451with other ACPI symbols.  Also, these symbols are lowercased by
452the latest version of the AcpiSrc tool.
453
454The prototypes for the PCI interfaces in acpiosxf.h have been
455updated to rename "Register" to simply "Reg" to prevent certain
456compilers from complaining.
457
458Code and Data Size: Current and previous core subsystem library
459sizes are shown below.  These are the code and data sizes for the
460acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
461these values do not include any ACPI driver or OSPM code.  The
462debug version of the code includes the debug output trace
463mechanism and has a much larger code and data size.  Note that
464these values will vary depending on the efficiency of the
465compiler and the compiler options used during generation.
466
467  Previous Release:
468    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
469    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
470  Current Release:
471    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
472    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
473
474
4752) iASL Compiler/Disassembler:
476
477Implemented full support for Package objects within the Case()
478operator.  Note: The Break() operator is currently not supported
479within Case blocks (TermLists) as there is some question about
480backward compatibility with ACPI 1.0 interpreters.
481
482Fixed a problem where complex terms were not supported properly
483within the Switch() operator.
484
485Eliminated extraneous warning for compiler-emitted reserved names
486of the form "_T_x".  (Used in Switch/Case operators.)
487
488Eliminated optimization messages for "_T_x" objects and small
489constants within the DefinitionBlock operator.
490
491
492----------------------------------------
49315 June 2004.  Summary of changes for version 20040615:
494
4951) ACPI CA Core Subsystem:
496
497Implemented support for Buffer and String objects (as per ACPI
4982.0) for the following ASL operators:  LEqual, LGreater, LLess,
499LGreaterEqual, and LLessEqual.
500
501All directory names in the entire source package are lower case,
502as they were in earlier releases.
503
504Implemented "Disassemble" command in the AML debugger that will
505disassemble a single control method.
506
507Code and Data Size: Current and previous core subsystem library
508sizes are shown below.  These are the code and data sizes for the
509acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
510these values do not include any ACPI driver or OSPM code.  The
511debug version of the code includes the debug output trace
512mechanism and has a much larger code and data size.  Note that
513these values will vary depending on the efficiency of the
514compiler and the compiler options used during generation.
515
516  Previous Release:
517    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
518    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
519  Current Release:
520    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
521    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
522
523
5242) iASL Compiler/Disassembler:
525
526Implemented support for Buffer and String objects (as per ACPI
5272.0) for the following ASL operators:  LEqual, LGreater, LLess,
528LGreaterEqual, and LLessEqual.
529
530All directory names in the entire source package are lower case,
531as they were in earlier releases.
532
533Fixed a fault when using the -g or -d<nofilename> options if the
534FADT was not found.
535
536Fixed an issue with the Windows version of the compiler where
537later versions of Windows place the FADT in the registry under
538the name "FADT" and not "FACP" as earlier versions did.  This
539applies when using the -g or -d<nofilename> options.  The
540compiler now looks for both strings as necessary.
541
542Fixed a problem with compiler namepath optimization where a
543namepath within the Scope() operator could not be optimized if
544the namepath was a subpath of the current scope path.
545
546----------------------------------------
54727 May 2004.  Summary of changes for version 20040527:
548
5491) ACPI CA Core Subsystem:
550
551Completed a new design and implementation for EBDA (Extended BIOS
552Data Area) support in the RSDP scan code.  The original code
553improperly scanned for the EBDA by simply scanning from memory
554location 0 to 0x400.  The correct method is to first obtain the
555EBDA pointer from within the BIOS data area, then scan 1K of
556memory starting at the EBDA pointer.  There appear to be few if
557any machines that place the RSDP in the EBDA, however.
558
559Integrated a fix for a possible fault during evaluation of
560BufferField arguments.  Obsolete code that was causing the
561problem was removed.
562
563Found and fixed a problem in the Field Support Code where data
564could be corrupted on a bit field read that starts on an aligned
565boundary but does not end on an aligned boundary.  Merged the
566read/write "datum length" calculation code into a common
567procedure.
568
569Rolled in a couple of changes to the FreeBSD-specific header.
570
571Code and Data Size: Current and previous core subsystem library
572sizes are shown below.  These are the code and data sizes for the
573acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
574these values do not include any ACPI driver or OSPM code.  The
575debug version of the code includes the debug output trace
576mechanism and has a much larger code and data size.  Note that
577these values will vary depending on the efficiency of the
578compiler and the compiler options used during generation.
579
580  Previous Release:
581    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
582    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
583  Current Release:
584    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
585    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
586
587
5882) iASL Compiler/Disassembler:
589
590Fixed a generation warning produced by some overly-verbose
591compilers for a 64-bit constant.
592
593----------------------------------------
59414 May 2004.  Summary of changes for version 20040514:
595
5961) ACPI CA Core Subsystem:
597
598Fixed a problem where hardware GPE enable bits sometimes not set
599properly during and after GPE method execution.  Result of 04/27
600changes.
601
602Removed extra "clear all GPEs" when sleeping/waking.
603
604Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the
605single AcpiHwWriteGpeEnableReg. Changed a couple of calls to the
606functions above to the new AcpiEv* calls as appropriate.
607
608ACPI_OS_NAME was removed from the OS-specific headers.  The
609default name is now "Microsoft Windows NT" for maximum
610compatibility.  However this can be changed by modifying the
611acconfig.h file.
612
613Allow a single invocation of AcpiInstallNotifyHandler for a
614handler that traps both types of notifies (System, Device).  Use
615ACPI_ALL_NOTIFY flag.
616
617Run _INI methods on ThermalZone objects.  This is against the
618ACPI specification, but there is apparently ASL code in the field
619that has these _INI methods, and apparently "other" AML
620interpreters execute them.
621
622Performed a full 16/32/64 bit lint that resulted in some small
623changes.
624
625Added a sleep simulation command to the AML debugger to test
626sleep code.
627
628Code and Data Size: Current and previous core subsystem library
629sizes are shown below.  These are the code and data sizes for the
630acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
631these values do not include any ACPI driver or OSPM code.  The
632debug version of the code includes the debug output trace
633mechanism and has a much larger code and data size.  Note that
634these values will vary depending on the efficiency of the
635compiler and the compiler options used during generation.
636
637  Previous Release:
638    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
639    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
640  Current Release:
641    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
642    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
643
644----------------------------------------
64527 April 2004.  Summary of changes for version 20040427:
646
6471) ACPI CA Core Subsystem:
648
649Completed a major overhaul of the GPE handling within ACPI CA.
650There are now three types of GPEs:  wake-only, runtime-only, and
651combination wake/run.  The only GPEs allowed to be combination
652wake/run are for button-style devices such as a control-method
653power button, control-method sleep button, or a notebook lid
654switch.  GPEs that have an _Lxx or _Exx method and are not
655referenced by any _PRW methods are marked for "runtime" and
656hardware enabled.  Any GPE that is referenced by a _PRW method is
657marked for "wake" (and disabled at runtime).  However, at sleep
658time, only those GPEs that have been specifically enabled for
659wake via the AcpiEnableGpe interface will actually be hardware
660enabled.
661
662A new external interface has been added, AcpiSetGpeType(), that
663is meant to be used by device drivers to force a GPE to a
664particular type.  It will be especially useful for the drivers
665for the button devices mentioned above.
666
667Completed restructuring of the ACPI CA initialization sequence so
668that default operation region handlers are installed before GPEs
669are initialized and the _PRW methods are executed.  This will
670prevent errors when the _PRW methods attempt to access system
671memory or I/O space.
672
673GPE enable/disable no longer reads the GPE enable register.  We
674now keep the enable info for runtime and wake separate and in the
675GPE_EVENT_INFO.  We thus no longer depend on the hardware to
676maintain these bits.
677
678Always clear the wake status and fixed/GPE status bits before
679sleep, even for state S5.
680
681Improved the AML debugger output for displaying the GPE blocks
682and their current status.
683
684Added new strings for the _OSI method, of the form "Windows 2001
685SPx" where x = 0,1,2,3,4.
686
687Fixed a problem where the physical address was incorrectly
688calculated when the Load() operator was used to directly load
689from an Operation Region (vs. loading from a Field object.)  Also
690added check for minimum table length for this case.
691
692Fix for multiple mutex acquisition.  Restore original thread
693SyncLevel on mutex release.
694
695Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
696consistency with the other fields returned.
697
698Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one
699such structure for each GPE in the system, so the size of this
700structure is important.
701
702CPU stack requirement reduction:  Cleaned up the method execution
703and object evaluation paths so that now a parameter structure is
704passed, instead of copying the various method parameters over and
705over again.
706
707In evregion.c:  Correctly exit and reenter the interpreter region
708if and only if dispatching an operation region request to a user-
709installed handler.  Do not exit/reenter when dispatching to a
710default handler (e.g., default system memory or I/O handlers)
711
712
713Notes for updating drivers for the new GPE support.  The
714following changes must be made to ACPI-related device drivers
715that are attached to one or more GPEs: (This information will be
716added to the ACPI CA Programmer Reference.)
717
7181) AcpiInstallGpeHandler no longer automatically enables the GPE,
719you must explicitly call AcpiEnableGpe.
7202) There is a new interface called AcpiSetGpeType. This should be
721called before enabling the GPE.  Also, this interface will
722automatically disable the GPE if it is currently enabled.
7233) AcpiEnableGpe no longer supports a GPE type flag.
724
725Specific drivers that must be changed:
7261) EC driver:
727    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
728AeGpeHandler, NULL);
729    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
730    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
731
7322) Button Drivers (Power, Lid, Sleep):
733Run _PRW method under parent device
734If _PRW exists: /* This is a control-method button */
735    Extract GPE number and possibly GpeDevice
736    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
737    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
738
739For all other devices that have _PRWs, we automatically set the
740GPE type to ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically
741(wake) enabled.  This must be done on a selective basis, usually
742requiring some kind of user app to allow the user to pick the
743wake devices.
744
745
746Code and Data Size: Current and previous core subsystem library
747sizes are shown below.  These are the code and data sizes for the
748acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
749these values do not include any ACPI driver or OSPM code.  The
750debug version of the code includes the debug output trace
751mechanism and has a much larger code and data size.  Note that
752these values will vary depending on the efficiency of the
753compiler and the compiler options used during generation.
754
755  Previous Release:
756    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
757    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
758  Current Release:
759    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
760    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
761
762
763
764----------------------------------------
76502 April 2004.  Summary of changes for version 20040402:
766
7671) ACPI CA Core Subsystem:
768
769Fixed an interpreter problem where an indirect store through an
770ArgX parameter was incorrectly applying the "implicit conversion
771rules" during the store.  From the ACPI specification: "If the
772target is a method local or argument (LocalX or ArgX), no
773conversion is performed and the result is stored directly to the
774target".  The new behavior is to disable implicit conversion
775during ALL stores to an ArgX.
776
777Changed the behavior of the _PRW method scan to ignore any and
778all errors returned by a given _PRW.  This prevents the scan from
779aborting from the failure of any single _PRW.
780
781Moved the runtime configuration parameters from the global init
782procedure to static variables in acglobal.h.  This will allow the
783host to override the default values easily.
784
785Code and Data Size: Current and previous core subsystem library
786sizes are shown below.  These are the code and data sizes for the
787acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
788these values do not include any ACPI driver or OSPM code.  The
789debug version of the code includes the debug output trace
790mechanism and has a much larger code and data size.  Note that
791these values will vary depending on the efficiency of the
792compiler and the compiler options used during generation.
793
794  Previous Release:
795    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
796    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
797  Current Release:
798    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
799    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
800
801
8022) iASL Compiler/Disassembler:
803
804iASL now fully disassembles SSDTs.  However, External()
805statements are not generated automatically for unresolved symbols
806at this time.  This is a planned feature for future
807implementation.
808
809Fixed a scoping problem in the disassembler that occurs when the
810type of the target of a Scope() operator is overridden.  This
811problem caused an incorrectly nested internal namespace to be
812constructed.
813
814Any warnings or errors that are emitted during disassembly are
815now commented out automatically so that the resulting file can be
816recompiled without any hand editing.
817
818----------------------------------------
81926 March 2004.  Summary of changes for version 20040326:
820
8211) ACPI CA Core Subsystem:
822
823Implemented support for "wake" GPEs via interaction between GPEs
824and the _PRW methods.  Every GPE that is pointed to by one or
825more _PRWs is identified as a WAKE GPE and by default will no
826longer be enabled at runtime.  Previously, we were blindly
827enabling all GPEs with a corresponding _Lxx or _Exx method - but
828most of these turn out to be WAKE GPEs anyway.  We believe this
829has been the cause of thousands of "spurious" GPEs on some
830systems.
831
832This new GPE behavior is can be reverted to the original behavior
833(enable ALL GPEs at runtime) via a runtime flag.
834
835Fixed a problem where aliased control methods could not access
836objects properly.  The proper scope within the namespace was not
837initialized (transferred to the target of the aliased method)
838before executing the target method.
839
840Fixed a potential race condition on internal object deletion on
841the return object in AcpiEvaluateObject.
842
843Integrated a fix for resource descriptors where both _MEM and
844_MTP were being extracted instead of just _MEM.  (i.e. bitmask
845was incorrectly too wide, 0x0F instead of 0x03.)
846
847Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
848preventing a fault in some cases.
849
850Updated Notify() values for debug statements in evmisc.c
851
852Return proper status from AcpiUtMutexInitialize, not just simply
853AE_OK.
854
855Code and Data Size: Current and previous core subsystem library
856sizes are shown below.  These are the code and data sizes for the
857acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
858these values do not include any ACPI driver or OSPM code.  The
859debug version of the code includes the debug output trace
860mechanism and has a much larger code and data size.  Note that
861these values will vary depending on the efficiency of the
862compiler and the compiler options used during generation.
863
864  Previous Release:
865    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
866    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
867  Current Release:
868    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
869    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
870
871----------------------------------------
87211 March 2004.  Summary of changes for version 20040311:
873
8741) ACPI CA Core Subsystem:
875
876Fixed a problem where errors occurring during the parse phase of
877control method execution did not abort cleanly.  For example,
878objects created and installed in the namespace were not deleted.
879This caused all subsequent invocations of the method to return
880the AE_ALREADY_EXISTS exception.
881
882Implemented a mechanism to force a control method to "Serialized"
883execution if the method attempts to create namespace objects.
884(The root of the AE_ALREADY_EXISTS problem.)
885
886Implemented support for the predefined _OSI "internal" control
887method.  Initial supported strings are "Linux", "Windows 2000",
888"Windows 2001", and "Windows 2001.1", and can be easily upgraded
889for new strings as necessary.  This feature will allow "other"
890operating systems to execute the fully tested, "Windows" code
891path through the ASL code
892
893Global Lock Support:  Now allows multiple acquires and releases
894with any internal thread.  Removed concept of "owning thread" for
895this special mutex.
896
897Fixed two functions that were inappropriately declaring large
898objects on the CPU stack:  PsParseLoop, NsEvaluateRelative.
899Reduces the stack usage during method execution considerably.
900
901Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where
902the S4Bios_f field was incorrectly defined as UINT32 instead of
903UINT32_BIT.
904
905Fixed a problem where AcpiEvGpeDetect would fault if there were
906no GPEs defined on the machine.
907
908Implemented two runtime options:  One to force all control method
909execution to "Serialized" to mimic Windows behavior, another to
910disable _OSI support if it causes problems on a given machine.
911
912Code and Data Size: Current and previous core subsystem library
913sizes are shown below.  These are the code and data sizes for the
914acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
915these values do not include any ACPI driver or OSPM code.  The
916debug version of the code includes the debug output trace
917mechanism and has a much larger code and data size.  Note that
918these values will vary depending on the efficiency of the
919compiler and the compiler options used during generation.
920
921  Previous Release:
922    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
923    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
924  Current Release:
925    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
926    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
927
9282) iASL Compiler/Disassembler:
929
930Fixed an array size problem for FreeBSD that would cause the
931compiler to fault.
932
933----------------------------------------
93420 February 2004.  Summary of changes for version 20040220:
935
9361) ACPI CA Core Subsystem:
937
938Implemented execution of _SxD methods for Device objects in the
939GetObjectInfo interface.
940
941Fixed calls to _SST method to pass the correct arguments.
942
943Added a call to _SST on wake to restore to "working" state.
944
945Check for End-Of-Buffer failure case in the WalkResources
946interface.
947
948Integrated fix for 64-bit alignment issue in acglobal.h by moving
949two structures to the beginning of the file.
950
951After wake, clear GPE status register(s) before enabling GPEs.
952
953After wake, clear/enable power button.  (Perhaps we should
954clear/enable all fixed events upon wake.)
955
956Fixed a couple of possible memory leaks in the Namespace manager.
957
958Integrated latest acnetbsd.h file.
959
960----------------------------------------
96111 February 2004.  Summary of changes for version 20040211:
962
9631) ACPI CA Core Subsystem:
964
965Completed investigation and implementation of the call-by-
966reference mechanism for control method arguments.
967
968Fixed a problem where a store of an object into an indexed
969package could fail if the store occurs within a different method
970than the method that created the package.
971
972Fixed a problem where the ToDecimal operator could return
973incorrect results.
974
975Fixed a problem where the CopyObject operator could fail on some
976of the more obscure objects (e.g., Reference objects.)
977
978Improved the output of the Debug object to display buffer,
979package, and index objects.
980
981Fixed a problem where constructs of the form "RefOf (ArgX)" did
982not return the expected result.
983
984Added permanent ACPI_REPORT_ERROR macros for all instances of the
985ACPI_AML_INTERNAL exception.
986
987Integrated latest version of acfreebsd.h
988
989----------------------------------------
99016 January 2004.  Summary of changes for version 20040116:
991
992The purpose of this release is primarily to update the copyright
993years in each module, thus causing a huge number of diffs.  There
994are a few small functional changes, however.
995
9961) ACPI CA Core Subsystem:
997
998Improved error messages when there is a problem finding one or
999more of the required base ACPI tables
1000
1001Reintroduced the definition of APIC_HEADER in actbl.h
1002
1003Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
1004
1005Removed extraneous reference to NewObj in dsmthdat.c
1006
10072) iASL compiler
1008
1009Fixed a problem introduced in December that disabled the correct
1010disassembly of Resource Templates
1011
1012
1013----------------------------------------
101403 December 2003.  Summary of changes for version 20031203:
1015
10161) ACPI CA Core Subsystem:
1017
1018Changed the initialization of Operation Regions during subsystem
1019init to perform two entire walks of the ACPI namespace; The first
1020to initialize the regions themselves, the second to execute the
1021_REG methods.  This fixed some interdependencies across _REG
1022methods found on some machines.
1023
1024Fixed a problem where a Store(Local0, Local1) could simply update
1025the object reference count, and not create a new copy of the
1026object if the Local1 is uninitialized.
1027
1028Implemented support for the _SST reserved method during sleep
1029transitions.
1030
1031Implemented support to clear the SLP_TYP and SLP_EN bits when
1032waking up, this is apparently required by some machines.
1033
1034When sleeping, clear the wake status only if SleepState is not
1035S5.
1036
1037Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
1038pointer arithmetic advanced a string pointer too far.
1039
1040Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
1041could be returned if the requested table has not been loaded.
1042
1043Within the support for IRQ resources, restructured the handling
1044of
1045the active and edge/level bits.
1046
1047Fixed a few problems in AcpiPsxExecute() where memory could be
1048leaked under certain error conditions.
1049
1050Improved error messages for the cases where the ACPI mode could
1051not be entered.
1052
1053Code and Data Size: Current and previous core subsystem library
1054sizes are shown below.  These are the code and data sizes for the
1055acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1056these values do not include any ACPI driver or OSPM code.  The
1057debug version of the code includes the debug output trace
1058mechanism and has a much larger code and data size.  Note that
1059these values will vary depending on the efficiency of the
1060compiler
1061and the compiler options used during generation.
1062
1063  Previous Release (20031029):
1064    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
1065    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
1066  Current Release:
1067    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
1068    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
1069
10702) iASL Compiler/Disassembler:
1071
1072Implemented a fix for the iASL disassembler where a bad index was
1073generated.  This was most noticeable on 64-bit platforms
1074
1075
1076----------------------------------------
107729 October 2003.  Summary of changes for version 20031029:
1078
10791) ACPI CA Core Subsystem:
1080
1081Fixed a problem where a level-triggered GPE with an associated
1082_Lxx control method was incorrectly cleared twice.
1083
1084Fixed a problem with the Field support code where an access can
1085occur beyond the end-of-region if the field is non-aligned but
1086extends to the very end of the parent region (resulted in an
1087AE_AML_REGION_LIMIT exception.)
1088
1089Fixed a problem with ACPI Fixed Events where an RT Clock handler
1090would not get invoked on an RTC event.  The RTC event bitmasks
1091for
1092the PM1 registers were not being initialized properly.
1093
1094Implemented support for executing _STA and _INI methods for
1095Processor objects.  Although this is currently not part of the
1096ACPI specification, there is existing ASL code that depends on
1097the
1098init-time execution of these methods.
1099
1100Implemented and deployed a GetDescriptorName function to decode
1101the various types of internal descriptors.  Guards against null
1102descriptors during debug output also.
1103
1104Implemented and deployed a GetNodeName function to extract the 4-
1105character namespace node name.  This function simplifies the
1106debug
1107and error output, as well as guarding against null pointers
1108during
1109output.
1110
1111Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
1112simplify the debug and error output of 64-bit integers.  This
1113macro replaces the HIDWORD and LODWORD macros for dumping these
1114integers.
1115
1116Updated the implementation of the Stall() operator to only call
1117AcpiOsStall(), and also return an error if the operand is larger
1118than 255.  This preserves the required behavior of not
1119relinquishing the processor, as would happen if AcpiOsSleep() was
1120called for "long stalls".
1121
1122Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
1123initialized are now treated as NOOPs.
1124
1125Cleaned up a handful of warnings during 64-bit generation.
1126
1127Fixed a reported error where and incorrect GPE number was passed
1128to the GPE dispatch handler.  This value is only used for error
1129output, however.  Used this opportunity to clean up and
1130streamline
1131the GPE dispatch code.
1132
1133Code and Data Size: Current and previous core subsystem library
1134sizes are shown below.  These are the code and data sizes for the
1135acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1136these values do not include any ACPI driver or OSPM code.  The
1137debug version of the code includes the debug output trace
1138mechanism and has a much larger code and data size.  Note that
1139these values will vary depending on the efficiency of the
1140compiler
1141and the compiler options used during generation.
1142
1143  Previous Release (20031002):
1144    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
1145    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
1146  Current Release:
1147    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
1148    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
1149
1150
11512) iASL Compiler/Disassembler:
1152
1153Updated the iASL compiler to return an error if the operand to
1154the
1155Stall() operator is larger than 255.
1156
1157
1158----------------------------------------
115902 October 2003.  Summary of changes for version 20031002:
1160
1161
11621) ACPI CA Core Subsystem:
1163
1164Fixed a problem with Index Fields where the index was not
1165incremented for fields that require multiple writes to the
1166index/data registers (Fields that are wider than the data
1167register.)
1168
1169Fixed a problem with all Field objects where a write could go
1170beyond the end-of-field if the field was larger than the access
1171granularity and therefore required multiple writes to complete
1172the
1173request.  An extra write beyond the end of the field could happen
1174inadvertently.
1175
1176Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
1177would incorrectly be returned if the width of the Data Register
1178was larger than the specified field access width.
1179
1180Completed fixes for LoadTable() and Unload() and verified their
1181operation.  Implemented full support for the "DdbHandle" object
1182throughout the ACPI CA subsystem.
1183
1184Implemented full support for the MADT and ECDT tables in the ACPI
1185CA header files.  Even though these tables are not directly
1186consumed by ACPI CA, the header definitions are useful for ACPI
1187device drivers.
1188
1189Integrated resource descriptor fixes posted to the Linux ACPI
1190list.  This included checks for minimum descriptor length, and
1191support for trailing NULL strings within descriptors that have
1192optional string elements.
1193
1194Code and Data Size: Current and previous core subsystem library
1195sizes are shown below.  These are the code and data sizes for the
1196acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1197these values do not include any ACPI driver or OSPM code.  The
1198debug version of the code includes the debug output trace
1199mechanism and has a much larger code and data size.  Note that
1200these values will vary depending on the efficiency of the
1201compiler
1202and the compiler options used during generation.
1203
1204  Previous Release (20030918):
1205    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
1206    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
1207  Current Release:
1208    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
1209    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
1210
1211
12122) iASL Compiler:
1213
1214Implemented detection of non-ASCII characters within the input
1215source ASL file.  This catches attempts to compile binary (AML)
1216files early in the compile, with an informative error message.
1217
1218Fixed a problem where the disassembler would fault if the output
1219filename could not be generated or if the output file could not
1220be
1221opened.
1222
1223----------------------------------------
122418 September 2003.  Summary of changes for version 20030918:
1225
1226
12271) ACPI CA Core Subsystem:
1228
1229Found and fixed a longstanding problem with the late execution of
1230the various deferred AML opcodes (such as Operation Regions,
1231Buffer Fields, Buffers, and Packages).  If the name string
1232specified for the name of the new object placed the object in a
1233scope other than the current scope, the initialization/execution
1234of the opcode failed.  The solution to this problem was to
1235implement a mechanism where the late execution of such opcodes
1236does not attempt to lookup/create the name a second time in an
1237incorrect scope.  This fixes the "region size computed
1238incorrectly" problem.
1239
1240Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing
1241a
1242Global Lock AE_BAD_PARAMETER error.
1243
1244Fixed several 64-bit issues with prototypes, casting and data
1245types.
1246
1247Removed duplicate prototype from acdisasm.h
1248
1249Fixed an issue involving EC Operation Region Detach (Shaohua Li)
1250
1251Code and Data Size: Current and previous core subsystem library
1252sizes are shown below.  These are the code and data sizes for the
1253acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1254these values do not include any ACPI driver or OSPM code.  The
1255debug version of the code includes the debug output trace
1256mechanism and has a much larger code and data size.  Note that
1257these values will vary depending on the efficiency of the
1258compiler
1259and the compiler options used during generation.
1260
1261  Previous Release:
1262    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
1263    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
1264  Current Release:
1265    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
1266    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
1267
1268
12692) Linux:
1270
1271Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
1272correct sleep time in seconds.
1273
1274----------------------------------------
127514 July 2003.  Summary of changes for version 20030619:
1276
12771) ACPI CA Core Subsystem:
1278
1279Parse SSDTs in order discovered, as opposed to reverse order
1280(Hrvoje Habjanic)
1281
1282Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
1283Klausner,
1284   Nate Lawson)
1285
1286
12872) Linux:
1288
1289Dynamically allocate SDT list (suggested by Andi Kleen)
1290
1291proc function return value cleanups (Andi Kleen)
1292
1293Correctly handle NMI watchdog during long stalls (Andrew Morton)
1294
1295Make it so acpismp=force works (reported by Andrew Morton)
1296
1297
1298----------------------------------------
129919 June 2003.  Summary of changes for version 20030619:
1300
13011) ACPI CA Core Subsystem:
1302
1303Fix To/FromBCD, eliminating the need for an arch-specific
1304#define.
1305
1306Do not acquire a semaphore in the S5 shutdown path.
1307
1308Fix ex_digits_needed for 0. (Takayoshi Kochi)
1309
1310Fix sleep/stall code reversal. (Andi Kleen)
1311
1312Revert a change having to do with control method calling
1313semantics.
1314
13152) Linux:
1316
1317acpiphp update (Takayoshi Kochi)
1318
1319Export acpi_disabled for sonypi (Stelian Pop)
1320
1321Mention acpismp=force in config help
1322
1323Re-add acpitable.c and acpismp=force. This improves backwards
1324compatibility and also cleans up the code to a significant
1325degree.
1326
1327Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
1328
1329----------------------------------------
133022 May 2003.  Summary of changes for version 20030522:
1331
13321) ACPI CA Core Subsystem:
1333
1334Found and fixed a reported problem where an AE_NOT_FOUND error
1335occurred occasionally during _BST evaluation.  This turned out to
1336be an Owner ID allocation issue where a called method did not get
1337a new ID assigned to it.  Eventually, (after 64k calls), the
1338Owner
1339ID UINT16 would wraparound so that the ID would be the same as
1340the
1341caller's and the called method would delete the caller's
1342namespace.
1343
1344Implemented extended error reporting for control methods that are
1345aborted due to a run-time exception.  Output includes the exact
1346AML instruction that caused the method abort, a dump of the
1347method
1348locals and arguments at the time of the abort, and a trace of all
1349nested control method calls.
1350
1351Modified the interpreter to allow the creation of buffers of zero
1352length from the AML code. Implemented new code to ensure that no
1353attempt is made to actually allocate a memory buffer (of length
1354zero) - instead, a simple buffer object with a NULL buffer
1355pointer
1356and length zero is created.  A warning is no longer issued when
1357the AML attempts to create a zero-length buffer.
1358
1359Implemented a workaround for the "leading asterisk issue" in
1360_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
1361asterisk is automatically removed if present in any HID, UID, or
1362CID strings.  The iASL compiler will still flag this asterisk as
1363an error, however.
1364
1365Implemented full support for _CID methods that return a package
1366of
1367multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo()
1368interface
1369now additionally returns a device _CID list if present.  This
1370required a change to the external interface in order to pass an
1371ACPI_BUFFER object as a parameter since the _CID list is of
1372variable length.
1373
1374Fixed a problem with the new AE_SAME_HANDLER exception where
1375handler initialization code did not know about this exception.
1376
1377Code and Data Size: Current and previous core subsystem library
1378sizes are shown below.  These are the code and data sizes for the
1379acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1380these values do not include any ACPI driver or OSPM code.  The
1381debug version of the code includes the debug output trace
1382mechanism and has a much larger code and data size.  Note that
1383these values will vary depending on the efficiency of the
1384compiler
1385and the compiler options used during generation.
1386
1387  Previous Release (20030509):
1388    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
1389    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
1390  Current Release:
1391    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
1392    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
1393
1394
13952) Linux:
1396
1397Fixed a bug in which we would reinitialize the ACPI interrupt
1398after it was already working, thus disabling all ACPI and the
1399IRQs
1400for any other device sharing the interrupt. (Thanks to Stian
1401Jordet)
1402
1403Toshiba driver update (John Belmonte)
1404
1405Return only 0 or 1 for our interrupt handler status (Andrew
1406Morton)
1407
1408
14093) iASL Compiler:
1410
1411Fixed a reported problem where multiple (nested) ElseIf()
1412statements were not handled correctly by the compiler, resulting
1413in incorrect warnings and incorrect AML code.  This was a problem
1414in both the ASL parser and the code generator.
1415
1416
14174) Documentation:
1418
1419Added changes to existing interfaces, new exception codes, and
1420new
1421text concerning reference count object management versus garbage
1422collection.
1423
1424----------------------------------------
142509 May 2003.  Summary of changes for version 20030509.
1426
1427
14281) ACPI CA Core Subsystem:
1429
1430Changed the subsystem initialization sequence to hold off
1431installation of address space handlers until the hardware has
1432been
1433initialized and the system has entered ACPI mode.  This is
1434because
1435the installation of space handlers can cause _REG methods to be
1436run.  Previously, the _REG methods could potentially be run
1437before
1438ACPI mode was enabled.
1439
1440Fixed some memory leak issues related to address space handler
1441and
1442notify handler installation.  There were some problems with the
1443reference count mechanism caused by the fact that the handler
1444objects are shared across several namespace objects.
1445
1446Fixed a reported problem where reference counts within the
1447namespace were not properly updated when named objects created by
1448method execution were deleted.
1449
1450Fixed a reported problem where multiple SSDTs caused a deletion
1451issue during subsystem termination.  Restructured the table data
1452structures to simplify the linked lists and the related code.
1453
1454Fixed a problem where the table ID associated with secondary
1455tables (SSDTs) was not being propagated into the namespace
1456objects
1457created by those tables.  This would only present a problem for
1458tables that are unloaded at run-time, however.
1459
1460Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
1461type as the length parameter (instead of UINT32).
1462
1463Solved a long-standing problem where an ALREADY_EXISTS error
1464appears on various systems.  This problem could happen when there
1465are multiple PCI_Config operation regions under a single PCI root
1466bus.  This doesn't happen very frequently, but there are some
1467systems that do this in the ASL.
1468
1469Fixed a reported problem where the internal DeleteNode function
1470was incorrectly handling the case where a namespace node was the
1471first in the parent's child list, and had additional peers (not
1472the only child, but first in the list of children.)
1473
1474Code and Data Size: Current core subsystem library sizes are
1475shown
1476below.  These are the code and data sizes for the acpica.lib
1477produced by the Microsoft Visual C++ 6.0 compiler, and these
1478values do not include any ACPI driver or OSPM code.  The debug
1479version of the code includes the debug output trace mechanism and
1480has a much larger code and data size.  Note that these values
1481will
1482vary depending on the efficiency of the compiler and the compiler
1483options used during generation.
1484
1485  Previous Release
1486    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
1487    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
1488  Current Release:
1489    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
1490    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
1491
1492
14932) Linux:
1494
1495Allow ":" in OS override string (Ducrot Bruno)
1496
1497Kobject fix (Greg KH)
1498
1499
15003 iASL Compiler/Disassembler:
1501
1502Fixed a problem in the generation of the C source code files (AML
1503is emitted in C source statements for BIOS inclusion) where the
1504Ascii dump that appears within a C comment at the end of each
1505line
1506could cause a compile time error if the AML sequence happens to
1507have an open comment or close comment sequence embedded.
1508
1509
1510----------------------------------------
151124 April 2003.  Summary of changes for version 20030424.
1512
1513
15141) ACPI CA Core Subsystem:
1515
1516Support for big-endian systems has been implemented.  Most of the
1517support has been invisibly added behind big-endian versions of
1518the
1519ACPI_MOVE_* macros.
1520
1521Fixed a problem in AcpiHwDisableGpeBlock() and
1522AcpiHwClearGpeBlock() where an incorrect offset was passed to the
1523low level hardware write routine.  The offset parameter was
1524actually eliminated from the low level read/write routines
1525because
1526they had become obsolete.
1527
1528Fixed a problem where a handler object was deleted twice during
1529the removal of a fixed event handler.
1530
1531
15322) Linux:
1533
1534A fix for SMP systems with link devices was contributed by
1535Compaq's Dan Zink.
1536
1537(2.5) Return whether we handled the interrupt in our IRQ handler.
1538(Linux ISRs no longer return void, so we can propagate the
1539handler
1540return value from the ACPI CA core back to the OS.)
1541
1542
15433) Documentation:
1544
1545The ACPI CA Programmer Reference has been updated to reflect new
1546interfaces and changes to existing interfaces.
1547
1548----------------------------------------
154928 March 2003.  Summary of changes for version 20030328.
1550
15511) ACPI CA Core Subsystem:
1552
1553The GPE Block Device support has been completed.  New interfaces
1554are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
1555interfaces (enable, disable, clear, getstatus) have been split
1556into separate interfaces for Fixed Events and General Purpose
1557Events (GPEs) in order to support GPE Block Devices properly.
1558
1559Fixed a problem where the error message "Failed to acquire
1560semaphore" would appear during operations on the embedded
1561controller (EC).
1562
1563Code and Data Size: Current core subsystem library sizes are
1564shown
1565below.  These are the code and data sizes for the acpica.lib
1566produced by the Microsoft Visual C++ 6.0 compiler, and these
1567values do not include any ACPI driver or OSPM code.  The debug
1568version of the code includes the debug output trace mechanism and
1569has a much larger code and data size.  Note that these values
1570will
1571vary depending on the efficiency of the compiler and the compiler
1572options used during generation.
1573
1574  Previous Release
1575    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
1576    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
1577  Current Release:
1578    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
1579    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
1580
1581
1582----------------------------------------
158328 February 2003.  Summary of changes for version 20030228.
1584
1585
15861) ACPI CA Core Subsystem:
1587
1588The GPE handling and dispatch code has been completely overhauled
1589in preparation for support of GPE Block Devices (ID ACPI0006).
1590This affects internal data structures and code only; there should
1591be no differences visible externally.  One new file has been
1592added, evgpeblk.c
1593
1594The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
1595fields that are used to determine the GPE block lengths.  The
1596REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
1597structures are ignored.  This is per the ACPI specification but
1598it
1599isn't very clear.  The full 256 Block 0/1 GPEs are now supported
1600(the use of REGISTER_BIT_WIDTH limited the number of GPEs to
1601128).
1602
1603In the SCI interrupt handler, removed the read of the PM1_CONTROL
1604register to look at the SCI_EN bit.  On some machines, this read
1605causes an SMI event and greatly slows down SCI events.  (This may
1606in fact be the cause of slow battery status response on some
1607systems.)
1608
1609Fixed a problem where a store of a NULL string to a package
1610object
1611could cause the premature deletion of the object.  This was seen
1612during execution of the battery _BIF method on some systems,
1613resulting in no battery data being returned.
1614
1615Added AcpiWalkResources interface to simplify parsing of resource
1616lists.
1617
1618Code and Data Size: Current core subsystem library sizes are
1619shown
1620below.  These are the code and data sizes for the acpica.lib
1621produced by the Microsoft Visual C++ 6.0 compiler, and these
1622values do not include any ACPI driver or OSPM code.  The debug
1623version of the code includes the debug output trace mechanism and
1624has a much larger code and data size.  Note that these values
1625will
1626vary depending on the efficiency of the compiler and the compiler
1627options used during generation.
1628
1629  Previous Release
1630    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
1631    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
1632  Current Release:
1633    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
1634    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
1635
1636
16372) Linux
1638
1639S3 fixes (Ole Rohne)
1640
1641Update ACPI PHP driver with to use new acpi_walk_resource API
1642(Bjorn Helgaas)
1643
1644Add S4BIOS support (Pavel Machek)
1645
1646Map in entire table before performing checksum (John Stultz)
1647
1648Expand the mem= cmdline to allow the specification of reserved
1649and
1650ACPI DATA blocks (Pavel Machek)
1651
1652Never use ACPI on VISWS
1653
1654Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
1655
1656Revert a change that allowed P_BLK lengths to be 4 or 5. This is
1657causing us to think that some systems support C2 when they really
1658don't.
1659
1660Do not count processor objects for non-present CPUs (Thanks to
1661Dominik Brodowski)
1662
1663
16643) iASL Compiler:
1665
1666Fixed a problem where ASL include files could not be found and
1667opened.
1668
1669Added support for the _PDC reserved name.
1670
1671
1672----------------------------------------
167322 January 2003.  Summary of changes for version 20030122.
1674
1675
16761) ACPI CA Core Subsystem:
1677
1678Added a check for constructs of the form:  Store (Local0, Local0)
1679where Local0 is not initialized.  Apparently, some BIOS
1680programmers believe that this is a NOOP.  Since this store
1681doesn't
1682do anything anyway, the new prototype behavior will ignore this
1683error.  This is a case where we can relax the strict checking in
1684the interpreter in the name of compatibility.
1685
1686
16872) Linux
1688
1689The AcpiSrc Source Conversion Utility has been released with the
1690Linux package for the first time.  This is the utility that is
1691used to convert the ACPI CA base source code to the Linux
1692version.
1693
1694(Both) Handle P_BLK lengths shorter than 6 more gracefully
1695
1696(Both) Move more headers to include/acpi, and delete an unused
1697header.
1698
1699(Both) Move drivers/acpi/include directory to include/acpi
1700
1701(Both) Boot functions don't use cmdline, so don't pass it around
1702
1703(Both) Remove include of unused header (Adrian Bunk)
1704
1705(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
1706the
1707former now also includes the latter, acpiphp.h only needs the
1708one,
1709now.
1710
1711(2.5) Make it possible to select method of bios restoring after
1712S3
1713resume. [=> no more ugly ifdefs] (Pavel Machek)
1714
1715(2.5) Make proc write interfaces work (Pavel Machek)
1716
1717(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
1718
1719(2.5) Break out ACPI Perf code into its own module, under cpufreq
1720(Dominik Brodowski)
1721
1722(2.4) S4BIOS support (Ducrot Bruno)
1723
1724(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
1725Visinoni)
1726
1727
17283) iASL Compiler:
1729
1730Added support to disassemble SSDT and PSDTs.
1731
1732Implemented support to obtain SSDTs from the Windows registry if
1733available.
1734
1735
1736----------------------------------------
173709 January 2003.  Summary of changes for version 20030109.
1738
17391) ACPI CA Core Subsystem:
1740
1741Changed the behavior of the internal Buffer-to-String conversion
1742function.  The current ACPI specification states that the
1743contents
1744of the buffer are "converted to a string of two-character
1745hexadecimal numbers, each separated by a space".  Unfortunately,
1746this definition is not backwards compatible with existing ACPI
17471.0
1748implementations (although the behavior was not defined in the
1749ACPI
17501.0 specification).  The new behavior simply copies data from the
1751buffer to the string until a null character is found or the end
1752of
1753the buffer is reached.  The new String object is always null
1754terminated.  This problem was seen during the generation of _BIF
1755battery data where incorrect strings were returned for battery
1756type, etc.  This will also require an errata to the ACPI
1757specification.
1758
1759Renamed all instances of NATIVE_UINT and NATIVE_INT to
1760ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
1761
1762Copyright in all module headers (both Linux and non-Linux) has be
1763updated to 2003.
1764
1765Code and Data Size: Current core subsystem library sizes are
1766shown
1767below.  These are the code and data sizes for the acpica.lib
1768produced by the Microsoft Visual C++ 6.0 compiler, and these
1769values do not include any ACPI driver or OSPM code.  The debug
1770version of the code includes the debug output trace mechanism and
1771has a much larger code and data size.  Note that these values
1772will
1773vary depending on the efficiency of the compiler and the compiler
1774options used during generation.
1775
1776  Previous Release
1777    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
1778    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
1779  Current Release:
1780    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
1781    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
1782
1783
17842) Linux
1785
1786Fixed an oops on module insertion/removal (Matthew Tippett)
1787
1788(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
1789
1790(2.5) Replace pr_debug (Randy Dunlap)
1791
1792(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
1793
1794(Both) Eliminate spawning of thread from timer callback, in favor
1795of schedule_work()
1796
1797(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
1798
1799(Both) Added define for Fixed Function HW region (Matthew Wilcox)
1800
1801(Both) Add missing statics to button.c (Pavel Machek)
1802
1803Several changes have been made to the source code translation
1804utility that generates the Linux Code in order to make the code
1805more "Linux-like":
1806
1807All typedefs on structs and unions have been removed in keeping
1808with the Linux coding style.
1809
1810Removed the non-Linux SourceSafe module revision number from each
1811module header.
1812
1813Completed major overhaul of symbols to be lowercased for linux.
1814Doubled the number of symbols that are lowercased.
1815
1816Fixed a problem where identifiers within procedure headers and
1817within quotes were not fully lower cased (they were left with a
1818starting capital.)
1819
1820Some C macros whose only purpose is to allow the generation of 16-
1821bit code are now completely removed in the Linux code, increasing
1822readability and maintainability.
1823
1824----------------------------------------
1825
182612 December 2002.  Summary of changes for version 20021212.
1827
1828
18291) ACPI CA Core Subsystem:
1830
1831Fixed a problem where the creation of a zero-length AML Buffer
1832would cause a fault.
1833
1834Fixed a problem where a Buffer object that pointed to a static
1835AML
1836buffer (in an ACPI table) could inadvertently be deleted, causing
1837memory corruption.
1838
1839Fixed a problem where a user buffer (passed in to the external
1840ACPI CA interfaces) could be overwritten if the buffer was too
1841small to complete the operation, causing memory corruption.
1842
1843Fixed a problem in the Buffer-to-String conversion code where a
1844string of length one was always returned, regardless of the size
1845of the input Buffer object.
1846
1847Removed the NATIVE_CHAR data type across the entire source due to
1848lack of need and lack of consistent use.
1849
1850Code and Data Size: Current core subsystem library sizes are
1851shown
1852below.  These are the code and data sizes for the acpica.lib
1853produced by the Microsoft Visual C++ 6.0 compiler, and these
1854values do not include any ACPI driver or OSPM code.  The debug
1855version of the code includes the debug output trace mechanism and
1856has a much larger code and data size.  Note that these values
1857will
1858vary depending on the efficiency of the compiler and the compiler
1859options used during generation.
1860
1861  Previous Release
1862    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
1863    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
1864  Current Release:
1865    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
1866    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
1867
1868
1869----------------------------------------
187005 December 2002.  Summary of changes for version 20021205.
1871
18721) ACPI CA Core Subsystem:
1873
1874Fixed a problem where a store to a String or Buffer object could
1875cause corruption of the DSDT if the object type being stored was
1876the same as the target object type and the length of the object
1877being stored was equal to or smaller than the original (existing)
1878target object.  This was seen to cause corruption of battery _BIF
1879buffers if the _BIF method modified the buffer on the fly.
1880
1881Fixed a problem where an internal error was generated if a
1882control
1883method invocation was used in an OperationRegion, Buffer, or
1884Package declaration.  This was caused by the deferred parsing of
1885the control method and thus the deferred creation of the internal
1886method object.  The solution to this problem was to create the
1887internal method object at the moment the method is encountered in
1888the first pass - so that subsequent references to the method will
1889able to obtain the required parameter count and thus properly
1890parse the method invocation.  This problem presented itself as an
1891AE_AML_INTERNAL during the pass 1 parse phase during table load.
1892
1893Fixed a problem where the internal String object copy routine did
1894not always allocate sufficient memory for the target String
1895object
1896and caused memory corruption.  This problem was seen to cause
1897"Allocation already present in list!" errors as memory allocation
1898became corrupted.
1899
1900Implemented a new function for the evaluation of namespace
1901objects
1902that allows the specification of the allowable return object
1903types.  This simplifies a lot of code that checks for a return
1904object of one or more specific objects returned from the
1905evaluation (such as _STA, etc.)  This may become and external
1906function if it would be useful to ACPI-related drivers.
1907
1908Completed another round of prefixing #defines with "ACPI_" for
1909clarity.
1910
1911Completed additional code restructuring to allow more modular
1912linking for iASL compiler and AcpiExec.  Several files were split
1913creating new files.  New files:  nsparse.c dsinit.c evgpe.c
1914
1915Implemented an abort mechanism to terminate an executing control
1916method via the AML debugger.  This feature is useful for
1917debugging
1918control methods that depend (wait) for specific hardware
1919responses.
1920
1921Code and Data Size: Current core subsystem library sizes are
1922shown
1923below.  These are the code and data sizes for the acpica.lib
1924produced by the Microsoft Visual C++ 6.0 compiler, and these
1925values do not include any ACPI driver or OSPM code.  The debug
1926version of the code includes the debug output trace mechanism and
1927has a much larger code and data size.  Note that these values
1928will
1929vary depending on the efficiency of the compiler and the compiler
1930options used during generation.
1931
1932  Previous Release
1933    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
1934    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
1935  Current Release:
1936    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
1937    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
1938
1939
19402) iASL Compiler/Disassembler
1941
1942Fixed a compiler code generation problem for "Interrupt" Resource
1943Descriptors.  If specified in the ASL, the optional "Resource
1944Source Index" and "Resource Source" fields were not inserted into
1945the correct location within the AML resource descriptor, creating
1946an invalid descriptor.
1947
1948Fixed a disassembler problem for "Interrupt" resource
1949descriptors.
1950The optional "Resource Source Index" and "Resource Source" fields
1951were ignored.
1952
1953
1954----------------------------------------
195522 November 2002.  Summary of changes for version 20021122.
1956
1957
19581) ACPI CA Core Subsystem:
1959
1960Fixed a reported problem where an object stored to a Method Local
1961or Arg was not copied to a new object during the store - the
1962object pointer was simply copied to the Local/Arg.  This caused
1963all subsequent operations on the Local/Arg to also affect the
1964original source of the store operation.
1965
1966Fixed a problem where a store operation to a Method Local or Arg
1967was not completed properly if the Local/Arg contained a reference
1968(from RefOf) to a named field.  The general-purpose store-to-
1969namespace-node code is now used so that this case is handled
1970automatically.
1971
1972Fixed a problem where the internal object copy routine would
1973cause
1974a protection fault if the object being copied was a Package and
1975contained either 1) a NULL package element or 2) a nested sub-
1976package.
1977
1978Fixed a problem with the GPE initialization that resulted from an
1979ambiguity in the ACPI specification.  One section of the
1980specification states that both the address and length of the GPE
1981block must be zero if the block is not supported.  Another
1982section
1983implies that only the address need be zero if the block is not
1984supported.  The code has been changed so that both the address
1985and
1986the length must be non-zero to indicate a valid GPE block (i.e.,
1987if either the address or the length is zero, the GPE block is
1988invalid.)
1989
1990Code and Data Size: Current core subsystem library sizes are
1991shown
1992below.  These are the code and data sizes for the acpica.lib
1993produced by the Microsoft Visual C++ 6.0 compiler, and these
1994values do not include any ACPI driver or OSPM code.  The debug
1995version of the code includes the debug output trace mechanism and
1996has a much larger code and data size.  Note that these values
1997will
1998vary depending on the efficiency of the compiler and the compiler
1999options used during generation.
2000
2001  Previous Release
2002    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
2003    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
2004  Current Release:
2005    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
2006    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
2007
2008
20092) Linux
2010
2011Cleaned up EC driver. Exported an external EC read/write
2012interface. By going through this, other drivers (most notably
2013sonypi) will be able to serialize access to the EC.
2014
2015
20163) iASL Compiler/Disassembler
2017
2018Implemented support to optionally generate include files for both
2019ASM and C (the -i switch).  This simplifies BIOS development by
2020automatically creating include files that contain external
2021declarations for the symbols that are created within the
2022(optionally generated) ASM and C AML source files.
2023
2024
2025----------------------------------------
202615 November 2002.  Summary of changes for version 20021115.
2027
20281) ACPI CA Core Subsystem:
2029
2030Fixed a memory leak problem where an error during resolution of
2031method arguments during a method invocation from another method
2032failed to cleanup properly by deleting all successfully resolved
2033argument objects.
2034
2035Fixed a problem where the target of the Index() operator was not
2036correctly constructed if the source object was a package.  This
2037problem has not been detected because the use of a target operand
2038with Index() is very rare.
2039
2040Fixed a problem with the Index() operator where an attempt was
2041made to delete the operand objects twice.
2042
2043Fixed a problem where an attempt was made to delete an operand
2044twice during execution of the CondRefOf() operator if the target
2045did not exist.
2046
2047Implemented the first of perhaps several internal create object
2048functions that create and initialize a specific object type.
2049This
2050consolidates duplicated code wherever the object is created, thus
2051shrinking the size of the subsystem.
2052
2053Implemented improved debug/error messages for errors that occur
2054during nested method invocations.  All executing method pathnames
2055are displayed (with the error) as the call stack is unwound -
2056thus
2057simplifying debug.
2058
2059Fixed a problem introduced in the 10/02 release that caused
2060premature deletion of a buffer object if a buffer was used as an
2061ASL operand where an integer operand is required (Thus causing an
2062implicit object conversion from Buffer to Integer.)  The change
2063in
2064the 10/02 release was attempting to fix a memory leak (albeit
2065incorrectly.)
2066
2067Code and Data Size: Current core subsystem library sizes are
2068shown
2069below.  These are the code and data sizes for the acpica.lib
2070produced by the Microsoft Visual C++ 6.0 compiler, and these
2071values do not include any ACPI driver or OSPM code.  The debug
2072version of the code includes the debug output trace mechanism and
2073has a much larger code and data size.  Note that these values
2074will
2075vary depending on the efficiency of the compiler and the compiler
2076options used during generation.
2077
2078  Previous Release
2079    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
2080    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
2081  Current Release:
2082    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
2083    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
2084
2085
20862) Linux
2087
2088Changed the implementation of the ACPI semaphores to use down()
2089instead of down_interruptable().  It is important that the
2090execution of ACPI control methods not be interrupted by signals.
2091Methods must run to completion, or the system may be left in an
2092unknown/unstable state.
2093
2094Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not
2095set.
2096(Shawn Starr)
2097
2098
20993) iASL Compiler/Disassembler
2100
2101
2102Changed the default location of output files.  All output files
2103are now placed in the current directory by default instead of in
2104the directory of the source file.  This change may affect some
2105existing makefiles, but it brings the behavior of the compiler in
2106line with other similar tools.  The location of the output files
2107can be overridden with the -p command line switch.
2108
2109
2110----------------------------------------
211111 November 2002.  Summary of changes for version 20021111.
2112
2113
21140) ACPI Specification 2.0B is released and is now available at:
2115http://www.acpi.info/index.html
2116
2117
21181) ACPI CA Core Subsystem:
2119
2120Implemented support for the ACPI 2.0 SMBus Operation Regions.
2121This includes the early detection and handoff of the request to
2122the SMBus region handler (avoiding all of the complex field
2123support code), and support for the bidirectional return packet
2124from an SMBus write operation.  This paves the way for the
2125development of SMBus drivers in each host operating system.
2126
2127Fixed a problem where the semaphore WAIT_FOREVER constant was
2128defined as 32 bits, but must be 16 bits according to the ACPI
2129specification.  This had the side effect of causing ASL
2130Mutex/Event timeouts even though the ASL code requested a wait
2131forever.  Changed all internal references to the ACPI timeout
2132parameter to 16 bits to prevent future problems.  Changed the
2133name
2134of WAIT_FOREVER to ACPI_WAIT_FOREVER.
2135
2136Code and Data Size: Current core subsystem library sizes are
2137shown
2138below.  These are the code and data sizes for the acpica.lib
2139produced by the Microsoft Visual C++ 6.0 compiler, and these
2140values do not include any ACPI driver or OSPM code.  The debug
2141version of the code includes the debug output trace mechanism and
2142has a much larger code and data size.  Note that these values
2143will
2144vary depending on the efficiency of the compiler and the compiler
2145options used during generation.
2146
2147  Previous Release
2148    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
2149    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
2150  Current Release:
2151    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
2152    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
2153
2154
21552) Linux
2156
2157Module loading/unloading fixes (John Cagle)
2158
2159
21603) iASL Compiler/Disassembler
2161
2162Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
2163
2164Implemented support for the disassembly of all SMBus protocol
2165keywords (SMBQuick, SMBWord, etc.)
2166
2167----------------------------------------
216801 November 2002.  Summary of changes for version 20021101.
2169
2170
21711) ACPI CA Core Subsystem:
2172
2173Fixed a problem where platforms that have a GPE1 block but no
2174GPE0
2175block were not handled correctly.  This resulted in a "GPE
2176overlap" error message.  GPE0 is no longer required.
2177
2178Removed code added in the previous release that inserted nodes
2179into the namespace in alphabetical order.  This caused some side-
2180effects on various machines.  The root cause of the problem is
2181still under investigation since in theory, the internal ordering
2182of the namespace nodes should not matter.
2183
2184
2185Enhanced error reporting for the case where a named object is not
2186found during control method execution.  The full ACPI namepath
2187(name reference) of the object that was not found is displayed in
2188this case.
2189
2190Note: as a result of the overhaul of the namespace object types
2191in
2192the previous release, the namespace nodes for the predefined
2193scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
2194instead of ACPI_TYPE_ANY.  This simplifies the namespace
2195management code but may affect code that walks the namespace tree
2196looking for specific object types.
2197
2198Code and Data Size: Current core subsystem library sizes are
2199shown
2200below.  These are the code and data sizes for the acpica.lib
2201produced by the Microsoft Visual C++ 6.0 compiler, and these
2202values do not include any ACPI driver or OSPM code.  The debug
2203version of the code includes the debug output trace mechanism and
2204has a much larger code and data size.  Note that these values
2205will
2206vary depending on the efficiency of the compiler and the compiler
2207options used during generation.
2208
2209  Previous Release
2210    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
2211    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
2212  Current Release:
2213    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
2214    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
2215
2216
22172) Linux
2218
2219Fixed a problem introduced in the previous release where the
2220Processor and Thermal objects were not recognized and installed
2221in
2222/proc.  This was related to the scope type change described
2223above.
2224
2225
22263) iASL Compiler/Disassembler
2227
2228Implemented the -g option to get all of the required ACPI tables
2229from the registry and save them to files (Windows version of the
2230compiler only.)  The required tables are the FADT, FACS, and
2231DSDT.
2232
2233Added ACPI table checksum validation during table disassembly in
2234order to catch corrupted tables.
2235
2236
2237----------------------------------------
223822 October 2002.  Summary of changes for version 20021022.
2239
22401) ACPI CA Core Subsystem:
2241
2242Implemented a restriction on the Scope operator that the target
2243must already exist in the namespace at the time the operator is
2244encountered (during table load or method execution).  In other
2245words, forward references are not allowed and Scope() cannot
2246create a new object. This changes the previous behavior where the
2247interpreter would create the name if not found.  This new
2248behavior
2249correctly enables the search-to-root algorithm during namespace
2250lookup of the target name.  Because of this upsearch, this fixes
2251the known Compaq _SB_.OKEC problem and makes both the AML
2252interpreter and iASL compiler compatible with other ACPI
2253implementations.
2254
2255Completed a major overhaul of the internal ACPI object types for
2256the ACPI Namespace and the associated operand objects.  Many of
2257these types had become obsolete with the introduction of the two-
2258pass namespace load.  This cleanup simplifies the code and makes
2259the entire namespace load mechanism much clearer and easier to
2260understand.
2261
2262Improved debug output for tracking scope opening/closing to help
2263diagnose scoping issues.  The old scope name as well as the new
2264scope name are displayed.  Also improved error messages for
2265problems with ASL Mutex objects and error messages for GPE
2266problems.
2267
2268Cleaned up the namespace dump code, removed obsolete code.
2269
2270All string output (for all namespace/object dumps) now uses the
2271common ACPI string output procedure which handles escapes
2272properly
2273and does not emit non-printable characters.
2274
2275Fixed some issues with constants in the 64-bit version of the
2276local C library (utclib.c)
2277
2278
22792) Linux
2280
2281EC Driver:  No longer attempts to acquire the Global Lock at
2282interrupt level.
2283
2284
22853) iASL Compiler/Disassembler
2286
2287Implemented ACPI 2.0B grammar change that disallows all Type 1
2288and
22892 opcodes outside of a control method.  This means that the
2290"executable" operators (versus the "namespace" operators) cannot
2291be used at the table level; they can only be used within a
2292control
2293method.
2294
2295Implemented the restriction on the Scope() operator where the
2296target must already exist in the namespace at the time the
2297operator is encountered (during ASL compilation). In other words,
2298forward references are not allowed and Scope() cannot create a
2299new
2300object.  This makes the iASL compiler compatible with other ACPI
2301implementations and makes the Scope() implementation adhere to
2302the
2303ACPI specification.
2304
2305Fixed a problem where namepath optimization for the Alias
2306operator
2307was optimizing the wrong path (of the two namepaths.)  This
2308caused
2309a "Missing alias link" error message.
2310
2311Fixed a problem where an "unknown reserved name" warning could be
2312incorrectly generated for names like "_SB" when the trailing
2313underscore is not used in the original ASL.
2314
2315Fixed a problem where the reserved name check did not handle
2316NamePaths with multiple NameSegs correctly.  The first nameseg of
2317the NamePath was examined instead of the last NameSeg.
2318
2319
2320----------------------------------------
2321
232202 October 2002.  Summary of changes for this release.
2323
2324
23251) ACPI CA Core Subsystem version 20021002:
2326
2327Fixed a problem where a store/copy of a string to an existing
2328string did not always set the string length properly in the
2329String
2330object.
2331
2332Fixed a reported problem with the ToString operator where the
2333behavior was identical to the ToHexString operator instead of
2334just
2335simply converting a raw buffer to a string data type.
2336
2337Fixed a problem where CopyObject and the other "explicit"
2338conversion operators were not updating the internal namespace
2339node
2340type as part of the store operation.
2341
2342Fixed a memory leak during implicit source operand conversion
2343where the original object was not deleted if it was converted to
2344a
2345new object of a different type.
2346
2347Enhanced error messages for all problems associated with
2348namespace
2349lookups.  Common procedure generates and prints the lookup name
2350as
2351well as the formatted status.
2352
2353Completed implementation of a new design for the Alias support
2354within the namespace.  The existing design did not handle the
2355case
2356where a new object was assigned to one of the two names due to
2357the
2358use of an explicit conversion operator, resulting in the two
2359names
2360pointing to two different objects.  The new design simply points
2361the Alias name to the original name node - not to the object.
2362This results in a level of indirection that must be handled in
2363the
2364name resolution mechanism.
2365
2366Code and Data Size: Current core subsystem library sizes are
2367shown
2368below.  These are the code and data sizes for the acpica.lib
2369produced by the Microsoft Visual C++ 6.0 compiler, and these
2370values do not include any ACPI driver or OSPM code.  The debug
2371version of the code includes the debug output trace mechanism and
2372has a larger code and data size.  Note that these values will
2373vary
2374depending on the efficiency of the compiler and the compiler
2375options used during generation.
2376
2377  Previous Release
2378    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
2379    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
2380  Current Release:
2381    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
2382    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
2383
2384
23852) Linux
2386
2387Initialize thermal driver's timer before it is used. (Knut
2388Neumann)
2389
2390Allow handling negative celsius values. (Kochi Takayoshi)
2391
2392Fix thermal management and make trip points. R/W (Pavel Machek)
2393
2394Fix /proc/acpi/sleep. (P. Christeas)
2395
2396IA64 fixes. (David Mosberger)
2397
2398Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
2399
2400Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
2401Brodowski)
2402
2403
24043) iASL Compiler/Disassembler
2405
2406Clarified some warning/error messages.
2407
2408
2409----------------------------------------
241018 September 2002.  Summary of changes for this release.
2411
2412
24131) ACPI CA Core Subsystem version 20020918:
2414
2415Fixed a reported problem with reference chaining (via the Index()
2416and RefOf() operators) in the ObjectType() and SizeOf()
2417operators.
2418The definition of these operators includes the dereferencing of
2419all chained references to return information on the base object.
2420
2421Fixed a problem with stores to indexed package elements - the
2422existing code would not complete the store if an "implicit
2423conversion" was not performed.  In other words, if the existing
2424object (package element) was to be replaced completely, the code
2425didn't handle this case.
2426
2427Relaxed typechecking on the ASL "Scope" operator to allow the
2428target name to refer to an object of type Integer, String, or
2429Buffer, in addition to the scoping object types (Device,
2430predefined Scopes, Processor, PowerResource, and ThermalZone.)
2431This allows existing AML code that has workarounds for a bug in
2432Windows to function properly.  A warning is issued, however.
2433This
2434affects both the AML interpreter and the iASL compiler. Below is
2435an example of this type of ASL code:
2436
2437      Name(DEB,0x00)
2438      Scope(DEB)
2439      {
2440
2441Fixed some reported problems with 64-bit integer support in the
2442local implementation of C library functions (clib.c)
2443
2444
24452) Linux
2446
2447Use ACPI fix map region instead of IOAPIC region, since it is
2448undefined in non-SMP.
2449
2450Ensure that the SCI has the proper polarity and trigger, even on
2451systems that do not have an interrupt override entry in the MADT.
2452
24532.5 big driver reorganization (Pat Mochel)
2454
2455Use early table mapping code from acpitable.c (Andi Kleen)
2456
2457New blacklist entries (Andi Kleen)
2458
2459Blacklist improvements. Split blacklist code out into a separate
2460file. Move checking the blacklist to very early. Previously, we
2461would use ACPI tables, and then halfway through init, check the
2462blacklist -- too late. Now, it's early enough to completely fall-
2463back to non-ACPI.
2464
2465
24663) iASL Compiler/Disassembler version 20020918:
2467
2468Fixed a problem where the typechecking code didn't know that an
2469alias could point to a method.  In other words, aliases were not
2470being dereferenced during typechecking.
2471
2472
2473----------------------------------------
247429 August 2002.  Summary of changes for this release.
2475
24761) ACPI CA Core Subsystem Version 20020829:
2477
2478If the target of a Scope() operator already exists, it must be an
2479object type that actually opens a scope -- such as a Device,
2480Method, Scope, etc.  This is a fatal runtime error.  Similar
2481error
2482check has been added to the iASL compiler also.
2483
2484Tightened up the namespace load to disallow multiple names in the
2485same scope.  This previously was allowed if both objects were of
2486the same type.  (i.e., a lookup was the same as entering a new
2487name).
2488
2489
24902) Linux
2491
2492Ensure that the ACPI interrupt has the proper trigger and
2493polarity.
2494
2495local_irq_disable is extraneous. (Matthew Wilcox)
2496
2497Make "acpi=off" actually do what it says, and not use the ACPI
2498interpreter *or* the tables.
2499
2500Added arch-neutral support for parsing SLIT and SRAT tables
2501(Kochi
2502Takayoshi)
2503
2504
25053) iASL Compiler/Disassembler  Version 20020829:
2506
2507Implemented namepath optimization for name declarations.  For
2508example, a declaration like "Method (\_SB_.ABCD)" would get
2509optimized to "Method (ABCD)" if the declaration is within the
2510\_SB_ scope.  This optimization is in addition to the named
2511reference path optimization first released in the previous
2512version. This would seem to complete all possible optimizations
2513for namepaths within the ASL/AML.
2514
2515If the target of a Scope() operator already exists, it must be an
2516object type that actually opens a scope -- such as a Device,
2517Method, Scope, etc.
2518
2519Implemented a check and warning for unreachable code in the same
2520block below a Return() statement.
2521
2522Fixed a problem where the listing file was not generated if the
2523compiler aborted if the maximum error count was exceeded (200).
2524
2525Fixed a problem where the typechecking of method return values
2526was
2527broken.  This includes the check for a return value when the
2528method is invoked as a TermArg (a return value is expected.)
2529
2530Fixed a reported problem where EOF conditions during a quoted
2531string or comment caused a fault.
2532
2533
2534----------------------------------------
253515 August 2002.  Summary of changes for this release.
2536
25371) ACPI CA Core Subsystem Version 20020815:
2538
2539Fixed a reported problem where a Store to a method argument that
2540contains a reference did not perform the indirect store
2541correctly.
2542This problem was created during the conversion to the new
2543reference object model - the indirect store to a method argument
2544code was not updated to reflect the new model.
2545
2546Reworked the ACPI mode change code to better conform to ACPI 2.0,
2547handle corner cases, and improve code legibility (Kochi
2548Takayoshi)
2549
2550Fixed a problem with the pathname parsing for the carat (^)
2551prefix.  The heavy use of the carat operator by the new namepath
2552optimization in the iASL compiler uncovered a problem with the
2553AML
2554interpreter handling of this prefix.  In the case where one or
2555more carats precede a single nameseg, the nameseg was treated as
2556standalone and the search rule (to root) was inadvertently
2557applied.  This could cause both the iASL compiler and the
2558interpreter to find the wrong object or to miss the error that
2559should occur if the object does not exist at that exact pathname.
2560
2561Found and fixed the problem where the HP Pavilion DSDT would not
2562load.  This was a relatively minor tweak to the table loading
2563code
2564(a problem caused by the unexpected encounter with a method
2565invocation not within a control method), but it does not solve
2566the
2567overall issue of the execution of AML code at the table level.
2568This investigation is still ongoing.
2569
2570Code and Data Size: Current core subsystem library sizes are
2571shown
2572below.  These are the code and data sizes for the acpica.lib
2573produced by the Microsoft Visual C++ 6.0 compiler, and these
2574values do not include any ACPI driver or OSPM code.  The debug
2575version of the code includes the debug output trace mechanism and
2576has a larger code and data size.  Note that these values will
2577vary
2578depending on the efficiency of the compiler and the compiler
2579options used during generation.
2580
2581  Previous Release
2582    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
2583    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
2584  Current Release:
2585    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
2586    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
2587
2588
25892) Linux
2590
2591Remove redundant slab.h include (Brad Hards)
2592
2593Fix several bugs in thermal.c (Herbert Nachtnebel)
2594
2595Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
2596
2597Change acpi_system_suspend to use updated irq functions (Pavel
2598Machek)
2599
2600Export acpi_get_firmware_table (Matthew Wilcox)
2601
2602Use proper root proc entry for ACPI (Kochi Takayoshi)
2603
2604Fix early-boot table parsing (Bjorn Helgaas)
2605
2606
26073) iASL Compiler/Disassembler
2608
2609Reworked the compiler options to make them more consistent and to
2610use two-letter options where appropriate.  We were running out of
2611sensible letters.   This may break some makefiles, so check the
2612current options list by invoking the compiler with no parameters.
2613
2614Completed the design and implementation of the ASL namepath
2615optimization option for the compiler.  This option optimizes all
2616references to named objects to the shortest possible path.  The
2617first attempt tries to utilize a single nameseg (4 characters)
2618and
2619the "search-to-root" algorithm used by the interpreter.  If that
2620cannot be used (because either the name is not in the search path
2621or there is a conflict with another object with the same name),
2622the pathname is optimized using the carat prefix (usually a
2623shorter string than specifying the entire path from the root.)
2624
2625Implemented support to obtain the DSDT from the Windows registry
2626(when the disassembly option is specified with no input file).
2627Added this code as the implementation for AcpiOsTableOverride in
2628the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
2629utility) to scan memory for the DSDT to the AcpiOsTableOverride
2630function in the DOS OSL to make the disassembler truly OS
2631independent.
2632
2633Implemented a new option to disassemble and compile in one step.
2634When used without an input filename, this option will grab the
2635DSDT from the local machine, disassemble it, and compile it in
2636one
2637step.
2638
2639Added a warning message for invalid escapes (a backslash followed
2640by any character other than the allowable escapes).  This catches
2641the quoted string error "\_SB_" (which should be "\\_SB_" ).
2642Also, there are numerous instances in the ACPI specification
2643where
2644this error occurs.
2645
2646Added a compiler option to disable all optimizations.  This is
2647basically the "compatibility mode" because by using this option,
2648the AML code will come out exactly the same as other ASL
2649compilers.
2650
2651Added error messages for incorrectly ordered dependent resource
2652functions.  This includes: missing EndDependentFn macro at end of
2653dependent resource list, nested dependent function macros (both
2654start and end), and missing StartDependentFn macro.  These are
2655common errors that should be caught at compile time.
2656
2657Implemented _OSI support for the disassembler and compiler.  _OSI
2658must be included in the namespace for proper disassembly (because
2659the disassembler must know the number of arguments.)
2660
2661Added an "optimization" message type that is optional (off by
2662default).  This message is used for all optimizations - including
2663constant folding, integer optimization, and namepath
2664optimization.
2665
2666----------------------------------------
266725 July 2002.  Summary of changes for this release.
2668
2669
26701) ACPI CA Core Subsystem Version 20020725:
2671
2672The AML Disassembler has been enhanced to produce compilable ASL
2673code and has been integrated into the iASL compiler (see below)
2674as
2675well as the single-step disassembly for the AML debugger and the
2676disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
2677resource templates and macros are fully supported.  The
2678disassembler has been tested on over 30 different AML files,
2679producing identical AML when the resulting disassembled ASL file
2680is recompiled with the same ASL compiler.
2681
2682Modified the Resource Manager to allow zero interrupts and zero
2683dma channels during the GetCurrentResources call.  This was
2684causing problems on some platforms.
2685
2686Added the AcpiOsRedirectOutput interface to the OSL to simplify
2687output redirection for the AcpiOsPrintf and AcpiOsVprintf
2688interfaces.
2689
2690Code and Data Size: Current core subsystem library sizes are
2691shown
2692below.  These are the code and data sizes for the acpica.lib
2693produced by the Microsoft Visual C++ 6.0 compiler, and these
2694values do not include any ACPI driver or OSPM code.  The debug
2695version of the code includes the debug output trace mechanism and
2696has a larger code and data size.  Note that these values will
2697vary
2698depending on the efficiency of the compiler and the compiler
2699options used during generation.
2700
2701  Previous Release
2702    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
2703    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
2704  Current Release:
2705    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
2706    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
2707
2708
27092) Linux
2710
2711Fixed a panic in the EC driver (Dominik Brodowski)
2712
2713Implemented checksum of the R/XSDT itself during Linux table scan
2714(Richard Schaal)
2715
2716
27173) iASL compiler
2718
2719The AML disassembler is integrated into the compiler.  The "-d"
2720option invokes the disassembler  to completely disassemble an
2721input AML file, producing as output a text ASL file with the
2722extension ".dsl" (to avoid name collisions with existing .asl
2723source files.)  A future enhancement will allow the disassembler
2724to obtain the BIOS DSDT from the registry under Windows.
2725
2726Fixed a problem with the VendorShort and VendorLong resource
2727descriptors where an invalid AML sequence was created.
2728
2729Implemented a fix for BufferData term in the ASL parser.  It was
2730inadvertently defined twice, allowing invalid syntax to pass and
2731causing reduction conflicts.
2732
2733Fixed a problem where the Ones opcode could get converted to a
2734value of zero if "Ones" was used where a byte, word or dword
2735value
2736was expected.  The 64-bit value is now truncated to the correct
2737size with the correct value.
2738
2739
2740----------------------------------------
274102 July 2002.  Summary of changes for this release.
2742
2743
27441) ACPI CA Core Subsystem Version 20020702:
2745
2746The Table Manager code has been restructured to add several new
2747features.  Tables that are not required by the core subsystem
2748(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
2749validated in any way and are returned from AcpiGetFirmwareTable
2750if
2751requested.  The AcpiOsTableOverride interface is now called for
2752each table that is loaded by the subsystem in order to allow the
2753host to override any table it chooses.  Previously, only the DSDT
2754could be overridden.  Added one new files, tbrsdt.c and
2755tbgetall.c.
2756
2757Fixed a problem with the conversion of internal package objects
2758to
2759external objects (when a package is returned from a control
2760method.)  The return buffer length was set to zero instead of the
2761proper length of the package object.
2762
2763Fixed a reported problem with the use of the RefOf and DeRefOf
2764operators when passing reference arguments to control methods.  A
2765new type of Reference object is used internally for references
2766produced by the RefOf operator.
2767
2768Added additional error messages in the Resource Manager to
2769explain
2770AE_BAD_DATA errors when they occur during resource parsing.
2771
2772Split the AcpiEnableSubsystem into two primitives to enable a
2773finer granularity initialization sequence.  These two calls
2774should
2775be called in this order: AcpiEnableSubsystem (flags),
2776AcpiInitializeObjects (flags).  The flags parameter remains the
2777same.
2778
2779
27802) Linux
2781
2782Updated the ACPI utilities module to understand the new style of
2783fully resolved package objects that are now returned from the
2784core
2785subsystem.  This eliminates errors of the form:
2786
2787    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
2788    acpi_utils-0430 [145] acpi_evaluate_reference:
2789        Invalid element in package (not a device reference)
2790
2791The method evaluation utility uses the new buffer allocation
2792scheme instead of calling AcpiEvaluate Object twice.
2793
2794Added support for ECDT. This allows the use of the Embedded
2795Controller before the namespace has been fully initialized, which
2796is necessary for ACPI 2.0 support, and for some laptops to
2797initialize properly. (Laptops using ECDT are still rare, so only
2798limited testing was performed of the added functionality.)
2799
2800Fixed memory leaks in the EC driver.
2801
2802Eliminated a brittle code structure in acpi_bus_init().
2803
2804Eliminated the acpi_evaluate() helper function in utils.c. It is
2805no longer needed since acpi_evaluate_object can optionally
2806allocate memory for the return object.
2807
2808Implemented fix for keyboard hang when getting battery readings
2809on
2810some systems (Stephen White)
2811
2812PCI IRQ routing update (Dominik Brodowski)
2813
2814Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
2815support
2816
2817----------------------------------------
281811 June 2002.  Summary of changes for this release.
2819
2820
28211) ACPI CA Core Subsystem Version 20020611:
2822
2823Fixed a reported problem where constants such as Zero and One
2824appearing within _PRT packages were not handled correctly within
2825the resource manager code.  Originally reported against the ASL
2826compiler because the code generator now optimizes integers to
2827their minimal AML representation (i.e. AML constants if
2828possible.)
2829The _PRT code now handles all AML constant opcodes correctly
2830(Zero, One, Ones, Revision).
2831
2832Fixed a problem with the Concatenate operator in the AML
2833interpreter where a buffer result object was incorrectly marked
2834as
2835not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
2836
2837All package sub-objects are now fully resolved before they are
2838returned from the external ACPI interfaces.  This means that name
2839strings are resolved to object handles, and constant operators
2840(Zero, One, Ones, Revision) are resolved to Integers.
2841
2842Implemented immediate resolution of the AML Constant opcodes
2843(Zero, One, Ones, Revision) to Integer objects upon detection
2844within the AML stream. This has simplified and reduced the
2845generated code size of the subsystem by eliminating about 10
2846switch statements for these constants (which previously were
2847contained in Reference objects.)  The complicating issues are
2848that
2849the Zero opcode is used as a "placeholder" for unspecified
2850optional target operands and stores to constants are defined to
2851be
2852no-ops.
2853
2854Code and Data Size: Current core subsystem library sizes are
2855shown
2856below. These are the code and data sizes for the acpica.lib
2857produced by the Microsoft Visual C++ 6.0 compiler, and these
2858values do not include any ACPI driver or OSPM code.  The debug
2859version of the code includes the debug output trace mechanism and
2860has a larger code and data size.  Note that these values will
2861vary
2862depending on the efficiency of the compiler and the compiler
2863options used during generation.
2864
2865  Previous Release
2866    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
2867    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
2868  Current Release:
2869    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
2870    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
2871
2872
28732) Linux
2874
2875Added preliminary support for obtaining _TRA data for PCI root
2876bridges (Bjorn Helgaas).
2877
2878
28793) iASL Compiler Version X2046:
2880
2881Fixed a problem where the "_DDN" reserved name was defined to be
2882a
2883control method with one argument.  There are no arguments, and
2884_DDN does not have to be a control method.
2885
2886Fixed a problem with the Linux version of the compiler where the
2887source lines printed with error messages were the wrong lines.
2888This turned out to be the "LF versus CR/LF" difference between
2889Windows and Unix.  This appears to be the longstanding issue
2890concerning listing output and error messages.
2891
2892Fixed a problem with the Linux version of compiler where opcode
2893names within error messages were wrong.  This was caused by a
2894slight difference in the output of the Flex tool on Linux versus
2895Windows.
2896
2897Fixed a problem with the Linux compiler where the hex output
2898files
2899contained some garbage data caused by an internal buffer overrun.
2900
2901
2902----------------------------------------
290317 May 2002.  Summary of changes for this release.
2904
2905
29061) ACPI CA Core Subsystem Version 20020517:
2907
2908Implemented a workaround to an BIOS bug discovered on the HP
2909OmniBook where the FADT revision number and the table size are
2910inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The
2911new
2912behavior is to fallback to using only the ACPI 1.0 fields of the
2913FADT if the table is too small to be a ACPI 2.0 table as claimed
2914by the revision number.  Although this is a BIOS bug, this is a
2915case where the workaround is simple enough and with no side
2916effects, so it seemed prudent to add it.  A warning message is
2917issued, however.
2918
2919Implemented minimum size checks for the fixed-length ACPI tables
2920-
2921- the FADT and FACS, as well as consistency checks between the
2922revision number and the table size.
2923
2924Fixed a reported problem in the table override support where the
2925new table pointer was incorrectly treated as a physical address
2926instead of a logical address.
2927
2928Eliminated the use of the AE_AML_ERROR exception and replaced it
2929with more descriptive codes.
2930
2931Fixed a problem where an exception would occur if an ASL Field
2932was
2933defined with no named Field Units underneath it (used by some
2934index fields).
2935
2936Code and Data Size: Current core subsystem library sizes are
2937shown
2938below.  These are the code and data sizes for the acpica.lib
2939produced by the Microsoft Visual C++ 6.0 compiler, and these
2940values do not include any ACPI driver or OSPM code.  The debug
2941version of the code includes the debug output trace mechanism and
2942has a larger code and data size.  Note that these values will
2943vary
2944depending on the efficiency of the compiler and the compiler
2945options used during generation.
2946
2947  Previous Release
2948    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
2949    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
2950  Current Release:
2951    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
2952    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
2953
2954
2955
29562) Linux
2957
2958Much work done on ACPI init (MADT and PCI IRQ routing support).
2959(Paul D. and Dominik Brodowski)
2960
2961Fix PCI IRQ-related panic on boot (Sam Revitch)
2962
2963Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
2964
2965Fix "MHz" typo (Dominik Brodowski)
2966
2967Fix RTC year 2000 issue (Dominik Brodowski)
2968
2969Preclude multiple button proc entries (Eric Brunet)
2970
2971Moved arch-specific code out of include/platform/aclinux.h
2972
29733) iASL Compiler Version X2044:
2974
2975Implemented error checking for the string used in the EISAID
2976macro
2977(Usually used in the definition of the _HID object.)  The code
2978now
2979strictly enforces the PnP format - exactly 7 characters, 3
2980uppercase letters and 4 hex digits.
2981
2982If a raw string is used in the definition of the _HID object
2983(instead of the EISAID macro), the string must contain all
2984alphanumeric characters (e.g., "*PNP0011" is not allowed because
2985of the asterisk.)
2986
2987Implemented checking for invalid use of ACPI reserved names for
2988most of the name creation operators (Name, Device, Event, Mutex,
2989OperationRegion, PowerResource, Processor, and ThermalZone.)
2990Previously, this check was only performed for control methods.
2991
2992Implemented an additional check on the Name operator to emit an
2993error if a reserved name that must be implemented in ASL as a
2994control method is used.  We know that a reserved name must be a
2995method if it is defined with input arguments.
2996
2997The warning emitted when a namespace object reference is not
2998found
2999during the cross reference phase has been changed into an error.
3000The "External" directive should be used for names defined in
3001other
3002modules.
3003
3004
30054) Tools and Utilities
3006
3007The 16-bit tools (adump16 and aexec16) have been regenerated and
3008tested.
3009
3010Fixed a problem with the output of both acpidump and adump16
3011where
3012the indentation of closing parentheses and brackets was not
3013aligned properly with the parent block.
3014
3015
3016----------------------------------------
301703 May 2002.  Summary of changes for this release.
3018
3019
30201) ACPI CA Core Subsystem Version 20020503:
3021
3022Added support a new OSL interface that allows the host operating
3023system software to override the DSDT found in the firmware -
3024AcpiOsTableOverride.  With this interface, the OSL can examine
3025the
3026version of the firmware DSDT and replace it with a different one
3027if desired.
3028
3029Added new external interfaces for accessing ACPI registers from
3030device drivers and other system software - AcpiGetRegister and
3031AcpiSetRegister.  This was simply an externalization of the
3032existing AcpiHwBitRegister interfaces.
3033
3034Fixed a regression introduced in the previous build where the
3035ASL/AML CreateField operator always returned an error,
3036"destination must be a NS Node".
3037
3038Extended the maximum time (before failure) to successfully enable
3039ACPI mode to 3 seconds.
3040
3041Code and Data Size: Current core subsystem library sizes are
3042shown
3043below.  These are the code and data sizes for the acpica.lib
3044produced by the Microsoft Visual C++ 6.0 compiler, and these
3045values do not include any ACPI driver or OSPM code.  The debug
3046version of the code includes the debug output trace mechanism and
3047has a larger code and data size.  Note that these values will
3048vary
3049depending on the efficiency of the compiler and the compiler
3050options used during generation.
3051
3052  Previous Release
3053    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
3054    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
3055  Current Release:
3056    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
3057    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
3058
3059
30602) Linux
3061
3062Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
3063free. While 3 out of 4 of our in-house systems work fine, the
3064last
3065one still hangs when testing the LAPIC timer.
3066
3067Renamed many files in 2.5 kernel release to omit "acpi_" from the
3068name.
3069
3070Added warning on boot for Presario 711FR.
3071
3072Sleep improvements (Pavel Machek)
3073
3074ACPI can now be built without CONFIG_PCI enabled.
3075
3076IA64: Fixed memory map functions (JI Lee)
3077
3078
30793) iASL Compiler Version X2043:
3080
3081Added support to allow the compiler to be integrated into the MS
3082VC++ development environment for one-button compilation of single
3083files or entire projects -- with error-to-source-line mapping.
3084
3085Implemented support for compile-time constant folding for the
3086Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
3087specification.  This allows the ASL writer to use expressions
3088instead of Integer/Buffer/String constants in terms that must
3089evaluate to constants at compile time and will also simplify the
3090emitted AML in any such sub-expressions that can be folded
3091(evaluated at compile-time.)  This increases the size of the
3092compiler significantly because a portion of the ACPI CA AML
3093interpreter is included within the compiler in order to pre-
3094evaluate constant expressions.
3095
3096
3097Fixed a problem with the "Unicode" ASL macro that caused the
3098compiler to fault.  (This macro is used in conjunction with the
3099_STR reserved name.)
3100
3101Implemented an AML opcode optimization to use the Zero, One, and
3102Ones opcodes where possible to further reduce the size of integer
3103constants and thus reduce the overall size of the generated AML
3104code.
3105
3106Implemented error checking for new reserved terms for ACPI
3107version
31082.0A.
3109
3110Implemented the -qr option to display the current list of ACPI
3111reserved names known to the compiler.
3112
3113Implemented the -qc option to display the current list of ASL
3114operators that are allowed within constant expressions and can
3115therefore be folded at compile time if the operands are
3116constants.
3117
3118
31194) Documentation
3120
3121Updated the Programmer's Reference for new interfaces, data
3122types,
3123and memory allocation model options.
3124
3125Updated the iASL Compiler User Reference to apply new format and
3126add information about new features and options.
3127
3128----------------------------------------
312919 April 2002.  Summary of changes for this release.
3130
31311) ACPI CA Core Subsystem Version 20020419:
3132
3133The source code base for the Core Subsystem has been completely
3134cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
3135versions.  The Lint option files used are included in the
3136/acpi/generate/lint directory.
3137
3138Implemented enhanced status/error checking across the entire
3139Hardware manager subsystem.  Any hardware errors (reported from
3140the OSL) are now bubbled up and will abort a running control
3141method.
3142
3143Fixed a problem where the per-ACPI-table integer width (32 or 64)
3144was stored only with control method nodes, causing a fault when
3145non-control method code was executed during table loading.  The
3146solution implemented uses a global variable to indicate table
3147width across the entire ACPI subsystem.  Therefore, ACPI CA does
3148not support mixed integer widths across different ACPI tables
3149(DSDT, SSDT).
3150
3151Fixed a problem where NULL extended fields (X fields) in an ACPI
31522.0 ACPI FADT caused the table load to fail.  Although the
3153existing ACPI specification is a bit fuzzy on this topic, the new
3154behavior is to fall back on a ACPI 1.0 field if the corresponding
3155ACPI 2.0 X field is zero (even though the table revision
3156indicates
3157a full ACPI 2.0 table.)  The ACPI specification will be updated
3158to
3159clarify this issue.
3160
3161Fixed a problem with the SystemMemory operation region handler
3162where memory was always accessed byte-wise even if the AML-
3163specified access width was larger than a byte.  This caused
3164problems on systems with memory-mapped I/O.  Memory is now
3165accessed with the width specified.  On systems that do not
3166support
3167non-aligned transfers, a check is made to guarantee proper
3168address
3169alignment before proceeding in order to avoid an AML-caused
3170alignment fault within the kernel.
3171
3172
3173Fixed a problem with the ExtendedIrq resource where only one byte
3174of the 4-byte Irq field was extracted.
3175
3176Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
3177function was out of date and required a rewrite.
3178
3179Code and Data Size: Current core subsystem library sizes are
3180shown
3181below.  These are the code and data sizes for the acpica.lib
3182produced by the Microsoft Visual C++ 6.0 compiler, and these
3183values do not include any ACPI driver or OSPM code.  The debug
3184version of the code includes the debug output trace mechanism and
3185has a larger code and data size.  Note that these values will
3186vary
3187depending on the efficiency of the compiler and the compiler
3188options used during generation.
3189
3190  Previous Release
3191    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
3192    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
3193  Current Release:
3194    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
3195    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
3196
3197
31982) Linux
3199
3200PCI IRQ routing fixes (Dominik Brodowski)
3201
3202
32033) iASL Compiler Version X2042:
3204
3205Implemented an additional compile-time error check for a field
3206unit whose size + minimum access width would cause a run-time
3207access beyond the end-of-region.  Previously, only the field size
3208itself was checked.
3209
3210The Core subsystem and iASL compiler now share a common parse
3211object in preparation for compile-time evaluation of the type
32123/4/5 ASL operators.
3213
3214
3215----------------------------------------
3216Summary of changes for this release: 03_29_02
3217
32181) ACPI CA Core Subsystem Version 20020329:
3219
3220Implemented support for late evaluation of TermArg operands to
3221Buffer and Package objects.  This allows complex expressions to
3222be
3223used in the declarations of these object types.
3224
3225Fixed an ACPI 1.0 compatibility issue when reading Fields. In
3226ACPI
32271.0, if the field was larger than 32 bits, it was returned as a
3228buffer - otherwise it was returned as an integer.  In ACPI 2.0,
3229the field is returned as a buffer only if the field is larger
3230than
323164 bits.  The TableRevision is now considered when making this
3232conversion to avoid incompatibility with existing ASL code.
3233
3234Implemented logical addressing for AcpiOsGetRootPointer.  This
3235allows an RSDP with either a logical or physical address.  With
3236this support, the host OS can now override all ACPI tables with
3237one logical RSDP.  Includes implementation of  "typed" pointer
3238support to allow a common data type for both physical and logical
3239pointers internally.  This required a change to the
3240AcpiOsGetRootPointer interface.
3241
3242Implemented the use of ACPI 2.0 Generic Address Structures for
3243all
3244GPE, Fixed Event, and PM Timer I/O.  This allows the use of
3245memory
3246mapped I/O for these ACPI features.
3247
3248Initialization now ignores not only non-required tables (All
3249tables other than the FADT, FACS, DSDT, and SSDTs), but also does
3250not validate the table headers of unrecognized tables.
3251
3252Fixed a problem where a notify handler could only be
3253installed/removed on an object of type Device.  All "notify"
3254objects are now supported -- Devices, Processor, Power, and
3255Thermal.
3256
3257Removed most verbosity from the ACPI_DB_INFO debug level.  Only
3258critical information is returned when this debug level is
3259enabled.
3260
3261Code and Data Size: Current core subsystem library sizes are
3262shown
3263below.  These are the code and data sizes for the acpica.lib
3264produced by the Microsoft Visual C++ 6.0 compiler, and these
3265values do not include any ACPI driver or OSPM code.  The debug
3266version of the code includes the debug output trace mechanism and
3267has a larger code and data size.  Note that these values will
3268vary
3269depending on the efficiency of the compiler and the compiler
3270options used during generation.
3271
3272  Previous Release
3273    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
3274    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
3275  Current Release:
3276    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
3277    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
3278
3279
32802) Linux:
3281
3282The processor driver (acpi_processor.c) now fully supports ACPI
32832.0-based processor performance control (e.g. Intel(R)
3284SpeedStep(TM) technology) Note that older laptops that only have
3285the Intel "applet" interface are not supported through this.  The
3286'limit' and 'performance' interface (/proc) are fully functional.
3287[Note that basic policy for controlling performance state
3288transitions will be included in the next version of ospmd.]  The
3289idle handler was modified to more aggressively use C2, and PIIX4
3290errata handling underwent a complete overhaul (big thanks to
3291Dominik Brodowski).
3292
3293Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
3294based devices in the ACPI namespace are now dynamically bound
3295(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
3296This allows, among other things, ACPI to resolve bus numbers for
3297subordinate PCI bridges.
3298
3299Enhanced PCI IRQ routing to get the proper bus number for _PRT
3300entries defined underneath PCI bridges.
3301
3302Added IBM 600E to bad bios list due to invalid _ADR value for
3303PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
3304
3305In the process of adding full MADT support (e.g. IOAPIC) for IA32
3306(acpi.c, mpparse.c) -- stay tuned.
3307
3308Added back visual differentiation between fixed-feature and
3309control-method buttons in dmesg.  Buttons are also subtyped (e.g.
3310button/power/PWRF) to simplify button identification.
3311
3312We no longer use -Wno-unused when compiling debug. Please ignore
3313any "_THIS_MODULE defined but not used" messages.
3314
3315Can now shut down the system using "magic sysrq" key.
3316
3317
33183) iASL Compiler version 2041:
3319
3320Fixed a problem where conversion errors for hex/octal/decimal
3321constants were not reported.
3322
3323Implemented a fix for the General Register template Address
3324field.
3325This field was 8 bits when it should be 64.
3326
3327Fixed a problem where errors/warnings were no longer being
3328emitted
3329within the listing output file.
3330
3331Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
3332exactly 4 characters, alphanumeric only.
3333
3334
3335
3336
3337----------------------------------------
3338Summary of changes for this release: 03_08_02
3339
3340
33411) ACPI CA Core Subsystem Version 20020308:
3342
3343Fixed a problem with AML Fields where the use of the "AccessAny"
3344keyword could cause an interpreter error due to attempting to
3345read
3346or write beyond the end of the parent Operation Region.
3347
3348Fixed a problem in the SystemMemory Operation Region handler
3349where
3350an attempt was made to map memory beyond the end of the region.
3351This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
3352errors on some Linux systems.
3353
3354Fixed a problem where the interpreter/namespace "search to root"
3355algorithm was not functioning for some object types.  Relaxed the
3356internal restriction on the search to allow upsearches for all
3357external object types as well as most internal types.
3358
3359
33602) Linux:
3361
3362We now use safe_halt() macro versus individual calls to sti |
3363hlt.
3364
3365Writing to the processor limit interface should now work. "echo
33661"
3367will increase the limit, 2 will decrease, and 0 will reset to the
3368default.
3369
3370
33713) ASL compiler:
3372
3373Fixed segfault on Linux version.
3374
3375
3376----------------------------------------
3377Summary of changes for this release: 02_25_02
3378
33791) ACPI CA Core Subsystem:
3380
3381
3382Fixed a problem where the GPE bit masks were not initialized
3383properly, causing erratic GPE behavior.
3384
3385Implemented limited support for multiple calling conventions.
3386The
3387code can be generated with either the VPL (variable parameter
3388list, or "C") convention, or the FPL (fixed parameter list, or
3389"Pascal") convention.  The core subsystem is about 3.4% smaller
3390when generated with FPL.
3391
3392
33932) Linux
3394
3395Re-add some /proc/acpi/event functionality that was lost during
3396the rewrite
3397
3398Resolved issue with /proc events for fixed-feature buttons
3399showing
3400up as the system device.
3401
3402Fixed checks on C2/C3 latencies to be inclusive of maximum
3403values.
3404
3405Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
3406
3407Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
3408
3409Fixed limit interface & usage to fix bugs with passive cooling
3410hysterisis.
3411
3412Restructured PRT support.
3413
3414
3415----------------------------------------
3416Summary of changes for this label: 02_14_02
3417
3418
34191) ACPI CA Core Subsystem:
3420
3421Implemented support in AcpiLoadTable to allow loading of FACS and
3422FADT tables.
3423
3424Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
3425been removed.  All 64-bit platforms should be migrated to the
3426ACPI
34272.0 tables.  The actbl71.h header has been removed from the
3428source
3429tree.
3430
3431All C macros defined within the subsystem have been prefixed with
3432"ACPI_" to avoid collision with other system include files.
3433
3434Removed the return value for the two AcpiOsPrint interfaces,
3435since
3436it is never used and causes lint warnings for ignoring the return
3437value.
3438
3439Added error checking to all internal mutex acquire and release
3440calls.  Although a failure from one of these interfaces is
3441probably a fatal system error, these checks will cause the
3442immediate abort of the currently executing method or interface.
3443
3444Fixed a problem where the AcpiSetCurrentResources interface could
3445fault.  This was a side effect of the deployment of the new
3446memory
3447allocation model.
3448
3449Fixed a couple of problems with the Global Lock support
3450introduced
3451in the last major build.  The "common" (1.0/2.0) internal FACS
3452was
3453being overwritten with the FACS signature and clobbering the
3454Global Lock pointer.  Also, the actual firmware FACS was being
3455unmapped after construction of the "common" FACS, preventing
3456access to the actual Global Lock field within it.  The "common"
3457internal FACS is no longer installed as an actual ACPI table; it
3458is used simply as a global.
3459
3460Code and Data Size: Current core subsystem library sizes are
3461shown
3462below.  These are the code and data sizes for the acpica.lib
3463produced by the Microsoft Visual C++ 6.0 compiler, and these
3464values do not include any ACPI driver or OSPM code.  The debug
3465version of the code includes the debug output trace mechanism and
3466has a larger code and data size.  Note that these values will
3467vary
3468depending on the efficiency of the compiler and the compiler
3469options used during generation.
3470
3471  Previous Release (02_07_01)
3472    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
3473    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
3474  Current Release:
3475    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
3476    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
3477
3478
34792) Linux
3480
3481Updated Linux-specific code for core macro and OSL interface
3482changes described above.
3483
3484Improved /proc/acpi/event. It now can be opened only once and has
3485proper poll functionality.
3486
3487Fixed and restructured power management (acpi_bus).
3488
3489Only create /proc "view by type" when devices of that class
3490exist.
3491
3492Fixed "charging/discharging" bug (and others) in acpi_battery.
3493
3494Improved thermal zone code.
3495
3496
34973) ASL Compiler, version X2039:
3498
3499
3500Implemented the new compiler restriction on ASL String hex/octal
3501escapes to non-null, ASCII values.  An error results if an
3502invalid
3503value is used.  (This will require an ACPI 2.0 specification
3504change.)
3505
3506AML object labels that are output to the optional C and ASM
3507source
3508are now prefixed with both the ACPI table signature and table ID
3509to help guarantee uniqueness within a large BIOS project.
3510
3511
3512----------------------------------------
3513Summary of changes for this label: 02_01_02
3514
35151) ACPI CA Core Subsystem:
3516
3517ACPI 2.0 support is complete in the entire Core Subsystem and the
3518ASL compiler. All new ACPI 2.0 operators are implemented and all
3519other changes for ACPI 2.0 support are complete.  With
3520simultaneous code and data optimizations throughout the
3521subsystem,
3522ACPI 2.0 support has been implemented with almost no additional
3523cost in terms of code and data size.
3524
3525Implemented a new mechanism for allocation of return buffers.  If
3526the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
3527be allocated on behalf of the caller.  Consolidated all return
3528buffer validation and allocation to a common procedure.  Return
3529buffers will be allocated via the primary OSL allocation
3530interface
3531since it appears that a separate pool is not needed by most
3532users.
3533If a separate pool is required for these buffers, the caller can
3534still use the original mechanism and pre-allocate the buffer(s).
3535
3536Implemented support for string operands within the DerefOf
3537operator.
3538
3539Restructured the Hardware and Event managers to be table driven,
3540simplifying the source code and reducing the amount of generated
3541code.
3542
3543Split the common read/write low-level ACPI register bitfield
3544procedure into a separate read and write, simplifying the code
3545considerably.
3546
3547Obsoleted the AcpiOsCallocate OSL interface.  This interface was
3548used only a handful of times and didn't have enough critical mass
3549for a separate interface.  Replaced with a common calloc
3550procedure
3551in the core.
3552
3553Fixed a reported problem with the GPE number mapping mechanism
3554that allows GPE1 numbers to be non-contiguous with GPE0.
3555Reorganized the GPE information and shrunk a large array that was
3556originally large enough to hold info for all possible GPEs (256)
3557to simply large enough to hold all GPEs up to the largest GPE
3558number on the machine.
3559
3560Fixed a reported problem with resource structure alignment on 64-
3561bit platforms.
3562
3563Changed the AcpiEnableEvent and AcpiDisableEvent external
3564interfaces to not require any flags for the common case of
3565enabling/disabling a GPE.
3566
3567Implemented support to allow a "Notify" on a Processor object.
3568
3569Most TBDs in comments within the source code have been resolved
3570and eliminated.
3571
3572Fixed a problem in the interpreter where a standalone parent
3573prefix (^) was not handled correctly in the interpreter and
3574debugger.
3575
3576Removed obsolete and unnecessary GPE save/restore code.
3577
3578Implemented Field support in the ASL Load operator.  This allows
3579a
3580table to be loaded from a named field, in addition to loading a
3581table directly from an Operation Region.
3582
3583Implemented timeout and handle support in the external Global
3584Lock
3585interfaces.
3586
3587Fixed a problem in the AcpiDump utility where pathnames were no
3588longer being generated correctly during the dump of named
3589objects.
3590
3591Modified the AML debugger to give a full display of if/while
3592predicates instead of just one AML opcode at a time.  (The
3593predicate can have several nested ASL statements.)  The old
3594method
3595was confusing during single stepping.
3596
3597Code and Data Size: Current core subsystem library sizes are
3598shown
3599below. These are the code and data sizes for the acpica.lib
3600produced by the Microsoft Visual C++ 6.0 compiler, and these
3601values do not include any ACPI driver or OSPM code.  The debug
3602version of the code includes the debug output trace mechanism and
3603has a larger code and data size.  Note that these values will
3604vary
3605depending on the efficiency of the compiler and the compiler
3606options used during generation.
3607
3608  Previous Release (12_18_01)
3609     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
3610     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
3611   Current Release:
3612     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
3613     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
3614
36152) Linux
3616
3617 Implemented fix for PIIX reverse throttling errata (Processor
3618driver)
3619
3620Added new Limit interface (Processor and Thermal drivers)
3621
3622New thermal policy (Thermal driver)
3623
3624Many updates to /proc
3625
3626Battery "low" event support (Battery driver)
3627
3628Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
3629
3630IA32 - IA64 initialization unification, no longer experimental
3631
3632Menuconfig options redesigned
3633
36343) ASL Compiler, version X2037:
3635
3636Implemented several new output features to simplify integration
3637of
3638AML code into  firmware: 1) Output the AML in C source code with
3639labels for each named ASL object.  The    original ASL source
3640code
3641is interleaved as C comments. 2) Output the AML in ASM source
3642code
3643with labels and interleaved ASL    source. 3) Output the AML in
3644raw hex table form, in either C or ASM.
3645
3646Implemented support for optional string parameters to the
3647LoadTable operator.
3648
3649Completed support for embedded escape sequences within string
3650literals.  The compiler now supports all single character escapes
3651as well as the Octal and Hex escapes.  Note: the insertion of a
3652null byte into a string literal (via the hex/octal escape) causes
3653the string to be immediately terminated.  A warning is issued.
3654
3655Fixed a problem where incorrect AML was generated for the case
3656where an ASL namepath consists of a single parent prefix (
3657
3658) with no trailing name segments.
3659
3660The compiler has been successfully generated with a 64-bit C
3661compiler.
3662
3663
3664
3665
3666----------------------------------------
3667Summary of changes for this label: 12_18_01
3668
36691) Linux
3670
3671Enhanced blacklist with reason and severity fields. Any table's
3672signature may now be used to identify a blacklisted system.
3673
3674Call _PIC control method to inform the firmware which interrupt
3675model the OS is using. Turn on any disabled link devices.
3676
3677Cleaned up busmgr /proc error handling (Andreas Dilger)
3678
3679 2) ACPI CA Core Subsystem:
3680
3681Implemented ACPI 2.0 semantics for the "Break" operator (Exit
3682from
3683while loop)
3684
3685Completed implementation of the ACPI 2.0 "Continue",
3686"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
3687operators.  All new ACPI 2.0 operators are now implemented in
3688both
3689the ASL compiler and the AML interpreter.  The only remaining
3690ACPI
36912.0 task is support for the String data type in the DerefOf
3692operator.  Fixed a problem with AcquireMutex where the status
3693code
3694was lost if the caller had to actually wait for the mutex.
3695
3696Increased the maximum ASL Field size from 64K bits to 4G bits.
3697
3698Completed implementation of the external Global Lock interfaces -
3699-
3700AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
3701Handler parameters were added.
3702
3703Completed another pass at removing warnings and issues when
3704compiling with 64-bit compilers.  The code now compiles cleanly
3705with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
3706add and subtract (diff) macros have changed considerably.
3707
3708Created and deployed a new ACPI_SIZE type that is 64-bits wide on
370964-bit platforms, 32-bits on all others.  This type is used
3710wherever memory allocation and/or the C sizeof() operator is
3711used,
3712and affects the OSL memory allocation interfaces AcpiOsAllocate
3713and AcpiOsCallocate.
3714
3715Implemented sticky user breakpoints in the AML debugger.
3716
3717Code and Data Size: Current core subsystem library sizes are
3718shown
3719below. These are the code and data sizes for the acpica.lib
3720produced by the Microsoft Visual C++ 6.0 compiler, and these
3721values do not include any ACPI driver or OSPM code.  The debug
3722version of the code includes the debug output trace mechanism and
3723has a larger code and data size. Note that these values will vary
3724depending on the efficiency of the compiler and the compiler
3725options used during generation.
3726
3727  Previous Release (12_05_01)
3728     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
3729     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
3730   Current Release:
3731     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
3732     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
3733
3734 3) ASL Compiler, version X2034:
3735
3736Now checks for (and generates an error if detected) the use of a
3737Break or Continue statement without an enclosing While statement.
3738
3739Successfully generated the compiler with the Intel 64-bit C
3740compiler.
3741
3742 ----------------------------------------
3743Summary of changes for this label: 12_05_01
3744
3745 1) ACPI CA Core Subsystem:
3746
3747The ACPI 2.0 CopyObject operator is fully implemented.  This
3748operator creates a new copy of an object (and is also used to
3749bypass the "implicit conversion" mechanism of the Store
3750operator.)
3751
3752The ACPI 2.0 semantics for the SizeOf operator are fully
3753implemented.  The change is that performing a SizeOf on a
3754reference object causes an automatic dereference of the object to
3755tha actual value before the size is evaluated. This behavior was
3756undefined in ACPI 1.0.
3757
3758The ACPI 2.0 semantics for the Extended IRQ resource descriptor
3759have been implemented.  The interrupt polarity and mode are now
3760independently set.
3761
3762Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
3763appearing in Package objects were not properly converted to
3764integers when the internal Package was converted to an external
3765object (via the AcpiEvaluateObject interface.)
3766
3767Fixed a problem with the namespace object deletion mechanism for
3768objects created by control methods.  There were two parts to this
3769problem: 1) Objects created during the initialization phase
3770method
3771parse were not being deleted, and 2) The object owner ID
3772mechanism
3773to track objects was broken.
3774
3775Fixed a problem where the use of the ASL Scope operator within a
3776control method would result in an invalid opcode exception.
3777
3778Fixed a problem introduced in the previous label where the buffer
3779length required for the _PRT structure was not being returned
3780correctly.
3781
3782Code and Data Size: Current core subsystem library sizes are
3783shown
3784below. These are the code and data sizes for the acpica.lib
3785produced by the Microsoft Visual C++ 6.0 compiler, and these
3786values do not include any ACPI driver or OSPM code.  The debug
3787version of the code includes the debug output trace mechanism and
3788has a larger code and data size.  Note that these values will
3789vary
3790depending on the efficiency of the compiler and the compiler
3791options used during generation.
3792
3793  Previous Release (11_20_01)
3794     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
3795     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
3796
3797  Current Release:
3798     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
3799     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
3800
3801 2) Linux:
3802
3803Updated all files to apply cleanly against 2.4.16.
3804
3805Added basic PCI Interrupt Routing Table (PRT) support for IA32
3806(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
3807version supports both static and dyanmic PRT entries, but dynamic
3808entries are treated as if they were static (not yet
3809reconfigurable).  Architecture- specific code to use this data is
3810absent on IA32 but should be available shortly.
3811
3812Changed the initialization sequence to start the ACPI interpreter
3813(acpi_init) prior to initialization of the PCI driver (pci_init)
3814in init/main.c.  This ordering is required to support PRT and
3815facilitate other (future) enhancement.  A side effect is that the
3816ACPI bus driver and certain device drivers can no longer be
3817loaded
3818as modules.
3819
3820Modified the 'make menuconfig' options to allow PCI Interrupt
3821Routing support to be included without the ACPI Bus and other
3822device drivers.
3823
3824 3) ASL Compiler, version X2033:
3825
3826Fixed some issues with the use of the new CopyObject and
3827DataTableRegion operators.  Both are fully functional.
3828
3829 ----------------------------------------
3830Summary of changes for this label: 11_20_01
3831
3832 20 November 2001.  Summary of changes for this release.
3833
3834 1) ACPI CA Core Subsystem:
3835
3836Updated Index support to match ACPI 2.0 semantics.  Storing a
3837Integer, String, or Buffer to an Index of a Buffer will store
3838only
3839the least-significant byte of the source to the Indexed buffer
3840byte.  Multiple writes are not performed.
3841
3842Fixed a problem where the access type used in an AccessAs ASL
3843operator was not recorded correctly into the field object.
3844
3845Fixed a problem where ASL Event objects were created in a
3846signalled state. Events are now created in an unsignalled state.
3847
3848The internal object cache is now purged after table loading and
3849initialization to reduce the use of dynamic kernel memory -- on
3850the assumption that object use is greatest during the parse phase
3851of the entire table (versus the run-time use of individual
3852control
3853methods.)
3854
3855ACPI 2.0 variable-length packages are now fully operational.
3856
3857Code and Data Size: Code and Data optimizations have permitted
3858new
3859feature development with an actual reduction in the library size.
3860Current core subsystem library sizes are shown below.  These are
3861the code and data sizes for the acpica.lib produced by the
3862Microsoft Visual C++ 6.0 compiler, and these values do not
3863include
3864any ACPI driver or OSPM code.  The debug version of the code
3865includes the debug output trace mechanism and has a larger code
3866and data size.  Note that these values will vary depending on the
3867efficiency of the compiler and the compiler options used during
3868generation.
3869
3870  Previous Release (11_09_01):
3871     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
3872     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
3873
3874  Current Release:
3875     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
3876     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
3877
3878 2) Linux:
3879
3880Enhanced the ACPI boot-time initialization code to allow the use
3881of Local APIC tables for processor enumeration on IA-32, and to
3882pave the way for a fully MPS-free boot (on SMP systems) in the
3883near future.  This functionality replaces
3884arch/i386/kernel/acpitables.c, which was introduced in an earlier
38852.4.15-preX release.  To enable this feature you must add
3886"acpi_boot=on" to the kernel command line -- see the help entry
3887for CONFIG_ACPI_BOOT for more information.  An IA-64 release is
3888in
3889the works...
3890
3891Restructured the configuration options to allow boot-time table
3892parsing support without inclusion of the ACPI Interpreter (and
3893other) code.
3894
3895NOTE: This release does not include fixes for the reported
3896events,
3897power-down, and thermal passive cooling issues (coming soon).
3898
3899 3) ASL Compiler:
3900
3901Added additional typechecking for Fields within restricted access
3902Operation Regions.  All fields within EC and CMOS regions must be
3903declared with ByteAcc. All fields withing SMBus regions must be
3904declared with the BufferAcc access type.
3905
3906Fixed a problem where the listing file output of control methods
3907no longer interleaved the actual AML code with the ASL source
3908code.
3909
3910
3911
3912----------------------------------------
3913Summary of changes for this label: 11_09_01
3914
39151) ACPI CA Core Subsystem:
3916
3917Implemented ACPI 2.0-defined support for writes to fields with a
3918Buffer, String, or Integer source operand that is smaller than
3919the
3920target field. In these cases, the source operand is zero-extended
3921to fill the target field.
3922
3923Fixed a problem where a Field starting bit offset (within the
3924parent operation region) was calculated incorrectly if the
3925alignment of the field differed from the access width.  This
3926affected CreateWordField, CreateDwordField, CreateQwordField, and
3927possibly other fields that use the "AccessAny" keyword.
3928
3929Fixed a problem introduced in the 11_02_01 release where indirect
3930stores through method arguments did not operate correctly.
3931
39322) Linux:
3933
3934Implemented boot-time ACPI table parsing support
3935(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
3936facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
3937legacy BIOS interfaces (e.g. MPS) for the configuration of system
3938processors, memory, and interrupts during setup_arch().  Note
3939that
3940this patch does not include the required architecture-specific
3941changes required to apply this information -- subsequent patches
3942will be posted for both IA32 and IA64 to achieve this.
3943
3944Added low-level sleep support for IA32 platforms, courtesy of Pat
3945Mochel. This allows IA32 systems to transition to/from various
3946sleeping states (e.g. S1, S3), although the lack of a centralized
3947driver model and power-manageable drivers will prevent its
3948(successful) use on most systems.
3949
3950Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
3951submenu, unified IA32 and IA64 options, added new "Boot using
3952ACPI
3953tables" option, etc.
3954
3955Increased the default timeout for the EC driver from 1ms to 10ms
3956(1000 cycles of 10us) to try to address AE_TIME errors during EC
3957transactions.
3958
3959 ----------------------------------------
3960Summary of changes for this label: 11_02_01
3961
39621) ACPI CA Core Subsystem:
3963
3964ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
3965(QWordAcc keyword). All ACPI 2.0 64-bit support is now
3966implemented.
3967
3968OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
3969changes to support ACPI 2.0 Qword field access.  Read/Write
3970PciConfiguration(), Read/Write Memory(), and Read/Write Port()
3971now
3972accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
3973the value parameter for the address space handler interface is
3974now
3975an ACPI_INTEGER.  OSL implementations of these interfaces must
3976now
3977handle the case where the Width parameter is 64.
3978
3979Index Fields: Fixed a problem where unaligned bit assembly and
3980disassembly for IndexFields was not supported correctly.
3981
3982Index and Bank Fields:  Nested Index and Bank Fields are now
3983supported. During field access, a check is performed to ensure
3984that the value written to an Index or Bank register is not out of
3985the range of the register.  The Index (or Bank) register is
3986written before each access to the field data. Future support will
3987include allowing individual IndexFields to be wider than the
3988DataRegister width.
3989
3990Fields: Fixed a problem where the AML interpreter was incorrectly
3991attempting to write beyond the end of a Field/OpRegion.  This was
3992a boundary case that occurred when a DWORD field was written to a
3993BYTE access OpRegion, forcing multiple writes and causing the
3994interpreter to write one datum too many.
3995
3996Fields: Fixed a problem with Field/OpRegion access where the
3997starting bit address of a field was incorrectly calculated if the
3998current access type was wider than a byte (WordAcc, DwordAcc, or
3999QwordAcc).
4000
4001Fields: Fixed a problem where forward references to individual
4002FieldUnits (individual Field names within a Field definition)
4003were
4004not resolved during the AML table load.
4005
4006Fields: Fixed a problem where forward references from a Field
4007definition to the parent Operation Region definition were not
4008resolved during the AML table load.
4009
4010Fields: Duplicate FieldUnit names within a scope are now detected
4011during AML table load.
4012
4013Acpi Interfaces: Fixed a problem where the AcpiGetName()
4014interface
4015returned an incorrect name for the root node.
4016
4017Code and Data Size: Code and Data optimizations have permitted
4018new
4019feature development with an actual reduction in the library size.
4020Current core subsystem library sizes are shown below.  These are
4021the code and data sizes for the acpica.lib produced by the
4022Microsoft Visual C++ 6.0 compiler, and these values do not
4023include
4024any ACPI driver or OSPM code.  The debug version of the code
4025includes the debug output trace mechanism and has a larger code
4026and data size.  Note that these values will vary depending on the
4027efficiency of the compiler and the compiler options used during
4028generation.
4029
4030  Previous Release (10_18_01):
4031     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
4032     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
4033
4034  Current Release:
4035     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
4036     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
4037
4038 2) Linux:
4039
4040Improved /proc processor output (Pavel Machek) Re-added
4041MODULE_LICENSE("GPL") to all modules.
4042
4043 3) ASL Compiler version X2030:
4044
4045Duplicate FieldUnit names within a scope are now detected and
4046flagged as errors.
4047
4048 4) Documentation:
4049
4050Programmer Reference updated to reflect OSL and address space
4051handler interface changes described above.
4052
4053----------------------------------------
4054Summary of changes for this label: 10_18_01
4055
4056ACPI CA Core Subsystem:
4057
4058Fixed a problem with the internal object reference count
4059mechanism
4060that occasionally caused premature object deletion. This resolves
4061all of the outstanding problem reports where an object is deleted
4062in the middle of an interpreter evaluation.  Although this
4063problem
4064only showed up in rather obscure cases, the solution to the
4065problem involved an adjustment of all reference counts involving
4066objects attached to namespace nodes.
4067
4068Fixed a problem with Field support in the interpreter where
4069writing to an aligned field whose length is an exact multiple (2
4070or greater) of the field access granularity would cause an
4071attempt
4072to write beyond the end of the field.
4073
4074The top level AML opcode execution functions within the
4075interpreter have been renamed with a more meaningful and
4076consistent naming convention.  The modules exmonad.c and
4077exdyadic.c were eliminated.  New modules are exoparg1.c,
4078exoparg2.c, exoparg3.c, and exoparg6.c.
4079
4080Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
4081
4082Fixed a problem where the AML debugger was causing some internal
4083objects to not be deleted during subsystem termination.
4084
4085Fixed a problem with the external AcpiEvaluateObject interface
4086where the subsystem would fault if the named object to be
4087evaluated refered to a constant such as Zero, Ones, etc.
4088
4089Fixed a problem with IndexFields and BankFields where the
4090subsystem would fault if the index, data, or bank registers were
4091not defined in the same scope as the field itself.
4092
4093Added printf format string checking for compilers that support
4094this feature.  Corrected more than 50 instances of issues with
4095format specifiers within invocations of ACPI_DEBUG_PRINT
4096throughout the core subsystem code.
4097
4098The ASL "Revision" operator now returns the ACPI support level
4099implemented in the core - the value "2" since the ACPI 2.0
4100support
4101is more than 50% implemented.
4102
4103Enhanced the output of the AML debugger "dump namespace" command
4104to output in a more human-readable form.
4105
4106Current core subsystem library code sizes are shown below.  These
4107are the code and data sizes for the acpica.lib produced by the
4108Microsoft Visual C++ 6.0 compiler, and these values do not
4109include
4110any ACPI driver or OSPM code.  The debug version of the code
4111includes the full debug trace mechanism -- leading to a much
4112larger code and data size.  Note that these values will vary
4113depending on the efficiency of the compiler and the compiler
4114options used during generation.
4115
4116     Previous Label (09_20_01):
4117     Non-Debug Version:    65K Code,     5K Data,     70K Total
4118     Debug Version:       138K Code,    58K Data,    196K Total
4119
4120     This Label:
4121
4122     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
4123     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
4124
4125Linux:
4126
4127Implemented a "Bad BIOS Blacklist" to track machines that have
4128known ASL/AML problems.
4129
4130Enhanced the /proc interface for the thermal zone driver and
4131added
4132support for _HOT (the critical suspend trip point).  The 'info'
4133file now includes threshold/policy information, and allows
4134setting
4135of _SCP (cooling preference) and _TZP (polling frequency) values
4136to the 'info' file. Examples: "echo tzp=5 > info" sets the
4137polling
4138frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
4139preference to the passive/quiet mode (if supported by the ASL).
4140
4141Implemented a workaround for a gcc bug that resuted in an OOPs
4142when loading the control method battery driver.
4143
4144 ----------------------------------------
4145Summary of changes for this label: 09_20_01
4146
4147 ACPI CA Core Subsystem:
4148
4149The AcpiEnableEvent and AcpiDisableEvent interfaces have been
4150modified to allow individual GPE levels to be flagged as wake-
4151enabled (i.e., these GPEs are to remain enabled when the platform
4152sleeps.)
4153
4154The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
4155support wake-enabled GPEs.  This means that upon entering the
4156sleep state, all GPEs that are not wake-enabled are disabled.
4157When leaving the sleep state, these GPEs are reenabled.
4158
4159A local double-precision divide/modulo module has been added to
4160enhance portability to OS kernels where a 64-bit math library is
4161not available.  The new module is "utmath.c".
4162
4163Several optimizations have been made to reduce the use of CPU
4164stack.  Originally over 2K, the maximum stack usage is now below
41652K at 1860  bytes (1.82k)
4166
4167Fixed a problem with the AcpiGetFirmwareTable interface where the
4168root table pointer was not mapped into a logical address
4169properly.
4170
4171Fixed a problem where a NULL pointer was being dereferenced in
4172the
4173interpreter code for the ASL Notify operator.
4174
4175Fixed a problem where the use of the ASL Revision operator
4176returned an error. This operator now returns the current version
4177of the ACPI CA core subsystem.
4178
4179Fixed a problem where objects passed as control method parameters
4180to AcpiEvaluateObject were always deleted at method termination.
4181However, these objects may end up being stored into the namespace
4182by the called method.  The object reference count mechanism was
4183applied to these objects instead of a force delete.
4184
4185Fixed a problem where static strings or buffers (contained in the
4186AML code) that are declared as package elements within the ASL
4187code could cause a fault because the interpreter would attempt to
4188delete them.  These objects are now marked with the "static
4189object" flag to prevent any attempt to delete them.
4190
4191Implemented an interpreter optimization to use operands directly
4192from the state object instead of extracting the operands to local
4193variables.  This reduces stack use and code size, and improves
4194performance.
4195
4196The module exxface.c was eliminated as it was an unnecessary
4197extra
4198layer of code.
4199
4200Current core subsystem library code sizes are shown below.  These
4201are the code and data sizes for the acpica.lib produced by the
4202Microsoft Visual C++ 6.0 compiler, and these values do not
4203include
4204any ACPI driver or OSPM code.  The debug version of the code
4205includes the full debug trace mechanism -- leading to a much
4206larger code and data size.  Note that these values will vary
4207depending on the efficiency of the compiler and the compiler
4208options used during generation.
4209
4210  Non-Debug Version:  65K Code,   5K Data,   70K Total
4211(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
4212Total  (Previously 195K)
4213
4214Linux:
4215
4216Support for ACPI 2.0 64-bit integers has been added.   All ACPI
4217Integer objects are now 64 bits wide
4218
4219All Acpi data types and structures are now in lower case.  Only
4220Acpi macros are upper case for differentiation.
4221
4222 Documentation:
4223
4224Changes to the external interfaces as described above.
4225
4226 ----------------------------------------
4227Summary of changes for this label: 08_31_01
4228
4229 ACPI CA Core Subsystem:
4230
4231A bug with interpreter implementation of the ASL Divide operator
4232was found and fixed.  The implicit function return value (not the
4233explicit store operands) was returning the remainder instead of
4234the quotient.  This was a longstanding bug and it fixes several
4235known outstanding issues on various platforms.
4236
4237The ACPI_DEBUG_PRINT and function trace entry/exit macros have
4238been further optimized for size.  There are 700 invocations of
4239the
4240DEBUG_PRINT macro alone, so each optimization reduces the size of
4241the debug version of the subsystem significantly.
4242
4243A stack trace mechanism has been implemented.  The maximum stack
4244usage is about 2K on 32-bit platforms.  The debugger command
4245"stat
4246stack" will display the current maximum stack usage.
4247
4248All public symbols and global variables within the subsystem are
4249now prefixed with the string "Acpi".  This keeps all of the
4250symbols grouped together in a kernel map, and avoids conflicts
4251with other kernel subsystems.
4252
4253Most of the internal fixed lookup tables have been moved into the
4254code segment via the const operator.
4255
4256Several enhancements have been made to the interpreter to both
4257reduce the code size and improve performance.
4258
4259Current core subsystem library code sizes are shown below.  These
4260are the code and data sizes for the acpica.lib produced by the
4261Microsoft Visual C++ 6.0 compiler, and these values do not
4262include
4263any ACPI driver or OSPM code.  The debug version of the code
4264includes the full debug trace mechanism which contains over 700
4265invocations of the DEBUG_PRINT macro, 500 function entry macro
4266invocations, and over 900 function exit macro invocations --
4267leading to a much larger code and data size.  Note that these
4268values will vary depending on the efficiency of the compiler and
4269the compiler options used during generation.
4270
4271        Non-Debug Version:  64K Code,   5K Data,   69K Total
4272Debug Version:     137K Code,  58K Data,  195K Total
4273
4274 Linux:
4275
4276Implemented wbinvd() macro, pending a kernel-wide definition.
4277
4278Fixed /proc/acpi/event to handle poll() and short reads.
4279
4280 ASL Compiler, version X2026:
4281
4282Fixed a problem introduced in the previous label where the AML
4283code emitted for package objects produced packages with zero
4284length.
4285
4286 ----------------------------------------
4287Summary of changes for this label: 08_16_01
4288
4289ACPI CA Core Subsystem:
4290
4291The following ACPI 2.0 ASL operators have been implemented in the
4292AML interpreter (These are already supported by the Intel ASL
4293compiler):  ToDecimalString, ToHexString, ToString, ToInteger,
4294and
4295ToBuffer.  Support for 64-bit AML constants is implemented in the
4296AML parser, debugger, and disassembler.
4297
4298The internal memory tracking mechanism (leak detection code) has
4299been upgraded to reduce the memory overhead (a separate tracking
4300block is no longer allocated for each memory allocation), and now
4301supports all of the internal object caches.
4302
4303The data structures and code for the internal object caches have
4304been coelesced and optimized so that there is a single cache and
4305memory list data structure and a single group of functions that
4306implement generic cache management.  This has reduced the code
4307size in both the debug and release versions of the subsystem.
4308
4309The DEBUG_PRINT macro(s) have been optimized for size and
4310replaced
4311by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
4312different, because it generates a single call to an internal
4313function.  This results in a savings of about 90 bytes per
4314invocation, resulting in an overall code and data savings of
4315about
431616% in the debug version of the subsystem.
4317
4318 Linux:
4319
4320Fixed C3 disk corruption problems and re-enabled C3 on supporting
4321machines.
4322
4323Integrated low-level sleep code by Patrick Mochel.
4324
4325Further tweaked source code Linuxization.
4326
4327Other minor fixes.
4328
4329 ASL Compiler:
4330
4331Support for ACPI 2.0 variable length packages is fixed/completed.
4332
4333Fixed a problem where the optional length parameter for the ACPI
43342.0 ToString operator.
4335
4336Fixed multiple extraneous error messages when a syntax error is
4337detected within the declaration line of a control method.
4338
4339 ----------------------------------------
4340Summary of changes for this label: 07_17_01
4341
4342ACPI CA Core Subsystem:
4343
4344Added a new interface named AcpiGetFirmwareTable to obtain any
4345ACPI table via the ACPI signature.  The interface can be called
4346at
4347any time during kernel initialization, even before the kernel
4348virtual memory manager is initialized and paging is enabled.
4349This
4350allows kernel subsystems to obtain ACPI tables very early, even
4351before the ACPI CA subsystem is initialized.
4352
4353Fixed a problem where Fields defined with the AnyAcc attribute
4354could be resolved to the incorrect address under the following
4355conditions: 1) the field width is larger than 8 bits and 2) the
4356parent operation region is not defined on a DWORD boundary.
4357
4358Fixed a problem where the interpreter is not being locked during
4359namespace initialization (during execution of the _INI control
4360methods), causing an error when an attempt is made to release it
4361later.
4362
4363ACPI 2.0 support in the AML Interpreter has begun and will be
4364ongoing throughout the rest of this year.  In this label, The Mod
4365operator is implemented.
4366
4367Added a new data type to contain full PCI addresses named
4368ACPI_PCI_ID. This structure contains the PCI Segment, Bus,
4369Device,
4370and Function values.
4371
4372 Linux:
4373
4374Enhanced the Linux version of the source code to change most
4375capitalized ACPI type names to lowercase. For example, all
4376instances of ACPI_STATUS are changed to acpi_status.  This will
4377result in a large diff, but the change is strictly cosmetic and
4378aligns the CA code closer to the Linux coding standard.
4379
4380OSL Interfaces:
4381
4382The interfaces to the PCI configuration space have been changed
4383to
4384add the PCI Segment number and to split the single 32-bit
4385combined
4386DeviceFunction field into two 16-bit fields.  This was
4387accomplished by moving the four values that define an address in
4388PCI configuration space (segment, bus, device, and function) to
4389the new ACPI_PCI_ID structure.
4390
4391The changes to the PCI configuration space interfaces led to a
4392reexamination of the complete set of address space access
4393interfaces for PCI, I/O, and Memory.  The previously existing 18
4394interfaces have proven difficult to maintain (any small change
4395must be propagated across at least 6 interfaces) and do not
4396easily
4397allow for future expansion to 64 bits if necessary.  Also, on
4398some
4399systems, it would not be appropriate to demultiplex the access
4400width (8, 16, 32,or 64) before calling the OSL if the
4401corresponding native OS interfaces contain a similar access width
4402parameter.  For these reasons, the 18 address space interfaces
4403have been replaced by these 6 new ones:
4404
4405AcpiOsReadPciConfiguration
4406AcpiOsWritePciConfiguration
4407AcpiOsReadMemory
4408AcpiOsWriteMemory
4409AcpiOsReadPort
4410AcpiOsWritePort
4411
4412Added a new interface named AcpiOsGetRootPointer to allow the OSL
4413to perform the platform and/or OS-specific actions necessary to
4414obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
4415interface will simply call down to the CA core to perform the low-
4416memory search for the table.  On IA-64, the RSDP is obtained from
4417EFI.  Migrating this interface to the OSL allows the CA core to
4418remain OS and platform independent.
4419
4420Added a new interface named AcpiOsSignal to provide a generic
4421"function code and pointer" interface for various miscellaneous
4422signals and notifications that must be made to the host OS.   The
4423first such signals are intended to support the ASL Fatal and
4424Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
4425interface has been obsoleted.
4426
4427The definition of the AcpiFormatException interface has been
4428changed to simplify its use.  The caller no longer must supply a
4429buffer to the call; A pointer to a const string is now returned
4430directly.  This allows the call to be easily used in printf
4431statements, etc. since the caller does not have to manage a local
4432buffer.
4433
4434
4435 ASL Compiler, Version X2025:
4436
4437The ACPI 2.0 Switch/Case/Default operators have been implemented
4438and are fully functional.  They will work with all ACPI 1.0
4439interpreters, since the operators are simply translated to
4440If/Else
4441pairs.
4442
4443The ACPI 2.0 ElseIf operator is implemented and will also work
4444with 1.0 interpreters, for the same reason.
4445
4446Implemented support for ACPI 2.0 variable-length packages.  These
4447packages have a separate opcode, and their size is determined by
4448the interpreter at run-time.
4449
4450Documentation The ACPI CA Programmer Reference has been updated
4451to
4452reflect the new interfaces and changes to existing interfaces.
4453
4454 ------------------------------------------
4455Summary of changes for this label: 06_15_01
4456
4457 ACPI CA Core Subsystem:
4458
4459Fixed a problem where a DWORD-accessed field within a Buffer
4460object would get its byte address inadvertently rounded down to
4461the nearest DWORD.  Buffers are always Byte-accessible.
4462
4463 ASL Compiler, version X2024:
4464
4465Fixed a problem where the Switch() operator would either fault or
4466hang the compiler.  Note however, that the AML code for this ACPI
44672.0 operator is not yet implemented.
4468
4469Compiler uses the new AcpiOsGetTimer interface to obtain compile
4470timings.
4471
4472Implementation of the CreateField operator automatically converts
4473a reference to a named field within a resource descriptor from a
4474byte offset to a bit offset if required.
4475
4476Added some missing named fields from the resource descriptor
4477support. These are the names that are automatically created by
4478the
4479compiler to reference fields within a descriptor.  They are only
4480valid at compile time and are not passed through to the AML
4481interpreter.
4482
4483Resource descriptor named fields are now typed as Integers and
4484subject to compile-time typechecking when used in expressions.
4485
4486 ------------------------------------------
4487Summary of changes for this label: 05_18_01
4488
4489 ACPI CA Core Subsystem:
4490
4491Fixed a couple of problems in the Field support code where bits
4492from adjacent fields could be returned along with the proper
4493field
4494bits. Restructured the field support code to improve performance,
4495readability and maintainability.
4496
4497New DEBUG_PRINTP macro automatically inserts the procedure name
4498into the output, saving hundreds of copies of procedure name
4499strings within the source, shrinking the memory footprint of the
4500debug version of the core subsystem.
4501
4502 Source Code Structure:
4503
4504The source code directory tree was restructured to reflect the
4505current organization of the component architecture.  Some files
4506and directories have been moved and/or renamed.
4507
4508 Linux:
4509
4510Fixed leaking kacpidpc processes.
4511
4512Fixed queueing event data even when /proc/acpi/event is not
4513opened.
4514
4515 ASL Compiler, version X2020:
4516
4517Memory allocation performance enhancement - over 24X compile time
4518improvement on large ASL files.  Parse nodes and namestring
4519buffers are now allocated from a large internal compiler buffer.
4520
4521The temporary .SRC file is deleted unless the "-s" option is
4522specified
4523
4524The "-d" debug output option now sends all output to the .DBG
4525file
4526instead of the console.
4527
4528"External" second parameter is now optional
4529
4530"ElseIf" syntax now properly allows the predicate
4531
4532Last operand to "Load" now recognized as a Target operand
4533
4534Debug object can now be used anywhere as a normal object.
4535
4536ResourceTemplate now returns an object of type BUFFER
4537
4538EISAID now returns an object of type INTEGER
4539
4540"Index" now works with a STRING operand
4541
4542"LoadTable" now accepts optional parameters
4543
4544"ToString" length parameter is now optional
4545
4546"Interrupt (ResourceType," parse error fixed.
4547
4548"Register" with a user-defined region space parse error fixed
4549
4550Escaped backslash at the end of a string ("\\") scan/parse error
4551fixed
4552
4553"Revision" is now an object of type INTEGER.
4554
4555
4556
4557------------------------------------------
4558Summary of changes for this label: 05_02_01
4559
4560Linux:
4561
4562/proc/acpi/event now blocks properly.
4563
4564Removed /proc/sys/acpi. You can still dump your DSDT from
4565/proc/acpi/dsdt.
4566
4567 ACPI CA Core Subsystem:
4568
4569Fixed a problem introduced in the previous label where some of
4570the
4571"small" resource descriptor types were not recognized.
4572
4573Improved error messages for the case where an ASL Field is
4574outside
4575the range of the parent operation region.
4576
4577 ASL Compiler, version X2018:
4578
4579Added error detection for ASL Fields that extend beyond the
4580length
4581of the parent operation region (only if the length of the region
4582is known at compile time.)  This includes fields that have a
4583minimum access width that is smaller than the parent region, and
4584individual field units that are partially or entirely beyond the
4585extent of the parent.
4586
4587
4588
4589------------------------------------------
4590Summary of changes for this label: 04_27_01
4591
4592 ACPI CA Core Subsystem:
4593
4594Fixed a problem where the namespace mutex could be released at
4595the
4596wrong time during execution of AcpiRemoveAddressSpaceHandler.
4597
4598Added optional thread ID output for debug traces, to simplify
4599debugging of multiple threads.  Added context switch notification
4600when the debug code realizes that a different thread is now
4601executing ACPI code.
4602
4603Some additional external data types have been prefixed with the
4604string "ACPI_" for consistency.  This may effect existing code.
4605The data types affected are the external callback typedefs -
4606e.g.,
4607WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
4608
4609 Linux:
4610
4611Fixed an issue with the OSL semaphore implementation where a
4612thread was waking up with an error from receiving a SIGCHLD
4613signal.
4614
4615Linux version of ACPI CA now uses the system C library for string
4616manipulation routines instead of a local implementation.
4617
4618Cleaned up comments and removed TBDs.
4619
4620 ASL Compiler, version X2017:
4621
4622Enhanced error detection and reporting for all file I/O
4623operations.
4624
4625 Documentation:
4626
4627Programmer Reference updated to version 1.06.
4628
4629
4630
4631------------------------------------------
4632Summary of changes for this label: 04_13_01
4633
4634 ACPI CA Core Subsystem:
4635
4636Restructured support for BufferFields and RegionFields.
4637BankFields support is now fully operational.  All known 32-bit
4638limitations on field sizes have been removed.  Both BufferFields
4639and (Operation) RegionFields are now supported by the same field
4640management code.
4641
4642Resource support now supports QWORD address and IO resources. The
464316/32/64 bit address structures and the Extended IRQ structure
4644have been changed to properly handle Source Resource strings.
4645
4646A ThreadId of -1 is now used to indicate a "mutex not acquired"
4647condition internally and must never be returned by
4648AcpiOsThreadId.
4649This reserved value was changed from 0 since Unix systems allow a
4650thread ID of 0.
4651
4652Linux:
4653
4654Driver code reorganized to enhance portability
4655
4656Added a kernel configuration option to control ACPI_DEBUG
4657
4658Fixed the EC driver to honor _GLK.
4659
4660ASL Compiler, version X2016:
4661
4662Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
4663address space was set to 0, not 0x7f as it should be.
4664
4665 ------------------------------------------
4666Summary of changes for this label: 03_13_01
4667
4668 ACPI CA Core Subsystem:
4669
4670During ACPI initialization, the _SB_._INI method is now run if
4671present.
4672
4673Notify handler fix - notifies are deferred until the parent
4674method
4675completes execution.  This fixes the "mutex already acquired"
4676issue seen occasionally.
4677
4678Part of the "implicit conversion" rules in ACPI 2.0 have been
4679found to cause compatibility problems with existing ASL/AML.  The
4680convert "result-to-target-type" implementation has been removed
4681for stores to method Args and Locals.  Source operand conversion
4682is still fully implemented.  Possible changes to ACPI 2.0
4683specification pending.
4684
4685Fix to AcpiRsCalculatePciRoutingTableLength to return correct
4686length.
4687
4688Fix for compiler warnings for 64-bit compiles.
4689
4690 Linux:
4691
4692/proc output aligned for easier parsing.
4693
4694Release-version compile problem fixed.
4695
4696New kernel configuration options documented in Configure.help.
4697
4698IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
4699context" message.
4700
4701 OSPM:
4702
4703Power resource driver integrated with bus manager.
4704
4705Fixed kernel fault during active cooling for thermal zones.
4706
4707Source Code:
4708
4709The source code tree has been restructured.
4710
4711
4712
4713------------------------------------------
4714Summary of changes for this label: 03_02_01
4715
4716 Linux OS Services Layer (OSL):
4717
4718Major revision of all Linux-specific code.
4719
4720Modularized all ACPI-specific drivers.
4721
4722Added new thermal zone and power resource drivers.
4723
4724Revamped /proc interface (new functionality is under /proc/acpi).
4725
4726New kernel configuration options.
4727
4728 Linux known issues:
4729
4730New kernel configuration options not documented in Configure.help
4731yet.
4732
4733
4734Module dependencies not currently implemented. If used, they
4735should be loaded in this order: busmgr, power, ec, system,
4736processor, battery, ac_adapter, button, thermal.
4737
4738Modules will not load if CONFIG_MODVERSION is set.
4739
4740IBM 600E - entering S5 may reboot instead of shutting down.
4741
4742IBM 600E - Sleep button may generate "Invalid <NULL> context"
4743message.
4744
4745Some systems may fail with "execution mutex already acquired"
4746message.
4747
4748 ACPI CA Core Subsystem:
4749
4750Added a new OSL Interface, AcpiOsGetThreadId.  This was required
4751for the  deadlock detection code. Defined to return a non-zero,
475232-
4753bit thread ID for the currently executing thread.  May be a non-
4754zero constant integer on single-thread systems.
4755
4756Implemented deadlock detection for internal subsystem mutexes.
4757We
4758may add conditional compilation for this code (debug only) later.
4759
4760ASL/AML Mutex object semantics are now fully supported.  This
4761includes multiple acquires/releases by owner and support for the
4762Mutex SyncLevel parameter.
4763
4764A new "Force Release" mechanism automatically frees all ASL
4765Mutexes that have been acquired but not released when a thread
4766exits the interpreter.  This forces conformance to the ACPI spec
4767("All mutexes must be released when an invocation exits") and
4768prevents deadlocked ASL threads.  This mechanism can be expanded
4769(later) to monitor other resource acquisitions if OEM ASL code
4770continues to misbehave (which it will).
4771
4772Several new ACPI exception codes have been added for the Mutex
4773support.
4774
4775Recursive method calls are now allowed and supported (the ACPI
4776spec does in fact allow recursive method calls.)  The number of
4777recursive calls is subject to the restrictions imposed by the
4778SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
4779parameter.
4780
4781Implemented support for the SyncLevel parameter for control
4782methods (ACPI 2.0 feature)
4783
4784Fixed a deadlock problem when multiple threads attempted to use
4785the interpreter.
4786
4787Fixed a problem where the string length of a String package
4788element was not always set in a package returned from
4789AcpiEvaluateObject.
4790
4791Fixed a problem where the length of a String package element was
4792not always included in the length of the overall package returned
4793from AcpiEvaluateObject.
4794
4795Added external interfaces (Acpi*) to the ACPI debug memory
4796manager.  This manager keeps a list of all outstanding
4797allocations, and can therefore detect memory leaks and attempts
4798to
4799free memory blocks more than once. Useful for code such as the
4800power manager, etc.  May not be appropriate for device drivers.
4801Performance with the debug code enabled is slow.
4802
4803The ACPI Global Lock is now an optional hardware element.
4804
4805 ASL Compiler Version X2015:
4806
4807Integrated changes to allow the compiler to be generated on
4808multiple platforms.
4809
4810Linux makefile added to generate the compiler on Linux
4811
4812 Source Code:
4813
4814All platform-specific headers have been moved to their own
4815subdirectory, Include/Platform.
4816
4817New source file added, Interpreter/ammutex.c
4818
4819New header file, Include/acstruct.h
4820
4821 Documentation:
4822
4823The programmer reference has been updated for the following new
4824interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
4825
4826 ------------------------------------------
4827Summary of changes for this label: 02_08_01
4828
4829Core ACPI CA Subsystem: Fixed a problem where an error was
4830incorrectly returned if the return resource buffer was larger
4831than
4832the actual data (in the resource interfaces).
4833
4834References to named objects within packages are resolved to the
4835full pathname string before packages are returned directly (via
4836the AcpiEvaluateObject interface) or indirectly via the resource
4837interfaces.
4838
4839Linux OS Services Layer (OSL):
4840
4841Improved /proc battery interface.
4842
4843
4844Added C-state debugging output and other miscellaneous fixes.
4845
4846ASL Compiler Version X2014:
4847
4848All defined method arguments can now be used as local variables,
4849including the ones that are not actually passed in as parameters.
4850The compiler tracks initialization of the arguments and issues an
4851exception if they are used without prior assignment (just like
4852locals).
4853
4854The -o option now specifies a filename prefix that is used for
4855all
4856output files, including the AML output file.  Otherwise, the
4857default behavior is as follows:  1) the AML goes to the file
4858specified in the DSDT.  2) all other output files use the input
4859source filename as the base.
4860
4861 ------------------------------------------
4862Summary of changes for this label: 01_25_01
4863
4864Core ACPI CA Subsystem: Restructured the implementation of object
4865store support within the  interpreter.  This includes support for
4866the Store operator as well  as any ASL operators that include a
4867target operand.
4868
4869Partially implemented support for Implicit Result-to-Target
4870conversion. This is when a result object is converted on the fly
4871to the type of  an existing target object.  Completion of this
4872support is pending  further analysis of the ACPI specification
4873concerning this matter.
4874
4875CPU-specific code has been removed from the subsystem (hardware
4876directory).
4877
4878New Power Management Timer functions added
4879
4880Linux OS Services Layer (OSL): Moved system state transition code
4881to the core, fixed it, and modified  Linux OSL accordingly.
4882
4883Fixed C2 and C3 latency calculations.
4884
4885
4886We no longer use the compilation date for the version message on
4887initialization, but retrieve the version from
4888AcpiGetSystemInfo().
4889
4890Incorporated for fix Sony VAIO machines.
4891
4892Documentation:  The Programmer Reference has been updated and
4893reformatted.
4894
4895
4896ASL Compiler:  Version X2013: Fixed a problem where the line
4897numbering and error reporting could get out  of sync in the
4898presence of multiple include files.
4899
4900 ------------------------------------------
4901Summary of changes for this label: 01_15_01
4902
4903Core ACPI CA Subsystem:
4904
4905Implemented support for type conversions in the execution of the
4906ASL  Concatenate operator (The second operand is converted to
4907match the type  of the first operand before concatenation.)
4908
4909Support for implicit source operand conversion is partially
4910implemented.   The ASL source operand types Integer, Buffer, and
4911String are freely  interchangeable for most ASL operators and are
4912converted by the interpreter  on the fly as required.  Implicit
4913Target operand conversion (where the  result is converted to the
4914target type before storing) is not yet implemented.
4915
4916Support for 32-bit and 64-bit BCD integers is implemented.
4917
4918Problem fixed where a field read on an aligned field could cause
4919a
4920read  past the end of the field.
4921
4922New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
4923does not return a value, but the caller expects one.  (The ASL
4924compiler flags this as a warning.)
4925
4926ASL Compiler:
4927
4928Version X2011:
49291. Static typechecking of all operands is implemented. This
4930prevents the use of invalid objects (such as using a Package
4931where
4932an Integer is required) at compile time instead of at interpreter
4933run-time.
49342. The ASL source line is printed with ALL errors and warnings.
49353. Bug fix for source EOF without final linefeed.
49364. Debug option is split into a parse trace and a namespace
4937trace.
49385. Namespace output option (-n) includes initial values for
4939integers and strings.
49406. Parse-only option added for quick syntax checking.
49417. Compiler checks for duplicate ACPI name declarations
4942
4943Version X2012:
49441. Relaxed typechecking to allow interchangeability between
4945strings, integers, and buffers.  These types are now converted by
4946the interpreter at runtime.
49472. Compiler reports time taken by each internal subsystem in the
4948debug         output file.
4949
4950
4951 ------------------------------------------
4952Summary of changes for this label: 12_14_00
4953
4954ASL Compiler:
4955
4956This is the first official release of the compiler. Since the
4957compiler requires elements of the Core Subsystem, this label
4958synchronizes everything.
4959
4960------------------------------------------
4961Summary of changes for this label: 12_08_00
4962
4963
4964Fixed a problem where named references within the ASL definition
4965of both OperationRegions and CreateXXXFields did not work
4966properly.  The symptom was an AE_AML_OPERAND_TYPE during
4967initialization of the region/field. This is similar (but not
4968related internally) to the problem that was fixed in the last
4969label.
4970
4971Implemented both 32-bit and 64-bit support for the BCD ASL
4972functions ToBCD and FromBCD.
4973
4974Updated all legal headers to include "2000" in the copyright
4975years.
4976
4977 ------------------------------------------
4978Summary of changes for this label: 12_01_00
4979
4980Fixed a problem where method invocations within the ASL
4981definition
4982of both OperationRegions and CreateXXXFields did not work
4983properly.  The symptom was an AE_AML_OPERAND_TYPE during
4984initialization of the region/field:
4985
4986  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
4987[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
4988(0x3005)
4989
4990Fixed a problem where operators with more than one nested
4991subexpression would fail.  The symptoms were varied, by mostly
4992AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
4993problem that has gone unnoticed until now.
4994
4995  Subtract (Add (1,2), Multiply (3,4))
4996
4997Fixed a problem where AcpiGetHandle didn't quite get fixed in the
4998previous build (The prefix part of a relative path was handled
4999incorrectly).
5000
5001Fixed a problem where Operation Region initialization failed if
5002the operation region name was a "namepath" instead of a simple
5003"nameseg". Symptom was an AE_NO_OPERAND error.
5004
5005Fixed a problem where an assignment to a local variable via the
5006indirect RefOf mechanism only worked for the first such
5007assignment.  Subsequent assignments were ignored.
5008
5009 ------------------------------------------
5010Summary of changes for this label: 11_15_00
5011
5012ACPI 2.0 table support with backwards support for ACPI 1.0 and
5013the
50140.71 extensions.  Note: although we can read ACPI 2.0 BIOS
5015tables,
5016the AML  interpreter does NOT have support for the new 2.0 ASL
5017grammar terms at this time.
5018
5019All ACPI hardware access is via the GAS structures in the ACPI
50202.0
5021FADT.
5022
5023All physical memory addresses across all platforms are now 64
5024bits
5025wide. Logical address width remains dependent on the platform
5026(i.e., "void *").
5027
5028AcpiOsMapMemory interface changed to a 64-bit physical address.
5029
5030The AML interpreter integer size is now 64 bits, as per the ACPI
50312.0 specification.
5032
5033For backwards compatibility with ACPI 1.0, ACPI tables with a
5034revision number less than 2 use 32-bit integers only.
5035
5036Fixed a problem where the evaluation of OpRegion operands did not
5037always resolve them to numbers properly.
5038
5039------------------------------------------
5040Summary of changes for this label: 10_20_00
5041
5042Fix for CBN_._STA issue.  This fix will allow correct access to
5043CBN_ OpRegions when the _STA returns 0x8.
5044
5045Support to convert ACPI constants (Ones, Zeros, One) to actual
5046values before a package object is returned
5047
5048Fix for method call as predicate to if/while construct causing
5049incorrect if/while behavior
5050
5051Fix for Else block package lengths sometimes calculated wrong (if
5052block > 63 bytes)
5053
5054Fix for Processor object length field, was always zero
5055
5056Table load abort if FACP sanity check fails
5057
5058Fix for problem with Scope(name) if name already exists
5059
5060Warning emitted if a named object referenced cannot be found
5061(resolved) during method execution.
5062
5063
5064
5065
5066
5067------------------------------------------
5068Summary of changes for this label: 9_29_00
5069
5070New table initialization interfaces: AcpiInitializeSubsystem no
5071longer has any parameters AcpiFindRootPointer - Find the RSDP (if
5072necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
5073>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
5074AcpiLoadTables
5075
5076Note: These interface changes require changes to all existing
5077OSDs
5078
5079The PCI_Config default address space handler is always installed
5080at the root namespace object.
5081
5082-------------------------------------------
5083Summary of changes for this label: 09_15_00
5084
5085The new initialization architecture is implemented.  New
5086interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
5087AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
5088(Namespace is automatically loaded when a table is loaded)
5089
5090The ACPI_OPERAND_OBJECT has been optimized to shrink its size
5091from
509252 bytes to 32 bytes.  There is usually one of these for every
5093namespace object, so the memory savings is significant.
5094
5095Implemented just-in-time evaluation of the CreateField operators.
5096
5097Bug fixes for IA-64 support have been integrated.
5098
5099Additional code review comments have been implemented
5100
5101The so-called "third pass parse" has been replaced by a final
5102walk
5103through the namespace to initialize all operation regions
5104(address
5105spaces) and fields that have not yet been initialized during the
5106execution of the various _INI and REG methods.
5107
5108New file - namespace/nsinit.c
5109
5110-------------------------------------------
5111Summary of changes for this label: 09_01_00
5112
5113Namespace manager data structures have been reworked to change
5114the
5115primary  object from a table to a single object.  This has
5116resulted in dynamic memory  savings of 3X within the namespace
5117and
51182X overall in the ACPI CA subsystem.
5119
5120Fixed problem where the call to AcpiEvFindPciRootBuses was
5121inadvertently left  commented out.
5122
5123Reduced the warning count when generating the source with the GCC
5124compiler.
5125
5126Revision numbers added to each module header showing the
5127SourceSafe version of the file.  Please refer to this version
5128number when giving us feedback or comments on individual modules.
5129
5130The main object types within the subsystem have been renamed to
5131clarify their  purpose:
5132
5133ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
5134ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
5135ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
5136
5137NOTE: no changes to the initialization sequence are included in
5138this label.
5139
5140-------------------------------------------
5141Summary of changes for this label: 08_23_00
5142
5143Fixed problem where TerminateControlMethod was being called
5144multiple times per  method
5145
5146Fixed debugger problem where single stepping caused a semaphore
5147to
5148be  oversignalled
5149
5150Improved performance through additional parse object caching -
5151added  ACPI_EXTENDED_OP type
5152
5153-------------------------------------------
5154Summary of changes for this label: 08_10_00
5155
5156Parser/Interpreter integration:  Eliminated the creation of
5157complete parse trees  for ACPI tables and control methods.
5158Instead, parse subtrees are created and  then deleted as soon as
5159they are processed (Either entered into the namespace or
5160executed
5161by the interpreter).  This reduces the use of dynamic kernel
5162memory  significantly. (about 10X)
5163
5164Exception codes broken into classes and renumbered.  Be sure to
5165recompile all  code that includes acexcep.h.  Hopefully we won't
5166have to renumber the codes  again now that they are split into
5167classes (environment, programmer, AML code,  ACPI table, and
5168internal).
5169
5170Fixed some additional alignment issues in the Resource Manager
5171subcomponent
5172
5173Implemented semaphore tracking in the AcpiExec utility, and fixed
5174several places  where mutexes/semaphores were being unlocked
5175without a corresponding lock  operation.  There are no known
5176semaphore or mutex "leaks" at this time.
5177
5178Fixed the case where an ASL Return operator is used to return an
5179unnamed  package.
5180
5181-------------------------------------------
5182Summary of changes for this label: 07_28_00
5183
5184Fixed a problem with the way addresses were calculated in
5185AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
5186manifested itself when a Field was  created with WordAccess or
5187DwordAccess, but the field unit defined within the  Field was
5188less
5189than a Word or Dword.
5190
5191Fixed a problem in AmlDumpOperands() module's loop to pull
5192operands off of the  operand stack to display information. The
5193problem manifested itself as a TLB  error on 64-bit systems when
5194accessing an operand stack with two or more  operands.
5195
5196Fixed a problem with the PCI configuration space handlers where
5197context was  getting confused between accesses. This required a
5198change to the generic address  space handler and address space
5199setup definitions. Handlers now get both a  global handler
5200context
5201(this is the one passed in by the user when executing
5202AcpiInstallAddressSpaceHandler() and a specific region context
5203that is unique to  each region (For example, the _ADR, _SEG and
5204_BBN values associated with a  specific region). The generic
5205function definitions have changed to the  following:
5206
5207typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
5208UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
5209*HandlerContext, // This used to be void *Context void
5210*RegionContext); // This is an additional parameter
5211
5212typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
5213RegionHandle, UINT32 Function, void *HandlerContext,  void
5214**RegionContext); // This used to be **ReturnContext
5215
5216-------------------------------------------
5217Summary of changes for this label: 07_21_00
5218
5219Major file consolidation and rename.  All files within the
5220interpreter have been  renamed as well as most header files.
5221This
5222was done to prevent collisions with  existing files in the host
5223OSs -- filenames such as "config.h" and "global.h"  seem to be
5224quite common.  The VC project files have been updated.  All
5225makefiles  will require modification.
5226
5227The parser/interpreter integration continues in Phase 5 with the
5228implementation  of a complete 2-pass parse (the AML is parsed
5229twice) for each table;  This  avoids the construction of a huge
5230parse tree and therefore reduces the amount of  dynamic memory
5231required by the subsystem.  Greater use of the parse object cache
5232means that performance is unaffected.
5233
5234Many comments from the two code reviews have been rolled in.
5235
5236The 64-bit alignment support is complete.
5237
5238-------------------------------------------
5239Summary of changes for this label: 06_30_00
5240
5241With a nod and a tip of the hat to the technology of yesteryear,
5242we've added  support in the source code for 80 column output
5243devices.  The code is now mostly  constrained to 80 columns or
5244less to support environments and editors that 1)  cannot display
5245or print more than 80 characters on a single line, and 2) cannot
5246disable line wrapping.
5247
5248A major restructuring of the namespace data structure has been
5249completed.  The  result is 1) cleaner and more
5250understandable/maintainable code, and 2) a  significant reduction
5251in the dynamic memory requirement for each named ACPI  object
5252(almost half).
5253
5254-------------------------------------------
5255Summary of changes for this label: 06_23_00
5256
5257Linux support has been added.  In order to obtain approval to get
5258the ACPI CA  subsystem into the Linux kernel, we've had to make
5259quite a few changes to the  base subsystem that will affect all
5260users (all the changes are generic and OS- independent).  The
5261effects of these global changes have been somewhat far  reaching.
5262Files have been merged and/or renamed and interfaces have been
5263renamed.   The major changes are described below.
5264
5265Osd* interfaces renamed to AcpiOs* to eliminate namespace
5266pollution/confusion  within our target kernels.  All OSD
5267interfaces must be modified to match the new  naming convention.
5268
5269Files merged across the subsystem.  A number of the smaller
5270source
5271and header  files have been merged to reduce the file count and
5272increase the density of the  existing files.  There are too many
5273to list here.  In general, makefiles that  call out individual
5274files will require rebuilding.
5275
5276Interpreter files renamed.  All interpreter files now have the
5277prefix am*  instead of ie* and is*.
5278
5279Header files renamed:  The acapi.h file is now acpixf.h.  The
5280acpiosd.h file is  now acpiosxf.h.  We are removing references to
5281the acronym "API" since it is  somewhat windowsy. The new name is
5282"external interface" or xface or xf in the  filenames.j
5283
5284
5285All manifest constants have been forced to upper case (some were
5286mixed case.)   Also, the string "ACPI_" has been prepended to
5287many
5288(not all) of the constants,  typedefs, and structs.
5289
5290The globals "DebugLevel" and "DebugLayer" have been renamed
5291"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
5292
5293All other globals within the subsystem are now prefixed with
5294"AcpiGbl_" Internal procedures within the subsystem are now
5295prefixed with "Acpi" (with only  a few exceptions).  The original
5296two-letter abbreviation for the subcomponent  remains after
5297"Acpi"
5298- for example, CmCallocate became AcpiCmCallocate.
5299
5300Added a source code translation/conversion utility.  Used to
5301generate the Linux  source code, it can be modified to generate
5302other types of source as well. Can  also be used to cleanup
5303existing source by removing extraneous spaces and blank  lines.
5304Found in tools/acpisrc/*
5305
5306OsdUnMapMemory was renamed to OsdUnmapMemory and then
5307AcpiOsUnmapMemory.  (UnMap  became Unmap).
5308
5309A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
5310When set to  one, this indicates that the caller wants to use the
5311semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
5312both types.  However, implementers of this  call may want to use
5313different OS primitives depending on the type of semaphore
5314requested.  For example, some operating systems provide separate
5315"mutex" and  "semaphore" interfaces - where the mutex interface
5316is
5317much faster because it  doesn't have all the overhead of a full
5318semaphore implementation.
5319
5320Fixed a deadlock problem where a method that accesses the PCI
5321address space can  block forever if it is the first access to the
5322space.
5323
5324-------------------------------------------
5325Summary of changes for this label: 06_02_00
5326
5327Support for environments that cannot handle unaligned data
5328accesses (e.g.  firmware and OS environments devoid of alignment
5329handler technology namely  SAL/EFI and the IA-64 Linux kernel)
5330has
5331been added (via configurable macros) in  these three areas: -
5332Transfer of data from the raw AML byte stream is done via byte
5333moves instead of    word/dword/qword moves. - External objects
5334are
5335aligned within the user buffer, including package   elements (sub-
5336objects). - Conversion of name strings to UINT32 Acpi Names is
5337now
5338done byte-wise.
5339
5340The Store operator was modified to mimic Microsoft's
5341implementation when storing  to a Buffer Field.
5342
5343Added a check of the BM_STS bit before entering C3.
5344
5345The methods subdirectory has been obsoleted and removed.  A new
5346file, cmeval.c  subsumes the functionality.
5347
5348A 16-bit (DOS) version of AcpiExec has been developed.  The
5349makefile is under  the acpiexec directory.
5350