xref: /freebsd/sys/contrib/dev/acpica/changes.txt (revision 93e779a26c651610ac6e7986d67ecc9ed2cadcbf)
1----------------------------------------
218 August 2015. Summary of changes for version 20150818:
3
4This release is available at https://acpica.org/downloads
5
61) ACPICA kernel-resident subsystem:
7
8Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
9Zheng. ACPICA BZ 1186.
10
11Completed development to ensure that the ACPICA Disassembler and Debugger
12are fully standalone components of ACPICA. Removed cross-component
13dependences. Lv Zheng.
14
15The max-number-of-AML-loops is now runtime configurable (previously was
16compile-time only). This is essentially a loop timeout to force-abort
17infinite AML loops. ACPCIA BZ 1192.
18
19Debugger: Cleanup output to dump ACPI names and namepaths without any
20trailing underscores. Lv Zheng. ACPICA BZ 1135.
21
22Removed unnecessary conditional compilations across the Debugger and
23Disassembler components where entire modules could be left uncompiled.
24
25The aapits test is deprecated and has been removed from the ACPICA git
26tree. The test has never been completed and has not been maintained, thus
27becoming rather useless. ACPICA BZ 1015, 794.
28
29A batch of small changes to close bugzilla and other reports:
30- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
31- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
32- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
33- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
34Moore.
35- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
36ACPICA BZ 1184.
37- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
38operators.
39- Debugger: Split debugger initialization/termination interfaces. Lv
40Zheng.
41- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
42identification.
43- AcpiExec: Add debug message during _REG method phase during table
44load/init.
45- AcpiNames: Fix a regression where some output was missing and no longer
46emitted.
47- Debugger: General cleanup and simplification. Lv Zheng.
48- Disassembler: Cleanup use of several global option variables. Lv Zheng.
49
50Example Code and Data Size: These are the sizes for the OS-independent
51acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
52debug version of the code includes the debug output trace mechanism and
53has a much larger code and data size.
54
55  Current Release:
56    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
57    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
58  Previous Release:
59    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
60    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
61
62
632) iASL Compiler/Disassembler and Tools:
64
65AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
66were not handled properly and caused load errors. Now, properly invoke
67and use the ACPICA auto-reallocate mechanism for ACPI table data
68structures. ACPICA BZ 1188
69
70AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
71BZ 1190.
72
73AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
74AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
75executed during initialization. ACPICA BZ 1187, 1189.
76
77iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
78that corresponds to each disassembled ASL statement, to simplify
79debugging. ACPICA BZ 1191.
80
81Debugger: Add option to the "objects" command to display a summary of the
82current namespace objects (Object type and count). This is displayed if
83the command is entered with no arguments.
84
85AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
86
87----------------------------------------
8817 July 2015. Summary of changes for version 20150717:
89
901) ACPICA kernel-resident subsystem:
91
92Improved the partitioning between the Debugger and Disassembler
93components. This allows the Debugger to be used standalone within kernel
94code without the Disassembler (which is used for single stepping also).
95This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
96
97Debugger: Implemented a new command to trace the execution of control
98methods (Trace). This is especially useful for the in-kernel version of
99the debugger when file I/O may not be available for method trace output.
100See the ACPICA reference for more information. Lv Zheng.
101
102Moved all C library prototypes (used for the local versions of these
103functions when requested) to a new header, acclib.h
104Cleaned up the use of non-ANSI C library functions. These functions are
105implemented locally in ACPICA. Moved all such functions to a common
106source file, utnonansi.c
107
108Debugger: Fixed a problem with the "!!" command (get last command
109executed) where the debugger could enter an infinite loop and eventually
110crash.
111
112Removed the use of local macros that were used for some of the standard C
113library functions to automatically cast input parameters. This mostly
114affected the is* functions where the input parameter is defined to be an
115int. This required a few modifications to the main ACPICA source code to
116provide casting for these functions and eliminate possible compiler
117warnings for these parameters.
118
119Across the source code, added additional status/error checking to resolve
120issues discovered by static source code analysis tools such as Coverity.
121
122Example Code and Data Size: These are the sizes for the OS-independent
123acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
124debug version of the code includes the debug output trace mechanism and
125has a much larger code and data size.
126
127  Current Release:
128    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
129    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
130  Previous Release:
131    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
132    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
133
134
1352) iASL Compiler/Disassembler and Tools:
136
137iASL: Fixed a regression where the device map file feature no longer
138worked properly when used in conjunction with the disassembler. It only
139worked properly with the compiler itself.
140
141iASL: Implemented a new warning for method LocalX variables that are set
142but never used (similar to a C compiler such as gcc). This also applies
143to ArgX variables that are not defined by the parent method, and are
144instead (legally) used as local variables.
145
146iASL/Preprocessor: Finished the pass-through of line numbers from the
147preprocessor to the compiler. This ensures that compiler errors/warnings
148have the correct original line numbers and filenames, regardless of any
149#include files.
150
151iASL/Preprocessor: Fixed a couple of issues with comment handling and the
152pass-through of comments to the preprocessor output file (which becomes
153the compiler input file). Also fixed a problem with // comments that
154appear after a math expression.
155
156iASL: Added support for the TCPA server table to the table compiler and
157template generator. (The client table was already previously supported)
158
159iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
160identify the iASL compiler.
161
162Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
163multiple times. The new names are ACPI_SIGN_NEGATIVE and
164ACPI_SIGN_POSITIVE.
165
166AcpiHelp: Update to expand help messages for the iASL preprocessor
167directives.
168
169
170----------------------------------------
17119 June 2015. Summary of changes for version 20150619:
172
173Two regressions in version 20150616 have been addressed:
174
175Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
176etc.) This update changes ACPICA to only use the standard headers for
177functions, or the prototypes for the local versions of the C library
178functions. Across the source code, this required some additional casts
179for some Clib invocations for portability. Moved all local prototypes to
180a new file, acclib.h
181
182Fixes several problems with recent changes to the handling of the FACS
183table that could cause some systems not to boot.
184
185
186----------------------------------------
18716 June 2015. Summary of changes for version 20150616:
188
189
1901) ACPICA kernel-resident subsystem:
191
192Across the entire ACPICA source code base, the various macros for the C
193library functions (such as ACPI_STRLEN, etc.) have been removed and
194replaced by the standard C library names (strlen, etc.) The original
195purpose for these macros is no longer applicable. This simplification
196reduces the number of macros used in the ACPICA source code
197significantly, improving readability and maintainability.
198
199Implemented support for a new ACPI table, the OSDT. This table, the
200"override" SDT, can be loaded directly by the host OS at boot time. It
201enables the replacement of existing namespace objects that were installed
202via the DSDT and/or SSDTs. The primary purpose for this is to replace
203buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
204for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
205Moore.
206
207Added support for systems with (improperly) two FACS tables -- a "32-bit"
208table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
209X field). This change will support both automatically. There continues to
210be systems found with this issue. This support requires a change to the
211AcpiSetFirmwareWakingVector interface. Also, a public global variable has
212been added to allow the host to select which FACS is desired
213(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
214details Lv Zheng.
215
216Added a new feature to allow for systems that do not contain an FACS.
217Although this is already supported on hardware-reduced platforms, the
218feature has been extended for all platforms. The reasoning is that we do
219not want to abort the entire ACPICA initialization just because the
220system is seriously buggy and has no FACS.
221
222Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
223not correctly transcribed from the ACPI specification in ACPICA version
22420150515.
225
226Implemented support for the _CLS object in the AcpiGetObjectInfo external
227interface.
228
229Updated the definitions of the TCPA and TPM2 ACPI tables to the more
230recent TCG ACPI Specification, December 14, 2014. Table disassembler and
231compiler also updated. Note: The TCPA "server" table is not supported by
232the disassembler/table-compiler at this time.
233
234ACPI 6.0: Added definitions for the new GIC version field in the MADT.
235
236Example Code and Data Size: These are the sizes for the OS-independent
237acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
238debug version of the code includes the debug output trace mechanism and
239has a much larger code and data size.
240
241  Current Release:
242    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
243    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
244  Previous Release:
245    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
246    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
247
248
2492) iASL Compiler/Disassembler and Tools:
250
251Disassembler: Fixed a problem with the new symbolic operator disassembler
252where incorrect ASL code could be emitted in some cases for the "non-
253commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
254ShiftRight. The actual problem cases seem to be rather unusual in common
255ASL code, however. David Box.
256
257Modified the linux version of acpidump to obtain ACPI tables from not
258just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
259Zheng.
260
261iASL: Fixed a problem where the user preprocessor output file (.i)
262contained extra data that was not expected. The compiler was using this
263file as a temporary file and passed through #line directives in order to
264keep compiler error messages in sync with the input file and line number
265across multiple include files. The (.i) is no longer a temporary file as
266the compiler uses a new, different file for the original purpose.
267
268iASL: Fixed a problem where comments within the original ASL source code
269file were not passed through to the preprocessor output file, nor any
270listing files.
271
272iASL: Fixed some issues for the handling of the "#include" preprocessor
273directive and the similar (but not the same) "Include" ASL operator.
274
275iASL: Add support for the new OSDT in both the disassembler and compiler.
276
277iASL: Fixed a problem with the constant folding support where a Buffer
278object could be incorrectly generated (incorrectly formed) during a
279conversion to a Store() operator.
280
281AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
282description text for the _REV predefined name. _REV now permanently
283returns 2, as per the ACPI 6.0 specification.
284
285Debugger: Enhanced the output of the Debug ASL object for references
286produced by the Index operator. For Buffers and strings, only output the
287actual byte pointed to by the index. For packages, only print the single
288package element decoded by the index. Previously, the entire
289buffer/string/package was emitted.
290
291iASL/Table-compiler: Fixed a regression where the "generic" data types
292were no longer recognized, causing errors.
293
294
295----------------------------------------
29615 May 2015. Summary of changes for version 20150515:
297
298This release implements most of ACPI 6.0 as described below.
299
3001) ACPICA kernel-resident subsystem:
301
302Implemented runtime argument checking and return value checking for all
303new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
304_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
305
306Example Code and Data Size: These are the sizes for the OS-independent
307acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
308debug version of the code includes the debug output trace mechanism and
309has a much larger code and data size.
310
311  Current Release:
312    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
313    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
314  Previous Release:
315    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
316    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
317
318
3192) iASL Compiler/Disassembler and Tools:
320
321iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
322names (argument count validation and return value typechecking.)
323
324iASL disassembler and table compiler: implemented support for all new
325ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
326
327iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
328tables: FADT, MADT.
329
330iASL preprocessor: Added a new directive to enable inclusion of binary
331blobs into ASL code. The new directive is #includebuffer. It takes a
332binary file as input and emits a named ascii buffer object into the ASL
333code.
334
335AcpiHelp: Added support for all new ACPI 6.0 predefined names.
336
337AcpiHelp: Added a new option, -d, to display all iASL preprocessor
338directives.
339
340AcpiHelp: Added a new option, -t, to display all known/supported ACPI
341tables.
342
343----------------------------------------
34410 April 2015. Summary of changes for version 20150410:
345
346Reverted a change introduced in version 20150408 that caused
347a regression in the disassembler where incorrect operator
348symbols could be emitted.
349
350----------------------------------------
35108 April 2015. Summary of changes for version 20150408:
352
353
3541) ACPICA kernel-resident subsystem:
355
356Permanently set the return value for the _REV predefined name. It now
357returns 2 (was 5). This matches other ACPI implementations. _REV will be
358deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
359for ACPI 2.0 and later. It should never be used to differentiate or
360identify operating systems.
361
362Added the "Windows 2015" string to the _OSI support. ACPICA will now
363return TRUE to a query with this string.
364
365Fixed several issues with the local version of the printf function.
366
367Added the C99 compiler option (-std=c99) to the Unix makefiles.
368
369  Current Release:
370    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
371    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
372  Previous Release:
373    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
374    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
375
376
3772) iASL Compiler/Disassembler and Tools:
378
379iASL: Implemented an enhancement to the constant folding feature to
380transform the parse tree to a simple Store operation whenever possible:
381    Add (2, 3, X) ==> is converted to: Store (5, X)
382    X = 2 + 3     ==> is converted to: Store (5, X)
383
384Updated support for the SLIC table (Software Licensing Description Table)
385in both the Data Table compiler and the disassembler. The SLIC table
386support now conforms to "Microsoft Software Licensing Tables (SLIC and
387MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
388following the ACPI header is now defined to be "Proprietary Data", and as
389such, can only be entered or displayed as a hex data block.
390
391Implemented full support for the MSDM table as described in the document
392above. Note: The format of MSDM is similar to SLIC. Any MSDM data
393following the ACPI header is defined to be "Proprietary Data", and can
394only be entered or displayed as a hex data block.
395
396Implemented the -Pn option for the iASL Table Compiler (was only
397implemented for the ASL compiler). This option disables the iASL
398preprocessor.
399
400Disassembler: For disassembly of Data Tables, added a comment field
401around the Ascii equivalent data that is emitted as part of the "Raw
402Table Data" block. This prevents the iASL Preprocessor from possible
403confusion if/when the table is compiled.
404
405Disassembler: Added an option (-df) to force the disassembler to assume
406that the table being disassembled contains valid AML. This feature is
407useful for disassembling AML files that contain ACPI signatures other
408than DSDT or SSDT (such as OEMx or other signatures).
409
410Changes for the EFI version of the tools:
4111) Fixed a build error/issue
4122) Fixed a cast warning
413
414iASL: Fixed a path issue with the __FILE__ operator by making the
415directory prefix optional within the internal SplitInputFilename
416function.
417
418Debugger: Removed some unused global variables.
419
420Tests: Updated the makefile for proper generation of the AAPITS suite.
421
422----------------------------------------
42304 February 2015. Summary of changes for version 20150204:
424
425ACPICA kernel-resident subsystem:
426
427Updated all ACPICA copyrights and signons to 2014. Added the 2014
428copyright to all module headers and signons, including the standard Linux
429header. This affects virtually every file in the ACPICA core subsystem,
430iASL compiler, all ACPICA utilities, and the test suites.
431
432Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
433A raw gpe handling mechanism was created to allow better handling of GPE
434storms that aren't easily managed by the normal handler. The raw handler
435allows disabling/renabling of the the GPE so that interrupt storms can be
436avoided in cases where events cannot be timely serviced. In this
437scenario, handlers should use the AcpiSetGpe() API to disable/enable the
438GPE. This API will leave the reference counts undisturbed, thereby
439preventing unintentional clearing of the GPE when the intent in only to
440temporarily disable it. Raw handlers allow enabling and disabling of a
441GPE by removing GPE register locking. As such, raw handlers much provide
442their own locks while using GPE API's to protect access to GPE data
443structures.
444Lv Zheng
445
446Events: Always modify GPE registers under the GPE lock.
447Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
448values. Reported as bug by joe.liu@apple.com.
449
450Unix makefiles: Separate option to disable optimizations and
451_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
452NOOPT disable option and creates a separate flag (NOFORTIFY) for this
453purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
454errors when building ACPICA. This allows disabling the option without
455also having to disable optimazations.
456David Box
457
458  Current Release:
459    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
460    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
461
462----------------------------------------
46307 November 2014. Summary of changes for version 20141107:
464
465This release is available at https://acpica.org/downloads
466
467This release introduces and implements language extensions to ASL that
468provide support for symbolic ("C-style") operators and expressions. These
469language extensions are known collectively as ASL+.
470
471
4721) iASL Compiler/Disassembler and Tools:
473
474Disassembler: Fixed a problem with disassembly of the UartSerialBus
475macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
476Box.
477
478Disassembler: Fixed the Unicode macro support to add escape sequences.
479All non-printable ASCII values are emitted as escape sequences, as well
480as the standard escapes for quote and backslash. Ensures that the
481disassembled macro can be correctly recompiled.
482
483iASL: Added Printf/Fprintf macros for formatted output. These macros are
484translated to existing AML Concatenate and Store operations. Printf
485writes to the ASL Debug object. Fprintf allows the specification of an
486ASL name as the target. Only a single format specifier is required, %o,
487since the AML interpreter dynamically converts objects to the required
488type. David E. Box.
489
490    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
491                 (Concatenate (Concatenate (Concatenate ("", Arg0),
492                 ": Unexpected value for "), Arg1), ", "), Arg2),
493                 " at line "), Arg3), Debug)
494
495    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
496                 Arg0, Arg1, Arg2, Arg3)
497
498    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
499                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
500
501    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
502
503iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
504ASL parse tree before the AML code is generated. This allows blocks of
505ASL code to be removed in order to help locate and identify problem
506devices and/or code. David E. Box.
507
508AcpiExec: Added support (-fi) for an optional namespace object
509initialization file. This file specifies initial values for namespace
510objects as necessary for debugging and testing different ASL code paths
511that may be taken as a result of BIOS options.
512
513
5142) Overview of symbolic operator support for ASL (ASL+)
515-------------------------------------------------------
516
517As an extension to the ASL language, iASL implements support for symbolic
518(C-style) operators for math and logical expressions. This can greatly
519simplify ASL code as well as improve both readability and
520maintainability. These language extensions can exist concurrently with
521all legacy ASL code and expressions.
522
523The symbolic extensions are 100% compatible with existing AML
524interpreters, since no new AML opcodes are created. To implement the
525extensions, the iASL compiler transforms the symbolic expressions into
526the legacy ASL/AML equivalents at compile time.
527
528Full symbolic expressions are supported, along with the standard C
529precedence and associativity rules.
530
531Full disassembler support for the symbolic expressions is provided, and
532creates an automatic migration path for existing ASL code to ASL+ code
533via the disassembly process. By default, the disassembler now emits ASL+
534code with symbolic expressions. An option (-dl) is provided to force the
535disassembler to emit legacy ASL code if desired.
536
537Below is the complete list of the currently supported symbolic operators
538with examples. See the iASL User Guide for additional information.
539
540
541ASL+ Syntax      Legacy ASL Equivalent
542-----------      ---------------------
543
544    // Math operators
545
546Z = X + Y        Add (X, Y, Z)
547Z = X - Y        Subtract (X, Y, Z)
548Z = X * Y        Multiply (X, Y, Z)
549Z = X / Y        Divide (X, Y, , Z)
550Z = X % Y        Mod (X, Y, Z)
551Z = X << Y       ShiftLeft (X, Y, Z)
552Z = X >> Y       ShiftRight (X, Y, Z)
553Z = X & Y        And (X, Y, Z)
554Z = X | Y        Or (X, Y, Z)
555Z = X ^ Y        Xor (X, Y, Z)
556Z = ~X           Not (X, Z)
557X++              Increment (X)
558X--              Decrement (X)
559
560    // Logical operators
561
562(X == Y)         LEqual (X, Y)
563(X != Y)         LNotEqual (X, Y)
564(X < Y)          LLess (X, Y)
565(X > Y)          LGreater (X, Y)
566(X <= Y)         LLessEqual (X, Y)
567(X >= Y)         LGreaterEqual (X, Y)
568(X && Y)         LAnd (X, Y)
569(X || Y)         LOr (X, Y)
570(!X)             LNot (X)
571
572    // Assignment and compound assignment operations
573
574X = Y           Store (Y, X)
575X += Y          Add (X, Y, X)
576X -= Y          Subtract (X, Y, X)
577X *= Y          Multiply (X, Y, X)
578X /= Y          Divide (X, Y, , X)
579X %= Y          Mod (X, Y, X)
580X <<= Y         ShiftLeft (X, Y, X)
581X >>= Y         ShiftRight (X, Y, X)
582X &= Y          And (X, Y, X)
583X |= Y          Or (X, Y, X)
584X ^= Y          Xor (X, Y, X)
585
586
5873) ASL+ Examples:
588-----------------
589
590Legacy ASL:
591        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
592            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
5930x03FB),
594            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
595        {
596            And (MEMB, 0xFFFFFFF0, SRMB)
597            Store (MEMB, Local2)
598            Store (PDBM, Local1)
599            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
600            Store (SRMB, MEMB)
601            Or (PDBM, 0x02, PDBM)
602        }
603
604ASL+ version:
605        If (((R510 & 0x03FB) == 0x02E0) ||
606            ((R520 & 0x03FB) == 0x02E0) ||
607            ((R530 & 0x03FB) == 0x02E0) ||
608            ((R540 & 0x03FB) == 0x02E0))
609        {
610            SRMB = (MEMB & 0xFFFFFFF0)
611            Local2 = MEMB
612            Local1 = PDBM
613            PDBM &= 0xFFFFFFFFFFFFFFF9
614            MEMB = SRMB
615            PDBM |= 0x02
616        }
617
618Legacy ASL:
619        Store (0x1234, Local1)
620        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
621        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
622        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
623        Store (Index (PKG1, 0x03), Local6)
624        Store (Add (Local3, Local2), Debug)
625        Add (Local1, 0x0F, Local2)
626        Add (Local1, Multiply (Local2, Local3), Local2)
627        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
628
629ASL+ version:
630        Local1 = 0x1234
631        Local3 = (((Local1 + TEST) + 0x20) * Local2)
632        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
633        Local3 = (Local1 + (TEST + (0x20 * Local2)))
634        Local6 = Index (PKG1, 0x03)
635        Debug = (Local3 + Local2)
636        Local2 = (Local1 + 0x0F)
637        Local2 = (Local1 + (Local2 * Local3))
638        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
639
640
641----------------------------------------
64226 September 2014. Summary of changes for version 20140926:
643
6441) ACPICA kernel-resident subsystem:
645
646Updated the GPIO operation region handler interface (GeneralPurposeIo).
647In order to support GPIO Connection objects with multiple pins, along
648with the related Field objects, the following changes to the interface
649have been made: The Address is now defined to be the offset in bits of
650the field unit from the previous invocation of a Connection. It can be
651viewed as a "Pin Number Index" into the connection resource descriptor.
652The BitWidth is the exact bit width of the field. It is usually one bit,
653but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
654additional information and examples.
655
656GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
657corresponding _Lxx/_Exx methods are disabled (they may have been enabled
658by the firmware), so that they cannot fire until they are enabled via
659AcpiUpdateAllGpes. Rafael J. Wysocki.
660
661Added a new return flag for the Event/GPE status interfaces --
662AcpiGetEventStatus and AcpiGetGpeStatus. The new
663ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
664GPE currently has a handler associated with it, and can thus actually
665affect the system. Lv Zheng.
666
667Example Code and Data Size: These are the sizes for the OS-independent
668acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
669debug version of the code includes the debug output trace mechanism and
670has a much larger code and data size.
671
672  Current Release:
673    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
674    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
675  Previous Release:
676    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
677    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
678
6792) iASL Compiler/Disassembler and Tools:
680
681iASL: Fixed a memory allocation/free regression introduced in 20140828
682that could cause the compiler to crash. This was introduced inadvertently
683during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
6841113.
685
686iASL: Removed two error messages that have been found to create false
687positives, until they can be fixed and fully validated (ACPICA BZ 1112):
6881) Illegal forward reference within a method
6892) Illegal reference across two methods
690
691iASL: Implemented a new option (-lm) to create a hardware mapping file
692that summarizes all GPIO, I2C, SPI, and UART connections. This option
693works for both the compiler and disassembler. See the iASL compiler user
694guide for additional information and examples (section 6.4.6).
695
696AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
697version 2. This corrects the AE_BAD_HEADER exception seen on systems with
698a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
699
700AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
701unless STDIN is actually a terminal. Assists with batch-mode processing.
702ACPICA BZ 1114.
703
704Disassembler/AcpiHelp: Added another large group of recognized _HID
705values.
706
707
708----------------------------------------
70928 August 2014. Summary of changes for version 20140828:
710
7111) ACPICA kernel-resident subsystem:
712
713Fixed a problem related to the internal use of the Timer() operator where
714a 64-bit divide could cause an attempted link to a double-precision math
715library. This divide is not actually necessary, so the code was
716restructured to eliminate it. Lv Zheng.
717
718ACPI 5.1: Added support for the runtime validation of the _DSD package
719(similar to the iASL support).
720
721ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
722SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
723
724Example Code and Data Size: These are the sizes for the OS-independent
725acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
726debug version of the code includes the debug output trace mechanism and
727has a much larger code and data size.
728
729  Current Release:
730    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
731    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
732  Previous Release:
733    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
734    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
735
7362) iASL Compiler/Disassembler and Tools:
737
738AcpiExec: Fixed a problem on unix systems where the original terminal
739state was not always properly restored upon exit. Seen when using the -v
740option. ACPICA BZ 1104.
741
742iASL: Fixed a problem with the validation of the ranges/length within the
743Memory24 resource descriptor. There was a boundary condition when the
744range was equal to the (length -1) caused by the fact that these values
745are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
746
747Disassembler: Fixed a problem with the GpioInt descriptor interrupt
748polarity
749flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
750is
751now supported properly.
752
753ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
754in the disassembler, data table compiler, and table template generator.
755
756iASL: Added a requirement for Device() objects that one of either a _HID
757or _ADR must exist within the scope of a Device, as per the ACPI
758specification. Remove a similar requirement that was incorrectly in place
759for the _DSD object.
760
761iASL: Added error detection for illegal named references within control
762methods that would cause runtime failures. Now trapped as errors are: 1)
763References to objects within a non-parent control method. 2) Forward
764references (within a method) -- for control methods, AML interpreters use
765a one-pass parse of control methods. ACPICA BZ 1008.
766
767iASL: Added error checking for dependencies related to the _PSx power
768methods. ACPICA BZ 1029.
7691) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
770_PS3.
7712) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
772scope.
773
774iASL and table compiler: Cleanup miscellaneous memory leaks by fully
775deploying the existing object and string caches and adding new caches for
776the table compiler.
777
778iASL: Split the huge parser source file into multiple subfiles to improve
779manageability. Generation now requires the M4 macro preprocessor, which
780is part of the Bison distribution on both unix and windows platforms.
781
782AcpiSrc: Fixed and removed all extraneous warnings generated during
783entire ACPICA source code scan and/or conversion.
784
785
786----------------------------------------
787
78824 July 2014. Summary of changes for version 20140724:
789
790The ACPI 5.1 specification has been released and is available at:
791http://uefi.org/specs/access
792
793
7940) ACPI 5.1 support in ACPICA:
795
796ACPI 5.1 is fully supported in ACPICA as of this release.
797
798New predefined names. Support includes iASL and runtime ACPICA
799validation.
800    _CCA (Cache Coherency Attribute).
801    _DSD (Device-Specific Data). David Box.
802
803Modifications to existing ACPI tables. Support includes headers, iASL
804Data Table compiler, disassembler, and the template generator.
805    FADT - New fields and flags. Graeme Gregory.
806    GTDT - One new subtable and new fields. Tomasz Nowicki.
807    MADT - Two new subtables. Tomasz Nowicki.
808    PCCT - One new subtable.
809
810Miscellaneous.
811    New notification type for System Resource Affinity change events.
812
813
8141) ACPICA kernel-resident subsystem:
815
816Fixed a regression introduced in 20140627 where a fault can happen during
817the deletion of Alias AML namespace objects. The problem affected both
818the core ACPICA and the ACPICA tools including iASL and AcpiExec.
819
820Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
821simple mechanism to enable wake GPEs that have no associated handler or
822control method. Rafael Wysocki.
823
824Updated the AcpiEnableGpe interface to disallow the enable if there is no
825handler or control method associated with the particular GPE. This will
826help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
827
828Updated GPE handling and dispatch by disabling the GPE before clearing
829the status bit for edge-triggered GPEs. Lv Zheng.
830
831Added Timer() support to the AML Debug object. The current timer value is
832now displayed with each invocation of (Store to) the debug object to
833enable simple generation of execution times for AML code (method
834execution for example.) ACPICA BZ 1093.
835
836Example Code and Data Size: These are the sizes for the OS-independent
837acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
838debug version of the code includes the debug output trace mechanism and
839has a much larger code and data size.
840
841  Current Release:
842    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
843    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
844  Previous Release:
845    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
846    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
847
848
8492) iASL Compiler/Disassembler and Tools:
850
851Fixed an issue with the recently added local printf implementation,
852concerning width/precision specifiers that could cause incorrect output.
853Lv Zheng. ACPICA BZ 1094.
854
855Disassembler: Added support to detect buffers that contain UUIDs and
856disassemble them to an invocation of the ToUUID operator. Also emit
857commented descriptions of known ACPI-related UUIDs.
858
859AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
860-u. Adds three new files.
861
862iASL: Update table compiler and disassembler for DMAR table changes that
863were introduced in September 2013. With assistance by David Woodhouse.
864
865----------------------------------------
86627 June 2014. Summary of changes for version 20140627:
867
8681) ACPICA kernel-resident subsystem:
869
870Formatted Output: Implemented local versions of standard formatted output
871utilities such as printf, etc. Over time, it has been discovered that
872there are in fact many portability issues with printf, and the addition
873of this feature will fix/prevent these issues once and for all. Some
874known issues are summarized below:
875
8761) Output of 64-bit values is not portable. For example, UINT64 is %ull
877for the Linux kernel and is %uI64 for some MSVC versions.
8782) Invoking printf consistently in a manner that is portable across both
87932-bit and 64-bit platforms is difficult at best in many situations.
8803) The output format for pointers varies from system to system (leading
881zeros especially), and leads to inconsistent output from ACPICA across
882platforms.
8834) Certain platform-specific printf formats may conflict with ACPICA use.
8845) If there is no local C library available, ACPICA now has local support
885for printf.
886
887-- To address these printf issues in a complete manner, ACPICA now
888directly implements a small subset of printf format specifiers, only
889those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
890
891Implemented support for ACPICA generation within the EFI environment.
892Initially, the AcpiDump utility is supported in the UEFI shell
893environment. Lv Zheng.
894
895Added a new external interface, AcpiLogError, to improve ACPICA
896portability. This allows the host to redirect error messages from the
897ACPICA utilities. Lv Zheng.
898
899Added and deployed new OSL file I/O interfaces to improve ACPICA
900portability:
901  AcpiOsOpenFile
902  AcpiOsCloseFile
903  AcpiOsReadFile
904  AcpiOsWriteFile
905  AcpiOsGetFileOffset
906  AcpiOsSetFileOffset
907There are C library implementations of these functions in the new file
908service_layers/oslibcfs.c -- however, the functions can be implemented by
909the local host in any way necessary. Lv Zheng.
910
911Implemented a mechanism to disable/enable ACPI table checksum validation
912at runtime. This can be useful when loading tables very early during OS
913initialization when it may not be possible to map the entire table in
914order to compute the checksum. Lv Zheng.
915
916Fixed a buffer allocation issue for the Generic Serial Bus support.
917Originally, a fixed buffer length was used. This change allows for
918variable-length buffers based upon the protocol indicated by the field
919access attributes. Reported by Lan Tianyu. Lv Zheng.
920
921Fixed a problem where an object detached from a namespace node was not
922properly terminated/cleared and could cause a circular list problem if
923reattached. ACPICA BZ 1063. David Box.
924
925Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
926
927Fixed a possible memory leak in an error return path within the function
928AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
929
930Example Code and Data Size: These are the sizes for the OS-independent
931acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
932debug version of the code includes the debug output trace mechanism and
933has a much larger code and data size.
934
935  Current Release:
936    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
937    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
938  Previous Release:
939    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
940    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
941
942
9432) iASL Compiler/Disassembler and Tools:
944
945Disassembler: Add dump of ASCII equivalent text within a comment at the
946end of each line of the output for the Buffer() ASL operator.
947
948AcpiDump: Miscellaneous changes:
949  Fixed repetitive table dump in -n mode.
950  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
951the ACPI 2.0 GUID fails.
952
953iASL: Fixed a problem where the compiler could fault if incorrectly given
954an acpidump output file as input. ACPICA BZ 1088. David Box.
955
956AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
957they are invoked without any arguments.
958
959Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
9601086. Colin Ian King.
961
962Disassembler: Cleaned up a block of code that extracts a parent Op
963object. Added a comment that explains that the parent is guaranteed to be
964valid in this case. ACPICA BZ 1069.
965
966----------------------------------------
96724 April 2014. Summary of changes for version 20140424:
968
9691) ACPICA kernel-resident subsystem:
970
971Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
972Some of these tables are known to contain a trailing NULL entry. Lv
973Zheng.
974
975Removed an extraneous error message for the case where there are a large
976number of system GPEs (> 124). This was the "32-bit FADT register is too
977long to convert to GAS struct" message, which is irrelevant for GPEs
978since the GPEx_BLK_LEN fields of the FADT are always used instead of the
979(limited capacity) GAS bit length. Also, several changes to ensure proper
980support for GPE numbers > 255, where some "GPE number" fields were 8-bits
981internally.
982
983Implemented and deployed additional configuration support for the public
984ACPICA external interfaces. Entire classes of interfaces can now be
985easily modified or configured out, replaced by stubbed inline functions
986by default. Lv Zheng.
987
988Moved all public ACPICA runtime configuration globals to the public
989ACPICA external interface file for convenience. Also, removed some
990obsolete/unused globals. See the file acpixf.h. Lv Zheng.
991
992Documentation: Added a new section to the ACPICA reference describing the
993maximum number of GPEs that can be supported by the FADT-defined GPEs in
994block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
995reference.
996
997Example Code and Data Size: These are the sizes for the OS-independent
998acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
999debug version of the code includes the debug output trace mechanism and
1000has a much larger code and data size.
1001
1002  Current Release:
1003    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
1004    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
1005  Previous Release:
1006    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
1007    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
1008
1009
10102) iASL Compiler/Disassembler and Tools:
1011
1012iASL and disassembler: Add full support for the LPIT table (Low Power
1013Idle Table). Includes support in the disassembler, data table compiler,
1014and template generator.
1015
1016AcpiDump utility:
10171) Add option to force the use of the RSDT (over the XSDT).
10182) Improve validation of the RSDP signature (use 8 chars instead of 4).
1019
1020iASL: Add check for predefined packages that are too large.  For
1021predefined names that contain subpackages, check if each subpackage is
1022too large. (Check for too small already exists.)
1023
1024Debugger: Updated the GPE command (which simulates a GPE by executing the
1025GPE code paths in ACPICA). The GPE device is now optional, and defaults
1026to the GPE 0/1 FADT-defined blocks.
1027
1028Unix application OSL: Update line-editing support. Add additional error
1029checking and take care not to reset terminal attributes on exit if they
1030were never set. This should help guarantee that the terminal is always
1031left in the previous state on program exit.
1032
1033----------------------------------------
103425 March 2014. Summary of changes for version 20140325:
1035
10361) ACPICA kernel-resident subsystem:
1037
1038Updated the auto-serialize feature for control methods. This feature
1039automatically serializes all methods that create named objects in order
1040to prevent runtime errors. The update adds support to ignore the
1041currently executing AML SyncLevel when invoking such a method, in order
1042to prevent disruption of any existing SyncLevel priorities that may exist
1043in the AML code. Although the use of SyncLevels is relatively rare, this
1044change fixes a regression where an AE_AML_MUTEX_ORDER exception can
1045appear on some machines starting with the 20140214 release.
1046
1047Added a new external interface to allow the host to install ACPI tables
1048very early, before the namespace is even created. AcpiInstallTable gives
1049the host additional flexibility for ACPI table management. Tables can be
1050installed directly by the host as if they had originally appeared in the
1051XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
1052(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
1053with additional internal restructuring and cleanup. See the ACPICA
1054Reference for interface details. Lv Zheng.
1055
1056Added validation of the checksum for all incoming dynamically loaded
1057tables (via external interfaces or via AML Load/LoadTable operators). Lv
1058Zheng.
1059
1060Updated the use of the AcpiOsWaitEventsComplete interface during Notify
1061and GPE handler removal. Restructured calls to eliminate possible race
1062conditions. Lv Zheng.
1063
1064Added a warning for the use/execution of the ASL/AML Unload (table)
1065operator. This will help detect and identify machines that use this
1066operator if and when it is ever used. This operator has never been seen
1067in the field and the usage model and possible side-effects of the drastic
1068runtime action of a full table removal are unknown.
1069
1070Reverted the use of #pragma push/pop which was introduced in the 20140214
1071release. It appears that push and pop are not implemented by enough
1072compilers to make the use of this feature feasible for ACPICA at this
1073time. However, these operators may be deployed in a future ACPICA
1074release.
1075
1076Added the missing EXPORT_SYMBOL macros for the install and remove SCI
1077handler interfaces.
1078
1079Source code generation:
10801) Disabled the use of the "strchr" macro for the gcc-specific
1081generation. For some versions of gcc, this macro can periodically expose
1082a compiler bug which in turn causes compile-time error(s).
10832) Added support for PPC64 compilation. Colin Ian King.
1084
1085Example Code and Data Size: These are the sizes for the OS-independent
1086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1087debug version of the code includes the debug output trace mechanism and
1088has a much larger code and data size.
1089
1090  Current Release:
1091    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
1092    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
1093  Previous Release:
1094    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
1095    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
1096
1097
10982) iASL Compiler/Disassembler and Tools:
1099
1100Disassembler: Added several new features to improve the readability of
1101the resulting ASL code. Extra information is emitted within comment
1102fields in the ASL code:
11031) Known _HID/_CID values are decoded to descriptive text.
11042) Standard values for the Notify() operator are decoded to descriptive
1105text.
11063) Target operands are expanded to full pathnames (in a comment) when
1107possible.
1108
1109Disassembler: Miscellaneous updates for extern() handling:
11101) Abort compiler if file specified by -fe option does not exist.
11112) Silence unnecessary warnings about argument count mismatches.
11123) Update warning messages concerning unresolved method externals.
11134) Emit "UnknownObj" keyword for externals whose type cannot be
1114determined.
1115
1116AcpiHelp utility:
11171) Added the -a option to display both the ASL syntax and the AML
1118encoding for an input ASL operator. This effectively displays all known
1119information about an ASL operator with one AcpiHelp invocation.
11202) Added substring match support (similar to a wildcard) for the -i
1121(_HID/PNP IDs) option.
1122
1123iASL/Disassembler: Since this tool does not yet support execution on big-
1124endian machines, added detection of endianness and an error message if
1125execution is attempted on big-endian. Support for big-endian within iASL
1126is a feature that is on the ACPICA to-be-done list.
1127
1128AcpiBin utility:
11291) Remove option to extract binary files from an acpidump; this function
1130is made obsolete by the AcpiXtract utility.
11312) General cleanup of open files and allocated buffers.
1132
1133----------------------------------------
113414 February 2014. Summary of changes for version 20140214:
1135
11361) ACPICA kernel-resident subsystem:
1137
1138Implemented a new mechanism to proactively prevent problems with ill-
1139behaved reentrant control methods that create named ACPI objects. This
1140behavior is illegal as per the ACPI specification, but is nonetheless
1141frequently seen in the field. Previously, this could lead to an
1142AE_ALREADY_EXISTS exception if the method was actually entered by more
1143than one thread. This new mechanism detects such methods at table load
1144time and marks them "serialized" to prevent reentrancy. A new global
1145option, AcpiGbl_AutoSerializeMethods, has been added to disable this
1146feature if desired. This mechanism and global option obsoletes and
1147supersedes the previous AcpiGbl_SerializeAllMethods option.
1148
1149Added the "Windows 2013" string to the _OSI support. ACPICA will now
1150respond TRUE to _OSI queries with this string. It is the stated policy of
1151ACPICA to add new strings to the _OSI support as soon as possible after
1152they are defined. See the full ACPICA _OSI policy which has been added to
1153the utilities/utosi.c file.
1154
1155Hardened/updated the _PRT return value auto-repair code:
11561) Do not abort the repair on a single subpackage failure, continue to
1157check all subpackages.
11582) Add check for the minimum subpackage length (4).
11593) Properly handle extraneous NULL package elements.
1160
1161Added support to avoid the possibility of infinite loops when traversing
1162object linked lists. Never allow an infinite loop, even in the face of
1163corrupted object lists.
1164
1165ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
1166pack(pop) directives to ensure that the ACPICA headers are independent of
1167compiler settings or other host headers.
1168
1169Example Code and Data Size: These are the sizes for the OS-independent
1170acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1171debug version of the code includes the debug output trace mechanism and
1172has a much larger code and data size.
1173
1174  Current Release:
1175    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
1176    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
1177  Previous Release:
1178    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
1179    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
1180
1181
11822) iASL Compiler/Disassembler and Tools:
1183
1184iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
1185first reserved field was incorrectly forced to have a value of zero. This
1186change correctly forces the field to have a value of one. ACPICA BZ 1081.
1187
1188Debugger: Added missing support for the "Extra" and "Data" subobjects
1189when displaying object data.
1190
1191Debugger: Added support to display entire object linked lists when
1192displaying object data.
1193
1194iASL: Removed the obsolete -g option to obtain ACPI tables from the
1195Windows registry. This feature has been superseded by the acpidump
1196utility.
1197
1198----------------------------------------
119914 January 2014. Summary of changes for version 20140114:
1200
12011) ACPICA kernel-resident subsystem:
1202
1203Updated all ACPICA copyrights and signons to 2014. Added the 2014
1204copyright to all module headers and signons, including the standard Linux
1205header. This affects virtually every file in the ACPICA core subsystem,
1206iASL compiler, all ACPICA utilities, and the test suites.
1207
1208Improved parameter validation for AcpiInstallGpeBlock. Added the
1209following checks:
12101) The incoming device handle refers to type ACPI_TYPE_DEVICE.
12112) There is not already a GPE block attached to the device.
1212Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
1213device.
1214
1215Correctly support "references" in the ACPI_OBJECT. This change fixes the
1216support to allow references (namespace nodes) to be passed as arguments
1217to control methods via the evaluate object interface. This is probably
1218most useful for testing purposes, however.
1219
1220Improved support for 32/64 bit physical addresses in printf()-like
1221output. This change improves the support for physical addresses in printf
1222debug statements and other output on both 32-bit and 64-bit hosts. It
1223consistently outputs the appropriate number of bytes for each host. The
1224%p specifier is unsatisfactory since it does not emit uniform output on
1225all hosts/clib implementations (on some, leading zeros are not supported,
1226leading to difficult-to-read output).
1227
1228Example Code and Data Size: These are the sizes for the OS-independent
1229acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1230debug version of the code includes the debug output trace mechanism and
1231has a much larger code and data size.
1232
1233  Current Release:
1234    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
1235    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
1236  Previous Release:
1237    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
1238    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
1239
1240
12412) iASL Compiler/Disassembler and Tools:
1242
1243iASL: Fix a possible fault when using the Connection() operator. Fixes a
1244problem if the parent Field definition for the Connection operator refers
1245to an operation region that does not exist. ACPICA BZ 1064.
1246
1247AcpiExec: Load of local test tables is now optional. The utility has the
1248capability to load some various tables to test features of ACPICA.
1249However, there are enough of them that the output of the utility became
1250confusing. With this change, only the required local tables are displayed
1251(RSDP, XSDT, etc.) along with the actual tables loaded via the command
1252line specification. This makes the default output simler and easier to
1253understand. The -el command line option restores the original behavior
1254for testing purposes.
1255
1256AcpiExec: Added support for overlapping operation regions. This change
1257expands the simulation of operation regions by supporting regions that
1258overlap within the given address space. Supports SystemMemory and
1259SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
1260
1261AcpiExec: Added region handler support for PCI_Config and EC spaces. This
1262allows AcpiExec to simulate these address spaces, similar to the current
1263support for SystemMemory and SystemIO.
1264
1265Debugger: Added new command to read/write/compare all namespace objects.
1266The command "test objects" will exercise the entire namespace by writing
1267new values to each data object, and ensuring that the write was
1268successful. The original value is then restored and verified.
1269
1270Debugger: Added the "test predefined" command. This change makes this
1271test public and puts it under the new "test" command. The test executes
1272each and every predefined name within the current namespace.
1273
1274----------------------------------------
127518 December 2013. Summary of changes for version 20131218:
1276
1277Global note: The ACPI 5.0A specification was released this month. There
1278are no changes needed for ACPICA since this release of ACPI is an
1279errata/clarification release. The specification is available at
1280acpi.info.
1281
1282
12831) ACPICA kernel-resident subsystem:
1284
1285Added validation of the XSDT root table if it is present. Some older
1286platforms contain an XSDT that is ill-formed or otherwise invalid (such
1287as containing some or all entries that are NULL pointers). This change
1288adds a new function to validate the XSDT before actually using it. If the
1289XSDT is found to be invalid, ACPICA will now automatically fall back to
1290using the RSDT instead. Original implementation by Zhao Yakui. Ported to
1291ACPICA and enhanced by Lv Zheng and Bob Moore.
1292
1293Added a runtime option to ignore the XSDT and force the use of the RSDT.
1294This change adds a runtime option that will force ACPICA to use the RSDT
1295instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
1296requires that an XSDT be used instead of the RSDT, the XSDT has been
1297found to be corrupt or ill-formed on some machines. Lv Zheng.
1298
1299Added a runtime option to favor 32-bit FADT register addresses over the
130064-bit addresses. This change adds an option to favor 32-bit FADT
1301addresses when there is a conflict between the 32-bit and 64-bit versions
1302of the same register. The default behavior is to use the 64-bit version
1303in accordance with the ACPI specification. This can now be overridden via
1304the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
1305
1306During the change above, the internal "Convert FADT" and "Verify FADT"
1307functions have been merged to simplify the code, making it easier to
1308understand and maintain. ACPICA BZ 933.
1309
1310Improve exception reporting and handling for GPE block installation.
1311Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
1312status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
1313
1314Added helper macros to extract bus/segment numbers from the HEST table.
1315This change adds two macros to extract the encoded bus and segment
1316numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
1317Betty Dall <betty.dall@hp.com>
1318
1319Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
1320by ACPICA. It is not a public macro, so it should have no effect on
1321existing OSV code. Lv Zheng.
1322
1323Example Code and Data Size: These are the sizes for the OS-independent
1324acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1325debug version of the code includes the debug output trace mechanism and
1326has a much larger code and data size.
1327
1328  Current Release:
1329    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
1330    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
1331  Previous Release:
1332    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
1333    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
1334
1335
13362) iASL Compiler/Disassembler and Tools:
1337
1338Disassembler: Improved pathname support for emitted External()
1339statements. This change adds full pathname support for external names
1340that have been resolved internally by the inclusion of additional ACPI
1341tables (via the iASL -e option). Without this change, the disassembler
1342can emit multiple externals for the same object, or it become confused
1343when the Scope() operator is used on an external object. Overall, greatly
1344improves the ability to actually recompile the emitted ASL code when
1345objects a referenced across multiple ACPI tables. Reported by Michael
1346Tsirkin (mst@redhat.com).
1347
1348Tests/ASLTS: Updated functional control suite to execute with no errors.
1349David Box. Fixed several errors related to the testing of the interpreter
1350slack mode. Lv Zheng.
1351
1352iASL: Added support to detect names that are declared within a control
1353method, but are unused (these are temporary names that are only valid
1354during the time the method is executing). A remark is issued for these
1355cases. ACPICA BZ 1022.
1356
1357iASL: Added full support for the DBG2 table. Adds full disassembler,
1358table compiler, and template generator support for the DBG2 table (Debug
1359Port 2 table).
1360
1361iASL: Added full support for the PCCT table, update the table definition.
1362Updates the PCCT table definition in the actbl3.h header and adds table
1363compiler and template generator support.
1364
1365iASL: Added an option to emit only error messages (no warnings/remarks).
1366The -ve option will enable only error messages, warnings and remarks are
1367suppressed. This can simplify debugging when only the errors are
1368important, such as when an ACPI table is disassembled and there are many
1369warnings and remarks -- but only the actual errors are of real interest.
1370
1371Example ACPICA code (source/tools/examples): Updated the example code so
1372that it builds to an actual working program, not just example code. Added
1373ACPI tables and execution of an example control method in the DSDT. Added
1374makefile support for Unix generation.
1375
1376----------------------------------------
137715 November 2013. Summary of changes for version 20131115:
1378
1379This release is available at https://acpica.org/downloads
1380
1381
13821) ACPICA kernel-resident subsystem:
1383
1384Resource Manager: Fixed loop termination for the "get AML length"
1385function. The loop previously had an error termination on a NULL resource
1386pointer, which can never happen since the loop simply increments a valid
1387resource pointer. This fix changes the loop to terminate with an error on
1388an invalid end-of-buffer condition. The problem can be seen as an
1389infinite loop by callers to AcpiSetCurrentResources with an invalid or
1390corrupted resource descriptor, or a resource descriptor that is missing
1391an END_TAG descriptor. Reported by Dan Carpenter
1392<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
1393
1394Table unload and ACPICA termination: Delete all attached data objects
1395during namespace node deletion. This fix updates namespace node deletion
1396to delete the entire list of attached objects (attached via
1397AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
13981024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
1399
1400ACPICA termination: Added support to delete all objects attached to the
1401root namespace node. This fix deletes any and all objects that have been
1402attached to the root node via AcpiAttachData. Previously, none of these
1403objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
1404
1405Debug output: Do not emit the function nesting level for the in-kernel
1406build. The nesting level is really only useful during a single-thread
1407execution. Therefore, only enable this output for the AcpiExec utility.
1408Also, only emit the thread ID when executing under AcpiExec (Context
1409switches are still always detected and a message is emitted). ACPICA BZ
1410972.
1411
1412Example Code and Data Size: These are the sizes for the OS-independent
1413acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1414debug version of the code includes the debug output trace mechanism and
1415has a much larger code and data size.
1416
1417  Current Release:
1418    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
1419    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
1420  Previous Release:
1421    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1422    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1423
1424
14252) iASL Compiler/Disassembler and Tools:
1426
1427AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
1428correct portable POSIX header for terminal control functions.
1429
1430Disassembler: Fixed control method invocation issues related to the use
1431of the CondRefOf() operator. The problem is seen in the disassembly where
1432control method invocations may not be disassembled properly if the
1433control method name has been used previously as an argument to CondRefOf.
1434The solution is to not attempt to emit an external declaration for the
1435CondRefOf target (it is not necessary in the first place). This prevents
1436disassembler object type confusion. ACPICA BZ 988.
1437
1438Unix Makefiles: Added an option to disable compiler optimizations and the
1439_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
1440with optimizations (reportedly, gcc 4.4 for example). This change adds a
1441command line option for make (NOOPT) that disables all compiler
1442optimizations and the _FORTIFY_SOURCE compiler flag. The default
1443optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
14441034. Lv Zheng, Bob Moore.
1445
1446Tests/ASLTS: Added options to specify individual test cases and modes.
1447This allows testers running aslts.sh to optionally specify individual
1448test modes and test cases. Also added an option to disable the forced
1449generation of the ACPICA tools from source if desired. Lv Zheng.
1450
1451----------------------------------------
145227 September 2013. Summary of changes for version 20130927:
1453
1454This release is available at https://acpica.org/downloads
1455
1456
14571) ACPICA kernel-resident subsystem:
1458
1459Fixed a problem with store operations to reference objects. This change
1460fixes a problem where a Store operation to an ArgX object that contained
1461a
1462reference to a field object did not complete the automatic dereference
1463and
1464then write to the actual field object. Instead, the object type of the
1465field object was inadvertently changed to match the type of the source
1466operand. The new behavior will actually write to the field object (buffer
1467field or field unit), thus matching the correct ACPI-defined behavior.
1468
1469Implemented support to allow the host to redefine individual OSL
1470prototypes. This change enables the host to redefine OSL prototypes found
1471in the acpiosxf.h file. This allows the host to implement OSL interfaces
1472with a macro or inlined function. Further, it allows the host to add any
1473additional required modifiers such as __iomem, __init, __exit, etc., as
1474necessary on a per-interface basis. Enables maximum flexibility for the
1475OSL interfaces. Lv Zheng.
1476
1477Hardcoded the access width for the FADT-defined reset register. The ACPI
1478specification requires the reset register width to be 8 bits. ACPICA now
1479hardcodes the width to 8 and ignores the FADT width value. This provides
1480compatibility with other ACPI implementations that have allowed BIOS code
1481with bad register width values to go unnoticed. Matthew Garett, Bob
1482Moore,
1483Lv Zheng.
1484
1485Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
1486used
1487in the OSL header (acpiosxf). The change modifies the position of this
1488macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
1489build issues if the OSL defines the implementation of the interface to be
1490an inline stub function. Lv Zheng.
1491
1492Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
1493initialization interfaces. This change adds a new macro for the main init
1494and terminate external interfaces in order to support hosts that require
1495additional or different processing for these functions. Changed from
1496ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
1497Zheng, Bob Moore.
1498
1499Cleaned up the memory allocation macros for configurability. In the
1500common
1501case, the ACPI_ALLOCATE and related macros now resolve directly to their
1502respective AcpiOs* OSL interfaces. Two options:
15031) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
1504default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
15052) For AcpiExec (and for debugging), the macros can optionally be
1506resolved
1507to the local ACPICA interfaces that track each allocation (local tracking
1508is used to immediately detect memory leaks).
1509Lv Zheng.
1510
1511Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
1512to predefine this macro to either TRUE or FALSE during the system build.
1513
1514Replaced __FUNCTION_ with __func__ in the gcc-specific header.
1515
1516Example Code and Data Size: These are the sizes for the OS-independent
1517acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1518debug version of the code includes the debug output trace mechanism and
1519has a much larger code and data size.
1520
1521  Current Release:
1522    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1523    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1524  Previous Release:
1525    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
1526    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1527
1528
15292) iASL Compiler/Disassembler and Tools:
1530
1531iASL: Implemented wildcard support for the -e option. This simplifies use
1532when there are many SSDTs that must be included to resolve external
1533method
1534declarations. ACPICA BZ 1041. Example:
1535    iasl -e ssdt*.dat -d dsdt.dat
1536
1537AcpiExec: Add history/line-editing for Unix/Linux systems. This change
1538adds a portable module that implements full history and limited line
1539editing for Unix and Linux systems. It does not use readline() due to
1540portability issues. Instead it uses the POSIX termio interface to put the
1541terminal in raw input mode so that the various special keys can be
1542trapped
1543(such as up/down-arrow for history support and left/right-arrow for line
1544editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
1545
1546AcpiXtract: Add support to handle (ignore) "empty" lines containing only
1547one or more spaces. This provides compatible with early or different
1548versions of the AcpiDump utility. ACPICA BZ 1044.
1549
1550AcpiDump: Do not ignore tables that contain only an ACPI table header.
1551Apparently, some BIOSs create SSDTs that contain an ACPI table header but
1552no other data. This change adds support to dump these tables. Any tables
1553shorter than the length of an ACPI table header remain in error (an error
1554message is emitted). Reported by Yi Li.
1555
1556Debugger: Echo actual command along with the "unknown command" message.
1557
1558----------------------------------------
155923 August 2013. Summary of changes for version 20130823:
1560
15611) ACPICA kernel-resident subsystem:
1562
1563Implemented support for host-installed System Control Interrupt (SCI)
1564handlers. Certain ACPI functionality requires the host to handle raw
1565SCIs. For example, the "SCI Doorbell" that is defined for memory power
1566state support requires the host device driver to handle SCIs to examine
1567if the doorbell has been activated. Multiple SCI handlers can be
1568installed to allow for future expansion. New external interfaces are
1569AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
1570details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
1571
1572Operation region support: Never locally free the handler "context"
1573pointer. This change removes some dangerous code that attempts to free
1574the handler context pointer in some (rare) circumstances. The owner of
1575the handler owns this pointer and the ACPICA code should never touch it.
1576Although not seen to be an issue in any kernel, it did show up as a
1577problem (fault) under AcpiExec. Also, set the internal storage field for
1578the context pointer to zero when the region is deactivated, simply for
1579sanity. David Box. ACPICA BZ 1039.
1580
1581AcpiRead: On error, do not modify the return value target location. If an
1582error happens in the middle of a split 32/32 64-bit I/O operation, do not
1583modify the target of the return value pointer. Makes the code consistent
1584with the rest of ACPICA. Bjorn Helgaas.
1585
1586Example Code and Data Size: These are the sizes for the OS-independent
1587acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1588debug version of the code includes the debug output trace mechanism and
1589has a much larger code and data size.
1590
1591  Current Release:
1592    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
1593    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1594  Previous Release:
1595    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
1596    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
1597
1598
15992) iASL Compiler/Disassembler and Tools:
1600
1601AcpiDump: Implemented several new features and fixed some problems:
16021) Added support to dump the RSDP, RSDT, and XSDT tables.
16032) Added support for multiple table instances (SSDT, UEFI).
16043) Added option to dump "customized" (overridden) tables (-c).
16054) Fixed a problem where some table filenames were improperly
1606constructed.
16075) Improved some error messages, removed some unnecessary messages.
1608
1609iASL: Implemented additional support for disassembly of ACPI tables that
1610contain invocations of external control methods. The -fe<file> option
1611allows the import of a file that specifies the external methods along
1612with the required number of arguments for each -- allowing for the
1613correct disassembly of the table. This is a workaround for a limitation
1614of AML code where the disassembler often cannot determine the number of
1615arguments required for an external control method and generates incorrect
1616ASL code. See the iASL reference for details. ACPICA BZ 1030.
1617
1618Debugger: Implemented a new command (paths) that displays the full
1619pathnames (namepaths) and object types of all objects in the namespace.
1620This is an alternative to the namespace command.
1621
1622Debugger: Implemented a new command (sci) that invokes the SCI dispatch
1623mechanism and any installed handlers.
1624
1625iASL: Fixed a possible segfault for "too many parent prefixes" condition.
1626This can occur if there are too many parent prefixes in a namepath (for
1627example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
1628
1629Application OSLs: Set the return value for the PCI read functions. These
1630functions simply return AE_OK, but should set the return value to zero
1631also. This change implements this. ACPICA BZ 1038.
1632
1633Debugger: Prevent possible command line buffer overflow. Increase the
1634size of a couple of the debugger line buffers, and ensure that overflow
1635cannot happen. ACPICA BZ 1037.
1636
1637iASL: Changed to abort immediately on serious errors during the parsing
1638phase. Due to the nature of ASL, there is no point in attempting to
1639compile these types of errors, and they typically end up causing a
1640cascade of hundreds of errors which obscure the original problem.
1641
1642----------------------------------------
164325 July 2013. Summary of changes for version 20130725:
1644
16451) ACPICA kernel-resident subsystem:
1646
1647Fixed a problem with the DerefOf operator where references to FieldUnits
1648and BufferFields incorrectly returned the parent object, not the actual
1649value of the object. After this change, a dereference of a FieldUnit
1650reference results in a read operation on the field to get the value, and
1651likewise, the appropriate BufferField value is extracted from the target
1652buffer.
1653
1654Fixed a problem where the _WAK method could cause a fault under these
1655circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
1656method returned no value. The problem is rarely seen because most kernels
1657run ACPICA in slack mode.
1658
1659For the DerefOf operator, a fatal error now results if an attempt is made
1660to dereference a reference (created by the Index operator) to a NULL
1661package element. Provides compatibility with other ACPI implementations,
1662and this behavior will be added to a future version of the ACPI
1663specification.
1664
1665The ACPI Power Management Timer (defined in the FADT) is now optional.
1666This provides compatibility with other ACPI implementations and will
1667appear in the next version of the ACPI specification. If there is no PM
1668Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
1669zero in the FADT indicates no PM timer.
1670
1671Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
1672allows the host to globally enable/disable all vendor strings, all
1673feature strings, or both. Intended to be primarily used for debugging
1674purposes only. Lv Zheng.
1675
1676Expose the collected _OSI data to the host via a global variable. This
1677data tracks the highest level vendor ID that has been invoked by the BIOS
1678so that the host (and potentially ACPICA itself) can change behaviors
1679based upon the age of the BIOS.
1680
1681Example Code and Data Size: These are the sizes for the OS-independent
1682acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1683debug version of the code includes the debug output trace mechanism and
1684has a much larger code and data size.
1685
1686  Current Release:
1687    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
1688    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1689  Previous Release:
1690    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1691    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1692
1693
16942) iASL Compiler/Disassembler and Tools:
1695
1696iASL: Created the following enhancements for the -so option (create
1697offset table):
16981)Add offsets for the last nameseg in each namepath for every supported
1699object type
17002)Add support for Processor, Device, Thermal Zone, and Scope objects
17013)Add the actual AML opcode for the parent object of every supported
1702object type
17034)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
1704
1705Disassembler: Emit all unresolved external symbols in a single block.
1706These are external references to control methods that could not be
1707resolved, and thus, the disassembler had to make a guess at the number of
1708arguments to parse.
1709
1710iASL: The argument to the -T option (create table template) is now
1711optional. If not specified, the default table is a DSDT, typically the
1712most common case.
1713
1714----------------------------------------
171526 June 2013. Summary of changes for version 20130626:
1716
17171) ACPICA kernel-resident subsystem:
1718
1719Fixed an issue with runtime repair of the _CST object. Null or invalid
1720elements were not always removed properly. Lv Zheng.
1721
1722Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
1723FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
1724the maximum number of GPEs is 1016. Use of multiple GPE block devices
1725makes the system-wide number of GPEs essentially unlimited.
1726
1727Example Code and Data Size: These are the sizes for the OS-independent
1728acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1729debug version of the code includes the debug output trace mechanism and
1730has a much larger code and data size.
1731
1732  Current Release:
1733    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1734    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1735  Previous Release:
1736    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1737    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1738
1739
17402) iASL Compiler/Disassembler and Tools:
1741
1742Portable AcpiDump: Implemented full support for the Linux and FreeBSD
1743hosts. Now supports Linux, FreeBSD, and Windows.
1744
1745Disassembler: Added some missing types for the HEST and EINJ tables: "Set
1746Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
1747
1748iASL/Preprocessor: Implemented full support for nested
1749#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
1750
1751Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
1752max. The original purpose of this constraint was to limit the amount of
1753debug output. However, the string function in question (UtPrintString) is
1754now used for the disassembler also, where 256 bytes is insufficient.
1755Reported by RehabMan@GitHub.
1756
1757iASL/DataTables: Fixed some problems and issues with compilation of DMAR
1758tables. ACPICA BZ 999. Lv Zheng.
1759
1760iASL: Fixed a couple of error exit issues that could result in a "Could
1761not delete <file>" message during ASL compilation.
1762
1763AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
1764the actual signatures for these tables are "FACP" and "APIC",
1765respectively.
1766
1767AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
1768tables are allowed to have multiple instances.
1769
1770----------------------------------------
177117 May 2013. Summary of changes for version 20130517:
1772
17731) ACPICA kernel-resident subsystem:
1774
1775Fixed a regression introduced in version 20130328 for _INI methods. This
1776change fixes a problem introduced in 20130328 where _INI methods are no
1777longer executed properly because of a memory block that was not
1778initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
1779<tomasz.nowicki@linaro.org>.
1780
1781Fixed a possible problem with the new extended sleep registers in the
1782ACPI
17835.0 FADT. Do not use these registers (even if populated) unless the HW-
1784reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
17851020. Lv Zheng.
1786
1787Implemented return value repair code for _CST predefined objects: Sort
1788the
1789list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
1790
1791Implemented a debug-only option to disable loading of SSDTs from the
1792RSDT/XSDT during ACPICA initialization. This can be useful for debugging
1793ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
1794acglobal.h - ACPICA BZ 1005. Lv Zheng.
1795
1796Fixed some issues in the ACPICA initialization and termination code:
1797Tomasz Nowicki <tomasz.nowicki@linaro.org>
17981) Clear events initialized flag upon event component termination. ACPICA
1799BZ 1013.
18002) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
18013) Delete global lock pending lock during termination. ACPICA BZ 1012.
18024) Clear debug buffer global on termination to prevent possible multiple
1803delete. ACPICA BZ 1010.
1804
1805Standardized all switch() blocks across the entire source base. After
1806many
1807years, different formatting for switch() had crept in. This change makes
1808the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
1809
1810Split some files to enhance ACPICA modularity and configurability:
18111) Split buffer dump routines into utilities/utbuffer.c
18122) Split internal error message routines into utilities/uterror.c
18133) Split table print utilities into tables/tbprint.c
18144) Split iASL command-line option processing into asloptions.c
1815
1816Makefile enhancements:
18171) Support for all new files above.
18182) Abort make on errors from any subcomponent. Chao Guan.
18193) Add build support for Apple Mac OS X. Liang Qi.
1820
1821Example Code and Data Size: These are the sizes for the OS-independent
1822acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1823debug version of the code includes the debug output trace mechanism and
1824has a much larger code and data size.
1825
1826  Current Release:
1827    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1828    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1829  Previous Release:
1830    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1831    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1832
1833
18342) iASL Compiler/Disassembler and Tools:
1835
1836New utility: Implemented an easily portable version of the acpidump
1837utility to extract ACPI tables from the system (or a file) in an ASCII
1838hex
1839dump format. The top-level code implements the various command line
1840options, file I/O, and table dump routines. To port to a new host, only
1841three functions need to be implemented to get tables -- since this
1842functionality is OS-dependent. See the tools/acpidump/apmain.c module and
1843the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
18441) The Windows version obtains the ACPI tables from the Registry.
18452) The Linux version is under development.
18463) Other hosts - If an OS-dependent module is submitted, it will be
1847distributed with ACPICA.
1848
1849iASL: Fixed a regression for -D preprocessor option (define symbol). A
1850restructuring/change to the initialization sequence caused this option to
1851no longer work properly.
1852
1853iASL: Implemented a mechanism to disable specific warnings and remarks.
1854Adds a new command line option, "-vw <messageid> as well as "#pragma
1855disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
1856
1857iASL: Fix for too-strict package object validation. The package object
1858validation for return values from the predefined names is a bit too
1859strict, it does not allow names references within the package (which will
1860be resolved at runtime.) These types of references cannot be validated at
1861compile time. This change ignores named references within package objects
1862for names that return or define static packages.
1863
1864Debugger: Fixed the 80-character command line limitation for the History
1865command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
1866
1867iASL: Added control method and package support for the -so option
1868(generates AML offset table for BIOS support.)
1869
1870iASL: issue a remark if a non-serialized method creates named objects. If
1871a thread blocks within the method for any reason, and another thread
1872enters the method, the method will fail because an attempt will be made
1873to
1874create the same (named) object twice. In this case, issue a remark that
1875the method should be marked serialized. NOTE: may become a warning later.
1876ACPICA BZ 909.
1877
1878----------------------------------------
187918 April 2013. Summary of changes for version 20130418:
1880
18811) ACPICA kernel-resident subsystem:
1882
1883Fixed a possible buffer overrun during some rare but specific field unit
1884read operations. This overrun can only happen if the DSDT version is 1 --
1885meaning that all AML integers are 32 bits -- and the field length is
1886between 33 and 55 bits long. During the read, an internal buffer object
1887is
1888created for the field unit because the field is larger than an integer
1889(32
1890bits). However, in this case, the buffer will be incorrectly written
1891beyond the end because the buffer length is less than the internal
1892minimum
1893of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
1894long, but a full 8 bytes will be written.
1895
1896Updated the Embedded Controller "orphan" _REG method support. This refers
1897to _REG methods under the EC device that have no corresponding operation
1898region. This is allowed by the ACPI specification. This update removes a
1899dependency on the existence an ECDT table. It will execute an orphan _REG
1900method as long as the operation region handler for the EC is installed at
1901the EC device node and not the namespace root. Rui Zhang (original
1902update), Bob Moore (update/integrate).
1903
1904Implemented run-time argument typechecking for all predefined ACPI names
1905(_STA, _BIF, etc.) This change performs object typechecking on all
1906incoming arguments for all predefined names executed via
1907AcpiEvaluateObject. This ensures that ACPI-related device drivers are
1908passing correct object types as well as the correct number of arguments
1909(therefore identifying any issues immediately). Also, the ASL/namespace
1910definition of the predefined name is checked against the ACPI
1911specification for the proper argument count. Adds one new file,
1912nsarguments.c
1913
1914Changed an exception code for the ASL UnLoad() operator. Changed the
1915exception code for the case where the input DdbHandle is invalid, from
1916AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
1917
1918Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
1919global makefile. The use of this flag causes compiler errors on earlier
1920versions of GCC, so it has been removed for compatibility.
1921
1922Miscellaneous cleanup:
19231) Removed some unused/obsolete macros
19242) Fixed a possible memory leak in the _OSI support
19253) Removed an unused variable in the predefined name support
19264) Windows OSL: remove obsolete reference to a memory list field
1927
1928Example Code and Data Size: These are the sizes for the OS-independent
1929acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1930debug version of the code includes the debug output trace mechanism and
1931has a much larger code and data size.
1932
1933  Current Release:
1934    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1935    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1936  Previous Release:
1937    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1938    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1939
1940
19412) iASL Compiler/Disassembler and Tools:
1942
1943AcpiExec: Added installation of a handler for the SystemCMOS address
1944space. This prevents control method abort if a method accesses this
1945space.
1946
1947AcpiExec: Added support for multiple EC devices, and now install EC
1948operation region handler(s) at the actual EC device instead of the
1949namespace root. This reflects the typical behavior of host operating
1950systems.
1951
1952AcpiExec: Updated to ensure that all operation region handlers are
1953installed before the _REG methods are executed. This prevents a _REG
1954method from aborting if it accesses an address space has no handler.
1955AcpiExec installs a handler for every possible address space.
1956
1957Debugger: Enhanced the "handlers" command to display non-root handlers.
1958This change enhances the handlers command to display handlers associated
1959with individual devices throughout the namespace, in addition to the
1960currently supported display of handlers associated with the root
1961namespace
1962node.
1963
1964ASL Test Suite: Several test suite errors have been identified and
1965resolved, reducing the total error count during execution. Chao Guan.
1966
1967----------------------------------------
196828 March 2013. Summary of changes for version 20130328:
1969
19701) ACPICA kernel-resident subsystem:
1971
1972Fixed several possible race conditions with the internal object reference
1973counting mechanism. Some of the external ACPICA interfaces update object
1974reference counts without holding the interpreter or namespace lock. This
1975change adds a spinlock to protect reference count updates on the internal
1976ACPICA objects. Reported by and with assistance from Andriy Gapon
1977(avg@FreeBSD.org).
1978
1979FADT support: Removed an extraneous warning for very large GPE register
1980sets. This change removes a size mismatch warning if the legacy length
1981field for a GPE register set is larger than the 64-bit GAS structure can
1982accommodate. GPE register sets can be larger than the 255-bit width
1983limitation of the GAS structure. Linn Crosetto (linn@hp.com).
1984
1985_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
1986return from this interface. Handles a possible timeout case if
1987ACPI_WAIT_FOREVER is modified by the host to be a value less than
1988"forever". Jung-uk Kim.
1989
1990Predefined name support: Add allowed/required argument type information
1991to
1992the master predefined info table. This change adds the infrastructure to
1993enable typechecking on incoming arguments for all predefined
1994methods/objects. It does not actually contain the code that will fully
1995utilize this information, this is still under development. Also condenses
1996some duplicate code for the predefined names into a new module,
1997utilities/utpredef.c
1998
1999Example Code and Data Size: These are the sizes for the OS-independent
2000acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2001debug version of the code includes the debug output trace mechanism and
2002has a much larger code and data size.
2003
2004  Previous Release:
2005    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
2006    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
2007  Current Release:
2008    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
2009    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
2010
2011
20122) iASL Compiler/Disassembler and Tools:
2013
2014iASL: Implemented a new option to simplify the development of ACPI-
2015related
2016BIOS code. Adds support for a new "offset table" output file. The -so
2017option will create a C table containing the AML table offsets of various
2018named objects in the namespace so that BIOS code can modify them easily
2019at
2020boot time. This can simplify BIOS runtime code by eliminating expensive
2021searches for "magic values", enhancing boot times and adding greater
2022reliability. With assistance from Lee Hamel.
2023
2024iASL: Allow additional predefined names to return zero-length packages.
2025Now, all predefined names that are defined by the ACPI specification to
2026return a "variable-length package of packages" are allowed to return a
2027zero length top-level package. This allows the BIOS to tell the host that
2028the requested feature is not supported, and supports existing BIOS/ASL
2029code and practices.
2030
2031iASL: Changed the "result not used" warning to an error. This is the case
2032where an ASL operator is effectively a NOOP because the result of the
2033operation is not stored anywhere. For example:
2034    Add (4, Local0)
2035There is no target (missing 3rd argument), nor is the function return
2036value used. This is potentially a very serious problem -- since the code
2037was probably intended to do something, but for whatever reason, the value
2038was not stored. Therefore, this issue has been upgraded from a warning to
2039an error.
2040
2041AcpiHelp: Added allowable/required argument types to the predefined names
2042info display. This feature utilizes the recent update to the predefined
2043names table (above).
2044
2045----------------------------------------
204614 February 2013. Summary of changes for version 20130214:
2047
20481) ACPICA Kernel-resident Subsystem:
2049
2050Fixed a possible regression on some hosts: Reinstated the safe return
2051macros (return_ACPI_STATUS, etc.) that ensure that the argument is
2052evaluated only once. Although these macros are not needed for the ACPICA
2053code itself, they are often used by ACPI-related host device drivers
2054where
2055the safe feature may be necessary.
2056
2057Fixed several issues related to the ACPI 5.0 reduced hardware support
2058(SOC): Now ensure that if the platform declares itself as hardware-
2059reduced
2060via the FADT, the following functions become NOOPs (and always return
2061AE_OK) because ACPI is always enabled by definition on these machines:
2062  AcpiEnable
2063  AcpiDisable
2064  AcpiHwGetMode
2065  AcpiHwSetMode
2066
2067Dynamic Object Repair: Implemented additional runtime repairs for
2068predefined name return values. Both of these repairs can simplify code in
2069the related device drivers that invoke these methods:
20701) For the _STR and _MLS names, automatically repair/convert an ASCII
2071string to a Unicode buffer.
20722) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
2073a
2074lone end tag descriptor in the following cases: A Return(0) was executed,
2075a null buffer was returned, or no object at all was returned (non-slack
2076mode only). Adds a new file, nsconvert.c
2077ACPICA BZ 998. Bob Moore, Lv Zheng.
2078
2079Resource Manager: Added additional code to prevent possible infinite
2080loops
2081while traversing corrupted or ill-formed resource template buffers. Check
2082for zero-length resource descriptors in all code that loops through
2083resource templates (the length field is used to index through the
2084template). This change also hardens the external AcpiWalkResources and
2085AcpiWalkResourceBuffer interfaces.
2086
2087Local Cache Manager: Enhanced the main data structure to eliminate an
2088unnecessary mechanism to access the next object in the list. Actually
2089provides a small performance enhancement for hosts that use the local
2090ACPICA cache manager. Jung-uk Kim.
2091
2092Example Code and Data Size: These are the sizes for the OS-independent
2093acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2094debug version of the code includes the debug output trace mechanism and
2095has a much larger code and data size.
2096
2097  Previous Release:
2098    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
2099    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
2100  Current Release:
2101    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
2102    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
2103
2104
21052) iASL Compiler/Disassembler and Tools:
2106
2107iASL/Disassembler: Fixed several issues with the definition of the ACPI
21085.0 RASF table (RAS Feature Table). This change incorporates late changes
2109that were made to the ACPI 5.0 specification.
2110
2111iASL/Disassembler: Added full support for the following new ACPI tables:
2112  1) The MTMR table (MID Timer Table)
2113  2) The VRTC table (Virtual Real Time Clock Table).
2114Includes header file, disassembler, table compiler, and template support
2115for both tables.
2116
2117iASL: Implemented compile-time validation of package objects returned by
2118predefined names. This new feature validates static package objects
2119returned by the various predefined names defined to return packages. Both
2120object types and package lengths are validated, for both parent packages
2121and sub-packages, if any. The code is similar in structure and behavior
2122to
2123the runtime repair mechanism within the AML interpreter and uses the
2124existing predefined name information table. Adds a new file, aslprepkg.c.
2125ACPICA BZ 938.
2126
2127iASL: Implemented auto-detection of binary ACPI tables for disassembly.
2128This feature detects a binary file with a valid ACPI table header and
2129invokes the disassembler automatically. Eliminates the need to
2130specifically invoke the disassembler with the -d option. ACPICA BZ 862.
2131
2132iASL/Disassembler: Added several warnings for the case where there are
2133unresolved control methods during the disassembly. This can potentially
2134cause errors when the output file is compiled, because the disassembler
2135assumes zero method arguments in these cases (it cannot determine the
2136actual number of arguments without resolution/definition of the method).
2137
2138Debugger: Added support to display all resources with a single command.
2139Invocation of the resources command with no arguments will now display
2140all
2141resources within the current namespace.
2142
2143AcpiHelp: Added descriptive text for each ACPICA exception code displayed
2144via the -e option.
2145
2146----------------------------------------
214717 January 2013. Summary of changes for version 20130117:
2148
21491) ACPICA Kernel-resident Subsystem:
2150
2151Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
2152return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
2153objects to return a package containing one integer, most BIOS code
2154returns
2155two integers and the previous code reflects that. However, we also need
2156to
2157support BIOS code that actually implements to the ACPI spec, and this
2158change reflects this.
2159
2160Fixed two issues with the ACPI_DEBUG_PRINT macros:
21611) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
2162C compilers that require this support.
21632) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
2164ACPI_DEBUG is already used by many of the various hosts.
2165
2166Updated all ACPICA copyrights and signons to 2013. Added the 2013
2167copyright to all module headers and signons, including the standard Linux
2168header. This affects virtually every file in the ACPICA core subsystem,
2169iASL compiler, all ACPICA utilities, and the test suites.
2170
2171Example Code and Data Size: These are the sizes for the OS-independent
2172acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2173debug version of the code includes the debug output trace mechanism and
2174has a much larger code and data size.
2175
2176  Previous Release:
2177    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
2178    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
2179  Current Release:
2180    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
2181    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
2182
2183
21842) iASL Compiler/Disassembler and Tools:
2185
2186Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
2187prevent a possible fault on some hosts. Some C libraries modify the arg
2188pointer parameter to vfprintf making it difficult to call it twice in the
2189AcpiOsVprintf function. Use a local buffer to workaround this issue. This
2190does not affect the Windows OSL since the Win C library does not modify
2191the arg pointer. Chao Guan, Bob Moore.
2192
2193iASL: Fixed a possible infinite loop when the maximum error count is
2194reached. If an output file other than the .AML file is specified (such as
2195a listing file), and the maximum number of errors is reached, do not
2196attempt to flush data to the output file(s) as the compiler is aborting.
2197This can cause an infinite loop as the max error count code essentially
2198keeps calling itself.
2199
2200iASL/Disassembler: Added an option (-in) to ignore NOOP
2201opcodes/operators.
2202Implemented for both the compiler and the disassembler. Often, the NOOP
2203opcode is used as padding for packages that are changed dynamically by
2204the
2205BIOS. When disassembled and recompiled, these NOOPs will cause syntax
2206errors. This option causes the disassembler to ignore all NOOP opcodes
2207(0xA3), and it also causes the compiler to ignore all ASL source code
2208NOOP
2209statements as well.
2210
2211Debugger: Enhanced the Sleep command to execute all sleep states. This
2212change allows Sleep to be invoked with no arguments and causes the
2213debugger to execute all of the sleep states, 0-5, automatically.
2214
2215----------------------------------------
221620 December 2012. Summary of changes for version 20121220:
2217
22181) ACPICA Kernel-resident Subsystem:
2219
2220Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
2221alternate entry point for AcpiWalkResources and improves the usability of
2222the resource manager by accepting as input a buffer containing the output
2223of either a _CRS, _PRS, or _AEI method. The key functionality is that the
2224input buffer is not deleted by this interface so that it can be used by
2225the host later. See the ACPICA reference for details.
2226
2227Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
2228(DSDT version < 2). The constant will be truncated and this warning
2229reflects that behavior.
2230
2231Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
2232ExtendedInterrupt, and GpioInt descriptors. This change adds support to
2233both get and set the new wake bit in these descriptors, separately from
2234the existing share bit. Reported by Aaron Lu.
2235
2236Interpreter: Fix Store() when an implicit conversion is not possible. For
2237example, in the cases such as a store of a string to an existing package
2238object, implement the store as a CopyObject(). This is a small departure
2239from the ACPI specification which states that the control method should
2240be
2241aborted in this case. However, the ASLTS suite depends on this behavior.
2242
2243Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
2244macros: check if debug output is currently enabled as soon as possible to
2245minimize performance impact if debug is in fact not enabled.
2246
2247Source code restructuring: Cleanup to improve modularity. The following
2248new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
2249psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
2250Associated makefiles and project files have been updated.
2251
2252Changed an exception code for LoadTable operator. For the case where one
2253of the input strings is too long, change the returned exception code from
2254AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
2255
2256Fixed a possible memory leak in dispatcher error path. On error, delete
2257the mutex object created during method mutex creation. Reported by
2258tim.gardner@canonical.com.
2259
2260Example Code and Data Size: These are the sizes for the OS-independent
2261acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2262debug version of the code includes the debug output trace mechanism and
2263has a much larger code and data size.
2264
2265  Previous Release:
2266    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
2267    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2268  Current Release:
2269    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
2270    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
2271
2272
22732) iASL Compiler/Disassembler and Tools:
2274
2275iASL: Disallow a method call as argument to the ObjectType ASL operator.
2276This change tracks an errata to the ACPI 5.0 document. The AML grammar
2277will not allow the interpreter to differentiate between a method and a
2278method invocation when these are used as an argument to the ObjectType
2279operator. The ACPI specification change is to disallow a method
2280invocation
2281(UserTerm) for the ObjectType operator.
2282
2283Finish support for the TPM2 and CSRT tables in the headers, table
2284compiler, and disassembler.
2285
2286Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
2287always expires immediately if the semaphore is not available. The
2288original
2289code was using a relative-time timeout, but sem_timedwait requires the
2290use
2291of an absolute time.
2292
2293iASL: Added a remark if the Timer() operator is used within a 32-bit
2294table. This operator returns a 64-bit time value that will be truncated
2295within a 32-bit table.
2296
2297iASL Source code restructuring: Cleanup to improve modularity. The
2298following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
2299aslmethod.c, and aslfileio.c. Associated makefiles and project files have
2300been updated.
2301
2302
2303----------------------------------------
230414 November 2012. Summary of changes for version 20121114:
2305
23061) ACPICA Kernel-resident Subsystem:
2307
2308Implemented a performance enhancement for ACPI/AML Package objects. This
2309change greatly increases the performance of Package objects within the
2310interpreter. It changes the processing of reference counts for packages
2311by
2312optimizing for the most common case where the package sub-objects are
2313either Integers, Strings, or Buffers. Increases the overall performance
2314of
2315the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
23162X.)
2317Chao Guan. ACPICA BZ 943.
2318
2319Implemented and deployed common macros to extract flag bits from resource
2320descriptors. Improves readability and maintainability of the code. Fixes
2321a
2322problem with the UART serial bus descriptor for the number of data bits
2323flags (was incorrectly 2 bits, should be 3).
2324
2325Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
2326of the macros and changed the SETx macros to the style of (destination,
2327source). Also added ACPI_CASTx companion macros. Lv Zheng.
2328
2329Example Code and Data Size: These are the sizes for the OS-independent
2330acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2331debug version of the code includes the debug output trace mechanism and
2332has a much larger code and data size.
2333
2334  Previous Release:
2335    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
2336    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2337  Current Release:
2338    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
2339    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2340
2341
23422) iASL Compiler/Disassembler and Tools:
2343
2344Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
2345adds the ShareAndWake and ExclusiveAndWake flags which were added to the
2346Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
2347
2348Disassembler: Fixed a problem with external declaration generation. Fixes
2349a problem where an incorrect pathname could be generated for an external
2350declaration if the original reference to the object includes leading
2351carats (^). ACPICA BZ 984.
2352
2353Debugger: Completed a major update for the Disassemble<method> command.
2354This command was out-of-date and did not properly disassemble control
2355methods that had any reasonable complexity. This fix brings the command
2356up
2357to the same level as the rest of the disassembler. Adds one new file,
2358dmdeferred.c, which is existing code that is now common with the main
2359disassembler and the debugger disassemble command. ACPICA MZ 978.
2360
2361iASL: Moved the parser entry prototype to avoid a duplicate declaration.
2362Newer versions of Bison emit this prototype, so moved the prototype out
2363of
2364the iASL header to where it is actually used in order to avoid a
2365duplicate
2366declaration.
2367
2368iASL/Tools: Standardized use of the stream I/O functions:
2369  1) Ensure check for I/O error after every fopen/fread/fwrite
2370  2) Ensure proper order of size/count arguments for fread/fwrite
2371  3) Use test of (Actual != Requested) after all fwrite, and most fread
2372  4) Standardize I/O error messages
2373Improves reliability and maintainability of the code. Bob Moore, Lv
2374Zheng.
2375ACPICA BZ 981.
2376
2377Disassembler: Prevent duplicate External() statements. During generation
2378of external statements, detect similar pathnames that are actually
2379duplicates such as these:
2380  External (\ABCD)
2381  External (ABCD)
2382Remove all leading '\' characters from pathnames during the external
2383statement generation so that duplicates will be detected and tossed.
2384ACPICA BZ 985.
2385
2386Tools: Replace low-level I/O with stream I/O functions. Replace
2387open/read/write/close with the stream I/O equivalents
2388fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
2389Moore.
2390
2391AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
2392name header so that AcpiXtract recognizes the output file/table.
2393
2394iASL: Remove obsolete -2 option flag. Originally intended to force the
2395compiler/disassembler into an ACPI 2.0 mode, this was never implemented
2396and the entire concept is now obsolete.
2397
2398----------------------------------------
239918 October 2012. Summary of changes for version 20121018:
2400
2401
24021) ACPICA Kernel-resident Subsystem:
2403
2404Updated support for the ACPI 5.0 MPST table. Fixes some problems
2405introduced by late changes to the table as it was added to the ACPI 5.0
2406specification. Includes header, disassembler, and data table compiler
2407support as well as a new version of the MPST template.
2408
2409AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
24105.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
2411methods: _HID, _CID, and _UID.
2412
2413Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
2414ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
2415name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
2416names for their various drivers. Affects the AcpiGetObjectInfo external
2417interface, and other internal interfaces as well.
2418
2419Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
2420This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
2421on machines that support non-aligned transfers. Optimizes for this case
2422rather than using a strncpy. With assistance from Zheng Lv.
2423
2424Resource Manager: Small fix for buffer size calculation. Fixed a one byte
2425error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
2426
2427Added a new debug print message for AML mutex objects that are force-
2428released. At control method termination, any currently acquired mutex
2429objects are force-released. Adds a new debug-only message for each one
2430that is released.
2431
2432Audited/updated all ACPICA return macros and the function debug depth
2433counter: 1) Ensure that all functions that use the various TRACE macros
2434also use the appropriate ACPICA return macros. 2) Ensure that all normal
2435return statements surround the return expression (value) with parens to
2436ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
2437Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
2438
2439Global source code changes/maintenance: All extra lines at the start and
2440end of each source file have been removed for consistency. Also, within
2441comments, all new sentences start with a single space instead of a double
2442space, again for consistency across the code base.
2443
2444Example Code and Data Size: These are the sizes for the OS-independent
2445acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2446debug version of the code includes the debug output trace mechanism and
2447has a much larger code and data size.
2448
2449  Previous Release:
2450    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2451    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2452  Current Release:
2453    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
2454    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2455
2456
24572) iASL Compiler/Disassembler and Tools:
2458
2459AcpiExec: Improved the algorithm used for memory leak/corruption
2460detection. Added some intelligence to the code that maintains the global
2461list of allocated memory. The list is now ordered by allocated memory
2462address, significantly improving performance. When running AcpiExec on
2463the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
2464on the platform and/or the environment. Note, this performance
2465enhancement affects the AcpiExec utility only, not the kernel-resident
2466ACPICA code.
2467
2468Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
2469the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
2470incorrect table offset reported for invalid opcodes. Report the original
247132-bit value for bad ACPI_NAMEs (as well as the repaired name.)
2472
2473Disassembler: Enhanced the -vt option to emit the binary table data in
2474hex format to assist with debugging.
2475
2476Fixed a potential filename buffer overflow in osunixdir.c. Increased the
2477size of file structure. Colin Ian King.
2478
2479----------------------------------------
248013 September 2012. Summary of changes for version 20120913:
2481
2482
24831) ACPICA Kernel-resident Subsystem:
2484
2485ACPI 5.0: Added two new notify types for the Hardware Error Notification
2486Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
2487and
2488MCE(6).
2489
2490Table Manager: Merged/removed duplicate code in the root table resize
2491functions. One function is external, the other is internal. Lv Zheng,
2492ACPICA
2493BZ 846.
2494
2495Makefiles: Completely removed the obsolete "Linux" makefiles under
2496acpica/generate/linux. These makefiles are obsolete and have been
2497replaced
2498by
2499the generic unix makefiles under acpica/generate/unix.
2500
2501Makefiles: Ensure that binary files always copied properly. Minor rule
2502change
2503to ensure that the final binary output files are always copied up to the
2504appropriate binary directory (bin32 or bin64.)
2505
2506Example Code and Data Size: These are the sizes for the OS-independent
2507acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2508debug
2509version of the code includes the debug output trace mechanism and has a
2510much
2511larger code and data size.
2512
2513  Previous Release:
2514    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2515    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2516  Current Release:
2517    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2518    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2519
2520
25212) iASL Compiler/Disassembler and Tools:
2522
2523Disassembler: Fixed a possible fault during the disassembly of resource
2524descriptors when a second parse is required because of the invocation of
2525external control methods within the table. With assistance from
2526adq@lidskialf.net. ACPICA BZ 976.
2527
2528iASL: Fixed a namepath optimization problem. An error can occur if the
2529parse
2530node that contains the namepath to be optimized does not have a parent
2531node
2532that is a named object. This change fixes the problem.
2533
2534iASL: Fixed a regression where the AML file is not deleted on errors. The
2535AML
2536output file should be deleted if there are any errors during the
2537compiler.
2538The
2539only exception is if the -f (force output) option is used. ACPICA BZ 974.
2540
2541iASL: Added a feature to automatically increase internal line buffer
2542sizes.
2543Via realloc(), automatically increase the internal line buffer sizes as
2544necessary to support very long source code lines. The current version of
2545the
2546preprocessor requires a buffer long enough to contain full source code
2547lines.
2548This change increases the line buffer(s) if the input lines go beyond the
2549current buffer size. This eliminates errors that occurred when a source
2550code
2551line was longer than the buffer.
2552
2553iASL: Fixed a problem with constant folding in method declarations. The
2554SyncLevel term is a ByteConstExpr, and incorrect code would be generated
2555if a
2556Type3 opcode was used.
2557
2558Debugger: Improved command help support. For incorrect argument count,
2559display
2560full help for the command. For help command itself, allow an argument to
2561specify a command.
2562
2563Test Suites: Several bug fixes for the ASLTS suite reduces the number of
2564errors during execution of the suite. Guan Chao.
2565
2566----------------------------------------
256716 August 2012. Summary of changes for version 20120816:
2568
2569
25701) ACPICA Kernel-resident Subsystem:
2571
2572Removed all use of the deprecated _GTS and _BFS predefined methods. The
2573_GTS
2574(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
2575deprecated and will probably be removed from the ACPI specification.
2576Windows
2577does not invoke them, and reportedly never will. The final nail in the
2578coffin
2579is that the ACPI specification states that these methods must be run with
2580interrupts off, which is not going to happen in a kernel interpreter.
2581Note:
2582Linux has removed all use of the methods also. It was discovered that
2583invoking these functions caused failures on some machines, probably
2584because
2585they were never tested since Windows does not call them. Affects two
2586external
2587interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
2588ACPICA BZ 969.
2589
2590Implemented support for complex bit-packed buffers returned from the _PLD
2591(Physical Location of Device) predefined method. Adds a new external
2592interface, AcpiDecodePldBuffer that parses the buffer into a more usable
2593C
2594structure. Note: C Bitfields cannot be used for this type of predefined
2595structure since the memory layout of individual bitfields is not defined
2596by
2597the C language. In addition, there are endian concerns where a compiler
2598will
2599change the bitfield ordering based on the machine type. The new ACPICA
2600interface eliminates these issues, and should be called after _PLD is
2601executed. ACPICA BZ 954.
2602
2603Implemented a change to allow a scope change to root (via "Scope (\)")
2604during
2605execution of module-level ASL code (code that is executed at table load
2606time.) Lin Ming.
2607
2608Added the Windows8/Server2012 string for the _OSI method. This change
2609adds
2610a
2611new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
26122012.
2613
2614Added header support for the new ACPI tables DBG2 (Debug Port Table Type
26152)
2616and CSRT (Core System Resource Table).
2617
2618Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
2619names. This simplifies access to the buffers returned by these predefined
2620names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
2621
2622GPE support: Removed an extraneous parameter from the various low-level
2623internal GPE functions. Tang Feng.
2624
2625Removed the linux makefiles from the unix packages. The generate/linux
2626makefiles are obsolete and have been removed from the unix tarball
2627release
2628packages. The replacement makefiles are under generate/unix, and there is
2629a
2630top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
2631
2632Updates for Unix makefiles:
26331) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
26342) Update linker flags (move to end of command line) for AcpiExec
2635utility.
2636Guan Chao.
2637
2638Split ACPICA initialization functions to new file, utxfinit.c. Split from
2639utxface.c to improve modularity and reduce file size.
2640
2641Example Code and Data Size: These are the sizes for the OS-independent
2642acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2643debug version of the code includes the debug output trace mechanism and
2644has a
2645much larger code and data size.
2646
2647  Previous Release:
2648    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2649    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2650  Current Release:
2651    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2652    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2653
2654
26552) iASL Compiler/Disassembler and Tools:
2656
2657iASL: Fixed a problem with constant folding for fixed-length constant
2658expressions. The constant-folding code was not being invoked for constant
2659expressions that allow the use of type 3/4/5 opcodes to generate
2660constants
2661for expressions such as ByteConstExpr, WordConstExpr, etc. This could
2662result
2663in the generation of invalid AML bytecode. ACPICA BZ 970.
2664
2665iASL: Fixed a generation issue on newer versions of Bison. Newer versions
2666apparently automatically emit some of the necessary externals. This
2667change
2668handles these versions in order to eliminate generation warnings.
2669
2670Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
2671
2672Disassembler: Add support to decode _PLD buffers. The decoded buffer
2673appears
2674within comments in the output file.
2675
2676Debugger: Fixed a regression with the "Threads" command where
2677AE_BAD_PARAMETER was always returned.
2678
2679----------------------------------------
268011 July 2012. Summary of changes for version 20120711:
2681
26821) ACPICA Kernel-resident Subsystem:
2683
2684Fixed a possible fault in the return package object repair code. Fixes a
2685problem that can occur when a lone package object is wrapped with an
2686outer
2687package object in order to force conformance to the ACPI specification.
2688Can
2689affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
2690_DLM,
2691_CSD, _PSD, _TSD.
2692
2693Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
2694PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
2695ARB_DIS bit must be implemented in the host-dependent C3 processor power
2696state
2697support. Note, ARB_DIS is obsolete and only applies to older chipsets,
2698both
2699Intel and other vendors. (for Intel: ICH4-M and earlier)
2700
2701This change removes the code to disable/enable bus master arbitration
2702during
2703suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
2704causes
2705resume problems on some machines. The change has been in use for over
2706seven
2707years within Linux.
2708
2709Implemented two new external interfaces to support host-directed dynamic
2710ACPI
2711table load and unload. They are intended to simplify the host
2712implementation
2713of hot-plug support:
2714  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
2715  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
2716table.
2717See the ACPICA reference for additional details. Adds one new file,
2718components/tables/tbxfload.c
2719
2720Implemented and deployed two new interfaces for errors and warnings that
2721are
2722known to be caused by BIOS/firmware issues:
2723  AcpiBiosError: Prints "ACPI Firmware Error" message.
2724  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
2725Deployed these new interfaces in the ACPICA Table Manager code for ACPI
2726table
2727and FADT errors. Additional deployment to be completed as appropriate in
2728the
2729future. The associated conditional macros are ACPI_BIOS_ERROR and
2730ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
2731ACPICA
2732BZ
2733843.
2734
2735Implicit notify support: ensure that no memory allocation occurs within a
2736critical region. This fix moves a memory allocation outside of the time
2737that a
2738spinlock is held. Fixes issues on systems that do not allow this
2739behavior.
2740Jung-uk Kim.
2741
2742Split exception code utilities and tables into a new file,
2743utilities/utexcep.c
2744
2745Example Code and Data Size: These are the sizes for the OS-independent
2746acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2747debug
2748version of the code includes the debug output trace mechanism and has a
2749much
2750larger code and data size.
2751
2752  Previous Release:
2753    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2754    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2755  Current Release:
2756    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2757    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2758
2759
27602) iASL Compiler/Disassembler and Tools:
2761
2762iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
2763of
27640. Jung-uk Kim.
2765
2766Debugger: Enhanced the "tables" command to emit additional information
2767about
2768the current set of ACPI tables, including the owner ID and flags decode.
2769
2770Debugger: Reimplemented the "unload" command to use the new
2771AcpiUnloadParentTable external interface. This command was disable
2772previously
2773due to need for an unload interface.
2774
2775AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
2776option
2777will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
2778
2779----------------------------------------
278020 June 2012. Summary of changes for version 20120620:
2781
2782
27831) ACPICA Kernel-resident Subsystem:
2784
2785Implemented support to expand the "implicit notify" feature to allow
2786multiple
2787devices to be notified by a single GPE. This feature automatically
2788generates a
2789runtime device notification in the absence of a BIOS-provided GPE control
2790method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
2791notify is
2792provided by ACPICA for Windows compatibility, and is a workaround for
2793BIOS
2794AML
2795code errors. See the description of the AcpiSetupGpeForWake interface in
2796the
2797APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
2798
2799Changed some comments and internal function names to simplify and ensure
2800correctness of the Linux code translation. No functional changes.
2801
2802Example Code and Data Size: These are the sizes for the OS-independent
2803acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2804debug
2805version of the code includes the debug output trace mechanism and has a
2806much
2807larger code and data size.
2808
2809  Previous Release:
2810    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2811    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2812  Current Release:
2813    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2814    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2815
2816
28172) iASL Compiler/Disassembler and Tools:
2818
2819Disassembler: Added support to emit short, commented descriptions for the
2820ACPI
2821predefined names in order to improve the readability of the disassembled
2822output. ACPICA BZ 959. Changes include:
2823  1) Emit descriptions for all standard predefined names (_INI, _STA,
2824_PRW,
2825etc.)
2826  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
2827  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
2828etc.)
2829
2830AcpiSrc: Fixed several long-standing Linux code translation issues.
2831Argument
2832descriptions in function headers are now translated properly to lower
2833case
2834and
2835underscores. ACPICA BZ 961. Also fixes translation problems such as
2836these:
2837(old -> new)
2838  i_aSL -> iASL
2839  00-7_f -> 00-7F
2840  16_k -> 16K
2841  local_fADT -> local_FADT
2842  execute_oSI -> execute_OSI
2843
2844iASL: Fixed a problem where null bytes were inadvertently emitted into
2845some
2846listing files.
2847
2848iASL: Added the existing debug options to the standard help screen. There
2849are
2850no longer two different help screens. ACPICA BZ 957.
2851
2852AcpiHelp: Fixed some typos in the various predefined name descriptions.
2853Also
2854expand some of the descriptions where appropriate.
2855
2856iASL: Fixed the -ot option (display compile times/statistics). Was not
2857working
2858properly for standard output; only worked for the debug file case.
2859
2860----------------------------------------
286118 May 2012. Summary of changes for version 20120518:
2862
2863
28641) ACPICA Core Subsystem:
2865
2866Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
2867defined
2868to block until asynchronous events such as notifies and GPEs have
2869completed.
2870Within ACPICA, it is only called before a notify or GPE handler is
2871removed/uninstalled. It also may be useful for the host OS within related
2872drivers such as the Embedded Controller driver. See the ACPICA reference
2873for
2874additional information. ACPICA BZ 868.
2875
2876ACPI Tables: Added a new error message for a possible overflow failure
2877during
2878the conversion of FADT 32-bit legacy register addresses to internal
2879common
288064-
2881bit GAS structure representation. The GAS has a one-byte "bit length"
2882field,
2883thus limiting the register length to 255 bits. ACPICA BZ 953.
2884
2885Example Code and Data Size: These are the sizes for the OS-independent
2886acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2887debug
2888version of the code includes the debug output trace mechanism and has a
2889much
2890larger code and data size.
2891
2892  Previous Release:
2893    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2894    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2895  Current Release:
2896    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2897    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2898
2899
29002) iASL Compiler/Disassembler and Tools:
2901
2902iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
2903macro.
2904This keyword was added late in the ACPI 5.0 release cycle and was not
2905implemented until now.
2906
2907Disassembler: Added support for Operation Region externals. Adds missing
2908support for operation regions that are defined in another table, and
2909referenced locally via a Field or BankField ASL operator. Now generates
2910the
2911correct External statement.
2912
2913Disassembler: Several additional fixes for the External() statement
2914generation
2915related to some ASL operators. Also, order the External() statements
2916alphabetically in the disassembler output. Fixes the External()
2917generation
2918for
2919the Create* field, Alias, and Scope operators:
2920 1) Create* buffer field operators - fix type mismatch warning on
2921disassembly
2922 2) Alias - implement missing External support
2923 3) Scope - fix to make sure all necessary externals are emitted.
2924
2925iASL: Improved pathname support. For include files, merge the prefix
2926pathname
2927with the file pathname and eliminate unnecessary components. Convert
2928backslashes in all pathnames to forward slashes, for readability. Include
2929file
2930pathname changes affect both #include and Include() type operators.
2931
2932iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
2933end
2934of a valid line by inserting a newline and then returning the EOF during
2935the
2936next call to GetNextLine. Prevents the line from being ignored due to EOF
2937condition.
2938
2939iASL: Implemented some changes to enhance the IDE support (-vi option.)
2940Error
2941and Warning messages are now correctly recognized for both the source
2942code
2943browser and the global error and warning counts.
2944
2945----------------------------------------
294620 April 2012. Summary of changes for version 20120420:
2947
2948
29491) ACPICA Core Subsystem:
2950
2951Implemented support for multiple notify handlers. This change adds
2952support
2953to
2954allow multiple system and device notify handlers on Device, Thermal Zone,
2955and
2956Processor objects. This can simplify the host OS notification
2957implementation.
2958Also re-worked and restructured the entire notify support code to
2959simplify
2960handler installation, handler removal, notify event queuing, and notify
2961dispatch to handler(s). Note: there can still only be two global notify
2962handlers - one for system notifies and one for device notifies. There are
2963no
2964changes to the existing handler install/remove interfaces. Lin Ming, Bob
2965Moore, Rafael Wysocki.
2966
2967Fixed a regression in the package repair code where the object reference
2968count was calculated incorrectly. Regression was introduced in the commit
2969"Support to add Package wrappers".
2970
2971Fixed a couple possible memory leaks in the AML parser, in the error
2972recovery
2973path. Jesper Juhl, Lin Ming.
2974
2975Example Code and Data Size: These are the sizes for the OS-independent
2976acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2977debug version of the code includes the debug output trace mechanism and
2978has a
2979much larger code and data size.
2980
2981  Previous Release:
2982    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2983    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2984  Current Release:
2985    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2986    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2987
2988
29892) iASL Compiler/Disassembler and Tools:
2990
2991iASL: Fixed a problem with the resource descriptor support where the
2992length
2993of the StartDependentFn and StartDependentFnNoPrio descriptors were not
2994included in cumulative descriptor offset, resulting in incorrect values
2995for
2996resource tags within resource descriptors appearing after a
2997StartDependent*
2998descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
2999
3000iASL and Preprocessor: Implemented full support for the #line directive
3001to
3002correctly track original source file line numbers through the .i
3003preprocessor
3004output file - for error and warning messages.
3005
3006iASL: Expand the allowable byte constants for address space IDs.
3007Previously,
3008the allowable range was 0x80-0xFF (user-defined spaces), now the range is
30090x0A-0xFF to allow for custom and new IDs without changing the compiler.
3010
3011iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
3012
3013iASL: Add option to completely disable the preprocessor (-Pn).
3014
3015iASL: Now emit all error/warning messages to standard error (stderr) by
3016default (instead of the previous stdout).
3017
3018ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
3019Update
3020for resource descriptor offset fix above. Update/cleanup error output
3021routines. Enable and send iASL errors/warnings to an error logfile
3022(error.txt). Send all other iASL output to a logfile (compiler.txt).
3023Fixed
3024several extraneous "unrecognized operator" messages.
3025
3026----------------------------------------
302720 March 2012. Summary of changes for version 20120320:
3028
3029
30301) ACPICA Core Subsystem:
3031
3032Enhanced the sleep/wake interfaces to optionally execute the _GTS method
3033(Going To Sleep) and the _BFS method (Back From Sleep). Windows
3034apparently
3035does not execute these methods, and therefore these methods are often
3036untested. It has been seen on some systems where the execution of these
3037methods causes errors and also prevents the machine from entering S5. It
3038is
3039therefore suggested that host operating systems do not execute these
3040methods
3041by default. In the future, perhaps these methods can be optionally
3042executed
3043based on the age of the system and/or what is the newest version of
3044Windows
3045that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
3046and
3047AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
3048Ming.
3049
3050Fixed a problem where the length of the local/common FADT was set too
3051early.
3052The local FADT table length cannot be set to the common length until the
3053original length has been examined. There is code that checks the table
3054length
3055and sets various fields appropriately. This can affect older machines
3056with
3057early FADT versions. For example, this can cause inadvertent writes to
3058the
3059CST_CNT register. Julian Anastasov.
3060
3061Fixed a mapping issue related to a physical table override. Use the
3062deferred
3063mapping mechanism for tables loaded via the physical override OSL
3064interface.
3065This allows for early mapping before the virtual memory manager is
3066available.
3067Thomas Renninger, Bob Moore.
3068
3069Enhanced the automatic return-object repair code: Repair a common problem
3070with
3071predefined methods that are defined to return a variable-length Package
3072of
3073sub-objects. If there is only one sub-object, some BIOS ASL code
3074mistakenly
3075simply returns the single object instead of a Package with one sub-
3076object.
3077This new support will repair this error by wrapping a Package object
3078around
3079the original object, creating the correct and expected Package with one
3080sub-
3081object. Names that can be repaired in this manner include: _ALR, _CSD,
3082_HPX,
3083_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
3084939.
3085
3086Changed the exception code returned for invalid ACPI paths passed as
3087parameters to external interfaces such as AcpiEvaluateObject. Was
3088AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
3089
3090Example Code and Data Size: These are the sizes for the OS-independent
3091acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3092debug
3093version of the code includes the debug output trace mechanism and has a
3094much
3095larger code and data size.
3096
3097  Previous Release:
3098    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
3099    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3100  Current Release:
3101    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3102    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3103
3104
31052) iASL Compiler/Disassembler and Tools:
3106
3107iASL: Added the infrastructure and initial implementation of a integrated
3108C-
3109like preprocessor. This will simplify BIOS development process by
3110eliminating
3111the need for a separate preprocessing step during builds. On Windows, it
3112also
3113eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
3114features including full #define() macro support are still under
3115development.
3116These preprocessor directives are supported:
3117    #define
3118    #elif
3119    #else
3120    #endif
3121    #error
3122    #if
3123    #ifdef
3124    #ifndef
3125    #include
3126    #pragma message
3127    #undef
3128    #warning
3129In addition, these new command line options are supported:
3130    -D <symbol> Define symbol for preprocessor use
3131    -li         Create preprocessed output file (*.i)
3132    -P          Preprocess only and create preprocessor output file (*.i)
3133
3134Table Compiler: Fixed a problem where the equals operator within an
3135expression
3136did not work properly.
3137
3138Updated iASL to use the current versions of Bison/Flex. Updated the
3139Windows
3140project file to invoke these tools from the standard location. ACPICA BZ
3141904.
3142Versions supported:
3143    Flex for Windows:  V2.5.4
3144    Bison for Windows: V2.4.1
3145
3146----------------------------------------
314715 February 2012. Summary of changes for version 20120215:
3148
3149
31501) ACPICA Core Subsystem:
3151
3152There have been some major changes to the sleep/wake support code, as
3153described below (a - e).
3154
3155a) The AcpiLeaveSleepState has been split into two interfaces, similar to
3156AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
3157AcpiLeaveSleepStatePrep. This allows the host to perform actions between
3158the
3159time the _BFS method is called and the _WAK method is called. NOTE: all
3160hosts
3161must update their wake/resume code or else sleep/wake will not work
3162properly.
3163Rafael Wysocki.
3164
3165b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
3166_WAK
3167method. Some machines require that the GPEs are enabled before the _WAK
3168method
3169is executed. Thomas Renninger.
3170
3171c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
3172bit.
3173Some BIOS code assumes that WAK_STS will be cleared on resume and use it
3174to
3175determine whether the system is rebooting or resuming. Matthew Garrett.
3176
3177d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
3178Sleep) to
3179match the ACPI specification requirement. Rafael Wysocki.
3180
3181e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
3182registers within the V5 FADT. This support adds two new files:
3183hardware/hwesleep.c implements the support for the new registers. Moved
3184all
3185sleep/wake external interfaces to hardware/hwxfsleep.c.
3186
3187
3188Added a new OSL interface for ACPI table overrides,
3189AcpiOsPhysicalTableOverride. This interface allows the host to override a
3190table via a physical address, instead of the logical address required by
3191AcpiOsTableOverride. This simplifies the host implementation. Initial
3192implementation by Thomas Renninger. The ACPICA implementation creates a
3193single
3194shared function for table overrides that attempts both a logical and a
3195physical override.
3196
3197Expanded the OSL memory read/write interfaces to 64-bit data
3198(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
3199transfer support for GAS register structures passed to AcpiRead and
3200AcpiWrite.
3201
3202Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
3203custom
3204build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
3205model.
3206See the ACPICA reference for details. ACPICA BZ 942. This option removes
3207about
320810% of the code and 5% of the static data, and the following hardware
3209ACPI
3210features become unavailable:
3211    PM Event and Control registers
3212    SCI interrupt (and handler)
3213    Fixed Events
3214    General Purpose Events (GPEs)
3215    Global Lock
3216    ACPI PM timer
3217    FACS table (Waking vectors and Global Lock)
3218
3219Updated the unix tarball directory structure to match the ACPICA git
3220source
3221tree. This ensures that the generic unix makefiles work properly (in
3222generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
3223867.
3224
3225Updated the return value of the _REV predefined method to integer value 5
3226to
3227reflect ACPI 5.0 support.
3228
3229Moved the external ACPI PM timer interface prototypes to the public
3230acpixf.h
3231file where they belong.
3232
3233Example Code and Data Size: These are the sizes for the OS-independent
3234acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3235debug
3236version of the code includes the debug output trace mechanism and has a
3237much
3238larger code and data size.
3239
3240  Previous Release:
3241    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
3242    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
3243  Current Release:
3244    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
3245    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3246
3247
32482) iASL Compiler/Disassembler and Tools:
3249
3250Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
3251descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
3252incorrectly displayed.
3253
3254AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
3255specification.
3256
3257----------------------------------------
325811 January 2012. Summary of changes for version 20120111:
3259
3260
32611) ACPICA Core Subsystem:
3262
3263Implemented a new mechanism to allow host device drivers to check for
3264address
3265range conflicts with ACPI Operation Regions. Both SystemMemory and
3266SystemIO
3267address spaces are supported. A new external interface,
3268AcpiCheckAddressRange,
3269allows drivers to check an address range against the ACPI namespace. See
3270the
3271ACPICA reference for additional details. Adds one new file,
3272utilities/utaddress.c. Lin Ming, Bob Moore.
3273
3274Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
3275Control
3276and
3277Status registers, update the ACPI 5.0 flags, and update internal data
3278structures to handle an FADT larger than 256 bytes. The size of the ACPI
32795.0
3280FADT is 268 bytes.
3281
3282Updated all ACPICA copyrights and signons to 2012. Added the 2012
3283copyright to
3284all module headers and signons, including the standard Linux header. This
3285affects virtually every file in the ACPICA core subsystem, iASL compiler,
3286and
3287all ACPICA utilities.
3288
3289Example Code and Data Size: These are the sizes for the OS-independent
3290acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3291debug
3292version of the code includes the debug output trace mechanism and has a
3293much
3294larger code and data size.
3295
3296  Previous Release:
3297    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
3298    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
3299  Current Release:
3300    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
3301    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
3302
3303
33042) iASL Compiler/Disassembler and Tools:
3305
3306Disassembler: fixed a problem with the automatic resource tag generation
3307support. Fixes a problem where the resource tags are inadvertently not
3308constructed if the table being disassembled contains external references
3309to
3310control methods. Moved the actual construction of the tags to after the
3311final
3312namespace is constructed (after 2nd parse is invoked due to external
3313control
3314method references.) ACPICA BZ 941.
3315
3316Table Compiler: Make all "generic" operators caseless. These are the
3317operators
3318like UINT8, String, etc. Making these caseless improves ease-of-use.
3319ACPICA BZ
3320934.
3321
3322----------------------------------------
332323 November 2011. Summary of changes for version 20111123:
3324
33250) ACPI 5.0 Support:
3326
3327This release contains full support for the ACPI 5.0 specification, as
3328summarized below.
3329
3330Reduced Hardware Support:
3331-------------------------
3332
3333This support allows for ACPI systems without the usual ACPI hardware.
3334This
3335support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
3336will
3337not attempt to initialize or use any of the usual ACPI hardware. Note,
3338when
3339this flag is set, all of the following ACPI hardware is assumed to be not
3340present and is not initialized or accessed:
3341
3342    General Purpose Events (GPEs)
3343    Fixed Events (PM1a/PM1b and PM Control)
3344    Power Management Timer and Console Buttons (power/sleep)
3345    Real-time Clock Alarm
3346    Global Lock
3347    System Control Interrupt (SCI)
3348    The FACS is assumed to be non-existent
3349
3350ACPI Tables:
3351------------
3352
3353All new tables and updates to existing tables are fully supported in the
3354ACPICA headers (for use by device drivers), the disassembler, and the
3355iASL
3356Data Table Compiler. ACPI 5.0 defines these new tables:
3357
3358    BGRT        /* Boot Graphics Resource Table */
3359    DRTM        /* Dynamic Root of Trust for Measurement table */
3360    FPDT        /* Firmware Performance Data Table */
3361    GTDT        /* Generic Timer Description Table */
3362    MPST        /* Memory Power State Table */
3363    PCCT        /* Platform Communications Channel Table */
3364    PMTT        /* Platform Memory Topology Table */
3365    RASF        /* RAS Feature table */
3366
3367Operation Regions/SpaceIDs:
3368---------------------------
3369
3370All new operation regions are fully supported by the iASL compiler, the
3371disassembler, and the ACPICA runtime code (for dispatch to region
3372handlers.)
3373The new operation region Space IDs are:
3374
3375    GeneralPurposeIo
3376    GenericSerialBus
3377
3378Resource Descriptors:
3379---------------------
3380
3381All new ASL resource descriptors are fully supported by the iASL
3382compiler,
3383the
3384ASL/AML disassembler, and the ACPICA runtime Resource Manager code
3385(including
3386all new predefined resource tags). New descriptors are:
3387
3388    FixedDma
3389    GpioIo
3390    GpioInt
3391    I2cSerialBus
3392    SpiSerialBus
3393    UartSerialBus
3394
3395ASL/AML Operators, New and Modified:
3396------------------------------------
3397
3398One new operator is added, the Connection operator, which is used to
3399associate
3400a GeneralPurposeIo or GenericSerialBus resource descriptor with
3401individual
3402field objects within an operation region. Several new protocols are
3403associated
3404with the AccessAs operator. All are fully supported by the iASL compiler,
3405disassembler, and runtime ACPICA AML interpreter:
3406
3407    Connection                      // Declare Field Connection
3408attributes
3409    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
3410    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
3411Protocol
3412    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
3413    RawDataBuffer                       // Data type for Vendor Data
3414fields
3415
3416Predefined ASL/AML Objects:
3417---------------------------
3418
3419All new predefined objects/control-methods are supported by the iASL
3420compiler
3421and the ACPICA runtime validation/repair (arguments and return values.)
3422New
3423predefined names include the following:
3424
3425Standard Predefined Names (Objects or Control Methods):
3426    _AEI, _CLS, _CPC, _CWS, _DEP,
3427    _DLM, _EVT, _GCP, _CRT, _GWS,
3428    _HRV, _PRE, _PSE, _SRT, _SUB.
3429
3430Resource Tags (Names used to access individual fields within resource
3431descriptors):
3432    _DBT, _DPL, _DRS, _END, _FLC,
3433    _IOR, _LIN, _MOD, _PAR, _PHA,
3434    _PIN, _PPI, _POL, _RXL, _SLV,
3435    _SPE, _STB, _TXL, _VEN.
3436
3437ACPICA External Interfaces:
3438---------------------------
3439
3440Several new interfaces have been defined for use by ACPI-related device
3441drivers and other host OS services:
3442
3443AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
3444to
3445acquire and release AML mutexes that are defined in the DSDT/SSDT tables
3446provided by the BIOS. They are intended to be used in conjunction with
3447the
3448ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
3449mutual exclusion with the AML code/interpreter.
3450
3451AcpiGetEventResources: Returns the (formatted) resource descriptors as
3452defined
3453by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
3454provides
3455resource descriptors associated with hardware-reduced platform events,
3456similar
3457to the AcpiGetCurrentResources interface.
3458
3459Operation Region Handlers: For General Purpose IO and Generic Serial Bus
3460operation regions, information about the Connection() object and any
3461optional
3462length information is passed to the region handler within the Context
3463parameter.
3464
3465AcpiBufferToResource: This interface converts a raw AML buffer containing
3466a
3467resource template or resource descriptor to the ACPI_RESOURCE internal
3468format
3469suitable for use by device drivers. Can be used by an operation region
3470handler
3471to convert the Connection() buffer object into a ACPI_RESOURCE.
3472
3473Miscellaneous/Tools/TestSuites:
3474-------------------------------
3475
3476Support for extended _HID names (Four alpha characters instead of three).
3477Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
3478Support for ACPI 5.0 features in the ASLTS test suite.
3479Fully updated documentation (ACPICA and iASL reference documents.)
3480
3481ACPI Table Definition Language:
3482-------------------------------
3483
3484Support for this language was implemented and released as a subsystem of
3485the
3486iASL compiler in 2010. (See the iASL compiler User Guide.)
3487
3488
3489Non-ACPI 5.0 changes for this release:
3490--------------------------------------
3491
34921) ACPICA Core Subsystem:
3493
3494Fix a problem with operation region declarations where a failure can
3495occur
3496if
3497the region name and an argument that evaluates to an object (such as the
3498region address) are in different namespace scopes. Lin Ming, ACPICA BZ
3499937.
3500
3501Do not abort an ACPI table load if an invalid space ID is found within.
3502This
3503will be caught later if the offending method is executed. ACPICA BZ 925.
3504
3505Fixed an issue with the FFixedHW space ID where the ID was not always
3506recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
3507
3508Fixed a problem with the 32-bit generation of the unix-specific OSL
3509(osunixxf.c). Lin Ming, ACPICA BZ 936.
3510
3511Several changes made to enable generation with the GCC 4.6 compiler.
3512ACPICA BZ
3513935.
3514
3515New error messages: Unsupported I/O requests (not 8/16/32 bit), and
3516Index/Bank
3517field registers out-of-range.
3518
35192) iASL Compiler/Disassembler and Tools:
3520
3521iASL: Implemented the __PATH__ operator, which returns the full pathname
3522of
3523the current source file.
3524
3525AcpiHelp: Automatically display expanded keyword information for all ASL
3526operators.
3527
3528Debugger: Add "Template" command to disassemble/dump resource template
3529buffers.
3530
3531Added a new master script to generate and execute the ASLTS test suite.
3532Automatically handles 32- and 64-bit generation. See tests/aslts.sh
3533
3534iASL: Fix problem with listing generation during processing of the
3535Switch()
3536operator where AML listing was disabled until the entire Switch block was
3537completed.
3538
3539iASL: Improve support for semicolon statement terminators. Fix "invalid
3540character" message for some cases when the semicolon is used. Semicolons
3541are
3542now allowed after every <Term> grammar element. ACPICA BZ 927.
3543
3544iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
3545923.
3546
3547Disassembler: Fix problem with disassembly of the DataTableRegion
3548operator
3549where an inadvertent "Unhandled deferred opcode" message could be
3550generated.
3551
35523) Example Code and Data Size
3553
3554These are the sizes for the OS-independent acpica.lib produced by the
3555Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3556includes the debug output trace mechanism and has a much larger code and
3557data
3558size.
3559
3560  Previous Release:
3561    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3562    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3563  Current Release:
3564    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
3565    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
3566
3567----------------------------------------
356822 September 2011. Summary of changes for version 20110922:
3569
35700) ACPI 5.0 News:
3571
3572Support for ACPI 5.0 in ACPICA has been underway for several months and
3573will
3574be released at the same time that ACPI 5.0 is officially released.
3575
3576The ACPI 5.0 specification is on track for release in the next few
3577months.
3578
35791) ACPICA Core Subsystem:
3580
3581Fixed a problem where the maximum sleep time for the Sleep() operator was
3582intended to be limited to two seconds, but was inadvertently limited to
358320
3584seconds instead.
3585
3586Linux and Unix makefiles: Added header file dependencies to ensure
3587correct
3588generation of ACPICA core code and utilities. Also simplified the
3589makefiles
3590considerably through the use of the vpath variable to specify search
3591paths.
3592ACPICA BZ 924.
3593
35942) iASL Compiler/Disassembler and Tools:
3595
3596iASL: Implemented support to check the access length for all fields
3597created to
3598access named Resource Descriptor fields. For example, if a resource field
3599is
3600defined to be two bits, a warning is issued if a CreateXxxxField() is
3601used
3602with an incorrect bit length. This is implemented for all current
3603resource
3604descriptor names. ACPICA BZ 930.
3605
3606Disassembler: Fixed a byte ordering problem with the output of 24-bit and
360756-
3608bit integers.
3609
3610iASL: Fixed a couple of issues associated with variable-length package
3611objects. 1) properly handle constants like One, Ones, Zero -- do not make
3612a
3613VAR_PACKAGE when these are used as a package length. 2) Allow the
3614VAR_PACKAGE
3615opcode (in addition to PACKAGE) when validating object types for
3616predefined
3617names.
3618
3619iASL: Emit statistics for all output files (instead of just the ASL input
3620and
3621AML output). Includes listings, hex files, etc.
3622
3623iASL: Added -G option to the table compiler to allow the compilation of
3624custom
3625ACPI tables. The only part of a table that is required is the standard
362636-
3627byte
3628ACPI header.
3629
3630AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
3631headers),
3632which also adds correct 64-bit support. Also, now all output filenames
3633are
3634completely lower case.
3635
3636AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
3637loading table files. A warning is issued for any such tables. The only
3638exception is an FADT. This also fixes a possible fault when attempting to
3639load
3640non-AML tables. ACPICA BZ 932.
3641
3642AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
3643a
3644missing table terminator could cause a fault when using the -p option.
3645
3646AcpiSrc: Fixed a possible divide-by-zero fault when generating file
3647statistics.
3648
36493) Example Code and Data Size
3650
3651These are the sizes for the OS-independent acpica.lib produced by the
3652Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3653includes the debug output trace mechanism and has a much larger code and
3654data
3655size.
3656
3657  Previous Release (VC 9.0):
3658    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3659    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3660  Current Release (VC 9.0):
3661    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3662    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3663
3664
3665----------------------------------------
366623 June 2011. Summary of changes for version 20110623:
3667
36681) ACPI CA Core Subsystem:
3669
3670Updated the predefined name repair mechanism to not attempt repair of a
3671_TSS
3672return object if a _PSS object is present. We can only sort the _TSS
3673return
3674package if there is no _PSS within the same scope. This is because if
3675_PSS
3676is
3677present, the ACPI specification dictates that the _TSS Power Dissipation
3678field
3679is to be ignored, and therefore some BIOSs leave garbage values in the
3680_TSS
3681Power field(s). In this case, it is best to just return the _TSS package
3682as-
3683is. Reported by, and fixed with assistance from Fenghua Yu.
3684
3685Added an option to globally disable the control method return value
3686validation
3687and repair. This runtime option can be used to disable return value
3688repair
3689if
3690this is causing a problem on a particular machine. Also added an option
3691to
3692AcpiExec (-dr) to set this disable flag.
3693
3694All makefiles and project files: Major changes to improve generation of
3695ACPICA
3696tools. ACPICA BZ 912:
3697    Reduce default optimization levels to improve compatibility
3698    For Linux, add strict-aliasing=0 for gcc 4
3699    Cleanup and simplify use of command line defines
3700    Cleanup multithread library support
3701    Improve usage messages
3702
3703Linux-specific header: update handling of THREAD_ID and pthread. For the
370432-
3705bit case, improve casting to eliminate possible warnings, especially with
3706the
3707acpica tools.
3708
3709Example Code and Data Size: These are the sizes for the OS-independent
3710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3711debug
3712version of the code includes the debug output trace mechanism and has a
3713much
3714larger code and data size.
3715
3716  Previous Release (VC 9.0):
3717    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3718    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3719  Current Release (VC 9.0):
3720    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3721    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3722
37232) iASL Compiler/Disassembler and Tools:
3724
3725With this release, a new utility named "acpihelp" has been added to the
3726ACPICA
3727package. This utility summarizes the ACPI specification chapters for the
3728ASL
3729and AML languages. It generates under Linux/Unix as well as Windows, and
3730provides the following functionality:
3731    Find/display ASL operator(s) -- with description and syntax.
3732    Find/display ASL keyword(s) -- with exact spelling and descriptions.
3733    Find/display ACPI predefined name(s) -- with description, number
3734        of arguments, and the return value data type.
3735    Find/display AML opcode name(s) -- with opcode, arguments, and
3736grammar.
3737    Decode/display AML opcode -- with opcode name, arguments, and
3738grammar.
3739
3740Service Layers: Make multi-thread support configurable. Conditionally
3741compile
3742the multi-thread support so that threading libraries will not be linked
3743if
3744not
3745necessary. The only tool that requires multi-thread support is AcpiExec.
3746
3747iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
3748of
3749Bison appear to want the interface to yyerror to be a const char * (or at
3750least this is a problem when generating iASL on some systems.) ACPICA BZ
3751923
3752Pierre Lejeune.
3753
3754Tools: Fix for systems where O_BINARY is not defined. Only used for
3755Windows
3756versions of the tools.
3757
3758----------------------------------------
375927 May 2011. Summary of changes for version 20110527:
3760
37611) ACPI CA Core Subsystem:
3762
3763ASL Load() operator: Reinstate most restrictions on the incoming ACPI
3764table
3765signature. Now, only allow SSDT, OEMx, and a null signature. History:
3766    1) Originally, we checked the table signature for "SSDT" or "PSDT".
3767       (PSDT is now obsolete.)
3768    2) We added support for OEMx tables, signature "OEM" plus a fourth
3769       "don't care" character.
3770    3) Valid tables were encountered with a null signature, so we just
3771       gave up on validating the signature, (05/2008).
3772    4) We encountered non-AML tables such as the MADT, which caused
3773       interpreter errors and kernel faults. So now, we once again allow
3774       only SSDT, OEMx, and now, also a null signature. (05/2011).
3775
3776Added the missing _TDL predefined name to the global name list in order
3777to
3778enable validation. Affects both the core ACPICA code and the iASL
3779compiler.
3780
3781Example Code and Data Size: These are the sizes for the OS-independent
3782acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3783debug
3784version of the code includes the debug output trace mechanism and has a
3785much
3786larger code and data size.
3787
3788  Previous Release (VC 9.0):
3789    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3790    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3791  Current Release (VC 9.0):
3792    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3793    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3794
37952) iASL Compiler/Disassembler and Tools:
3796
3797Debugger/AcpiExec: Implemented support for "complex" method arguments on
3798the
3799debugger command line. This adds support beyond simple integers --
3800including
3801Strings, Buffers, and Packages. Includes support for nested packages.
3802Increased the default command line buffer size to accommodate these
3803arguments.
3804See the ACPICA reference for details and syntax. ACPICA BZ 917.
3805
3806Debugger/AcpiExec: Implemented support for "default" method arguments for
3807the
3808Execute/Debug command. Now, the debugger will always invoke a control
3809method
3810with the required number of arguments -- even if the command line
3811specifies
3812none or insufficient arguments. It uses default integer values for any
3813missing
3814arguments. Also fixes a bug where only six method arguments maximum were
3815supported instead of the required seven.
3816
3817Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
3818and
3819also return status in order to prevent buffer overruns. See the ACPICA
3820reference for details and syntax. ACPICA BZ 921
3821
3822iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
3823makefiles to simplify support for the two different but similar parser
3824generators, bison and yacc.
3825
3826Updated the generic unix makefile for gcc 4. The default gcc version is
3827now
3828expected to be 4 or greater, since options specific to gcc 4 are used.
3829
3830----------------------------------------
383113 April 2011. Summary of changes for version 20110413:
3832
38331) ACPI CA Core Subsystem:
3834
3835Implemented support to execute a so-called "orphan" _REG method under the
3836EC
3837device. This change will force the execution of a _REG method underneath
3838the
3839EC
3840device even if there is no corresponding operation region of type
3841EmbeddedControl. Fixes a problem seen on some machines and apparently is
3842compatible with Windows behavior. ACPICA BZ 875.
3843
3844Added more predefined methods that are eligible for automatic NULL
3845package
3846element removal. This change adds another group of predefined names to
3847the
3848list
3849of names that can be repaired by having NULL package elements dynamically
3850removed. This group are those methods that return a single variable-
3851length
3852package containing simple data types such as integers, buffers, strings.
3853This
3854includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
3855_PSL,
3856_Sx,
3857and _TZD. ACPICA BZ 914.
3858
3859Split and segregated all internal global lock functions to a new file,
3860evglock.c.
3861
3862Updated internal address SpaceID for DataTable regions. Moved this
3863internal
3864space
3865id in preparation for ACPI 5.0 changes that will include some new space
3866IDs.
3867This
3868change should not affect user/host code.
3869
3870Example Code and Data Size: These are the sizes for the OS-independent
3871acpica.lib
3872produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3873version of
3874the code includes the debug output trace mechanism and has a much larger
3875code
3876and
3877data size.
3878
3879  Previous Release (VC 9.0):
3880    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3881    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3882  Current Release (VC 9.0):
3883    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3884    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3885
38862) iASL Compiler/Disassembler and Tools:
3887
3888iASL/DTC: Major update for new grammar features. Allow generic data types
3889in
3890custom ACPI tables. Field names are now optional. Any line can be split
3891to
3892multiple lines using the continuation char (\). Large buffers now use
3893line-
3894continuation character(s) and no colon on the continuation lines. See the
3895grammar
3896update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
3897Moore.
3898
3899iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
3900statements.
3901Since the parser stuffs a "zero" as the return value for these statements
3902(due
3903to
3904the underlying AML grammar), they were seen as "return with value" by the
3905iASL
3906semantic checking. They are now seen correctly as "null" return
3907statements.
3908
3909iASL: Check if a_REG declaration has a corresponding Operation Region.
3910Adds a
3911check for each _REG to ensure that there is in fact a corresponding
3912operation
3913region declaration in the same scope. If not, the _REG method is not very
3914useful
3915since it probably won't be executed. ACPICA BZ 915.
3916
3917iASL/DTC: Finish support for expression evaluation. Added a new
3918expression
3919parser
3920that implements c-style operator precedence and parenthesization. ACPICA
3921bugzilla
3922908.
3923
3924Disassembler/DTC: Remove support for () and <> style comments in data
3925tables.
3926Now
3927that DTC has full expression support, we don't want to have comment
3928strings
3929that
3930start with a parentheses or a less-than symbol. Now, only the standard /*
3931and
3932//
3933comments are supported, as well as the bracket [] comments.
3934
3935AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
3936"unusual"
3937headers in the acpidump file. Update the header validation to support
3938these
3939tables. Problem introduced in previous AcpiXtract version in the change
3940to
3941support "wrong checksum" error messages emitted by acpidump utility.
3942
3943iASL: Add a * option to generate all template files (as a synonym for
3944ALL)
3945as
3946in
3947"iasl -T *" or "iasl -T ALL".
3948
3949iASL/DTC: Do not abort compiler on fatal errors. We do not want to
3950completely
3951abort the compiler on "fatal" errors, simply should abort the current
3952compile.
3953This allows multiple compiles with a single (possibly wildcard) compiler
3954invocation.
3955
3956----------------------------------------
395716 March 2011. Summary of changes for version 20110316:
3958
39591) ACPI CA Core Subsystem:
3960
3961Fixed a problem caused by a _PRW method appearing at the namespace root
3962scope
3963during the setup of wake GPEs. A fault could occur if a _PRW directly
3964under
3965the
3966root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
3967
3968Implemented support for "spurious" Global Lock interrupts. On some
3969systems, a
3970global lock interrupt can occur without the pending flag being set. Upon
3971a
3972GL
3973interrupt, we now ensure that a thread is actually waiting for the lock
3974before
3975signaling GL availability. Rafael Wysocki, Bob Moore.
3976
3977Example Code and Data Size: These are the sizes for the OS-independent
3978acpica.lib
3979produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3980version of
3981the code includes the debug output trace mechanism and has a much larger
3982code
3983and
3984data size.
3985
3986  Previous Release (VC 9.0):
3987    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3988    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3989  Current Release (VC 9.0):
3990    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3991    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3992
39932) iASL Compiler/Disassembler and Tools:
3994
3995Implemented full support for the "SLIC" ACPI table. Includes support in
3996the
3997header files, disassembler, table compiler, and template generator. Bob
3998Moore,
3999Lin Ming.
4000
4001AcpiXtract: Correctly handle embedded comments and messages from
4002AcpiDump.
4003Apparently some or all versions of acpidump will occasionally emit a
4004comment
4005like
4006"Wrong checksum", etc., into the dump file. This was causing problems for
4007AcpiXtract. ACPICA BZ 905.
4008
4009iASL: Fix the Linux makefile by removing an inadvertent double file
4010inclusion.
4011ACPICA BZ 913.
4012
4013AcpiExec: Update installation of operation region handlers. Install one
4014handler
4015for a user-defined address space. This is used by the ASL test suite
4016(ASLTS).
4017
4018----------------------------------------
401911 February 2011. Summary of changes for version 20110211:
4020
40211) ACPI CA Core Subsystem:
4022
4023Added a mechanism to defer _REG methods for some early-installed
4024handlers.
4025Most user handlers should be installed before call to
4026AcpiEnableSubsystem.
4027However, Event handlers and region handlers should be installed after
4028AcpiInitializeObjects. Override handlers for the "default" regions should
4029be
4030installed early, however. This change executes all _REG methods for the
4031default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
4032chicken/egg issues between them. ACPICA BZ 848.
4033
4034Implemented an optimization for GPE detection. This optimization will
4035simply
4036ignore GPE registers that contain no enabled GPEs -- there is no need to
4037read the register since this information is available internally. This
4038becomes more important on machines with a large GPE space. ACPICA
4039bugzilla
4040884. Lin Ming. Suggestion from Joe Liu.
4041
4042Removed all use of the highly unreliable FADT revision field. The
4043revision
4044number in the FADT has been found to be completely unreliable and cannot
4045be
4046trusted. Only the actual table length can be used to infer the version.
4047This
4048change updates the ACPICA core and the disassembler so that both no
4049longer
4050even look at the FADT version and instead depend solely upon the FADT
4051length.
4052
4053Fix an unresolved name issue for the no-debug and no-error-message source
4054generation cases. The _AcpiModuleName was left undefined in these cases,
4055but
4056it is actually needed as a parameter to some interfaces. Define
4057_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
4058
4059Split several large files (makefiles and project files updated)
4060  utglobal.c   -> utdecode.c
4061  dbcomds.c    -> dbmethod.c dbnames.c
4062  dsopcode.c   -> dsargs.c dscontrol.c
4063  dsload.c     -> dsload2.c
4064  aslanalyze.c -> aslbtypes.c aslwalks.c
4065
4066Example Code and Data Size: These are the sizes for the OS-independent
4067acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4068debug version of the code includes the debug output trace mechanism and
4069has
4070a much larger code and data size.
4071
4072  Previous Release (VC 9.0):
4073    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4074    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4075  Current Release (VC 9.0):
4076    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4077    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4078
40792) iASL Compiler/Disassembler and Tools:
4080
4081iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
4082These are useful C-style macros with the standard definitions. ACPICA
4083bugzilla 898.
4084
4085iASL/DTC: Added support for integer expressions and labels. Support for
4086full
4087expressions for all integer fields in all ACPI tables. Support for labels
4088in
4089"generic" portions of tables such as UEFI. See the iASL reference manual.
4090
4091Debugger: Added a command to display the status of global handlers. The
4092"handlers" command will display op region, fixed event, and miscellaneous
4093global handlers. installation status -- and for op regions, whether
4094default
4095or user-installed handler will be used.
4096
4097iASL: Warn if reserved method incorrectly returns a value. Many
4098predefined
4099names are defined such that they do not return a value. If implemented as
4100a
4101method, issue a warning if such a name explicitly returns a value. ACPICA
4102Bugzilla 855.
4103
4104iASL: Added detection of GPE method name conflicts. Detects a conflict
4105where
4106there are two GPE methods of the form _Lxy and _Exy in the same scope.
4107(For
4108example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
4109
4110iASL/DTC: Fixed a couple input scanner issues with comments and line
4111numbers. Comment remover could get confused and miss a comment ending.
4112Fixed
4113a problem with line counter maintenance.
4114
4115iASL/DTC: Reduced the severity of some errors from fatal to error. There
4116is
4117no need to abort on simple errors within a field definition.
4118
4119Debugger: Simplified the output of the help command. All help output now
4120in
4121a single screen, instead of help subcommands. ACPICA Bugzilla 897.
4122
4123----------------------------------------
412412 January 2011. Summary of changes for version 20110112:
4125
41261) ACPI CA Core Subsystem:
4127
4128Fixed a race condition between method execution and namespace walks that
4129can
4130possibly cause a fault. The problem was apparently introduced in version
413120100528 as a result of a performance optimization that reduces the
4132number
4133of
4134namespace walks upon method exit by using the delete_namespace_subtree
4135function instead of the delete_namespace_by_owner function used
4136previously.
4137Bug is a missing namespace lock in the delete_namespace_subtree function.
4138dana.myers@oracle.com
4139
4140Fixed several issues and a possible fault with the automatic "serialized"
4141method support. History: This support changes a method to "serialized" on
4142the
4143fly if the method generates an AE_ALREADY_EXISTS error, indicating the
4144possibility that it cannot handle reentrancy. This fix repairs a couple
4145of
4146issues seen in the field, especially on machines with many cores:
4147
4148    1) Delete method children only upon the exit of the last thread,
4149       so as to not delete objects out from under other running threads
4150      (and possibly causing a fault.)
4151    2) Set the "serialized" bit for the method only upon the exit of the
4152       Last thread, so as to not cause deadlock when running threads
4153       attempt to exit.
4154    3) Cleanup the use of the AML "MethodFlags" and internal method flags
4155       so that there is no longer any confusion between the two.
4156
4157    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
4158
4159Debugger: Now lock the namespace for duration of a namespace dump.
4160Prevents
4161issues if the namespace is changing dynamically underneath the debugger.
4162Especially affects temporary namespace nodes, since the debugger displays
4163these also.
4164
4165Updated the ordering of include files. The ACPICA headers should appear
4166before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
4167set
4168any necessary compiler-specific defines, etc. Affects the ACPI-related
4169tools
4170and utilities.
4171
4172Updated all ACPICA copyrights and signons to 2011. Added the 2011
4173copyright
4174to all module headers and signons, including the Linux header. This
4175affects
4176virtually every file in the ACPICA core subsystem, iASL compiler, and all
4177utilities.
4178
4179Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
4180project files for VC++ 6.0 are now obsolete. New project files can be
4181found
4182under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
4183details.
4184
4185Example Code and Data Size: These are the sizes for the OS-independent
4186acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4187debug version of the code includes the debug output trace mechanism and
4188has a
4189much larger code and data size.
4190
4191  Previous Release (VC 6.0):
4192    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
4193    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
4194  Current Release (VC 9.0):
4195    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4196    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4197
41982) iASL Compiler/Disassembler and Tools:
4199
4200iASL: Added generic data types to the Data Table compiler. Add "generic"
4201data
4202types such as UINT32, String, Unicode, etc., to simplify the generation
4203of
4204platform-defined tables such as UEFI. Lin Ming.
4205
4206iASL: Added listing support for the Data Table Compiler. Adds listing
4207support
4208(-l) to display actual binary output for each line of input code.
4209
4210----------------------------------------
421109 December 2010. Summary of changes for version 20101209:
4212
42131) ACPI CA Core Subsystem:
4214
4215Completed the major overhaul of the GPE support code that was begun in
4216July
42172010. Major features include: removal of _PRW execution in ACPICA (host
4218executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
4219changes to existing interfaces, simplification of GPE handler operation,
4220and
4221a handful of new interfaces:
4222
4223    AcpiUpdateAllGpes
4224    AcpiFinishGpe
4225    AcpiSetupGpeForWake
4226    AcpiSetGpeWakeMask
4227    One new file, evxfgpe.c to consolidate all external GPE interfaces.
4228
4229See the ACPICA Programmer Reference for full details and programming
4230information. See the new section 4.4 "General Purpose Event (GPE)
4231Support"
4232for a full overview, and section 8.7 "ACPI General Purpose Event
4233Management"
4234for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
4235Ming,
4236Bob Moore, Rafael Wysocki.
4237
4238Implemented a new GPE feature for Windows compatibility, the "Implicit
4239Wake
4240GPE Notify". This feature will automatically issue a Notify(2) on a
4241device
4242when a Wake GPE is received if there is no corresponding GPE method or
4243handler. ACPICA BZ 870.
4244
4245Fixed a problem with the Scope() operator during table parse and load
4246phase.
4247During load phase (table load or method execution), the scope operator
4248should
4249not enter the target into the namespace. Instead, it should open a new
4250scope
4251at the target location. Linux BZ 19462, ACPICA BZ 882.
4252
4253Example Code and Data Size: These are the sizes for the OS-independent
4254acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4255debug version of the code includes the debug output trace mechanism and
4256has a
4257much larger code and data size.
4258
4259  Previous Release:
4260    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
4261    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
4262  Current Release:
4263    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4264    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4265
42662) iASL Compiler/Disassembler and Tools:
4267
4268iASL: Relax the alphanumeric restriction on _CID strings. These strings
4269are
4270"bus-specific" per the ACPI specification, and therefore any characters
4271are
4272acceptable. The only checks that can be performed are for a null string
4273and
4274perhaps for a leading asterisk. ACPICA BZ 886.
4275
4276iASL: Fixed a problem where a syntax error that caused a premature EOF
4277condition on the source file emitted a very confusing error message. The
4278premature EOF is now detected correctly. ACPICA BZ 891.
4279
4280Disassembler: Decode the AccessSize within a Generic Address Structure
4281(byte
4282access, word access, etc.) Note, this field does not allow arbitrary bit
4283access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
4284
4285New: AcpiNames utility - Example namespace dump utility. Shows an example
4286of
4287ACPICA configuration for a minimal namespace dump utility. Uses table and
4288namespace managers, but no AML interpreter. Does not add any
4289functionality
4290over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
4291partition and configure ACPICA. ACPICA BZ 883.
4292
4293AML Debugger: Increased the debugger buffer size for method return
4294objects.
4295Was 4K, increased to 16K. Also enhanced error messages for debugger
4296method
4297execution, including the buffer overflow case.
4298
4299----------------------------------------
430013 October 2010. Summary of changes for version 20101013:
4301
43021) ACPI CA Core Subsystem:
4303
4304Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
4305now
4306clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
4307HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
4308
4309Changed the type of the predefined namespace object _TZ from ThermalZone
4310to
4311Device. This was found to be confusing to the host software that
4312processes
4313the various thermal zones, since _TZ is not really a ThermalZone.
4314However,
4315a
4316Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
4317Zhang.
4318
4319Added Windows Vista SP2 to the list of supported _OSI strings. The actual
4320string is "Windows 2006 SP2".
4321
4322Eliminated duplicate code in AcpiUtExecute* functions. Now that the
4323nsrepair
4324code automatically repairs _HID-related strings, this type of code is no
4325longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
4326878.
4327
4328Example Code and Data Size: These are the sizes for the OS-independent
4329acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4330debug version of the code includes the debug output trace mechanism and
4331has a
4332much larger code and data size.
4333
4334  Previous Release:
4335    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4336    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4337  Current Release:
4338    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4339    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4340
43412) iASL Compiler/Disassembler and Tools:
4342
4343iASL: Implemented additional compile-time validation for _HID strings.
4344The
4345non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
4346length
4347of
4348the string must be exactly seven or eight characters. For both _HID and
4349_CID
4350strings, all characters must be alphanumeric. ACPICA BZ 874.
4351
4352iASL: Allow certain "null" resource descriptors. Some BIOS code creates
4353descriptors that are mostly or all zeros, with the expectation that they
4354will
4355be filled in at runtime. iASL now allows this as long as there is a
4356"resource
4357tag" (name) associated with the descriptor, which gives the ASL a handle
4358needed to modify the descriptor. ACPICA BZ 873.
4359
4360Added single-thread support to the generic Unix application OSL.
4361Primarily
4362for iASL support, this change removes the use of semaphores in the
4363single-
4364threaded ACPICA tools/applications - increasing performance. The
4365_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
4366option. ACPICA BZ 879.
4367
4368AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
4369support
4370for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
4371
4372iASL: Moved all compiler messages to a new file, aslmessages.h.
4373
4374----------------------------------------
437515 September 2010. Summary of changes for version 20100915:
4376
43771) ACPI CA Core Subsystem:
4378
4379Removed the AcpiOsDerivePciId OSL interface. The various host
4380implementations
4381of this function were not OS-dependent and are now obsolete and can be
4382removed from all host OSLs. This function has been replaced by
4383AcpiHwDerivePciId, which is now part of the ACPICA core code.
4384AcpiHwDerivePciId has been implemented without recursion. Adds one new
4385module, hwpci.c. ACPICA BZ 857.
4386
4387Implemented a dynamic repair for _HID and _CID strings. The following
4388problems are now repaired at runtime: 1) Remove a leading asterisk in the
4389string, and 2) the entire string is uppercased. Both repairs are in
4390accordance with the ACPI specification and will simplify host driver
4391code.
4392ACPICA BZ 871.
4393
4394The ACPI_THREAD_ID type is no longer configurable, internally it is now
4395always UINT64. This simplifies the ACPICA code, especially any printf
4396output.
4397UINT64 is the only common data type for all thread_id types across all
4398operating systems. It is now up to the host OSL to cast the native
4399thread_id
4400type to UINT64 before returning the value to ACPICA (via
4401AcpiOsGetThreadId).
4402Lin Ming, Bob Moore.
4403
4404Added the ACPI_INLINE type to enhance the ACPICA configuration. The
4405"inline"
4406keyword is not standard across compilers, and this type allows inline to
4407be
4408configured on a per-compiler basis. Lin Ming.
4409
4410Made the system global AcpiGbl_SystemAwakeAndRunning publically
4411available.
4412Added an extern for this boolean in acpixf.h. Some hosts utilize this
4413value
4414during suspend/restore operations. ACPICA BZ 869.
4415
4416All code that implements error/warning messages with the "ACPI:" prefix
4417has
4418been moved to a new module, utxferror.c.
4419
4420The UINT64_OVERLAY was moved to utmath.c, which is the only module where
4421it
4422is used. ACPICA BZ 829. Lin Ming, Bob Moore.
4423
4424Example Code and Data Size: These are the sizes for the OS-independent
4425acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4426debug version of the code includes the debug output trace mechanism and
4427has a
4428much larger code and data size.
4429
4430  Previous Release:
4431    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4432    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4433  Current Release:
4434    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4435    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4436
44372) iASL Compiler/Disassembler and Tools:
4438
4439iASL/Disassembler: Write ACPI errors to stderr instead of the output
4440file.
4441This keeps the output files free of random error messages that may
4442originate
4443from within the namespace/interpreter code. Used this opportunity to
4444merge
4445all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
4446866. Lin Ming, Bob Moore.
4447
4448Tools: update some printfs for ansi warnings on size_t. Handle width
4449change
4450of size_t on 32-bit versus 64-bit generations. Lin Ming.
4451
4452----------------------------------------
445306 August 2010. Summary of changes for version 20100806:
4454
44551) ACPI CA Core Subsystem:
4456
4457Designed and implemented a new host interface to the _OSI support code.
4458This
4459will allow the host to dynamically add or remove multiple _OSI strings,
4460as
4461well as install an optional handler that is called for each _OSI
4462invocation.
4463Also added a new AML debugger command, 'osi' to display and modify the
4464global
4465_OSI string table, and test support in the AcpiExec utility. See the
4466ACPICA
4467reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
4468New Functions:
4469    AcpiInstallInterface - Add an _OSI string.
4470    AcpiRemoveInterface - Delete an _OSI string.
4471    AcpiInstallInterfaceHandler - Install optional _OSI handler.
4472Obsolete Functions:
4473    AcpiOsValidateInterface - no longer used.
4474New Files:
4475    source/components/utilities/utosi.c
4476
4477Re-introduced the support to enable multi-byte transfers for Embedded
4478Controller (EC) operation regions. A reported problem was found to be a
4479bug
4480in the host OS, not in the multi-byte support. Previously, the maximum
4481data
4482size passed to the EC operation region handler was a single byte. There
4483are
4484often EC Fields larger than one byte that need to be transferred, and it
4485is
4486useful for the EC driver to lock these as a single transaction. This
4487change
4488enables single transfers larger than 8 bits. This effectively changes the
4489access to the EC space from ByteAcc to AnyAcc, and will probably require
4490changes to the host OS Embedded Controller driver to enable 16/32/64/256-
4491bit
4492transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
4493
4494Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
4495prototype in acpiosxf.h had the output value pointer as a (void *).
4496It should be a (UINT64 *). This may affect some host OSL code.
4497
4498Fixed a couple problems with the recently modified Linux makefiles for
4499iASL
4500and AcpiExec. These new makefiles place the generated object files in the
4501local directory so that there can be no collisions between the files that
4502are
4503shared between them that are compiled with different options.
4504
4505Example Code and Data Size: These are the sizes for the OS-independent
4506acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4507debug version of the code includes the debug output trace mechanism and
4508has a
4509much larger code and data size.
4510
4511  Previous Release:
4512    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4513    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
4514  Current Release:
4515    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4516    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4517
45182) iASL Compiler/Disassembler and Tools:
4519
4520iASL/Disassembler: Added a new option (-da, "disassemble all") to load
4521the
4522namespace from and disassemble an entire group of AML files. Useful for
4523loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
4524and
4525disassembling with one simple command. ACPICA BZ 865. Lin Ming.
4526
4527iASL: Allow multiple invocations of -e option. This change allows
4528multiple
4529uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
4530834.
4531Lin Ming.
4532
4533----------------------------------------
453402 July 2010. Summary of changes for version 20100702:
4535
45361) ACPI CA Core Subsystem:
4537
4538Implemented several updates to the recently added GPE reference count
4539support. The model for "wake" GPEs is changing to give the host OS
4540complete
4541control of these GPEs. Eventually, the ACPICA core will not execute any
4542_PRW
4543methods, since the host already must execute them. Also, additional
4544changes
4545were made to help ensure that the reference counts are kept in proper
4546synchronization with reality. Rafael J. Wysocki.
4547
45481) Ensure that GPEs are not enabled twice during initialization.
45492) Ensure that GPE enable masks stay in sync with the reference count.
45503) Do not inadvertently enable GPEs when writing GPE registers.
45514) Remove the internal wake reference counter and add new AcpiGpeWakeup
4552interface. This interface will set or clear individual GPEs for wakeup.
45535) Remove GpeType argument from AcpiEnable and AcpiDisable. These
4554interfaces
4555are now used for "runtime" GPEs only.
4556
4557Changed the behavior of the GPE install/remove handler interfaces. The
4558GPE
4559is
4560no longer disabled during this process, as it was found to cause problems
4561on
4562some machines. Rafael J. Wysocki.
4563
4564Reverted a change introduced in version 20100528 to enable Embedded
4565Controller multi-byte transfers. This change was found to cause problems
4566with
4567Index Fields and possibly Bank Fields. It will be reintroduced when these
4568problems have been resolved.
4569
4570Fixed a problem with references to Alias objects within Package Objects.
4571A
4572reference to an Alias within the definition of a Package was not always
4573resolved properly. Aliases to objects like Processors, Thermal zones,
4574etc.
4575were resolved to the actual object instead of a reference to the object
4576as
4577it
4578should be. Package objects are only allowed to contain integer, string,
4579buffer, package, and reference objects. Redhat bugzilla 608648.
4580
4581Example Code and Data Size: These are the sizes for the OS-independent
4582acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4583debug version of the code includes the debug output trace mechanism and
4584has a
4585much larger code and data size.
4586
4587  Previous Release:
4588    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4589    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
4590  Current Release:
4591    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4592    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
4593
45942) iASL Compiler/Disassembler and Tools:
4595
4596iASL: Implemented a new compiler subsystem to allow definition and
4597compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
4598These
4599are called "ACPI Data Tables", and the new compiler is the "Data Table
4600Compiler". This compiler is intended to simplify the existing error-prone
4601process of creating these tables for the BIOS, as well as allowing the
4602disassembly, modification, recompilation, and override of existing ACPI
4603data
4604tables. See the iASL User Guide for detailed information.
4605
4606iASL: Implemented a new Template Generator option in support of the new
4607Data
4608Table Compiler. This option will create examples of all known ACPI tables
4609that can be used as the basis for table development. See the iASL
4610documentation and the -T option.
4611
4612Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
4613Descriptor Table).
4614
4615Updated the Linux makefiles for iASL and AcpiExec to place the generated
4616object files in the local directory so that there can be no collisions
4617between the shared files between them that are generated with different
4618options.
4619
4620Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
4621Use
4622the #define __APPLE__ to enable this support.
4623
4624----------------------------------------
462528 May 2010. Summary of changes for version 20100528:
4626
4627Note: The ACPI 4.0a specification was released on April 5, 2010 and is
4628available at www.acpi.info. This is primarily an errata release.
4629
46301) ACPI CA Core Subsystem:
4631
4632Undefined ACPI tables: We are looking for the definitions for the
4633following
4634ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
4635
4636Implemented support to enable multi-byte transfers for Embedded
4637Controller
4638(EC) operation regions. Previously, the maximum data size passed to the
4639EC
4640operation region handler was a single byte. There are often EC Fields
4641larger
4642than one byte that need to be transferred, and it is useful for the EC
4643driver
4644to lock these as a single transaction. This change enables single
4645transfers
4646larger than 8 bits. This effectively changes the access to the EC space
4647from
4648ByteAcc to AnyAcc, and will probably require changes to the host OS
4649Embedded
4650Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
4651bit
4652transfers. Alexey Starikovskiy, Lin Ming
4653
4654Implemented a performance enhancement for namespace search and access.
4655This
4656change enhances the performance of namespace searches and walks by adding
4657a
4658backpointer to the parent in each namespace node. On large namespaces,
4659this
4660change can improve overall ACPI performance by up to 9X. Adding a pointer
4661to
4662each namespace node increases the overall size of the internal namespace
4663by
4664about 5%, since each namespace entry usually consists of both a namespace
4665node and an ACPI operand object. However, this is the first growth of the
4666namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
4667
4668Implemented a performance optimization that reduces the number of
4669namespace
4670walks. On control method exit, only walk the namespace if the method is
4671known
4672to have created namespace objects outside of its local scope. Previously,
4673the
4674entire namespace was traversed on each control method exit. This change
4675can
4676improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
4677Moore.
4678
4679Added support to truncate I/O addresses to 16 bits for Windows
4680compatibility.
4681Some ASL code has been seen in the field that inadvertently has bits set
4682above bit 15. This feature is optional and is enabled if the BIOS
4683requests
4684any Windows OSI strings. It can also be enabled by the host OS. Matthew
4685Garrett, Bob Moore.
4686
4687Added support to limit the maximum time for the ASL Sleep() operator. To
4688prevent accidental deep sleeps, limit the maximum time that Sleep() will
4689actually sleep. Configurable, the default maximum is two seconds. ACPICA
4690bugzilla 854.
4691
4692Added run-time validation support for the _WDG and_WED Microsoft
4693predefined
4694methods. These objects are defined by "Windows Instrumentation", and are
4695not
4696part of the ACPI spec. ACPICA BZ 860.
4697
4698Expanded all statistic counters used during namespace and device
4699initialization from 16 to 32 bits in order to support very large
4700namespaces.
4701
4702Replaced all instances of %d in printf format specifiers with %u since
4703nearly
4704all integers in ACPICA are unsigned.
4705
4706Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
4707returned
4708as AE_NO_HANDLER.
4709
4710Example Code and Data Size: These are the sizes for the OS-independent
4711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4712debug version of the code includes the debug output trace mechanism and
4713has a
4714much larger code and data size.
4715
4716  Previous Release:
4717    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4718    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4719  Current Release:
4720    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4721    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
4722
47232) iASL Compiler/Disassembler and Tools:
4724
4725iASL: Added compiler support for the _WDG and_WED Microsoft predefined
4726methods. These objects are defined by "Windows Instrumentation", and are
4727not
4728part of the ACPI spec. ACPICA BZ 860.
4729
4730AcpiExec: added option to disable the memory tracking mechanism. The -dt
4731option will disable the tracking mechanism, which improves performance
4732considerably.
4733
4734AcpiExec: Restructured the command line options into -d (disable) and -e
4735(enable) options.
4736
4737----------------------------------------
473828 April 2010. Summary of changes for version 20100428:
4739
47401) ACPI CA Core Subsystem:
4741
4742Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
4743including FADT-based and GPE Block Devices, execute any _PRW methods in
4744the
4745new table, and process any _Lxx/_Exx GPE methods in the new table. Any
4746runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
4747immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
4748Devices. Provides compatibility with other ACPI implementations. Two new
4749files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
4750Moore.
4751
4752Fixed a regression introduced in version 20100331 within the table
4753manager
4754where initial table loading could fail. This was introduced in the fix
4755for
4756AcpiReallocateRootTable. Also, renamed some of fields in the table
4757manager
4758data structures to clarify their meaning and use.
4759
4760Fixed a possible allocation overrun during internal object copy in
4761AcpiUtCopySimpleObject. The original code did not correctly handle the
4762case
4763where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
4764847.
4765
4766Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
4767possible access beyond end-of-allocation. Also, now fully validate
4768descriptor
4769(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
4770
4771Example Code and Data Size: These are the sizes for the OS-independent
4772acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4773debug version of the code includes the debug output trace mechanism and
4774has a
4775much larger code and data size.
4776
4777  Previous Release:
4778    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4779    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4780  Current Release:
4781    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4782    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4783
47842) iASL Compiler/Disassembler and Tools:
4785
4786iASL: Implemented Min/Max/Len/Gran validation for address resource
4787descriptors. This change implements validation for the address fields
4788that
4789are common to all address-type resource descriptors. These checks are
4790implemented: Checks for valid Min/Max, length within the Min/Max window,
4791valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
4792per
4793table 6-40 in the ACPI 4.0a specification. Also split the large
4794aslrestype1.c
4795and aslrestype2.c files into five new files. ACPICA BZ 840.
4796
4797iASL: Added support for the _Wxx predefined names. This support was
4798missing
4799and these names were not recognized by the compiler as valid predefined
4800names. ACPICA BZ 851.
4801
4802iASL: Added an error for all predefined names that are defined to return
4803no
4804value and thus must be implemented as Control Methods. These include all
4805of
4806the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
4807names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
4808
4809iASL: Implemented the -ts option to emit hex AML data in ASL format, as
4810an
4811ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
4812be
4813dynamically loaded via the Load() operator. Also cleaned up output for
4814the
4815-
4816ta and -tc options. ACPICA BZ 853.
4817
4818Tests: Added a new file with examples of extended iASL error checking.
4819Demonstrates the advanced error checking ability of the iASL compiler.
4820Available at tests/misc/badcode.asl.
4821
4822----------------------------------------
482331 March 2010. Summary of changes for version 20100331:
4824
48251) ACPI CA Core Subsystem:
4826
4827Completed a major update for the GPE support in order to improve support
4828for
4829shared GPEs and to simplify both host OS and ACPICA code. Added a
4830reference
4831count mechanism to support shared GPEs that require multiple device
4832drivers.
4833Several external interfaces have changed. One external interface has been
4834removed. One new external interface was added. Most of the GPE external
4835interfaces now use the GPE spinlock instead of the events mutex (and the
4836Flags parameter for many GPE interfaces has been removed.) See the
4837updated
4838ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
4839Rafael
4840Wysocki. ACPICA BZ 831.
4841
4842Changed:
4843    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
4844Removed:
4845    AcpiSetGpeType
4846New:
4847    AcpiSetGpe
4848
4849Implemented write support for DataTable operation regions. These regions
4850are
4851defined via the DataTableRegion() operator. Previously, only read support
4852was
4853implemented. The ACPI specification allows DataTableRegions to be
4854read/write,
4855however.
4856
4857Implemented a new subsystem option to force a copy of the DSDT to local
4858memory. Optionally copy the entire DSDT to local memory (instead of
4859simply
4860mapping it.) There are some (albeit very rare) BIOSs that corrupt or
4861replace
4862the original DSDT, creating the need for this option. Default is FALSE,
4863do
4864not copy the DSDT.
4865
4866Implemented detection of a corrupted or replaced DSDT. This change adds
4867support to detect a DSDT that has been corrupted and/or replaced from
4868outside
4869the OS (by firmware). This is typically catastrophic for the system, but
4870has
4871been seen on some machines. Once this problem has been detected, the DSDT
4872copy option can be enabled via system configuration. Lin Ming, Bob Moore.
4873
4874Fixed two problems with AcpiReallocateRootTable during the root table
4875copy.
4876When copying the root table to the new allocation, the length used was
4877incorrect. The new size was used instead of the current table size,
4878meaning
4879too much data was copied. Also, the count of available slots for ACPI
4880tables
4881was not set correctly. Alexey Starikovskiy, Bob Moore.
4882
4883Example Code and Data Size: These are the sizes for the OS-independent
4884acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4885debug version of the code includes the debug output trace mechanism and
4886has a
4887much larger code and data size.
4888
4889  Previous Release:
4890    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4891    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4892  Current Release:
4893    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4894    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4895
48962) iASL Compiler/Disassembler and Tools:
4897
4898iASL: Implement limited typechecking for values returned from predefined
4899control methods. The type of any returned static (unnamed) object is now
4900validated. For example, Return(1). ACPICA BZ 786.
4901
4902iASL: Fixed a predefined name object verification regression. Fixes a
4903problem
4904introduced in version 20100304. An error is incorrectly generated if a
4905predefined name is declared as a static named object with a value defined
4906using the keywords "Zero", "One", or "Ones". Lin Ming.
4907
4908iASL: Added Windows 7 support for the -g option (get local ACPI tables)
4909by
4910reducing the requested registry access rights. ACPICA BZ 842.
4911
4912Disassembler: fixed a possible fault when generating External()
4913statements.
4914Introduced in commit ae7d6fd: Properly handle externals with parent-
4915prefix
4916(carat). Fixes a string length allocation calculation. Lin Ming.
4917
4918----------------------------------------
491904 March 2010. Summary of changes for version 20100304:
4920
49211) ACPI CA Core Subsystem:
4922
4923Fixed a possible problem with the AML Mutex handling function
4924AcpiExReleaseMutex where the function could fault under the very rare
4925condition when the interpreter has blocked, the interpreter lock is
4926released,
4927the interpreter is then reentered via the same thread, and attempts to
4928acquire an AML mutex that was previously acquired. FreeBSD report 140979.
4929Lin
4930Ming.
4931
4932Implemented additional configuration support for the AML "Debug Object".
4933Output from the debug object can now be enabled via a global variable,
4934AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
4935debugging.
4936This debug output is now available in the release version of ACPICA
4937instead
4938of just the debug version. Also, the entire debug output module can now
4939be
4940configured out of the ACPICA build if desired. One new file added,
4941executer/exdebug.c. Lin Ming, Bob Moore.
4942
4943Added header support for the ACPI MCHI table (Management Controller Host
4944Interface Table). This table was added in ACPI 4.0, but the defining
4945document
4946has only recently become available.
4947
4948Standardized output of integer values for ACPICA warnings/errors. Always
4949use
49500x prefix for hex output, always use %u for unsigned integer decimal
4951output.
4952Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
4953400
4954invocations.) These invocations were converted from the original
4955ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
4956
4957Example Code and Data Size: These are the sizes for the OS-independent
4958acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4959debug version of the code includes the debug output trace mechanism and
4960has a
4961much larger code and data size.
4962
4963  Previous Release:
4964    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4965    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4966  Current Release:
4967    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4968    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4969
49702) iASL Compiler/Disassembler and Tools:
4971
4972iASL: Implemented typechecking support for static (non-control method)
4973predefined named objects that are declared with the Name() operator. For
4974example, the type of this object is now validated to be of type Integer:
4975Name(_BBN, 1). This change migrates the compiler to using the core
4976predefined
4977name table instead of maintaining a local version. Added a new file,
4978aslpredef.c. ACPICA BZ 832.
4979
4980Disassembler: Added support for the ACPI 4.0 MCHI table.
4981
4982----------------------------------------
498321 January 2010. Summary of changes for version 20100121:
4984
49851) ACPI CA Core Subsystem:
4986
4987Added the 2010 copyright to all module headers and signons. This affects
4988virtually every file in the ACPICA core subsystem, the iASL compiler, the
4989tools/utilities, and the test suites.
4990
4991Implemented a change to the AcpiGetDevices interface to eliminate
4992unnecessary
4993invocations of the _STA method. In the case where a specific _HID is
4994requested, do not run _STA until a _HID match is found. This eliminates
4995potentially dozens of _STA calls during a search for a particular
4996device/HID,
4997which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
4998
4999Implemented an additional repair for predefined method return values.
5000Attempt
5001to repair unexpected NULL elements within returned Package objects.
5002Create
5003an
5004Integer of value zero, a NULL String, or a zero-length Buffer as
5005appropriate.
5006ACPICA BZ 818. Lin Ming, Bob Moore.
5007
5008Removed the obsolete ACPI_INTEGER data type. This type was introduced as
5009the
5010code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
5011(with
501264-bit AML integers). It is now obsolete and this change removes it from
5013the
5014ACPICA code base, replaced by UINT64. The original typedef has been
5015retained
5016for now for compatibility with existing device driver code. ACPICA BZ
5017824.
5018
5019Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
5020in
5021the parse tree object.
5022
5023Added additional warning options for the gcc-4 generation. Updated the
5024source
5025accordingly. This includes some code restructuring to eliminate
5026unreachable
5027code, elimination of some gotos, elimination of unused return values,
5028some
5029additional casting, and removal of redundant declarations.
5030
5031Example Code and Data Size: These are the sizes for the OS-independent
5032acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5033debug version of the code includes the debug output trace mechanism and
5034has a
5035much larger code and data size.
5036
5037  Previous Release:
5038    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
5039    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
5040  Current Release:
5041    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
5042    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
5043
50442) iASL Compiler/Disassembler and Tools:
5045
5046No functional changes for this release.
5047
5048----------------------------------------
504914 December 2009. Summary of changes for version 20091214:
5050
50511) ACPI CA Core Subsystem:
5052
5053Enhanced automatic data type conversions for predefined name repairs.
5054This
5055change expands the automatic repairs/conversions for predefined name
5056return
5057values to make Integers, Strings, and Buffers fully interchangeable.
5058Also,
5059a
5060Buffer can be converted to a Package of Integers if necessary. The
5061nsrepair.c
5062module was completely restructured. Lin Ming, Bob Moore.
5063
5064Implemented automatic removal of null package elements during predefined
5065name
5066repairs. This change will automatically remove embedded and trailing NULL
5067package elements from returned package objects that are defined to
5068contain
5069a
5070variable number of sub-packages. The driver is then presented with a
5071package
5072with no null elements to deal with. ACPICA BZ 819.
5073
5074Implemented a repair for the predefined _FDE and _GTM names. The expected
5075return value for both names is a Buffer of 5 DWORDs. This repair fixes
5076two
5077possible problems (both seen in the field), where a package of integers
5078is
5079returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
5080Kim.
5081
5082Implemented additional module-level code support. This change will
5083properly
5084execute module-level code that is not at the root of the namespace (under
5085a
5086Device object, etc.). Now executes the code within the current scope
5087instead
5088of the root. ACPICA BZ 762. Lin Ming.
5089
5090Fixed possible mutex acquisition errors when running _REG methods. Fixes
5091a
5092problem where mutex errors can occur when running a _REG method that is
5093in
5094the same scope as a method-defined operation region or an operation
5095region
5096under a module-level IF block. This type of code is rare, so the problem
5097has
5098not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
5099
5100Fixed a possible memory leak during module-level code execution. An
5101object
5102could be leaked for each block of executed module-level code if the
5103interpreter slack mode is enabled This change deletes any implicitly
5104returned
5105object from the module-level code block. Lin Ming.
5106
5107Removed messages for successful predefined repair(s). The repair
5108mechanism
5109was considered too wordy. Now, messages are only unconditionally emitted
5110if
5111the return object cannot be repaired. Existing messages for successful
5112repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
5113827.
5114
5115Example Code and Data Size: These are the sizes for the OS-independent
5116acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5117debug version of the code includes the debug output trace mechanism and
5118has a
5119much larger code and data size.
5120
5121  Previous Release:
5122    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
5123    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
5124  Current Release:
5125    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
5126    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
5127
51282) iASL Compiler/Disassembler and Tools:
5129
5130iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
5131files
5132were no longer automatically removed at the termination of the compile.
5133
5134acpiexec: Implemented the -f option to specify default region fill value.
5135This option specifies the value used to initialize buffers that simulate
5136operation regions. Default value is zero. Useful for debugging problems
5137that
5138depend on a specific initial value for a region or field.
5139
5140----------------------------------------
514112 November 2009. Summary of changes for version 20091112:
5142
51431) ACPI CA Core Subsystem:
5144
5145Implemented a post-order callback to AcpiWalkNamespace. The existing
5146interface only has a pre-order callback. This change adds an additional
5147parameter for a post-order callback which will be more useful for bus
5148scans.
5149ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
5150
5151Modified the behavior of the operation region memory mapping cache for
5152SystemMemory. Ensure that the memory mappings created for operation
5153regions
5154do not cross 4K page boundaries. Crossing a page boundary while mapping
5155regions can cause kernel warnings on some hosts if the pages have
5156different
5157attributes. Such regions are probably BIOS bugs, and this is the
5158workaround.
5159Linux BZ 14445. Lin Ming.
5160
5161Implemented an automatic repair for predefined methods that must return
5162sorted lists. This change will repair (by sorting) packages returned by
5163_ALR,
5164_PSS, and _TSS. Drivers can now assume that the packages are correctly
5165sorted
5166and do not contain NULL package elements. Adds one new file,
5167namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
5168
5169Fixed a possible fault during predefined name validation if a return
5170Package
5171object contains NULL elements. Also adds a warning if a NULL element is
5172followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
5173may
5174include repair or removal of all such NULL elements where possible.
5175
5176Implemented additional module-level executable AML code support. This
5177change
5178will execute module-level code that is not at the root of the namespace
5179(under a Device object, etc.) at table load time. Module-level executable
5180AML
5181code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
5182
5183Implemented a new internal function to create Integer objects. This
5184function
5185simplifies miscellaneous object creation code. ACPICA BZ 823.
5186
5187Reduced the severity of predefined repair messages, Warning to Info.
5188Since
5189the object was successfully repaired, a warning is too severe. Reduced to
5190an
5191info message for now. These messages may eventually be changed to debug-
5192only.
5193ACPICA BZ 812.
5194
5195Example Code and Data Size: These are the sizes for the OS-independent
5196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5197debug version of the code includes the debug output trace mechanism and
5198has a
5199much larger code and data size.
5200
5201  Previous Release:
5202    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
5203    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
5204  Current Release:
5205    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
5206    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
5207
52082) iASL Compiler/Disassembler and Tools:
5209
5210iASL: Implemented Switch() with While(1) so that Break works correctly.
5211This
5212change correctly implements the Switch operator with a surrounding
5213While(1)
5214so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
5215
5216iASL: Added a message if a package initializer list is shorter than
5217package
5218length. Adds a new remark for a Package() declaration if an initializer
5219list
5220exists, but is shorter than the declared length of the package. Although
5221technically legal, this is probably a coding error and it is seen in the
5222field. ACPICA BZ 815. Lin Ming, Bob Moore.
5223
5224iASL: Fixed a problem where the compiler could fault after the maximum
5225number
5226of errors was reached (200).
5227
5228acpixtract: Fixed a possible warning for pointer cast if the compiler
5229warning
5230level set very high.
5231
5232----------------------------------------
523313 October 2009. Summary of changes for version 20091013:
5234
52351) ACPI CA Core Subsystem:
5236
5237Fixed a problem where an Operation Region _REG method could be executed
5238more
5239than once. If a custom address space handler is installed by the host
5240before
5241the "initialize operation regions" phase of the ACPICA initialization,
5242any
5243_REG methods for that address space could be executed twice. This change
5244fixes the problem. ACPICA BZ 427. Lin Ming.
5245
5246Fixed a possible memory leak for the Scope() ASL operator. When the exact
5247invocation of "Scope(\)" is executed (change scope to root), one internal
5248operand object was leaked. Lin Ming.
5249
5250Implemented a run-time repair for the _MAT predefined method. If the _MAT
5251return value is defined as a Field object in the AML, and the field
5252size is less than or equal to the default width of an integer (32 or
525364),_MAT
5254can incorrectly return an Integer instead of a Buffer. ACPICA now
5255automatically repairs this problem. ACPICA BZ 810.
5256
5257Implemented a run-time repair for the _BIF and _BIX predefined methods.
5258The
5259"OEM Information" field is often incorrectly returned as an Integer with
5260value zero if the field is not supported by the platform. This is due to
5261an
5262ambiguity in the ACPI specification. The field should always be a string.
5263ACPICA now automatically repairs this problem by returning a NULL string
5264within the returned Package. ACPICA BZ 807.
5265
5266Example Code and Data Size: These are the sizes for the OS-independent
5267acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5268debug version of the code includes the debug output trace mechanism and
5269has a
5270much larger code and data size.
5271
5272  Previous Release:
5273    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
5274    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
5275  Current Release:
5276    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
5277    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
5278
52792) iASL Compiler/Disassembler and Tools:
5280
5281Disassembler: Fixed a problem where references to external symbols that
5282contained one or more parent-prefixes (carats) were not handled
5283correctly,
5284possibly causing a fault. ACPICA BZ 806. Lin Ming.
5285
5286Disassembler: Restructured the code so that all functions that handle
5287external symbols are in a single module. One new file is added,
5288common/dmextern.c.
5289
5290AML Debugger: Added a max count argument for the Batch command (which
5291executes multiple predefined methods within the namespace.)
5292
5293iASL: Updated the compiler documentation (User Reference.) Available at
5294http://www.acpica.org/documentation/. ACPICA BZ 750.
5295
5296AcpiXtract: Updated for Lint and other formatting changes. Close all open
5297files.
5298
5299----------------------------------------
530003 September 2009. Summary of changes for version 20090903:
5301
53021) ACPI CA Core Subsystem:
5303
5304For Windows Vista compatibility, added the automatic execution of an _INI
5305method located at the namespace root (\_INI). This method is executed at
5306table load time. This support is in addition to the automatic execution
5307of
5308\_SB._INI. Lin Ming.
5309
5310Fixed a possible memory leak in the interpreter for AML package objects
5311if
5312the package initializer list is longer than the defined size of the
5313package.
5314This apparently can only happen if the BIOS changes the package size on
5315the
5316fly (seen in a _PSS object), as ASL compilers do not allow this. The
5317interpreter will truncate the package to the defined size (and issue an
5318error
5319message), but previously could leave the extra objects undeleted if they
5320were
5321pre-created during the argument processing (such is the case if the
5322package
5323consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
5324
5325Fixed a problem seen when a Buffer or String is stored to itself via ASL.
5326This has been reported in the field. Previously, ACPICA would zero out
5327the
5328buffer/string. Now, the operation is treated as a noop. Provides Windows
5329compatibility. ACPICA BZ 803. Lin Ming.
5330
5331Removed an extraneous error message for ASL constructs of the form
5332Store(LocalX,LocalX) when LocalX is uninitialized. These curious
5333statements
5334are seen in many BIOSs and are once again treated as NOOPs and no error
5335is
5336emitted when they are encountered. ACPICA BZ 785.
5337
5338Fixed an extraneous warning message if a _DSM reserved method returns a
5339Package object. _DSM can return any type of object, so validation on the
5340return type cannot be performed. ACPICA BZ 802.
5341
5342Example Code and Data Size: These are the sizes for the OS-independent
5343acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5344debug version of the code includes the debug output trace mechanism and
5345has a
5346much larger code and data size.
5347
5348  Previous Release:
5349    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
5350    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
5351  Current Release:
5352    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
5353    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
5354
53552) iASL Compiler/Disassembler and Tools:
5356
5357iASL: Fixed a problem with the use of the Alias operator and Resource
5358Templates. The correct alias is now constructed and no error is emitted.
5359ACPICA BZ 738.
5360
5361iASL: Implemented the -I option to specify additional search directories
5362for
5363include files. Allows multiple additional search paths for include files.
5364Directories are searched in the order specified on the command line
5365(after
5366the local directory is searched.) ACPICA BZ 800.
5367
5368iASL: Fixed a problem where the full pathname for include files was not
5369emitted for warnings/errors. This caused the IDE support to not work
5370properly. ACPICA BZ 765.
5371
5372iASL: Implemented the -@ option to specify a Windows-style response file
5373containing additional command line options. ACPICA BZ 801.
5374
5375AcpiExec: Added support to load multiple AML files simultaneously (such
5376as
5377a
5378DSDT and multiple SSDTs). Also added support for wildcards within the AML
5379pathname. These features allow all machine tables to be easily loaded and
5380debugged together. ACPICA BZ 804.
5381
5382Disassembler: Added missing support for disassembly of HEST table Error
5383Bank
5384subtables.
5385
5386----------------------------------------
538730 July 2009. Summary of changes for version 20090730:
5388
5389The ACPI 4.0 implementation for ACPICA is complete with this release.
5390
53911) ACPI CA Core Subsystem:
5392
5393ACPI 4.0: Added header file support for all new and changed ACPI tables.
5394Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
5395new
5396for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
5397BERT,
5398EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
5399There
5400have been some ACPI 4.0 changes to other existing tables. Split the large
5401actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
5402
5403ACPI 4.0: Implemented predefined name validation for all new names. There
5404are
540531 new names in ACPI 4.0. The predefined validation module was split into
5406two
5407files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
5408
5409Implemented support for so-called "module-level executable code". This is
5410executable AML code that exists outside of any control method and is
5411intended
5412to be executed at table load time. Although illegal since ACPI 2.0, this
5413type
5414of code still exists and is apparently still being created. Blocks of
5415this
5416code are now detected and executed as intended. Currently, the code
5417blocks
5418must exist under either an If, Else, or While construct; these are the
5419typical cases seen in the field. ACPICA BZ 762. Lin Ming.
5420
5421Implemented an automatic dynamic repair for predefined names that return
5422nested Package objects. This applies to predefined names that are defined
5423to
5424return a variable-length Package of sub-packages. If the number of sub-
5425packages is one, BIOS code is occasionally seen that creates a simple
5426single
5427package with no sub-packages. This code attempts to fix the problem by
5428wrapping a new package object around the existing package. These methods
5429can
5430be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
5431BZ
5432790.
5433
5434Fixed a regression introduced in 20090625 for the AcpiGetDevices
5435interface.
5436The _HID/_CID matching was broken and no longer matched IDs correctly.
5437ACPICA
5438BZ 793.
5439
5440Fixed a problem with AcpiReset where the reset would silently fail if the
5441register was one of the protected I/O ports. AcpiReset now bypasses the
5442port
5443validation mechanism. This may eventually be driven into the
5444AcpiRead/Write
5445interfaces.
5446
5447Fixed a regression related to the recent update of the AcpiRead/Write
5448interfaces. A sleep/suspend could fail if the optional PM2 Control
5449register
5450does not exist during an attempt to write the Bus Master Arbitration bit.
5451(However, some hosts already delete the code that writes this bit, and
5452the
5453code may in fact be obsolete at this date.) ACPICA BZ 799.
5454
5455Fixed a problem where AcpiTerminate could fault if inadvertently called
5456twice
5457in succession. ACPICA BZ 795.
5458
5459Example Code and Data Size: These are the sizes for the OS-independent
5460acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5461debug version of the code includes the debug output trace mechanism and
5462has a
5463much larger code and data size.
5464
5465  Previous Release:
5466    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5467    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
5468  Current Release:
5469    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
5470    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
5471
54722) iASL Compiler/Disassembler and Tools:
5473
5474ACPI 4.0: Implemented disassembler support for all new ACPI tables and
5475changes to existing tables. ACPICA BZ 775.
5476
5477----------------------------------------
547825 June 2009. Summary of changes for version 20090625:
5479
5480The ACPI 4.0 Specification was released on June 16 and is available at
5481www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
5482continue for the next few releases.
5483
54841) ACPI CA Core Subsystem:
5485
5486ACPI 4.0: Implemented interpreter support for the IPMI operation region
5487address space. Includes support for bi-directional data buffers and an
5488IPMI
5489address space handler (to be installed by an IPMI device driver.) ACPICA
5490BZ
5491773. Lin Ming.
5492
5493ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
5494Includes
5495support in both the header files and the disassembler.
5496
5497Completed a major update for the AcpiGetObjectInfo external interface.
5498Changes include:
5499 - Support for variable, unlimited length HID, UID, and CID strings.
5500 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
5501etc.)
5502 - Call the _SxW power methods on behalf of a device object.
5503 - Determine if a device is a PCI root bridge.
5504 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
5505These changes will require an update to all callers of this interface.
5506See
5507the updated ACPICA Programmer Reference for details. One new source file
5508has
5509been added - utilities/utids.c. ACPICA BZ 368, 780.
5510
5511Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
5512transfers. The Value parameter has been extended from 32 bits to 64 bits
5513in
5514order to support new ACPI 4.0 tables. These changes will require an
5515update
5516to
5517all callers of these interfaces. See the ACPICA Programmer Reference for
5518details. ACPICA BZ 768.
5519
5520Fixed several problems with AcpiAttachData. The handler was not invoked
5521when
5522the host node was deleted. The data sub-object was not automatically
5523deleted
5524when the host node was deleted. The interface to the handler had an
5525unused
5526parameter, this was removed. ACPICA BZ 778.
5527
5528Enhanced the function that dumps ACPI table headers. All non-printable
5529characters in the string fields are now replaced with '?' (Signature,
5530OemId,
5531OemTableId, and CompilerId.) ACPI tables with non-printable characters in
5532these fields are occasionally seen in the field. ACPICA BZ 788.
5533
5534Fixed a problem with predefined method repair code where the code that
5535attempts to repair/convert an object of incorrect type is only executed
5536on
5537the first time the predefined method is called. The mechanism that
5538disables
5539warnings on subsequent calls was interfering with the repair mechanism.
5540ACPICA BZ 781.
5541
5542Fixed a possible memory leak in the predefined validation/repair code
5543when
5544a
5545buffer is automatically converted to an expected string object.
5546
5547Removed obsolete 16-bit files from the distribution and from the current
5548git
5549tree head. ACPICA BZ 776.
5550
5551Example Code and Data Size: These are the sizes for the OS-independent
5552acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5553debug version of the code includes the debug output trace mechanism and
5554has a
5555much larger code and data size.
5556
5557  Previous Release:
5558    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5559    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5560  Current Release:
5561    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5562    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
5563
55642) iASL Compiler/Disassembler and Tools:
5565
5566ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
5567operation region keyword. ACPICA BZ 771, 772. Lin Ming.
5568
5569ACPI 4.0: iASL - implemented compile-time validation support for all new
5570predefined names and control methods (31 total). ACPICA BZ 769.
5571
5572----------------------------------------
557321 May 2009. Summary of changes for version 20090521:
5574
55751) ACPI CA Core Subsystem:
5576
5577Disabled the preservation of the SCI enable bit in the PM1 control
5578register.
5579The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
5580to
5581be
5582a "preserved" bit - "OSPM always preserves this bit position", section
55834.7.3.2.1. However, some machines fail if this bit is in fact preserved
5584because the bit needs to be explicitly set by the OS as a workaround. No
5585machines fail if the bit is not preserved. Therefore, ACPICA no longer
5586attempts to preserve this bit.
5587
5588Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
5589incorrectly formed _PRT package could cause a fault. Added validation to
5590ensure that each package element is actually a sub-package.
5591
5592Implemented a new interface to install or override a single control
5593method,
5594AcpiInstallMethod. This interface is useful when debugging in order to
5595repair
5596an existing method or to install a missing method without having to
5597override
5598the entire ACPI table. See the ACPICA Programmer Reference for use and
5599examples. Lin Ming, Bob Moore.
5600
5601Fixed several reference count issues with the DdbHandle object that is
5602created from a Load or LoadTable operator. Prevent premature deletion of
5603the
5604object. Also, mark the object as invalid once the table has been
5605unloaded.
5606This is needed because the handle itself may not be deleted after the
5607table
5608unload, depending on whether it has been stored in a named object by the
5609caller. Lin Ming.
5610
5611Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
5612mutexes of the same sync level are acquired but then not released in
5613strict
5614opposite order, the internally maintained Current Sync Level becomes
5615confused
5616and can cause subsequent execution errors. ACPICA BZ 471.
5617
5618Changed the allowable release order for ASL mutex objects. The ACPI 4.0
5619specification has been changed to make the SyncLevel for mutex objects
5620more
5621useful. When releasing a mutex, the SyncLevel of the mutex must now be
5622the
5623same as the current sync level. This makes more sense than the previous
5624rule
5625(SyncLevel less than or equal). This change updates the code to match the
5626specification.
5627
5628Fixed a problem with the local version of the AcpiOsPurgeCache function.
5629The
5630(local) cache must be locked during all cache object deletions. Andrew
5631Baumann.
5632
5633Updated the Load operator to use operation region interfaces. This
5634replaces
5635direct memory mapping with region access calls. Now, all region accesses
5636go
5637through the installed region handler as they should.
5638
5639Simplified and optimized the NsGetNextNode function. Reduced parameter
5640count
5641and reduced code for this frequently used function.
5642
5643Example Code and Data Size: These are the sizes for the OS-independent
5644acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5645debug version of the code includes the debug output trace mechanism and
5646has a
5647much larger code and data size.
5648
5649  Previous Release:
5650    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5651    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5652  Current Release:
5653    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5654    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5655
56562) iASL Compiler/Disassembler and Tools:
5657
5658Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
5659problems
5660with sub-table disassembly and handling invalid sub-tables. Attempt
5661recovery
5662after an invalid sub-table ID.
5663
5664----------------------------------------
566522 April 2009. Summary of changes for version 20090422:
5666
56671) ACPI CA Core Subsystem:
5668
5669Fixed a compatibility issue with the recently released I/O port
5670protection
5671mechanism. For windows compatibility, 1) On a port protection violation,
5672simply ignore the request and do not return an exception (allow the
5673control
5674method to continue execution.) 2) If only part of the request overlaps a
5675protected port, read/write the individual ports that are not protected.
5676Linux
5677BZ 13036. Lin Ming
5678
5679Enhanced the execution of the ASL/AML BreakPoint operator so that it
5680actually
5681breaks into the AML debugger if the debugger is present. This matches the
5682ACPI-defined behavior.
5683
5684Fixed several possible warnings related to the use of the configurable
5685ACPI_THREAD_ID. This type can now be configured as either an integer or a
5686pointer with no warnings. Also fixes several warnings in printf-like
5687statements for the 64-bit build when the type is configured as a pointer.
5688ACPICA BZ 766, 767.
5689
5690Fixed a number of possible warnings when compiling with gcc 4+ (depending
5691on
5692warning options.) Examples include printf formats, aliasing, unused
5693globals,
5694missing prototypes, missing switch default statements, use of non-ANSI
5695library functions, use of non-ANSI constructs. See generate/unix/Makefile
5696for
5697a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
5698
5699Example Code and Data Size: These are the sizes for the OS-independent
5700acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5701debug version of the code includes the debug output trace mechanism and
5702has a
5703much larger code and data size.
5704
5705  Previous Release:
5706    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5707    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5708  Current Release:
5709    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5710    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5711
57122) iASL Compiler/Disassembler and Tools:
5713
5714iASL: Fixed a generation warning from Bison 2.3 and fixed several
5715warnings
5716on
5717the 64-bit build.
5718
5719iASL: Fixed a problem where the Unix/Linux versions of the compiler could
5720not
5721correctly digest Windows/DOS formatted files (with CR/LF).
5722
5723iASL: Added a new option for "quiet mode" (-va) that produces only the
5724compilation summary, not individual errors and warnings. Useful for large
5725batch compilations.
5726
5727AcpiExec: Implemented a new option (-z) to enable a forced
5728semaphore/mutex
5729timeout that can be used to detect hang conditions during execution of
5730AML
5731code (includes both internal semaphores and AML-defined mutexes and
5732events.)
5733
5734Added new makefiles for the generation of acpica in a generic unix-like
5735environment. These makefiles are intended to generate the acpica tools
5736and
5737utilities from the original acpica git source tree structure.
5738
5739Test Suites: Updated and cleaned up the documentation files. Updated the
5740copyrights to 2009, affecting all source files. Use the new version of
5741iASL
5742with quiet mode. Increased the number of available semaphores in the
5743Windows
5744OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
5745added
5746an alternate implementation of the semaphore timeout to allow aslts to
5747execute fully on Cygwin.
5748
5749----------------------------------------
575020 March 2009. Summary of changes for version 20090320:
5751
57521) ACPI CA Core Subsystem:
5753
5754Fixed a possible race condition between AcpiWalkNamespace and dynamic
5755table
5756unloads. Added a reader/writer locking mechanism to allow multiple
5757concurrent
5758namespace walks (readers), but block a dynamic table unload until it can
5759gain
5760exclusive write access to the namespace. This fixes a problem where a
5761table
5762unload could (possibly catastrophically) delete the portion of the
5763namespace
5764that is currently being examined by a walk. Adds a new file, utlock.c,
5765that
5766implements the reader/writer lock mechanism. ACPICA BZ 749.
5767
5768Fixed a regression introduced in version 20090220 where a change to the
5769FADT
5770handling could cause the ACPICA subsystem to access non-existent I/O
5771ports.
5772
5773Modified the handling of FADT register and table (FACS/DSDT) addresses.
5774The
5775FADT can contain both 32-bit and 64-bit versions of these addresses.
5776Previously, the 64-bit versions were favored, meaning that if both 32 and
577764
5778versions were valid, but not equal, the 64-bit version was used. This was
5779found to cause some machines to fail. Now, in this case, the 32-bit
5780version
5781is used instead. This now matches the Windows behavior.
5782
5783Implemented a new mechanism to protect certain I/O ports. Provides
5784Microsoft
5785compatibility and protects the standard PC I/O ports from access via AML
5786code. Adds a new file, hwvalid.c
5787
5788Fixed a possible extraneous warning message from the FADT support. The
5789message warns of a 32/64 length mismatch between the legacy and GAS
5790definitions for a register.
5791
5792Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
5793is
5794made obsolete by the port protection mechanism above. It was previously
5795used
5796to validate the entire address range of an operation region, which could
5797be
5798incorrect if the range included illegal ports, but fields within the
5799operation region did not actually access those ports. Validation is now
5800performed on a per-field basis instead of the entire region.
5801
5802Modified the handling of the PM1 Status Register ignored bit (bit 11.)
5803Ignored bits must be "preserved" according to the ACPI spec. Usually,
5804this
5805means a read/modify/write when writing to the register. However, for
5806status
5807registers, writing a one means clear the event. Writing a zero means
5808preserve
5809the event (do not clear.) This behavior is clarified in the ACPI 4.0
5810spec,
5811and the ACPICA code now simply always writes a zero to the ignored bit.
5812
5813Modified the handling of ignored bits for the PM1 A/B Control Registers.
5814As
5815per the ACPI specification, for the control registers, preserve
5816(read/modify/write) all bits that are defined as either reserved or
5817ignored.
5818
5819Updated the handling of write-only bits in the PM1 A/B Control Registers.
5820When reading the register, zero the write-only bits as per the ACPI spec.
5821ACPICA BZ 443. Lin Ming.
5822
5823Removed "Linux" from the list of supported _OSI strings. Linux no longer
5824wants to reply true to this request. The Windows strings are the only
5825paths
5826through the AML that are tested and known to work properly.
5827
5828  Previous Release:
5829    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5830    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5831  Current Release:
5832    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5833    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5834
58352) iASL Compiler/Disassembler and Tools:
5836
5837Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
5838and
5839aetables.c
5840
5841----------------------------------------
584220 February 2009. Summary of changes for version 20090220:
5843
58441) ACPI CA Core Subsystem:
5845
5846Optimized the ACPI register locking. Removed locking for reads from the
5847ACPI
5848bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
5849is
5850not required when reading the single-bit registers. The
5851AcpiGetRegisterUnlocked function is no longer needed and has been
5852removed.
5853This will improve performance for reads on these registers. ACPICA BZ
5854760.
5855
5856Fixed the parameter validation for AcpiRead/Write. Now return
5857AE_BAD_PARAMETER if the input register pointer is null, and
5858AE_BAD_ADDRESS
5859if
5860the register has an address of zero. Previously, these cases simply
5861returned
5862AE_OK. For optional registers such as PM1B status/enable/control, the
5863caller
5864should check for a valid register address before calling. ACPICA BZ 748.
5865
5866Renamed the external ACPI bit register access functions. Renamed
5867AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
5868functions. The new names are AcpiReadBitRegister and
5869AcpiWriteBitRegister.
5870Also, restructured the code for these functions by simplifying the code
5871path
5872and condensing duplicate code to reduce code size.
5873
5874Added new functions to transparently handle the possibly split PM1 A/B
5875registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
5876functions
5877now handle the split registers for PM1 Status, Enable, and Control.
5878ACPICA
5879BZ
5880746.
5881
5882Added a function to handle the PM1 control registers,
5883AcpiHwWritePm1Control.
5884This function writes both of the PM1 control registers (A/B). These
5885registers
5886are different than the PM1 A/B status and enable registers in that
5887different
5888values can be written to the A/B registers. Most notably, the SLP_TYP
5889bits
5890can be different, as per the values returned from the _Sx predefined
5891methods.
5892
5893Removed an extra register write within AcpiHwClearAcpiStatus. This
5894function
5895was writing an optional PM1B status register twice. The existing call to
5896the
5897low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
5898A/B
5899register. ACPICA BZ 751.
5900
5901Split out the PM1 Status registers from the FADT. Added new globals for
5902these
5903registers (A/B), similar to the way the PM1 Enable registers are handled.
5904Instead of overloading the FADT Event Register blocks. This makes the
5905code
5906clearer and less prone to error.
5907
5908Fixed the warning message for when the platform contains too many ACPI
5909tables
5910for the default size of the global root table data structure. The
5911calculation
5912for the truncation value was incorrect.
5913
5914Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
5915obsolete macro, since it is now a simple reference to ->common.type.
5916There
5917were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
5918
5919Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
5920TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
5921simply SLEEP_TYPE. ACPICA BZ 754.
5922
5923Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
5924function is only needed on 64-bit host operating systems and is thus not
5925included for 32-bit hosts.
5926
5927Debug output: print the input and result for invocations of the _OSI
5928reserved
5929control method via the ACPI_LV_INFO debug level. Also, reduced some of
5930the
5931verbosity of this debug level. Len Brown.
5932
5933Example Code and Data Size: These are the sizes for the OS-independent
5934acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5935debug version of the code includes the debug output trace mechanism and
5936has a
5937much larger code and data size.
5938
5939  Previous Release:
5940    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5941    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5942  Current Release:
5943    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5944    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5945
59462) iASL Compiler/Disassembler and Tools:
5947
5948Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
5949various legal performance profiles.
5950
5951----------------------------------------
595223 January 2009. Summary of changes for version 20090123:
5953
59541) ACPI CA Core Subsystem:
5955
5956Added the 2009 copyright to all module headers and signons. This affects
5957virtually every file in the ACPICA core subsystem, the iASL compiler, and
5958the tools/utilities.
5959
5960Implemented a change to allow the host to override any ACPI table,
5961including
5962dynamically loaded tables. Previously, only the DSDT could be replaced by
5963the
5964host. With this change, the AcpiOsTableOverride interface is called for
5965each
5966table found in the RSDT/XSDT during ACPICA initialization, and also
5967whenever
5968a table is dynamically loaded via the AML Load operator.
5969
5970Updated FADT flag definitions, especially the Boot Architecture flags.
5971
5972Debugger: For the Find command, automatically pad the input ACPI name
5973with
5974underscores if the name is shorter than 4 characters. This enables a
5975match
5976with the actual namespace entry which is itself padded with underscores.
5977
5978Example Code and Data Size: These are the sizes for the OS-independent
5979acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5980debug version of the code includes the debug output trace mechanism and
5981has a
5982much larger code and data size.
5983
5984  Previous Release:
5985    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5986    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5987  Current Release:
5988    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5989    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5990
59912) iASL Compiler/Disassembler and Tools:
5992
5993Fix build error under Bison-2.4.
5994
5995Dissasembler: Enhanced FADT support. Added decoding of the Boot
5996Architecture
5997flags. Now decode all flags, regardless of the FADT version. Flag output
5998includes the FADT version which first defined each flag.
5999
6000The iASL -g option now dumps the RSDT to a file (in addition to the FADT
6001and
6002DSDT). Windows only.
6003
6004----------------------------------------
600504 December 2008. Summary of changes for version 20081204:
6006
60071) ACPI CA Core Subsystem:
6008
6009The ACPICA Programmer Reference has been completely updated and revamped
6010for
6011this release. This includes updates to the external interfaces, OSL
6012interfaces, the overview sections, and the debugger reference.
6013
6014Several new ACPICA interfaces have been implemented and documented in the
6015programmer reference:
6016AcpiReset - Writes the reset value to the FADT-defined reset register.
6017AcpiDisableAllGpes - Disable all available GPEs.
6018AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
6019AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
6020AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
6021AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
6022AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
6023
6024Most of the public ACPI hardware-related interfaces have been moved to a
6025new
6026file, components/hardware/hwxface.c
6027
6028Enhanced the FADT parsing and low-level ACPI register access: The ACPI
6029register lengths within the FADT are now used, and the low level ACPI
6030register access no longer hardcodes the ACPI register lengths. Given that
6031there may be some risk in actually trusting the FADT register lengths, a
6032run-
6033time option was added to fall back to the default hardcoded lengths if
6034the
6035FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
6036option is set to true for now, and a warning is issued if a suspicious
6037FADT
6038register length is overridden with the default value.
6039
6040Fixed a reference count issue in NsRepairObject. This problem was
6041introduced
6042in version 20081031 as part of a fix to repair Buffer objects within
6043Packages. Lin Ming.
6044
6045Added semaphore support to the Linux/Unix application OS-services layer
6046(OSL). ACPICA BZ 448. Lin Ming.
6047
6048Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
6049will
6050be implemented in the OSL, or will binary semaphores be used instead.
6051
6052Example Code and Data Size: These are the sizes for the OS-independent
6053acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6054debug version of the code includes the debug output trace mechanism and
6055has a
6056much larger code and data size.
6057
6058  Previous Release:
6059    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
6060    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
6061  Current Release:
6062    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
6063    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
6064
60652) iASL Compiler/Disassembler and Tools:
6066
6067iASL: Completed the '-e' option to include additional ACPI tables in
6068order
6069to
6070aid with disassembly and External statement generation. ACPICA BZ 742.
6071Lin
6072Ming.
6073
6074iASL: Removed the "named object in while loop" error. The compiler cannot
6075determine how many times a loop will execute. ACPICA BZ 730.
6076
6077Disassembler: Implemented support for FADT revision 2 (MS extension).
6078ACPICA
6079BZ 743.
6080
6081Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
6082MCFG).
6083
6084----------------------------------------
608531 October 2008. Summary of changes for version 20081031:
6086
60871) ACPI CA Core Subsystem:
6088
6089Restructured the ACPICA header files into public/private. acpi.h now
6090includes
6091only the "public" acpica headers. All other acpica headers are "private"
6092and
6093should not be included by acpica users. One new file, accommon.h is used
6094to
6095include the commonly used private headers for acpica code generation.
6096Future
6097plans include moving all private headers to a new subdirectory.
6098
6099Implemented an automatic Buffer->String return value conversion for
6100predefined ACPI methods. For these methods (such as _BIF), added
6101automatic
6102conversion for return objects that are required to be a String, but a
6103Buffer
6104was found instead. This can happen when reading string battery data from
6105an
6106operation region, because it used to be difficult to convert the data
6107from
6108buffer to string from within the ASL. Ensures that the host OS is
6109provided
6110with a valid null-terminated string. Linux BZ 11822.
6111
6112Updated the FACS waking vector interfaces. Split
6113AcpiSetFirmwareWakingVector
6114into two: one for the 32-bit vector, another for the 64-bit vector. This
6115is
6116required because the host OS must setup the wake much differently for
6117each
6118vector (real vs. protected mode, etc.) and the interface itself should
6119not
6120be
6121deciding which vector to use. Also, eliminated the
6122GetFirmwareWakingVector
6123interface, as it served no purpose (only the firmware reads the vector,
6124OS
6125only writes the vector.) ACPICA BZ 731.
6126
6127Implemented a mechanism to escape infinite AML While() loops. Added a
6128loop
6129counter to force exit from AML While loops if the count becomes too
6130large.
6131This can occur in poorly written AML when the hardware does not respond
6132within a while loop and the loop does not implement a timeout. The
6133maximum
6134loop count is configurable. A new exception code is returned when a loop
6135is
6136broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
6137
6138Optimized the execution of AML While loops. Previously, a control state
6139object was allocated and freed for each execution of the loop. The
6140optimization is to simply reuse the control state for each iteration.
6141This
6142speeds up the raw loop execution time by about 5%.
6143
6144Enhanced the implicit return mechanism. For Windows compatibility, return
6145an
6146implicit integer of value zero for methods that contain no executable
6147code.
6148Such methods are seen in the field as stubs (presumably), and can cause
6149drivers to fail if they expect a return value. Lin Ming.
6150
6151Allow multiple backslashes as root prefixes in namepaths. In a fully
6152qualified namepath, allow multiple backslash prefixes. This can happen
6153(and
6154is seen in the field) because of the use of a double-backslash in strings
6155(since backslash is the escape character) causing confusion. ACPICA BZ
6156739
6157Lin Ming.
6158
6159Emit a warning if two different FACS or DSDT tables are discovered in the
6160FADT. Checks if there are two valid but different addresses for the FACS
6161and
6162DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
6163
6164Consolidated the method argument count validation code. Merged the code
6165that
6166validates control method argument counts into the predefined validation
6167module. Eliminates possible multiple warnings for incorrect argument
6168counts.
6169
6170Implemented ACPICA example code. Includes code for ACPICA initialization,
6171handler installation, and calling a control method. Available at
6172source/tools/examples.
6173
6174Added a global pointer for FACS table to simplify internal FACS access.
6175Use
6176the global pointer instead of using AcpiGetTableByIndex for each FACS
6177access.
6178This simplifies the code for the Global Lock and the Firmware Waking
6179Vector(s).
6180
6181Example Code and Data Size: These are the sizes for the OS-independent
6182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6183debug version of the code includes the debug output trace mechanism and
6184has a
6185much larger code and data size.
6186
6187  Previous Release:
6188    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
6189    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
6190  Current Release:
6191    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
6192    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
6193
61942) iASL Compiler/Disassembler and Tools:
6195
6196iASL: Improved disassembly of external method calls. Added the -e option
6197to
6198allow the inclusion of additional ACPI tables to help with the
6199disassembly
6200of
6201method invocations and the generation of external declarations during the
6202disassembly. Certain external method invocations cannot be disassembled
6203properly without the actual declaration of the method. Use the -e option
6204to
6205include the table where the external method(s) are actually declared.
6206Most
6207useful for disassembling SSDTs that make method calls back to the master
6208DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
6209-d
6210-e dsdt.aml ssdt1.aml
6211
6212iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
6213problem where the use of an alias within a namepath would result in a not
6214found error or cause the compiler to fault. Also now allows forward
6215references from the Alias operator itself. ACPICA BZ 738.
6216
6217----------------------------------------
621826 September 2008. Summary of changes for version 20080926:
6219
62201) ACPI CA Core Subsystem:
6221
6222Designed and implemented a mechanism to validate predefined ACPI methods
6223and
6224objects. This code validates the predefined ACPI objects (objects whose
6225names
6226start with underscore) that appear in the namespace, at the time they are
6227evaluated. The argument count and the type of the returned object are
6228validated against the ACPI specification. The purpose of this validation
6229is
6230to detect problems with the BIOS-implemented predefined ACPI objects
6231before
6232the results are returned to the ACPI-related drivers. Future enhancements
6233may
6234include actual repair of incorrect return objects where possible. Two new
6235files are nspredef.c and acpredef.h.
6236
6237Fixed a fault in the AML parser if a memory allocation fails during the
6238Op
6239completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
6240
6241Fixed an issue with implicit return compatibility. This change improves
6242the
6243implicit return mechanism to be more compatible with the MS interpreter.
6244Lin
6245Ming, ACPICA BZ 349.
6246
6247Implemented support for zero-length buffer-to-string conversions. Allow
6248zero
6249length strings during interpreter buffer-to-string conversions. For
6250example,
6251during the ToDecimalString and ToHexString operators, as well as implicit
6252conversions. Fiodor Suietov, ACPICA BZ 585.
6253
6254Fixed two possible memory leaks in the error exit paths of
6255AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
6256are
6257similar in that they use a stack of state objects in order to eliminate
6258recursion. The stack must be fully unwound and deallocated if an error
6259occurs. Lin Ming. ACPICA BZ 383.
6260
6261Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
6262global
6263ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
6264Moore ACPICA BZ 442.
6265
6266Removed the obsolete version number in module headers. Removed the
6267"$Revision" number that appeared in each module header. This version
6268number
6269was useful under SourceSafe and CVS, but has no meaning under git. It is
6270not
6271only incorrect, it could also be misleading.
6272
6273Example Code and Data Size: These are the sizes for the OS-independent
6274acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6275debug version of the code includes the debug output trace mechanism and
6276has a
6277much larger code and data size.
6278
6279  Previous Release:
6280    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6281    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
6282  Current Release:
6283    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
6284    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
6285
6286----------------------------------------
628729 August 2008. Summary of changes for version 20080829:
6288
62891) ACPI CA Core Subsystem:
6290
6291Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
6292Reference. Changes include the elimination of cheating on the Object
6293field
6294for the DdbHandle subtype, addition of a reference class field to
6295differentiate the various reference types (instead of an AML opcode), and
6296the
6297cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
6298
6299Reduce an error to a warning for an incorrect method argument count.
6300Previously aborted with an error if too few arguments were passed to a
6301control method via the external ACPICA interface. Now issue a warning
6302instead
6303and continue. Handles the case where the method inadvertently declares
6304too
6305many arguments, but does not actually use the extra ones. Applies mainly
6306to
6307the predefined methods. Lin Ming. Linux BZ 11032.
6308
6309Disallow the evaluation of named object types with no intrinsic value.
6310Return
6311AE_TYPE for objects that have no value and therefore evaluation is
6312undefined:
6313Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
6314of
6315these types were allowed, but an exception would be generated at some
6316point
6317during the evaluation. Now, the error is generated up front.
6318
6319Fixed a possible memory leak in the AcpiNsGetExternalPathname function
6320(nsnames.c). Fixes a leak in the error exit path.
6321
6322Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
6323debug
6324levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
6325ACPI_EXCEPTION
6326interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
6327ACPI_LV_EVENTS.
6328
6329Removed obsolete and/or unused exception codes from the acexcep.h header.
6330There is the possibility that certain device drivers may be affected if
6331they
6332use any of these exceptions.
6333
6334The ACPICA documentation has been added to the public git source tree,
6335under
6336acpica/documents. Included are the ACPICA programmer reference, the iASL
6337compiler reference, and the changes.txt release logfile.
6338
6339Example Code and Data Size: These are the sizes for the OS-independent
6340acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6341debug version of the code includes the debug output trace mechanism and
6342has a
6343much larger code and data size.
6344
6345  Previous Release:
6346    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6347    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
6348  Current Release:
6349    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6350    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
6351
63522) iASL Compiler/Disassembler and Tools:
6353
6354Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
6355defines _SCP with 3 arguments. Previous versions defined it with only 1
6356argument. iASL now allows both definitions.
6357
6358iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
6359zero-
6360length subtables when disassembling ACPI tables. Also fixed a couple of
6361errors where a full 16-bit table type field was not extracted from the
6362input
6363properly.
6364
6365acpisrc: Improve comment counting mechanism for generating source code
6366statistics. Count first and last lines of multi-line comments as
6367whitespace,
6368not comment lines. Handle Linux legal header in addition to standard
6369acpica
6370header.
6371
6372----------------------------------------
6373
637429 July 2008. Summary of changes for version 20080729:
6375
63761) ACPI CA Core Subsystem:
6377
6378Fix a possible deadlock in the GPE dispatch. Remove call to
6379AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
6380attempt
6381to acquire the GPE lock but can deadlock since the GPE lock is already
6382held
6383at dispatch time. This code was introduced in version 20060831 as a
6384response
6385to Linux BZ 6881 and has since been removed from Linux.
6386
6387Add a function to dereference returned reference objects. Examines the
6388return
6389object from a call to AcpiEvaluateObject. Any Index or RefOf references
6390are
6391automatically dereferenced in an attempt to return something useful
6392(these
6393reference types cannot be converted into an external ACPI_OBJECT.)
6394Provides
6395MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
6396
6397x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
6398subtables for the MADT and one new subtable for the SRAT. Includes
6399disassembler and AcpiSrc support. Data from the Intel 64 Architecture
6400x2APIC
6401Specification, June 2008.
6402
6403Additional error checking for pathname utilities. Add error check after
6404all
6405calls to AcpiNsGetPathnameLength. Add status return from
6406AcpiNsBuildExternalPath and check after all calls. Add parameter
6407validation
6408to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
6409
6410Return status from the global init function AcpiUtGlobalInitialize. This
6411is
6412used by both the kernel subsystem and the utilities such as iASL
6413compiler.
6414The function could possibly fail when the caches are initialized. Yang
6415Yi.
6416
6417Add a function to decode reference object types to strings. Created for
6418improved error messages.
6419
6420Improve object conversion error messages. Better error messages during
6421object
6422conversion from internal to the external ACPI_OBJECT. Used for external
6423calls
6424to AcpiEvaluateObject.
6425
6426Example Code and Data Size: These are the sizes for the OS-independent
6427acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6428debug version of the code includes the debug output trace mechanism and
6429has a
6430much larger code and data size.
6431
6432  Previous Release:
6433    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
6434    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
6435  Current Release:
6436    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6437    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
6438
64392) iASL Compiler/Disassembler and Tools:
6440
6441Debugger: fix a possible hang when evaluating non-methods. Fixes a
6442problem
6443introduced in version 20080701. If the object being evaluated (via
6444execute
6445command) is not a method, the debugger can hang while trying to obtain
6446non-
6447existent parameters.
6448
6449iASL: relax error for using reserved "_T_x" identifiers. These names can
6450appear in a disassembled ASL file if they were emitted by the original
6451compiler. Instead of issuing an error or warning and forcing the user to
6452manually change these names, issue a remark instead.
6453
6454iASL: error if named object created in while loop. Emit an error if any
6455named
6456object is created within a While loop. If allowed, this code will
6457generate
6458a
6459run-time error on the second iteration of the loop when an attempt is
6460made
6461to
6462create the same named object twice. ACPICA bugzilla 730.
6463
6464iASL: Support absolute pathnames for include files. Add support for
6465absolute
6466pathnames within the Include operator. previously, only relative
6467pathnames
6468were supported.
6469
6470iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
6471Descriptor.
6472The ACPI spec requires one interrupt minimum. BZ 423
6473
6474iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
6475Handles the case for the Interrupt Resource Descriptor where
6476the ResourceSource argument is omitted but ResourceSourceIndex
6477is present. Now leave room for the Index. BZ 426
6478
6479iASL: Prevent error message if CondRefOf target does not exist. Fixes
6480cases
6481where an error message is emitted if the target does not exist. BZ 516
6482
6483iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
6484(get ACPI tables on Windows). This was apparently broken in version
648520070919.
6486
6487AcpiXtract: Handle EOF while extracting data. Correctly handle the case
6488where
6489the EOF happens immediately after the last table in the input file. Print
6490completion message. Previously, no message was displayed in this case.
6491
6492----------------------------------------
649301 July 2008. Summary of changes for version 20080701:
6494
64950) Git source tree / acpica.org
6496
6497Fixed a problem where a git-clone from http would not transfer the entire
6498source tree.
6499
65001) ACPI CA Core Subsystem:
6501
6502Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
6503enable bit. Now performs a read-change-write of the enable register
6504instead
6505of simply writing out the cached enable mask. This will prevent
6506inadvertent
6507enabling of GPEs if a rogue GPE is received during initialization (before
6508GPE
6509handlers are installed.)
6510
6511Implemented a copy for dynamically loaded tables. Previously, dynamically
6512loaded tables were simply mapped - but on some machines this memory is
6513corrupted after suspend. Now copy the table to a local buffer. For the
6514OpRegion case, added checksum verify. Use the table length from the table
6515header, not the region length. For the Buffer case, use the table length
6516also. Dennis Noordsij, Bob Moore. BZ 10734
6517
6518Fixed a problem where the same ACPI table could not be dynamically loaded
6519and
6520unloaded more than once. Without this change, a table cannot be loaded
6521again
6522once it has been loaded/unloaded one time. The current mechanism does not
6523unregister a table upon an unload. During a load, if the same table is
6524found,
6525this no longer returns an exception. BZ 722
6526
6527Fixed a problem where the wrong descriptor length was calculated for the
6528EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
6529EndTag
6530are calculated as 12 bytes long, but the actual length in the internal
6531descriptor is 16 because of the round-up to 8 on the 64-bit build.
6532Reported
6533by Linn Crosetto. BZ 728
6534
6535Fixed a possible memory leak in the Unload operator. The DdbHandle
6536returned
6537by Load() did not have its reference count decremented during unload,
6538leading
6539to a memory leak. Lin Ming. BZ 727
6540
6541Fixed a possible memory leak when deleting thermal/processor objects. Any
6542associated notify handlers (and objects) were not being deleted. Fiodor
6543Suietov. BZ 506
6544
6545Fixed the ordering of the ASCII names in the global mutex table to match
6546the
6547actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
6548only.
6549Vegard Nossum. BZ 726
6550
6551Enhanced the AcpiGetObjectInfo interface to return the number of required
6552arguments if the object is a control method. Added this call to the
6553debugger
6554so the proper number of default arguments are passed to a method. This
6555prevents a warning when executing methods from AcpiExec.
6556
6557Added a check for an invalid handle in AcpiGetObjectInfo. Return
6558AE_BAD_PARAMETER if input handle is invalid. BZ 474
6559
6560Fixed an extraneous warning from exconfig.c on the 64-bit build.
6561
6562Example Code and Data Size: These are the sizes for the OS-independent
6563acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6564debug version of the code includes the debug output trace mechanism and
6565has a
6566much larger code and data size.
6567
6568  Previous Release:
6569    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
6570    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
6571  Current Release:
6572    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
6573    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
6574
65752) iASL Compiler/Disassembler and Tools:
6576
6577iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
6578resource descriptor names.
6579
6580iASL: Detect invalid ASCII characters in input (windows version). Removed
6581the
6582"-CF" flag from the flex compile, enables correct detection of non-ASCII
6583characters in the input. BZ 441
6584
6585iASL: Eliminate warning when result of LoadTable is not used. Eliminate
6586the
6587"result of operation not used" warning when the DDB handle returned from
6588LoadTable is not used. The warning is not needed. BZ 590
6589
6590AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
6591method
6592to
6593pass address of table to the AML. Added option to disable OpRegion
6594simulation
6595to allow creation of an OpRegion with a real address that was passed to
6596_CFG.
6597All of this allows testing of the Load and Unload operators from
6598AcpiExec.
6599
6600Debugger: update tables command for unloaded tables. Handle unloaded
6601tables
6602and use the standard table header output routine.
6603
6604----------------------------------------
660509 June 2008. Summary of changes for version 20080609:
6606
66071) ACPI CA Core Subsystem:
6608
6609Implemented a workaround for reversed _PRT entries. A significant number
6610of
6611BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
6612change dynamically detects and repairs this problem. Provides
6613compatibility
6614with MS ACPI. BZ 6859
6615
6616Simplified the internal ACPI hardware interfaces to eliminate the locking
6617flag parameter from Register Read/Write. Added a new external interface,
6618AcpiGetRegisterUnlocked.
6619
6620Fixed a problem where the invocation of a GPE control method could hang.
6621This
6622was a regression introduced in 20080514. The new method argument count
6623validation mechanism can enter an infinite loop when a GPE method is
6624dispatched. Problem fixed by removing the obsolete code that passed GPE
6625block
6626information to the notify handler via the control method parameter
6627pointer.
6628
6629Fixed a problem where the _SST execution status was incorrectly returned
6630to
6631the caller of AcpiEnterSleepStatePrep. This was a regression introduced
6632in
663320080514. _SST is optional and a NOT_FOUND exception should never be
6634returned. BZ 716
6635
6636Fixed a problem where a deleted object could be accessed from within the
6637AML
6638parser. This was a regression introduced in version 20080123 as a fix for
6639the
6640Unload operator. Lin Ming. BZ 10669
6641
6642Cleaned up the debug operand dump mechanism. Eliminated unnecessary
6643operands
6644and eliminated the use of a negative index in a loop. Operands are now
6645displayed in the correct order, not backwards. This also fixes a
6646regression
6647introduced in 20080514 on 64-bit systems where the elimination of
6648ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
6649715
6650
6651Fixed a possible memory leak in EvPciConfigRegionSetup where the error
6652exit
6653path did not delete a locally allocated structure.
6654
6655Updated definitions for the DMAR and SRAT tables to synchronize with the
6656current specifications. Includes disassembler support.
6657
6658Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
6659loop termination value was used. Loop terminated on iteration early,
6660missing
6661one mutex. Linn Crosetto
6662
6663Example Code and Data Size: These are the sizes for the OS-independent
6664acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6665debug version of the code includes the debug output trace mechanism and
6666has a
6667much larger code and data size.
6668
6669  Previous Release:
6670    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6671    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6672  Current Release:
6673    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
6674    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
6675
66762) iASL Compiler/Disassembler and Tools:
6677
6678Disassembler: Implemented support for EisaId() within _CID objects. Now
6679disassemble integer _CID objects back to EisaId invocations, including
6680multiple integers within _CID packages. Includes single-step support for
6681debugger also.
6682
6683Disassembler: Added support for DMAR and SRAT table definition changes.
6684
6685----------------------------------------
668614 May 2008. Summary of changes for version 20080514:
6687
66881) ACPI CA Core Subsystem:
6689
6690Fixed a problem where GPEs were enabled too early during the ACPICA
6691initialization. This could lead to "handler not installed" errors on some
6692machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
6693This
6694ensures that all operation regions and devices throughout the namespace
6695have
6696been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
6697
6698Implemented a change to the enter sleep code. Moved execution of the _GTS
6699method to just before setting sleep enable bit. The execution was moved
6700from
6701AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
6702immediately before the SLP_EN bit is set, as per the ACPI specification.
6703Luming Yu, BZ 1653.
6704
6705Implemented a fix to disable unknown GPEs (2nd version). Now always
6706disable
6707the GPE, even if ACPICA thinks that that it is already disabled. It is
6708possible that the AML or some other code has enabled the GPE unbeknownst
6709to
6710the ACPICA code.
6711
6712Fixed a problem with the Field operator where zero-length fields would
6713return
6714an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
6715ASL
6716field declarations in Field(), BankField(), and IndexField(). BZ 10606.
6717
6718Implemented a fix for the Load operator, now load the table at the
6719namespace
6720root. This reverts a change introduced in version 20071019. The table is
6721now
6722loaded at the namespace root even though this goes against the ACPI
6723specification. This provides compatibility with other ACPI
6724implementations.
6725The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
6726Ming.
6727
6728Fixed a problem where ACPICA would not Load() tables with unusual
6729signatures.
6730Now ignore ACPI table signature for Load() operator. Only "SSDT" is
6731acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
6732Therefore, signature validation is worthless. Apparently MS ACPI accepts
6733such
6734signatures, ACPICA must be compatible. BZ 10454.
6735
6736Fixed a possible negative array index in AcpiUtValidateException. Added
6737NULL
6738fields to the exception string arrays to eliminate a -1 subtraction on
6739the
6740SubStatus field.
6741
6742Updated the debug tracking macros to reduce overall code and data size.
6743Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
6744instead of pointers to static strings. Jan Beulich and Bob Moore.
6745
6746Implemented argument count checking in control method invocation via
6747AcpiEvaluateObject. Now emit an error if too few arguments, warning if
6748too
6749many. This applies only to extern programmatic control method execution,
6750not
6751method-to-method calls within the AML. Lin Ming.
6752
6753Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
6754no
6755longer needed, especially with the removal of 16-bit support. It was
6756replaced
6757mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
6758bit
6759on
676032/64-bit platforms is required.
6761
6762Added the C const qualifier for appropriate string constants -- mostly
6763MODULE_NAME and printf format strings. Jan Beulich.
6764
6765Example Code and Data Size: These are the sizes for the OS-independent
6766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6767debug version of the code includes the debug output trace mechanism and
6768has a
6769much larger code and data size.
6770
6771  Previous Release:
6772    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6773    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6774  Current Release:
6775    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6776    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6777
67782) iASL Compiler/Disassembler and Tools:
6779
6780Implemented ACPI table revision ID validation in the disassembler. Zero
6781is
6782always invalid. For DSDTs, the ID controls the interpreter integer width.
67831
6784means 32-bit and this is unusual. 2 or greater is 64-bit.
6785
6786----------------------------------------
678721 March 2008. Summary of changes for version 20080321:
6788
67891) ACPI CA Core Subsystem:
6790
6791Implemented an additional change to the GPE support in order to suppress
6792spurious or stray GPEs. The AcpiEvDisableGpe function will now
6793permanently
6794disable incoming GPEs that are neither enabled nor disabled -- meaning
6795that
6796the GPE is unknown to the system. This should prevent future interrupt
6797floods
6798from that GPE. BZ 6217 (Zhang Rui)
6799
6800Fixed a problem where NULL package elements were not returned to the
6801AcpiEvaluateObject interface correctly. The element was simply ignored
6802instead of returning a NULL ACPI_OBJECT package element, potentially
6803causing
6804a buffer overflow and/or confusing the caller who expected a fixed number
6805of
6806elements. BZ 10132 (Lin Ming, Bob Moore)
6807
6808Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
6809Dword,
6810Qword), Field, BankField, and IndexField operators when invoked from
6811inside
6812an executing control method. In this case, these operators created
6813namespace
6814nodes that were incorrectly left marked as permanent nodes instead of
6815temporary nodes. This could cause a problem if there is race condition
6816between an exiting control method and a running namespace walk. (Reported
6817by
6818Linn Crosetto)
6819
6820Fixed a problem where the CreateField and CreateXXXField operators would
6821incorrectly allow duplicate names (the name of the field) with no
6822exception
6823generated.
6824
6825Implemented several changes for Notify handling. Added support for new
6826Notify
6827values (ACPI 2.0+) and improved the Notify debug output. Notify on
6828PowerResource objects is no longer allowed, as per the ACPI
6829specification.
6830(Bob Moore, Zhang Rui)
6831
6832All Reference Objects returned via the AcpiEvaluateObject interface are
6833now
6834marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
6835for
6836NULL objects - either NULL package elements or unresolved named
6837references.
6838
6839Fixed a problem where an extraneous debug message was produced for
6840package
6841objects (when debugging enabled). The message "Package List length larger
6842than NumElements count" is now produced in the correct case, and is now
6843an
6844error message rather than a debug message. Added a debug message for the
6845opposite case, where NumElements is larger than the Package List (the
6846package
6847will be padded out with NULL elements as per the ACPI spec.)
6848
6849Implemented several improvements for the output of the ASL "Debug" object
6850to
6851clarify and keep all data for a given object on one output line.
6852
6853Fixed two size calculation issues with the variable-length Start
6854Dependent
6855resource descriptor.
6856
6857Example Code and Data Size: These are the sizes for the OS-independent
6858acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6859debug version of the code includes the debug output trace mechanism and
6860has
6861a much larger code and data size.
6862
6863  Previous Release:
6864    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6865    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6866  Current Release:
6867    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6868    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6869
68702) iASL Compiler/Disassembler and Tools:
6871
6872Fixed a problem with the use of the Switch operator where execution of
6873the
6874containing method by multiple concurrent threads could cause an
6875AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
6876actual Switch opcode, it must be simulated with local named temporary
6877variables and if/else pairs. The solution chosen was to mark any method
6878that
6879uses Switch as Serialized, thus preventing multiple thread entries. BZ
6880469.
6881
6882----------------------------------------
688313 February 2008. Summary of changes for version 20080213:
6884
68851) ACPI CA Core Subsystem:
6886
6887Implemented another MS compatibility design change for GPE/Notify
6888handling.
6889GPEs are now cleared/enabled asynchronously to allow all pending notifies
6890to
6891complete first. It is expected that the OSL will queue the enable request
6892behind all pending notify requests (may require changes to the local host
6893OSL
6894in AcpiOsExecute). Alexey Starikovskiy.
6895
6896Fixed a problem where buffer and package objects passed as arguments to a
6897control method via the external AcpiEvaluateObject interface could cause
6898an
6899AE_AML_INTERNAL exception depending on the order and type of operators
6900executed by the target control method.
6901
6902Fixed a problem where resource descriptor size optimization could cause a
6903problem when a _CRS resource template is passed to a _SRS method. The
6904_SRS
6905resource template must use the same descriptors (with the same size) as
6906returned from _CRS. This change affects the following resource
6907descriptors:
6908IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
69099487)
6910
6911Fixed a problem where a CopyObject to RegionField, BankField, and
6912IndexField
6913objects did not perform an implicit conversion as it should. These types
6914must
6915retain their initial type permanently as per the ACPI specification.
6916However,
6917a CopyObject to all other object types should not perform an implicit
6918conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
6919
6920Fixed a problem with the AcpiGetDevices interface where the mechanism to
6921match device CIDs did not examine the entire list of available CIDs, but
6922instead aborted on the first non-matching CID. Andrew Patterson.
6923
6924Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
6925was
6926inadvertently changed to return a 16-bit value instead of a 32-bit value,
6927truncating the upper dword of a 64-bit value. This macro is only used to
6928display debug output, so no incorrect calculations were made. Also,
6929reimplemented the macro so that a 64-bit shift is not performed by
6930inefficient compilers.
6931
6932Added missing va_end statements that should correspond with each va_start
6933statement.
6934
6935Example Code and Data Size: These are the sizes for the OS-independent
6936acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6937debug version of the code includes the debug output trace mechanism and
6938has
6939a much larger code and data size.
6940
6941  Previous Release:
6942    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6943    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6944  Current Release:
6945    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6946    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6947
69482) iASL Compiler/Disassembler and Tools:
6949
6950Implemented full disassembler support for the following new ACPI tables:
6951BERT, EINJ, and ERST. Implemented partial disassembler support for the
6952complicated HEST table. These tables support the Windows Hardware Error
6953Architecture (WHEA).
6954
6955----------------------------------------
695623 January 2008. Summary of changes for version 20080123:
6957
69581) ACPI CA Core Subsystem:
6959
6960Added the 2008 copyright to all module headers and signons. This affects
6961virtually every file in the ACPICA core subsystem, the iASL compiler, and
6962the tools/utilities.
6963
6964Fixed a problem with the SizeOf operator when used with Package and
6965Buffer
6966objects. These objects have deferred execution for some arguments, and
6967the
6968execution is now completed before the SizeOf is executed. This problem
6969caused
6970unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
6971BZ
69729558
6973
6974Implemented an enhancement to the interpreter "slack mode". In the
6975absence
6976of
6977an explicit return or an implicitly returned object from the last
6978executed
6979opcode, a control method will now implicitly return an integer of value 0
6980for
6981Microsoft compatibility. (Lin Ming) BZ 392
6982
6983Fixed a problem with the Load operator where an exception was not
6984returned
6985in
6986the case where the table is already loaded. (Lin Ming) BZ 463
6987
6988Implemented support for the use of DDBHandles as an Indexed Reference, as
6989per
6990the ACPI spec. (Lin Ming) BZ 486
6991
6992Implemented support for UserTerm (Method invocation) for the Unload
6993operator
6994as per the ACPI spec. (Lin Ming) BZ 580
6995
6996Fixed a problem with the LoadTable operator where the OemId and
6997OemTableId
6998input strings could cause unexpected failures if they were shorter than
6999the
7000maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
7001
7002Implemented support for UserTerm (Method invocation) for the Unload
7003operator
7004as per the ACPI spec. (Lin Ming) BZ 580
7005
7006Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
7007HEST,
7008IBFT, UEFI, WDAT. Disassembler support is forthcoming.
7009
7010Example Code and Data Size: These are the sizes for the OS-independent
7011acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7012debug version of the code includes the debug output trace mechanism and
7013has
7014a much larger code and data size.
7015
7016  Previous Release:
7017    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
7018    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
7019  Current Release:
7020    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
7021    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
7022
70232) iASL Compiler/Disassembler and Tools:
7024
7025Implemented support in the disassembler for checksum validation on
7026incoming
7027binary DSDTs and SSDTs. If incorrect, a message is displayed within the
7028table
7029header dump at the start of the disassembly.
7030
7031Implemented additional debugging information in the namespace listing
7032file
7033created during compilation. In addition to the namespace hierarchy, the
7034full
7035pathname to each namespace object is displayed.
7036
7037Fixed a problem with the disassembler where invalid ACPI tables could
7038cause
7039faults or infinite loops.
7040
7041Fixed an unexpected parse error when using the optional "parameter types"
7042list in a control method declaration. (Lin Ming) BZ 397
7043
7044Fixed a problem where two External declarations with the same name did
7045not
7046cause an error (Lin Ming) BZ 509
7047
7048Implemented support for full TermArgs (adding Argx, Localx and method
7049invocation) for the ParameterData parameter to the LoadTable operator.
7050(Lin
7051Ming) BZ 583,587
7052
7053----------------------------------------
705419 December 2007. Summary of changes for version 20071219:
7055
70561) ACPI CA Core Subsystem:
7057
7058Implemented full support for deferred execution for the TermArg string
7059arguments for DataTableRegion. This enables forward references and full
7060operand resolution for the three string arguments. Similar to
7061OperationRegion
7062deferred argument execution.) Lin Ming. BZ 430
7063
7064Implemented full argument resolution support for the BankValue argument
7065to
7066BankField. Previously, only constants were supported, now any TermArg may
7067be
7068used. Lin Ming BZ 387, 393
7069
7070Fixed a problem with AcpiGetDevices where the search of a branch of the
7071device tree could be terminated prematurely. In accordance with the ACPI
7072specification, the search down the current branch is terminated if a
7073device
7074is both not present and not functional (instead of just not present.)
7075Yakui
7076Zhao.
7077
7078Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
7079if
7080the underlying AML code changed the GPE enable registers. Now, any
7081unknown
7082incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
7083disabled
7084instead of simply ignored. Rui Zhang.
7085
7086Fixed a problem with Index Fields where the Index register was
7087incorrectly
7088limited to a maximum of 32 bits. Now any size may be used.
7089
7090Fixed a couple memory leaks associated with "implicit return" objects
7091when
7092the AML Interpreter slack mode is enabled. Lin Ming BZ 349
7093
7094Example Code and Data Size: These are the sizes for the OS-independent
7095acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7096debug version of the code includes the debug output trace mechanism and
7097has
7098a much larger code and data size.
7099
7100  Previous Release:
7101    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
7102    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
7103  Current Release:
7104    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
7105    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
7106
7107----------------------------------------
710814 November 2007. Summary of changes for version 20071114:
7109
71101) ACPI CA Core Subsystem:
7111
7112Implemented event counters for each of the Fixed Events, the ACPI SCI
7113(interrupt) itself, and control methods executed. Named
7114AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
7115These
7116should be useful for debugging and statistics.
7117
7118Implemented a new external interface, AcpiGetStatistics, to retrieve the
7119contents of the various event counters. Returns the current values for
7120AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
7121AcpiMethodCount. The interface can be expanded in the future if new
7122counters
7123are added. Device drivers should use this interface rather than access
7124the
7125counters directly.
7126
7127Fixed a problem with the FromBCD and ToBCD operators. With some
7128compilers,
7129the ShortDivide function worked incorrectly, causing problems with the
7130BCD
7131functions with large input values. A truncation from 64-bit to 32-bit
7132inadvertently occurred. Internal BZ 435. Lin Ming
7133
7134Fixed a problem with Index references passed as method arguments.
7135References
7136passed as arguments to control methods were dereferenced immediately
7137(before
7138control was passed to the called method). The references are now
7139correctly
7140passed directly to the called method. BZ 5389. Lin Ming
7141
7142Fixed a problem with CopyObject used in conjunction with the Index
7143operator.
7144The reference was incorrectly dereferenced before the copy. The reference
7145is
7146now correctly copied. BZ 5391. Lin Ming
7147
7148Fixed a problem with Control Method references within Package objects.
7149These
7150references are now correctly generated. This completes the package
7151construction overhaul that began in version 20071019.
7152
7153Example Code and Data Size: These are the sizes for the OS-independent
7154acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7155debug version of the code includes the debug output trace mechanism and
7156has
7157a much larger code and data size.
7158
7159  Previous Release:
7160    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
7161    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
7162  Current Release:
7163    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
7164    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
7165
7166
71672) iASL Compiler/Disassembler and Tools:
7168
7169The AcpiExec utility now installs handlers for all of the predefined
7170Operation Region types. New types supported are: PCI_Config, CMOS, and
7171PCIBARTarget.
7172
7173Fixed a problem with the 64-bit version of AcpiExec where the extended
7174(64-
7175bit) address fields for the DSDT and FACS within the FADT were not being
7176used, causing truncation of the upper 32-bits of these addresses. Lin
7177Ming
7178and Bob Moore
7179
7180----------------------------------------
718119 October 2007. Summary of changes for version 20071019:
7182
71831) ACPI CA Core Subsystem:
7184
7185Fixed a problem with the Alias operator when the target of the alias is a
7186named ASL operator that opens a new scope -- Scope, Device,
7187PowerResource,
7188Processor, and ThermalZone. In these cases, any children of the original
7189operator could not be accessed via the alias, potentially causing
7190unexpected
7191AE_NOT_FOUND exceptions. (BZ 9067)
7192
7193Fixed a problem with the Package operator where all named references were
7194created as object references and left otherwise unresolved. According to
7195the
7196ACPI specification, a Package can only contain Data Objects or references
7197to
7198control methods. The implication is that named references to Data Objects
7199(Integer, Buffer, String, Package, BufferField, Field) should be resolved
7200immediately upon package creation. This is the approach taken with this
7201change. References to all other named objects (Methods, Devices, Scopes,
7202etc.) are all now properly created as reference objects. (BZ 5328)
7203
7204Reverted a change to Notify handling that was introduced in version
720520070508. This version changed the Notify handling from asynchronous to
7206fully synchronous (Device driver Notify handling with respect to the
7207Notify
7208ASL operator). It was found that this change caused more problems than it
7209solved and was removed by most users.
7210
7211Fixed a problem with the Increment and Decrement operators where the type
7212of
7213the target object could be unexpectedly and incorrectly changed. (BZ 353)
7214Lin Ming.
7215
7216Fixed a problem with the Load and LoadTable operators where the table
7217location within the namespace was ignored. Instead, the table was always
7218loaded into the root or current scope. Lin Ming.
7219
7220Fixed a problem with the Load operator when loading a table from a buffer
7221object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
7222
7223Fixed a problem with the Debug object where a store of a DdbHandle
7224reference
7225object to the Debug object could cause a fault.
7226
7227Added a table checksum verification for the Load operator, in the case
7228where
7229the load is from a buffer. (BZ 578).
7230
7231Implemented additional parameter validation for the LoadTable operator.
7232The
7233length of the input strings SignatureString, OemIdString, and OemTableId
7234are
7235now checked for maximum lengths. (BZ 582) Lin Ming.
7236
7237Example Code and Data Size: These are the sizes for the OS-independent
7238acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7239debug version of the code includes the debug output trace mechanism and
7240has
7241a much larger code and data size.
7242
7243  Previous Release:
7244    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
7245    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
7246  Current Release:
7247    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
7248    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
7249
7250
72512) iASL Compiler/Disassembler:
7252
7253Fixed a problem where if a single file was specified and the file did not
7254exist, no error message was emitted. (Introduced with wildcard support in
7255version 20070917.)
7256
7257----------------------------------------
725819 September 2007. Summary of changes for version 20070919:
7259
72601) ACPI CA Core Subsystem:
7261
7262Designed and implemented new external interfaces to install and remove
7263handlers for ACPI table-related events. Current events that are defined
7264are
7265LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
7266they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
7267AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
7268
7269Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
7270(acpi_serialized option on Linux) could cause some systems to hang during
7271initialization. (Bob Moore) BZ 8171
7272
7273Fixed a problem where objects of certain types (Device, ThermalZone,
7274Processor, PowerResource) can be not found if they are declared and
7275referenced from within the same control method (Lin Ming) BZ 341
7276
7277Example Code and Data Size: These are the sizes for the OS-independent
7278acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7279debug version of the code includes the debug output trace mechanism and
7280has
7281a much larger code and data size.
7282
7283  Previous Release:
7284    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
7285    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
7286  Current Release:
7287    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
7288    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
7289
7290
72912) iASL Compiler/Disassembler:
7292
7293Implemented support to allow multiple files to be compiled/disassembled
7294in
7295a
7296single invocation. This includes command line wildcard support for both
7297the
7298Windows and Unix versions of the compiler. This feature simplifies the
7299disassembly and compilation of multiple ACPI tables in a single
7300directory.
7301
7302----------------------------------------
730308 May 2007. Summary of changes for version 20070508:
7304
73051) ACPI CA Core Subsystem:
7306
7307Implemented a Microsoft compatibility design change for the handling of
7308the
7309Notify AML operator. Previously, notify handlers were dispatched and
7310executed completely asynchronously in a deferred thread. The new design
7311still executes the notify handlers in a different thread, but the
7312original
7313thread that executed the Notify() now waits at a synchronization point
7314for
7315the notify handler to complete. Some machines depend on a synchronous
7316Notify
7317operator in order to operate correctly.
7318
7319Implemented support to allow Package objects to be passed as method
7320arguments to the external AcpiEvaluateObject interface. Previously, this
7321would return the AE_NOT_IMPLEMENTED exception. This feature had not been
7322implemented since there were no reserved control methods that required it
7323until recently.
7324
7325Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
7326that
7327contained invalid non-zero values in reserved fields could cause later
7328failures because these fields have meaning in later revisions of the
7329FADT.
7330For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
7331fields
7332are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
7333
7334Fixed a problem where the Global Lock handle was not properly updated if
7335a
7336thread that acquired the Global Lock via executing AML code then
7337attempted
7338to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
7339Joe
7340Liu.
7341
7342Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
7343could be corrupted if the interrupt being removed was at the head of the
7344list. Reported by Linn Crosetto.
7345
7346Example Code and Data Size: These are the sizes for the OS-independent
7347acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7348debug version of the code includes the debug output trace mechanism and
7349has
7350a much larger code and data size.
7351
7352  Previous Release:
7353    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7354    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
7355  Current Release:
7356    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
7357    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
7358
7359----------------------------------------
736020 March 2007. Summary of changes for version 20070320:
7361
73621) ACPI CA Core Subsystem:
7363
7364Implemented a change to the order of interpretation and evaluation of AML
7365operand objects within the AML interpreter. The interpreter now evaluates
7366operands in the order that they appear in the AML stream (and the
7367corresponding ASL code), instead of in the reverse order (after the
7368entire
7369operand list has been parsed). The previous behavior caused several
7370subtle
7371incompatibilities with the Microsoft AML interpreter as well as being
7372somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
7373
7374Implemented a change to the ACPI Global Lock support. All interfaces to
7375the
7376global lock now allow the same thread to acquire the lock multiple times.
7377This affects the AcpiAcquireGlobalLock external interface to the global
7378lock
7379as well as the internal use of the global lock to support AML fields -- a
7380control method that is holding the global lock can now simultaneously
7381access
7382AML fields that require global lock protection. Previously, in both
7383cases,
7384this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
7385to
7386AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
7387Controller. There is no change to the behavior of the AML Acquire
7388operator,
7389as this can already be used to acquire a mutex multiple times by the same
7390thread. BZ 8066. With assistance from Alexey Starikovskiy.
7391
7392Fixed a problem where invalid objects could be referenced in the AML
7393Interpreter after error conditions. During operand evaluation, ensure
7394that
7395the internal "Return Object" field is cleared on error and only valid
7396pointers are stored there. Caused occasional access to deleted objects
7397that
7398resulted in "large reference count" warning messages. Valery Podrezov.
7399
7400Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
7401on
7402deeply nested control method invocations. BZ 7873, local BZ 487. Valery
7403Podrezov.
7404
7405Fixed an internal problem with the handling of result objects on the
7406interpreter result stack. BZ 7872. Valery Podrezov.
7407
7408Removed obsolete code that handled the case where AML_NAME_OP is the
7409target
7410of a reference (Reference.Opcode). This code was no longer necessary. BZ
74117874. Valery Podrezov.
7412
7413Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
7414was
7415a
7416remnant from the previously discontinued 16-bit support.
7417
7418Example Code and Data Size: These are the sizes for the OS-independent
7419acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7420debug version of the code includes the debug output trace mechanism and
7421has
7422a much larger code and data size.
7423
7424  Previous Release:
7425    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7426    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7427  Current Release:
7428    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7429    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
7430
7431----------------------------------------
743226 January 2007. Summary of changes for version 20070126:
7433
74341) ACPI CA Core Subsystem:
7435
7436Added the 2007 copyright to all module headers and signons. This affects
7437virtually every file in the ACPICA core subsystem, the iASL compiler, and
7438the utilities.
7439
7440Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
7441during a table load. A bad pointer was passed in the case where the DSDT
7442is
7443overridden, causing a fault in this case.
7444
7445Example Code and Data Size: These are the sizes for the OS-independent
7446acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7447debug version of the code includes the debug output trace mechanism and
7448has
7449a much larger code and data size.
7450
7451  Previous Release:
7452    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7453    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7454  Current Release:
7455    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7456    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7457
7458----------------------------------------
745915 December 2006. Summary of changes for version 20061215:
7460
74611) ACPI CA Core Subsystem:
7462
7463Support for 16-bit ACPICA has been completely removed since it is no
7464longer
7465necessary and it clutters the code. All 16-bit macros, types, and
7466conditional compiles have been removed, cleaning up and simplifying the
7467code
7468across the entire subsystem. DOS support is no longer needed since the
7469bootable Linux firmware kit is now available.
7470
7471The handler for the Global Lock is now removed during AcpiTerminate to
7472enable a clean subsystem restart, via the implementation of the
7473AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
7474HP)
7475
7476Implemented enhancements to the multithreading support within the
7477debugger
7478to enable improved multithreading debugging and evaluation of the
7479subsystem.
7480(Valery Podrezov)
7481
7482Debugger: Enhanced the Statistics/Memory command to emit the total
7483(maximum)
7484memory used during the execution, as well as the maximum memory consumed
7485by
7486each of the various object types. (Valery Podrezov)
7487
7488Example Code and Data Size: These are the sizes for the OS-independent
7489acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7490debug version of the code includes the debug output trace mechanism and
7491has
7492a much larger code and data size.
7493
7494  Previous Release:
7495    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7496    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7497  Current Release:
7498    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7499    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7500
7501
75022) iASL Compiler/Disassembler and Tools:
7503
7504AcpiExec: Implemented a new option (-m) to display full memory use
7505statistics upon subsystem/program termination. (Valery Podrezov)
7506
7507----------------------------------------
750809 November 2006. Summary of changes for version 20061109:
7509
75101) ACPI CA Core Subsystem:
7511
7512Optimized the Load ASL operator in the case where the source operand is
7513an
7514operation region. Simply map the operation region memory, instead of
7515performing a bytewise read. (Region must be of type SystemMemory, see
7516below.)
7517
7518Fixed the Load ASL operator for the case where the source operand is a
7519region field. A buffer object is also allowed as the source operand. BZ
7520480
7521
7522Fixed a problem where the Load ASL operator allowed the source operand to
7523be
7524an operation region of any type. It is now restricted to regions of type
7525SystemMemory, as per the ACPI specification. BZ 481
7526
7527Additional cleanup and optimizations for the new Table Manager code.
7528
7529AcpiEnable will now fail if all of the required ACPI tables are not
7530loaded
7531(FADT, FACS, DSDT). BZ 477
7532
7533Added #pragma pack(8/4) to acobject.h to ensure that the structures in
7534this
7535header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
7536manually optimized to be aligned and will not work if it is byte-packed.
7537
7538Example Code and Data Size: These are the sizes for the OS-independent
7539acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7540debug version of the code includes the debug output trace mechanism and
7541has
7542a much larger code and data size.
7543
7544  Previous Release:
7545    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
7546    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
7547  Current Release:
7548    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7549    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7550
7551
75522) iASL Compiler/Disassembler and Tools:
7553
7554Fixed a problem where the presence of the _OSI predefined control method
7555within complex expressions could cause an internal compiler error.
7556
7557AcpiExec: Implemented full region support for multiple address spaces.
7558SpaceId is now part of the REGION object. BZ 429
7559
7560----------------------------------------
756111 October 2006. Summary of changes for version 20061011:
7562
75631) ACPI CA Core Subsystem:
7564
7565Completed an AML interpreter performance enhancement for control method
7566execution. Previously a 2-pass parse/execution, control methods are now
7567completely parsed and executed in a single pass. This improves overall
7568interpreter performance by ~25%, reduces code size, and reduces CPU stack
7569use. (Valery Podrezov + interpreter changes in version 20051202 that
7570eliminated namespace loading during the pass one parse.)
7571
7572Implemented _CID support for PCI Root Bridge detection. If the _HID does
7573not
7574match the predefined PCI Root Bridge IDs, the _CID list (if present) is
7575now
7576obtained and also checked for an ID match.
7577
7578Implemented additional support for the PCI _ADR execution: upsearch until
7579a
7580device scope is found before executing _ADR. This allows PCI_Config
7581operation regions to be declared locally within control methods
7582underneath
7583PCI device objects.
7584
7585Fixed a problem with a possible race condition between threads executing
7586AcpiWalkNamespace and the AML interpreter. This condition was removed by
7587modifying AcpiWalkNamespace to (by default) ignore all temporary
7588namespace
7589entries created during any concurrent control method execution. An
7590additional namespace race condition is known to exist between
7591AcpiWalkNamespace and the Load/Unload ASL operators and is still under
7592investigation.
7593
7594Restructured the AML ParseLoop function, breaking it into several
7595subfunctions in order to reduce CPU stack use and improve
7596maintainability.
7597(Mikhail Kouzmich)
7598
7599AcpiGetHandle: Fix for parameter validation to detect invalid
7600combinations
7601of prefix handle and pathname. BZ 478
7602
7603Example Code and Data Size: These are the sizes for the OS-independent
7604acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7605debug version of the code includes the debug output trace mechanism and
7606has
7607a much larger code and data size.
7608
7609  Previous Release:
7610    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7611    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
7612  Current Release:
7613    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
7614    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
7615
76162) iASL Compiler/Disassembler and Tools:
7617
7618Ported the -g option (get local ACPI tables) to the new ACPICA Table
7619Manager
7620to restore original behavior.
7621
7622----------------------------------------
762327 September 2006. Summary of changes for version 20060927:
7624
76251) ACPI CA Core Subsystem:
7626
7627Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
7628These functions now use a spinlock for mutual exclusion and the interrupt
7629level indication flag is not needed.
7630
7631Fixed a problem with the Global Lock where the lock could appear to be
7632obtained before it is actually obtained. The global lock semaphore was
7633inadvertently created with one unit instead of zero units. (BZ 464)
7634Fiodor
7635Suietov.
7636
7637Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
7638during
7639a read from a buffer or region field. (BZ 458) Fiodor Suietov.
7640
7641Example Code and Data Size: These are the sizes for the OS-independent
7642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7643debug version of the code includes the debug output trace mechanism and
7644has
7645a much larger code and data size.
7646
7647  Previous Release:
7648    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7649    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7650  Current Release:
7651    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7652    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
7653
7654
76552) iASL Compiler/Disassembler and Tools:
7656
7657Fixed a compilation problem with the pre-defined Resource Descriptor
7658field
7659names where an "object does not exist" error could be incorrectly
7660generated
7661if the parent ResourceTemplate pathname places the template within a
7662different namespace scope than the current scope. (BZ 7212)
7663
7664Fixed a problem where the compiler could hang after syntax errors
7665detected
7666in an ElseIf construct. (BZ 453)
7667
7668Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
7669operator. An incorrect output filename was produced when this parameter
7670was
7671a null string (""). Now, the original input filename is used as the AML
7672output filename, with an ".aml" extension.
7673
7674Implemented a generic batch command mode for the AcpiExec utility
7675(execute
7676any AML debugger command) (Valery Podrezov).
7677
7678----------------------------------------
767912 September 2006. Summary of changes for version 20060912:
7680
76811) ACPI CA Core Subsystem:
7682
7683Enhanced the implementation of the "serialized mode" of the interpreter
7684(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
7685specified, instead of creating a serialization semaphore per control
7686method,
7687the interpreter lock is simply no longer released before a blocking
7688operation during control method execution. This effectively makes the AML
7689Interpreter single-threaded. The overhead of a semaphore per-method is
7690eliminated.
7691
7692Fixed a regression where an error was no longer emitted if a control
7693method
7694attempts to create 2 objects of the same name. This once again returns
7695AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
7696that
7697will dynamically serialize the control method to possible prevent future
7698errors. (BZ 440)
7699
7700Integrated a fix for a problem with PCI Express HID detection in the PCI
7701Config Space setup procedure. (BZ 7145)
7702
7703Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
7704AcpiHwInitialize function - the FADT registers are now validated when the
7705table is loaded.
7706
7707Added two new warnings during FADT verification - 1) if the FADT is
7708larger
7709than the largest known FADT version, and 2) if there is a mismatch
7710between
7711a
771232-bit block address and the 64-bit X counterpart (when both are non-
7713zero.)
7714
7715Example Code and Data Size: These are the sizes for the OS-independent
7716acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7717debug version of the code includes the debug output trace mechanism and
7718has
7719a much larger code and data size.
7720
7721  Previous Release:
7722    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7723    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7724  Current Release:
7725    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7726    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7727
7728
77292) iASL Compiler/Disassembler and Tools:
7730
7731Fixed a problem with the implementation of the Switch() operator where
7732the
7733temporary variable was declared too close to the actual Switch, instead
7734of
7735at method level. This could cause a problem if the Switch() operator is
7736within a while loop, causing an error on the second iteration. (BZ 460)
7737
7738Disassembler - fix for error emitted for unknown type for target of scope
7739operator. Now, ignore it and continue.
7740
7741Disassembly of an FADT now verifies the input FADT and reports any errors
7742found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
7743
7744Disassembly of raw data buffers with byte initialization data now
7745prefixes
7746each output line with the current buffer offset.
7747
7748Disassembly of ASF! table now includes all variable-length data fields at
7749the end of some of the subtables.
7750
7751The disassembler now emits a comment if a buffer appears to be a
7752ResourceTemplate, but cannot be disassembled as such because the EndTag
7753does
7754not appear at the very end of the buffer.
7755
7756AcpiExec - Added the "-t" command line option to enable the serialized
7757mode
7758of the AML interpreter.
7759
7760----------------------------------------
776131 August 2006. Summary of changes for version 20060831:
7762
77631) ACPI CA Core Subsystem:
7764
7765Miscellaneous fixes for the Table Manager:
7766- Correctly initialize internal common FADT for all 64-bit "X" fields
7767- Fixed a couple table mapping issues during table load
7768- Fixed a couple alignment issues for IA64
7769- Initialize input array to zero in AcpiInitializeTables
7770- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
7771AcpiGetTableByIndex
7772
7773Change for GPE support: when a "wake" GPE is received, all wake GPEs are
7774now
7775immediately disabled to prevent the waking GPE from firing again and to
7776prevent other wake GPEs from interrupting the wake process.
7777
7778Added the AcpiGpeCount global that tracks the number of processed GPEs,
7779to
7780be used for debugging systems with a large number of ACPI interrupts.
7781
7782Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
7783both the ACPICA headers and the disassembler.
7784
7785Example Code and Data Size: These are the sizes for the OS-independent
7786acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7787debug version of the code includes the debug output trace mechanism and
7788has
7789a much larger code and data size.
7790
7791  Previous Release:
7792    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7793    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7794  Current Release:
7795    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7796    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7797
7798
77992) iASL Compiler/Disassembler and Tools:
7800
7801Disassembler support for the DMAR ACPI table.
7802
7803----------------------------------------
780423 August 2006. Summary of changes for version 20060823:
7805
78061) ACPI CA Core Subsystem:
7807
7808The Table Manager component has been completely redesigned and
7809reimplemented. The new design is much simpler, and reduces the overall
7810code
7811and data size of the kernel-resident ACPICA by approximately 5%. Also, it
7812is
7813now possible to obtain the ACPI tables very early during kernel
7814initialization, even before dynamic memory management is initialized.
7815(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
7816
7817Obsolete ACPICA interfaces:
7818
7819- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
7820init
7821time).
7822- AcpiLoadTable: Not needed.
7823- AcpiUnloadTable: Not needed.
7824
7825New ACPICA interfaces:
7826
7827- AcpiInitializeTables: Must be called before the table manager can be
7828used.
7829- AcpiReallocateRootTable: Used to transfer the root table to dynamically
7830allocated memory after it becomes available.
7831- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
7832tables
7833in the RSDT/XSDT.
7834
7835Other ACPICA changes:
7836
7837- AcpiGetTableHeader returns the actual mapped table header, not a copy.
7838Use
7839AcpiOsUnmapMemory to free this mapping.
7840- AcpiGetTable returns the actual mapped table. The mapping is managed
7841internally and must not be deleted by the caller. Use of this interface
7842causes no additional dynamic memory allocation.
7843- AcpiFindRootPointer: Support for physical addressing has been
7844eliminated,
7845it appeared to be unused.
7846- The interface to AcpiOsMapMemory has changed to be consistent with the
7847other allocation interfaces.
7848- The interface to AcpiOsGetRootPointer has changed to eliminate
7849unnecessary
7850parameters.
7851- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
785264-
7853bit platforms. Was previously 64 bits on all platforms.
7854- The interface to the ACPI Global Lock acquire/release macros have
7855changed
7856slightly since ACPICA no longer keeps a local copy of the FACS with a
7857constructed pointer to the actual global lock.
7858
7859Porting to the new table manager:
7860
7861- AcpiInitializeTables: Must be called once, and can be called anytime
7862during the OS initialization process. It allows the host to specify an
7863area
7864of memory to be used to store the internal version of the RSDT/XSDT (root
7865table). This allows the host to access ACPI tables before memory
7866management
7867is initialized and running.
7868- AcpiReallocateRootTable: Can be called after memory management is
7869running
7870to copy the root table to a dynamically allocated array, freeing up the
7871scratch memory specified in the call to AcpiInitializeTables.
7872- AcpiSubsystemInitialize: This existing interface is independent of the
7873Table Manager, and does not have to be called before the Table Manager
7874can
7875be used, it only must be called before the rest of ACPICA can be used.
7876- ACPI Tables: Some changes have been made to the names and structure of
7877the
7878actbl.h and actbl1.h header files and may require changes to existing
7879code.
7880For example, bitfields have been completely removed because of their lack
7881of
7882portability across C compilers.
7883- Update interfaces to the Global Lock acquire/release macros if local
7884versions are used. (see acwin.h)
7885
7886Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
7887
7888New files: tbfind.c
7889
7890Example Code and Data Size: These are the sizes for the OS-independent
7891acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7892debug version of the code includes the debug output trace mechanism and
7893has
7894a much larger code and data size.
7895
7896  Previous Release:
7897    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7898    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7899  Current Release:
7900    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7901    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7902
7903
79042) iASL Compiler/Disassembler and Tools:
7905
7906No changes for this release.
7907
7908----------------------------------------
790921 July 2006. Summary of changes for version 20060721:
7910
79111) ACPI CA Core Subsystem:
7912
7913The full source code for the ASL test suite used to validate the iASL
7914compiler and the ACPICA core subsystem is being released with the ACPICA
7915source for the first time. The source is contained in a separate package
7916and
7917consists of over 1100 files that exercise all ASL/AML operators. The
7918package
7919should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
7920Fiodor
7921Suietov)
7922
7923Completed a new design and implementation for support of the ACPI Global
7924Lock. On the OS side, the global lock is now treated as a standard AML
7925mutex. Previously, multiple OS threads could "acquire" the global lock
7926simultaneously. However, this could cause the BIOS to be starved out of
7927the
7928lock - especially in cases such as the Embedded Controller driver where
7929there is a tight coupling between the OS and the BIOS.
7930
7931Implemented an optimization for the ACPI Global Lock interrupt mechanism.
7932The Global Lock interrupt handler no longer queues the execution of a
7933separate thread to signal the global lock semaphore. Instead, the
7934semaphore
7935is signaled directly from the interrupt handler.
7936
7937Implemented support within the AML interpreter for package objects that
7938contain a larger AML length (package list length) than the package
7939element
7940count. In this case, the length of the package is truncated to match the
7941package element count. Some BIOS code apparently modifies the package
7942length
7943on the fly, and this change supports this behavior. Provides
7944compatibility
7945with the MS AML interpreter. (With assistance from Fiodor Suietov)
7946
7947Implemented a temporary fix for the BankValue parameter of a Bank Field
7948to
7949support all constant values, now including the Zero and One opcodes.
7950Evaluation of this parameter must eventually be converted to a full
7951TermArg
7952evaluation. A not-implemented error is now returned (temporarily) for
7953non-
7954constant values for this parameter.
7955
7956Fixed problem reports (Fiodor Suietov) integrated:
7957- Fix for premature object deletion after CopyObject on Operation Region
7958(BZ
7959350)
7960
7961Example Code and Data Size: These are the sizes for the OS-independent
7962acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7963debug version of the code includes the debug output trace mechanism and
7964has
7965a much larger code and data size.
7966
7967  Previous Release:
7968    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
7969    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
7970  Current Release:
7971    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7972    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7973
7974
79752) iASL Compiler/Disassembler and Tools:
7976
7977No changes for this release.
7978
7979----------------------------------------
798007 July 2006. Summary of changes for version 20060707:
7981
79821) ACPI CA Core Subsystem:
7983
7984Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
7985that do not allow the initialization of address pointers within packed
7986structures - even though the hardware itself may support misaligned
7987transfers. Some of the debug data structures are packed by default to
7988minimize size.
7989
7990Added an error message for the case where AcpiOsGetThreadId() returns
7991zero.
7992A non-zero value is required by the core ACPICA code to ensure the proper
7993operation of AML mutexes and recursive control methods.
7994
7995The DSDT is now the only ACPI table that determines whether the AML
7996interpreter is in 32-bit or 64-bit mode. Not really a functional change,
7997but
7998the hooks for per-table 32/64 switching have been removed from the code.
7999A
8000clarification to the ACPI specification is forthcoming in ACPI 3.0B.
8001
8002Fixed a possible leak of an OwnerID in the error path of
8003AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
8004deletion to a single place in AcpiTbUninstallTable to correct possible
8005leaks
8006when using the AcpiTbDeleteTablesByType interface (with assistance from
8007Lance Ortiz.)
8008
8009Fixed a problem with Serialized control methods where the semaphore
8010associated with the method could be over-signaled after multiple method
8011invocations.
8012
8013Fixed two issues with the locking of the internal namespace data
8014structure.
8015Both the Unload() operator and AcpiUnloadTable interface now lock the
8016namespace during the namespace deletion associated with the table unload
8017(with assistance from Linn Crosetto.)
8018
8019Fixed problem reports (Valery Podrezov) integrated:
8020- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
8021
8022Fixed problem reports (Fiodor Suietov) integrated:
8023- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
8024- On Address Space handler deletion, needless deactivation call (BZ 374)
8025- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
8026375)
8027- Possible memory leak, Notify sub-objects of Processor, Power,
8028ThermalZone
8029(BZ 376)
8030- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
8031- Minimum Length of RSDT should be validated (BZ 379)
8032- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
8033Handler (BZ (380)
8034- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
8035loaded
8036(BZ 381)
8037
8038Example Code and Data Size: These are the sizes for the OS-independent
8039acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8040debug version of the code includes the debug output trace mechanism and
8041has
8042a much larger code and data size.
8043
8044  Previous Release:
8045    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
8046    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
8047  Current Release:
8048    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8049    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8050
8051
80522) iASL Compiler/Disassembler and Tools:
8053
8054Fixed problem reports:
8055Compiler segfault when ASL contains a long (>1024) String declaration (BZ
8056436)
8057
8058----------------------------------------
805923 June 2006. Summary of changes for version 20060623:
8060
80611) ACPI CA Core Subsystem:
8062
8063Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
8064allows the type to be customized to the host OS for improved efficiency
8065(since a spinlock is usually a very small object.)
8066
8067Implemented support for "ignored" bits in the ACPI registers. According
8068to
8069the ACPI specification, these bits should be preserved when writing the
8070registers via a read/modify/write cycle. There are 3 bits preserved in
8071this
8072manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
8073
8074Implemented the initial deployment of new OSL mutex interfaces. Since
8075some
8076host operating systems have separate mutex and semaphore objects, this
8077feature was requested. The base code now uses mutexes (and the new mutex
8078interfaces) wherever a binary semaphore was used previously. However, for
8079the current release, the mutex interfaces are defined as macros to map
8080them
8081to the existing semaphore interfaces. Therefore, no OSL changes are
8082required
8083at this time. (See acpiosxf.h)
8084
8085Fixed several problems with the support for the control method SyncLevel
8086parameter. The SyncLevel now works according to the ACPI specification
8087and
8088in concert with the Mutex SyncLevel parameter, since the current
8089SyncLevel
8090is a property of the executing thread. Mutual exclusion for control
8091methods
8092is now implemented with a mutex instead of a semaphore.
8093
8094Fixed three instances of the use of the C shift operator in the bitfield
8095support code (exfldio.c) to avoid the use of a shift value larger than
8096the
8097target data width. The behavior of C compilers is undefined in this case
8098and
8099can cause unpredictable results, and therefore the case must be detected
8100and
8101avoided. (Fiodor Suietov)
8102
8103Added an info message whenever an SSDT or OEM table is loaded dynamically
8104via the Load() or LoadTable() ASL operators. This should improve
8105debugging
8106capability since it will show exactly what tables have been loaded
8107(beyond
8108the tables present in the RSDT/XSDT.)
8109
8110Example Code and Data Size: These are the sizes for the OS-independent
8111acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8112debug version of the code includes the debug output trace mechanism and
8113has
8114a much larger code and data size.
8115
8116  Previous Release:
8117    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
8118    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
8119  Current Release:
8120    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
8121    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
8122
8123
81242) iASL Compiler/Disassembler and Tools:
8125
8126No changes for this release.
8127
8128----------------------------------------
812908 June 2006. Summary of changes for version 20060608:
8130
81311) ACPI CA Core Subsystem:
8132
8133Converted the locking mutex used for the ACPI hardware to a spinlock.
8134This
8135change should eliminate all problems caused by attempting to acquire a
8136semaphore at interrupt level, and it means that all ACPICA external
8137interfaces that directly access the ACPI hardware can be safely called
8138from
8139interrupt level. OSL code that implements the semaphore interfaces should
8140be
8141able to eliminate any workarounds for being called at interrupt level.
8142
8143Fixed a regression introduced in 20060526 where the ACPI device
8144initialization could be prematurely aborted with an AE_NOT_FOUND if a
8145device
8146did not have an optional _INI method.
8147
8148Fixed an IndexField issue where a write to the Data Register should be
8149limited in size to the AccessSize (width) of the IndexField itself. (BZ
8150433,
8151Fiodor Suietov)
8152
8153Fixed problem reports (Valery Podrezov) integrated:
8154- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
8155
8156Fixed problem reports (Fiodor Suietov) integrated:
8157- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
8158
8159Removed four global mutexes that were obsolete and were no longer being
8160used.
8161
8162Example Code and Data Size: These are the sizes for the OS-independent
8163acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8164debug version of the code includes the debug output trace mechanism and
8165has
8166a much larger code and data size.
8167
8168  Previous Release:
8169    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
8170    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
8171  Current Release:
8172    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
8173    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
8174
8175
81762) iASL Compiler/Disassembler and Tools:
8177
8178Fixed a fault when using -g option (get tables from registry) on Windows
8179machines.
8180
8181Fixed problem reports integrated:
8182- Generate error if CreateField NumBits parameter is zero. (BZ 405)
8183- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
8184Suietov)
8185- Global table revision override (-r) is ignored (BZ 413)
8186
8187----------------------------------------
818826 May 2006. Summary of changes for version 20060526:
8189
81901) ACPI CA Core Subsystem:
8191
8192Restructured, flattened, and simplified the internal interfaces for
8193namespace object evaluation - resulting in smaller code, less CPU stack
8194use,
8195and fewer interfaces. (With assistance from Mikhail Kouzmich)
8196
8197Fixed a problem with the CopyObject operator where the first parameter
8198was
8199not typed correctly for the parser, interpreter, compiler, and
8200disassembler.
8201Caused various errors and unexpected behavior.
8202
8203Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
8204produced incorrect results with some C compilers. Since the behavior of C
8205compilers when the shift value is larger than the datatype width is
8206apparently not well defined, the interpreter now detects this condition
8207and
8208simply returns zero as expected in all such cases. (BZ 395)
8209
8210Fixed problem reports (Valery Podrezov) integrated:
8211- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
8212- Allow interpreter to handle nested method declarations (BZ 5361)
8213
8214Fixed problem reports (Fiodor Suietov) integrated:
8215- AcpiTerminate doesn't free debug memory allocation list objects (BZ
8216355)
8217- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
8218356)
8219- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
8220- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
8221- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
8222- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
8223- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
8224- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
8225- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
8226365)
8227- Status of the Global Initialization Handler call not used (BZ 366)
8228- Incorrect object parameter to Global Initialization Handler (BZ 367)
8229
8230Example Code and Data Size: These are the sizes for the OS-independent
8231acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8232debug version of the code includes the debug output trace mechanism and
8233has
8234a much larger code and data size.
8235
8236  Previous Release:
8237    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
8238    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
8239  Current Release:
8240    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
8241    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
8242
8243
82442) iASL Compiler/Disassembler and Tools:
8245
8246Modified the parser to allow the names IO, DMA, and IRQ to be used as
8247namespace identifiers with no collision with existing resource descriptor
8248macro names. This provides compatibility with other ASL compilers and is
8249most useful for disassembly/recompilation of existing tables without
8250parse
8251errors. (With assistance from Thomas Renninger)
8252
8253Disassembler: fixed an incorrect disassembly problem with the
8254DataTableRegion and CopyObject operators. Fixed a possible fault during
8255disassembly of some Alias operators.
8256
8257----------------------------------------
825812 May 2006. Summary of changes for version 20060512:
8259
82601) ACPI CA Core Subsystem:
8261
8262Replaced the AcpiOsQueueForExecution interface with a new interface named
8263AcpiOsExecute. The major difference is that the new interface does not
8264have
8265a Priority parameter, this appeared to be useless and has been replaced
8266by
8267a
8268Type parameter. The Type tells the host what type of execution is being
8269requested, such as global lock handler, notify handler, GPE handler, etc.
8270This allows the host to queue and execute the request as appropriate for
8271the
8272request type, possibly using different work queues and different
8273priorities
8274for the various request types. This enables fixes for multithreading
8275deadlock problems such as BZ #5534, and will require changes to all
8276existing
8277OS interface layers. (Alexey Starikovskiy and Bob Moore)
8278
8279Fixed a possible memory leak associated with the support for the so-
8280called
8281"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
8282Suietov)
8283
8284Fixed a problem with the Load() operator where a table load from an
8285operation region could overwrite an internal table buffer by up to 7
8286bytes
8287and cause alignment faults on IPF systems. (With assistance from Luming
8288Yu)
8289
8290Example Code and Data Size: These are the sizes for the OS-independent
8291acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8292debug version of the code includes the debug output trace mechanism and
8293has
8294a much larger code and data size.
8295
8296  Previous Release:
8297    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
8298    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
8299  Current Release:
8300    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
8301    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
8302
8303
8304
83052) iASL Compiler/Disassembler and Tools:
8306
8307Disassembler: Implemented support to cross reference the internal
8308namespace
8309and automatically generate ASL External() statements for symbols not
8310defined
8311within the current table being disassembled. This will simplify the
8312disassembly and recompilation of interdependent tables such as SSDTs
8313since
8314these statements will no longer have to be added manually.
8315
8316Disassembler: Implemented experimental support to automatically detect
8317invocations of external control methods and generate appropriate
8318External()
8319statements. This is problematic because the AML cannot be correctly
8320parsed
8321until the number of arguments for each control method is known.
8322Currently,
8323standalone method invocations and invocations as the source operand of a
8324Store() statement are supported.
8325
8326Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
8327LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
8328LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
8329more readable and likely closer to the original ASL source.
8330
8331----------------------------------------
833221 April 2006. Summary of changes for version 20060421:
8333
83341) ACPI CA Core Subsystem:
8335
8336Removed a device initialization optimization introduced in 20051216 where
8337the _STA method was not run unless an _INI was also present for the same
8338device. This optimization could cause problems because it could allow
8339_INI
8340methods to be run within a not-present device subtree. (If a not-present
8341device had no _INI, _STA would not be run, the not-present status would
8342not
8343be discovered, and the children of the device would be incorrectly
8344traversed.)
8345
8346Implemented a new _STA optimization where namespace subtrees that do not
8347contain _INI are identified and ignored during device initialization.
8348Selectively running _STA can significantly improve boot time on large
8349machines (with assistance from Len Brown.)
8350
8351Implemented support for the device initialization case where the returned
8352_STA flags indicate a device not-present but functioning. In this case,
8353_INI
8354is not run, but the device children are examined for presence, as per the
8355ACPI specification.
8356
8357Implemented an additional change to the IndexField support in order to
8358conform to MS behavior. The value written to the Index Register is not
8359simply a byte offset, it is a byte offset in units of the access width of
8360the parent Index Field. (Fiodor Suietov)
8361
8362Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
8363interface is called during the creation of all AML operation regions, and
8364allows the host OS to exert control over what addresses it will allow the
8365AML code to access. Operation Regions whose addresses are disallowed will
8366cause a runtime exception when they are actually accessed (will not
8367affect
8368or abort table loading.) See oswinxf or osunixxf for an example
8369implementation.
8370
8371Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
8372interface allows the host OS to match the various "optional"
8373interface/behavior strings for the _OSI predefined control method as
8374appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
8375for an example implementation.
8376
8377Restructured and corrected various problems in the exception handling
8378code
8379paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
8380(with assistance from Takayoshi Kochi.)
8381
8382Modified the Linux source converter to ignore quoted string literals
8383while
8384converting identifiers from mixed to lower case. This will correct
8385problems
8386with the disassembler and other areas where such strings must not be
8387modified.
8388
8389The ACPI_FUNCTION_* macros no longer require quotes around the function
8390name. This allows the Linux source converter to convert the names, now
8391that
8392the converter ignores quoted strings.
8393
8394Example Code and Data Size: These are the sizes for the OS-independent
8395acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8396debug version of the code includes the debug output trace mechanism and
8397has
8398a much larger code and data size.
8399
8400  Previous Release:
8401
8402    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
8403    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
8404  Current Release:
8405    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
8406    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
8407
8408
84092) iASL Compiler/Disassembler and Tools:
8410
8411Implemented 3 new warnings for iASL, and implemented multiple warning
8412levels
8413(w2 flag).
8414
84151) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
8416not
8417WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
8418check for the possible timeout, a warning is issued.
8419
84202) Useless operators: If an ASL operator does not specify an optional
8421target
8422operand and it also does not use the function return value from the
8423operator, a warning is issued since the operator effectively does
8424nothing.
8425
84263) Unreferenced objects: If a namespace object is created, but never
8427referenced, a warning is issued. This is a warning level 2 since there
8428are
8429cases where this is ok, such as when a secondary table is loaded that
8430uses
8431the unreferenced objects. Even so, care is taken to only flag objects
8432that
8433don't look like they will ever be used. For example, the reserved methods
8434(starting with an underscore) are usually not referenced because it is
8435expected that the OS will invoke them.
8436
8437----------------------------------------
843831 March 2006. Summary of changes for version 20060331:
8439
84401) ACPI CA Core Subsystem:
8441
8442Implemented header file support for the following additional ACPI tables:
8443ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
8444support,
8445all current and known ACPI tables are now defined in the ACPICA headers
8446and
8447are available for use by device drivers and other software.
8448
8449Implemented support to allow tables that contain ACPI names with invalid
8450characters to be loaded. Previously, this would cause the table load to
8451fail, but since there are several known cases of such tables on existing
8452machines, this change was made to enable ACPI support for them. Also,
8453this
8454matches the behavior of the Microsoft ACPI implementation.
8455
8456Fixed a couple regressions introduced during the memory optimization in
8457the
845820060317 release. The namespace node definition required additional
8459reorganization and an internal datatype that had been changed to 8-bit
8460was
8461restored to 32-bit. (Valery Podrezov)
8462
8463Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
8464could be passed through to AcpiOsReleaseObject which is unexpected. Such
8465null pointers are now trapped and ignored, matching the behavior of the
8466previous implementation before the deployment of AcpiOsReleaseObject.
8467(Valery Podrezov, Fiodor Suietov)
8468
8469Fixed a memory mapping leak during the deletion of a SystemMemory
8470operation
8471region where a cached memory mapping was not deleted. This became a
8472noticeable problem for operation regions that are defined within
8473frequently
8474used control methods. (Dana Meyers)
8475
8476Reorganized the ACPI table header files into two main files: one for the
8477ACPI tables consumed by the ACPICA core, and another for the
8478miscellaneous
8479ACPI tables that are consumed by the drivers and other software. The
8480various
8481FADT definitions were merged into one common section and three different
8482tables (ACPI 1.0, 1.0+, and 2.0)
8483
8484Example Code and Data Size: These are the sizes for the OS-independent
8485acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8486debug version of the code includes the debug output trace mechanism and
8487has
8488a much larger code and data size.
8489
8490  Previous Release:
8491    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
8492    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
8493  Current Release:
8494    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
8495    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
8496
8497
84982) iASL Compiler/Disassembler and Tools:
8499
8500Disassembler: Implemented support to decode and format all non-AML ACPI
8501tables (tables other than DSDTs and SSDTs.) This includes the new tables
8502added to the ACPICA headers, therefore all current and known ACPI tables
8503are
8504supported.
8505
8506Disassembler: The change to allow ACPI names with invalid characters also
8507enables the disassembly of such tables. Invalid characters within names
8508are
8509changed to '*' to make the name printable; the iASL compiler will still
8510generate an error for such names, however, since this is an invalid ACPI
8511character.
8512
8513Implemented an option for AcpiXtract (-a) to extract all tables found in
8514the
8515input file. The default invocation extracts only the DSDTs and SSDTs.
8516
8517Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
8518makefile for the AcpiXtract utility.
8519
8520----------------------------------------
852117 March 2006. Summary of changes for version 20060317:
8522
85231) ACPI CA Core Subsystem:
8524
8525Implemented the use of a cache object for all internal namespace nodes.
8526Since there are about 1000 static nodes in a typical system, this will
8527decrease memory use for cache implementations that minimize per-
8528allocation
8529overhead (such as a slab allocator.)
8530
8531Removed the reference count mechanism for internal namespace nodes, since
8532it
8533was deemed unnecessary. This reduces the size of each namespace node by
8534about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
8535case,
8536and 32 bytes for the 64-bit case.
8537
8538Optimized several internal data structures to reduce object size on 64-
8539bit
8540platforms by packing data within the 64-bit alignment. This includes the
8541frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
8542instances corresponding to the namespace objects.
8543
8544Added two new strings for the predefined _OSI method: "Windows 2001.1
8545SP1"
8546and "Windows 2006".
8547
8548Split the allocation tracking mechanism out to a separate file, from
8549utalloc.c to uttrack.c. This mechanism appears to be only useful for
8550application-level code. Kernels may wish to not include uttrack.c in
8551distributions.
8552
8553Removed all remnants of the obsolete ACPI_REPORT_* macros and the
8554associated
8555code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
8556macros.)
8557
8558Code and Data Size: These are the sizes for the acpica.lib produced by
8559the
8560Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8561ACPI
8562driver or OSPM code. The debug version of the code includes the debug
8563output
8564trace mechanism and has a much larger code and data size. Note that these
8565values will vary depending on the efficiency of the compiler and the
8566compiler options used during generation.
8567
8568  Previous Release:
8569    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8570    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
8571  Current Release:
8572    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
8573    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
8574
8575
85762) iASL Compiler/Disassembler and Tools:
8577
8578Implemented an ANSI C version of the acpixtract utility. This version
8579will
8580automatically extract the DSDT and all SSDTs from the input acpidump text
8581file and dump the binary output to separate files. It can also display a
8582summary of the input file including the headers for each table found and
8583will extract any single ACPI table, with any signature. (See
8584source/tools/acpixtract)
8585
8586----------------------------------------
858710 March 2006. Summary of changes for version 20060310:
8588
85891) ACPI CA Core Subsystem:
8590
8591Tagged all external interfaces to the subsystem with the new
8592ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
8593assist
8594kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
8595macro. The default definition is NULL.
8596
8597Added the ACPI_THREAD_ID type for the return value from
8598AcpiOsGetThreadId.
8599This allows the host to define this as necessary to simplify kernel
8600integration. The default definition is ACPI_NATIVE_UINT.
8601
8602Fixed two interpreter problems related to error processing, the deletion
8603of
8604objects, and placing invalid pointers onto the internal operator result
8605stack. BZ 6028, 6151 (Valery Podrezov)
8606
8607Increased the reference count threshold where a warning is emitted for
8608large
8609reference counts in order to eliminate unnecessary warnings on systems
8610with
8611large namespaces (especially 64-bit.) Increased the value from 0x400 to
86120x800.
8613
8614Due to universal disagreement as to the meaning of the 'c' in the
8615calloc()
8616function, the ACPI_MEM_CALLOCATE macro has been renamed to
8617ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
8618ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
8619ACPI_FREE.
8620
8621Code and Data Size: These are the sizes for the acpica.lib produced by
8622the
8623Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8624ACPI
8625driver or OSPM code. The debug version of the code includes the debug
8626output
8627trace mechanism and has a much larger code and data size. Note that these
8628values will vary depending on the efficiency of the compiler and the
8629compiler options used during generation.
8630
8631  Previous Release:
8632    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
8633    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
8634  Current Release:
8635    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8636    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
8637
8638
86392) iASL Compiler/Disassembler:
8640
8641Disassembler: implemented support for symbolic resource descriptor
8642references. If a CreateXxxxField operator references a fixed offset
8643within
8644a
8645resource descriptor, a name is assigned to the descriptor and the offset
8646is
8647translated to the appropriate resource tag and pathname. The addition of
8648this support brings the disassembled code very close to the original ASL
8649source code and helps eliminate run-time errors when the disassembled
8650code
8651is modified (and recompiled) in such a way as to invalidate the original
8652fixed offsets.
8653
8654Implemented support for a Descriptor Name as the last parameter to the
8655ASL
8656Register() macro. This parameter was inadvertently left out of the ACPI
8657specification, and will be added for ACPI 3.0b.
8658
8659Fixed a problem where the use of the "_OSI" string (versus the full path
8660"\_OSI") caused an internal compiler error. ("No back ptr to op")
8661
8662Fixed a problem with the error message that occurs when an invalid string
8663is
8664used for a _HID object (such as one with an embedded asterisk:
8665"*PNP010A".)
8666The correct message is now displayed.
8667
8668----------------------------------------
866917 February 2006. Summary of changes for version 20060217:
8670
86711) ACPI CA Core Subsystem:
8672
8673Implemented a change to the IndexField support to match the behavior of
8674the
8675Microsoft AML interpreter. The value written to the Index register is now
8676a
8677byte offset, no longer an index based upon the width of the Data
8678register.
8679This should fix IndexField problems seen on some machines where the Data
8680register is not exactly one byte wide. The ACPI specification will be
8681clarified on this point.
8682
8683Fixed a problem where several resource descriptor types could overrun the
8684internal descriptor buffer due to size miscalculation: VendorShort,
8685VendorLong, and Interrupt. This was noticed on IA64 machines, but could
8686affect all platforms.
8687
8688Fixed a problem where individual resource descriptors were misaligned
8689within
8690the internal buffer, causing alignment faults on IA64 platforms.
8691
8692Code and Data Size: These are the sizes for the acpica.lib produced by
8693the
8694Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8695ACPI
8696driver or OSPM code. The debug version of the code includes the debug
8697output
8698trace mechanism and has a much larger code and data size. Note that these
8699values will vary depending on the efficiency of the compiler and the
8700compiler options used during generation.
8701
8702  Previous Release:
8703    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8704    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8705  Current Release:
8706    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
8707    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
8708
8709
87102) iASL Compiler/Disassembler:
8711
8712Implemented support for new reserved names: _WDG and _WED are Microsoft
8713extensions for Windows Instrumentation Management, _TDL is a new ACPI-
8714defined method (Throttling Depth Limit.)
8715
8716Fixed a problem where a zero-length VendorShort or VendorLong resource
8717descriptor was incorrectly emitted as a descriptor of length one.
8718
8719----------------------------------------
872010 February 2006. Summary of changes for version 20060210:
8721
87221) ACPI CA Core Subsystem:
8723
8724Removed a couple of extraneous ACPI_ERROR messages that appeared during
8725normal execution. These became apparent after the conversion from
8726ACPI_DEBUG_PRINT.
8727
8728Fixed a problem where the CreateField operator could hang if the BitIndex
8729or
8730NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
8731
8732Fixed a problem where a DeRefOf operation on a buffer object incorrectly
8733failed with an exception. This also fixes a couple of related RefOf and
8734DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
8735
8736Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
8737of
8738AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
8739BZ
87405480)
8741
8742Implemented a memory cleanup at the end of the execution of each
8743iteration
8744of an AML While() loop, preventing the accumulation of outstanding
8745objects.
8746(Valery Podrezov, BZ 5427)
8747
8748Eliminated a chunk of duplicate code in the object resolution code.
8749(Valery
8750Podrezov, BZ 5336)
8751
8752Fixed several warnings during the 64-bit code generation.
8753
8754The AcpiSrc source code conversion tool now inserts one line of
8755whitespace
8756after an if() statement that is followed immediately by a comment,
8757improving
8758readability of the Linux code.
8759
8760Code and Data Size: The current and previous library sizes for the core
8761subsystem are shown below. These are the code and data sizes for the
8762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8763These
8764values do not include any ACPI driver or OSPM code. The debug version of
8765the
8766code includes the debug output trace mechanism and has a much larger code
8767and data size. Note that these values will vary depending on the
8768efficiency
8769of the compiler and the compiler options used during generation.
8770
8771  Previous Release:
8772    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8773    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8774  Current Release:
8775    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8776    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8777
8778
87792) iASL Compiler/Disassembler:
8780
8781Fixed a problem with the disassembly of a BankField operator with a
8782complex
8783expression for the BankValue parameter.
8784
8785----------------------------------------
878627 January 2006. Summary of changes for version 20060127:
8787
87881) ACPI CA Core Subsystem:
8789
8790Implemented support in the Resource Manager to allow unresolved
8791namestring
8792references within resource package objects for the _PRT method. This
8793support
8794is in addition to the previously implemented unresolved reference support
8795within the AML parser. If the interpreter slack mode is enabled, these
8796unresolved references will be passed through to the caller as a NULL
8797package
8798entry.
8799
8800Implemented and deployed new macros and functions for error and warning
8801messages across the subsystem. These macros are simpler and generate less
8802code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
8803ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
8804macros remain defined to allow ACPI drivers time to migrate to the new
8805macros.
8806
8807Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
8808the
8809Acquire/Release Lock OSL interfaces.
8810
8811Fixed a problem where Alias ASL operators are sometimes not correctly
8812resolved, in both the interpreter and the iASL compiler.
8813
8814Fixed several problems with the implementation of the
8815ConcatenateResTemplate
8816ASL operator. As per the ACPI specification, zero length buffers are now
8817treated as a single EndTag. One-length buffers always cause a fatal
8818exception. Non-zero length buffers that do not end with a full 2-byte
8819EndTag
8820cause a fatal exception.
8821
8822Fixed a possible structure overwrite in the AcpiGetObjectInfo external
8823interface. (With assistance from Thomas Renninger)
8824
8825Code and Data Size: The current and previous library sizes for the core
8826subsystem are shown below. These are the code and data sizes for the
8827acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8828These
8829values do not include any ACPI driver or OSPM code. The debug version of
8830the
8831code includes the debug output trace mechanism and has a much larger code
8832and data size. Note that these values will vary depending on the
8833efficiency
8834of the compiler and the compiler options used during generation.
8835
8836  Previous Release:
8837    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8838    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8839  Current Release:
8840    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8841    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8842
8843
88442) iASL Compiler/Disassembler:
8845
8846Fixed an internal error that was generated for any forward references to
8847ASL
8848Alias objects.
8849
8850----------------------------------------
885113 January 2006. Summary of changes for version 20060113:
8852
88531) ACPI CA Core Subsystem:
8854
8855Added 2006 copyright to all module headers and signons. This affects
8856virtually every file in the ACPICA core subsystem, iASL compiler, and the
8857utilities.
8858
8859Enhanced the ACPICA error reporting in order to simplify user migration
8860to
8861the non-debug version of ACPICA. Replaced all instances of the
8862ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
8863debug
8864levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
8865respectively. This preserves all error and warning messages in the non-
8866debug
8867version of the ACPICA code (this has been referred to as the "debug lite"
8868option.) Over 200 cases were converted to create a total of over 380
8869error/warning messages across the ACPICA code. This increases the code
8870and
8871data size of the default non-debug version of the code somewhat (about
887213K),
8873but all error/warning reporting may be disabled if desired (and code
8874eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
8875configuration option. The size of the debug version of ACPICA remains
8876about
8877the same.
8878
8879Fixed a memory leak within the AML Debugger "Set" command. One object was
8880not properly deleted for every successful invocation of the command.
8881
8882Code and Data Size: The current and previous library sizes for the core
8883subsystem are shown below. These are the code and data sizes for the
8884acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8885These
8886values do not include any ACPI driver or OSPM code. The debug version of
8887the
8888code includes the debug output trace mechanism and has a much larger code
8889and data size. Note that these values will vary depending on the
8890efficiency
8891of the compiler and the compiler options used during generation.
8892
8893  Previous Release:
8894    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8895    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8896  Current Release:
8897    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8898    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8899
8900
89012) iASL Compiler/Disassembler:
8902
8903The compiler now officially supports the ACPI 3.0a specification that was
8904released on December 30, 2005. (Specification is available at
8905www.acpi.info)
8906
8907----------------------------------------
890816 December 2005. Summary of changes for version 20051216:
8909
89101) ACPI CA Core Subsystem:
8911
8912Implemented optional support to allow unresolved names within ASL Package
8913objects. A null object is inserted in the package when a named reference
8914cannot be located in the current namespace. Enabled via the interpreter
8915slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
8916machines
8917that contain such code.
8918
8919Implemented an optimization to the initialization sequence that can
8920improve
8921boot time. During ACPI device initialization, the _STA method is now run
8922if
8923and only if the _INI method exists. The _STA method is used to determine
8924if
8925the device is present; An _INI can only be run if _STA returns present,
8926but
8927it is a waste of time to run the _STA method if the _INI does not exist.
8928(Prototype and assistance from Dong Wei)
8929
8930Implemented use of the C99 uintptr_t for the pointer casting macros if it
8931is
8932available in the current compiler. Otherwise, the default (void *) cast
8933is
8934used as before.
8935
8936Fixed some possible memory leaks found within the execution path of the
8937Break, Continue, If, and CreateField operators. (Valery Podrezov)
8938
8939Fixed a problem introduced in the 20051202 release where an exception is
8940generated during method execution if a control method attempts to declare
8941another method.
8942
8943Moved resource descriptor string constants that are used by both the AML
8944disassembler and AML debugger to the common utilities directory so that
8945these components are independent.
8946
8947Implemented support in the AcpiExec utility (-e switch) to globally
8948ignore
8949exceptions during control method execution (method is not aborted.)
8950
8951Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
8952generation.
8953
8954Code and Data Size: The current and previous library sizes for the core
8955subsystem are shown below. These are the code and data sizes for the
8956acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8957These
8958values do not include any ACPI driver or OSPM code. The debug version of
8959the
8960code includes the debug output trace mechanism and has a much larger code
8961and data size. Note that these values will vary depending on the
8962efficiency
8963of the compiler and the compiler options used during generation.
8964
8965  Previous Release:
8966    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8967    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8968  Current Release:
8969    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8970    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8971
8972
89732) iASL Compiler/Disassembler:
8974
8975Fixed a problem where a CPU stack overflow fault could occur if a
8976recursive
8977method call was made from within a Return statement.
8978
8979----------------------------------------
898002 December 2005. Summary of changes for version 20051202:
8981
89821) ACPI CA Core Subsystem:
8983
8984Modified the parsing of control methods to no longer create namespace
8985objects during the first pass of the parse. Objects are now created only
8986during the execute phase, at the moment the namespace creation operator
8987is
8988encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
8989This
8990should eliminate ALREADY_EXISTS exceptions seen on some machines where
8991reentrant control methods are protected by an AML mutex. The mutex will
8992now
8993correctly block multiple threads from attempting to create the same
8994object
8995more than once.
8996
8997Increased the number of available Owner Ids for namespace object tracking
8998from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
8999on
9000some machines with a large number of ACPI tables (either static or
9001dynamic).
9002
9003Fixed a problem with the AcpiExec utility where a fault could occur when
9004the
9005-b switch (batch mode) is used.
9006
9007Enhanced the namespace dump routine to output the owner ID for each
9008namespace object.
9009
9010Code and Data Size: The current and previous library sizes for the core
9011subsystem are shown below. These are the code and data sizes for the
9012acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9013These
9014values do not include any ACPI driver or OSPM code. The debug version of
9015the
9016code includes the debug output trace mechanism and has a much larger code
9017and data size. Note that these values will vary depending on the
9018efficiency
9019of the compiler and the compiler options used during generation.
9020
9021  Previous Release:
9022    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9023    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9024  Current Release:
9025    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9026    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
9027
9028
90292) iASL Compiler/Disassembler:
9030
9031Fixed a parse error during compilation of certain Switch/Case constructs.
9032To
9033simplify the parse, the grammar now allows for multiple Default
9034statements
9035and this error is now detected and flagged during the analysis phase.
9036
9037Disassembler: The disassembly now includes the contents of the original
9038table header within a comment at the start of the file. This includes the
9039name and version of the original ASL compiler.
9040
9041----------------------------------------
904217 November 2005. Summary of changes for version 20051117:
9043
90441) ACPI CA Core Subsystem:
9045
9046Fixed a problem in the AML parser where the method thread count could be
9047decremented below zero if any errors occurred during the method parse
9048phase.
9049This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
9050machines.
9051This also fixed a related regression with the mechanism that detects and
9052corrects methods that cannot properly handle reentrancy (related to the
9053deployment of the new OwnerId mechanism.)
9054
9055Eliminated the pre-parsing of control methods (to detect errors) during
9056table load. Related to the problem above, this was causing unwind issues
9057if
9058any errors occurred during the parse, and it seemed to be overkill. A
9059table
9060load should not be aborted if there are problems with any single control
9061method, thus rendering this feature rather pointless.
9062
9063Fixed a problem with the new table-driven resource manager where an
9064internal
9065buffer overflow could occur for small resource templates.
9066
9067Implemented a new external interface, AcpiGetVendorResource. This
9068interface
9069will find and return a vendor-defined resource descriptor within a _CRS
9070or
9071_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
9072Helgaas.
9073
9074Removed the length limit (200) on string objects as per the upcoming ACPI
90753.0A specification. This affects the following areas of the interpreter:
90761)
9077any implicit conversion of a Buffer to a String, 2) a String object
9078result
9079of the ASL Concatentate operator, 3) the String object result of the ASL
9080ToString operator.
9081
9082Fixed a problem in the Windows OS interface layer (OSL) where a
9083WAIT_FOREVER
9084on a semaphore object would incorrectly timeout. This allows the
9085multithreading features of the AcpiExec utility to work properly under
9086Windows.
9087
9088Updated the Linux makefiles for the iASL compiler and AcpiExec to include
9089the recently added file named "utresrc.c".
9090
9091Code and Data Size: The current and previous library sizes for the core
9092subsystem are shown below. These are the code and data sizes for the
9093acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9094These
9095values do not include any ACPI driver or OSPM code. The debug version of
9096the
9097code includes the debug output trace mechanism and has a much larger code
9098and data size. Note that these values will vary depending on the
9099efficiency
9100of the compiler and the compiler options used during generation.
9101
9102  Previous Release:
9103    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
9104    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9105  Current Release:
9106    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9107    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9108
9109
91102) iASL Compiler/Disassembler:
9111
9112Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
9113specification. For the iASL compiler, this means that string literals
9114within
9115the source ASL can be of any length.
9116
9117Enhanced the listing output to dump the AML code for resource descriptors
9118immediately after the ASL code for each descriptor, instead of in a block
9119at
9120the end of the entire resource template.
9121
9122Enhanced the compiler debug output to dump the entire original parse tree
9123constructed during the parse phase, before any transforms are applied to
9124the
9125tree. The transformed tree is dumped also.
9126
9127----------------------------------------
912802 November 2005. Summary of changes for version 20051102:
9129
91301) ACPI CA Core Subsystem:
9131
9132Modified the subsystem initialization sequence to improve GPE support.
9133The
9134GPE initialization has been split into two parts in order to defer
9135execution
9136of the _PRW methods (Power Resources for Wake) until after the hardware
9137is
9138fully initialized and the SCI handler is installed. This allows the _PRW
9139methods to access fields protected by the Global Lock. This will fix
9140systems
9141where a NO_GLOBAL_LOCK exception has been seen during initialization.
9142
9143Converted the ACPI internal object disassemble and display code within
9144the
9145AML debugger to fully table-driven operation, reducing code size and
9146increasing maintainability.
9147
9148Fixed a regression with the ConcatenateResTemplate() ASL operator
9149introduced
9150in the 20051021 release.
9151
9152Implemented support for "local" internal ACPI object types within the
9153debugger "Object" command and the AcpiWalkNamespace external interfaces.
9154These local types include RegionFields, BankFields, IndexFields, Alias,
9155and
9156reference objects.
9157
9158Moved common AML resource handling code into a new file, "utresrc.c".
9159This
9160code is shared by both the Resource Manager and the AML Debugger.
9161
9162Code and Data Size: The current and previous library sizes for the core
9163subsystem are shown below. These are the code and data sizes for the
9164acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9165These
9166values do not include any ACPI driver or OSPM code. The debug version of
9167the
9168code includes the debug output trace mechanism and has a much larger code
9169and data size. Note that these values will vary depending on the
9170efficiency
9171of the compiler and the compiler options used during generation.
9172
9173  Previous Release:
9174    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
9175    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
9176  Current Release:
9177    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
9178    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9179
9180
91812) iASL Compiler/Disassembler:
9182
9183Fixed a problem with very large initializer lists (more than 4000
9184elements)
9185for both Buffer and Package objects where the parse stack could overflow.
9186
9187Enhanced the pre-compile source code scan for non-ASCII characters to
9188ignore
9189characters within comment fields. The scan is now always performed and is
9190no
9191longer optional, detecting invalid characters within a source file
9192immediately rather than during the parse phase or later.
9193
9194Enhanced the ASL grammar definition to force early reductions on all
9195list-
9196style grammar elements so that the overall parse stack usage is greatly
9197reduced. This should improve performance and reduce the possibility of
9198parse
9199stack overflow.
9200
9201Eliminated all reduce/reduce conflicts in the iASL parser generation.
9202Also,
9203with the addition of a %expected statement, the compiler generates from
9204source with no warnings.
9205
9206Fixed a possible segment fault in the disassembler if the input filename
9207does not contain a "dot" extension (Thomas Renninger).
9208
9209----------------------------------------
921021 October 2005. Summary of changes for version 20051021:
9211
92121) ACPI CA Core Subsystem:
9213
9214Implemented support for the EM64T and other x86-64 processors. This
9215essentially entails recognizing that these processors support non-aligned
9216memory transfers. Previously, all 64-bit processors were assumed to lack
9217hardware support for non-aligned transfers.
9218
9219Completed conversion of the Resource Manager to nearly full table-driven
9220operation. Specifically, the resource conversion code (convert AML to
9221internal format and the reverse) and the debug code to dump internal
9222resource descriptors are fully table-driven, reducing code and data size
9223and
9224improving maintainability.
9225
9226The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
9227word
9228on 64-bit processors instead of a fixed 32-bit word. (With assistance
9229from
9230Alexey Starikovskiy)
9231
9232Implemented support within the resource conversion code for the Type-
9233Specific byte within the various ACPI 3.0 *WordSpace macros.
9234
9235Fixed some issues within the resource conversion code for the type-
9236specific
9237flags for both Memory and I/O address resource descriptors. For Memory,
9238implemented support for the MTP and TTP flags. For I/O, split the TRS and
9239TTP flags into two separate fields.
9240
9241Code and Data Size: The current and previous library sizes for the core
9242subsystem are shown below. These are the code and data sizes for the
9243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9244These
9245values do not include any ACPI driver or OSPM code. The debug version of
9246the
9247code includes the debug output trace mechanism and has a much larger code
9248and data size. Note that these values will vary depending on the
9249efficiency
9250of the compiler and the compiler options used during generation.
9251
9252  Previous Release:
9253    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
9254    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
9255  Current Release:
9256    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
9257    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
9258
9259
9260
92612) iASL Compiler/Disassembler:
9262
9263Relaxed a compiler restriction that disallowed a ResourceIndex byte if
9264the
9265corresponding ResourceSource string was not also present in a resource
9266descriptor declaration. This restriction caused problems with existing
9267AML/ASL code that includes the Index byte without the string. When such
9268AML
9269was disassembled, it could not be compiled without modification. Further,
9270the modified code created a resource template with a different size than
9271the
9272original, breaking code that used fixed offsets into the resource
9273template
9274buffer.
9275
9276Removed a recent feature of the disassembler to ignore a lone
9277ResourceIndex
9278byte. This byte is now emitted if present so that the exact AML can be
9279reproduced when the disassembled code is recompiled.
9280
9281Improved comments and text alignment for the resource descriptor code
9282emitted by the disassembler.
9283
9284Implemented disassembler support for the ACPI 3.0 AccessSize field within
9285a
9286Register() resource descriptor.
9287
9288----------------------------------------
928930 September 2005. Summary of changes for version 20050930:
9290
92911) ACPI CA Core Subsystem:
9292
9293Completed a major overhaul of the Resource Manager code - specifically,
9294optimizations in the area of the AML/internal resource conversion code.
9295The
9296code has been optimized to simplify and eliminate duplicated code, CPU
9297stack
9298use has been decreased by optimizing function parameters and local
9299variables, and naming conventions across the manager have been
9300standardized
9301for clarity and ease of maintenance (this includes function, parameter,
9302variable, and struct/typedef names.) The update may force changes in some
9303driver code, depending on how resources are handled by the host OS.
9304
9305All Resource Manager dispatch and information tables have been moved to a
9306single location for clarity and ease of maintenance. One new file was
9307created, named "rsinfo.c".
9308
9309The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
9310guarantee that the argument is not evaluated twice, making them less
9311prone
9312to macro side-effects. However, since there exists the possibility of
9313additional stack use if a particular compiler cannot optimize them (such
9314as
9315in the debug generation case), the original macros are optionally
9316available.
9317Note that some invocations of the return_VALUE macro may now cause size
9318mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
9319to
9320eliminate these. (From Randy Dunlap)
9321
9322Implemented a new mechanism to enable debug tracing for individual
9323control
9324methods. A new external interface, AcpiDebugTrace, is provided to enable
9325this mechanism. The intent is to allow the host OS to easily enable and
9326disable tracing for problematic control methods. This interface can be
9327easily exposed to a user or debugger interface if desired. See the file
9328psxface.c for details.
9329
9330AcpiUtCallocate will now return a valid pointer if a length of zero is
9331specified - a length of one is used and a warning is issued. This matches
9332the behavior of AcpiUtAllocate.
9333
9334Code and Data Size: The current and previous library sizes for the core
9335subsystem are shown below. These are the code and data sizes for the
9336acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9337These
9338values do not include any ACPI driver or OSPM code. The debug version of
9339the
9340code includes the debug output trace mechanism and has a much larger code
9341and data size. Note that these values will vary depending on the
9342efficiency
9343of the compiler and the compiler options used during generation.
9344
9345  Previous Release:
9346    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
9347    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
9348  Current Release:
9349    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
9350    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
9351
9352
93532) iASL Compiler/Disassembler:
9354
9355A remark is issued if the effective compile-time length of a package or
9356buffer is zero. Previously, this was a warning.
9357
9358----------------------------------------
935916 September 2005. Summary of changes for version 20050916:
9360
93611) ACPI CA Core Subsystem:
9362
9363Fixed a problem within the Resource Manager where support for the Generic
9364Register descriptor was not fully implemented. This descriptor is now
9365fully
9366recognized, parsed, disassembled, and displayed.
9367
9368Completely restructured the Resource Manager code to utilize table-driven
9369dispatch and lookup, eliminating many of the large switch() statements.
9370This
9371reduces overall subsystem code size and code complexity. Affects the
9372resource parsing and construction, disassembly, and debug dump output.
9373
9374Cleaned up and restructured the debug dump output for all resource
9375descriptors. Improved readability of the output and reduced code size.
9376
9377Fixed a problem where changes to internal data structures caused the
9378optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
9379
9380Code and Data Size: The current and previous library sizes for the core
9381subsystem are shown below. These are the code and data sizes for the
9382acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9383These
9384values do not include any ACPI driver or OSPM code. The debug version of
9385the
9386code includes the debug output trace mechanism and has a much larger code
9387and data size. Note that these values will vary depending on the
9388efficiency
9389of the compiler and the compiler options used during generation.
9390
9391  Previous Release:
9392    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
9393    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
9394  Current Release:
9395    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
9396    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
9397
9398
93992) iASL Compiler/Disassembler:
9400
9401Updated the disassembler to automatically insert an EndDependentFn()
9402macro
9403into the ASL stream if this macro is missing in the original AML code,
9404simplifying compilation of the resulting ASL module.
9405
9406Fixed a problem in the disassembler where a disassembled ResourceSource
9407string (within a large resource descriptor) was not surrounded by quotes
9408and
9409not followed by a comma, causing errors when the resulting ASL module was
9410compiled. Also, escape sequences within a ResourceSource string are now
9411handled correctly (especially "\\")
9412
9413----------------------------------------
941402 September 2005. Summary of changes for version 20050902:
9415
94161) ACPI CA Core Subsystem:
9417
9418Fixed a problem with the internal Owner ID allocation and deallocation
9419mechanisms for control method execution and recursive method invocation.
9420This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
9421messages seen on some systems. Recursive method invocation depth is
9422currently limited to 255. (Alexey Starikovskiy)
9423
9424Completely eliminated all vestiges of support for the "module-level
9425executable code" until this support is fully implemented and debugged.
9426This
9427should eliminate the NO_RETURN_VALUE exceptions seen during table load on
9428some systems that invoke this support.
9429
9430Fixed a problem within the resource manager code where the transaction
9431flags
9432for a 64-bit address descriptor were handled incorrectly in the type-
9433specific flag byte.
9434
9435Consolidated duplicate code within the address descriptor resource
9436manager
9437code, reducing overall subsystem code size.
9438
9439Fixed a fault when using the AML debugger "disassemble" command to
9440disassemble individual control methods.
9441
9442Removed references to the "release_current" directory within the Unix
9443release package.
9444
9445Code and Data Size: The current and previous core subsystem library sizes
9446are shown below. These are the code and data sizes for the acpica.lib
9447produced by the Microsoft Visual C++ 6.0 compiler. These values do not
9448include any ACPI driver or OSPM code. The debug version of the code
9449includes
9450the debug output trace mechanism and has a much larger code and data
9451size.
9452Note that these values will vary depending on the efficiency of the
9453compiler
9454and the compiler options used during generation.
9455
9456  Previous Release:
9457    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9458    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9459  Current Release:
9460    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
9461    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
9462
9463
94642) iASL Compiler/Disassembler:
9465
9466Implemented an error check for illegal duplicate values in the interrupt
9467and
9468dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
9469Interrupt().
9470
9471Implemented error checking for the Irq() and IrqNoFlags() macros to
9472detect
9473too many values in the interrupt list (16 max) and invalid values in the
9474list (range 0 - 15)
9475
9476The maximum length string literal within an ASL file is now restricted to
9477200 characters as per the ACPI specification.
9478
9479Fixed a fault when using the -ln option (generate namespace listing).
9480
9481Implemented an error check to determine if a DescriptorName within a
9482resource descriptor has already been used within the current scope.
9483
9484----------------------------------------
948515 August 2005.  Summary of changes for version 20050815:
9486
94871) ACPI CA Core Subsystem:
9488
9489Implemented a full bytewise compare to determine if a table load request
9490is
9491attempting to load a duplicate table. The compare is performed if the
9492table
9493signatures and table lengths match. This will allow different tables with
9494the same OEM Table ID and revision to be loaded - probably against the
9495ACPI
9496specification, but discovered in the field nonetheless.
9497
9498Added the changes.txt logfile to each of the zipped release packages.
9499
9500Code and Data Size: Current and previous core subsystem library sizes are
9501shown below. These are the code and data sizes for the acpica.lib
9502produced
9503by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9504any ACPI driver or OSPM code. The debug version of the code includes the
9505debug output trace mechanism and has a much larger code and data size.
9506Note
9507that these values will vary depending on the efficiency of the compiler
9508and
9509the compiler options used during generation.
9510
9511  Previous Release:
9512    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9513    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
9514  Current Release:
9515    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9516    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9517
9518
95192) iASL Compiler/Disassembler:
9520
9521Fixed a problem where incorrect AML code could be generated for Package
9522objects if optimization is disabled (via the -oa switch).
9523
9524Fixed a problem with where incorrect AML code is generated for variable-
9525length packages when the package length is not specified and the number
9526of
9527initializer values is greater than 255.
9528
9529
9530----------------------------------------
953129 July 2005.  Summary of changes for version 20050729:
9532
95331) ACPI CA Core Subsystem:
9534
9535Implemented support to ignore an attempt to install/load a particular
9536ACPI
9537table more than once. Apparently there exists BIOS code that repeatedly
9538attempts to load the same SSDT upon certain events. With assistance from
9539Venkatesh Pallipadi.
9540
9541Restructured the main interface to the AML parser in order to correctly
9542handle all exceptional conditions. This will prevent leakage of the
9543OwnerId
9544resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
9545some
9546machines. With assistance from Alexey Starikovskiy.
9547
9548Support for "module level code" has been disabled in this version due to
9549a
9550number of issues that have appeared on various machines. The support can
9551be
9552enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
9553compilation. When the issues are fully resolved, the code will be enabled
9554by
9555default again.
9556
9557Modified the internal functions for debug print support to define the
9558FunctionName parameter as a (const char *) for compatibility with
9559compiler
9560built-in macros such as __FUNCTION__, etc.
9561
9562Linted the entire ACPICA source tree for both 32-bit and 64-bit.
9563
9564Implemented support to display an object count summary for the AML
9565Debugger
9566commands Object and Methods.
9567
9568Code and Data Size: Current and previous core subsystem library sizes are
9569shown below. These are the code and data sizes for the acpica.lib
9570produced
9571by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9572any ACPI driver or OSPM code. The debug version of the code includes the
9573debug output trace mechanism and has a much larger code and data size.
9574Note
9575that these values will vary depending on the efficiency of the compiler
9576and
9577the compiler options used during generation.
9578
9579  Previous Release:
9580    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
9581    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
9582  Current Release:
9583    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9584    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
9585
9586
95872) iASL Compiler/Disassembler:
9588
9589Fixed a regression that appeared in the 20050708 version of the compiler
9590where an error message was inadvertently emitted for invocations of the
9591_OSI
9592reserved control method.
9593
9594----------------------------------------
959508 July 2005.  Summary of changes for version 20050708:
9596
95971) ACPI CA Core Subsystem:
9598
9599The use of the CPU stack in the debug version of the subsystem has been
9600considerably reduced. Previously, a debug structure was declared in every
9601function that used the debug macros. This structure has been removed in
9602favor of declaring the individual elements as parameters to the debug
9603functions. This reduces the cumulative stack use during nested execution
9604of
9605ACPI function calls at the cost of a small increase in the code size of
9606the
9607debug version of the subsystem. With assistance from Alexey Starikovskiy
9608and
9609Len Brown.
9610
9611Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
9612headers to define a macro that will return the current function name at
9613runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
9614by
9615the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
9616compiler-dependent header, the function name is saved on the CPU stack
9617(one
9618pointer per function.) This mechanism is used because apparently there
9619exists no standard ANSI-C defined macro that that returns the function
9620name.
9621
9622Redesigned and reimplemented the "Owner ID" mechanism used to track
9623namespace objects created/deleted by ACPI tables and control method
9624execution. A bitmap is now used to allocate and free the IDs, thus
9625solving
9626the wraparound problem present in the previous implementation. The size
9627of
9628the namespace node descriptor was reduced by 2 bytes as a result (Alexey
9629Starikovskiy).
9630
9631Removed the UINT32_BIT and UINT16_BIT types that were used for the
9632bitfield
9633flag definitions within the headers for the predefined ACPI tables. These
9634have been replaced by UINT8_BIT in order to increase the code portability
9635of
9636the subsystem. If the use of UINT8 remains a problem, we may be forced to
9637eliminate bitfields entirely because of a lack of portability.
9638
9639Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
9640This
9641is a frequently used function and this improvement increases the
9642performance
9643of the entire subsystem (Alexey Starikovskiy).
9644
9645Fixed several possible memory leaks and the inverse - premature object
9646deletion (Alexey Starikovskiy).
9647
9648Code and Data Size: Current and previous core subsystem library sizes are
9649shown below. These are the code and data sizes for the acpica.lib
9650produced
9651by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9652any ACPI driver or OSPM code. The debug version of the code includes the
9653debug output trace mechanism and has a much larger code and data size.
9654Note
9655that these values will vary depending on the efficiency of the compiler
9656and
9657the compiler options used during generation.
9658
9659  Previous Release:
9660    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9661    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9662  Current Release:
9663    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
9664    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
9665
9666----------------------------------------
966724 June 2005.  Summary of changes for version 20050624:
9668
96691) ACPI CA Core Subsystem:
9670
9671Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
9672the host-defined cache object. This allows the OSL implementation to
9673define
9674and type this object in any manner desired, simplifying the OSL
9675implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
9676Linux, and should be defined in the OS-specific header file for other
9677operating systems as required.
9678
9679Changed the interface to AcpiOsAcquireObject to directly return the
9680requested object as the function return (instead of ACPI_STATUS.) This
9681change was made for performance reasons, since this is the purpose of the
9682interface in the first place. AcpiOsAcquireObject is now similar to the
9683AcpiOsAllocate interface.
9684
9685Implemented a new AML debugger command named Businfo. This command
9686displays
9687information about all devices that have an associate _PRT object. The
9688_ADR,
9689_HID, _UID, and _CID are displayed for these devices.
9690
9691Modified the initialization sequence in AcpiInitializeSubsystem to call
9692the
9693OSL interface AcpiOslInitialize first, before any local initialization.
9694This
9695change was required because the global initialization now calls OSL
9696interfaces.
9697
9698Enhanced the Dump command to display the entire contents of Package
9699objects
9700(including all sub-objects and their values.)
9701
9702Restructured the code base to split some files because of size and/or
9703because the code logically belonged in a separate file. New files are
9704listed
9705below. All makefiles and project files included in the ACPI CA release
9706have
9707been updated.
9708    utilities/utcache.c           /* Local cache interfaces */
9709    utilities/utmutex.c           /* Local mutex support */
9710    utilities/utstate.c           /* State object support */
9711    interpreter/parser/psloop.c   /* Main AML parse loop */
9712
9713Code and Data Size: Current and previous core subsystem library sizes are
9714shown below. These are the code and data sizes for the acpica.lib
9715produced
9716by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9717any ACPI driver or OSPM code. The debug version of the code includes the
9718debug output trace mechanism and has a much larger code and data size.
9719Note
9720that these values will vary depending on the efficiency of the compiler
9721and
9722the compiler options used during generation.
9723
9724  Previous Release:
9725    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9726    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9727  Current Release:
9728    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9729    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9730
9731
97322) iASL Compiler/Disassembler:
9733
9734Fixed a regression introduced in version 20050513 where the use of a
9735Package
9736object within a Case() statement caused a compile time exception. The
9737original behavior has been restored (a Match() operator is emitted.)
9738
9739----------------------------------------
974017 June 2005.  Summary of changes for version 20050617:
9741
97421) ACPI CA Core Subsystem:
9743
9744Moved the object cache operations into the OS interface layer (OSL) to
9745allow
9746the host OS to handle these operations if desired (for example, the Linux
9747OSL will invoke the slab allocator). This support is optional; the
9748compile
9749time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
9750cache
9751code in the ACPI CA core. The new OSL interfaces are shown below. See
9752utalloc.c for an example implementation, and acpiosxf.h for the exact
9753interface definitions. With assistance from Alexey Starikovskiy.
9754    AcpiOsCreateCache
9755    AcpiOsDeleteCache
9756    AcpiOsPurgeCache
9757    AcpiOsAcquireObject
9758    AcpiOsReleaseObject
9759
9760Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
9761return
9762and restore a flags parameter. This fits better with many OS lock models.
9763Note: the current execution state (interrupt handler or not) is no longer
9764passed to these interfaces. If necessary, the OSL must determine this
9765state
9766by itself, a simple and fast operation. With assistance from Alexey
9767Starikovskiy.
9768
9769Fixed a problem in the ACPI table handling where a valid XSDT was assumed
9770present if the revision of the RSDP was 2 or greater. According to the
9771ACPI
9772specification, the XSDT is optional in all cases, and the table manager
9773therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
9774Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
9775contain
9776only the RSDT.
9777
9778Fixed an interpreter problem with the Mid() operator in the case of an
9779input
9780string where the resulting output string is of zero length. It now
9781correctly
9782returns a valid, null terminated string object instead of a string object
9783with a null pointer.
9784
9785Fixed a problem with the control method argument handling to allow a
9786store
9787to an Arg object that already contains an object of type Device. The
9788Device
9789object is now correctly overwritten. Previously, an error was returned.
9790
9791
9792Enhanced the debugger Find command to emit object values in addition to
9793the
9794found object pathnames. The output format is the same as the dump
9795namespace
9796command.
9797
9798Enhanced the debugger Set command. It now has the ability to set the
9799value
9800of any Named integer object in the namespace (Previously, only method
9801locals
9802and args could be set.)
9803
9804Code and Data Size: Current and previous core subsystem library sizes are
9805shown below. These are the code and data sizes for the acpica.lib
9806produced
9807by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9808any ACPI driver or OSPM code. The debug version of the code includes the
9809debug output trace mechanism and has a much larger code and data size.
9810Note
9811that these values will vary depending on the efficiency of the compiler
9812and
9813the compiler options used during generation.
9814
9815  Previous Release:
9816    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9817    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9818  Current Release:
9819    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9820    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9821
9822
98232) iASL Compiler/Disassembler:
9824
9825Fixed a regression in the disassembler where if/else/while constructs
9826were
9827output incorrectly. This problem was introduced in the previous release
9828(20050526). This problem also affected the single-step disassembly in the
9829debugger.
9830
9831Fixed a problem where compiling the reserved _OSI method would randomly
9832(but
9833rarely) produce compile errors.
9834
9835Enhanced the disassembler to emit compilable code in the face of
9836incorrect
9837AML resource descriptors. If the optional ResourceSourceIndex is present,
9838but the ResourceSource is not, do not emit the ResourceSourceIndex in the
9839disassembly. Otherwise, the resulting code cannot be compiled without
9840errors.
9841
9842----------------------------------------
984326 May 2005.  Summary of changes for version 20050526:
9844
98451) ACPI CA Core Subsystem:
9846
9847Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
9848the module level (not within a control method.) These opcodes are
9849executed
9850exactly once at the time the table is loaded. This type of code was legal
9851up
9852until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
9853in
9854order to provide backwards compatibility with earlier BIOS
9855implementations.
9856This eliminates the "Encountered executable code at module level" warning
9857that was previously generated upon detection of such code.
9858
9859Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
9860inadvertently be generated during the lookup of namespace objects in the
9861second pass parse of ACPI tables and control methods. It appears that
9862this
9863problem could occur during the resolution of forward references to
9864namespace
9865objects.
9866
9867Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
9868corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
9869allows the deadlock detection debug code to be compiled out in the normal
9870case, improving mutex performance (and overall subsystem performance)
9871considerably.
9872
9873Implemented a handful of miscellaneous fixes for possible memory leaks on
9874error conditions and error handling control paths. These fixes were
9875suggested by FreeBSD and the Coverity Prevent source code analysis tool.
9876
9877Added a check for a null RSDT pointer in AcpiGetFirmwareTable
9878(tbxfroot.c)
9879to prevent a fault in this error case.
9880
9881Code and Data Size: Current and previous core subsystem library sizes are
9882shown below. These are the code and data sizes for the acpica.lib
9883produced
9884by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9885any ACPI driver or OSPM code. The debug version of the code includes the
9886debug output trace mechanism and has a much larger code and data size.
9887Note
9888that these values will vary depending on the efficiency of the compiler
9889and
9890the compiler options used during generation.
9891
9892  Previous Release:
9893    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9894    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9895  Current Release:
9896    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9897    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9898
9899
99002) iASL Compiler/Disassembler:
9901
9902Implemented support to allow Type 1 and Type 2 ASL operators to appear at
9903the module level (not within a control method.) These operators will be
9904executed once at the time the table is loaded. This type of code was
9905legal
9906up until the release of ACPI 2.0B (2002) and is now supported by the iASL
9907compiler in order to provide backwards compatibility with earlier BIOS
9908ASL
9909code.
9910
9911The ACPI integer width (specified via the table revision ID or the -r
9912override, 32 or 64 bits) is now used internally during compile-time
9913constant
9914folding to ensure that constants are truncated to 32 bits if necessary.
9915Previously, the revision ID value was only emitted in the AML table
9916header.
9917
9918An error message is now generated for the Mutex and Method operators if
9919the
9920SyncLevel parameter is outside the legal range of 0 through 15.
9921
9922Fixed a problem with the Method operator ParameterTypes list handling
9923(ACPI
99243.0). Previously, more than 2 types or 2 arguments generated a syntax
9925error.
9926The actual underlying implementation of method argument typechecking is
9927still under development, however.
9928
9929----------------------------------------
993013 May 2005.  Summary of changes for version 20050513:
9931
99321) ACPI CA Core Subsystem:
9933
9934Implemented support for PCI Express root bridges -- added support for
9935device
9936PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
9937
9938The interpreter now automatically truncates incoming 64-bit constants to
993932
9940bits if currently executing out of a 32-bit ACPI table (Revision < 2).
9941This
9942also affects the iASL compiler constant folding. (Note: as per below, the
9943iASL compiler no longer allows 64-bit constants within 32-bit tables.)
9944
9945Fixed a problem where string and buffer objects with "static" pointers
9946(pointers to initialization data within an ACPI table) were not handled
9947consistently. The internal object copy operation now always copies the
9948data
9949to a newly allocated buffer, regardless of whether the source object is
9950static or not.
9951
9952Fixed a problem with the FromBCD operator where an implicit result
9953conversion was improperly performed while storing the result to the
9954target
9955operand. Since this is an "explicit conversion" operator, the implicit
9956conversion should never be performed on the output.
9957
9958Fixed a problem with the CopyObject operator where a copy to an existing
9959named object did not always completely overwrite the existing object
9960stored
9961at name. Specifically, a buffer-to-buffer copy did not delete the
9962existing
9963buffer.
9964
9965Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
9966and
9967structs for consistency.
9968
9969Code and Data Size: Current and previous core subsystem library sizes are
9970shown below. These are the code and data sizes for the acpica.lib
9971produced
9972by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9973any ACPI driver or OSPM code. The debug version of the code includes the
9974debug output trace mechanism and has a much larger code and data size.
9975Note
9976that these values will vary depending on the efficiency of the compiler
9977and
9978the compiler options used during generation.
9979
9980  Previous Release:
9981    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9982    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9983  Current Release: (Same sizes)
9984    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9985    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9986
9987
99882) iASL Compiler/Disassembler:
9989
9990The compiler now emits a warning if an attempt is made to generate a 64-
9991bit
9992integer constant from within a 32-bit ACPI table (Revision < 2). The
9993integer
9994is truncated to 32 bits.
9995
9996Fixed a problem with large package objects: if the static length of the
9997package is greater than 255, the "variable length package" opcode is
9998emitted. Previously, this caused an error. This requires an update to the
9999ACPI spec, since it currently (incorrectly) states that packages larger
10000than
10001255 elements are not allowed.
10002
10003The disassembler now correctly handles variable length packages and
10004packages
10005larger than 255 elements.
10006
10007----------------------------------------
1000808 April 2005.  Summary of changes for version 20050408:
10009
100101) ACPI CA Core Subsystem:
10011
10012Fixed three cases in the interpreter where an "index" argument to an ASL
10013function was still (internally) 32 bits instead of the required 64 bits.
10014This was the Index argument to the Index, Mid, and Match operators.
10015
10016The "strupr" function is now permanently local (AcpiUtStrupr), since this
10017is
10018not a POSIX-defined function and not present in most kernel-level C
10019libraries. All references to the C library strupr function have been
10020removed
10021from the headers.
10022
10023Completed the deployment of static functions/prototypes. All prototypes
10024with
10025the static attribute have been moved from the headers to the owning C
10026file.
10027
10028Implemented an extract option (-e) for the AcpiBin utility (AML binary
10029utility). This option allows the utility to extract individual ACPI
10030tables
10031from the output of AcpiDmp. It provides the same functionality of the
10032acpixtract.pl perl script without the worry of setting the correct perl
10033options. AcpiBin runs on Windows and has not yet been generated/validated
10034in
10035the Linux/Unix environment (but should be soon).
10036
10037Updated and fixed the table dump option for AcpiBin (-d). This option
10038converts a single ACPI table to a hex/ascii file, similar to the output
10039of
10040AcpiDmp.
10041
10042Code and Data Size: Current and previous core subsystem library sizes are
10043shown below. These are the code and data sizes for the acpica.lib
10044produced
10045by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10046any ACPI driver or OSPM code. The debug version of the code includes the
10047debug output trace mechanism and has a much larger code and data size.
10048Note
10049that these values will vary depending on the efficiency of the compiler
10050and
10051the compiler options used during generation.
10052
10053  Previous Release:
10054    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
10055    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
10056  Current Release:
10057    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10058    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10059
10060
100612) iASL Compiler/Disassembler:
10062
10063Disassembler fix: Added a check to ensure that the table length found in
10064the
10065ACPI table header within the input file is not longer than the actual
10066input
10067file size. This indicates some kind of file or table corruption.
10068
10069----------------------------------------
1007029 March 2005.  Summary of changes for version 20050329:
10071
100721) ACPI CA Core Subsystem:
10073
10074An error is now generated if an attempt is made to create a Buffer Field
10075of
10076length zero (A CreateField with a length operand of zero.)
10077
10078The interpreter now issues a warning whenever executable code at the
10079module
10080level is detected during ACPI table load. This will give some idea of the
10081prevalence of this type of code.
10082
10083Implemented support for references to named objects (other than control
10084methods) within package objects.
10085
10086Enhanced package object output for the debug object. Package objects are
10087now
10088completely dumped, showing all elements.
10089
10090Enhanced miscellaneous object output for the debug object. Any object can
10091now be written to the debug object (for example, a device object can be
10092written, and the type of the object will be displayed.)
10093
10094The "static" qualifier has been added to all local functions across both
10095the
10096core subsystem and the iASL compiler.
10097
10098The number of "long" lines (> 80 chars) within the source has been
10099significantly reduced, by about 1/3.
10100
10101Cleaned up all header files to ensure that all CA/iASL functions are
10102prototyped (even static functions) and the formatting is consistent.
10103
10104Two new header files have been added, acopcode.h and acnames.h.
10105
10106Removed several obsolete functions that were no longer used.
10107
10108Code and Data Size: Current and previous core subsystem library sizes are
10109shown below. These are the code and data sizes for the acpica.lib
10110produced
10111by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10112any ACPI driver or OSPM code. The debug version of the code includes the
10113debug output trace mechanism and has a much larger code and data size.
10114Note
10115that these values will vary depending on the efficiency of the compiler
10116and
10117the compiler options used during generation.
10118
10119  Previous Release:
10120    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10121    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
10122  Current Release:
10123    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
10124    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
10125
10126
10127
101282) iASL Compiler/Disassembler:
10129
10130Fixed a problem with the resource descriptor generation/support. For the
10131ResourceSourceIndex and the ResourceSource fields, both must be present,
10132or
10133both must be not present - can't have one without the other.
10134
10135The compiler now returns non-zero from the main procedure if any errors
10136have
10137occurred during the compilation.
10138
10139
10140----------------------------------------
1014109 March 2005.  Summary of changes for version 20050309:
10142
101431) ACPI CA Core Subsystem:
10144
10145The string-to-buffer implicit conversion code has been modified again
10146after
10147a change to the ACPI specification.  In order to match the behavior of
10148the
10149other major ACPI implementation, the target buffer is no longer truncated
10150if
10151the source string is smaller than an existing target buffer. This change
10152requires an update to the ACPI spec, and should eliminate the recent
10153AE_AML_BUFFER_LIMIT issues.
10154
10155The "implicit return" support was rewritten to a new algorithm that
10156solves
10157the general case. Rather than attempt to determine when a method is about
10158to
10159exit, the result of every ASL operator is saved momentarily until the
10160very
10161next ASL operator is executed. Therefore, no matter how the method exits,
10162there will always be a saved implicit return value. This feature is only
10163enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
10164eliminate
10165AE_AML_NO_RETURN_VALUE errors when enabled.
10166
10167Implemented implicit conversion support for the predicate (operand) of
10168the
10169If, Else, and While operators. String and Buffer arguments are
10170automatically
10171converted to Integers.
10172
10173Changed the string-to-integer conversion behavior to match the new ACPI
10174errata: "If no integer object exists, a new integer is created. The ASCII
10175string is interpreted as a hexadecimal constant. Each string character is
10176interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
10177with the first character as the most significant digit, and ending with
10178the
10179first non-hexadecimal character or end-of-string." This means that the
10180first
10181non-hex character terminates the conversion and this is the code that was
10182changed.
10183
10184Fixed a problem where the ObjectType operator would fail (fault) when
10185used
10186on an Index of a Package which pointed to a null package element. The
10187operator now properly returns zero (Uninitialized) in this case.
10188
10189Fixed a problem where the While operator used excessive memory by not
10190properly popping the result stack during execution. There was no memory
10191leak
10192after execution, however. (Code provided by Valery Podrezov.)
10193
10194Fixed a problem where references to control methods within Package
10195objects
10196caused the method to be invoked, instead of producing a reference object
10197pointing to the method.
10198
10199Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
10200to
10201improve performance and reduce code size. (Code provided by Alexey
10202Starikovskiy.)
10203
10204Code and Data Size: Current and previous core subsystem library sizes are
10205shown below. These are the code and data sizes for the acpica.lib
10206produced
10207by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10208any ACPI driver or OSPM code. The debug version of the code includes the
10209debug output trace mechanism and has a much larger code and data size.
10210Note
10211that these values will vary depending on the efficiency of the compiler
10212and
10213the compiler options used during generation.
10214
10215  Previous Release:
10216    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10217    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
10218  Current Release:
10219    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10220    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
10221
10222
102232) iASL Compiler/Disassembler:
10224
10225Fixed a problem with the Return operator with no arguments. Since the AML
10226grammar for the byte encoding requires an operand for the Return opcode,
10227the
10228compiler now emits a Return(Zero) for this case.  An ACPI specification
10229update has been written for this case.
10230
10231For tables other than the DSDT, namepath optimization is automatically
10232disabled. This is because SSDTs can be loaded anywhere in the namespace,
10233the
10234compiler has no knowledge of where, and thus cannot optimize namepaths.
10235
10236Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
10237inadvertently omitted from the ACPI specification, and will require an
10238update to the spec.
10239
10240The source file scan for ASCII characters is now optional (-a). This
10241change
10242was made because some vendors place non-ascii characters within comments.
10243However, the scan is simply a brute-force byte compare to ensure all
10244characters in the file are in the range 0x00 to 0x7F.
10245
10246Fixed a problem with the CondRefOf operator where the compiler was
10247inappropriately checking for the existence of the target. Since the point
10248of
10249the operator is to check for the existence of the target at run-time, the
10250compiler no longer checks for the target existence.
10251
10252Fixed a problem where errors generated from the internal AML interpreter
10253during constant folding were not handled properly, causing a fault.
10254
10255Fixed a problem with overly aggressive range checking for the Stall
10256operator. The valid range (max 255) is now only checked if the operand is
10257of
10258type Integer. All other operand types cannot be statically checked.
10259
10260Fixed a problem where control method references within the RefOf,
10261DeRefOf,
10262and ObjectType operators were not treated properly. They are now treated
10263as
10264actual references, not method invocations.
10265
10266Fixed and enhanced the "list namespace" option (-ln). This option was
10267broken
10268a number of releases ago.
10269
10270Improved error handling for the Field, IndexField, and BankField
10271operators.
10272The compiler now cleanly reports and recovers from errors in the field
10273component (FieldUnit) list.
10274
10275Fixed a disassembler problem where the optional ResourceDescriptor fields
10276TRS and TTP were not always handled correctly.
10277
10278Disassembler - Comments in output now use "//" instead of "/*"
10279
10280----------------------------------------
1028128 February 2005.  Summary of changes for version 20050228:
10282
102831) ACPI CA Core Subsystem:
10284
10285Fixed a problem where the result of an Index() operator (an object
10286reference) must increment the reference count on the target object for
10287the
10288life of the object reference.
10289
10290Implemented AML Interpreter and Debugger support for the new ACPI 3.0
10291Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
10292WordSpace
10293resource descriptors.
10294
10295Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
10296Space Descriptor" string, indicating interpreter support for the
10297descriptors
10298above.
10299
10300Implemented header support for the new ACPI 3.0 FADT flag bits.
10301
10302Implemented header support for the new ACPI 3.0 PCI Express bits for the
10303PM1
10304status/enable registers.
10305
10306Updated header support for the MADT processor local Apic struct and MADT
10307platform interrupt source struct for new ACPI 3.0 fields.
10308
10309Implemented header support for the SRAT and SLIT ACPI tables.
10310
10311Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
10312flag
10313at runtime.
10314
10315Code and Data Size: Current and previous core subsystem library sizes are
10316shown below. These are the code and data sizes for the acpica.lib
10317produced
10318by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10319any ACPI driver or OSPM code. The debug version of the code includes the
10320debug output trace mechanism and has a much larger code and data size.
10321Note
10322that these values will vary depending on the efficiency of the compiler
10323and
10324the compiler options used during generation.
10325
10326  Previous Release:
10327    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
10328    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
10329  Current Release:
10330    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10331    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
10332
10333
103342) iASL Compiler/Disassembler:
10335
10336Fixed a problem with the internal 64-bit String-to-integer conversion
10337with
10338strings less than two characters long.
10339
10340Fixed a problem with constant folding where the result of the Index()
10341operator can not be considered a constant. This means that Index() cannot
10342be
10343a type3 opcode and this will require an update to the ACPI specification.
10344
10345Disassembler: Implemented support for the TTP, MTP, and TRS resource
10346descriptor fields. These fields were inadvertently ignored and not output
10347in
10348the disassembly of the resource descriptor.
10349
10350
10351 ----------------------------------------
1035211 February 2005.  Summary of changes for version 20050211:
10353
103541) ACPI CA Core Subsystem:
10355
10356Implemented ACPI 3.0 support for implicit conversion within the Match()
10357operator. MatchObjects can now be of type integer, buffer, or string
10358instead
10359of just type integer.  Package elements are implicitly converted to the
10360type
10361of the MatchObject. This change aligns the behavior of Match() with the
10362behavior of the other logical operators (LLess(), etc.) It also requires
10363an
10364errata change to the ACPI specification as this support was intended for
10365ACPI 3.0, but was inadvertently omitted.
10366
10367Fixed a problem with the internal implicit "to buffer" conversion.
10368Strings
10369that are converted to buffers will cause buffer truncation if the string
10370is
10371smaller than the target buffer. Integers that are converted to buffers
10372will
10373not cause buffer truncation, only zero extension (both as per the ACPI
10374spec.) The problem was introduced when code was added to truncate the
10375buffer, but this should not be performed in all cases, only the string
10376case.
10377
10378Fixed a problem with the Buffer and Package operators where the
10379interpreter
10380would get confused if two such operators were used as operands to an ASL
10381operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
10382stack was not being popped after the execution of these operators,
10383resulting
10384in an AE_NO_RETURN_VALUE exception.
10385
10386Fixed a problem with constructs of the form Store(Index(...),...). The
10387reference object returned from Index was inadvertently resolved to an
10388actual
10389value. This problem was introduced in version 20050114 when the behavior
10390of
10391Store() was modified to restrict the object types that can be used as the
10392source operand (to match the ACPI specification.)
10393
10394Reduced excessive stack use within the AcpiGetObjectInfo procedure.
10395
10396Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
10397
10398Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
10399
10400Code and Data Size: Current and previous core subsystem library sizes are
10401shown below. These are the code and data sizes for the acpica.lib
10402produced
10403by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10404any ACPI driver or OSPM code. The debug version of the code includes the
10405debug output trace mechanism and has a much larger code and data size.
10406Note
10407that these values will vary depending on the efficiency of the compiler
10408and
10409the compiler options used during generation.
10410
10411  Previous Release:
10412    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
10413    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
10414  Current Release:
10415    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
10416    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
10417
10418
104192) iASL Compiler/Disassembler:
10420
10421Fixed a code generation problem in the constant folding optimization code
10422where incorrect code was generated if a constant was reduced to a buffer
10423object (i.e., a reduced type 5 opcode.)
10424
10425Fixed a typechecking problem for the ToBuffer operator. Caused by an
10426incorrect return type in the internal opcode information table.
10427
10428----------------------------------------
1042925 January 2005.  Summary of changes for version 20050125:
10430
104311) ACPI CA Core Subsystem:
10432
10433Fixed a recently introduced problem with the Global Lock where the
10434underlying semaphore was not created.  This problem was introduced in
10435version 20050114, and caused an AE_AML_NO_OPERAND exception during an
10436Acquire() operation on _GL.
10437
10438The local object cache is now optional, and is disabled by default. Both
10439AcpiExec and the iASL compiler enable the cache because they run in user
10440mode and this enhances their performance. #define
10441ACPI_ENABLE_OBJECT_CACHE
10442to enable the local cache.
10443
10444Fixed an issue in the internal function AcpiUtEvaluateObject concerning
10445the
10446optional "implicit return" support where an error was returned if no
10447return
10448object was expected, but one was implicitly returned. AE_OK is now
10449returned
10450in this case and the implicitly returned object is deleted.
10451AcpiUtEvaluateObject is only occasionally used, and only to execute
10452reserved
10453methods such as _STA and _INI where the return type is known up front.
10454
10455Fixed a few issues with the internal convert-to-integer code. It now
10456returns
10457an error if an attempt is made to convert a null string, a string of only
10458blanks/tabs, or a zero-length buffer. This affects both implicit
10459conversion
10460and explicit conversion via the ToInteger() operator.
10461
10462The internal debug code in AcpiUtAcquireMutex has been commented out. It
10463is
10464not needed for normal operation and should increase the performance of
10465the
10466entire subsystem. The code remains in case it is needed for debug
10467purposes
10468again.
10469
10470The AcpiExec source and makefile are included in the Unix/Linux package
10471for
10472the first time.
10473
10474Code and Data Size: Current and previous core subsystem library sizes are
10475shown below. These are the code and data sizes for the acpica.lib
10476produced
10477by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10478any ACPI driver or OSPM code. The debug version of the code includes the
10479debug output trace mechanism and has a much larger code and data size.
10480Note
10481that these values will vary depending on the efficiency of the compiler
10482and
10483the compiler options used during generation.
10484
10485  Previous Release:
10486    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
10487    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
10488  Current Release:
10489    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
10490    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
10491
104922) iASL Compiler/Disassembler:
10493
10494Switch/Case support: A warning is now issued if the type of the Switch
10495value
10496cannot be determined at compile time. For example, Switch(Arg0) will
10497generate the warning, and the type is assumed to be an integer. As per
10498the
10499ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
10500the
10501warning.
10502
10503Switch/Case support: Implemented support for buffer and string objects as
10504the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
10505buffers and strings.
10506
10507Switch/Case support: The emitted code for the LEqual() comparisons now
10508uses
10509the switch value as the first operand, not the second. The case value is
10510now
10511the second operand, and this allows the case value to be implicitly
10512converted to the type of the switch value, not the other way around.
10513
10514Switch/Case support: Temporary variables are now emitted immediately
10515within
10516the control method, not at the global level. This means that there are
10517now
1051836 temps available per-method, not 36 temps per-module as was the case
10519with
10520the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
10521
10522----------------------------------------
1052314 January 2005.  Summary of changes for version 20050114:
10524
10525Added 2005 copyright to all module headers.  This affects every module in
10526the core subsystem, iASL compiler, and the utilities.
10527
105281) ACPI CA Core Subsystem:
10529
10530Fixed an issue with the String-to-Buffer conversion code where the string
10531null terminator was not included in the buffer after conversion, but
10532there
10533is existing ASL that assumes the string null terminator is included. This
10534is
10535the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
10536introduced in the previous version when the code was updated to correctly
10537set the converted buffer size as per the ACPI specification. The ACPI
10538spec
10539is ambiguous and will be updated to specify that the null terminator must
10540be
10541included in the converted buffer. This also affects the ToBuffer() ASL
10542operator.
10543
10544Fixed a problem with the Mid() ASL/AML operator where it did not work
10545correctly on Buffer objects. Newly created sub-buffers were not being
10546marked
10547as initialized.
10548
10549
10550Fixed a problem in AcpiTbFindTable where incorrect string compares were
10551performed on the OemId and OemTableId table header fields.  These fields
10552are
10553not null terminated, so strncmp is now used instead of strcmp.
10554
10555Implemented a restriction on the Store() ASL/AML operator to align the
10556behavior with the ACPI specification.  Previously, any object could be
10557used
10558as the source operand.  Now, the only objects that may be used are
10559Integers,
10560Buffers, Strings, Packages, Object References, and DDB Handles.  If
10561necessary, the original behavior can be restored by enabling the
10562EnableInterpreterSlack flag.
10563
10564Enhanced the optional "implicit return" support to allow an implicit
10565return
10566value from methods that are invoked externally via the AcpiEvaluateObject
10567interface.  This enables implicit returns from the _STA and _INI methods,
10568for example.
10569
10570Changed the Revision() ASL/AML operator to return the current version of
10571the
10572AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
10573returned
10574the supported ACPI version (This is the function of the _REV method).
10575
10576Updated the _REV predefined method to return the currently supported
10577version
10578of ACPI, now 3.
10579
10580Implemented batch mode option for the AcpiExec utility (-b).
10581
10582Code and Data Size: Current and previous core subsystem library sizes are
10583shown below. These are the code and data sizes for the acpica.lib
10584produced
10585by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10586any ACPI driver or OSPM code. The debug version of the code includes the
10587debug output trace mechanism and has a much larger code and data size.
10588Note
10589that these values will vary depending on the efficiency of the compiler
10590and
10591the compiler options used during generation.
10592
10593  Previous Release:
10594    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10595    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
10596  Current Release:
10597    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
10598    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
10599
10600----------------------------------------
1060110 December 2004.  Summary of changes for version 20041210:
10602
10603ACPI 3.0 support is nearing completion in both the iASL compiler and the
10604ACPI CA core subsystem.
10605
106061) ACPI CA Core Subsystem:
10607
10608Fixed a problem in the ToDecimalString operator where the resulting
10609string
10610length was incorrectly calculated. The length is now calculated exactly,
10611eliminating incorrect AE_STRING_LIMIT exceptions.
10612
10613Fixed a problem in the ToHexString operator to allow a maximum 200
10614character
10615string to be produced.
10616
10617Fixed a problem in the internal string-to-buffer and buffer-to-buffer
10618copy
10619routine where the length of the resulting buffer was not truncated to the
10620new size (if the target buffer already existed).
10621
10622Code and Data Size: Current and previous core subsystem library sizes are
10623shown below. These are the code and data sizes for the acpica.lib
10624produced
10625by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10626any ACPI driver or OSPM code. The debug version of the code includes the
10627debug output trace mechanism and has a much larger code and data size.
10628Note
10629that these values will vary depending on the efficiency of the compiler
10630and
10631the compiler options used during generation.
10632
10633  Previous Release:
10634    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10635    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
10636  Current Release:
10637    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10638    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
10639
10640
106412) iASL Compiler/Disassembler:
10642
10643Implemented the new ACPI 3.0 resource template macros - DWordSpace,
10644ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
10645Includes support in the disassembler.
10646
10647Implemented support for the new (ACPI 3.0) parameter to the Register
10648macro,
10649AccessSize.
10650
10651Fixed a problem where the _HE resource name for the Interrupt macro was
10652referencing bit 0 instead of bit 1.
10653
10654Implemented check for maximum 255 interrupts in the Interrupt macro.
10655
10656Fixed a problem with the predefined resource descriptor names where
10657incorrect AML code was generated if the offset within the resource buffer
10658was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
10659but did not update the surrounding package lengths.
10660
10661Changes to the Dma macro:  All channels within the channel list must be
10662in
10663the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
10664optional (default is BusMaster).
10665
10666Implemented check for maximum 7 data bytes for the VendorShort macro.
10667
10668The ReadWrite parameter is now optional for the Memory32 and similar
10669macros.
10670
10671----------------------------------------
1067203 December 2004.  Summary of changes for version 20041203:
10673
106741) ACPI CA Core Subsystem:
10675
10676The low-level field insertion/extraction code (exfldio) has been
10677completely
10678rewritten to eliminate unnecessary complexity, bugs, and boundary
10679conditions.
10680
10681Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
10682ToDecimalString
10683operators where the input operand could be inadvertently deleted if no
10684conversion was necessary (e.g., if the input to ToInteger was an Integer
10685object.)
10686
10687Fixed a problem with the ToDecimalString and ToHexString where an
10688incorrect
10689exception code was returned if the resulting string would be > 200 chars.
10690AE_STRING_LIMIT is now returned.
10691
10692Fixed a problem with the Concatenate operator where AE_OK was always
10693returned, even if the operation failed.
10694
10695Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
10696semaphores to be allocated.
10697
10698Code and Data Size: Current and previous core subsystem library sizes are
10699shown below. These are the code and data sizes for the acpica.lib
10700produced
10701by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10702any ACPI driver or OSPM code. The debug version of the code includes the
10703debug output trace mechanism and has a much larger code and data size.
10704Note
10705that these values will vary depending on the efficiency of the compiler
10706and
10707the compiler options used during generation.
10708
10709  Previous Release:
10710    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10711    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10712  Current Release:
10713    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10714    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
10715
10716
107172) iASL Compiler/Disassembler:
10718
10719Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
10720recently introduced in 20041119.
10721
10722Fixed a problem with the ToUUID macro where the upper nybble of each
10723buffer
10724byte was inadvertently set to zero.
10725
10726----------------------------------------
1072719 November 2004.  Summary of changes for version 20041119:
10728
107291) ACPI CA Core Subsystem:
10730
10731Fixed a problem in the internal ConvertToInteger routine where new
10732integers
10733were not truncated to 32 bits for 32-bit ACPI tables. This routine
10734converts
10735buffers and strings to integers.
10736
10737Implemented support to store a value to an Index() on a String object.
10738This
10739is an ACPI 2.0 feature that had not yet been implemented.
10740
10741Implemented new behavior for storing objects to individual package
10742elements
10743(via the Index() operator). The previous behavior was to invoke the
10744implicit
10745conversion rules if an object was already present at the index.  The new
10746behavior is to simply delete any existing object and directly store the
10747new
10748object. Although the ACPI specification seems unclear on this subject,
10749other
10750ACPI implementations behave in this manner.  (This is the root of the
10751AE_BAD_HEX_CONSTANT issue.)
10752
10753Modified the RSDP memory scan mechanism to support the extended checksum
10754for
10755ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
10756RSDP signature is found with a valid checksum.
10757
10758Code and Data Size: Current and previous core subsystem library sizes are
10759shown below. These are the code and data sizes for the acpica.lib
10760produced
10761by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10762any ACPI driver or OSPM code. The debug version of the code includes the
10763debug output trace mechanism and has a much larger code and data size.
10764Note
10765that these values will vary depending on the efficiency of the compiler
10766and
10767the compiler options used during generation.
10768
10769  Previous Release:
10770    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10771    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10772  Current Release:
10773    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10774    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10775
10776
107772) iASL Compiler/Disassembler:
10778
10779Fixed a missing semicolon in the aslcompiler.y file.
10780
10781----------------------------------------
1078205 November 2004.  Summary of changes for version 20041105:
10783
107841) ACPI CA Core Subsystem:
10785
10786Implemented support for FADT revision 2.  This was an interim table
10787(between
10788ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
10789
10790Implemented optional support to allow uninitialized LocalX and ArgX
10791variables in a control method.  The variables are initialized to an
10792Integer
10793object with a value of zero.  This support is enabled by setting the
10794AcpiGbl_EnableInterpreterSlack flag to TRUE.
10795
10796Implemented support for Integer objects for the SizeOf operator.  Either
107974
10798or 8 is returned, depending on the current integer size (32-bit or 64-
10799bit,
10800depending on the parent table revision).
10801
10802Fixed a problem in the implementation of the SizeOf and ObjectType
10803operators
10804where the operand was resolved to a value too early, causing incorrect
10805return values for some objects.
10806
10807Fixed some possible memory leaks during exceptional conditions.
10808
10809Code and Data Size: Current and previous core subsystem library sizes are
10810shown below. These are the code and data sizes for the acpica.lib
10811produced
10812by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10813any ACPI driver or OSPM code. The debug version of the code includes the
10814debug output trace mechanism and has a much larger code and data size.
10815Note
10816that these values will vary depending on the efficiency of the compiler
10817and
10818the compiler options used during generation.
10819
10820  Previous Release:
10821    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10822    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10823  Current Release:
10824    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10825    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10826
10827
108282) iASL Compiler/Disassembler:
10829
10830Implemented support for all ACPI 3.0 reserved names and methods.
10831
10832Implemented all ACPI 3.0 grammar elements in the front-end, including
10833support for semicolons.
10834
10835Implemented the ACPI 3.0 Function() and ToUUID() macros
10836
10837Fixed a problem in the disassembler where a Scope() operator would not be
10838emitted properly if the target of the scope was in another table.
10839
10840----------------------------------------
1084115 October 2004.  Summary of changes for version 20041015:
10842
10843Note:  ACPI CA is currently undergoing an in-depth and complete formal
10844evaluation to test/verify the following areas. Other suggestions are
10845welcome. This will result in an increase in the frequency of releases and
10846the number of bug fixes in the next few months.
10847  - Functional tests for all ASL/AML operators
10848  - All implicit/explicit type conversions
10849  - Bit fields and operation regions
10850  - 64-bit math support and 32-bit-only "truncated" math support
10851  - Exceptional conditions, both compiler and interpreter
10852  - Dynamic object deletion and memory leaks
10853  - ACPI 3.0 support when implemented
10854  - External interfaces to the ACPI subsystem
10855
10856
108571) ACPI CA Core Subsystem:
10858
10859Fixed two alignment issues on 64-bit platforms - within debug statements
10860in
10861AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
10862Address
10863field within the non-aligned ACPI generic address structure.
10864
10865Fixed a problem in the Increment and Decrement operators where incorrect
10866operand resolution could result in the inadvertent modification of the
10867original integer when the integer is passed into another method as an
10868argument and the arg is then incremented/decremented.
10869
10870Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
10871bit
10872BCD number were truncated during conversion.
10873
10874Fixed a problem in the ToDecimal operator where the length of the
10875resulting
10876string could be set incorrectly too long if the input operand was a
10877Buffer
10878object.
10879
10880Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
10881(0)
10882within a buffer would prematurely terminate a compare between buffer
10883objects.
10884
10885Added a check for string overflow (>200 characters as per the ACPI
10886specification) during the Concatenate operator with two string operands.
10887
10888Code and Data Size: Current and previous core subsystem library sizes are
10889shown below. These are the code and data sizes for the acpica.lib
10890produced
10891by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10892any ACPI driver or OSPM code. The debug version of the code includes the
10893debug output trace mechanism and has a much larger code and data size.
10894Note
10895that these values will vary depending on the efficiency of the compiler
10896and
10897the compiler options used during generation.
10898
10899  Previous Release:
10900    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10901    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10902  Current Release:
10903    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10904    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10905
10906
10907
109082) iASL Compiler/Disassembler:
10909
10910Allow the use of the ObjectType operator on uninitialized Locals and Args
10911(returns 0 as per the ACPI specification).
10912
10913Fixed a problem where the compiler would fault if there was a syntax
10914error
10915in the FieldName of all of the various CreateXXXField operators.
10916
10917Disallow the use of lower case letters within the EISAID macro, as per
10918the
10919ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
10920Where
10921U is an uppercase letter and N is a hex digit.
10922
10923
10924----------------------------------------
1092506 October 2004.  Summary of changes for version 20041006:
10926
109271) ACPI CA Core Subsystem:
10928
10929Implemented support for the ACPI 3.0 Timer operator. This ASL function
10930implements a 64-bit timer with 100 nanosecond granularity.
10931
10932Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
10933implement the ACPI 3.0 Timer operator.  This allows the host OS to
10934implement
10935the timer with the best clock available. Also, it keeps the core
10936subsystem
10937out of the clock handling business, since the host OS (usually) performs
10938this function.
10939
10940Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
10941functions use a 64-bit address which is part of the packed ACPI Generic
10942Address Structure. Since the structure is non-aligned, the alignment
10943macros
10944are now used to extract the address to a local variable before use.
10945
10946Fixed a problem where the ToInteger operator assumed all input strings
10947were
10948hexadecimal. The operator now handles both decimal strings and hex
10949strings
10950(prefixed with "0x").
10951
10952Fixed a problem where the string length in the string object created as a
10953result of the internal ConvertToString procedure could be incorrect. This
10954potentially affected all implicit conversions and also the
10955ToDecimalString
10956and ToHexString operators.
10957
10958Fixed two problems in the ToString operator. If the length parameter was
10959zero, an incorrect string object was created and the value of the input
10960length parameter was inadvertently changed from zero to Ones.
10961
10962Fixed a problem where the optional ResourceSource string in the
10963ExtendedIRQ
10964resource macro was ignored.
10965
10966Simplified the interfaces to the internal division functions, reducing
10967code
10968size and complexity.
10969
10970Code and Data Size: Current and previous core subsystem library sizes are
10971shown below. These are the code and data sizes for the acpica.lib
10972produced
10973by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10974any ACPI driver or OSPM code. The debug version of the code includes the
10975debug output trace mechanism and has a much larger code and data size.
10976Note
10977that these values will vary depending on the efficiency of the compiler
10978and
10979the compiler options used during generation.
10980
10981  Previous Release:
10982    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10983    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10984  Current Release:
10985    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10986    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10987
10988
109892) iASL Compiler/Disassembler:
10990
10991Implemented support for the ACPI 3.0 Timer operator.
10992
10993Fixed a problem where the Default() operator was inadvertently ignored in
10994a
10995Switch/Case block.  This was a problem in the translation of the Switch
10996statement to If...Else pairs.
10997
10998Added support to allow a standalone Return operator, with no parentheses
10999(or
11000operands).
11001
11002Fixed a problem with code generation for the ElseIf operator where the
11003translated Else...If parse tree was improperly constructed leading to the
11004loss of some code.
11005
11006----------------------------------------
1100722 September 2004.  Summary of changes for version 20040922:
11008
110091) ACPI CA Core Subsystem:
11010
11011Fixed a problem with the implementation of the LNot() operator where
11012"Ones"
11013was not returned for the TRUE case. Changed the code to return Ones
11014instead
11015of (!Arg) which was usually 1. This change affects iASL constant folding
11016for
11017this operator also.
11018
11019Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
11020not
11021initialized properly -- Now zero the entire buffer in this case where the
11022buffer already exists.
11023
11024Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
11025Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
11026related code considerably. This will require changes/updates to all OS
11027interface layers (OSLs.)
11028
11029Implemented a new external interface, AcpiInstallExceptionHandler, to
11030allow
11031a system exception handler to be installed. This handler is invoked upon
11032any
11033run-time exception that occurs during control method execution.
11034
11035Added support for the DSDT in AcpiTbFindTable. This allows the
11036DataTableRegion() operator to access the local copy of the DSDT.
11037
11038Code and Data Size: Current and previous core subsystem library sizes are
11039shown below. These are the code and data sizes for the acpica.lib
11040produced
11041by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11042any ACPI driver or OSPM code. The debug version of the code includes the
11043debug output trace mechanism and has a much larger code and data size.
11044Note
11045that these values will vary depending on the efficiency of the compiler
11046and
11047the compiler options used during generation.
11048
11049  Previous Release:
11050    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
11051    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
11052  Current Release:
11053    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
11054    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
11055
11056
110572) iASL Compiler/Disassembler:
11058
11059Fixed a problem with constant folding and the LNot operator. LNot was
11060returning 1 in the TRUE case, not Ones as per the ACPI specification.
11061This
11062could result in the generation of an incorrect folded/reduced constant.
11063
11064End-Of-File is now allowed within a "//"-style comment.  A parse error no
11065longer occurs if such a comment is at the very end of the input ASL
11066source
11067file.
11068
11069Implemented the "-r" option to override the Revision in the table header.
11070The initial use of this option will be to simplify the evaluation of the
11071AML
11072interpreter by allowing a single ASL source module to be compiled for
11073either
1107432-bit or 64-bit integers.
11075
11076
11077----------------------------------------
1107827 August 2004.  Summary of changes for version 20040827:
11079
110801) ACPI CA Core Subsystem:
11081
11082- Implemented support for implicit object conversion in the non-numeric
11083logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
11084and
11085LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
11086the second operand is implicitly converted on the fly to match the type
11087of
11088the first operand.  For example:
11089
11090    LEqual (Source1, Source2)
11091
11092Source1 and Source2 must each evaluate to an integer, a string, or a
11093buffer.
11094The data type of Source1 dictates the required type of Source2. Source2
11095is
11096implicitly converted if necessary to match the type of Source1.
11097
11098- Updated and corrected the behavior of the string conversion support.
11099The
11100rules concerning conversion of buffers to strings (according to the ACPI
11101specification) are as follows:
11102
11103ToDecimalString - explicit byte-wise conversion of buffer to string of
11104decimal values (0-255) separated by commas. ToHexString - explicit byte-
11105wise
11106conversion of buffer to string of hex values (0-FF) separated by commas.
11107ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
11108byte
11109copy with no transform except NULL terminated. Any other implicit buffer-
11110to-
11111string conversion - byte-wise conversion of buffer to string of hex
11112values
11113(0-FF) separated by spaces.
11114
11115- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
11116
11117- Fixed a problem in AcpiNsGetPathnameLength where the returned length
11118was
11119one byte too short in the case of a node in the root scope.  This could
11120cause a fault during debug output.
11121
11122- Code and Data Size: Current and previous core subsystem library sizes
11123are
11124shown below.  These are the code and data sizes for the acpica.lib
11125produced
11126by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11127any ACPI driver or OSPM code.  The debug version of the code includes the
11128debug output trace mechanism and has a much larger code and data size.
11129Note
11130that these values will vary depending on the efficiency of the compiler
11131and
11132the compiler options used during generation.
11133
11134  Previous Release:
11135    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
11136    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
11137  Current Release:
11138    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
11139    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
11140
11141
111422) iASL Compiler/Disassembler:
11143
11144- Fixed a Linux generation error.
11145
11146
11147----------------------------------------
1114816 August 2004.  Summary of changes for version 20040816:
11149
111501) ACPI CA Core Subsystem:
11151
11152Designed and implemented support within the AML interpreter for the so-
11153called "implicit return".  This support returns the result of the last
11154ASL
11155operation within a control method, in the absence of an explicit Return()
11156operator.  A few machines depend on this behavior, even though it is not
11157explicitly supported by the ASL language.  It is optional support that
11158can
11159be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
11160
11161Removed support for the PCI_Config address space from the internal low
11162level
11163hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
11164support was not used internally, and would not work correctly anyway
11165because
11166the PCI bus number and segment number were not supported.  There are
11167separate interfaces for PCI configuration space access because of the
11168unique
11169interface.
11170
11171Code and Data Size: Current and previous core subsystem library sizes are
11172shown below.  These are the code and data sizes for the acpica.lib
11173produced
11174by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11175any ACPI driver or OSPM code.  The debug version of the code includes the
11176debug output trace mechanism and has a much larger code and data size.
11177Note
11178that these values will vary depending on the efficiency of the compiler
11179and
11180the compiler options used during generation.
11181
11182  Previous Release:
11183    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11184    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
11185  Current Release:
11186    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
11187    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
11188
11189
111902) iASL Compiler/Disassembler:
11191
11192Fixed a problem where constants in ASL expressions at the root level (not
11193within a control method) could be inadvertently truncated during code
11194generation.  This problem was introduced in the 20040715 release.
11195
11196
11197----------------------------------------
1119815 July 2004.  Summary of changes for version 20040715:
11199
112001) ACPI CA Core Subsystem:
11201
11202Restructured the internal HW GPE interfaces to pass/track the current
11203state
11204of interrupts (enabled/disabled) in order to avoid possible deadlock and
11205increase flexibility of the interfaces.
11206
11207Implemented a "lexicographical compare" for String and Buffer objects
11208within
11209the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
11210-
11211as per further clarification to the ACPI specification.  Behavior is
11212similar
11213to C library "strcmp".
11214
11215Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
11216external function.  In the 32-bit non-debug case, the stack use has been
11217reduced from 168 bytes to 32 bytes.
11218
11219Deployed a new run-time configuration flag,
11220AcpiGbl_EnableInterpreterSlack,
11221whose purpose is to allow the AML interpreter to forgive certain bad AML
11222constructs.  Default setting is FALSE.
11223
11224Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
11225IO
11226support code.  If enabled, it allows field access to go beyond the end of
11227a
11228region definition if the field is within the region length rounded up to
11229the
11230next access width boundary (a common coding error.)
11231
11232Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
11233ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
11234these
11235symbols are lowercased by the latest version of the AcpiSrc tool.
11236
11237The prototypes for the PCI interfaces in acpiosxf.h have been updated to
11238rename "Register" to simply "Reg" to prevent certain compilers from
11239complaining.
11240
11241Code and Data Size: Current and previous core subsystem library sizes are
11242shown below.  These are the code and data sizes for the acpica.lib
11243produced
11244by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11245any ACPI driver or OSPM code.  The debug version of the code includes the
11246debug output trace mechanism and has a much larger code and data size.
11247Note
11248that these values will vary depending on the efficiency of the compiler
11249and
11250the compiler options used during generation.
11251
11252  Previous Release:
11253    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11254    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
11255  Current Release:
11256    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11257    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
11258
11259
112602) iASL Compiler/Disassembler:
11261
11262Implemented full support for Package objects within the Case() operator.
11263Note: The Break() operator is currently not supported within Case blocks
11264(TermLists) as there is some question about backward compatibility with
11265ACPI
112661.0 interpreters.
11267
11268
11269Fixed a problem where complex terms were not supported properly within
11270the
11271Switch() operator.
11272
11273Eliminated extraneous warning for compiler-emitted reserved names of the
11274form "_T_x".  (Used in Switch/Case operators.)
11275
11276Eliminated optimization messages for "_T_x" objects and small constants
11277within the DefinitionBlock operator.
11278
11279
11280----------------------------------------
1128115 June 2004.  Summary of changes for version 20040615:
11282
112831) ACPI CA Core Subsystem:
11284
11285Implemented support for Buffer and String objects (as per ACPI 2.0) for
11286the
11287following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
11288LLessEqual.
11289
11290All directory names in the entire source package are lower case, as they
11291were in earlier releases.
11292
11293Implemented "Disassemble" command in the AML debugger that will
11294disassemble
11295a single control method.
11296
11297Code and Data Size: Current and previous core subsystem library sizes are
11298shown below.  These are the code and data sizes for the acpica.lib
11299produced
11300by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11301any ACPI driver or OSPM code.  The debug version of the code includes the
11302debug output trace mechanism and has a much larger code and data size.
11303Note
11304that these values will vary depending on the efficiency of the compiler
11305and
11306the compiler options used during generation.
11307
11308  Previous Release:
11309    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
11310    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
11311
11312  Current Release:
11313    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11314    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
11315
11316
113172) iASL Compiler/Disassembler:
11318
11319Implemented support for Buffer and String objects (as per ACPI 2.0) for
11320the
11321following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
11322LLessEqual.
11323
11324All directory names in the entire source package are lower case, as they
11325were in earlier releases.
11326
11327Fixed a fault when using the -g or -d<nofilename> options if the FADT was
11328not found.
11329
11330Fixed an issue with the Windows version of the compiler where later
11331versions
11332of Windows place the FADT in the registry under the name "FADT" and not
11333"FACP" as earlier versions did.  This applies when using the -g or -
11334d<nofilename> options.  The compiler now looks for both strings as
11335necessary.
11336
11337Fixed a problem with compiler namepath optimization where a namepath
11338within
11339the Scope() operator could not be optimized if the namepath was a subpath
11340of
11341the current scope path.
11342
11343----------------------------------------
1134427 May 2004.  Summary of changes for version 20040527:
11345
113461) ACPI CA Core Subsystem:
11347
11348Completed a new design and implementation for EBDA (Extended BIOS Data
11349Area)
11350support in the RSDP scan code.  The original code improperly scanned for
11351the
11352EBDA by simply scanning from memory location 0 to 0x400.  The correct
11353method
11354is to first obtain the EBDA pointer from within the BIOS data area, then
11355scan 1K of memory starting at the EBDA pointer.  There appear to be few
11356if
11357any machines that place the RSDP in the EBDA, however.
11358
11359Integrated a fix for a possible fault during evaluation of BufferField
11360arguments.  Obsolete code that was causing the problem was removed.
11361
11362Found and fixed a problem in the Field Support Code where data could be
11363corrupted on a bit field read that starts on an aligned boundary but does
11364not end on an aligned boundary.  Merged the read/write "datum length"
11365calculation code into a common procedure.
11366
11367Rolled in a couple of changes to the FreeBSD-specific header.
11368
11369
11370Code and Data Size: Current and previous core subsystem library sizes are
11371shown below.  These are the code and data sizes for the acpica.lib
11372produced
11373by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11374any ACPI driver or OSPM code.  The debug version of the code includes the
11375debug output trace mechanism and has a much larger code and data size.
11376Note
11377that these values will vary depending on the efficiency of the compiler
11378and
11379the compiler options used during generation.
11380
11381  Previous Release:
11382    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11383    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
11384  Current Release:
11385    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
11386    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
11387
11388
113892) iASL Compiler/Disassembler:
11390
11391Fixed a generation warning produced by some overly-verbose compilers for
11392a
1139364-bit constant.
11394
11395----------------------------------------
1139614 May 2004.  Summary of changes for version 20040514:
11397
113981) ACPI CA Core Subsystem:
11399
11400Fixed a problem where hardware GPE enable bits sometimes not set properly
11401during and after GPE method execution.  Result of 04/27 changes.
11402
11403Removed extra "clear all GPEs" when sleeping/waking.
11404
11405Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
11406AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
11407to
11408the new AcpiEv* calls as appropriate.
11409
11410ACPI_OS_NAME was removed from the OS-specific headers.  The default name
11411is
11412now "Microsoft Windows NT" for maximum compatibility.  However this can
11413be
11414changed by modifying the acconfig.h file.
11415
11416Allow a single invocation of AcpiInstallNotifyHandler for a handler that
11417traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
11418
11419Run _INI methods on ThermalZone objects.  This is against the ACPI
11420specification, but there is apparently ASL code in the field that has
11421these
11422_INI methods, and apparently "other" AML interpreters execute them.
11423
11424Performed a full 16/32/64 bit lint that resulted in some small changes.
11425
11426Added a sleep simulation command to the AML debugger to test sleep code.
11427
11428Code and Data Size: Current and previous core subsystem library sizes are
11429shown below.  These are the code and data sizes for the acpica.lib
11430produced
11431by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11432any ACPI driver or OSPM code.  The debug version of the code includes the
11433debug output trace mechanism and has a much larger code and data size.
11434Note
11435that these values will vary depending on the efficiency of the compiler
11436and
11437the compiler options used during generation.
11438
11439  Previous Release:
11440    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11441    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
11442  Current Release:
11443    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11444    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
11445
11446----------------------------------------
1144727 April 2004.  Summary of changes for version 20040427:
11448
114491) ACPI CA Core Subsystem:
11450
11451Completed a major overhaul of the GPE handling within ACPI CA.  There are
11452now three types of GPEs:  wake-only, runtime-only, and combination
11453wake/run.
11454The only GPEs allowed to be combination wake/run are for button-style
11455devices such as a control-method power button, control-method sleep
11456button,
11457or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
11458not
11459referenced by any _PRW methods are marked for "runtime" and hardware
11460enabled.  Any GPE that is referenced by a _PRW method is marked for
11461"wake"
11462(and disabled at runtime).  However, at sleep time, only those GPEs that
11463have been specifically enabled for wake via the AcpiEnableGpe interface
11464will
11465actually be hardware enabled.
11466
11467A new external interface has been added, AcpiSetGpeType(), that is meant
11468to
11469be used by device drivers to force a GPE to a particular type.  It will
11470be
11471especially useful for the drivers for the button devices mentioned above.
11472
11473Completed restructuring of the ACPI CA initialization sequence so that
11474default operation region handlers are installed before GPEs are
11475initialized
11476and the _PRW methods are executed.  This will prevent errors when the
11477_PRW
11478methods attempt to access system memory or I/O space.
11479
11480GPE enable/disable no longer reads the GPE enable register.  We now keep
11481the
11482enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
11483thus no longer depend on the hardware to maintain these bits.
11484
11485Always clear the wake status and fixed/GPE status bits before sleep, even
11486for state S5.
11487
11488Improved the AML debugger output for displaying the GPE blocks and their
11489current status.
11490
11491Added new strings for the _OSI method, of the form "Windows 2001 SPx"
11492where
11493x = 0,1,2,3,4.
11494
11495Fixed a problem where the physical address was incorrectly calculated
11496when
11497the Load() operator was used to directly load from an Operation Region
11498(vs.
11499loading from a Field object.)  Also added check for minimum table length
11500for
11501this case.
11502
11503Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
11504mutex release.
11505
11506Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
11507consistency with the other fields returned.
11508
11509Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
11510structure for each GPE in the system, so the size of this structure is
11511important.
11512
11513CPU stack requirement reduction:  Cleaned up the method execution and
11514object
11515evaluation paths so that now a parameter structure is passed, instead of
11516copying the various method parameters over and over again.
11517
11518In evregion.c:  Correctly exit and reenter the interpreter region if and
11519only if dispatching an operation region request to a user-installed
11520handler.
11521Do not exit/reenter when dispatching to a default handler (e.g., default
11522system memory or I/O handlers)
11523
11524
11525Notes for updating drivers for the new GPE support.  The following
11526changes
11527must be made to ACPI-related device drivers that are attached to one or
11528more
11529GPEs: (This information will be added to the ACPI CA Programmer
11530Reference.)
11531
115321) AcpiInstallGpeHandler no longer automatically enables the GPE, you
11533must
11534explicitly call AcpiEnableGpe.
115352) There is a new interface called AcpiSetGpeType. This should be called
11536before enabling the GPE.  Also, this interface will automatically disable
11537the GPE if it is currently enabled.
115383) AcpiEnableGpe no longer supports a GPE type flag.
11539
11540Specific drivers that must be changed:
115411) EC driver:
11542    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
11543AeGpeHandler, NULL);
11544    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
11545    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
11546
115472) Button Drivers (Power, Lid, Sleep):
11548Run _PRW method under parent device
11549If _PRW exists: /* This is a control-method button */
11550    Extract GPE number and possibly GpeDevice
11551    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
11552    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
11553
11554For all other devices that have _PRWs, we automatically set the GPE type
11555to
11556ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
11557This
11558must be done on a selective basis, usually requiring some kind of user
11559app
11560to allow the user to pick the wake devices.
11561
11562
11563Code and Data Size: Current and previous core subsystem library sizes are
11564shown below.  These are the code and data sizes for the acpica.lib
11565produced
11566by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11567any ACPI driver or OSPM code.  The debug version of the code includes the
11568debug output trace mechanism and has a much larger code and data size.
11569Note
11570that these values will vary depending on the efficiency of the compiler
11571and
11572the compiler options used during generation.
11573
11574  Previous Release:
11575    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
11576    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
11577  Current Release:
11578
11579    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11580    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
11581
11582
11583
11584----------------------------------------
1158502 April 2004.  Summary of changes for version 20040402:
11586
115871) ACPI CA Core Subsystem:
11588
11589Fixed an interpreter problem where an indirect store through an ArgX
11590parameter was incorrectly applying the "implicit conversion rules" during
11591the store.  From the ACPI specification: "If the target is a method local
11592or
11593argument (LocalX or ArgX), no conversion is performed and the result is
11594stored directly to the target".  The new behavior is to disable implicit
11595conversion during ALL stores to an ArgX.
11596
11597Changed the behavior of the _PRW method scan to ignore any and all errors
11598returned by a given _PRW.  This prevents the scan from aborting from the
11599failure of any single _PRW.
11600
11601Moved the runtime configuration parameters from the global init procedure
11602to
11603static variables in acglobal.h.  This will allow the host to override the
11604default values easily.
11605
11606Code and Data Size: Current and previous core subsystem library sizes are
11607shown below.  These are the code and data sizes for the acpica.lib
11608produced
11609by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11610any ACPI driver or OSPM code.  The debug version of the code includes the
11611debug output trace mechanism and has a much larger code and data size.
11612Note
11613that these values will vary depending on the efficiency of the compiler
11614and
11615the compiler options used during generation.
11616
11617  Previous Release:
11618    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
11619    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
11620  Current Release:
11621    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
11622    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
11623
11624
116252) iASL Compiler/Disassembler:
11626
11627iASL now fully disassembles SSDTs.  However, External() statements are
11628not
11629generated automatically for unresolved symbols at this time.  This is a
11630planned feature for future implementation.
11631
11632Fixed a scoping problem in the disassembler that occurs when the type of
11633the
11634target of a Scope() operator is overridden.  This problem caused an
11635incorrectly nested internal namespace to be constructed.
11636
11637Any warnings or errors that are emitted during disassembly are now
11638commented
11639out automatically so that the resulting file can be recompiled without
11640any
11641hand editing.
11642
11643----------------------------------------
1164426 March 2004.  Summary of changes for version 20040326:
11645
116461) ACPI CA Core Subsystem:
11647
11648Implemented support for "wake" GPEs via interaction between GPEs and the
11649_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
11650identified as a WAKE GPE and by default will no longer be enabled at
11651runtime.  Previously, we were blindly enabling all GPEs with a
11652corresponding
11653_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
11654We
11655believe this has been the cause of thousands of "spurious" GPEs on some
11656systems.
11657
11658This new GPE behavior is can be reverted to the original behavior (enable
11659ALL GPEs at runtime) via a runtime flag.
11660
11661Fixed a problem where aliased control methods could not access objects
11662properly.  The proper scope within the namespace was not initialized
11663(transferred to the target of the aliased method) before executing the
11664target method.
11665
11666Fixed a potential race condition on internal object deletion on the
11667return
11668object in AcpiEvaluateObject.
11669
11670Integrated a fix for resource descriptors where both _MEM and _MTP were
11671being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
11672wide, 0x0F instead of 0x03.)
11673
11674Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
11675preventing
11676a
11677fault in some cases.
11678
11679Updated Notify() values for debug statements in evmisc.c
11680
11681Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
11682
11683Code and Data Size: Current and previous core subsystem library sizes are
11684shown below.  These are the code and data sizes for the acpica.lib
11685produced
11686by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11687any ACPI driver or OSPM code.  The debug version of the code includes the
11688debug output trace mechanism and has a much larger code and data size.
11689Note
11690that these values will vary depending on the efficiency of the compiler
11691and
11692the compiler options used during generation.
11693
11694  Previous Release:
11695
11696    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11697    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11698  Current Release:
11699    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
11700    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
11701
11702----------------------------------------
1170311 March 2004.  Summary of changes for version 20040311:
11704
117051) ACPI CA Core Subsystem:
11706
11707Fixed a problem where errors occurring during the parse phase of control
11708method execution did not abort cleanly.  For example, objects created and
11709installed in the namespace were not deleted.  This caused all subsequent
11710invocations of the method to return the AE_ALREADY_EXISTS exception.
11711
11712Implemented a mechanism to force a control method to "Serialized"
11713execution
11714if the method attempts to create namespace objects. (The root of the
11715AE_ALREADY_EXISTS problem.)
11716
11717Implemented support for the predefined _OSI "internal" control method.
11718Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
11719and
11720"Windows 2001.1", and can be easily upgraded for new strings as
11721necessary.
11722This feature will allow "other" operating systems to execute the fully
11723tested, "Windows" code path through the ASL code
11724
11725Global Lock Support:  Now allows multiple acquires and releases with any
11726internal thread.  Removed concept of "owning thread" for this special
11727mutex.
11728
11729Fixed two functions that were inappropriately declaring large objects on
11730the
11731CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
11732during
11733method execution considerably.
11734
11735Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
11736S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
11737
11738Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
11739defined on the machine.
11740
11741Implemented two runtime options:  One to force all control method
11742execution
11743to "Serialized" to mimic Windows behavior, another to disable _OSI
11744support
11745if it causes problems on a given machine.
11746
11747Code and Data Size: Current and previous core subsystem library sizes are
11748shown below.  These are the code and data sizes for the acpica.lib
11749produced
11750by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11751any ACPI driver or OSPM code.  The debug version of the code includes the
11752debug output trace mechanism and has a much larger code and data size.
11753Note
11754that these values will vary depending on the efficiency of the compiler
11755and
11756the compiler options used during generation.
11757
11758  Previous Release:
11759    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11760    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11761  Current Release:
11762    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11763    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11764
117652) iASL Compiler/Disassembler:
11766
11767Fixed an array size problem for FreeBSD that would cause the compiler to
11768fault.
11769
11770----------------------------------------
1177120 February 2004.  Summary of changes for version 20040220:
11772
11773
117741) ACPI CA Core Subsystem:
11775
11776Implemented execution of _SxD methods for Device objects in the
11777GetObjectInfo interface.
11778
11779Fixed calls to _SST method to pass the correct arguments.
11780
11781Added a call to _SST on wake to restore to "working" state.
11782
11783Check for End-Of-Buffer failure case in the WalkResources interface.
11784
11785Integrated fix for 64-bit alignment issue in acglobal.h by moving two
11786structures to the beginning of the file.
11787
11788After wake, clear GPE status register(s) before enabling GPEs.
11789
11790After wake, clear/enable power button.  (Perhaps we should clear/enable
11791all
11792fixed events upon wake.)
11793
11794Fixed a couple of possible memory leaks in the Namespace manager.
11795
11796Integrated latest acnetbsd.h file.
11797
11798----------------------------------------
1179911 February 2004.  Summary of changes for version 20040211:
11800
11801
118021) ACPI CA Core Subsystem:
11803
11804Completed investigation and implementation of the call-by-reference
11805mechanism for control method arguments.
11806
11807Fixed a problem where a store of an object into an indexed package could
11808fail if the store occurs within a different method than the method that
11809created the package.
11810
11811Fixed a problem where the ToDecimal operator could return incorrect
11812results.
11813
11814Fixed a problem where the CopyObject operator could fail on some of the
11815more
11816obscure objects (e.g., Reference objects.)
11817
11818Improved the output of the Debug object to display buffer, package, and
11819index objects.
11820
11821Fixed a problem where constructs of the form "RefOf (ArgX)" did not
11822return
11823the expected result.
11824
11825Added permanent ACPI_REPORT_ERROR macros for all instances of the
11826ACPI_AML_INTERNAL exception.
11827
11828Integrated latest version of acfreebsd.h
11829
11830----------------------------------------
1183116 January 2004.  Summary of changes for version 20040116:
11832
11833The purpose of this release is primarily to update the copyright years in
11834each module, thus causing a huge number of diffs.  There are a few small
11835functional changes, however.
11836
118371) ACPI CA Core Subsystem:
11838
11839Improved error messages when there is a problem finding one or more of
11840the
11841required base ACPI tables
11842
11843Reintroduced the definition of APIC_HEADER in actbl.h
11844
11845Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
11846
11847Removed extraneous reference to NewObj in dsmthdat.c
11848
118492) iASL compiler
11850
11851Fixed a problem introduced in December that disabled the correct
11852disassembly
11853of Resource Templates
11854
11855
11856----------------------------------------
1185703 December 2003.  Summary of changes for version 20031203:
11858
118591) ACPI CA Core Subsystem:
11860
11861Changed the initialization of Operation Regions during subsystem
11862init to perform two entire walks of the ACPI namespace; The first
11863to initialize the regions themselves, the second to execute the
11864_REG methods.  This fixed some interdependencies across _REG
11865methods found on some machines.
11866
11867Fixed a problem where a Store(Local0, Local1) could simply update
11868the object reference count, and not create a new copy of the
11869object if the Local1 is uninitialized.
11870
11871Implemented support for the _SST reserved method during sleep
11872transitions.
11873
11874Implemented support to clear the SLP_TYP and SLP_EN bits when
11875waking up, this is apparently required by some machines.
11876
11877When sleeping, clear the wake status only if SleepState is not S5.
11878
11879Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
11880pointer arithmetic advanced a string pointer too far.
11881
11882Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
11883could be returned if the requested table has not been loaded.
11884
11885Within the support for IRQ resources, restructured the handling of
11886the active and edge/level bits.
11887
11888Fixed a few problems in AcpiPsxExecute() where memory could be
11889leaked under certain error conditions.
11890
11891Improved error messages for the cases where the ACPI mode could
11892not be entered.
11893
11894Code and Data Size: Current and previous core subsystem library
11895sizes are shown below.  These are the code and data sizes for the
11896acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11897these values do not include any ACPI driver or OSPM code.  The
11898debug version of the code includes the debug output trace
11899mechanism and has a much larger code and data size.  Note that
11900these values will vary depending on the efficiency of the compiler
11901and the compiler options used during generation.
11902
11903  Previous Release (20031029):
11904    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11905    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11906  Current Release:
11907    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11908    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11909
119102) iASL Compiler/Disassembler:
11911
11912Implemented a fix for the iASL disassembler where a bad index was
11913generated.  This was most noticeable on 64-bit platforms
11914
11915
11916----------------------------------------
1191729 October 2003.  Summary of changes for version 20031029:
11918
119191) ACPI CA Core Subsystem:
11920
11921
11922Fixed a problem where a level-triggered GPE with an associated
11923_Lxx control method was incorrectly cleared twice.
11924
11925Fixed a problem with the Field support code where an access can
11926occur beyond the end-of-region if the field is non-aligned but
11927extends to the very end of the parent region (resulted in an
11928AE_AML_REGION_LIMIT exception.)
11929
11930Fixed a problem with ACPI Fixed Events where an RT Clock handler
11931would not get invoked on an RTC event.  The RTC event bitmasks for
11932the PM1 registers were not being initialized properly.
11933
11934Implemented support for executing _STA and _INI methods for
11935Processor objects.  Although this is currently not part of the
11936ACPI specification, there is existing ASL code that depends on the
11937init-time execution of these methods.
11938
11939Implemented and deployed a GetDescriptorName function to decode
11940the various types of internal descriptors.  Guards against null
11941descriptors during debug output also.
11942
11943Implemented and deployed a GetNodeName function to extract the 4-
11944character namespace node name.  This function simplifies the debug
11945and error output, as well as guarding against null pointers during
11946output.
11947
11948Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
11949simplify the debug and error output of 64-bit integers.  This
11950macro replaces the HIDWORD and LODWORD macros for dumping these
11951integers.
11952
11953Updated the implementation of the Stall() operator to only call
11954AcpiOsStall(), and also return an error if the operand is larger
11955than 255.  This preserves the required behavior of not
11956relinquishing the processor, as would happen if AcpiOsSleep() was
11957called for "long stalls".
11958
11959Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
11960initialized are now treated as NOOPs.
11961
11962Cleaned up a handful of warnings during 64-bit generation.
11963
11964Fixed a reported error where and incorrect GPE number was passed
11965to the GPE dispatch handler.  This value is only used for error
11966output, however.  Used this opportunity to clean up and streamline
11967the GPE dispatch code.
11968
11969Code and Data Size: Current and previous core subsystem library
11970sizes are shown below.  These are the code and data sizes for the
11971acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11972these values do not include any ACPI driver or OSPM code.  The
11973
11974debug version of the code includes the debug output trace
11975mechanism and has a much larger code and data size.  Note that
11976these values will vary depending on the efficiency of the compiler
11977and the compiler options used during generation.
11978
11979  Previous Release (20031002):
11980    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11981    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11982  Current Release:
11983    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11984    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11985
11986
119872) iASL Compiler/Disassembler:
11988
11989Updated the iASL compiler to return an error if the operand to the
11990Stall() operator is larger than 255.
11991
11992
11993----------------------------------------
1199402 October 2003.  Summary of changes for version 20031002:
11995
11996
119971) ACPI CA Core Subsystem:
11998
11999Fixed a problem with Index Fields where the index was not
12000incremented for fields that require multiple writes to the
12001index/data registers (Fields that are wider than the data
12002register.)
12003
12004Fixed a problem with all Field objects where a write could go
12005beyond the end-of-field if the field was larger than the access
12006granularity and therefore required multiple writes to complete the
12007request.  An extra write beyond the end of the field could happen
12008inadvertently.
12009
12010Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
12011would incorrectly be returned if the width of the Data Register
12012was larger than the specified field access width.
12013
12014Completed fixes for LoadTable() and Unload() and verified their
12015operation.  Implemented full support for the "DdbHandle" object
12016throughout the ACPI CA subsystem.
12017
12018Implemented full support for the MADT and ECDT tables in the ACPI
12019CA header files.  Even though these tables are not directly
12020consumed by ACPI CA, the header definitions are useful for ACPI
12021device drivers.
12022
12023Integrated resource descriptor fixes posted to the Linux ACPI
12024list.  This included checks for minimum descriptor length, and
12025support for trailing NULL strings within descriptors that have
12026optional string elements.
12027
12028Code and Data Size: Current and previous core subsystem library
12029sizes are shown below.  These are the code and data sizes for the
12030acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12031these values do not include any ACPI driver or OSPM code.  The
12032debug version of the code includes the debug output trace
12033mechanism and has a much larger code and data size.  Note that
12034these values will vary depending on the efficiency of the compiler
12035and the compiler options used during generation.
12036
12037  Previous Release (20030918):
12038    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
12039    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
12040  Current Release:
12041    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
12042    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
12043
12044
120452) iASL Compiler:
12046
12047Implemented detection of non-ASCII characters within the input
12048source ASL file.  This catches attempts to compile binary (AML)
12049files early in the compile, with an informative error message.
12050
12051Fixed a problem where the disassembler would fault if the output
12052filename could not be generated or if the output file could not be
12053opened.
12054
12055----------------------------------------
1205618 September 2003.  Summary of changes for version 20030918:
12057
12058
120591) ACPI CA Core Subsystem:
12060
12061Found and fixed a longstanding problem with the late execution of
12062the various deferred AML opcodes (such as Operation Regions,
12063Buffer Fields, Buffers, and Packages).  If the name string
12064specified for the name of the new object placed the object in a
12065scope other than the current scope, the initialization/execution
12066of the opcode failed.  The solution to this problem was to
12067implement a mechanism where the late execution of such opcodes
12068does not attempt to lookup/create the name a second time in an
12069incorrect scope.  This fixes the "region size computed
12070incorrectly" problem.
12071
12072Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
12073Global Lock AE_BAD_PARAMETER error.
12074
12075Fixed several 64-bit issues with prototypes, casting and data
12076types.
12077
12078Removed duplicate prototype from acdisasm.h
12079
12080Fixed an issue involving EC Operation Region Detach (Shaohua Li)
12081
12082Code and Data Size: Current and previous core subsystem library
12083sizes are shown below.  These are the code and data sizes for the
12084acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12085these values do not include any ACPI driver or OSPM code.  The
12086debug version of the code includes the debug output trace
12087mechanism and has a much larger code and data size.  Note that
12088these values will vary depending on the efficiency of the compiler
12089and the compiler options used during generation.
12090
12091  Previous Release:
12092
12093    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
12094    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
12095  Current Release:
12096    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
12097    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
12098
12099
121002) Linux:
12101
12102Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
12103correct sleep time in seconds.
12104
12105----------------------------------------
1210614 July 2003.  Summary of changes for version 20030619:
12107
121081) ACPI CA Core Subsystem:
12109
12110Parse SSDTs in order discovered, as opposed to reverse order
12111(Hrvoje Habjanic)
12112
12113Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
12114Klausner,
12115   Nate Lawson)
12116
12117
121182) Linux:
12119
12120Dynamically allocate SDT list (suggested by Andi Kleen)
12121
12122proc function return value cleanups (Andi Kleen)
12123
12124Correctly handle NMI watchdog during long stalls (Andrew Morton)
12125
12126Make it so acpismp=force works (reported by Andrew Morton)
12127
12128
12129----------------------------------------
1213019 June 2003.  Summary of changes for version 20030619:
12131
121321) ACPI CA Core Subsystem:
12133
12134Fix To/FromBCD, eliminating the need for an arch-specific #define.
12135
12136Do not acquire a semaphore in the S5 shutdown path.
12137
12138Fix ex_digits_needed for 0. (Takayoshi Kochi)
12139
12140Fix sleep/stall code reversal. (Andi Kleen)
12141
12142Revert a change having to do with control method calling
12143semantics.
12144
121452) Linux:
12146
12147acpiphp update (Takayoshi Kochi)
12148
12149Export acpi_disabled for sonypi (Stelian Pop)
12150
12151Mention acpismp=force in config help
12152
12153Re-add acpitable.c and acpismp=force. This improves backwards
12154
12155compatibility and also cleans up the code to a significant degree.
12156
12157Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
12158
12159----------------------------------------
1216022 May 2003.  Summary of changes for version 20030522:
12161
121621) ACPI CA Core Subsystem:
12163
12164Found and fixed a reported problem where an AE_NOT_FOUND error
12165occurred occasionally during _BST evaluation.  This turned out to
12166be an Owner ID allocation issue where a called method did not get
12167a new ID assigned to it.  Eventually, (after 64k calls), the Owner
12168ID UINT16 would wraparound so that the ID would be the same as the
12169caller's and the called method would delete the caller's
12170namespace.
12171
12172Implemented extended error reporting for control methods that are
12173aborted due to a run-time exception.  Output includes the exact
12174AML instruction that caused the method abort, a dump of the method
12175locals and arguments at the time of the abort, and a trace of all
12176nested control method calls.
12177
12178Modified the interpreter to allow the creation of buffers of zero
12179length from the AML code. Implemented new code to ensure that no
12180attempt is made to actually allocate a memory buffer (of length
12181zero) - instead, a simple buffer object with a NULL buffer pointer
12182and length zero is created.  A warning is no longer issued when
12183the AML attempts to create a zero-length buffer.
12184
12185Implemented a workaround for the "leading asterisk issue" in
12186_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
12187asterisk is automatically removed if present in any HID, UID, or
12188CID strings.  The iASL compiler will still flag this asterisk as
12189an error, however.
12190
12191Implemented full support for _CID methods that return a package of
12192multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
12193now additionally returns a device _CID list if present.  This
12194required a change to the external interface in order to pass an
12195ACPI_BUFFER object as a parameter since the _CID list is of
12196variable length.
12197
12198Fixed a problem with the new AE_SAME_HANDLER exception where
12199handler initialization code did not know about this exception.
12200
12201Code and Data Size: Current and previous core subsystem library
12202sizes are shown below.  These are the code and data sizes for the
12203acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12204these values do not include any ACPI driver or OSPM code.  The
12205debug version of the code includes the debug output trace
12206mechanism and has a much larger code and data size.  Note that
12207these values will vary depending on the efficiency of the compiler
12208and the compiler options used during generation.
12209
12210  Previous Release (20030509):
12211    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
12212    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
12213  Current Release:
12214    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
12215    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
12216
12217
122182) Linux:
12219
12220Fixed a bug in which we would reinitialize the ACPI interrupt
12221after it was already working, thus disabling all ACPI and the IRQs
12222for any other device sharing the interrupt. (Thanks to Stian
12223Jordet)
12224
12225Toshiba driver update (John Belmonte)
12226
12227Return only 0 or 1 for our interrupt handler status (Andrew
12228Morton)
12229
12230
122313) iASL Compiler:
12232
12233Fixed a reported problem where multiple (nested) ElseIf()
12234statements were not handled correctly by the compiler, resulting
12235in incorrect warnings and incorrect AML code.  This was a problem
12236in both the ASL parser and the code generator.
12237
12238
122394) Documentation:
12240
12241Added changes to existing interfaces, new exception codes, and new
12242text concerning reference count object management versus garbage
12243collection.
12244
12245----------------------------------------
1224609 May 2003.  Summary of changes for version 20030509.
12247
12248
122491) ACPI CA Core Subsystem:
12250
12251Changed the subsystem initialization sequence to hold off
12252installation of address space handlers until the hardware has been
12253initialized and the system has entered ACPI mode.  This is because
12254the installation of space handlers can cause _REG methods to be
12255run.  Previously, the _REG methods could potentially be run before
12256ACPI mode was enabled.
12257
12258Fixed some memory leak issues related to address space handler and
12259notify handler installation.  There were some problems with the
12260reference count mechanism caused by the fact that the handler
12261objects are shared across several namespace objects.
12262
12263Fixed a reported problem where reference counts within the
12264namespace were not properly updated when named objects created by
12265method execution were deleted.
12266
12267Fixed a reported problem where multiple SSDTs caused a deletion
12268issue during subsystem termination.  Restructured the table data
12269structures to simplify the linked lists and the related code.
12270
12271Fixed a problem where the table ID associated with secondary
12272tables (SSDTs) was not being propagated into the namespace objects
12273created by those tables.  This would only present a problem for
12274tables that are unloaded at run-time, however.
12275
12276Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
12277type as the length parameter (instead of UINT32).
12278
12279Solved a long-standing problem where an ALREADY_EXISTS error
12280appears on various systems.  This problem could happen when there
12281are multiple PCI_Config operation regions under a single PCI root
12282bus.  This doesn't happen very frequently, but there are some
12283systems that do this in the ASL.
12284
12285Fixed a reported problem where the internal DeleteNode function
12286was incorrectly handling the case where a namespace node was the
12287first in the parent's child list, and had additional peers (not
12288the only child, but first in the list of children.)
12289
12290Code and Data Size: Current core subsystem library sizes are shown
12291below.  These are the code and data sizes for the acpica.lib
12292produced by the Microsoft Visual C++ 6.0 compiler, and these
12293values do not include any ACPI driver or OSPM code.  The debug
12294version of the code includes the debug output trace mechanism and
12295has a much larger code and data size.  Note that these values will
12296vary depending on the efficiency of the compiler and the compiler
12297options used during generation.
12298
12299  Previous Release
12300    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
12301    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
12302  Current Release:
12303    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
12304    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
12305
12306
123072) Linux:
12308
12309Allow ":" in OS override string (Ducrot Bruno)
12310
12311Kobject fix (Greg KH)
12312
12313
123143 iASL Compiler/Disassembler:
12315
12316Fixed a problem in the generation of the C source code files (AML
12317is emitted in C source statements for BIOS inclusion) where the
12318Ascii dump that appears within a C comment at the end of each line
12319could cause a compile time error if the AML sequence happens to
12320have an open comment or close comment sequence embedded.
12321
12322
12323----------------------------------------
1232424 April 2003.  Summary of changes for version 20030424.
12325
12326
123271) ACPI CA Core Subsystem:
12328
12329Support for big-endian systems has been implemented.  Most of the
12330support has been invisibly added behind big-endian versions of the
12331ACPI_MOVE_* macros.
12332
12333Fixed a problem in AcpiHwDisableGpeBlock() and
12334AcpiHwClearGpeBlock() where an incorrect offset was passed to the
12335low level hardware write routine.  The offset parameter was
12336actually eliminated from the low level read/write routines because
12337they had become obsolete.
12338
12339Fixed a problem where a handler object was deleted twice during
12340the removal of a fixed event handler.
12341
12342
123432) Linux:
12344
12345A fix for SMP systems with link devices was contributed by
12346
12347Compaq's Dan Zink.
12348
12349(2.5) Return whether we handled the interrupt in our IRQ handler.
12350(Linux ISRs no longer return void, so we can propagate the handler
12351return value from the ACPI CA core back to the OS.)
12352
12353
12354
123553) Documentation:
12356
12357The ACPI CA Programmer Reference has been updated to reflect new
12358interfaces and changes to existing interfaces.
12359
12360----------------------------------------
1236128 March 2003.  Summary of changes for version 20030328.
12362
123631) ACPI CA Core Subsystem:
12364
12365The GPE Block Device support has been completed.  New interfaces
12366are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
12367interfaces (enable, disable, clear, getstatus) have been split
12368into separate interfaces for Fixed Events and General Purpose
12369Events (GPEs) in order to support GPE Block Devices properly.
12370
12371Fixed a problem where the error message "Failed to acquire
12372semaphore" would appear during operations on the embedded
12373controller (EC).
12374
12375Code and Data Size: Current core subsystem library sizes are shown
12376below.  These are the code and data sizes for the acpica.lib
12377produced by the Microsoft Visual C++ 6.0 compiler, and these
12378values do not include any ACPI driver or OSPM code.  The debug
12379version of the code includes the debug output trace mechanism and
12380has a much larger code and data size.  Note that these values will
12381vary depending on the efficiency of the compiler and the compiler
12382options used during generation.
12383
12384  Previous Release
12385    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
12386    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
12387  Current Release:
12388    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
12389    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
12390
12391
12392----------------------------------------
1239328 February 2003.  Summary of changes for version 20030228.
12394
12395
123961) ACPI CA Core Subsystem:
12397
12398The GPE handling and dispatch code has been completely overhauled
12399in preparation for support of GPE Block Devices (ID ACPI0006).
12400This affects internal data structures and code only; there should
12401be no differences visible externally.  One new file has been
12402added, evgpeblk.c
12403
12404The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
12405fields that are used to determine the GPE block lengths.  The
12406REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
12407structures are ignored.  This is per the ACPI specification but it
12408isn't very clear.  The full 256 Block 0/1 GPEs are now supported
12409(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
12410
12411In the SCI interrupt handler, removed the read of the PM1_CONTROL
12412register to look at the SCI_EN bit.  On some machines, this read
12413causes an SMI event and greatly slows down SCI events.  (This may
12414in fact be the cause of slow battery status response on some
12415systems.)
12416
12417Fixed a problem where a store of a NULL string to a package object
12418could cause the premature deletion of the object.  This was seen
12419during execution of the battery _BIF method on some systems,
12420resulting in no battery data being returned.
12421
12422Added AcpiWalkResources interface to simplify parsing of resource
12423lists.
12424
12425Code and Data Size: Current core subsystem library sizes are shown
12426below.  These are the code and data sizes for the acpica.lib
12427produced by the Microsoft Visual C++ 6.0 compiler, and these
12428values do not include any ACPI driver or OSPM code.  The debug
12429version of the code includes the debug output trace mechanism and
12430has a much larger code and data size.  Note that these values will
12431vary depending on the efficiency of the compiler and the compiler
12432options used during generation.
12433
12434  Previous Release
12435    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12436    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12437  Current Release:
12438    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
12439    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
12440
12441
124422) Linux
12443
12444S3 fixes (Ole Rohne)
12445
12446Update ACPI PHP driver with to use new acpi_walk_resource API
12447(Bjorn Helgaas)
12448
12449Add S4BIOS support (Pavel Machek)
12450
12451Map in entire table before performing checksum (John Stultz)
12452
12453Expand the mem= cmdline to allow the specification of reserved and
12454ACPI DATA blocks (Pavel Machek)
12455
12456Never use ACPI on VISWS
12457
12458Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
12459
12460Revert a change that allowed P_BLK lengths to be 4 or 5. This is
12461causing us to think that some systems support C2 when they really
12462don't.
12463
12464Do not count processor objects for non-present CPUs (Thanks to
12465Dominik Brodowski)
12466
12467
124683) iASL Compiler:
12469
12470Fixed a problem where ASL include files could not be found and
12471opened.
12472
12473Added support for the _PDC reserved name.
12474
12475
12476----------------------------------------
1247722 January 2003.  Summary of changes for version 20030122.
12478
12479
124801) ACPI CA Core Subsystem:
12481
12482Added a check for constructs of the form:  Store (Local0, Local0)
12483where Local0 is not initialized.  Apparently, some BIOS
12484programmers believe that this is a NOOP.  Since this store doesn't
12485do anything anyway, the new prototype behavior will ignore this
12486error.  This is a case where we can relax the strict checking in
12487the interpreter in the name of compatibility.
12488
12489
124902) Linux
12491
12492The AcpiSrc Source Conversion Utility has been released with the
12493Linux package for the first time.  This is the utility that is
12494used to convert the ACPI CA base source code to the Linux version.
12495
12496(Both) Handle P_BLK lengths shorter than 6 more gracefully
12497
12498(Both) Move more headers to include/acpi, and delete an unused
12499header.
12500
12501(Both) Move drivers/acpi/include directory to include/acpi
12502
12503(Both) Boot functions don't use cmdline, so don't pass it around
12504
12505(Both) Remove include of unused header (Adrian Bunk)
12506
12507(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
12508the
12509former now also includes the latter, acpiphp.h only needs the one,
12510now.
12511
12512(2.5) Make it possible to select method of bios restoring after S3
12513resume. [=> no more ugly ifdefs] (Pavel Machek)
12514
12515(2.5) Make proc write interfaces work (Pavel Machek)
12516
12517(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
12518
12519(2.5) Break out ACPI Perf code into its own module, under cpufreq
12520(Dominik Brodowski)
12521
12522(2.4) S4BIOS support (Ducrot Bruno)
12523
12524(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
12525Visinoni)
12526
12527
125283) iASL Compiler:
12529
12530Added support to disassemble SSDT and PSDTs.
12531
12532Implemented support to obtain SSDTs from the Windows registry if
12533available.
12534
12535
12536----------------------------------------
1253709 January 2003.  Summary of changes for version 20030109.
12538
125391) ACPI CA Core Subsystem:
12540
12541Changed the behavior of the internal Buffer-to-String conversion
12542function.  The current ACPI specification states that the contents
12543of the buffer are "converted to a string of two-character
12544hexadecimal numbers, each separated by a space".  Unfortunately,
12545this definition is not backwards compatible with existing ACPI 1.0
12546implementations (although the behavior was not defined in the ACPI
125471.0 specification).  The new behavior simply copies data from the
12548buffer to the string until a null character is found or the end of
12549the buffer is reached.  The new String object is always null
12550terminated.  This problem was seen during the generation of _BIF
12551battery data where incorrect strings were returned for battery
12552type, etc.  This will also require an errata to the ACPI
12553specification.
12554
12555Renamed all instances of NATIVE_UINT and NATIVE_INT to
12556ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
12557
12558Copyright in all module headers (both Linux and non-Linux) has be
12559updated to 2003.
12560
12561Code and Data Size: Current core subsystem library sizes are shown
12562below.  These are the code and data sizes for the acpica.lib
12563produced by the Microsoft Visual C++ 6.0 compiler, and these
12564values do not include any ACPI driver or OSPM code.  The debug
12565version of the code includes the debug output trace mechanism and
12566has a much larger code and data size.  Note that these values will
12567vary depending on the efficiency of the compiler and the compiler
12568options used during generation.
12569
12570  Previous Release
12571    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12572    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12573  Current Release:
12574    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12575    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12576
12577
125782) Linux
12579
12580Fixed an oops on module insertion/removal (Matthew Tippett)
12581
12582(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
12583
12584(2.5) Replace pr_debug (Randy Dunlap)
12585
12586(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
12587
12588(Both) Eliminate spawning of thread from timer callback, in favor
12589of schedule_work()
12590
12591(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
12592
12593(Both) Added define for Fixed Function HW region (Matthew Wilcox)
12594
12595(Both) Add missing statics to button.c (Pavel Machek)
12596
12597Several changes have been made to the source code translation
12598utility that generates the Linux Code in order to make the code
12599more "Linux-like":
12600
12601All typedefs on structs and unions have been removed in keeping
12602with the Linux coding style.
12603
12604Removed the non-Linux SourceSafe module revision number from each
12605module header.
12606
12607Completed major overhaul of symbols to be lowercased for linux.
12608Doubled the number of symbols that are lowercased.
12609
12610Fixed a problem where identifiers within procedure headers and
12611within quotes were not fully lower cased (they were left with a
12612starting capital.)
12613
12614Some C macros whose only purpose is to allow the generation of 16-
12615bit code are now completely removed in the Linux code, increasing
12616readability and maintainability.
12617
12618----------------------------------------
12619
1262012 December 2002.  Summary of changes for version 20021212.
12621
12622
126231) ACPI CA Core Subsystem:
12624
12625Fixed a problem where the creation of a zero-length AML Buffer
12626would cause a fault.
12627
12628Fixed a problem where a Buffer object that pointed to a static AML
12629buffer (in an ACPI table) could inadvertently be deleted, causing
12630memory corruption.
12631
12632Fixed a problem where a user buffer (passed in to the external
12633ACPI CA interfaces) could be overwritten if the buffer was too
12634small to complete the operation, causing memory corruption.
12635
12636Fixed a problem in the Buffer-to-String conversion code where a
12637string of length one was always returned, regardless of the size
12638of the input Buffer object.
12639
12640Removed the NATIVE_CHAR data type across the entire source due to
12641lack of need and lack of consistent use.
12642
12643Code and Data Size: Current core subsystem library sizes are shown
12644below.  These are the code and data sizes for the acpica.lib
12645produced by the Microsoft Visual C++ 6.0 compiler, and these
12646values do not include any ACPI driver or OSPM code.  The debug
12647version of the code includes the debug output trace mechanism and
12648has a much larger code and data size.  Note that these values will
12649vary depending on the efficiency of the compiler and the compiler
12650options used during generation.
12651
12652  Previous Release
12653    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12654    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12655  Current Release:
12656    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12657    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12658
12659
12660----------------------------------------
1266105 December 2002.  Summary of changes for version 20021205.
12662
126631) ACPI CA Core Subsystem:
12664
12665Fixed a problem where a store to a String or Buffer object could
12666cause corruption of the DSDT if the object type being stored was
12667the same as the target object type and the length of the object
12668being stored was equal to or smaller than the original (existing)
12669target object.  This was seen to cause corruption of battery _BIF
12670buffers if the _BIF method modified the buffer on the fly.
12671
12672Fixed a problem where an internal error was generated if a control
12673method invocation was used in an OperationRegion, Buffer, or
12674Package declaration.  This was caused by the deferred parsing of
12675the control method and thus the deferred creation of the internal
12676method object.  The solution to this problem was to create the
12677internal method object at the moment the method is encountered in
12678the first pass - so that subsequent references to the method will
12679able to obtain the required parameter count and thus properly
12680parse the method invocation.  This problem presented itself as an
12681AE_AML_INTERNAL during the pass 1 parse phase during table load.
12682
12683Fixed a problem where the internal String object copy routine did
12684not always allocate sufficient memory for the target String object
12685and caused memory corruption.  This problem was seen to cause
12686"Allocation already present in list!" errors as memory allocation
12687became corrupted.
12688
12689Implemented a new function for the evaluation of namespace objects
12690that allows the specification of the allowable return object
12691types.  This simplifies a lot of code that checks for a return
12692object of one or more specific objects returned from the
12693evaluation (such as _STA, etc.)  This may become and external
12694function if it would be useful to ACPI-related drivers.
12695
12696Completed another round of prefixing #defines with "ACPI_" for
12697clarity.
12698
12699Completed additional code restructuring to allow more modular
12700linking for iASL compiler and AcpiExec.  Several files were split
12701creating new files.  New files:  nsparse.c dsinit.c evgpe.c
12702
12703Implemented an abort mechanism to terminate an executing control
12704method via the AML debugger.  This feature is useful for debugging
12705control methods that depend (wait) for specific hardware
12706responses.
12707
12708Code and Data Size: Current core subsystem library sizes are shown
12709below.  These are the code and data sizes for the acpica.lib
12710produced by the Microsoft Visual C++ 6.0 compiler, and these
12711values do not include any ACPI driver or OSPM code.  The debug
12712version of the code includes the debug output trace mechanism and
12713has a much larger code and data size.  Note that these values will
12714vary depending on the efficiency of the compiler and the compiler
12715options used during generation.
12716
12717  Previous Release
12718    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12719    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12720  Current Release:
12721    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12722    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12723
12724
127252) iASL Compiler/Disassembler
12726
12727Fixed a compiler code generation problem for "Interrupt" Resource
12728Descriptors.  If specified in the ASL, the optional "Resource
12729Source Index" and "Resource Source" fields were not inserted into
12730the correct location within the AML resource descriptor, creating
12731an invalid descriptor.
12732
12733Fixed a disassembler problem for "Interrupt" resource descriptors.
12734The optional "Resource Source Index" and "Resource Source" fields
12735were ignored.
12736
12737
12738----------------------------------------
1273922 November 2002.  Summary of changes for version 20021122.
12740
12741
127421) ACPI CA Core Subsystem:
12743
12744Fixed a reported problem where an object stored to a Method Local
12745or Arg was not copied to a new object during the store - the
12746object pointer was simply copied to the Local/Arg.  This caused
12747all subsequent operations on the Local/Arg to also affect the
12748original source of the store operation.
12749
12750Fixed a problem where a store operation to a Method Local or Arg
12751was not completed properly if the Local/Arg contained a reference
12752(from RefOf) to a named field.  The general-purpose store-to-
12753namespace-node code is now used so that this case is handled
12754automatically.
12755
12756Fixed a problem where the internal object copy routine would cause
12757a protection fault if the object being copied was a Package and
12758contained either 1) a NULL package element or 2) a nested sub-
12759package.
12760
12761Fixed a problem with the GPE initialization that resulted from an
12762ambiguity in the ACPI specification.  One section of the
12763specification states that both the address and length of the GPE
12764block must be zero if the block is not supported.  Another section
12765implies that only the address need be zero if the block is not
12766supported.  The code has been changed so that both the address and
12767the length must be non-zero to indicate a valid GPE block (i.e.,
12768if either the address or the length is zero, the GPE block is
12769invalid.)
12770
12771Code and Data Size: Current core subsystem library sizes are shown
12772below.  These are the code and data sizes for the acpica.lib
12773produced by the Microsoft Visual C++ 6.0 compiler, and these
12774values do not include any ACPI driver or OSPM code.  The debug
12775version of the code includes the debug output trace mechanism and
12776has a much larger code and data size.  Note that these values will
12777vary depending on the efficiency of the compiler and the compiler
12778options used during generation.
12779
12780  Previous Release
12781    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12782    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12783  Current Release:
12784    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12785    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12786
12787
127882) Linux
12789
12790Cleaned up EC driver. Exported an external EC read/write
12791interface. By going through this, other drivers (most notably
12792sonypi) will be able to serialize access to the EC.
12793
12794
127953) iASL Compiler/Disassembler
12796
12797Implemented support to optionally generate include files for both
12798ASM and C (the -i switch).  This simplifies BIOS development by
12799automatically creating include files that contain external
12800declarations for the symbols that are created within the
12801
12802(optionally generated) ASM and C AML source files.
12803
12804
12805----------------------------------------
1280615 November 2002.  Summary of changes for version 20021115.
12807
128081) ACPI CA Core Subsystem:
12809
12810Fixed a memory leak problem where an error during resolution of
12811
12812method arguments during a method invocation from another method
12813failed to cleanup properly by deleting all successfully resolved
12814argument objects.
12815
12816Fixed a problem where the target of the Index() operator was not
12817correctly constructed if the source object was a package.  This
12818problem has not been detected because the use of a target operand
12819with Index() is very rare.
12820
12821Fixed a problem with the Index() operator where an attempt was
12822made to delete the operand objects twice.
12823
12824Fixed a problem where an attempt was made to delete an operand
12825twice during execution of the CondRefOf() operator if the target
12826did not exist.
12827
12828Implemented the first of perhaps several internal create object
12829functions that create and initialize a specific object type.  This
12830consolidates duplicated code wherever the object is created, thus
12831shrinking the size of the subsystem.
12832
12833Implemented improved debug/error messages for errors that occur
12834during nested method invocations.  All executing method pathnames
12835are displayed (with the error) as the call stack is unwound - thus
12836simplifying debug.
12837
12838Fixed a problem introduced in the 10/02 release that caused
12839premature deletion of a buffer object if a buffer was used as an
12840ASL operand where an integer operand is required (Thus causing an
12841implicit object conversion from Buffer to Integer.)  The change in
12842the 10/02 release was attempting to fix a memory leak (albeit
12843incorrectly.)
12844
12845Code and Data Size: Current core subsystem library sizes are shown
12846below.  These are the code and data sizes for the acpica.lib
12847produced by the Microsoft Visual C++ 6.0 compiler, and these
12848values do not include any ACPI driver or OSPM code.  The debug
12849version of the code includes the debug output trace mechanism and
12850has a much larger code and data size.  Note that these values will
12851vary depending on the efficiency of the compiler and the compiler
12852options used during generation.
12853
12854  Previous Release
12855    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12856    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12857  Current Release:
12858    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12859    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12860
12861
128622) Linux
12863
12864Changed the implementation of the ACPI semaphores to use down()
12865instead of down_interruptable().  It is important that the
12866execution of ACPI control methods not be interrupted by signals.
12867Methods must run to completion, or the system may be left in an
12868unknown/unstable state.
12869
12870Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
12871(Shawn Starr)
12872
12873
128743) iASL Compiler/Disassembler
12875
12876
12877Changed the default location of output files.  All output files
12878are now placed in the current directory by default instead of in
12879the directory of the source file.  This change may affect some
12880existing makefiles, but it brings the behavior of the compiler in
12881line with other similar tools.  The location of the output files
12882can be overridden with the -p command line switch.
12883
12884
12885----------------------------------------
1288611 November 2002.  Summary of changes for version 20021111.
12887
12888
128890) ACPI Specification 2.0B is released and is now available at:
12890http://www.acpi.info/index.html
12891
12892
128931) ACPI CA Core Subsystem:
12894
12895Implemented support for the ACPI 2.0 SMBus Operation Regions.
12896This includes the early detection and handoff of the request to
12897the SMBus region handler (avoiding all of the complex field
12898support code), and support for the bidirectional return packet
12899from an SMBus write operation.  This paves the way for the
12900development of SMBus drivers in each host operating system.
12901
12902Fixed a problem where the semaphore WAIT_FOREVER constant was
12903defined as 32 bits, but must be 16 bits according to the ACPI
12904specification.  This had the side effect of causing ASL
12905Mutex/Event timeouts even though the ASL code requested a wait
12906forever.  Changed all internal references to the ACPI timeout
12907parameter to 16 bits to prevent future problems.  Changed the name
12908of WAIT_FOREVER to ACPI_WAIT_FOREVER.
12909
12910Code and Data Size: Current core subsystem library sizes are shown
12911below.  These are the code and data sizes for the acpica.lib
12912produced by the Microsoft Visual C++ 6.0 compiler, and these
12913values do not include any ACPI driver or OSPM code.  The debug
12914version of the code includes the debug output trace mechanism and
12915has a much larger code and data size.  Note that these values will
12916vary depending on the efficiency of the compiler and the compiler
12917options used during generation.
12918
12919  Previous Release
12920    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12921    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12922  Current Release:
12923    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12924    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12925
12926
129272) Linux
12928
12929Module loading/unloading fixes (John Cagle)
12930
12931
129323) iASL Compiler/Disassembler
12933
12934Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
12935
12936Implemented support for the disassembly of all SMBus protocol
12937keywords (SMBQuick, SMBWord, etc.)
12938
12939----------------------------------------
1294001 November 2002.  Summary of changes for version 20021101.
12941
12942
129431) ACPI CA Core Subsystem:
12944
12945Fixed a problem where platforms that have a GPE1 block but no GPE0
12946block were not handled correctly.  This resulted in a "GPE
12947overlap" error message.  GPE0 is no longer required.
12948
12949Removed code added in the previous release that inserted nodes
12950into the namespace in alphabetical order.  This caused some side-
12951effects on various machines.  The root cause of the problem is
12952still under investigation since in theory, the internal ordering
12953of the namespace nodes should not matter.
12954
12955
12956Enhanced error reporting for the case where a named object is not
12957found during control method execution.  The full ACPI namepath
12958(name reference) of the object that was not found is displayed in
12959this case.
12960
12961Note: as a result of the overhaul of the namespace object types in
12962the previous release, the namespace nodes for the predefined
12963scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
12964instead of ACPI_TYPE_ANY.  This simplifies the namespace
12965management code but may affect code that walks the namespace tree
12966looking for specific object types.
12967
12968Code and Data Size: Current core subsystem library sizes are shown
12969below.  These are the code and data sizes for the acpica.lib
12970produced by the Microsoft Visual C++ 6.0 compiler, and these
12971values do not include any ACPI driver or OSPM code.  The debug
12972version of the code includes the debug output trace mechanism and
12973has a much larger code and data size.  Note that these values will
12974vary depending on the efficiency of the compiler and the compiler
12975options used during generation.
12976
12977  Previous Release
12978    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12979    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12980  Current Release:
12981    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12982    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12983
12984
129852) Linux
12986
12987Fixed a problem introduced in the previous release where the
12988Processor and Thermal objects were not recognized and installed in
12989/proc.  This was related to the scope type change described above.
12990
12991
129923) iASL Compiler/Disassembler
12993
12994Implemented the -g option to get all of the required ACPI tables
12995from the registry and save them to files (Windows version of the
12996compiler only.)  The required tables are the FADT, FACS, and DSDT.
12997
12998Added ACPI table checksum validation during table disassembly in
12999order to catch corrupted tables.
13000
13001
13002----------------------------------------
1300322 October 2002.  Summary of changes for version 20021022.
13004
130051) ACPI CA Core Subsystem:
13006
13007Implemented a restriction on the Scope operator that the target
13008must already exist in the namespace at the time the operator is
13009encountered (during table load or method execution).  In other
13010words, forward references are not allowed and Scope() cannot
13011create a new object. This changes the previous behavior where the
13012interpreter would create the name if not found.  This new behavior
13013correctly enables the search-to-root algorithm during namespace
13014lookup of the target name.  Because of this upsearch, this fixes
13015the known Compaq _SB_.OKEC problem and makes both the AML
13016interpreter and iASL compiler compatible with other ACPI
13017implementations.
13018
13019Completed a major overhaul of the internal ACPI object types for
13020the ACPI Namespace and the associated operand objects.  Many of
13021these types had become obsolete with the introduction of the two-
13022pass namespace load.  This cleanup simplifies the code and makes
13023the entire namespace load mechanism much clearer and easier to
13024understand.
13025
13026Improved debug output for tracking scope opening/closing to help
13027diagnose scoping issues.  The old scope name as well as the new
13028scope name are displayed.  Also improved error messages for
13029problems with ASL Mutex objects and error messages for GPE
13030problems.
13031
13032Cleaned up the namespace dump code, removed obsolete code.
13033
13034All string output (for all namespace/object dumps) now uses the
13035common ACPI string output procedure which handles escapes properly
13036and does not emit non-printable characters.
13037
13038Fixed some issues with constants in the 64-bit version of the
13039local C library (utclib.c)
13040
13041
130422) Linux
13043
13044EC Driver:  No longer attempts to acquire the Global Lock at
13045interrupt level.
13046
13047
130483) iASL Compiler/Disassembler
13049
13050Implemented ACPI 2.0B grammar change that disallows all Type 1 and
130512 opcodes outside of a control method.  This means that the
13052"executable" operators (versus the "namespace" operators) cannot
13053be used at the table level; they can only be used within a control
13054method.
13055
13056Implemented the restriction on the Scope() operator where the
13057target must already exist in the namespace at the time the
13058operator is encountered (during ASL compilation). In other words,
13059forward references are not allowed and Scope() cannot create a new
13060object.  This makes the iASL compiler compatible with other ACPI
13061implementations and makes the Scope() implementation adhere to the
13062ACPI specification.
13063
13064Fixed a problem where namepath optimization for the Alias operator
13065was optimizing the wrong path (of the two namepaths.)  This caused
13066a "Missing alias link" error message.
13067
13068Fixed a problem where an "unknown reserved name" warning could be
13069incorrectly generated for names like "_SB" when the trailing
13070underscore is not used in the original ASL.
13071
13072Fixed a problem where the reserved name check did not handle
13073NamePaths with multiple NameSegs correctly.  The first nameseg of
13074the NamePath was examined instead of the last NameSeg.
13075
13076
13077----------------------------------------
13078
1307902 October 2002.  Summary of changes for this release.
13080
13081
130821) ACPI CA Core Subsystem version 20021002:
13083
13084Fixed a problem where a store/copy of a string to an existing
13085string did not always set the string length properly in the String
13086object.
13087
13088Fixed a reported problem with the ToString operator where the
13089behavior was identical to the ToHexString operator instead of just
13090simply converting a raw buffer to a string data type.
13091
13092Fixed a problem where CopyObject and the other "explicit"
13093conversion operators were not updating the internal namespace node
13094type as part of the store operation.
13095
13096Fixed a memory leak during implicit source operand conversion
13097where the original object was not deleted if it was converted to a
13098new object of a different type.
13099
13100Enhanced error messages for all problems associated with namespace
13101lookups.  Common procedure generates and prints the lookup name as
13102well as the formatted status.
13103
13104Completed implementation of a new design for the Alias support
13105within the namespace.  The existing design did not handle the case
13106where a new object was assigned to one of the two names due to the
13107use of an explicit conversion operator, resulting in the two names
13108pointing to two different objects.  The new design simply points
13109the Alias name to the original name node - not to the object.
13110This results in a level of indirection that must be handled in the
13111name resolution mechanism.
13112
13113Code and Data Size: Current core subsystem library sizes are shown
13114below.  These are the code and data sizes for the acpica.lib
13115produced by the Microsoft Visual C++ 6.0 compiler, and these
13116values do not include any ACPI driver or OSPM code.  The debug
13117version of the code includes the debug output trace mechanism and
13118has a larger code and data size.  Note that these values will vary
13119depending on the efficiency of the compiler and the compiler
13120options used during generation.
13121
13122  Previous Release
13123    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
13124    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
13125  Current Release:
13126    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
13127    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
13128
13129
131302) Linux
13131
13132Initialize thermal driver's timer before it is used. (Knut
13133Neumann)
13134
13135Allow handling negative celsius values. (Kochi Takayoshi)
13136
13137Fix thermal management and make trip points. R/W (Pavel Machek)
13138
13139Fix /proc/acpi/sleep. (P. Christeas)
13140
13141IA64 fixes. (David Mosberger)
13142
13143Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
13144
13145Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
13146Brodowski)
13147
13148
131493) iASL Compiler/Disassembler
13150
13151Clarified some warning/error messages.
13152
13153
13154----------------------------------------
1315518 September 2002.  Summary of changes for this release.
13156
13157
131581) ACPI CA Core Subsystem version 20020918:
13159
13160Fixed a reported problem with reference chaining (via the Index()
13161and RefOf() operators) in the ObjectType() and SizeOf() operators.
13162The definition of these operators includes the dereferencing of
13163all chained references to return information on the base object.
13164
13165Fixed a problem with stores to indexed package elements - the
13166existing code would not complete the store if an "implicit
13167conversion" was not performed.  In other words, if the existing
13168object (package element) was to be replaced completely, the code
13169didn't handle this case.
13170
13171Relaxed typechecking on the ASL "Scope" operator to allow the
13172target name to refer to an object of type Integer, String, or
13173Buffer, in addition to the scoping object types (Device,
13174predefined Scopes, Processor, PowerResource, and ThermalZone.)
13175This allows existing AML code that has workarounds for a bug in
13176Windows to function properly.  A warning is issued, however.  This
13177affects both the AML interpreter and the iASL compiler. Below is
13178an example of this type of ASL code:
13179
13180      Name(DEB,0x00)
13181      Scope(DEB)
13182      {
13183
13184Fixed some reported problems with 64-bit integer support in the
13185local implementation of C library functions (clib.c)
13186
13187
131882) Linux
13189
13190Use ACPI fix map region instead of IOAPIC region, since it is
13191undefined in non-SMP.
13192
13193Ensure that the SCI has the proper polarity and trigger, even on
13194systems that do not have an interrupt override entry in the MADT.
13195
131962.5 big driver reorganization (Pat Mochel)
13197
13198Use early table mapping code from acpitable.c (Andi Kleen)
13199
13200New blacklist entries (Andi Kleen)
13201
13202Blacklist improvements. Split blacklist code out into a separate
13203file. Move checking the blacklist to very early. Previously, we
13204would use ACPI tables, and then halfway through init, check the
13205blacklist -- too late. Now, it's early enough to completely fall-
13206back to non-ACPI.
13207
13208
132093) iASL Compiler/Disassembler version 20020918:
13210
13211Fixed a problem where the typechecking code didn't know that an
13212alias could point to a method.  In other words, aliases were not
13213being dereferenced during typechecking.
13214
13215
13216----------------------------------------
1321729 August 2002.  Summary of changes for this release.
13218
132191) ACPI CA Core Subsystem Version 20020829:
13220
13221If the target of a Scope() operator already exists, it must be an
13222object type that actually opens a scope -- such as a Device,
13223Method, Scope, etc.  This is a fatal runtime error.  Similar error
13224check has been added to the iASL compiler also.
13225
13226Tightened up the namespace load to disallow multiple names in the
13227same scope.  This previously was allowed if both objects were of
13228the same type.  (i.e., a lookup was the same as entering a new
13229name).
13230
13231
132322) Linux
13233
13234Ensure that the ACPI interrupt has the proper trigger and
13235polarity.
13236
13237local_irq_disable is extraneous. (Matthew Wilcox)
13238
13239Make "acpi=off" actually do what it says, and not use the ACPI
13240interpreter *or* the tables.
13241
13242Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
13243Takayoshi)
13244
13245
132463) iASL Compiler/Disassembler  Version 20020829:
13247
13248Implemented namepath optimization for name declarations.  For
13249example, a declaration like "Method (\_SB_.ABCD)" would get
13250optimized to "Method (ABCD)" if the declaration is within the
13251\_SB_ scope.  This optimization is in addition to the named
13252reference path optimization first released in the previous
13253version. This would seem to complete all possible optimizations
13254for namepaths within the ASL/AML.
13255
13256If the target of a Scope() operator already exists, it must be an
13257object type that actually opens a scope -- such as a Device,
13258Method, Scope, etc.
13259
13260Implemented a check and warning for unreachable code in the same
13261block below a Return() statement.
13262
13263Fixed a problem where the listing file was not generated if the
13264compiler aborted if the maximum error count was exceeded (200).
13265
13266Fixed a problem where the typechecking of method return values was
13267broken.  This includes the check for a return value when the
13268method is invoked as a TermArg (a return value is expected.)
13269
13270Fixed a reported problem where EOF conditions during a quoted
13271string or comment caused a fault.
13272
13273
13274----------------------------------------
1327515 August 2002.  Summary of changes for this release.
13276
132771) ACPI CA Core Subsystem Version 20020815:
13278
13279Fixed a reported problem where a Store to a method argument that
13280contains a reference did not perform the indirect store correctly.
13281This problem was created during the conversion to the new
13282reference object model - the indirect store to a method argument
13283code was not updated to reflect the new model.
13284
13285Reworked the ACPI mode change code to better conform to ACPI 2.0,
13286handle corner cases, and improve code legibility (Kochi Takayoshi)
13287
13288Fixed a problem with the pathname parsing for the carat (^)
13289prefix.  The heavy use of the carat operator by the new namepath
13290optimization in the iASL compiler uncovered a problem with the AML
13291interpreter handling of this prefix.  In the case where one or
13292more carats precede a single nameseg, the nameseg was treated as
13293standalone and the search rule (to root) was inadvertently
13294applied.  This could cause both the iASL compiler and the
13295interpreter to find the wrong object or to miss the error that
13296should occur if the object does not exist at that exact pathname.
13297
13298Found and fixed the problem where the HP Pavilion DSDT would not
13299load.  This was a relatively minor tweak to the table loading code
13300(a problem caused by the unexpected encounter with a method
13301invocation not within a control method), but it does not solve the
13302overall issue of the execution of AML code at the table level.
13303This investigation is still ongoing.
13304
13305Code and Data Size: Current core subsystem library sizes are shown
13306below.  These are the code and data sizes for the acpica.lib
13307produced by the Microsoft Visual C++ 6.0 compiler, and these
13308values do not include any ACPI driver or OSPM code.  The debug
13309version of the code includes the debug output trace mechanism and
13310has a larger code and data size.  Note that these values will vary
13311depending on the efficiency of the compiler and the compiler
13312options used during generation.
13313
13314  Previous Release
13315    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
13316    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
13317  Current Release:
13318    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
13319    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
13320
13321
133222) Linux
13323
13324Remove redundant slab.h include (Brad Hards)
13325
13326Fix several bugs in thermal.c (Herbert Nachtnebel)
13327
13328Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
13329
13330Change acpi_system_suspend to use updated irq functions (Pavel
13331Machek)
13332
13333Export acpi_get_firmware_table (Matthew Wilcox)
13334
13335Use proper root proc entry for ACPI (Kochi Takayoshi)
13336
13337Fix early-boot table parsing (Bjorn Helgaas)
13338
13339
133403) iASL Compiler/Disassembler
13341
13342Reworked the compiler options to make them more consistent and to
13343use two-letter options where appropriate.  We were running out of
13344sensible letters.   This may break some makefiles, so check the
13345current options list by invoking the compiler with no parameters.
13346
13347Completed the design and implementation of the ASL namepath
13348optimization option for the compiler.  This option optimizes all
13349references to named objects to the shortest possible path.  The
13350first attempt tries to utilize a single nameseg (4 characters) and
13351the "search-to-root" algorithm used by the interpreter.  If that
13352cannot be used (because either the name is not in the search path
13353or there is a conflict with another object with the same name),
13354the pathname is optimized using the carat prefix (usually a
13355shorter string than specifying the entire path from the root.)
13356
13357Implemented support to obtain the DSDT from the Windows registry
13358(when the disassembly option is specified with no input file).
13359Added this code as the implementation for AcpiOsTableOverride in
13360the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
13361utility) to scan memory for the DSDT to the AcpiOsTableOverride
13362function in the DOS OSL to make the disassembler truly OS
13363independent.
13364
13365Implemented a new option to disassemble and compile in one step.
13366When used without an input filename, this option will grab the
13367DSDT from the local machine, disassemble it, and compile it in one
13368step.
13369
13370Added a warning message for invalid escapes (a backslash followed
13371by any character other than the allowable escapes).  This catches
13372the quoted string error "\_SB_" (which should be "\\_SB_" ).
13373
13374Also, there are numerous instances in the ACPI specification where
13375this error occurs.
13376
13377Added a compiler option to disable all optimizations.  This is
13378basically the "compatibility mode" because by using this option,
13379the AML code will come out exactly the same as other ASL
13380compilers.
13381
13382Added error messages for incorrectly ordered dependent resource
13383functions.  This includes: missing EndDependentFn macro at end of
13384dependent resource list, nested dependent function macros (both
13385start and end), and missing StartDependentFn macro.  These are
13386common errors that should be caught at compile time.
13387
13388Implemented _OSI support for the disassembler and compiler.  _OSI
13389must be included in the namespace for proper disassembly (because
13390the disassembler must know the number of arguments.)
13391
13392Added an "optimization" message type that is optional (off by
13393default).  This message is used for all optimizations - including
13394constant folding, integer optimization, and namepath optimization.
13395
13396----------------------------------------
1339725 July 2002.  Summary of changes for this release.
13398
13399
134001) ACPI CA Core Subsystem Version 20020725:
13401
13402The AML Disassembler has been enhanced to produce compilable ASL
13403code and has been integrated into the iASL compiler (see below) as
13404well as the single-step disassembly for the AML debugger and the
13405disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
13406resource templates and macros are fully supported.  The
13407disassembler has been tested on over 30 different AML files,
13408producing identical AML when the resulting disassembled ASL file
13409is recompiled with the same ASL compiler.
13410
13411Modified the Resource Manager to allow zero interrupts and zero
13412dma channels during the GetCurrentResources call.  This was
13413causing problems on some platforms.
13414
13415Added the AcpiOsRedirectOutput interface to the OSL to simplify
13416output redirection for the AcpiOsPrintf and AcpiOsVprintf
13417interfaces.
13418
13419Code and Data Size: Current core subsystem library sizes are shown
13420below.  These are the code and data sizes for the acpica.lib
13421produced by the Microsoft Visual C++ 6.0 compiler, and these
13422values do not include any ACPI driver or OSPM code.  The debug
13423version of the code includes the debug output trace mechanism and
13424has a larger code and data size.  Note that these values will vary
13425depending on the efficiency of the compiler and the compiler
13426options used during generation.
13427
13428  Previous Release
13429    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
13430    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
13431  Current Release:
13432    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
13433    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
13434
13435
134362) Linux
13437
13438Fixed a panic in the EC driver (Dominik Brodowski)
13439
13440Implemented checksum of the R/XSDT itself during Linux table scan
13441(Richard Schaal)
13442
13443
134443) iASL compiler
13445
13446The AML disassembler is integrated into the compiler.  The "-d"
13447option invokes the disassembler  to completely disassemble an
13448input AML file, producing as output a text ASL file with the
13449extension ".dsl" (to avoid name collisions with existing .asl
13450source files.)  A future enhancement will allow the disassembler
13451to obtain the BIOS DSDT from the registry under Windows.
13452
13453Fixed a problem with the VendorShort and VendorLong resource
13454descriptors where an invalid AML sequence was created.
13455
13456Implemented a fix for BufferData term in the ASL parser.  It was
13457inadvertently defined twice, allowing invalid syntax to pass and
13458causing reduction conflicts.
13459
13460Fixed a problem where the Ones opcode could get converted to a
13461value of zero if "Ones" was used where a byte, word or dword value
13462was expected.  The 64-bit value is now truncated to the correct
13463size with the correct value.
13464
13465
13466
13467----------------------------------------
1346802 July 2002.  Summary of changes for this release.
13469
13470
134711) ACPI CA Core Subsystem Version 20020702:
13472
13473The Table Manager code has been restructured to add several new
13474features.  Tables that are not required by the core subsystem
13475(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
13476validated in any way and are returned from AcpiGetFirmwareTable if
13477requested.  The AcpiOsTableOverride interface is now called for
13478each table that is loaded by the subsystem in order to allow the
13479host to override any table it chooses.  Previously, only the DSDT
13480could be overridden.  Added one new files, tbrsdt.c and
13481tbgetall.c.
13482
13483Fixed a problem with the conversion of internal package objects to
13484external objects (when a package is returned from a control
13485method.)  The return buffer length was set to zero instead of the
13486proper length of the package object.
13487
13488Fixed a reported problem with the use of the RefOf and DeRefOf
13489operators when passing reference arguments to control methods.  A
13490new type of Reference object is used internally for references
13491produced by the RefOf operator.
13492
13493Added additional error messages in the Resource Manager to explain
13494AE_BAD_DATA errors when they occur during resource parsing.
13495
13496Split the AcpiEnableSubsystem into two primitives to enable a
13497finer granularity initialization sequence.  These two calls should
13498be called in this order: AcpiEnableSubsystem (flags),
13499AcpiInitializeObjects (flags).  The flags parameter remains the
13500same.
13501
13502
135032) Linux
13504
13505Updated the ACPI utilities module to understand the new style of
13506fully resolved package objects that are now returned from the core
13507subsystem.  This eliminates errors of the form:
13508
13509    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
13510    acpi_utils-0430 [145] acpi_evaluate_reference:
13511        Invalid element in package (not a device reference)
13512
13513The method evaluation utility uses the new buffer allocation
13514scheme instead of calling AcpiEvaluate Object twice.
13515
13516Added support for ECDT. This allows the use of the Embedded
13517
13518Controller before the namespace has been fully initialized, which
13519is necessary for ACPI 2.0 support, and for some laptops to
13520initialize properly. (Laptops using ECDT are still rare, so only
13521limited testing was performed of the added functionality.)
13522
13523Fixed memory leaks in the EC driver.
13524
13525Eliminated a brittle code structure in acpi_bus_init().
13526
13527Eliminated the acpi_evaluate() helper function in utils.c. It is
13528no longer needed since acpi_evaluate_object can optionally
13529allocate memory for the return object.
13530
13531Implemented fix for keyboard hang when getting battery readings on
13532some systems (Stephen White)
13533
13534PCI IRQ routing update (Dominik Brodowski)
13535
13536Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
13537support
13538
13539----------------------------------------
1354011 June 2002.  Summary of changes for this release.
13541
13542
135431) ACPI CA Core Subsystem Version 20020611:
13544
13545Fixed a reported problem where constants such as Zero and One
13546appearing within _PRT packages were not handled correctly within
13547the resource manager code.  Originally reported against the ASL
13548compiler because the code generator now optimizes integers to
13549their minimal AML representation (i.e. AML constants if possible.)
13550The _PRT code now handles all AML constant opcodes correctly
13551(Zero, One, Ones, Revision).
13552
13553Fixed a problem with the Concatenate operator in the AML
13554interpreter where a buffer result object was incorrectly marked as
13555not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
13556
13557All package sub-objects are now fully resolved before they are
13558returned from the external ACPI interfaces.  This means that name
13559strings are resolved to object handles, and constant operators
13560(Zero, One, Ones, Revision) are resolved to Integers.
13561
13562Implemented immediate resolution of the AML Constant opcodes
13563(Zero, One, Ones, Revision) to Integer objects upon detection
13564within the AML stream. This has simplified and reduced the
13565generated code size of the subsystem by eliminating about 10
13566switch statements for these constants (which previously were
13567contained in Reference objects.)  The complicating issues are that
13568the Zero opcode is used as a "placeholder" for unspecified
13569optional target operands and stores to constants are defined to be
13570no-ops.
13571
13572Code and Data Size: Current core subsystem library sizes are shown
13573below. These are the code and data sizes for the acpica.lib
13574produced by the Microsoft Visual C++ 6.0 compiler, and these
13575values do not include any ACPI driver or OSPM code.  The debug
13576version of the code includes the debug output trace mechanism and
13577has a larger code and data size.  Note that these values will vary
13578depending on the efficiency of the compiler and the compiler
13579options used during generation.
13580
13581  Previous Release
13582    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
13583    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
13584  Current Release:
13585    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
13586    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
13587
13588
135892) Linux
13590
13591
13592Added preliminary support for obtaining _TRA data for PCI root
13593bridges (Bjorn Helgaas).
13594
13595
135963) iASL Compiler Version X2046:
13597
13598Fixed a problem where the "_DDN" reserved name was defined to be a
13599control method with one argument.  There are no arguments, and
13600_DDN does not have to be a control method.
13601
13602Fixed a problem with the Linux version of the compiler where the
13603source lines printed with error messages were the wrong lines.
13604This turned out to be the "LF versus CR/LF" difference between
13605Windows and Unix.  This appears to be the longstanding issue
13606concerning listing output and error messages.
13607
13608Fixed a problem with the Linux version of compiler where opcode
13609names within error messages were wrong.  This was caused by a
13610slight difference in the output of the Flex tool on Linux versus
13611Windows.
13612
13613Fixed a problem with the Linux compiler where the hex output files
13614contained some garbage data caused by an internal buffer overrun.
13615
13616
13617----------------------------------------
1361817 May 2002.  Summary of changes for this release.
13619
13620
136211) ACPI CA Core Subsystem Version 20020517:
13622
13623Implemented a workaround to an BIOS bug discovered on the HP
13624OmniBook where the FADT revision number and the table size are
13625inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
13626behavior is to fallback to using only the ACPI 1.0 fields of the
13627FADT if the table is too small to be a ACPI 2.0 table as claimed
13628by the revision number.  Although this is a BIOS bug, this is a
13629case where the workaround is simple enough and with no side
13630effects, so it seemed prudent to add it.  A warning message is
13631issued, however.
13632
13633Implemented minimum size checks for the fixed-length ACPI tables -
13634- the FADT and FACS, as well as consistency checks between the
13635revision number and the table size.
13636
13637Fixed a reported problem in the table override support where the
13638new table pointer was incorrectly treated as a physical address
13639instead of a logical address.
13640
13641Eliminated the use of the AE_AML_ERROR exception and replaced it
13642with more descriptive codes.
13643
13644Fixed a problem where an exception would occur if an ASL Field was
13645defined with no named Field Units underneath it (used by some
13646index fields).
13647
13648Code and Data Size: Current core subsystem library sizes are shown
13649below.  These are the code and data sizes for the acpica.lib
13650produced by the Microsoft Visual C++ 6.0 compiler, and these
13651values do not include any ACPI driver or OSPM code.  The debug
13652version of the code includes the debug output trace mechanism and
13653has a larger code and data size.  Note that these values will vary
13654depending on the efficiency of the compiler and the compiler
13655options used during generation.
13656
13657  Previous Release
13658    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13659    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13660  Current Release:
13661    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
13662    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
13663
13664
13665
136662) Linux
13667
13668Much work done on ACPI init (MADT and PCI IRQ routing support).
13669(Paul D. and Dominik Brodowski)
13670
13671Fix PCI IRQ-related panic on boot (Sam Revitch)
13672
13673Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
13674
13675Fix "MHz" typo (Dominik Brodowski)
13676
13677Fix RTC year 2000 issue (Dominik Brodowski)
13678
13679Preclude multiple button proc entries (Eric Brunet)
13680
13681Moved arch-specific code out of include/platform/aclinux.h
13682
136833) iASL Compiler Version X2044:
13684
13685Implemented error checking for the string used in the EISAID macro
13686(Usually used in the definition of the _HID object.)  The code now
13687strictly enforces the PnP format - exactly 7 characters, 3
13688uppercase letters and 4 hex digits.
13689
13690If a raw string is used in the definition of the _HID object
13691(instead of the EISAID macro), the string must contain all
13692alphanumeric characters (e.g., "*PNP0011" is not allowed because
13693of the asterisk.)
13694
13695Implemented checking for invalid use of ACPI reserved names for
13696most of the name creation operators (Name, Device, Event, Mutex,
13697OperationRegion, PowerResource, Processor, and ThermalZone.)
13698Previously, this check was only performed for control methods.
13699
13700Implemented an additional check on the Name operator to emit an
13701error if a reserved name that must be implemented in ASL as a
13702control method is used.  We know that a reserved name must be a
13703method if it is defined with input arguments.
13704
13705The warning emitted when a namespace object reference is not found
13706during the cross reference phase has been changed into an error.
13707The "External" directive should be used for names defined in other
13708modules.
13709
13710
137114) Tools and Utilities
13712
13713The 16-bit tools (adump16 and aexec16) have been regenerated and
13714tested.
13715
13716Fixed a problem with the output of both acpidump and adump16 where
13717the indentation of closing parentheses and brackets was not
13718
13719aligned properly with the parent block.
13720
13721
13722----------------------------------------
1372303 May 2002.  Summary of changes for this release.
13724
13725
137261) ACPI CA Core Subsystem Version 20020503:
13727
13728Added support a new OSL interface that allows the host operating
13729
13730system software to override the DSDT found in the firmware -
13731AcpiOsTableOverride.  With this interface, the OSL can examine the
13732version of the firmware DSDT and replace it with a different one
13733if desired.
13734
13735Added new external interfaces for accessing ACPI registers from
13736device drivers and other system software - AcpiGetRegister and
13737AcpiSetRegister.  This was simply an externalization of the
13738existing AcpiHwBitRegister interfaces.
13739
13740Fixed a regression introduced in the previous build where the
13741ASL/AML CreateField operator always returned an error,
13742"destination must be a NS Node".
13743
13744Extended the maximum time (before failure) to successfully enable
13745ACPI mode to 3 seconds.
13746
13747Code and Data Size: Current core subsystem library sizes are shown
13748below.  These are the code and data sizes for the acpica.lib
13749produced by the Microsoft Visual C++ 6.0 compiler, and these
13750values do not include any ACPI driver or OSPM code.  The debug
13751version of the code includes the debug output trace mechanism and
13752has a larger code and data size.  Note that these values will vary
13753depending on the efficiency of the compiler and the compiler
13754options used during generation.
13755
13756  Previous Release
13757    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13758    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13759  Current Release:
13760    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13761    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13762
13763
137642) Linux
13765
13766Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
13767free. While 3 out of 4 of our in-house systems work fine, the last
13768one still hangs when testing the LAPIC timer.
13769
13770Renamed many files in 2.5 kernel release to omit "acpi_" from the
13771name.
13772
13773Added warning on boot for Presario 711FR.
13774
13775Sleep improvements (Pavel Machek)
13776
13777ACPI can now be built without CONFIG_PCI enabled.
13778
13779IA64: Fixed memory map functions (JI Lee)
13780
13781
137823) iASL Compiler Version X2043:
13783
13784Added support to allow the compiler to be integrated into the MS
13785VC++ development environment for one-button compilation of single
13786files or entire projects -- with error-to-source-line mapping.
13787
13788Implemented support for compile-time constant folding for the
13789Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
13790specification.  This allows the ASL writer to use expressions
13791instead of Integer/Buffer/String constants in terms that must
13792evaluate to constants at compile time and will also simplify the
13793emitted AML in any such sub-expressions that can be folded
13794(evaluated at compile-time.)  This increases the size of the
13795compiler significantly because a portion of the ACPI CA AML
13796interpreter is included within the compiler in order to pre-
13797evaluate constant expressions.
13798
13799
13800Fixed a problem with the "Unicode" ASL macro that caused the
13801compiler to fault.  (This macro is used in conjunction with the
13802_STR reserved name.)
13803
13804Implemented an AML opcode optimization to use the Zero, One, and
13805Ones opcodes where possible to further reduce the size of integer
13806constants and thus reduce the overall size of the generated AML
13807code.
13808
13809Implemented error checking for new reserved terms for ACPI version
138102.0A.
13811
13812Implemented the -qr option to display the current list of ACPI
13813reserved names known to the compiler.
13814
13815Implemented the -qc option to display the current list of ASL
13816operators that are allowed within constant expressions and can
13817therefore be folded at compile time if the operands are constants.
13818
13819
138204) Documentation
13821
13822Updated the Programmer's Reference for new interfaces, data types,
13823and memory allocation model options.
13824
13825Updated the iASL Compiler User Reference to apply new format and
13826add information about new features and options.
13827
13828----------------------------------------
1382919 April 2002.  Summary of changes for this release.
13830
138311) ACPI CA Core Subsystem Version 20020419:
13832
13833The source code base for the Core Subsystem has been completely
13834cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
13835versions.  The Lint option files used are included in the
13836/acpi/generate/lint directory.
13837
13838Implemented enhanced status/error checking across the entire
13839Hardware manager subsystem.  Any hardware errors (reported from
13840the OSL) are now bubbled up and will abort a running control
13841method.
13842
13843
13844Fixed a problem where the per-ACPI-table integer width (32 or 64)
13845was stored only with control method nodes, causing a fault when
13846non-control method code was executed during table loading.  The
13847solution implemented uses a global variable to indicate table
13848width across the entire ACPI subsystem.  Therefore, ACPI CA does
13849not support mixed integer widths across different ACPI tables
13850(DSDT, SSDT).
13851
13852Fixed a problem where NULL extended fields (X fields) in an ACPI
138532.0 ACPI FADT caused the table load to fail.  Although the
13854existing ACPI specification is a bit fuzzy on this topic, the new
13855behavior is to fall back on a ACPI 1.0 field if the corresponding
13856ACPI 2.0 X field is zero (even though the table revision indicates
13857a full ACPI 2.0 table.)  The ACPI specification will be updated to
13858clarify this issue.
13859
13860Fixed a problem with the SystemMemory operation region handler
13861where memory was always accessed byte-wise even if the AML-
13862specified access width was larger than a byte.  This caused
13863problems on systems with memory-mapped I/O.  Memory is now
13864accessed with the width specified.  On systems that do not support
13865non-aligned transfers, a check is made to guarantee proper address
13866alignment before proceeding in order to avoid an AML-caused
13867alignment fault within the kernel.
13868
13869
13870Fixed a problem with the ExtendedIrq resource where only one byte
13871of the 4-byte Irq field was extracted.
13872
13873Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
13874function was out of date and required a rewrite.
13875
13876Code and Data Size: Current core subsystem library sizes are shown
13877below.  These are the code and data sizes for the acpica.lib
13878produced by the Microsoft Visual C++ 6.0 compiler, and these
13879values do not include any ACPI driver or OSPM code.  The debug
13880version of the code includes the debug output trace mechanism and
13881has a larger code and data size.  Note that these values will vary
13882depending on the efficiency of the compiler and the compiler
13883options used during generation.
13884
13885  Previous Release
13886    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13887    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13888  Current Release:
13889    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13890    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13891
13892
138932) Linux
13894
13895PCI IRQ routing fixes (Dominik Brodowski)
13896
13897
138983) iASL Compiler Version X2042:
13899
13900Implemented an additional compile-time error check for a field
13901unit whose size + minimum access width would cause a run-time
13902access beyond the end-of-region.  Previously, only the field size
13903itself was checked.
13904
13905The Core subsystem and iASL compiler now share a common parse
13906object in preparation for compile-time evaluation of the type
139073/4/5 ASL operators.
13908
13909
13910----------------------------------------
13911Summary of changes for this release: 03_29_02
13912
139131) ACPI CA Core Subsystem Version 20020329:
13914
13915Implemented support for late evaluation of TermArg operands to
13916Buffer and Package objects.  This allows complex expressions to be
13917used in the declarations of these object types.
13918
13919Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
139201.0, if the field was larger than 32 bits, it was returned as a
13921buffer - otherwise it was returned as an integer.  In ACPI 2.0,
13922the field is returned as a buffer only if the field is larger than
1392364 bits.  The TableRevision is now considered when making this
13924conversion to avoid incompatibility with existing ASL code.
13925
13926Implemented logical addressing for AcpiOsGetRootPointer.  This
13927allows an RSDP with either a logical or physical address.  With
13928this support, the host OS can now override all ACPI tables with
13929one logical RSDP.  Includes implementation of  "typed" pointer
13930support to allow a common data type for both physical and logical
13931pointers internally.  This required a change to the
13932AcpiOsGetRootPointer interface.
13933
13934Implemented the use of ACPI 2.0 Generic Address Structures for all
13935GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
13936mapped I/O for these ACPI features.
13937
13938Initialization now ignores not only non-required tables (All
13939tables other than the FADT, FACS, DSDT, and SSDTs), but also does
13940not validate the table headers of unrecognized tables.
13941
13942Fixed a problem where a notify handler could only be
13943installed/removed on an object of type Device.  All "notify"
13944
13945objects are now supported -- Devices, Processor, Power, and
13946Thermal.
13947
13948Removed most verbosity from the ACPI_DB_INFO debug level.  Only
13949critical information is returned when this debug level is enabled.
13950
13951Code and Data Size: Current core subsystem library sizes are shown
13952below.  These are the code and data sizes for the acpica.lib
13953produced by the Microsoft Visual C++ 6.0 compiler, and these
13954values do not include any ACPI driver or OSPM code.  The debug
13955version of the code includes the debug output trace mechanism and
13956has a larger code and data size.  Note that these values will vary
13957depending on the efficiency of the compiler and the compiler
13958options used during generation.
13959
13960  Previous Release
13961    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13962    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13963  Current Release:
13964    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13965    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13966
13967
139682) Linux:
13969
13970The processor driver (acpi_processor.c) now fully supports ACPI
139712.0-based processor performance control (e.g. Intel(R)
13972SpeedStep(TM) technology) Note that older laptops that only have
13973the Intel "applet" interface are not supported through this.  The
13974'limit' and 'performance' interface (/proc) are fully functional.
13975[Note that basic policy for controlling performance state
13976transitions will be included in the next version of ospmd.]  The
13977idle handler was modified to more aggressively use C2, and PIIX4
13978errata handling underwent a complete overhaul (big thanks to
13979Dominik Brodowski).
13980
13981Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
13982based devices in the ACPI namespace are now dynamically bound
13983(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
13984This allows, among other things, ACPI to resolve bus numbers for
13985subordinate PCI bridges.
13986
13987Enhanced PCI IRQ routing to get the proper bus number for _PRT
13988entries defined underneath PCI bridges.
13989
13990Added IBM 600E to bad bios list due to invalid _ADR value for
13991PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
13992
13993In the process of adding full MADT support (e.g. IOAPIC) for IA32
13994(acpi.c, mpparse.c) -- stay tuned.
13995
13996Added back visual differentiation between fixed-feature and
13997control-method buttons in dmesg.  Buttons are also subtyped (e.g.
13998button/power/PWRF) to simplify button identification.
13999
14000We no longer use -Wno-unused when compiling debug. Please ignore
14001any "_THIS_MODULE defined but not used" messages.
14002
14003Can now shut down the system using "magic sysrq" key.
14004
14005
140063) iASL Compiler version 2041:
14007
14008Fixed a problem where conversion errors for hex/octal/decimal
14009constants were not reported.
14010
14011Implemented a fix for the General Register template Address field.
14012This field was 8 bits when it should be 64.
14013
14014Fixed a problem where errors/warnings were no longer being emitted
14015within the listing output file.
14016
14017Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
14018exactly 4 characters, alphanumeric only.
14019
14020
14021
14022
14023----------------------------------------
14024Summary of changes for this release: 03_08_02
14025
14026
140271) ACPI CA Core Subsystem Version 20020308:
14028
14029Fixed a problem with AML Fields where the use of the "AccessAny"
14030keyword could cause an interpreter error due to attempting to read
14031or write beyond the end of the parent Operation Region.
14032
14033Fixed a problem in the SystemMemory Operation Region handler where
14034an attempt was made to map memory beyond the end of the region.
14035This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
14036errors on some Linux systems.
14037
14038Fixed a problem where the interpreter/namespace "search to root"
14039algorithm was not functioning for some object types.  Relaxed the
14040internal restriction on the search to allow upsearches for all
14041external object types as well as most internal types.
14042
14043
140442) Linux:
14045
14046We now use safe_halt() macro versus individual calls to sti | hlt.
14047
14048Writing to the processor limit interface should now work. "echo 1"
14049will increase the limit, 2 will decrease, and 0 will reset to the
14050
14051default.
14052
14053
140543) ASL compiler:
14055
14056Fixed segfault on Linux version.
14057
14058
14059----------------------------------------
14060Summary of changes for this release: 02_25_02
14061
140621) ACPI CA Core Subsystem:
14063
14064
14065Fixed a problem where the GPE bit masks were not initialized
14066properly, causing erratic GPE behavior.
14067
14068Implemented limited support for multiple calling conventions.  The
14069code can be generated with either the VPL (variable parameter
14070list, or "C") convention, or the FPL (fixed parameter list, or
14071"Pascal") convention.  The core subsystem is about 3.4% smaller
14072when generated with FPL.
14073
14074
140752) Linux
14076
14077Re-add some /proc/acpi/event functionality that was lost during
14078the rewrite
14079
14080Resolved issue with /proc events for fixed-feature buttons showing
14081up as the system device.
14082
14083Fixed checks on C2/C3 latencies to be inclusive of maximum values.
14084
14085Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
14086
14087Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
14088
14089Fixed limit interface & usage to fix bugs with passive cooling
14090hysterisis.
14091
14092Restructured PRT support.
14093
14094
14095----------------------------------------
14096Summary of changes for this label: 02_14_02
14097
14098
140991) ACPI CA Core Subsystem:
14100
14101Implemented support in AcpiLoadTable to allow loading of FACS and
14102FADT tables.
14103
14104Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
14105been removed.  All 64-bit platforms should be migrated to the ACPI
141062.0 tables.  The actbl71.h header has been removed from the source
14107tree.
14108
14109All C macros defined within the subsystem have been prefixed with
14110"ACPI_" to avoid collision with other system include files.
14111
14112Removed the return value for the two AcpiOsPrint interfaces, since
14113it is never used and causes lint warnings for ignoring the return
14114value.
14115
14116Added error checking to all internal mutex acquire and release
14117calls.  Although a failure from one of these interfaces is
14118probably a fatal system error, these checks will cause the
14119immediate abort of the currently executing method or interface.
14120
14121Fixed a problem where the AcpiSetCurrentResources interface could
14122fault.  This was a side effect of the deployment of the new memory
14123allocation model.
14124
14125Fixed a couple of problems with the Global Lock support introduced
14126in the last major build.  The "common" (1.0/2.0) internal FACS was
14127being overwritten with the FACS signature and clobbering the
14128Global Lock pointer.  Also, the actual firmware FACS was being
14129unmapped after construction of the "common" FACS, preventing
14130access to the actual Global Lock field within it.  The "common"
14131internal FACS is no longer installed as an actual ACPI table; it
14132is used simply as a global.
14133
14134Code and Data Size: Current core subsystem library sizes are shown
14135below.  These are the code and data sizes for the acpica.lib
14136produced by the Microsoft Visual C++ 6.0 compiler, and these
14137values do not include any ACPI driver or OSPM code.  The debug
14138version of the code includes the debug output trace mechanism and
14139has a larger code and data size.  Note that these values will vary
14140depending on the efficiency of the compiler and the compiler
14141options used during generation.
14142
14143  Previous Release (02_07_01)
14144    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
14145    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
14146  Current Release:
14147    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
14148    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
14149
14150
141512) Linux
14152
14153Updated Linux-specific code for core macro and OSL interface
14154changes described above.
14155
14156Improved /proc/acpi/event. It now can be opened only once and has
14157proper poll functionality.
14158
14159Fixed and restructured power management (acpi_bus).
14160
14161Only create /proc "view by type" when devices of that class exist.
14162
14163Fixed "charging/discharging" bug (and others) in acpi_battery.
14164
14165Improved thermal zone code.
14166
14167
141683) ASL Compiler, version X2039:
14169
14170
14171Implemented the new compiler restriction on ASL String hex/octal
14172escapes to non-null, ASCII values.  An error results if an invalid
14173value is used.  (This will require an ACPI 2.0 specification
14174change.)
14175
14176AML object labels that are output to the optional C and ASM source
14177are now prefixed with both the ACPI table signature and table ID
14178to help guarantee uniqueness within a large BIOS project.
14179
14180
14181----------------------------------------
14182Summary of changes for this label: 02_01_02
14183
141841) ACPI CA Core Subsystem:
14185
14186ACPI 2.0 support is complete in the entire Core Subsystem and the
14187ASL compiler. All new ACPI 2.0 operators are implemented and all
14188other changes for ACPI 2.0 support are complete.  With
14189simultaneous code and data optimizations throughout the subsystem,
14190ACPI 2.0 support has been implemented with almost no additional
14191cost in terms of code and data size.
14192
14193Implemented a new mechanism for allocation of return buffers.  If
14194the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
14195be allocated on behalf of the caller.  Consolidated all return
14196buffer validation and allocation to a common procedure.  Return
14197buffers will be allocated via the primary OSL allocation interface
14198since it appears that a separate pool is not needed by most users.
14199If a separate pool is required for these buffers, the caller can
14200still use the original mechanism and pre-allocate the buffer(s).
14201
14202Implemented support for string operands within the DerefOf
14203operator.
14204
14205Restructured the Hardware and Event managers to be table driven,
14206simplifying the source code and reducing the amount of generated
14207code.
14208
14209Split the common read/write low-level ACPI register bitfield
14210procedure into a separate read and write, simplifying the code
14211considerably.
14212
14213Obsoleted the AcpiOsCallocate OSL interface.  This interface was
14214used only a handful of times and didn't have enough critical mass
14215for a separate interface.  Replaced with a common calloc procedure
14216in the core.
14217
14218Fixed a reported problem with the GPE number mapping mechanism
14219that allows GPE1 numbers to be non-contiguous with GPE0.
14220Reorganized the GPE information and shrunk a large array that was
14221originally large enough to hold info for all possible GPEs (256)
14222to simply large enough to hold all GPEs up to the largest GPE
14223number on the machine.
14224
14225Fixed a reported problem with resource structure alignment on 64-
14226bit platforms.
14227
14228Changed the AcpiEnableEvent and AcpiDisableEvent external
14229interfaces to not require any flags for the common case of
14230enabling/disabling a GPE.
14231
14232Implemented support to allow a "Notify" on a Processor object.
14233
14234Most TBDs in comments within the source code have been resolved
14235and eliminated.
14236
14237
14238Fixed a problem in the interpreter where a standalone parent
14239prefix (^) was not handled correctly in the interpreter and
14240debugger.
14241
14242Removed obsolete and unnecessary GPE save/restore code.
14243
14244Implemented Field support in the ASL Load operator.  This allows a
14245table to be loaded from a named field, in addition to loading a
14246table directly from an Operation Region.
14247
14248Implemented timeout and handle support in the external Global Lock
14249interfaces.
14250
14251Fixed a problem in the AcpiDump utility where pathnames were no
14252longer being generated correctly during the dump of named objects.
14253
14254Modified the AML debugger to give a full display of if/while
14255predicates instead of just one AML opcode at a time.  (The
14256predicate can have several nested ASL statements.)  The old method
14257was confusing during single stepping.
14258
14259Code and Data Size: Current core subsystem library sizes are shown
14260below. These are the code and data sizes for the acpica.lib
14261produced by the Microsoft Visual C++ 6.0 compiler, and these
14262values do not include any ACPI driver or OSPM code.  The debug
14263version of the code includes the debug output trace mechanism and
14264has a larger code and data size.  Note that these values will vary
14265depending on the efficiency of the compiler and the compiler
14266options used during generation.
14267
14268  Previous Release (12_18_01)
14269     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
14270     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
14271   Current Release:
14272     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
14273     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
14274
142752) Linux
14276
14277 Implemented fix for PIIX reverse throttling errata (Processor
14278driver)
14279
14280Added new Limit interface (Processor and Thermal drivers)
14281
14282New thermal policy (Thermal driver)
14283
14284Many updates to /proc
14285
14286Battery "low" event support (Battery driver)
14287
14288Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
14289
14290IA32 - IA64 initialization unification, no longer experimental
14291
14292Menuconfig options redesigned
14293
142943) ASL Compiler, version X2037:
14295
14296Implemented several new output features to simplify integration of
14297AML code into  firmware: 1) Output the AML in C source code with
14298labels for each named ASL object.  The    original ASL source code
14299is interleaved as C comments. 2) Output the AML in ASM source code
14300with labels and interleaved ASL    source. 3) Output the AML in
14301raw hex table form, in either C or ASM.
14302
14303Implemented support for optional string parameters to the
14304LoadTable operator.
14305
14306Completed support for embedded escape sequences within string
14307literals.  The compiler now supports all single character escapes
14308as well as the Octal and Hex escapes.  Note: the insertion of a
14309null byte into a string literal (via the hex/octal escape) causes
14310the string to be immediately terminated.  A warning is issued.
14311
14312Fixed a problem where incorrect AML was generated for the case
14313where an ASL namepath consists of a single parent prefix (
14314
14315) with no trailing name segments.
14316
14317The compiler has been successfully generated with a 64-bit C
14318compiler.
14319
14320
14321
14322
14323----------------------------------------
14324Summary of changes for this label: 12_18_01
14325
143261) Linux
14327
14328Enhanced blacklist with reason and severity fields. Any table's
14329signature may now be used to identify a blacklisted system.
14330
14331Call _PIC control method to inform the firmware which interrupt
14332model the OS is using. Turn on any disabled link devices.
14333
14334Cleaned up busmgr /proc error handling (Andreas Dilger)
14335
14336 2) ACPI CA Core Subsystem:
14337
14338Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
14339while loop)
14340
14341Completed implementation of the ACPI 2.0 "Continue",
14342"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
14343operators.  All new ACPI 2.0 operators are now implemented in both
14344the ASL compiler and the AML interpreter.  The only remaining ACPI
143452.0 task is support for the String data type in the DerefOf
14346operator.  Fixed a problem with AcquireMutex where the status code
14347was lost if the caller had to actually wait for the mutex.
14348
14349Increased the maximum ASL Field size from 64K bits to 4G bits.
14350
14351Completed implementation of the external Global Lock interfaces --
14352AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
14353Handler parameters were added.
14354
14355Completed another pass at removing warnings and issues when
14356compiling with 64-bit compilers.  The code now compiles cleanly
14357with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
14358add and subtract (diff) macros have changed considerably.
14359
14360
14361Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1436264-bit platforms, 32-bits on all others.  This type is used
14363wherever memory allocation and/or the C sizeof() operator is used,
14364and affects the OSL memory allocation interfaces AcpiOsAllocate
14365and AcpiOsCallocate.
14366
14367Implemented sticky user breakpoints in the AML debugger.
14368
14369Code and Data Size: Current core subsystem library sizes are shown
14370below. These are the code and data sizes for the acpica.lib
14371produced by the Microsoft Visual C++ 6.0 compiler, and these
14372values do not include any ACPI driver or OSPM code.  The debug
14373version of the code includes the debug output trace mechanism and
14374has a larger code and data size. Note that these values will vary
14375depending on the efficiency of the compiler and the compiler
14376options used during generation.
14377
14378  Previous Release (12_05_01)
14379     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
14380     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
14381   Current Release:
14382     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
14383     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
14384
14385 3) ASL Compiler, version X2034:
14386
14387Now checks for (and generates an error if detected) the use of a
14388Break or Continue statement without an enclosing While statement.
14389
14390
14391Successfully generated the compiler with the Intel 64-bit C
14392compiler.
14393
14394 ----------------------------------------
14395Summary of changes for this label: 12_05_01
14396
14397 1) ACPI CA Core Subsystem:
14398
14399The ACPI 2.0 CopyObject operator is fully implemented.  This
14400operator creates a new copy of an object (and is also used to
14401bypass the "implicit conversion" mechanism of the Store operator.)
14402
14403The ACPI 2.0 semantics for the SizeOf operator are fully
14404implemented.  The change is that performing a SizeOf on a
14405reference object causes an automatic dereference of the object to
14406tha actual value before the size is evaluated. This behavior was
14407undefined in ACPI 1.0.
14408
14409The ACPI 2.0 semantics for the Extended IRQ resource descriptor
14410have been implemented.  The interrupt polarity and mode are now
14411independently set.
14412
14413Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
14414appearing in Package objects were not properly converted to
14415integers when the internal Package was converted to an external
14416object (via the AcpiEvaluateObject interface.)
14417
14418Fixed a problem with the namespace object deletion mechanism for
14419objects created by control methods.  There were two parts to this
14420problem: 1) Objects created during the initialization phase method
14421parse were not being deleted, and 2) The object owner ID mechanism
14422to track objects was broken.
14423
14424Fixed a problem where the use of the ASL Scope operator within a
14425control method would result in an invalid opcode exception.
14426
14427Fixed a problem introduced in the previous label where the buffer
14428length required for the _PRT structure was not being returned
14429correctly.
14430
14431Code and Data Size: Current core subsystem library sizes are shown
14432below. These are the code and data sizes for the acpica.lib
14433produced by the Microsoft Visual C++ 6.0 compiler, and these
14434values do not include any ACPI driver or OSPM code.  The debug
14435version of the code includes the debug output trace mechanism and
14436has a larger code and data size.  Note that these values will vary
14437depending on the efficiency of the compiler and the compiler
14438options used during generation.
14439
14440  Previous Release (11_20_01)
14441     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14442     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14443
14444  Current Release:
14445     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
14446     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
14447
14448 2) Linux:
14449
14450Updated all files to apply cleanly against 2.4.16.
14451
14452Added basic PCI Interrupt Routing Table (PRT) support for IA32
14453(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
14454version supports both static and dyanmic PRT entries, but dynamic
14455entries are treated as if they were static (not yet
14456reconfigurable).  Architecture- specific code to use this data is
14457absent on IA32 but should be available shortly.
14458
14459Changed the initialization sequence to start the ACPI interpreter
14460(acpi_init) prior to initialization of the PCI driver (pci_init)
14461in init/main.c.  This ordering is required to support PRT and
14462facilitate other (future) enhancement.  A side effect is that the
14463ACPI bus driver and certain device drivers can no longer be loaded
14464as modules.
14465
14466Modified the 'make menuconfig' options to allow PCI Interrupt
14467Routing support to be included without the ACPI Bus and other
14468device drivers.
14469
14470 3) ASL Compiler, version X2033:
14471
14472Fixed some issues with the use of the new CopyObject and
14473DataTableRegion operators.  Both are fully functional.
14474
14475 ----------------------------------------
14476Summary of changes for this label: 11_20_01
14477
14478 20 November 2001.  Summary of changes for this release.
14479
14480 1) ACPI CA Core Subsystem:
14481
14482Updated Index support to match ACPI 2.0 semantics.  Storing a
14483Integer, String, or Buffer to an Index of a Buffer will store only
14484the least-significant byte of the source to the Indexed buffer
14485byte.  Multiple writes are not performed.
14486
14487Fixed a problem where the access type used in an AccessAs ASL
14488operator was not recorded correctly into the field object.
14489
14490Fixed a problem where ASL Event objects were created in a
14491signalled state. Events are now created in an unsignalled state.
14492
14493The internal object cache is now purged after table loading and
14494initialization to reduce the use of dynamic kernel memory -- on
14495the assumption that object use is greatest during the parse phase
14496of the entire table (versus the run-time use of individual control
14497methods.)
14498
14499ACPI 2.0 variable-length packages are now fully operational.
14500
14501Code and Data Size: Code and Data optimizations have permitted new
14502feature development with an actual reduction in the library size.
14503Current core subsystem library sizes are shown below.  These are
14504the code and data sizes for the acpica.lib produced by the
14505Microsoft Visual C++ 6.0 compiler, and these values do not include
14506any ACPI driver or OSPM code.  The debug version of the code
14507includes the debug output trace mechanism and has a larger code
14508and data size.  Note that these values will vary depending on the
14509efficiency of the compiler and the compiler options used during
14510generation.
14511
14512  Previous Release (11_09_01):
14513     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14514     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14515
14516  Current Release:
14517     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14518     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14519
14520 2) Linux:
14521
14522Enhanced the ACPI boot-time initialization code to allow the use
14523of Local APIC tables for processor enumeration on IA-32, and to
14524pave the way for a fully MPS-free boot (on SMP systems) in the
14525near future.  This functionality replaces
14526arch/i386/kernel/acpitables.c, which was introduced in an earlier
145272.4.15-preX release.  To enable this feature you must add
14528"acpi_boot=on" to the kernel command line -- see the help entry
14529for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
14530the works...
14531
14532Restructured the configuration options to allow boot-time table
14533parsing support without inclusion of the ACPI Interpreter (and
14534other) code.
14535
14536NOTE: This release does not include fixes for the reported events,
14537power-down, and thermal passive cooling issues (coming soon).
14538
14539 3) ASL Compiler:
14540
14541Added additional typechecking for Fields within restricted access
14542Operation Regions.  All fields within EC and CMOS regions must be
14543declared with ByteAcc. All fields withing SMBus regions must be
14544declared with the BufferAcc access type.
14545
14546Fixed a problem where the listing file output of control methods
14547no longer interleaved the actual AML code with the ASL source
14548code.
14549
14550
14551
14552
14553----------------------------------------
14554Summary of changes for this label: 11_09_01
14555
145561) ACPI CA Core Subsystem:
14557
14558Implemented ACPI 2.0-defined support for writes to fields with a
14559Buffer, String, or Integer source operand that is smaller than the
14560target field. In these cases, the source operand is zero-extended
14561to fill the target field.
14562
14563Fixed a problem where a Field starting bit offset (within the
14564parent operation region) was calculated incorrectly if the
14565
14566alignment of the field differed from the access width.  This
14567affected CreateWordField, CreateDwordField, CreateQwordField, and
14568possibly other fields that use the "AccessAny" keyword.
14569
14570Fixed a problem introduced in the 11_02_01 release where indirect
14571stores through method arguments did not operate correctly.
14572
145732) Linux:
14574
14575Implemented boot-time ACPI table parsing support
14576(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
14577facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
14578legacy BIOS interfaces (e.g. MPS) for the configuration of system
14579processors, memory, and interrupts during setup_arch().  Note that
14580this patch does not include the required architecture-specific
14581changes required to apply this information -- subsequent patches
14582will be posted for both IA32 and IA64 to achieve this.
14583
14584Added low-level sleep support for IA32 platforms, courtesy of Pat
14585Mochel. This allows IA32 systems to transition to/from various
14586sleeping states (e.g. S1, S3), although the lack of a centralized
14587driver model and power-manageable drivers will prevent its
14588(successful) use on most systems.
14589
14590Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
14591submenu, unified IA32 and IA64 options, added new "Boot using ACPI
14592tables" option, etc.
14593
14594Increased the default timeout for the EC driver from 1ms to 10ms
14595(1000 cycles of 10us) to try to address AE_TIME errors during EC
14596transactions.
14597
14598 ----------------------------------------
14599Summary of changes for this label: 11_02_01
14600
146011) ACPI CA Core Subsystem:
14602
14603ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
14604(QWordAcc keyword). All ACPI 2.0 64-bit support is now
14605implemented.
14606
14607OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
14608changes to support ACPI 2.0 Qword field access.  Read/Write
14609PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
14610accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
14611the value parameter for the address space handler interface is now
14612an ACPI_INTEGER.  OSL implementations of these interfaces must now
14613handle the case where the Width parameter is 64.
14614
14615Index Fields: Fixed a problem where unaligned bit assembly and
14616disassembly for IndexFields was not supported correctly.
14617
14618Index and Bank Fields:  Nested Index and Bank Fields are now
14619supported. During field access, a check is performed to ensure
14620that the value written to an Index or Bank register is not out of
14621the range of the register.  The Index (or Bank) register is
14622written before each access to the field data. Future support will
14623include allowing individual IndexFields to be wider than the
14624DataRegister width.
14625
14626Fields: Fixed a problem where the AML interpreter was incorrectly
14627attempting to write beyond the end of a Field/OpRegion.  This was
14628a boundary case that occurred when a DWORD field was written to a
14629BYTE access OpRegion, forcing multiple writes and causing the
14630interpreter to write one datum too many.
14631
14632Fields: Fixed a problem with Field/OpRegion access where the
14633starting bit address of a field was incorrectly calculated if the
14634current access type was wider than a byte (WordAcc, DwordAcc, or
14635QwordAcc).
14636
14637Fields: Fixed a problem where forward references to individual
14638FieldUnits (individual Field names within a Field definition) were
14639not resolved during the AML table load.
14640
14641Fields: Fixed a problem where forward references from a Field
14642definition to the parent Operation Region definition were not
14643resolved during the AML table load.
14644
14645Fields: Duplicate FieldUnit names within a scope are now detected
14646during AML table load.
14647
14648Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
14649returned an incorrect name for the root node.
14650
14651Code and Data Size: Code and Data optimizations have permitted new
14652feature development with an actual reduction in the library size.
14653Current core subsystem library sizes are shown below.  These are
14654the code and data sizes for the acpica.lib produced by the
14655Microsoft Visual C++ 6.0 compiler, and these values do not include
14656any ACPI driver or OSPM code.  The debug version of the code
14657includes the debug output trace mechanism and has a larger code
14658and data size.  Note that these values will vary depending on the
14659efficiency of the compiler and the compiler options used during
14660generation.
14661
14662  Previous Release (10_18_01):
14663     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14664     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14665
14666  Current Release:
14667     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14668     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14669
14670 2) Linux:
14671
14672Improved /proc processor output (Pavel Machek) Re-added
14673MODULE_LICENSE("GPL") to all modules.
14674
14675 3) ASL Compiler version X2030:
14676
14677Duplicate FieldUnit names within a scope are now detected and
14678flagged as errors.
14679
14680 4) Documentation:
14681
14682Programmer Reference updated to reflect OSL and address space
14683handler interface changes described above.
14684
14685----------------------------------------
14686Summary of changes for this label: 10_18_01
14687
14688ACPI CA Core Subsystem:
14689
14690Fixed a problem with the internal object reference count mechanism
14691that occasionally caused premature object deletion. This resolves
14692all of the outstanding problem reports where an object is deleted
14693in the middle of an interpreter evaluation.  Although this problem
14694only showed up in rather obscure cases, the solution to the
14695problem involved an adjustment of all reference counts involving
14696objects attached to namespace nodes.
14697
14698Fixed a problem with Field support in the interpreter where
14699writing to an aligned field whose length is an exact multiple (2
14700or greater) of the field access granularity would cause an attempt
14701to write beyond the end of the field.
14702
14703The top level AML opcode execution functions within the
14704interpreter have been renamed with a more meaningful and
14705consistent naming convention.  The modules exmonad.c and
14706exdyadic.c were eliminated.  New modules are exoparg1.c,
14707exoparg2.c, exoparg3.c, and exoparg6.c.
14708
14709Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
14710
14711Fixed a problem where the AML debugger was causing some internal
14712objects to not be deleted during subsystem termination.
14713
14714Fixed a problem with the external AcpiEvaluateObject interface
14715where the subsystem would fault if the named object to be
14716evaluated refered to a constant such as Zero, Ones, etc.
14717
14718Fixed a problem with IndexFields and BankFields where the
14719subsystem would fault if the index, data, or bank registers were
14720not defined in the same scope as the field itself.
14721
14722Added printf format string checking for compilers that support
14723this feature.  Corrected more than 50 instances of issues with
14724format specifiers within invocations of ACPI_DEBUG_PRINT
14725throughout the core subsystem code.
14726
14727The ASL "Revision" operator now returns the ACPI support level
14728implemented in the core - the value "2" since the ACPI 2.0 support
14729is more than 50% implemented.
14730
14731Enhanced the output of the AML debugger "dump namespace" command
14732to output in a more human-readable form.
14733
14734Current core subsystem library code sizes are shown below.  These
14735
14736are the code and data sizes for the acpica.lib produced by the
14737Microsoft Visual C++ 6.0 compiler, and these values do not include
14738any ACPI driver or OSPM code.  The debug version of the code
14739includes the full debug trace mechanism -- leading to a much
14740
14741larger code and data size.  Note that these values will vary
14742depending on the efficiency of the compiler and the compiler
14743options used during generation.
14744
14745     Previous Label (09_20_01):
14746     Non-Debug Version:    65K Code,     5K Data,     70K Total
14747     Debug Version:       138K Code,    58K Data,    196K Total
14748
14749     This Label:
14750
14751     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14752     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14753
14754Linux:
14755
14756Implemented a "Bad BIOS Blacklist" to track machines that have
14757known ASL/AML problems.
14758
14759Enhanced the /proc interface for the thermal zone driver and added
14760support for _HOT (the critical suspend trip point).  The 'info'
14761file now includes threshold/policy information, and allows setting
14762of _SCP (cooling preference) and _TZP (polling frequency) values
14763to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
14764frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
14765preference to the passive/quiet mode (if supported by the ASL).
14766
14767Implemented a workaround for a gcc bug that resuted in an OOPs
14768when loading the control method battery driver.
14769
14770 ----------------------------------------
14771Summary of changes for this label: 09_20_01
14772
14773 ACPI CA Core Subsystem:
14774
14775The AcpiEnableEvent and AcpiDisableEvent interfaces have been
14776modified to allow individual GPE levels to be flagged as wake-
14777enabled (i.e., these GPEs are to remain enabled when the platform
14778sleeps.)
14779
14780The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
14781support wake-enabled GPEs.  This means that upon entering the
14782sleep state, all GPEs that are not wake-enabled are disabled.
14783When leaving the sleep state, these GPEs are reenabled.
14784
14785A local double-precision divide/modulo module has been added to
14786enhance portability to OS kernels where a 64-bit math library is
14787not available.  The new module is "utmath.c".
14788
14789Several optimizations have been made to reduce the use of CPU
14790stack.  Originally over 2K, the maximum stack usage is now below
147912K at 1860  bytes (1.82k)
14792
14793Fixed a problem with the AcpiGetFirmwareTable interface where the
14794root table pointer was not mapped into a logical address properly.
14795
14796Fixed a problem where a NULL pointer was being dereferenced in the
14797interpreter code for the ASL Notify operator.
14798
14799Fixed a problem where the use of the ASL Revision operator
14800returned an error. This operator now returns the current version
14801of the ACPI CA core subsystem.
14802
14803Fixed a problem where objects passed as control method parameters
14804to AcpiEvaluateObject were always deleted at method termination.
14805However, these objects may end up being stored into the namespace
14806by the called method.  The object reference count mechanism was
14807applied to these objects instead of a force delete.
14808
14809Fixed a problem where static strings or buffers (contained in the
14810AML code) that are declared as package elements within the ASL
14811code could cause a fault because the interpreter would attempt to
14812delete them.  These objects are now marked with the "static
14813object" flag to prevent any attempt to delete them.
14814
14815Implemented an interpreter optimization to use operands directly
14816from the state object instead of extracting the operands to local
14817variables.  This reduces stack use and code size, and improves
14818performance.
14819
14820The module exxface.c was eliminated as it was an unnecessary extra
14821layer of code.
14822
14823Current core subsystem library code sizes are shown below.  These
14824are the code and data sizes for the acpica.lib produced by the
14825Microsoft Visual C++ 6.0 compiler, and these values do not include
14826any ACPI driver or OSPM code.  The debug version of the code
14827includes the full debug trace mechanism -- leading to a much
14828larger code and data size.  Note that these values will vary
14829depending on the efficiency of the compiler and the compiler
14830options used during generation.
14831
14832  Non-Debug Version:  65K Code,   5K Data,   70K Total
14833(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
14834Total  (Previously 195K)
14835
14836Linux:
14837
14838Support for ACPI 2.0 64-bit integers has been added.   All ACPI
14839Integer objects are now 64 bits wide
14840
14841All Acpi data types and structures are now in lower case.  Only
14842Acpi macros are upper case for differentiation.
14843
14844 Documentation:
14845
14846Changes to the external interfaces as described above.
14847
14848 ----------------------------------------
14849Summary of changes for this label: 08_31_01
14850
14851 ACPI CA Core Subsystem:
14852
14853A bug with interpreter implementation of the ASL Divide operator
14854was found and fixed.  The implicit function return value (not the
14855explicit store operands) was returning the remainder instead of
14856the quotient.  This was a longstanding bug and it fixes several
14857known outstanding issues on various platforms.
14858
14859The ACPI_DEBUG_PRINT and function trace entry/exit macros have
14860been further optimized for size.  There are 700 invocations of the
14861DEBUG_PRINT macro alone, so each optimization reduces the size of
14862the debug version of the subsystem significantly.
14863
14864A stack trace mechanism has been implemented.  The maximum stack
14865usage is about 2K on 32-bit platforms.  The debugger command "stat
14866stack" will display the current maximum stack usage.
14867
14868All public symbols and global variables within the subsystem are
14869now prefixed with the string "Acpi".  This keeps all of the
14870symbols grouped together in a kernel map, and avoids conflicts
14871with other kernel subsystems.
14872
14873Most of the internal fixed lookup tables have been moved into the
14874code segment via the const operator.
14875
14876Several enhancements have been made to the interpreter to both
14877reduce the code size and improve performance.
14878
14879Current core subsystem library code sizes are shown below.  These
14880are the code and data sizes for the acpica.lib produced by the
14881Microsoft Visual C++ 6.0 compiler, and these values do not include
14882any ACPI driver or OSPM code.  The debug version of the code
14883includes the full debug trace mechanism which contains over 700
14884invocations of the DEBUG_PRINT macro, 500 function entry macro
14885invocations, and over 900 function exit macro invocations --
14886leading to a much larger code and data size.  Note that these
14887values will vary depending on the efficiency of the compiler and
14888the compiler options used during generation.
14889
14890        Non-Debug Version:  64K Code,   5K Data,   69K Total
14891Debug Version:     137K Code,  58K Data,  195K Total
14892
14893 Linux:
14894
14895Implemented wbinvd() macro, pending a kernel-wide definition.
14896
14897Fixed /proc/acpi/event to handle poll() and short reads.
14898
14899 ASL Compiler, version X2026:
14900
14901Fixed a problem introduced in the previous label where the AML
14902
14903code emitted for package objects produced packages with zero
14904length.
14905
14906 ----------------------------------------
14907Summary of changes for this label: 08_16_01
14908
14909ACPI CA Core Subsystem:
14910
14911The following ACPI 2.0 ASL operators have been implemented in the
14912AML interpreter (These are already supported by the Intel ASL
14913compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
14914ToBuffer.  Support for 64-bit AML constants is implemented in the
14915AML parser, debugger, and disassembler.
14916
14917The internal memory tracking mechanism (leak detection code) has
14918been upgraded to reduce the memory overhead (a separate tracking
14919block is no longer allocated for each memory allocation), and now
14920supports all of the internal object caches.
14921
14922The data structures and code for the internal object caches have
14923been coelesced and optimized so that there is a single cache and
14924memory list data structure and a single group of functions that
14925implement generic cache management.  This has reduced the code
14926size in both the debug and release versions of the subsystem.
14927
14928The DEBUG_PRINT macro(s) have been optimized for size and replaced
14929by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
14930different, because it generates a single call to an internal
14931function.  This results in a savings of about 90 bytes per
14932invocation, resulting in an overall code and data savings of about
1493316% in the debug version of the subsystem.
14934
14935 Linux:
14936
14937Fixed C3 disk corruption problems and re-enabled C3 on supporting
14938machines.
14939
14940Integrated low-level sleep code by Patrick Mochel.
14941
14942Further tweaked source code Linuxization.
14943
14944Other minor fixes.
14945
14946 ASL Compiler:
14947
14948Support for ACPI 2.0 variable length packages is fixed/completed.
14949
14950Fixed a problem where the optional length parameter for the ACPI
149512.0 ToString operator.
14952
14953Fixed multiple extraneous error messages when a syntax error is
14954detected within the declaration line of a control method.
14955
14956 ----------------------------------------
14957Summary of changes for this label: 07_17_01
14958
14959ACPI CA Core Subsystem:
14960
14961Added a new interface named AcpiGetFirmwareTable to obtain any
14962ACPI table via the ACPI signature.  The interface can be called at
14963any time during kernel initialization, even before the kernel
14964virtual memory manager is initialized and paging is enabled.  This
14965allows kernel subsystems to obtain ACPI tables very early, even
14966before the ACPI CA subsystem is initialized.
14967
14968Fixed a problem where Fields defined with the AnyAcc attribute
14969could be resolved to the incorrect address under the following
14970conditions: 1) the field width is larger than 8 bits and 2) the
14971parent operation region is not defined on a DWORD boundary.
14972
14973Fixed a problem where the interpreter is not being locked during
14974namespace initialization (during execution of the _INI control
14975methods), causing an error when an attempt is made to release it
14976later.
14977
14978ACPI 2.0 support in the AML Interpreter has begun and will be
14979ongoing throughout the rest of this year.  In this label, The Mod
14980operator is implemented.
14981
14982Added a new data type to contain full PCI addresses named
14983ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
14984and Function values.
14985
14986 Linux:
14987
14988Enhanced the Linux version of the source code to change most
14989capitalized ACPI type names to lowercase. For example, all
14990instances of ACPI_STATUS are changed to acpi_status.  This will
14991result in a large diff, but the change is strictly cosmetic and
14992aligns the CA code closer to the Linux coding standard.
14993
14994OSL Interfaces:
14995
14996The interfaces to the PCI configuration space have been changed to
14997add the PCI Segment number and to split the single 32-bit combined
14998DeviceFunction field into two 16-bit fields.  This was
14999accomplished by moving the four values that define an address in
15000PCI configuration space (segment, bus, device, and function) to
15001the new ACPI_PCI_ID structure.
15002
15003The changes to the PCI configuration space interfaces led to a
15004reexamination of the complete set of address space access
15005interfaces for PCI, I/O, and Memory.  The previously existing 18
15006interfaces have proven difficult to maintain (any small change
15007must be propagated across at least 6 interfaces) and do not easily
15008allow for future expansion to 64 bits if necessary.  Also, on some
15009systems, it would not be appropriate to demultiplex the access
15010width (8, 16, 32,or 64) before calling the OSL if the
15011corresponding native OS interfaces contain a similar access width
15012parameter.  For these reasons, the 18 address space interfaces
15013have been replaced by these 6 new ones:
15014
15015AcpiOsReadPciConfiguration
15016AcpiOsWritePciConfiguration
15017AcpiOsReadMemory
15018AcpiOsWriteMemory
15019AcpiOsReadPort
15020AcpiOsWritePort
15021
15022Added a new interface named AcpiOsGetRootPointer to allow the OSL
15023to perform the platform and/or OS-specific actions necessary to
15024obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
15025interface will simply call down to the CA core to perform the low-
15026memory search for the table.  On IA-64, the RSDP is obtained from
15027EFI.  Migrating this interface to the OSL allows the CA core to
15028
15029remain OS and platform independent.
15030
15031Added a new interface named AcpiOsSignal to provide a generic
15032"function code and pointer" interface for various miscellaneous
15033signals and notifications that must be made to the host OS.   The
15034first such signals are intended to support the ASL Fatal and
15035Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
15036interface has been obsoleted.
15037
15038The definition of the AcpiFormatException interface has been
15039changed to simplify its use.  The caller no longer must supply a
15040buffer to the call; A pointer to a const string is now returned
15041directly.  This allows the call to be easily used in printf
15042statements, etc. since the caller does not have to manage a local
15043buffer.
15044
15045
15046 ASL Compiler, Version X2025:
15047
15048The ACPI 2.0 Switch/Case/Default operators have been implemented
15049and are fully functional.  They will work with all ACPI 1.0
15050interpreters, since the operators are simply translated to If/Else
15051pairs.
15052
15053The ACPI 2.0 ElseIf operator is implemented and will also work
15054with 1.0 interpreters, for the same reason.
15055
15056Implemented support for ACPI 2.0 variable-length packages.  These
15057packages have a separate opcode, and their size is determined by
15058the interpreter at run-time.
15059
15060Documentation The ACPI CA Programmer Reference has been updated to
15061reflect the new interfaces and changes to existing interfaces.
15062
15063 ------------------------------------------
15064Summary of changes for this label: 06_15_01
15065
15066 ACPI CA Core Subsystem:
15067
15068Fixed a problem where a DWORD-accessed field within a Buffer
15069object would get its byte address inadvertently rounded down to
15070the nearest DWORD.  Buffers are always Byte-accessible.
15071
15072 ASL Compiler, version X2024:
15073
15074Fixed a problem where the Switch() operator would either fault or
15075hang the compiler.  Note however, that the AML code for this ACPI
150762.0 operator is not yet implemented.
15077
15078Compiler uses the new AcpiOsGetTimer interface to obtain compile
15079timings.
15080
15081Implementation of the CreateField operator automatically converts
15082a reference to a named field within a resource descriptor from a
15083byte offset to a bit offset if required.
15084
15085Added some missing named fields from the resource descriptor
15086support. These are the names that are automatically created by the
15087compiler to reference fields within a descriptor.  They are only
15088valid at compile time and are not passed through to the AML
15089interpreter.
15090
15091Resource descriptor named fields are now typed as Integers and
15092subject to compile-time typechecking when used in expressions.
15093
15094 ------------------------------------------
15095Summary of changes for this label: 05_18_01
15096
15097 ACPI CA Core Subsystem:
15098
15099Fixed a couple of problems in the Field support code where bits
15100from adjacent fields could be returned along with the proper field
15101bits. Restructured the field support code to improve performance,
15102readability and maintainability.
15103
15104New DEBUG_PRINTP macro automatically inserts the procedure name
15105into the output, saving hundreds of copies of procedure name
15106strings within the source, shrinking the memory footprint of the
15107debug version of the core subsystem.
15108
15109 Source Code Structure:
15110
15111The source code directory tree was restructured to reflect the
15112current organization of the component architecture.  Some files
15113and directories have been moved and/or renamed.
15114
15115 Linux:
15116
15117Fixed leaking kacpidpc processes.
15118
15119Fixed queueing event data even when /proc/acpi/event is not
15120opened.
15121
15122 ASL Compiler, version X2020:
15123
15124Memory allocation performance enhancement - over 24X compile time
15125improvement on large ASL files.  Parse nodes and namestring
15126buffers are now allocated from a large internal compiler buffer.
15127
15128The temporary .SRC file is deleted unless the "-s" option is
15129specified
15130
15131The "-d" debug output option now sends all output to the .DBG file
15132instead of the console.
15133
15134"External" second parameter is now optional
15135
15136"ElseIf" syntax now properly allows the predicate
15137
15138Last operand to "Load" now recognized as a Target operand
15139
15140Debug object can now be used anywhere as a normal object.
15141
15142ResourceTemplate now returns an object of type BUFFER
15143
15144EISAID now returns an object of type INTEGER
15145
15146"Index" now works with a STRING operand
15147
15148"LoadTable" now accepts optional parameters
15149
15150"ToString" length parameter is now optional
15151
15152"Interrupt (ResourceType," parse error fixed.
15153
15154"Register" with a user-defined region space parse error fixed
15155
15156Escaped backslash at the end of a string ("\\") scan/parse error
15157fixed
15158
15159"Revision" is now an object of type INTEGER.
15160
15161
15162
15163------------------------------------------
15164Summary of changes for this label: 05_02_01
15165
15166Linux:
15167
15168/proc/acpi/event now blocks properly.
15169
15170Removed /proc/sys/acpi. You can still dump your DSDT from
15171/proc/acpi/dsdt.
15172
15173 ACPI CA Core Subsystem:
15174
15175Fixed a problem introduced in the previous label where some of the
15176"small" resource descriptor types were not recognized.
15177
15178Improved error messages for the case where an ASL Field is outside
15179the range of the parent operation region.
15180
15181 ASL Compiler, version X2018:
15182
15183
15184Added error detection for ASL Fields that extend beyond the length
15185of the parent operation region (only if the length of the region
15186is known at compile time.)  This includes fields that have a
15187minimum access width that is smaller than the parent region, and
15188individual field units that are partially or entirely beyond the
15189extent of the parent.
15190
15191
15192
15193------------------------------------------
15194Summary of changes for this label: 04_27_01
15195
15196 ACPI CA Core Subsystem:
15197
15198Fixed a problem where the namespace mutex could be released at the
15199wrong time during execution of AcpiRemoveAddressSpaceHandler.
15200
15201Added optional thread ID output for debug traces, to simplify
15202debugging of multiple threads.  Added context switch notification
15203when the debug code realizes that a different thread is now
15204executing ACPI code.
15205
15206Some additional external data types have been prefixed with the
15207string "ACPI_" for consistency.  This may effect existing code.
15208The data types affected are the external callback typedefs - e.g.,
15209
15210WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
15211
15212 Linux:
15213
15214Fixed an issue with the OSL semaphore implementation where a
15215thread was waking up with an error from receiving a SIGCHLD
15216signal.
15217
15218Linux version of ACPI CA now uses the system C library for string
15219manipulation routines instead of a local implementation.
15220
15221Cleaned up comments and removed TBDs.
15222
15223 ASL Compiler, version X2017:
15224
15225Enhanced error detection and reporting for all file I/O
15226operations.
15227
15228 Documentation:
15229
15230Programmer Reference updated to version 1.06.
15231
15232
15233
15234------------------------------------------
15235Summary of changes for this label: 04_13_01
15236
15237 ACPI CA Core Subsystem:
15238
15239Restructured support for BufferFields and RegionFields.
15240BankFields support is now fully operational.  All known 32-bit
15241limitations on field sizes have been removed.  Both BufferFields
15242and (Operation) RegionFields are now supported by the same field
15243management code.
15244
15245Resource support now supports QWORD address and IO resources. The
1524616/32/64 bit address structures and the Extended IRQ structure
15247have been changed to properly handle Source Resource strings.
15248
15249A ThreadId of -1 is now used to indicate a "mutex not acquired"
15250condition internally and must never be returned by AcpiOsThreadId.
15251This reserved value was changed from 0 since Unix systems allow a
15252thread ID of 0.
15253
15254Linux:
15255
15256Driver code reorganized to enhance portability
15257
15258Added a kernel configuration option to control ACPI_DEBUG
15259
15260Fixed the EC driver to honor _GLK.
15261
15262ASL Compiler, version X2016:
15263
15264Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
15265address space was set to 0, not 0x7f as it should be.
15266
15267 ------------------------------------------
15268Summary of changes for this label: 03_13_01
15269
15270 ACPI CA Core Subsystem:
15271
15272During ACPI initialization, the _SB_._INI method is now run if
15273present.
15274
15275Notify handler fix - notifies are deferred until the parent method
15276completes execution.  This fixes the "mutex already acquired"
15277issue seen occasionally.
15278
15279Part of the "implicit conversion" rules in ACPI 2.0 have been
15280found to cause compatibility problems with existing ASL/AML.  The
15281convert "result-to-target-type" implementation has been removed
15282for stores to method Args and Locals.  Source operand conversion
15283is still fully implemented.  Possible changes to ACPI 2.0
15284specification pending.
15285
15286Fix to AcpiRsCalculatePciRoutingTableLength to return correct
15287length.
15288
15289Fix for compiler warnings for 64-bit compiles.
15290
15291 Linux:
15292
15293/proc output aligned for easier parsing.
15294
15295Release-version compile problem fixed.
15296
15297New kernel configuration options documented in Configure.help.
15298
15299IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
15300context" message.
15301
15302 OSPM:
15303
15304Power resource driver integrated with bus manager.
15305
15306Fixed kernel fault during active cooling for thermal zones.
15307
15308Source Code:
15309
15310The source code tree has been restructured.
15311
15312
15313
15314------------------------------------------
15315Summary of changes for this label: 03_02_01
15316
15317 Linux OS Services Layer (OSL):
15318
15319Major revision of all Linux-specific code.
15320
15321Modularized all ACPI-specific drivers.
15322
15323Added new thermal zone and power resource drivers.
15324
15325Revamped /proc interface (new functionality is under /proc/acpi).
15326
15327New kernel configuration options.
15328
15329 Linux known issues:
15330
15331New kernel configuration options not documented in Configure.help
15332yet.
15333
15334
15335Module dependencies not currently implemented. If used, they
15336should be loaded in this order: busmgr, power, ec, system,
15337processor, battery, ac_adapter, button, thermal.
15338
15339Modules will not load if CONFIG_MODVERSION is set.
15340
15341IBM 600E - entering S5 may reboot instead of shutting down.
15342
15343IBM 600E - Sleep button may generate "Invalid <NULL> context"
15344message.
15345
15346Some systems may fail with "execution mutex already acquired"
15347message.
15348
15349 ACPI CA Core Subsystem:
15350
15351Added a new OSL Interface, AcpiOsGetThreadId.  This was required
15352for the  deadlock detection code. Defined to return a non-zero, 32-
15353bit thread ID for the currently executing thread.  May be a non-
15354zero constant integer on single-thread systems.
15355
15356Implemented deadlock detection for internal subsystem mutexes.  We
15357may add conditional compilation for this code (debug only) later.
15358
15359ASL/AML Mutex object semantics are now fully supported.  This
15360includes multiple acquires/releases by owner and support for the
15361
15362Mutex SyncLevel parameter.
15363
15364A new "Force Release" mechanism automatically frees all ASL
15365Mutexes that have been acquired but not released when a thread
15366exits the interpreter.  This forces conformance to the ACPI spec
15367("All mutexes must be released when an invocation exits") and
15368prevents deadlocked ASL threads.  This mechanism can be expanded
15369(later) to monitor other resource acquisitions if OEM ASL code
15370continues to misbehave (which it will).
15371
15372Several new ACPI exception codes have been added for the Mutex
15373support.
15374
15375Recursive method calls are now allowed and supported (the ACPI
15376spec does in fact allow recursive method calls.)  The number of
15377recursive calls is subject to the restrictions imposed by the
15378SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
15379parameter.
15380
15381Implemented support for the SyncLevel parameter for control
15382methods (ACPI 2.0 feature)
15383
15384Fixed a deadlock problem when multiple threads attempted to use
15385the interpreter.
15386
15387Fixed a problem where the string length of a String package
15388element was not always set in a package returned from
15389AcpiEvaluateObject.
15390
15391Fixed a problem where the length of a String package element was
15392not always included in the length of the overall package returned
15393from AcpiEvaluateObject.
15394
15395Added external interfaces (Acpi*) to the ACPI debug memory
15396manager.  This manager keeps a list of all outstanding
15397allocations, and can therefore detect memory leaks and attempts to
15398free memory blocks more than once. Useful for code such as the
15399power manager, etc.  May not be appropriate for device drivers.
15400Performance with the debug code enabled is slow.
15401
15402The ACPI Global Lock is now an optional hardware element.
15403
15404 ASL Compiler Version X2015:
15405
15406Integrated changes to allow the compiler to be generated on
15407multiple platforms.
15408
15409Linux makefile added to generate the compiler on Linux
15410
15411 Source Code:
15412
15413All platform-specific headers have been moved to their own
15414subdirectory, Include/Platform.
15415
15416New source file added, Interpreter/ammutex.c
15417
15418New header file, Include/acstruct.h
15419
15420 Documentation:
15421
15422The programmer reference has been updated for the following new
15423interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
15424
15425 ------------------------------------------
15426Summary of changes for this label: 02_08_01
15427
15428Core ACPI CA Subsystem: Fixed a problem where an error was
15429incorrectly returned if the return resource buffer was larger than
15430the actual data (in the resource interfaces).
15431
15432References to named objects within packages are resolved to the
15433
15434full pathname string before packages are returned directly (via
15435the AcpiEvaluateObject interface) or indirectly via the resource
15436interfaces.
15437
15438Linux OS Services Layer (OSL):
15439
15440Improved /proc battery interface.
15441
15442
15443Added C-state debugging output and other miscellaneous fixes.
15444
15445ASL Compiler Version X2014:
15446
15447All defined method arguments can now be used as local variables,
15448including the ones that are not actually passed in as parameters.
15449The compiler tracks initialization of the arguments and issues an
15450exception if they are used without prior assignment (just like
15451locals).
15452
15453The -o option now specifies a filename prefix that is used for all
15454output files, including the AML output file.  Otherwise, the
15455default behavior is as follows:  1) the AML goes to the file
15456specified in the DSDT.  2) all other output files use the input
15457source filename as the base.
15458
15459 ------------------------------------------
15460Summary of changes for this label: 01_25_01
15461
15462Core ACPI CA Subsystem: Restructured the implementation of object
15463store support within the  interpreter.  This includes support for
15464the Store operator as well  as any ASL operators that include a
15465target operand.
15466
15467Partially implemented support for Implicit Result-to-Target
15468conversion. This is when a result object is converted on the fly
15469to the type of  an existing target object.  Completion of this
15470support is pending  further analysis of the ACPI specification
15471concerning this matter.
15472
15473CPU-specific code has been removed from the subsystem (hardware
15474directory).
15475
15476New Power Management Timer functions added
15477
15478Linux OS Services Layer (OSL): Moved system state transition code
15479to the core, fixed it, and modified  Linux OSL accordingly.
15480
15481Fixed C2 and C3 latency calculations.
15482
15483
15484We no longer use the compilation date for the version message on
15485initialization, but retrieve the version from AcpiGetSystemInfo().
15486
15487Incorporated for fix Sony VAIO machines.
15488
15489Documentation:  The Programmer Reference has been updated and
15490reformatted.
15491
15492
15493ASL Compiler:  Version X2013: Fixed a problem where the line
15494numbering and error reporting could get out  of sync in the
15495presence of multiple include files.
15496
15497 ------------------------------------------
15498Summary of changes for this label: 01_15_01
15499
15500Core ACPI CA Subsystem:
15501
15502Implemented support for type conversions in the execution of the
15503ASL  Concatenate operator (The second operand is converted to
15504match the type  of the first operand before concatenation.)
15505
15506Support for implicit source operand conversion is partially
15507implemented.   The ASL source operand types Integer, Buffer, and
15508String are freely  interchangeable for most ASL operators and are
15509converted by the interpreter  on the fly as required.  Implicit
15510Target operand conversion (where the  result is converted to the
15511target type before storing) is not yet implemented.
15512
15513Support for 32-bit and 64-bit BCD integers is implemented.
15514
15515Problem fixed where a field read on an aligned field could cause a
15516read  past the end of the field.
15517
15518New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
15519does not return a value, but the caller expects one.  (The ASL
15520compiler flags this as a warning.)
15521
15522ASL Compiler:
15523
15524Version X2011:
155251. Static typechecking of all operands is implemented. This
15526prevents the use of invalid objects (such as using a Package where
15527an Integer is required) at compile time instead of at interpreter
15528run-time.
155292. The ASL source line is printed with ALL errors and warnings.
155303. Bug fix for source EOF without final linefeed.
155314. Debug option is split into a parse trace and a namespace trace.
155325. Namespace output option (-n) includes initial values for
15533integers and strings.
155346. Parse-only option added for quick syntax checking.
155357. Compiler checks for duplicate ACPI name declarations
15536
15537Version X2012:
155381. Relaxed typechecking to allow interchangeability between
15539strings, integers, and buffers.  These types are now converted by
15540the interpreter at runtime.
155412. Compiler reports time taken by each internal subsystem in the
15542debug         output file.
15543
15544
15545 ------------------------------------------
15546Summary of changes for this label: 12_14_00
15547
15548ASL Compiler:
15549
15550This is the first official release of the compiler. Since the
15551compiler requires elements of the Core Subsystem, this label
15552synchronizes everything.
15553
15554------------------------------------------
15555Summary of changes for this label: 12_08_00
15556
15557
15558Fixed a problem where named references within the ASL definition
15559of both OperationRegions and CreateXXXFields did not work
15560properly.  The symptom was an AE_AML_OPERAND_TYPE during
15561initialization of the region/field. This is similar (but not
15562related internally) to the problem that was fixed in the last
15563label.
15564
15565Implemented both 32-bit and 64-bit support for the BCD ASL
15566functions ToBCD and FromBCD.
15567
15568Updated all legal headers to include "2000" in the copyright
15569years.
15570
15571 ------------------------------------------
15572Summary of changes for this label: 12_01_00
15573
15574Fixed a problem where method invocations within the ASL definition
15575of both OperationRegions and CreateXXXFields did not work
15576properly.  The symptom was an AE_AML_OPERAND_TYPE during
15577initialization of the region/field:
15578
15579  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
15580[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
15581(0x3005)
15582
15583Fixed a problem where operators with more than one nested
15584subexpression would fail.  The symptoms were varied, by mostly
15585AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
15586problem that has gone unnoticed until now.
15587
15588  Subtract (Add (1,2), Multiply (3,4))
15589
15590Fixed a problem where AcpiGetHandle didn't quite get fixed in the
15591previous build (The prefix part of a relative path was handled
15592incorrectly).
15593
15594Fixed a problem where Operation Region initialization failed if
15595the operation region name was a "namepath" instead of a simple
15596"nameseg". Symptom was an AE_NO_OPERAND error.
15597
15598Fixed a problem where an assignment to a local variable via the
15599indirect RefOf mechanism only worked for the first such
15600assignment.  Subsequent assignments were ignored.
15601
15602 ------------------------------------------
15603Summary of changes for this label: 11_15_00
15604
15605ACPI 2.0 table support with backwards support for ACPI 1.0 and the
156060.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
15607the AML  interpreter does NOT have support for the new 2.0 ASL
15608grammar terms at this time.
15609
15610All ACPI hardware access is via the GAS structures in the ACPI 2.0
15611FADT.
15612
15613All physical memory addresses across all platforms are now 64 bits
15614wide. Logical address width remains dependent on the platform
15615(i.e., "void *").
15616
15617AcpiOsMapMemory interface changed to a 64-bit physical address.
15618
15619The AML interpreter integer size is now 64 bits, as per the ACPI
156202.0 specification.
15621
15622For backwards compatibility with ACPI 1.0, ACPI tables with a
15623revision number less than 2 use 32-bit integers only.
15624
15625Fixed a problem where the evaluation of OpRegion operands did not
15626always resolve them to numbers properly.
15627
15628------------------------------------------
15629Summary of changes for this label: 10_20_00
15630
15631Fix for CBN_._STA issue.  This fix will allow correct access to
15632CBN_ OpRegions when the _STA returns 0x8.
15633
15634Support to convert ACPI constants (Ones, Zeros, One) to actual
15635values before a package object is returned
15636
15637Fix for method call as predicate to if/while construct causing
15638incorrect if/while behavior
15639
15640Fix for Else block package lengths sometimes calculated wrong (if
15641block > 63 bytes)
15642
15643Fix for Processor object length field, was always zero
15644
15645Table load abort if FACP sanity check fails
15646
15647Fix for problem with Scope(name) if name already exists
15648
15649Warning emitted if a named object referenced cannot be found
15650(resolved) during method execution.
15651
15652
15653
15654
15655
15656------------------------------------------
15657Summary of changes for this label: 9_29_00
15658
15659New table initialization interfaces: AcpiInitializeSubsystem no
15660longer has any parameters AcpiFindRootPointer - Find the RSDP (if
15661necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
15662>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
15663AcpiLoadTables
15664
15665Note: These interface changes require changes to all existing OSDs
15666
15667The PCI_Config default address space handler is always installed
15668at the root namespace object.
15669
15670-------------------------------------------
15671Summary of changes for this label: 09_15_00
15672
15673The new initialization architecture is implemented.  New
15674interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
15675AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
15676
15677(Namespace is automatically loaded when a table is loaded)
15678
15679The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1568052 bytes to 32 bytes.  There is usually one of these for every
15681namespace object, so the memory savings is significant.
15682
15683Implemented just-in-time evaluation of the CreateField operators.
15684
15685Bug fixes for IA-64 support have been integrated.
15686
15687Additional code review comments have been implemented
15688
15689The so-called "third pass parse" has been replaced by a final walk
15690through the namespace to initialize all operation regions (address
15691spaces) and fields that have not yet been initialized during the
15692execution of the various _INI and REG methods.
15693
15694New file - namespace/nsinit.c
15695
15696-------------------------------------------
15697Summary of changes for this label: 09_01_00
15698
15699Namespace manager data structures have been reworked to change the
15700primary  object from a table to a single object.  This has
15701resulted in dynamic memory  savings of 3X within the namespace and
157022X overall in the ACPI CA subsystem.
15703
15704Fixed problem where the call to AcpiEvFindPciRootBuses was
15705inadvertently left  commented out.
15706
15707Reduced the warning count when generating the source with the GCC
15708compiler.
15709
15710Revision numbers added to each module header showing the
15711SourceSafe version of the file.  Please refer to this version
15712number when giving us feedback or comments on individual modules.
15713
15714The main object types within the subsystem have been renamed to
15715clarify their  purpose:
15716
15717ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
15718ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
15719ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
15720
15721NOTE: no changes to the initialization sequence are included in
15722this label.
15723
15724-------------------------------------------
15725Summary of changes for this label: 08_23_00
15726
15727Fixed problem where TerminateControlMethod was being called
15728multiple times per  method
15729
15730Fixed debugger problem where single stepping caused a semaphore to
15731be  oversignalled
15732
15733Improved performance through additional parse object caching -
15734added  ACPI_EXTENDED_OP type
15735
15736-------------------------------------------
15737Summary of changes for this label: 08_10_00
15738
15739Parser/Interpreter integration:  Eliminated the creation of
15740complete parse trees  for ACPI tables and control methods.
15741Instead, parse subtrees are created and  then deleted as soon as
15742they are processed (Either entered into the namespace or  executed
15743by the interpreter).  This reduces the use of dynamic kernel
15744memory  significantly. (about 10X)
15745
15746Exception codes broken into classes and renumbered.  Be sure to
15747recompile all  code that includes acexcep.h.  Hopefully we won't
15748have to renumber the codes  again now that they are split into
15749classes (environment, programmer, AML code,  ACPI table, and
15750internal).
15751
15752Fixed some additional alignment issues in the Resource Manager
15753subcomponent
15754
15755Implemented semaphore tracking in the AcpiExec utility, and fixed
15756several places  where mutexes/semaphores were being unlocked
15757without a corresponding lock  operation.  There are no known
15758semaphore or mutex "leaks" at this time.
15759
15760Fixed the case where an ASL Return operator is used to return an
15761unnamed  package.
15762
15763-------------------------------------------
15764Summary of changes for this label: 07_28_00
15765
15766Fixed a problem with the way addresses were calculated in
15767AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
15768manifested itself when a Field was  created with WordAccess or
15769DwordAccess, but the field unit defined within the  Field was less
15770
15771than a Word or Dword.
15772
15773Fixed a problem in AmlDumpOperands() module's loop to pull
15774operands off of the  operand stack to display information. The
15775problem manifested itself as a TLB  error on 64-bit systems when
15776accessing an operand stack with two or more  operands.
15777
15778Fixed a problem with the PCI configuration space handlers where
15779context was  getting confused between accesses. This required a
15780change to the generic address  space handler and address space
15781setup definitions. Handlers now get both a  global handler context
15782(this is the one passed in by the user when executing
15783AcpiInstallAddressSpaceHandler() and a specific region context
15784that is unique to  each region (For example, the _ADR, _SEG and
15785_BBN values associated with a  specific region). The generic
15786function definitions have changed to the  following:
15787
15788typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
15789UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
15790*HandlerContext, // This used to be void *Context void
15791*RegionContext); // This is an additional parameter
15792
15793typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
15794RegionHandle, UINT32 Function, void *HandlerContext,  void
15795**RegionContext); // This used to be **ReturnContext
15796
15797-------------------------------------------
15798Summary of changes for this label: 07_21_00
15799
15800Major file consolidation and rename.  All files within the
15801interpreter have been  renamed as well as most header files.  This
15802was done to prevent collisions with  existing files in the host
15803OSs -- filenames such as "config.h" and "global.h"  seem to be
15804quite common.  The VC project files have been updated.  All
15805makefiles  will require modification.
15806
15807The parser/interpreter integration continues in Phase 5 with the
15808implementation  of a complete 2-pass parse (the AML is parsed
15809twice) for each table;  This  avoids the construction of a huge
15810parse tree and therefore reduces the amount of  dynamic memory
15811required by the subsystem.  Greater use of the parse object cache
15812means that performance is unaffected.
15813
15814Many comments from the two code reviews have been rolled in.
15815
15816The 64-bit alignment support is complete.
15817
15818-------------------------------------------
15819Summary of changes for this label: 06_30_00
15820
15821With a nod and a tip of the hat to the technology of yesteryear,
15822we've added  support in the source code for 80 column output
15823devices.  The code is now mostly  constrained to 80 columns or
15824less to support environments and editors that 1)  cannot display
15825or print more than 80 characters on a single line, and 2) cannot
15826disable line wrapping.
15827
15828A major restructuring of the namespace data structure has been
15829completed.  The  result is 1) cleaner and more
15830understandable/maintainable code, and 2) a  significant reduction
15831in the dynamic memory requirement for each named ACPI  object
15832(almost half).
15833
15834-------------------------------------------
15835Summary of changes for this label: 06_23_00
15836
15837Linux support has been added.  In order to obtain approval to get
15838the ACPI CA  subsystem into the Linux kernel, we've had to make
15839quite a few changes to the  base subsystem that will affect all
15840users (all the changes are generic and OS- independent).  The
15841effects of these global changes have been somewhat far  reaching.
15842Files have been merged and/or renamed and interfaces have been
15843renamed.   The major changes are described below.
15844
15845Osd* interfaces renamed to AcpiOs* to eliminate namespace
15846pollution/confusion  within our target kernels.  All OSD
15847interfaces must be modified to match the new  naming convention.
15848
15849Files merged across the subsystem.  A number of the smaller source
15850and header  files have been merged to reduce the file count and
15851increase the density of the  existing files.  There are too many
15852to list here.  In general, makefiles that  call out individual
15853files will require rebuilding.
15854
15855Interpreter files renamed.  All interpreter files now have the
15856prefix am*  instead of ie* and is*.
15857
15858Header files renamed:  The acapi.h file is now acpixf.h.  The
15859acpiosd.h file is  now acpiosxf.h.  We are removing references to
15860the acronym "API" since it is  somewhat windowsy. The new name is
15861"external interface" or xface or xf in the  filenames.j
15862
15863
15864All manifest constants have been forced to upper case (some were
15865mixed case.)   Also, the string "ACPI_" has been prepended to many
15866(not all) of the constants,  typedefs, and structs.
15867
15868The globals "DebugLevel" and "DebugLayer" have been renamed
15869"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
15870
15871All other globals within the subsystem are now prefixed with
15872"AcpiGbl_" Internal procedures within the subsystem are now
15873prefixed with "Acpi" (with only  a few exceptions).  The original
15874two-letter abbreviation for the subcomponent  remains after "Acpi"
15875- for example, CmCallocate became AcpiCmCallocate.
15876
15877Added a source code translation/conversion utility.  Used to
15878generate the Linux  source code, it can be modified to generate
15879other types of source as well. Can  also be used to cleanup
15880existing source by removing extraneous spaces and blank  lines.
15881Found in tools/acpisrc/*
15882
15883OsdUnMapMemory was renamed to OsdUnmapMemory and then
15884AcpiOsUnmapMemory.  (UnMap  became Unmap).
15885
15886A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
15887When set to  one, this indicates that the caller wants to use the
15888
15889semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
15890both types.  However, implementers of this  call may want to use
15891different OS primitives depending on the type of semaphore
15892requested.  For example, some operating systems provide separate
15893
15894"mutex" and  "semaphore" interfaces - where the mutex interface is
15895much faster because it  doesn't have all the overhead of a full
15896semaphore implementation.
15897
15898Fixed a deadlock problem where a method that accesses the PCI
15899address space can  block forever if it is the first access to the
15900space.
15901
15902-------------------------------------------
15903Summary of changes for this label: 06_02_00
15904
15905Support for environments that cannot handle unaligned data
15906accesses (e.g.  firmware and OS environments devoid of alignment
15907handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
15908been added (via configurable macros) in  these three areas: -
15909Transfer of data from the raw AML byte stream is done via byte
15910moves instead of    word/dword/qword moves. - External objects are
15911aligned within the user buffer, including package   elements (sub-
15912objects). - Conversion of name strings to UINT32 Acpi Names is now
15913done byte-wise.
15914
15915The Store operator was modified to mimic Microsoft's
15916implementation when storing  to a Buffer Field.
15917
15918Added a check of the BM_STS bit before entering C3.
15919
15920The methods subdirectory has been obsoleted and removed.  A new
15921file, cmeval.c  subsumes the functionality.
15922
15923A 16-bit (DOS) version of AcpiExec has been developed.  The
15924makefile is under  the acpiexec directory.
15925