xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 5cef369f)
1----------------------------------------
212 February 2016. Summary of changes for version 20160212:
3
4This release is available at https://acpica.org/downloads
5
61) ACPICA kernel-resident subsystem:
7
8Implemented full support for the ACPI 6.1 specification (released in
9January). This version of the specification is available at:
10http://www.uefi.org/specifications
11
12Only a relatively small number of changes were required in ACPICA to
13support ACPI 6.1, in these areas:
14- New predefined names
15- New _HID values
16- A new subtable for HEST
17- A few other header changes for new values
18
19Ensure \_SB_._INI is executed before any _REG methods are executed. There
20appears to be existing BIOS code that relies on this behavior. Lv Zheng.
21
22Reverted a change made in version 20151218 which enabled method
23invocations to be targets of various ASL operators (SuperName and Target
24grammar elements). While the new behavior is supported by the ACPI
25specification, other AML interpreters do not support this behavior and
26never will. The ACPI specification will be updated for ACPI 6.2 to remove
27this support. Therefore, the change was reverted to the original ACPICA
28behavior.
29
30ACPICA now supports the GCC 6 compiler.
31
32Current Release: (Note: build changes increased sizes)
33    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
34    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
35Previous Release:
36    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
37    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
38
39
402) iASL Compiler/Disassembler and Tools:
41
42Completed full support for the ACPI 6.0 External() AML opcode. The
43compiler emits an external AML opcode for each ASL External statement.
44This opcode is used by the disassembler to assist with the disassembly of
45external control methods by specifying the required number of arguments
46for the method. AML interpreters do not use this opcode. To ensure that
47interpreters do not even see the opcode, a block of one or more external
48opcodes is surrounded by an "If(0)" construct. As this feature becomes
49commonly deployed in BIOS code, the ability of disassemblers to correctly
50disassemble AML code will be greatly improved. David Box.
51
52iASL: Implemented support for an optional cross-reference output file.
53The -lx option will create a the cross-reference file with the suffix
54"xrf". Three different types of cross-reference are created in this file:
55- List of object references made from within each control method
56- Invocation (caller) list for each user-defined control method
57- List of references to each non-method object in the namespace
58
59iASL: Method invocations as ASL Target operands are now disallowed and
60flagged as errors in preparation for ACPI 6.2 (see the description of the
61problem above).
62
63----------------------------------------
648 January 2016. Summary of changes for version 20160108:
65
661) ACPICA kernel-resident subsystem:
67
68Updated all ACPICA copyrights and signons to 2016: Added the 2016
69copyright to all source code module headers and utility/tool signons.
70This includes the standard Linux dual-license header. This affects
71virtually every file in the ACPICA core subsystem, iASL compiler, all
72ACPICA utilities, and the ACPICA test suite.
73
74Fixed a regression introduced in version 20151218 concerning the
75execution of so-called module-level ASL/AML code. Namespace objects
76created under a module-level If() construct were not properly/fully
77entered into the namespace and could cause an interpreter fault when
78accessed.
79
80Example Code and Data Size: These are the sizes for the OS-independent
81acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
82debug version of the code includes the debug output trace mechanism and
83has a much larger code and data size.
84
85Current Release:
86    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
87    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
88  Previous Release:
89    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
90    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
91
92
932) iASL Compiler/Disassembler and Tools:
94
95Fixed a problem with the compilation of the GpioIo and GpioInt resource
96descriptors. The _PIN field name was incorrectly defined to be an array
97of 32-bit values, but the _PIN values are in fact 16 bits each. This
98would cause incorrect bit width warnings when using Word (16-bit) fields
99to access the descriptors.
100
101
102----------------------------------------
10318 December 2015. Summary of changes for version 20151218:
104
1051) ACPICA kernel-resident subsystem:
106
107Implemented per-AML-table execution of "module-level code" as individual
108ACPI tables are loaded into the namespace during ACPICA initialization.
109In other words, any module-level code within an AML table is executed
110immediately after the table is loaded, instead of batched and executed
111after all of the tables have been loaded. This provides compatibility
112with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
113David Box.
114
115To fully support the feature above, the default operation region handlers
116for the SystemMemory, SystemIO, and PCI_Config address spaces are now
117installed before any ACPI tables are loaded. This enables module-level
118code to access these address spaces during the table load and module-
119level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
120Box.
121
122Implemented several changes to the internal _REG support in conjunction
123with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
124utilities for the changes above. Although these tools were changed, host
125operating systems that simply use the default handlers for SystemMemory,
126SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
127
128For example, in the code below, DEV1 is conditionally added to the
129namespace by the DSDT via module-level code that accesses an operation
130region. The SSDT references DEV1 via the Scope operator. DEV1 must be
131created immediately after the DSDT is loaded in order for the SSDT to
132successfully reference DEV1. Previously, this code would cause an
133AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
134fully supported by ACPICA.
135
136    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
137    {
138        OperationRegion (OPR1, SystemMemory, 0x400, 32)
139        Field (OPR1, AnyAcc, NoLock, Preserve)
140        {
141            FLD1, 1
142        }
143        If (FLD1)
144        {
145            Device (\DEV1)
146            {
147            }
148        }
149    }
150    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
151    {
152        External (\DEV1, DeviceObj)
153        Scope (\DEV1)
154        {
155        }
156    }
157
158Fixed an AML interpreter problem where control method invocations were
159not handled correctly when the invocation was itself a SuperName argument
160to another ASL operator. In these cases, the method was not invoked.
161ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
162argument:
163    Store
164    Acquire, Wait
165    CondRefOf, RefOf
166    Decrement, Increment
167    Load, Unload
168    Notify
169    Signal, Release, Reset
170    SizeOf
171
172Implemented automatic String-to-ObjectReference conversion support for
173packages returned by predefined names (such as _DEP). A common BIOS error
174is to add double quotes around an ObjectReference namepath, which turns
175the reference into an unexpected string object. This support detects the
176problem and corrects it before the package is returned to the caller that
177invoked the method. Lv Zheng.
178
179Implemented extensions to the Concatenate operator. Concatenate now
180accepts any type of object, it is not restricted to simply
181Integer/String/Buffer. For objects other than these 3 basic data types,
182the argument is treated as a string containing the name of the object
183type. This expands the utility of Concatenate and the Printf/Fprintf
184macros. ACPICA BZ 1222.
185
186Cleaned up the output of the ASL Debug object. The timer() value is now
187optional and no longer emitted by default. Also, the basic data types of
188Integer/String/Buffer are simply emitted as their values, without a data
189type string -- since the data type is obvious from the output. ACPICA BZ
1901221.
191
192Example Code and Data Size: These are the sizes for the OS-independent
193acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
194debug version of the code includes the debug output trace mechanism and
195has a much larger code and data size.
196
197  Current Release:
198    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
199    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
200  Previous Release:
201    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
202    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
203
204
2052) iASL Compiler/Disassembler and Tools:
206
207iASL: Fixed some issues with the ASL Include() operator. This operator
208was incorrectly defined in the iASL parser rules, causing a new scope to
209be opened for the code within the include file. This could lead to
210several issues, including allowing ASL code that is technically illegal
211and not supported by AML interpreters. Note, this does not affect the
212related #include preprocessor operator. ACPICA BZ 1212.
213
214iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
215operator is essentially an ASL macro since there is no AML opcode
216associated with it. The code emitted by the iASL compiler for ElseIf is
217an Else opcode followed immediately by an If opcode. The disassembler
218will now emit an ElseIf if it finds an Else immediately followed by an
219If. This simplifies the decoded ASL, especially for deeply nested
220If..Else and large Switch constructs. Thus, the disassembled code more
221closely follows the original source ASL. ACPICA BZ 1211. Example:
222
223    Old disassembly:
224        Else
225        {
226            If (Arg0 == 0x02)
227            {
228                Local0 = 0x05
229            }
230        }
231
232    New disassembly:
233        ElseIf (Arg0 == 0x02)
234        {
235            Local0 = 0x05
236        }
237
238AcpiExec: Added support for the new module level code behavior and the
239early region installation. This required a small change to the
240initialization, since AcpiExec must install its own operation region
241handlers.
242
243AcpiExec: Added support to make the debug object timer optional. Default
244is timer disabled. This cleans up the debug object output -- the timer
245data is rarely used.
246
247AcpiExec: Multiple ACPI tables are now loaded in the order that they
248appear on the command line. This can be important when there are
249interdependencies/references between the tables.
250
251iASL/Templates. Add support to generate template files with multiple
252SSDTs within a single output file. Also added ommand line support to
253specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
2541223, 1225.
255
256
257----------------------------------------
25824 November 2015. Summary of changes for version 20151124:
259
2601) ACPICA kernel-resident subsystem:
261
262Fixed a possible regression for a previous update to FADT handling. The
263FADT no longer has a fixed table ID, causing some issues with code that
264was hardwired to a specific ID. Lv Zheng.
265
266Fixed a problem where the method auto-serialization could interfere with
267the current SyncLevel. This change makes the auto-serialization support
268transparent to the SyncLevel support and management.
269
270Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
271interface is intended for early access to the namespace during the
272initial namespace device discovery walk. The _SUB method has been seen to
273access operation regions in some cases, causing errors because the
274operation regions are not fully initialized.
275
276AML Debugger: Fixed some issues with the terminate/quit/exit commands
277that can cause faults. Lv Zheng.
278
279AML Debugger: Add thread ID support so that single-step mode only applies
280to the AML Debugger thread. This prevents runtime errors within some
281kernels. Lv Zheng.
282
283Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
284methods that are invoked by this interface are optional, removed warnings
285emitted for the case where one or more of these methods do not exist.
286ACPICA BZ 1208, original change by Prarit Bhargava.
287
288Made a major pass through the entire ACPICA source code base to
289standardize formatting that has diverged a bit over time. There are no
290functional changes, but this will of course cause quite a few code
291differences from the previous ACPICA release.
292
293Example Code and Data Size: These are the sizes for the OS-independent
294acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
295debug version of the code includes the debug output trace mechanism and
296has a much larger code and data size.
297
298  Current Release:
299    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
300    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
301  Previous Release:
302    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
303    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
304
305
3062) iASL Compiler/Disassembler and Tools:
307
308iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
309definition blocks within a single ASL file and the resulting AML file.
310Support for this type of file was also added to the various tools that
311use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
312example code below shows two definition blocks within the same file:
313
314    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
3150x12345678)
316    {
317    }
318    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
319    {
320    }
321
322iASL: Enhanced typechecking for the Name() operator. All expressions for
323the value of the named object must be reduced/folded to a single constant
324at compile time, as per the ACPI specification (the AML definition of
325Name()).
326
327iASL: Fixed some code indentation issues for the -ic and -ia options (C
328and assembly headers). Now all emitted code correctly begins in column 1.
329
330iASL: Added an error message for an attempt to open a Scope() on an
331object defined in an SSDT. The DSDT is always loaded into the namespace
332first, so any attempt to open a Scope on an SSDT object will fail at
333runtime.
334
335
336----------------------------------------
33730 September 2015. Summary of changes for version 20150930:
338
3391) ACPICA kernel-resident subsystem:
340
341Debugger: Implemented several changes and bug fixes to assist support for
342the in-kernel version of the AML debugger. Lv Zheng.
343- Fix the "predefined" command for in-kernel debugger.
344- Do not enter debug command loop for the help and version commands.
345- Disallow "execute" command during execution/single-step of a method.
346
347Interpreter: Updated runtime typechecking for all operators that have
348target operands. The operand is resolved and validated that it is legal.
349For example, the target cannot be a non-data object such as a Device,
350Mutex, ThermalZone, etc., as per the ACPI specification.
351
352Debugger: Fixed the double-mutex user I/O handshake to work when local
353deadlock detection is enabled.
354
355Debugger: limited display of method locals and arguments (LocalX and
356ArgX) to only those that have actually been initialized. This prevents
357lines of extraneous output.
358
359Updated the definition of the NFIT table to correct the bit polarity of
360one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
361
362Example Code and Data Size: These are the sizes for the OS-independent
363acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
364debug version of the code includes the debug output trace mechanism and
365has a much larger code and data size.
366
367  Current Release:
368    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
369    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
370  Previous Release:
371    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
372    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
373
374
3752) iASL Compiler/Disassembler and Tools:
376
377iASL: Improved the compile-time typechecking for operands of many of the
378ASL operators:
379
380-- Added an option to disable compiler operand/operator typechecking (-
381ot).
382
383-- For the following operators, the TermArg operands are now validated
384when possible to be Integer data objects: BankField, OperationRegion,
385DataTableRegion, Buffer, and Package.
386
387-- Store (Source, Target): Both the source and target operands are
388resolved and checked that the operands are both legal. For example,
389neither operand can be a non-data object such as a Device, Mutex,
390ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
391operator can be used to store an object to any type of target object.
392
393-- Store (Source, Target): If the source is a Package object, the target
394must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
395is a Package, the source must also be a Package.
396
397-- Store (Source, Target): A warning is issued if the source and target
398resolve to the identical named object.
399
400-- Store (Source, <method invocation>): An error is generated for the
401target method invocation, as this construct is not supported by the AML
402interpreter.
403
404-- For all ASL math and logic operators, the target operand must be a
405data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
406includes the function return value also.
407
408-- External declarations are also included in the typechecking where
409possible. External objects defined using the UnknownObj keyword cannot be
410typechecked, however.
411
412iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
413operator:
414- Legacy code: Index(PKG1, 3)
415- New ASL+ code: PKG1[3]
416This completes the ACPI 6.0 ASL+ support as it was the only operator not
417supported.
418
419iASL: Fixed the file suffix for the preprocessor output file (.i). Two
420spaces were inadvertently appended to the filename, causing file access
421and deletion problems on some systems.
422
423ASL Test Suite (ASLTS): Updated the master makefile to generate all
424possible compiler output files when building the test suite -- thus
425exercising these features of the compiler. These files are automatically
426deleted when the test suite exits.
427
428
429----------------------------------------
43018 August 2015. Summary of changes for version 20150818:
431
4321) ACPICA kernel-resident subsystem:
433
434Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
435Zheng. ACPICA BZ 1186.
436
437Completed development to ensure that the ACPICA Disassembler and Debugger
438are fully standalone components of ACPICA. Removed cross-component
439dependences. Lv Zheng.
440
441The max-number-of-AML-loops is now runtime configurable (previously was
442compile-time only). This is essentially a loop timeout to force-abort
443infinite AML loops. ACPCIA BZ 1192.
444
445Debugger: Cleanup output to dump ACPI names and namepaths without any
446trailing underscores. Lv Zheng. ACPICA BZ 1135.
447
448Removed unnecessary conditional compilations across the Debugger and
449Disassembler components where entire modules could be left uncompiled.
450
451The aapits test is deprecated and has been removed from the ACPICA git
452tree. The test has never been completed and has not been maintained, thus
453becoming rather useless. ACPICA BZ 1015, 794.
454
455A batch of small changes to close bugzilla and other reports:
456- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
457- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
458- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
459- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
460Moore.
461- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
462ACPICA BZ 1184.
463- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
464operators.
465- Debugger: Split debugger initialization/termination interfaces. Lv
466Zheng.
467- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
468identification.
469- AcpiExec: Add debug message during _REG method phase during table
470load/init.
471- AcpiNames: Fix a regression where some output was missing and no longer
472emitted.
473- Debugger: General cleanup and simplification. Lv Zheng.
474- Disassembler: Cleanup use of several global option variables. Lv Zheng.
475
476Example Code and Data Size: These are the sizes for the OS-independent
477acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
478debug version of the code includes the debug output trace mechanism and
479has a much larger code and data size.
480
481  Current Release:
482    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
483    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
484  Previous Release:
485    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
486    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
487
488
4892) iASL Compiler/Disassembler and Tools:
490
491AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
492were not handled properly and caused load errors. Now, properly invoke
493and use the ACPICA auto-reallocate mechanism for ACPI table data
494structures. ACPICA BZ 1188
495
496AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
497BZ 1190.
498
499AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
500AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
501executed during initialization. ACPICA BZ 1187, 1189.
502
503iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
504that corresponds to each disassembled ASL statement, to simplify
505debugging. ACPICA BZ 1191.
506
507Debugger: Add option to the "objects" command to display a summary of the
508current namespace objects (Object type and count). This is displayed if
509the command is entered with no arguments.
510
511AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
512
513
514----------------------------------------
51517 July 2015. Summary of changes for version 20150717:
516
5171) ACPICA kernel-resident subsystem:
518
519Improved the partitioning between the Debugger and Disassembler
520components. This allows the Debugger to be used standalone within kernel
521code without the Disassembler (which is used for single stepping also).
522This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
523
524Debugger: Implemented a new command to trace the execution of control
525methods (Trace). This is especially useful for the in-kernel version of
526the debugger when file I/O may not be available for method trace output.
527See the ACPICA reference for more information. Lv Zheng.
528
529Moved all C library prototypes (used for the local versions of these
530functions when requested) to a new header, acclib.h
531Cleaned up the use of non-ANSI C library functions. These functions are
532implemented locally in ACPICA. Moved all such functions to a common
533source file, utnonansi.c
534
535Debugger: Fixed a problem with the "!!" command (get last command
536executed) where the debugger could enter an infinite loop and eventually
537crash.
538
539Removed the use of local macros that were used for some of the standard C
540library functions to automatically cast input parameters. This mostly
541affected the is* functions where the input parameter is defined to be an
542int. This required a few modifications to the main ACPICA source code to
543provide casting for these functions and eliminate possible compiler
544warnings for these parameters.
545
546Across the source code, added additional status/error checking to resolve
547issues discovered by static source code analysis tools such as Coverity.
548
549Example Code and Data Size: These are the sizes for the OS-independent
550acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
551debug version of the code includes the debug output trace mechanism and
552has a much larger code and data size.
553
554  Current Release:
555    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
556    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
557  Previous Release:
558    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
559    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
560
561
5622) iASL Compiler/Disassembler and Tools:
563
564iASL: Fixed a regression where the device map file feature no longer
565worked properly when used in conjunction with the disassembler. It only
566worked properly with the compiler itself.
567
568iASL: Implemented a new warning for method LocalX variables that are set
569but never used (similar to a C compiler such as gcc). This also applies
570to ArgX variables that are not defined by the parent method, and are
571instead (legally) used as local variables.
572
573iASL/Preprocessor: Finished the pass-through of line numbers from the
574preprocessor to the compiler. This ensures that compiler errors/warnings
575have the correct original line numbers and filenames, regardless of any
576#include files.
577
578iASL/Preprocessor: Fixed a couple of issues with comment handling and the
579pass-through of comments to the preprocessor output file (which becomes
580the compiler input file). Also fixed a problem with // comments that
581appear after a math expression.
582
583iASL: Added support for the TCPA server table to the table compiler and
584template generator. (The client table was already previously supported)
585
586iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
587identify the iASL compiler.
588
589Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
590multiple times. The new names are ACPI_SIGN_NEGATIVE and
591ACPI_SIGN_POSITIVE.
592
593AcpiHelp: Update to expand help messages for the iASL preprocessor
594directives.
595
596
597----------------------------------------
59819 June 2015. Summary of changes for version 20150619:
599
600Two regressions in version 20150616 have been addressed:
601
602Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
603etc.) This update changes ACPICA to only use the standard headers for
604functions, or the prototypes for the local versions of the C library
605functions. Across the source code, this required some additional casts
606for some Clib invocations for portability. Moved all local prototypes to
607a new file, acclib.h
608
609Fixes several problems with recent changes to the handling of the FACS
610table that could cause some systems not to boot.
611
612
613----------------------------------------
61416 June 2015. Summary of changes for version 20150616:
615
616
6171) ACPICA kernel-resident subsystem:
618
619Across the entire ACPICA source code base, the various macros for the C
620library functions (such as ACPI_STRLEN, etc.) have been removed and
621replaced by the standard C library names (strlen, etc.) The original
622purpose for these macros is no longer applicable. This simplification
623reduces the number of macros used in the ACPICA source code
624significantly, improving readability and maintainability.
625
626Implemented support for a new ACPI table, the OSDT. This table, the
627"override" SDT, can be loaded directly by the host OS at boot time. It
628enables the replacement of existing namespace objects that were installed
629via the DSDT and/or SSDTs. The primary purpose for this is to replace
630buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
631for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
632Moore.
633
634Added support for systems with (improperly) two FACS tables -- a "32-bit"
635table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
636X field). This change will support both automatically. There continues to
637be systems found with this issue. This support requires a change to the
638AcpiSetFirmwareWakingVector interface. Also, a public global variable has
639been added to allow the host to select which FACS is desired
640(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
641details Lv Zheng.
642
643Added a new feature to allow for systems that do not contain an FACS.
644Although this is already supported on hardware-reduced platforms, the
645feature has been extended for all platforms. The reasoning is that we do
646not want to abort the entire ACPICA initialization just because the
647system is seriously buggy and has no FACS.
648
649Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
650not correctly transcribed from the ACPI specification in ACPICA version
65120150515.
652
653Implemented support for the _CLS object in the AcpiGetObjectInfo external
654interface.
655
656Updated the definitions of the TCPA and TPM2 ACPI tables to the more
657recent TCG ACPI Specification, December 14, 2014. Table disassembler and
658compiler also updated. Note: The TCPA "server" table is not supported by
659the disassembler/table-compiler at this time.
660
661ACPI 6.0: Added definitions for the new GIC version field in the MADT.
662
663Example Code and Data Size: These are the sizes for the OS-independent
664acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
665debug version of the code includes the debug output trace mechanism and
666has a much larger code and data size.
667
668  Current Release:
669    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
670    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
671  Previous Release:
672    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
673    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
674
675
6762) iASL Compiler/Disassembler and Tools:
677
678Disassembler: Fixed a problem with the new symbolic operator disassembler
679where incorrect ASL code could be emitted in some cases for the "non-
680commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
681ShiftRight. The actual problem cases seem to be rather unusual in common
682ASL code, however. David Box.
683
684Modified the linux version of acpidump to obtain ACPI tables from not
685just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
686Zheng.
687
688iASL: Fixed a problem where the user preprocessor output file (.i)
689contained extra data that was not expected. The compiler was using this
690file as a temporary file and passed through #line directives in order to
691keep compiler error messages in sync with the input file and line number
692across multiple include files. The (.i) is no longer a temporary file as
693the compiler uses a new, different file for the original purpose.
694
695iASL: Fixed a problem where comments within the original ASL source code
696file were not passed through to the preprocessor output file, nor any
697listing files.
698
699iASL: Fixed some issues for the handling of the "#include" preprocessor
700directive and the similar (but not the same) "Include" ASL operator.
701
702iASL: Add support for the new OSDT in both the disassembler and compiler.
703
704iASL: Fixed a problem with the constant folding support where a Buffer
705object could be incorrectly generated (incorrectly formed) during a
706conversion to a Store() operator.
707
708AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
709description text for the _REV predefined name. _REV now permanently
710returns 2, as per the ACPI 6.0 specification.
711
712Debugger: Enhanced the output of the Debug ASL object for references
713produced by the Index operator. For Buffers and strings, only output the
714actual byte pointed to by the index. For packages, only print the single
715package element decoded by the index. Previously, the entire
716buffer/string/package was emitted.
717
718iASL/Table-compiler: Fixed a regression where the "generic" data types
719were no longer recognized, causing errors.
720
721
722----------------------------------------
72315 May 2015. Summary of changes for version 20150515:
724
725This release implements most of ACPI 6.0 as described below.
726
7271) ACPICA kernel-resident subsystem:
728
729Implemented runtime argument checking and return value checking for all
730new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
731_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
732
733Example Code and Data Size: These are the sizes for the OS-independent
734acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
735debug version of the code includes the debug output trace mechanism and
736has a much larger code and data size.
737
738  Current Release:
739    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
740    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
741  Previous Release:
742    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
743    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
744
745
7462) iASL Compiler/Disassembler and Tools:
747
748iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
749names (argument count validation and return value typechecking.)
750
751iASL disassembler and table compiler: implemented support for all new
752ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
753
754iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
755tables: FADT, MADT.
756
757iASL preprocessor: Added a new directive to enable inclusion of binary
758blobs into ASL code. The new directive is #includebuffer. It takes a
759binary file as input and emits a named ascii buffer object into the ASL
760code.
761
762AcpiHelp: Added support for all new ACPI 6.0 predefined names.
763
764AcpiHelp: Added a new option, -d, to display all iASL preprocessor
765directives.
766
767AcpiHelp: Added a new option, -t, to display all known/supported ACPI
768tables.
769
770
771----------------------------------------
77210 April 2015. Summary of changes for version 20150410:
773
774Reverted a change introduced in version 20150408 that caused
775a regression in the disassembler where incorrect operator
776symbols could be emitted.
777
778
779----------------------------------------
78008 April 2015. Summary of changes for version 20150408:
781
782
7831) ACPICA kernel-resident subsystem:
784
785Permanently set the return value for the _REV predefined name. It now
786returns 2 (was 5). This matches other ACPI implementations. _REV will be
787deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
788for ACPI 2.0 and later. It should never be used to differentiate or
789identify operating systems.
790
791Added the "Windows 2015" string to the _OSI support. ACPICA will now
792return TRUE to a query with this string.
793
794Fixed several issues with the local version of the printf function.
795
796Added the C99 compiler option (-std=c99) to the Unix makefiles.
797
798  Current Release:
799    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
800    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
801  Previous Release:
802    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
803    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
804
805
8062) iASL Compiler/Disassembler and Tools:
807
808iASL: Implemented an enhancement to the constant folding feature to
809transform the parse tree to a simple Store operation whenever possible:
810    Add (2, 3, X) ==> is converted to: Store (5, X)
811    X = 2 + 3     ==> is converted to: Store (5, X)
812
813Updated support for the SLIC table (Software Licensing Description Table)
814in both the Data Table compiler and the disassembler. The SLIC table
815support now conforms to "Microsoft Software Licensing Tables (SLIC and
816MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
817following the ACPI header is now defined to be "Proprietary Data", and as
818such, can only be entered or displayed as a hex data block.
819
820Implemented full support for the MSDM table as described in the document
821above. Note: The format of MSDM is similar to SLIC. Any MSDM data
822following the ACPI header is defined to be "Proprietary Data", and can
823only be entered or displayed as a hex data block.
824
825Implemented the -Pn option for the iASL Table Compiler (was only
826implemented for the ASL compiler). This option disables the iASL
827preprocessor.
828
829Disassembler: For disassembly of Data Tables, added a comment field
830around the Ascii equivalent data that is emitted as part of the "Raw
831Table Data" block. This prevents the iASL Preprocessor from possible
832confusion if/when the table is compiled.
833
834Disassembler: Added an option (-df) to force the disassembler to assume
835that the table being disassembled contains valid AML. This feature is
836useful for disassembling AML files that contain ACPI signatures other
837than DSDT or SSDT (such as OEMx or other signatures).
838
839Changes for the EFI version of the tools:
8401) Fixed a build error/issue
8412) Fixed a cast warning
842
843iASL: Fixed a path issue with the __FILE__ operator by making the
844directory prefix optional within the internal SplitInputFilename
845function.
846
847Debugger: Removed some unused global variables.
848
849Tests: Updated the makefile for proper generation of the AAPITS suite.
850
851
852----------------------------------------
85304 February 2015. Summary of changes for version 20150204:
854
855ACPICA kernel-resident subsystem:
856
857Updated all ACPICA copyrights and signons to 2014. Added the 2014
858copyright to all module headers and signons, including the standard Linux
859header. This affects virtually every file in the ACPICA core subsystem,
860iASL compiler, all ACPICA utilities, and the test suites.
861
862Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
863A raw gpe handling mechanism was created to allow better handling of GPE
864storms that aren't easily managed by the normal handler. The raw handler
865allows disabling/renabling of the the GPE so that interrupt storms can be
866avoided in cases where events cannot be timely serviced. In this
867scenario, handlers should use the AcpiSetGpe() API to disable/enable the
868GPE. This API will leave the reference counts undisturbed, thereby
869preventing unintentional clearing of the GPE when the intent in only to
870temporarily disable it. Raw handlers allow enabling and disabling of a
871GPE by removing GPE register locking. As such, raw handlers much provide
872their own locks while using GPE API's to protect access to GPE data
873structures.
874Lv Zheng
875
876Events: Always modify GPE registers under the GPE lock.
877Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
878values. Reported as bug by joe.liu@apple.com.
879
880Unix makefiles: Separate option to disable optimizations and
881_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
882NOOPT disable option and creates a separate flag (NOFORTIFY) for this
883purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
884errors when building ACPICA. This allows disabling the option without
885also having to disable optimazations.
886David Box
887
888  Current Release:
889    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
890    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
891
892--
893--------------------------------------
89407 November 2014. Summary of changes for version 20141107:
895
896This release is available at https://acpica.org/downloads
897
898This release introduces and implements language extensions to ASL that
899provide support for symbolic ("C-style") operators and expressions. These
900language extensions are known collectively as ASL+.
901
902
9031) iASL Compiler/Disassembler and Tools:
904
905Disassembler: Fixed a problem with disassembly of the UartSerialBus
906macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
907Box.
908
909Disassembler: Fixed the Unicode macro support to add escape sequences.
910All non-printable ASCII values are emitted as escape sequences, as well
911as the standard escapes for quote and backslash. Ensures that the
912disassembled macro can be correctly recompiled.
913
914iASL: Added Printf/Fprintf macros for formatted output. These macros are
915translated to existing AML Concatenate and Store operations. Printf
916writes to the ASL Debug object. Fprintf allows the specification of an
917ASL name as the target. Only a single format specifier is required, %o,
918since the AML interpreter dynamically converts objects to the required
919type. David E. Box.
920
921    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
922                 (Concatenate (Concatenate (Concatenate ("", Arg0),
923                 ": Unexpected value for "), Arg1), ", "), Arg2),
924                 " at line "), Arg3), Debug)
925
926    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
927                 Arg0, Arg1, Arg2, Arg3)
928
929    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
930                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
931
932    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
933
934iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
935ASL parse tree before the AML code is generated. This allows blocks of
936ASL code to be removed in order to help locate and identify problem
937devices and/or code. David E. Box.
938
939AcpiExec: Added support (-fi) for an optional namespace object
940initialization file. This file specifies initial values for namespace
941objects as necessary for debugging and testing different ASL code paths
942that may be taken as a result of BIOS options.
943
944
9452) Overview of symbolic operator support for ASL (ASL+)
946-------------------------------------------------------
947
948As an extension to the ASL language, iASL implements support for symbolic
949(C-style) operators for math and logical expressions. This can greatly
950simplify ASL code as well as improve both readability and
951maintainability. These language extensions can exist concurrently with
952all legacy ASL code and expressions.
953
954The symbolic extensions are 100% compatible with existing AML
955interpreters, since no new AML opcodes are created. To implement the
956extensions, the iASL compiler transforms the symbolic expressions into
957the legacy ASL/AML equivalents at compile time.
958
959Full symbolic expressions are supported, along with the standard C
960precedence and associativity rules.
961
962Full disassembler support for the symbolic expressions is provided, and
963creates an automatic migration path for existing ASL code to ASL+ code
964via the disassembly process. By default, the disassembler now emits ASL+
965code with symbolic expressions. An option (-dl) is provided to force the
966disassembler to emit legacy ASL code if desired.
967
968Below is the complete list of the currently supported symbolic operators
969with examples. See the iASL User Guide for additional information.
970
971
972ASL+ Syntax      Legacy ASL Equivalent
973-----------      ---------------------
974
975    // Math operators
976
977Z = X + Y        Add (X, Y, Z)
978Z = X - Y        Subtract (X, Y, Z)
979Z = X * Y        Multiply (X, Y, Z)
980Z = X / Y        Divide (X, Y, , Z)
981Z = X % Y        Mod (X, Y, Z)
982Z = X << Y       ShiftLeft (X, Y, Z)
983Z = X >> Y       ShiftRight (X, Y, Z)
984Z = X & Y        And (X, Y, Z)
985Z = X | Y        Or (X, Y, Z)
986Z = X ^ Y        Xor (X, Y, Z)
987Z = ~X           Not (X, Z)
988X++              Increment (X)
989X--              Decrement (X)
990
991    // Logical operators
992
993(X == Y)         LEqual (X, Y)
994(X != Y)         LNotEqual (X, Y)
995(X < Y)          LLess (X, Y)
996(X > Y)          LGreater (X, Y)
997(X <= Y)         LLessEqual (X, Y)
998(X >= Y)         LGreaterEqual (X, Y)
999(X && Y)         LAnd (X, Y)
1000(X || Y)         LOr (X, Y)
1001(!X)             LNot (X)
1002
1003    // Assignment and compound assignment operations
1004
1005X = Y           Store (Y, X)
1006X += Y          Add (X, Y, X)
1007X -= Y          Subtract (X, Y, X)
1008X *= Y          Multiply (X, Y, X)
1009X /= Y          Divide (X, Y, , X)
1010X %= Y          Mod (X, Y, X)
1011X <<= Y         ShiftLeft (X, Y, X)
1012X >>= Y         ShiftRight (X, Y, X)
1013X &= Y          And (X, Y, X)
1014X |= Y          Or (X, Y, X)
1015X ^= Y          Xor (X, Y, X)
1016
1017
10183) ASL+ Examples:
1019-----------------
1020
1021Legacy ASL:
1022        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
1023            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
10240x03FB),
1025            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
1026        {
1027            And (MEMB, 0xFFFFFFF0, SRMB)
1028            Store (MEMB, Local2)
1029            Store (PDBM, Local1)
1030            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
1031            Store (SRMB, MEMB)
1032            Or (PDBM, 0x02, PDBM)
1033        }
1034
1035ASL+ version:
1036        If (((R510 & 0x03FB) == 0x02E0) ||
1037            ((R520 & 0x03FB) == 0x02E0) ||
1038            ((R530 & 0x03FB) == 0x02E0) ||
1039            ((R540 & 0x03FB) == 0x02E0))
1040        {
1041            SRMB = (MEMB & 0xFFFFFFF0)
1042            Local2 = MEMB
1043            Local1 = PDBM
1044            PDBM &= 0xFFFFFFFFFFFFFFF9
1045            MEMB = SRMB
1046            PDBM |= 0x02
1047        }
1048
1049Legacy ASL:
1050        Store (0x1234, Local1)
1051        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
1052        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
1053        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
1054        Store (Index (PKG1, 0x03), Local6)
1055        Store (Add (Local3, Local2), Debug)
1056        Add (Local1, 0x0F, Local2)
1057        Add (Local1, Multiply (Local2, Local3), Local2)
1058        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
1059
1060ASL+ version:
1061        Local1 = 0x1234
1062        Local3 = (((Local1 + TEST) + 0x20) * Local2)
1063        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
1064        Local3 = (Local1 + (TEST + (0x20 * Local2)))
1065        Local6 = Index (PKG1, 0x03)
1066        Debug = (Local3 + Local2)
1067        Local2 = (Local1 + 0x0F)
1068        Local2 = (Local1 + (Local2 * Local3))
1069        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
1070
1071
1072----------------------------------------
107326 September 2014. Summary of changes for version 20140926:
1074
10751) ACPICA kernel-resident subsystem:
1076
1077Updated the GPIO operation region handler interface (GeneralPurposeIo).
1078In order to support GPIO Connection objects with multiple pins, along
1079with the related Field objects, the following changes to the interface
1080have been made: The Address is now defined to be the offset in bits of
1081the field unit from the previous invocation of a Connection. It can be
1082viewed as a "Pin Number Index" into the connection resource descriptor.
1083The BitWidth is the exact bit width of the field. It is usually one bit,
1084but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
1085additional information and examples.
1086
1087GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
1088corresponding _Lxx/_Exx methods are disabled (they may have been enabled
1089by the firmware), so that they cannot fire until they are enabled via
1090AcpiUpdateAllGpes. Rafael J. Wysocki.
1091
1092Added a new return flag for the Event/GPE status interfaces --
1093AcpiGetEventStatus and AcpiGetGpeStatus. The new
1094ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
1095GPE currently has a handler associated with it, and can thus actually
1096affect the system. Lv Zheng.
1097
1098Example Code and Data Size: These are the sizes for the OS-independent
1099acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1100debug version of the code includes the debug output trace mechanism and
1101has a much larger code and data size.
1102
1103  Current Release:
1104    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
1105    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
1106  Previous Release:
1107    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1108    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1109
11102) iASL Compiler/Disassembler and Tools:
1111
1112iASL: Fixed a memory allocation/free regression introduced in 20140828
1113that could cause the compiler to crash. This was introduced inadvertently
1114during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
11151113.
1116
1117iASL: Removed two error messages that have been found to create false
1118positives, until they can be fixed and fully validated (ACPICA BZ 1112):
11191) Illegal forward reference within a method
11202) Illegal reference across two methods
1121
1122iASL: Implemented a new option (-lm) to create a hardware mapping file
1123that summarizes all GPIO, I2C, SPI, and UART connections. This option
1124works for both the compiler and disassembler. See the iASL compiler user
1125guide for additional information and examples (section 6.4.6).
1126
1127AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
1128version 2. This corrects the AE_BAD_HEADER exception seen on systems with
1129a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
1130
1131AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
1132unless STDIN is actually a terminal. Assists with batch-mode processing.
1133ACPICA BZ 1114.
1134
1135Disassembler/AcpiHelp: Added another large group of recognized _HID
1136values.
1137
1138
1139----------------------------------------
114028 August 2014. Summary of changes for version 20140828:
1141
11421) ACPICA kernel-resident subsystem:
1143
1144Fixed a problem related to the internal use of the Timer() operator where
1145a 64-bit divide could cause an attempted link to a double-precision math
1146library. This divide is not actually necessary, so the code was
1147restructured to eliminate it. Lv Zheng.
1148
1149ACPI 5.1: Added support for the runtime validation of the _DSD package
1150(similar to the iASL support).
1151
1152ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
1153SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
1154
1155Example Code and Data Size: These are the sizes for the OS-independent
1156acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1157debug version of the code includes the debug output trace mechanism and
1158has a much larger code and data size.
1159
1160  Current Release:
1161    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1162    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1163  Previous Release:
1164    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
1165    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
1166
11672) iASL Compiler/Disassembler and Tools:
1168
1169AcpiExec: Fixed a problem on unix systems where the original terminal
1170state was not always properly restored upon exit. Seen when using the -v
1171option. ACPICA BZ 1104.
1172
1173iASL: Fixed a problem with the validation of the ranges/length within the
1174Memory24 resource descriptor. There was a boundary condition when the
1175range was equal to the (length -1) caused by the fact that these values
1176are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
1177
1178Disassembler: Fixed a problem with the GpioInt descriptor interrupt
1179polarity
1180flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
1181is
1182now supported properly.
1183
1184ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
1185in the disassembler, data table compiler, and table template generator.
1186
1187iASL: Added a requirement for Device() objects that one of either a _HID
1188or _ADR must exist within the scope of a Device, as per the ACPI
1189specification. Remove a similar requirement that was incorrectly in place
1190for the _DSD object.
1191
1192iASL: Added error detection for illegal named references within control
1193methods that would cause runtime failures. Now trapped as errors are: 1)
1194References to objects within a non-parent control method. 2) Forward
1195references (within a method) -- for control methods, AML interpreters use
1196a one-pass parse of control methods. ACPICA BZ 1008.
1197
1198iASL: Added error checking for dependencies related to the _PSx power
1199methods. ACPICA BZ 1029.
12001) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
1201_PS3.
12022) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
1203scope.
1204
1205iASL and table compiler: Cleanup miscellaneous memory leaks by fully
1206deploying the existing object and string caches and adding new caches for
1207the table compiler.
1208
1209iASL: Split the huge parser source file into multiple subfiles to improve
1210manageability. Generation now requires the M4 macro preprocessor, which
1211is part of the Bison distribution on both unix and windows platforms.
1212
1213AcpiSrc: Fixed and removed all extraneous warnings generated during
1214entire ACPICA source code scan and/or conversion.
1215
1216
1217----------------------------------------
1218
121924 July 2014. Summary of changes for version 20140724:
1220
1221The ACPI 5.1 specification has been released and is available at:
1222http://uefi.org/specs/access
1223
1224
12250) ACPI 5.1 support in ACPICA:
1226
1227ACPI 5.1 is fully supported in ACPICA as of this release.
1228
1229New predefined names. Support includes iASL and runtime ACPICA
1230validation.
1231    _CCA (Cache Coherency Attribute).
1232    _DSD (Device-Specific Data). David Box.
1233
1234Modifications to existing ACPI tables. Support includes headers, iASL
1235Data Table compiler, disassembler, and the template generator.
1236    FADT - New fields and flags. Graeme Gregory.
1237    GTDT - One new subtable and new fields. Tomasz Nowicki.
1238    MADT - Two new subtables. Tomasz Nowicki.
1239    PCCT - One new subtable.
1240
1241Miscellaneous.
1242    New notification type for System Resource Affinity change events.
1243
1244
12451) ACPICA kernel-resident subsystem:
1246
1247Fixed a regression introduced in 20140627 where a fault can happen during
1248the deletion of Alias AML namespace objects. The problem affected both
1249the core ACPICA and the ACPICA tools including iASL and AcpiExec.
1250
1251Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
1252simple mechanism to enable wake GPEs that have no associated handler or
1253control method. Rafael Wysocki.
1254
1255Updated the AcpiEnableGpe interface to disallow the enable if there is no
1256handler or control method associated with the particular GPE. This will
1257help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
1258
1259Updated GPE handling and dispatch by disabling the GPE before clearing
1260the status bit for edge-triggered GPEs. Lv Zheng.
1261
1262Added Timer() support to the AML Debug object. The current timer value is
1263now displayed with each invocation of (Store to) the debug object to
1264enable simple generation of execution times for AML code (method
1265execution for example.) ACPICA BZ 1093.
1266
1267Example Code and Data Size: These are the sizes for the OS-independent
1268acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1269debug version of the code includes the debug output trace mechanism and
1270has a much larger code and data size.
1271
1272  Current Release:
1273    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
1274    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
1275  Previous Release:
1276    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
1277    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
1278
1279
12802) iASL Compiler/Disassembler and Tools:
1281
1282Fixed an issue with the recently added local printf implementation,
1283concerning width/precision specifiers that could cause incorrect output.
1284Lv Zheng. ACPICA BZ 1094.
1285
1286Disassembler: Added support to detect buffers that contain UUIDs and
1287disassemble them to an invocation of the ToUUID operator. Also emit
1288commented descriptions of known ACPI-related UUIDs.
1289
1290AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
1291-u. Adds three new files.
1292
1293iASL: Update table compiler and disassembler for DMAR table changes that
1294were introduced in September 2013. With assistance by David Woodhouse.
1295
1296----------------------------------------
129727 June 2014. Summary of changes for version 20140627:
1298
12991) ACPICA kernel-resident subsystem:
1300
1301Formatted Output: Implemented local versions of standard formatted output
1302utilities such as printf, etc. Over time, it has been discovered that
1303there are in fact many portability issues with printf, and the addition
1304of this feature will fix/prevent these issues once and for all. Some
1305known issues are summarized below:
1306
13071) Output of 64-bit values is not portable. For example, UINT64 is %ull
1308for the Linux kernel and is %uI64 for some MSVC versions.
13092) Invoking printf consistently in a manner that is portable across both
131032-bit and 64-bit platforms is difficult at best in many situations.
13113) The output format for pointers varies from system to system (leading
1312zeros especially), and leads to inconsistent output from ACPICA across
1313platforms.
13144) Certain platform-specific printf formats may conflict with ACPICA use.
13155) If there is no local C library available, ACPICA now has local support
1316for printf.
1317
1318-- To address these printf issues in a complete manner, ACPICA now
1319directly implements a small subset of printf format specifiers, only
1320those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
1321
1322Implemented support for ACPICA generation within the EFI environment.
1323Initially, the AcpiDump utility is supported in the UEFI shell
1324environment. Lv Zheng.
1325
1326Added a new external interface, AcpiLogError, to improve ACPICA
1327portability. This allows the host to redirect error messages from the
1328ACPICA utilities. Lv Zheng.
1329
1330Added and deployed new OSL file I/O interfaces to improve ACPICA
1331portability:
1332  AcpiOsOpenFile
1333  AcpiOsCloseFile
1334  AcpiOsReadFile
1335  AcpiOsWriteFile
1336  AcpiOsGetFileOffset
1337  AcpiOsSetFileOffset
1338There are C library implementations of these functions in the new file
1339service_layers/oslibcfs.c -- however, the functions can be implemented by
1340the local host in any way necessary. Lv Zheng.
1341
1342Implemented a mechanism to disable/enable ACPI table checksum validation
1343at runtime. This can be useful when loading tables very early during OS
1344initialization when it may not be possible to map the entire table in
1345order to compute the checksum. Lv Zheng.
1346
1347Fixed a buffer allocation issue for the Generic Serial Bus support.
1348Originally, a fixed buffer length was used. This change allows for
1349variable-length buffers based upon the protocol indicated by the field
1350access attributes. Reported by Lan Tianyu. Lv Zheng.
1351
1352Fixed a problem where an object detached from a namespace node was not
1353properly terminated/cleared and could cause a circular list problem if
1354reattached. ACPICA BZ 1063. David Box.
1355
1356Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
1357
1358Fixed a possible memory leak in an error return path within the function
1359AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
1360
1361Example Code and Data Size: These are the sizes for the OS-independent
1362acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1363debug version of the code includes the debug output trace mechanism and
1364has a much larger code and data size.
1365
1366  Current Release:
1367    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
1368    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
1369  Previous Release:
1370    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
1371    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
1372
1373
13742) iASL Compiler/Disassembler and Tools:
1375
1376Disassembler: Add dump of ASCII equivalent text within a comment at the
1377end of each line of the output for the Buffer() ASL operator.
1378
1379AcpiDump: Miscellaneous changes:
1380  Fixed repetitive table dump in -n mode.
1381  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
1382the ACPI 2.0 GUID fails.
1383
1384iASL: Fixed a problem where the compiler could fault if incorrectly given
1385an acpidump output file as input. ACPICA BZ 1088. David Box.
1386
1387AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
1388they are invoked without any arguments.
1389
1390Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
13911086. Colin Ian King.
1392
1393Disassembler: Cleaned up a block of code that extracts a parent Op
1394object. Added a comment that explains that the parent is guaranteed to be
1395valid in this case. ACPICA BZ 1069.
1396
1397
1398----------------------------------------
139924 April 2014. Summary of changes for version 20140424:
1400
14011) ACPICA kernel-resident subsystem:
1402
1403Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
1404Some of these tables are known to contain a trailing NULL entry. Lv
1405Zheng.
1406
1407Removed an extraneous error message for the case where there are a large
1408number of system GPEs (> 124). This was the "32-bit FADT register is too
1409long to convert to GAS struct" message, which is irrelevant for GPEs
1410since the GPEx_BLK_LEN fields of the FADT are always used instead of the
1411(limited capacity) GAS bit length. Also, several changes to ensure proper
1412support for GPE numbers > 255, where some "GPE number" fields were 8-bits
1413internally.
1414
1415Implemented and deployed additional configuration support for the public
1416ACPICA external interfaces. Entire classes of interfaces can now be
1417easily modified or configured out, replaced by stubbed inline functions
1418by default. Lv Zheng.
1419
1420Moved all public ACPICA runtime configuration globals to the public
1421ACPICA external interface file for convenience. Also, removed some
1422obsolete/unused globals. See the file acpixf.h. Lv Zheng.
1423
1424Documentation: Added a new section to the ACPICA reference describing the
1425maximum number of GPEs that can be supported by the FADT-defined GPEs in
1426block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
1427reference.
1428
1429Example Code and Data Size: These are the sizes for the OS-independent
1430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1431debug version of the code includes the debug output trace mechanism and
1432has a much larger code and data size.
1433
1434  Current Release:
1435    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
1436    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
1437  Previous Release:
1438    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
1439    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
1440
1441
14422) iASL Compiler/Disassembler and Tools:
1443
1444iASL and disassembler: Add full support for the LPIT table (Low Power
1445Idle Table). Includes support in the disassembler, data table compiler,
1446and template generator.
1447
1448AcpiDump utility:
14491) Add option to force the use of the RSDT (over the XSDT).
14502) Improve validation of the RSDP signature (use 8 chars instead of 4).
1451
1452iASL: Add check for predefined packages that are too large.  For
1453predefined names that contain subpackages, check if each subpackage is
1454too large. (Check for too small already exists.)
1455
1456Debugger: Updated the GPE command (which simulates a GPE by executing the
1457GPE code paths in ACPICA). The GPE device is now optional, and defaults
1458to the GPE 0/1 FADT-defined blocks.
1459
1460Unix application OSL: Update line-editing support. Add additional error
1461checking and take care not to reset terminal attributes on exit if they
1462were never set. This should help guarantee that the terminal is always
1463left in the previous state on program exit.
1464
1465
1466----------------------------------------
146725 March 2014. Summary of changes for version 20140325:
1468
14691) ACPICA kernel-resident subsystem:
1470
1471Updated the auto-serialize feature for control methods. This feature
1472automatically serializes all methods that create named objects in order
1473to prevent runtime errors. The update adds support to ignore the
1474currently executing AML SyncLevel when invoking such a method, in order
1475to prevent disruption of any existing SyncLevel priorities that may exist
1476in the AML code. Although the use of SyncLevels is relatively rare, this
1477change fixes a regression where an AE_AML_MUTEX_ORDER exception can
1478appear on some machines starting with the 20140214 release.
1479
1480Added a new external interface to allow the host to install ACPI tables
1481very early, before the namespace is even created. AcpiInstallTable gives
1482the host additional flexibility for ACPI table management. Tables can be
1483installed directly by the host as if they had originally appeared in the
1484XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
1485(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
1486with additional internal restructuring and cleanup. See the ACPICA
1487Reference for interface details. Lv Zheng.
1488
1489Added validation of the checksum for all incoming dynamically loaded
1490tables (via external interfaces or via AML Load/LoadTable operators). Lv
1491Zheng.
1492
1493Updated the use of the AcpiOsWaitEventsComplete interface during Notify
1494and GPE handler removal. Restructured calls to eliminate possible race
1495conditions. Lv Zheng.
1496
1497Added a warning for the use/execution of the ASL/AML Unload (table)
1498operator. This will help detect and identify machines that use this
1499operator if and when it is ever used. This operator has never been seen
1500in the field and the usage model and possible side-effects of the drastic
1501runtime action of a full table removal are unknown.
1502
1503Reverted the use of #pragma push/pop which was introduced in the 20140214
1504release. It appears that push and pop are not implemented by enough
1505compilers to make the use of this feature feasible for ACPICA at this
1506time. However, these operators may be deployed in a future ACPICA
1507release.
1508
1509Added the missing EXPORT_SYMBOL macros for the install and remove SCI
1510handler interfaces.
1511
1512Source code generation:
15131) Disabled the use of the "strchr" macro for the gcc-specific
1514generation. For some versions of gcc, this macro can periodically expose
1515a compiler bug which in turn causes compile-time error(s).
15162) Added support for PPC64 compilation. Colin Ian King.
1517
1518Example Code and Data Size: These are the sizes for the OS-independent
1519acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1520debug version of the code includes the debug output trace mechanism and
1521has a much larger code and data size.
1522
1523  Current Release:
1524    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
1525    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
1526  Previous Release:
1527    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
1528    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
1529
1530
15312) iASL Compiler/Disassembler and Tools:
1532
1533Disassembler: Added several new features to improve the readability of
1534the resulting ASL code. Extra information is emitted within comment
1535fields in the ASL code:
15361) Known _HID/_CID values are decoded to descriptive text.
15372) Standard values for the Notify() operator are decoded to descriptive
1538text.
15393) Target operands are expanded to full pathnames (in a comment) when
1540possible.
1541
1542Disassembler: Miscellaneous updates for extern() handling:
15431) Abort compiler if file specified by -fe option does not exist.
15442) Silence unnecessary warnings about argument count mismatches.
15453) Update warning messages concerning unresolved method externals.
15464) Emit "UnknownObj" keyword for externals whose type cannot be
1547determined.
1548
1549AcpiHelp utility:
15501) Added the -a option to display both the ASL syntax and the AML
1551encoding for an input ASL operator. This effectively displays all known
1552information about an ASL operator with one AcpiHelp invocation.
15532) Added substring match support (similar to a wildcard) for the -i
1554(_HID/PNP IDs) option.
1555
1556iASL/Disassembler: Since this tool does not yet support execution on big-
1557endian machines, added detection of endianness and an error message if
1558execution is attempted on big-endian. Support for big-endian within iASL
1559is a feature that is on the ACPICA to-be-done list.
1560
1561AcpiBin utility:
15621) Remove option to extract binary files from an acpidump; this function
1563is made obsolete by the AcpiXtract utility.
15642) General cleanup of open files and allocated buffers.
1565
1566
1567----------------------------------------
156814 February 2014. Summary of changes for version 20140214:
1569
15701) ACPICA kernel-resident subsystem:
1571
1572Implemented a new mechanism to proactively prevent problems with ill-
1573behaved reentrant control methods that create named ACPI objects. This
1574behavior is illegal as per the ACPI specification, but is nonetheless
1575frequently seen in the field. Previously, this could lead to an
1576AE_ALREADY_EXISTS exception if the method was actually entered by more
1577than one thread. This new mechanism detects such methods at table load
1578time and marks them "serialized" to prevent reentrancy. A new global
1579option, AcpiGbl_AutoSerializeMethods, has been added to disable this
1580feature if desired. This mechanism and global option obsoletes and
1581supersedes the previous AcpiGbl_SerializeAllMethods option.
1582
1583Added the "Windows 2013" string to the _OSI support. ACPICA will now
1584respond TRUE to _OSI queries with this string. It is the stated policy of
1585ACPICA to add new strings to the _OSI support as soon as possible after
1586they are defined. See the full ACPICA _OSI policy which has been added to
1587the utilities/utosi.c file.
1588
1589Hardened/updated the _PRT return value auto-repair code:
15901) Do not abort the repair on a single subpackage failure, continue to
1591check all subpackages.
15922) Add check for the minimum subpackage length (4).
15933) Properly handle extraneous NULL package elements.
1594
1595Added support to avoid the possibility of infinite loops when traversing
1596object linked lists. Never allow an infinite loop, even in the face of
1597corrupted object lists.
1598
1599ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
1600pack(pop) directives to ensure that the ACPICA headers are independent of
1601compiler settings or other host headers.
1602
1603Example Code and Data Size: These are the sizes for the OS-independent
1604acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1605debug version of the code includes the debug output trace mechanism and
1606has a much larger code and data size.
1607
1608  Current Release:
1609    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
1610    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
1611  Previous Release:
1612    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
1613    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
1614
1615
16162) iASL Compiler/Disassembler and Tools:
1617
1618iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
1619first reserved field was incorrectly forced to have a value of zero. This
1620change correctly forces the field to have a value of one. ACPICA BZ 1081.
1621
1622Debugger: Added missing support for the "Extra" and "Data" subobjects
1623when displaying object data.
1624
1625Debugger: Added support to display entire object linked lists when
1626displaying object data.
1627
1628iASL: Removed the obsolete -g option to obtain ACPI tables from the
1629Windows registry. This feature has been superseded by the acpidump
1630utility.
1631
1632
1633----------------------------------------
163414 January 2014. Summary of changes for version 20140114:
1635
16361) ACPICA kernel-resident subsystem:
1637
1638Updated all ACPICA copyrights and signons to 2014. Added the 2014
1639copyright to all module headers and signons, including the standard Linux
1640header. This affects virtually every file in the ACPICA core subsystem,
1641iASL compiler, all ACPICA utilities, and the test suites.
1642
1643Improved parameter validation for AcpiInstallGpeBlock. Added the
1644following checks:
16451) The incoming device handle refers to type ACPI_TYPE_DEVICE.
16462) There is not already a GPE block attached to the device.
1647Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
1648device.
1649
1650Correctly support "references" in the ACPI_OBJECT. This change fixes the
1651support to allow references (namespace nodes) to be passed as arguments
1652to control methods via the evaluate object interface. This is probably
1653most useful for testing purposes, however.
1654
1655Improved support for 32/64 bit physical addresses in printf()-like
1656output. This change improves the support for physical addresses in printf
1657debug statements and other output on both 32-bit and 64-bit hosts. It
1658consistently outputs the appropriate number of bytes for each host. The
1659%p specifier is unsatisfactory since it does not emit uniform output on
1660all hosts/clib implementations (on some, leading zeros are not supported,
1661leading to difficult-to-read output).
1662
1663Example Code and Data Size: These are the sizes for the OS-independent
1664acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1665debug version of the code includes the debug output trace mechanism and
1666has a much larger code and data size.
1667
1668  Current Release:
1669    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
1670    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
1671  Previous Release:
1672    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
1673    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
1674
1675
16762) iASL Compiler/Disassembler and Tools:
1677
1678iASL: Fix a possible fault when using the Connection() operator. Fixes a
1679problem if the parent Field definition for the Connection operator refers
1680to an operation region that does not exist. ACPICA BZ 1064.
1681
1682AcpiExec: Load of local test tables is now optional. The utility has the
1683capability to load some various tables to test features of ACPICA.
1684However, there are enough of them that the output of the utility became
1685confusing. With this change, only the required local tables are displayed
1686(RSDP, XSDT, etc.) along with the actual tables loaded via the command
1687line specification. This makes the default output simler and easier to
1688understand. The -el command line option restores the original behavior
1689for testing purposes.
1690
1691AcpiExec: Added support for overlapping operation regions. This change
1692expands the simulation of operation regions by supporting regions that
1693overlap within the given address space. Supports SystemMemory and
1694SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
1695
1696AcpiExec: Added region handler support for PCI_Config and EC spaces. This
1697allows AcpiExec to simulate these address spaces, similar to the current
1698support for SystemMemory and SystemIO.
1699
1700Debugger: Added new command to read/write/compare all namespace objects.
1701The command "test objects" will exercise the entire namespace by writing
1702new values to each data object, and ensuring that the write was
1703successful. The original value is then restored and verified.
1704
1705Debugger: Added the "test predefined" command. This change makes this
1706test public and puts it under the new "test" command. The test executes
1707each and every predefined name within the current namespace.
1708
1709
1710----------------------------------------
171118 December 2013. Summary of changes for version 20131218:
1712
1713Global note: The ACPI 5.0A specification was released this month. There
1714are no changes needed for ACPICA since this release of ACPI is an
1715errata/clarification release. The specification is available at
1716acpi.info.
1717
1718
17191) ACPICA kernel-resident subsystem:
1720
1721Added validation of the XSDT root table if it is present. Some older
1722platforms contain an XSDT that is ill-formed or otherwise invalid (such
1723as containing some or all entries that are NULL pointers). This change
1724adds a new function to validate the XSDT before actually using it. If the
1725XSDT is found to be invalid, ACPICA will now automatically fall back to
1726using the RSDT instead. Original implementation by Zhao Yakui. Ported to
1727ACPICA and enhanced by Lv Zheng and Bob Moore.
1728
1729Added a runtime option to ignore the XSDT and force the use of the RSDT.
1730This change adds a runtime option that will force ACPICA to use the RSDT
1731instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
1732requires that an XSDT be used instead of the RSDT, the XSDT has been
1733found to be corrupt or ill-formed on some machines. Lv Zheng.
1734
1735Added a runtime option to favor 32-bit FADT register addresses over the
173664-bit addresses. This change adds an option to favor 32-bit FADT
1737addresses when there is a conflict between the 32-bit and 64-bit versions
1738of the same register. The default behavior is to use the 64-bit version
1739in accordance with the ACPI specification. This can now be overridden via
1740the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
1741
1742During the change above, the internal "Convert FADT" and "Verify FADT"
1743functions have been merged to simplify the code, making it easier to
1744understand and maintain. ACPICA BZ 933.
1745
1746Improve exception reporting and handling for GPE block installation.
1747Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
1748status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
1749
1750Added helper macros to extract bus/segment numbers from the HEST table.
1751This change adds two macros to extract the encoded bus and segment
1752numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
1753Betty Dall <betty.dall@hp.com>
1754
1755Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
1756by ACPICA. It is not a public macro, so it should have no effect on
1757existing OSV code. Lv Zheng.
1758
1759Example Code and Data Size: These are the sizes for the OS-independent
1760acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1761debug version of the code includes the debug output trace mechanism and
1762has a much larger code and data size.
1763
1764  Current Release:
1765    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
1766    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
1767  Previous Release:
1768    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
1769    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
1770
1771
17722) iASL Compiler/Disassembler and Tools:
1773
1774Disassembler: Improved pathname support for emitted External()
1775statements. This change adds full pathname support for external names
1776that have been resolved internally by the inclusion of additional ACPI
1777tables (via the iASL -e option). Without this change, the disassembler
1778can emit multiple externals for the same object, or it become confused
1779when the Scope() operator is used on an external object. Overall, greatly
1780improves the ability to actually recompile the emitted ASL code when
1781objects a referenced across multiple ACPI tables. Reported by Michael
1782Tsirkin (mst@redhat.com).
1783
1784Tests/ASLTS: Updated functional control suite to execute with no errors.
1785David Box. Fixed several errors related to the testing of the interpreter
1786slack mode. Lv Zheng.
1787
1788iASL: Added support to detect names that are declared within a control
1789method, but are unused (these are temporary names that are only valid
1790during the time the method is executing). A remark is issued for these
1791cases. ACPICA BZ 1022.
1792
1793iASL: Added full support for the DBG2 table. Adds full disassembler,
1794table compiler, and template generator support for the DBG2 table (Debug
1795Port 2 table).
1796
1797iASL: Added full support for the PCCT table, update the table definition.
1798Updates the PCCT table definition in the actbl3.h header and adds table
1799compiler and template generator support.
1800
1801iASL: Added an option to emit only error messages (no warnings/remarks).
1802The -ve option will enable only error messages, warnings and remarks are
1803suppressed. This can simplify debugging when only the errors are
1804important, such as when an ACPI table is disassembled and there are many
1805warnings and remarks -- but only the actual errors are of real interest.
1806
1807Example ACPICA code (source/tools/examples): Updated the example code so
1808that it builds to an actual working program, not just example code. Added
1809ACPI tables and execution of an example control method in the DSDT. Added
1810makefile support for Unix generation.
1811
1812
1813----------------------------------------
181415 November 2013. Summary of changes for version 20131115:
1815
1816This release is available at https://acpica.org/downloads
1817
1818
18191) ACPICA kernel-resident subsystem:
1820
1821Resource Manager: Fixed loop termination for the "get AML length"
1822function. The loop previously had an error termination on a NULL resource
1823pointer, which can never happen since the loop simply increments a valid
1824resource pointer. This fix changes the loop to terminate with an error on
1825an invalid end-of-buffer condition. The problem can be seen as an
1826infinite loop by callers to AcpiSetCurrentResources with an invalid or
1827corrupted resource descriptor, or a resource descriptor that is missing
1828an END_TAG descriptor. Reported by Dan Carpenter
1829<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
1830
1831Table unload and ACPICA termination: Delete all attached data objects
1832during namespace node deletion. This fix updates namespace node deletion
1833to delete the entire list of attached objects (attached via
1834AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
18351024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
1836
1837ACPICA termination: Added support to delete all objects attached to the
1838root namespace node. This fix deletes any and all objects that have been
1839attached to the root node via AcpiAttachData. Previously, none of these
1840objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
1841
1842Debug output: Do not emit the function nesting level for the in-kernel
1843build. The nesting level is really only useful during a single-thread
1844execution. Therefore, only enable this output for the AcpiExec utility.
1845Also, only emit the thread ID when executing under AcpiExec (Context
1846switches are still always detected and a message is emitted). ACPICA BZ
1847972.
1848
1849Example Code and Data Size: These are the sizes for the OS-independent
1850acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1851debug version of the code includes the debug output trace mechanism and
1852has a much larger code and data size.
1853
1854  Current Release:
1855    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
1856    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
1857  Previous Release:
1858    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1859    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1860
1861
18622) iASL Compiler/Disassembler and Tools:
1863
1864AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
1865correct portable POSIX header for terminal control functions.
1866
1867Disassembler: Fixed control method invocation issues related to the use
1868of the CondRefOf() operator. The problem is seen in the disassembly where
1869control method invocations may not be disassembled properly if the
1870control method name has been used previously as an argument to CondRefOf.
1871The solution is to not attempt to emit an external declaration for the
1872CondRefOf target (it is not necessary in the first place). This prevents
1873disassembler object type confusion. ACPICA BZ 988.
1874
1875Unix Makefiles: Added an option to disable compiler optimizations and the
1876_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
1877with optimizations (reportedly, gcc 4.4 for example). This change adds a
1878command line option for make (NOOPT) that disables all compiler
1879optimizations and the _FORTIFY_SOURCE compiler flag. The default
1880optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
18811034. Lv Zheng, Bob Moore.
1882
1883Tests/ASLTS: Added options to specify individual test cases and modes.
1884This allows testers running aslts.sh to optionally specify individual
1885test modes and test cases. Also added an option to disable the forced
1886generation of the ACPICA tools from source if desired. Lv Zheng.
1887
1888----------------------------------------
188927 September 2013. Summary of changes for version 20130927:
1890
1891This release is available at https://acpica.org/downloads
1892
1893
18941) ACPICA kernel-resident subsystem:
1895
1896Fixed a problem with store operations to reference objects. This change
1897fixes a problem where a Store operation to an ArgX object that contained
1898a
1899reference to a field object did not complete the automatic dereference
1900and
1901then write to the actual field object. Instead, the object type of the
1902field object was inadvertently changed to match the type of the source
1903operand. The new behavior will actually write to the field object (buffer
1904field or field unit), thus matching the correct ACPI-defined behavior.
1905
1906Implemented support to allow the host to redefine individual OSL
1907prototypes. This change enables the host to redefine OSL prototypes found
1908in the acpiosxf.h file. This allows the host to implement OSL interfaces
1909with a macro or inlined function. Further, it allows the host to add any
1910additional required modifiers such as __iomem, __init, __exit, etc., as
1911necessary on a per-interface basis. Enables maximum flexibility for the
1912OSL interfaces. Lv Zheng.
1913
1914Hardcoded the access width for the FADT-defined reset register. The ACPI
1915specification requires the reset register width to be 8 bits. ACPICA now
1916hardcodes the width to 8 and ignores the FADT width value. This provides
1917compatibility with other ACPI implementations that have allowed BIOS code
1918with bad register width values to go unnoticed. Matthew Garett, Bob
1919Moore,
1920Lv Zheng.
1921
1922Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
1923used
1924in the OSL header (acpiosxf). The change modifies the position of this
1925macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
1926build issues if the OSL defines the implementation of the interface to be
1927an inline stub function. Lv Zheng.
1928
1929Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
1930initialization interfaces. This change adds a new macro for the main init
1931and terminate external interfaces in order to support hosts that require
1932additional or different processing for these functions. Changed from
1933ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
1934Zheng, Bob Moore.
1935
1936Cleaned up the memory allocation macros for configurability. In the
1937common
1938case, the ACPI_ALLOCATE and related macros now resolve directly to their
1939respective AcpiOs* OSL interfaces. Two options:
19401) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
1941default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
19422) For AcpiExec (and for debugging), the macros can optionally be
1943resolved
1944to the local ACPICA interfaces that track each allocation (local tracking
1945is used to immediately detect memory leaks).
1946Lv Zheng.
1947
1948Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
1949to predefine this macro to either TRUE or FALSE during the system build.
1950
1951Replaced __FUNCTION_ with __func__ in the gcc-specific header.
1952
1953Example Code and Data Size: These are the sizes for the OS-independent
1954acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1955debug version of the code includes the debug output trace mechanism and
1956has a much larger code and data size.
1957
1958  Current Release:
1959    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1960    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1961  Previous Release:
1962    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
1963    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1964
1965
19662) iASL Compiler/Disassembler and Tools:
1967
1968iASL: Implemented wildcard support for the -e option. This simplifies use
1969when there are many SSDTs that must be included to resolve external
1970method
1971declarations. ACPICA BZ 1041. Example:
1972    iasl -e ssdt*.dat -d dsdt.dat
1973
1974AcpiExec: Add history/line-editing for Unix/Linux systems. This change
1975adds a portable module that implements full history and limited line
1976editing for Unix and Linux systems. It does not use readline() due to
1977portability issues. Instead it uses the POSIX termio interface to put the
1978terminal in raw input mode so that the various special keys can be
1979trapped
1980(such as up/down-arrow for history support and left/right-arrow for line
1981editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
1982
1983AcpiXtract: Add support to handle (ignore) "empty" lines containing only
1984one or more spaces. This provides compatible with early or different
1985versions of the AcpiDump utility. ACPICA BZ 1044.
1986
1987AcpiDump: Do not ignore tables that contain only an ACPI table header.
1988Apparently, some BIOSs create SSDTs that contain an ACPI table header but
1989no other data. This change adds support to dump these tables. Any tables
1990shorter than the length of an ACPI table header remain in error (an error
1991message is emitted). Reported by Yi Li.
1992
1993Debugger: Echo actual command along with the "unknown command" message.
1994
1995----------------------------------------
199623 August 2013. Summary of changes for version 20130823:
1997
19981) ACPICA kernel-resident subsystem:
1999
2000Implemented support for host-installed System Control Interrupt (SCI)
2001handlers. Certain ACPI functionality requires the host to handle raw
2002SCIs. For example, the "SCI Doorbell" that is defined for memory power
2003state support requires the host device driver to handle SCIs to examine
2004if the doorbell has been activated. Multiple SCI handlers can be
2005installed to allow for future expansion. New external interfaces are
2006AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
2007details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
2008
2009Operation region support: Never locally free the handler "context"
2010pointer. This change removes some dangerous code that attempts to free
2011the handler context pointer in some (rare) circumstances. The owner of
2012the handler owns this pointer and the ACPICA code should never touch it.
2013Although not seen to be an issue in any kernel, it did show up as a
2014problem (fault) under AcpiExec. Also, set the internal storage field for
2015the context pointer to zero when the region is deactivated, simply for
2016sanity. David Box. ACPICA BZ 1039.
2017
2018AcpiRead: On error, do not modify the return value target location. If an
2019error happens in the middle of a split 32/32 64-bit I/O operation, do not
2020modify the target of the return value pointer. Makes the code consistent
2021with the rest of ACPICA. Bjorn Helgaas.
2022
2023Example Code and Data Size: These are the sizes for the OS-independent
2024acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2025debug version of the code includes the debug output trace mechanism and
2026has a much larger code and data size.
2027
2028  Current Release:
2029    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
2030    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2031  Previous Release:
2032    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
2033    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
2034
2035
20362) iASL Compiler/Disassembler and Tools:
2037
2038AcpiDump: Implemented several new features and fixed some problems:
20391) Added support to dump the RSDP, RSDT, and XSDT tables.
20402) Added support for multiple table instances (SSDT, UEFI).
20413) Added option to dump "customized" (overridden) tables (-c).
20424) Fixed a problem where some table filenames were improperly
2043constructed.
20445) Improved some error messages, removed some unnecessary messages.
2045
2046iASL: Implemented additional support for disassembly of ACPI tables that
2047contain invocations of external control methods. The -fe<file> option
2048allows the import of a file that specifies the external methods along
2049with the required number of arguments for each -- allowing for the
2050correct disassembly of the table. This is a workaround for a limitation
2051of AML code where the disassembler often cannot determine the number of
2052arguments required for an external control method and generates incorrect
2053ASL code. See the iASL reference for details. ACPICA BZ 1030.
2054
2055Debugger: Implemented a new command (paths) that displays the full
2056pathnames (namepaths) and object types of all objects in the namespace.
2057This is an alternative to the namespace command.
2058
2059Debugger: Implemented a new command (sci) that invokes the SCI dispatch
2060mechanism and any installed handlers.
2061
2062iASL: Fixed a possible segfault for "too many parent prefixes" condition.
2063This can occur if there are too many parent prefixes in a namepath (for
2064example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
2065
2066Application OSLs: Set the return value for the PCI read functions. These
2067functions simply return AE_OK, but should set the return value to zero
2068also. This change implements this. ACPICA BZ 1038.
2069
2070Debugger: Prevent possible command line buffer overflow. Increase the
2071size of a couple of the debugger line buffers, and ensure that overflow
2072cannot happen. ACPICA BZ 1037.
2073
2074iASL: Changed to abort immediately on serious errors during the parsing
2075phase. Due to the nature of ASL, there is no point in attempting to
2076compile these types of errors, and they typically end up causing a
2077cascade of hundreds of errors which obscure the original problem.
2078
2079----------------------------------------
208025 July 2013. Summary of changes for version 20130725:
2081
20821) ACPICA kernel-resident subsystem:
2083
2084Fixed a problem with the DerefOf operator where references to FieldUnits
2085and BufferFields incorrectly returned the parent object, not the actual
2086value of the object. After this change, a dereference of a FieldUnit
2087reference results in a read operation on the field to get the value, and
2088likewise, the appropriate BufferField value is extracted from the target
2089buffer.
2090
2091Fixed a problem where the _WAK method could cause a fault under these
2092circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
2093method returned no value. The problem is rarely seen because most kernels
2094run ACPICA in slack mode.
2095
2096For the DerefOf operator, a fatal error now results if an attempt is made
2097to dereference a reference (created by the Index operator) to a NULL
2098package element. Provides compatibility with other ACPI implementations,
2099and this behavior will be added to a future version of the ACPI
2100specification.
2101
2102The ACPI Power Management Timer (defined in the FADT) is now optional.
2103This provides compatibility with other ACPI implementations and will
2104appear in the next version of the ACPI specification. If there is no PM
2105Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
2106zero in the FADT indicates no PM timer.
2107
2108Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
2109allows the host to globally enable/disable all vendor strings, all
2110feature strings, or both. Intended to be primarily used for debugging
2111purposes only. Lv Zheng.
2112
2113Expose the collected _OSI data to the host via a global variable. This
2114data tracks the highest level vendor ID that has been invoked by the BIOS
2115so that the host (and potentially ACPICA itself) can change behaviors
2116based upon the age of the BIOS.
2117
2118Example Code and Data Size: These are the sizes for the OS-independent
2119acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2120debug version of the code includes the debug output trace mechanism and
2121has a much larger code and data size.
2122
2123  Current Release:
2124    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
2125    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2126  Previous Release:
2127    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
2128    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
2129
2130
21312) iASL Compiler/Disassembler and Tools:
2132
2133iASL: Created the following enhancements for the -so option (create
2134offset table):
21351)Add offsets for the last nameseg in each namepath for every supported
2136object type
21372)Add support for Processor, Device, Thermal Zone, and Scope objects
21383)Add the actual AML opcode for the parent object of every supported
2139object type
21404)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
2141
2142Disassembler: Emit all unresolved external symbols in a single block.
2143These are external references to control methods that could not be
2144resolved, and thus, the disassembler had to make a guess at the number of
2145arguments to parse.
2146
2147iASL: The argument to the -T option (create table template) is now
2148optional. If not specified, the default table is a DSDT, typically the
2149most common case.
2150
2151----------------------------------------
215226 June 2013. Summary of changes for version 20130626:
2153
21541) ACPICA kernel-resident subsystem:
2155
2156Fixed an issue with runtime repair of the _CST object. Null or invalid
2157elements were not always removed properly. Lv Zheng.
2158
2159Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
2160FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
2161the maximum number of GPEs is 1016. Use of multiple GPE block devices
2162makes the system-wide number of GPEs essentially unlimited.
2163
2164Example Code and Data Size: These are the sizes for the OS-independent
2165acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2166debug version of the code includes the debug output trace mechanism and
2167has a much larger code and data size.
2168
2169  Current Release:
2170    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
2171    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
2172  Previous Release:
2173    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
2174    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
2175
2176
21772) iASL Compiler/Disassembler and Tools:
2178
2179Portable AcpiDump: Implemented full support for the Linux and FreeBSD
2180hosts. Now supports Linux, FreeBSD, and Windows.
2181
2182Disassembler: Added some missing types for the HEST and EINJ tables: "Set
2183Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
2184
2185iASL/Preprocessor: Implemented full support for nested
2186#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
2187
2188Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
2189max. The original purpose of this constraint was to limit the amount of
2190debug output. However, the string function in question (UtPrintString) is
2191now used for the disassembler also, where 256 bytes is insufficient.
2192Reported by RehabMan@GitHub.
2193
2194iASL/DataTables: Fixed some problems and issues with compilation of DMAR
2195tables. ACPICA BZ 999. Lv Zheng.
2196
2197iASL: Fixed a couple of error exit issues that could result in a "Could
2198not delete <file>" message during ASL compilation.
2199
2200AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
2201the actual signatures for these tables are "FACP" and "APIC",
2202respectively.
2203
2204AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
2205tables are allowed to have multiple instances.
2206
2207----------------------------------------
220817 May 2013. Summary of changes for version 20130517:
2209
22101) ACPICA kernel-resident subsystem:
2211
2212Fixed a regression introduced in version 20130328 for _INI methods. This
2213change fixes a problem introduced in 20130328 where _INI methods are no
2214longer executed properly because of a memory block that was not
2215initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
2216<tomasz.nowicki@linaro.org>.
2217
2218Fixed a possible problem with the new extended sleep registers in the
2219ACPI
22205.0 FADT. Do not use these registers (even if populated) unless the HW-
2221reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
22221020. Lv Zheng.
2223
2224Implemented return value repair code for _CST predefined objects: Sort
2225the
2226list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
2227
2228Implemented a debug-only option to disable loading of SSDTs from the
2229RSDT/XSDT during ACPICA initialization. This can be useful for debugging
2230ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
2231acglobal.h - ACPICA BZ 1005. Lv Zheng.
2232
2233Fixed some issues in the ACPICA initialization and termination code:
2234Tomasz Nowicki <tomasz.nowicki@linaro.org>
22351) Clear events initialized flag upon event component termination. ACPICA
2236BZ 1013.
22372) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
22383) Delete global lock pending lock during termination. ACPICA BZ 1012.
22394) Clear debug buffer global on termination to prevent possible multiple
2240delete. ACPICA BZ 1010.
2241
2242Standardized all switch() blocks across the entire source base. After
2243many
2244years, different formatting for switch() had crept in. This change makes
2245the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
2246
2247Split some files to enhance ACPICA modularity and configurability:
22481) Split buffer dump routines into utilities/utbuffer.c
22492) Split internal error message routines into utilities/uterror.c
22503) Split table print utilities into tables/tbprint.c
22514) Split iASL command-line option processing into asloptions.c
2252
2253Makefile enhancements:
22541) Support for all new files above.
22552) Abort make on errors from any subcomponent. Chao Guan.
22563) Add build support for Apple Mac OS X. Liang Qi.
2257
2258Example Code and Data Size: These are the sizes for the OS-independent
2259acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2260debug version of the code includes the debug output trace mechanism and
2261has a much larger code and data size.
2262
2263  Current Release:
2264    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
2265    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
2266  Previous Release:
2267    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
2268    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
2269
2270
22712) iASL Compiler/Disassembler and Tools:
2272
2273New utility: Implemented an easily portable version of the acpidump
2274utility to extract ACPI tables from the system (or a file) in an ASCII
2275hex
2276dump format. The top-level code implements the various command line
2277options, file I/O, and table dump routines. To port to a new host, only
2278three functions need to be implemented to get tables -- since this
2279functionality is OS-dependent. See the tools/acpidump/apmain.c module and
2280the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
22811) The Windows version obtains the ACPI tables from the Registry.
22822) The Linux version is under development.
22833) Other hosts - If an OS-dependent module is submitted, it will be
2284distributed with ACPICA.
2285
2286iASL: Fixed a regression for -D preprocessor option (define symbol). A
2287restructuring/change to the initialization sequence caused this option to
2288no longer work properly.
2289
2290iASL: Implemented a mechanism to disable specific warnings and remarks.
2291Adds a new command line option, "-vw <messageid> as well as "#pragma
2292disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
2293
2294iASL: Fix for too-strict package object validation. The package object
2295validation for return values from the predefined names is a bit too
2296strict, it does not allow names references within the package (which will
2297be resolved at runtime.) These types of references cannot be validated at
2298compile time. This change ignores named references within package objects
2299for names that return or define static packages.
2300
2301Debugger: Fixed the 80-character command line limitation for the History
2302command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
2303
2304iASL: Added control method and package support for the -so option
2305(generates AML offset table for BIOS support.)
2306
2307iASL: issue a remark if a non-serialized method creates named objects. If
2308a thread blocks within the method for any reason, and another thread
2309enters the method, the method will fail because an attempt will be made
2310to
2311create the same (named) object twice. In this case, issue a remark that
2312the method should be marked serialized. NOTE: may become a warning later.
2313ACPICA BZ 909.
2314
2315----------------------------------------
231618 April 2013. Summary of changes for version 20130418:
2317
23181) ACPICA kernel-resident subsystem:
2319
2320Fixed a possible buffer overrun during some rare but specific field unit
2321read operations. This overrun can only happen if the DSDT version is 1 --
2322meaning that all AML integers are 32 bits -- and the field length is
2323between 33 and 55 bits long. During the read, an internal buffer object
2324is
2325created for the field unit because the field is larger than an integer
2326(32
2327bits). However, in this case, the buffer will be incorrectly written
2328beyond the end because the buffer length is less than the internal
2329minimum
2330of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
2331long, but a full 8 bytes will be written.
2332
2333Updated the Embedded Controller "orphan" _REG method support. This refers
2334to _REG methods under the EC device that have no corresponding operation
2335region. This is allowed by the ACPI specification. This update removes a
2336dependency on the existence an ECDT table. It will execute an orphan _REG
2337method as long as the operation region handler for the EC is installed at
2338the EC device node and not the namespace root. Rui Zhang (original
2339update), Bob Moore (update/integrate).
2340
2341Implemented run-time argument typechecking for all predefined ACPI names
2342(_STA, _BIF, etc.) This change performs object typechecking on all
2343incoming arguments for all predefined names executed via
2344AcpiEvaluateObject. This ensures that ACPI-related device drivers are
2345passing correct object types as well as the correct number of arguments
2346(therefore identifying any issues immediately). Also, the ASL/namespace
2347definition of the predefined name is checked against the ACPI
2348specification for the proper argument count. Adds one new file,
2349nsarguments.c
2350
2351Changed an exception code for the ASL UnLoad() operator. Changed the
2352exception code for the case where the input DdbHandle is invalid, from
2353AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
2354
2355Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
2356global makefile. The use of this flag causes compiler errors on earlier
2357versions of GCC, so it has been removed for compatibility.
2358
2359Miscellaneous cleanup:
23601) Removed some unused/obsolete macros
23612) Fixed a possible memory leak in the _OSI support
23623) Removed an unused variable in the predefined name support
23634) Windows OSL: remove obsolete reference to a memory list field
2364
2365Example Code and Data Size: These are the sizes for the OS-independent
2366acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2367debug version of the code includes the debug output trace mechanism and
2368has a much larger code and data size.
2369
2370  Current Release:
2371    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
2372    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
2373  Previous Release:
2374    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
2375    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
2376
2377
23782) iASL Compiler/Disassembler and Tools:
2379
2380AcpiExec: Added installation of a handler for the SystemCMOS address
2381space. This prevents control method abort if a method accesses this
2382space.
2383
2384AcpiExec: Added support for multiple EC devices, and now install EC
2385operation region handler(s) at the actual EC device instead of the
2386namespace root. This reflects the typical behavior of host operating
2387systems.
2388
2389AcpiExec: Updated to ensure that all operation region handlers are
2390installed before the _REG methods are executed. This prevents a _REG
2391method from aborting if it accesses an address space has no handler.
2392AcpiExec installs a handler for every possible address space.
2393
2394Debugger: Enhanced the "handlers" command to display non-root handlers.
2395This change enhances the handlers command to display handlers associated
2396with individual devices throughout the namespace, in addition to the
2397currently supported display of handlers associated with the root
2398namespace
2399node.
2400
2401ASL Test Suite: Several test suite errors have been identified and
2402resolved, reducing the total error count during execution. Chao Guan.
2403
2404----------------------------------------
240528 March 2013. Summary of changes for version 20130328:
2406
24071) ACPICA kernel-resident subsystem:
2408
2409Fixed several possible race conditions with the internal object reference
2410counting mechanism. Some of the external ACPICA interfaces update object
2411reference counts without holding the interpreter or namespace lock. This
2412change adds a spinlock to protect reference count updates on the internal
2413ACPICA objects. Reported by and with assistance from Andriy Gapon
2414(avg@FreeBSD.org).
2415
2416FADT support: Removed an extraneous warning for very large GPE register
2417sets. This change removes a size mismatch warning if the legacy length
2418field for a GPE register set is larger than the 64-bit GAS structure can
2419accommodate. GPE register sets can be larger than the 255-bit width
2420limitation of the GAS structure. Linn Crosetto (linn@hp.com).
2421
2422_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
2423return from this interface. Handles a possible timeout case if
2424ACPI_WAIT_FOREVER is modified by the host to be a value less than
2425"forever". Jung-uk Kim.
2426
2427Predefined name support: Add allowed/required argument type information
2428to
2429the master predefined info table. This change adds the infrastructure to
2430enable typechecking on incoming arguments for all predefined
2431methods/objects. It does not actually contain the code that will fully
2432utilize this information, this is still under development. Also condenses
2433some duplicate code for the predefined names into a new module,
2434utilities/utpredef.c
2435
2436Example Code and Data Size: These are the sizes for the OS-independent
2437acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2438debug version of the code includes the debug output trace mechanism and
2439has a much larger code and data size.
2440
2441  Previous Release:
2442    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
2443    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
2444  Current Release:
2445    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
2446    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
2447
2448
24492) iASL Compiler/Disassembler and Tools:
2450
2451iASL: Implemented a new option to simplify the development of ACPI-
2452related
2453BIOS code. Adds support for a new "offset table" output file. The -so
2454option will create a C table containing the AML table offsets of various
2455named objects in the namespace so that BIOS code can modify them easily
2456at
2457boot time. This can simplify BIOS runtime code by eliminating expensive
2458searches for "magic values", enhancing boot times and adding greater
2459reliability. With assistance from Lee Hamel.
2460
2461iASL: Allow additional predefined names to return zero-length packages.
2462Now, all predefined names that are defined by the ACPI specification to
2463return a "variable-length package of packages" are allowed to return a
2464zero length top-level package. This allows the BIOS to tell the host that
2465the requested feature is not supported, and supports existing BIOS/ASL
2466code and practices.
2467
2468iASL: Changed the "result not used" warning to an error. This is the case
2469where an ASL operator is effectively a NOOP because the result of the
2470operation is not stored anywhere. For example:
2471    Add (4, Local0)
2472There is no target (missing 3rd argument), nor is the function return
2473value used. This is potentially a very serious problem -- since the code
2474was probably intended to do something, but for whatever reason, the value
2475was not stored. Therefore, this issue has been upgraded from a warning to
2476an error.
2477
2478AcpiHelp: Added allowable/required argument types to the predefined names
2479info display. This feature utilizes the recent update to the predefined
2480names table (above).
2481
2482----------------------------------------
248314 February 2013. Summary of changes for version 20130214:
2484
24851) ACPICA Kernel-resident Subsystem:
2486
2487Fixed a possible regression on some hosts: Reinstated the safe return
2488macros (return_ACPI_STATUS, etc.) that ensure that the argument is
2489evaluated only once. Although these macros are not needed for the ACPICA
2490code itself, they are often used by ACPI-related host device drivers
2491where
2492the safe feature may be necessary.
2493
2494Fixed several issues related to the ACPI 5.0 reduced hardware support
2495(SOC): Now ensure that if the platform declares itself as hardware-
2496reduced
2497via the FADT, the following functions become NOOPs (and always return
2498AE_OK) because ACPI is always enabled by definition on these machines:
2499  AcpiEnable
2500  AcpiDisable
2501  AcpiHwGetMode
2502  AcpiHwSetMode
2503
2504Dynamic Object Repair: Implemented additional runtime repairs for
2505predefined name return values. Both of these repairs can simplify code in
2506the related device drivers that invoke these methods:
25071) For the _STR and _MLS names, automatically repair/convert an ASCII
2508string to a Unicode buffer.
25092) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
2510a
2511lone end tag descriptor in the following cases: A Return(0) was executed,
2512a null buffer was returned, or no object at all was returned (non-slack
2513mode only). Adds a new file, nsconvert.c
2514ACPICA BZ 998. Bob Moore, Lv Zheng.
2515
2516Resource Manager: Added additional code to prevent possible infinite
2517loops
2518while traversing corrupted or ill-formed resource template buffers. Check
2519for zero-length resource descriptors in all code that loops through
2520resource templates (the length field is used to index through the
2521template). This change also hardens the external AcpiWalkResources and
2522AcpiWalkResourceBuffer interfaces.
2523
2524Local Cache Manager: Enhanced the main data structure to eliminate an
2525unnecessary mechanism to access the next object in the list. Actually
2526provides a small performance enhancement for hosts that use the local
2527ACPICA cache manager. Jung-uk Kim.
2528
2529Example Code and Data Size: These are the sizes for the OS-independent
2530acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2531debug version of the code includes the debug output trace mechanism and
2532has a much larger code and data size.
2533
2534  Previous Release:
2535    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
2536    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
2537  Current Release:
2538    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
2539    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
2540
2541
25422) iASL Compiler/Disassembler and Tools:
2543
2544iASL/Disassembler: Fixed several issues with the definition of the ACPI
25455.0 RASF table (RAS Feature Table). This change incorporates late changes
2546that were made to the ACPI 5.0 specification.
2547
2548iASL/Disassembler: Added full support for the following new ACPI tables:
2549  1) The MTMR table (MID Timer Table)
2550  2) The VRTC table (Virtual Real Time Clock Table).
2551Includes header file, disassembler, table compiler, and template support
2552for both tables.
2553
2554iASL: Implemented compile-time validation of package objects returned by
2555predefined names. This new feature validates static package objects
2556returned by the various predefined names defined to return packages. Both
2557object types and package lengths are validated, for both parent packages
2558and sub-packages, if any. The code is similar in structure and behavior
2559to
2560the runtime repair mechanism within the AML interpreter and uses the
2561existing predefined name information table. Adds a new file, aslprepkg.c.
2562ACPICA BZ 938.
2563
2564iASL: Implemented auto-detection of binary ACPI tables for disassembly.
2565This feature detects a binary file with a valid ACPI table header and
2566invokes the disassembler automatically. Eliminates the need to
2567specifically invoke the disassembler with the -d option. ACPICA BZ 862.
2568
2569iASL/Disassembler: Added several warnings for the case where there are
2570unresolved control methods during the disassembly. This can potentially
2571cause errors when the output file is compiled, because the disassembler
2572assumes zero method arguments in these cases (it cannot determine the
2573actual number of arguments without resolution/definition of the method).
2574
2575Debugger: Added support to display all resources with a single command.
2576Invocation of the resources command with no arguments will now display
2577all
2578resources within the current namespace.
2579
2580AcpiHelp: Added descriptive text for each ACPICA exception code displayed
2581via the -e option.
2582
2583----------------------------------------
258417 January 2013. Summary of changes for version 20130117:
2585
25861) ACPICA Kernel-resident Subsystem:
2587
2588Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
2589return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
2590objects to return a package containing one integer, most BIOS code
2591returns
2592two integers and the previous code reflects that. However, we also need
2593to
2594support BIOS code that actually implements to the ACPI spec, and this
2595change reflects this.
2596
2597Fixed two issues with the ACPI_DEBUG_PRINT macros:
25981) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
2599C compilers that require this support.
26002) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
2601ACPI_DEBUG is already used by many of the various hosts.
2602
2603Updated all ACPICA copyrights and signons to 2013. Added the 2013
2604copyright to all module headers and signons, including the standard Linux
2605header. This affects virtually every file in the ACPICA core subsystem,
2606iASL compiler, all ACPICA utilities, and the test suites.
2607
2608Example Code and Data Size: These are the sizes for the OS-independent
2609acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2610debug version of the code includes the debug output trace mechanism and
2611has a much larger code and data size.
2612
2613  Previous Release:
2614    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
2615    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
2616  Current Release:
2617    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
2618    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
2619
2620
26212) iASL Compiler/Disassembler and Tools:
2622
2623Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
2624prevent a possible fault on some hosts. Some C libraries modify the arg
2625pointer parameter to vfprintf making it difficult to call it twice in the
2626AcpiOsVprintf function. Use a local buffer to workaround this issue. This
2627does not affect the Windows OSL since the Win C library does not modify
2628the arg pointer. Chao Guan, Bob Moore.
2629
2630iASL: Fixed a possible infinite loop when the maximum error count is
2631reached. If an output file other than the .AML file is specified (such as
2632a listing file), and the maximum number of errors is reached, do not
2633attempt to flush data to the output file(s) as the compiler is aborting.
2634This can cause an infinite loop as the max error count code essentially
2635keeps calling itself.
2636
2637iASL/Disassembler: Added an option (-in) to ignore NOOP
2638opcodes/operators.
2639Implemented for both the compiler and the disassembler. Often, the NOOP
2640opcode is used as padding for packages that are changed dynamically by
2641the
2642BIOS. When disassembled and recompiled, these NOOPs will cause syntax
2643errors. This option causes the disassembler to ignore all NOOP opcodes
2644(0xA3), and it also causes the compiler to ignore all ASL source code
2645NOOP
2646statements as well.
2647
2648Debugger: Enhanced the Sleep command to execute all sleep states. This
2649change allows Sleep to be invoked with no arguments and causes the
2650debugger to execute all of the sleep states, 0-5, automatically.
2651
2652----------------------------------------
265320 December 2012. Summary of changes for version 20121220:
2654
26551) ACPICA Kernel-resident Subsystem:
2656
2657Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
2658alternate entry point for AcpiWalkResources and improves the usability of
2659the resource manager by accepting as input a buffer containing the output
2660of either a _CRS, _PRS, or _AEI method. The key functionality is that the
2661input buffer is not deleted by this interface so that it can be used by
2662the host later. See the ACPICA reference for details.
2663
2664Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
2665(DSDT version < 2). The constant will be truncated and this warning
2666reflects that behavior.
2667
2668Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
2669ExtendedInterrupt, and GpioInt descriptors. This change adds support to
2670both get and set the new wake bit in these descriptors, separately from
2671the existing share bit. Reported by Aaron Lu.
2672
2673Interpreter: Fix Store() when an implicit conversion is not possible. For
2674example, in the cases such as a store of a string to an existing package
2675object, implement the store as a CopyObject(). This is a small departure
2676from the ACPI specification which states that the control method should
2677be
2678aborted in this case. However, the ASLTS suite depends on this behavior.
2679
2680Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
2681macros: check if debug output is currently enabled as soon as possible to
2682minimize performance impact if debug is in fact not enabled.
2683
2684Source code restructuring: Cleanup to improve modularity. The following
2685new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
2686psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
2687Associated makefiles and project files have been updated.
2688
2689Changed an exception code for LoadTable operator. For the case where one
2690of the input strings is too long, change the returned exception code from
2691AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
2692
2693Fixed a possible memory leak in dispatcher error path. On error, delete
2694the mutex object created during method mutex creation. Reported by
2695tim.gardner@canonical.com.
2696
2697Example Code and Data Size: These are the sizes for the OS-independent
2698acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2699debug version of the code includes the debug output trace mechanism and
2700has a much larger code and data size.
2701
2702  Previous Release:
2703    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
2704    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2705  Current Release:
2706    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
2707    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
2708
2709
27102) iASL Compiler/Disassembler and Tools:
2711
2712iASL: Disallow a method call as argument to the ObjectType ASL operator.
2713This change tracks an errata to the ACPI 5.0 document. The AML grammar
2714will not allow the interpreter to differentiate between a method and a
2715method invocation when these are used as an argument to the ObjectType
2716operator. The ACPI specification change is to disallow a method
2717invocation
2718(UserTerm) for the ObjectType operator.
2719
2720Finish support for the TPM2 and CSRT tables in the headers, table
2721compiler, and disassembler.
2722
2723Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
2724always expires immediately if the semaphore is not available. The
2725original
2726code was using a relative-time timeout, but sem_timedwait requires the
2727use
2728of an absolute time.
2729
2730iASL: Added a remark if the Timer() operator is used within a 32-bit
2731table. This operator returns a 64-bit time value that will be truncated
2732within a 32-bit table.
2733
2734iASL Source code restructuring: Cleanup to improve modularity. The
2735following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
2736aslmethod.c, and aslfileio.c. Associated makefiles and project files have
2737been updated.
2738
2739
2740----------------------------------------
274114 November 2012. Summary of changes for version 20121114:
2742
27431) ACPICA Kernel-resident Subsystem:
2744
2745Implemented a performance enhancement for ACPI/AML Package objects. This
2746change greatly increases the performance of Package objects within the
2747interpreter. It changes the processing of reference counts for packages
2748by
2749optimizing for the most common case where the package sub-objects are
2750either Integers, Strings, or Buffers. Increases the overall performance
2751of
2752the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
27532X.)
2754Chao Guan. ACPICA BZ 943.
2755
2756Implemented and deployed common macros to extract flag bits from resource
2757descriptors. Improves readability and maintainability of the code. Fixes
2758a
2759problem with the UART serial bus descriptor for the number of data bits
2760flags (was incorrectly 2 bits, should be 3).
2761
2762Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
2763of the macros and changed the SETx macros to the style of (destination,
2764source). Also added ACPI_CASTx companion macros. Lv Zheng.
2765
2766Example Code and Data Size: These are the sizes for the OS-independent
2767acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2768debug version of the code includes the debug output trace mechanism and
2769has a much larger code and data size.
2770
2771  Previous Release:
2772    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
2773    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2774  Current Release:
2775    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
2776    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2777
2778
27792) iASL Compiler/Disassembler and Tools:
2780
2781Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
2782adds the ShareAndWake and ExclusiveAndWake flags which were added to the
2783Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
2784
2785Disassembler: Fixed a problem with external declaration generation. Fixes
2786a problem where an incorrect pathname could be generated for an external
2787declaration if the original reference to the object includes leading
2788carats (^). ACPICA BZ 984.
2789
2790Debugger: Completed a major update for the Disassemble<method> command.
2791This command was out-of-date and did not properly disassemble control
2792methods that had any reasonable complexity. This fix brings the command
2793up
2794to the same level as the rest of the disassembler. Adds one new file,
2795dmdeferred.c, which is existing code that is now common with the main
2796disassembler and the debugger disassemble command. ACPICA MZ 978.
2797
2798iASL: Moved the parser entry prototype to avoid a duplicate declaration.
2799Newer versions of Bison emit this prototype, so moved the prototype out
2800of
2801the iASL header to where it is actually used in order to avoid a
2802duplicate
2803declaration.
2804
2805iASL/Tools: Standardized use of the stream I/O functions:
2806  1) Ensure check for I/O error after every fopen/fread/fwrite
2807  2) Ensure proper order of size/count arguments for fread/fwrite
2808  3) Use test of (Actual != Requested) after all fwrite, and most fread
2809  4) Standardize I/O error messages
2810Improves reliability and maintainability of the code. Bob Moore, Lv
2811Zheng.
2812ACPICA BZ 981.
2813
2814Disassembler: Prevent duplicate External() statements. During generation
2815of external statements, detect similar pathnames that are actually
2816duplicates such as these:
2817  External (\ABCD)
2818  External (ABCD)
2819Remove all leading '\' characters from pathnames during the external
2820statement generation so that duplicates will be detected and tossed.
2821ACPICA BZ 985.
2822
2823Tools: Replace low-level I/O with stream I/O functions. Replace
2824open/read/write/close with the stream I/O equivalents
2825fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
2826Moore.
2827
2828AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
2829name header so that AcpiXtract recognizes the output file/table.
2830
2831iASL: Remove obsolete -2 option flag. Originally intended to force the
2832compiler/disassembler into an ACPI 2.0 mode, this was never implemented
2833and the entire concept is now obsolete.
2834
2835----------------------------------------
283618 October 2012. Summary of changes for version 20121018:
2837
2838
28391) ACPICA Kernel-resident Subsystem:
2840
2841Updated support for the ACPI 5.0 MPST table. Fixes some problems
2842introduced by late changes to the table as it was added to the ACPI 5.0
2843specification. Includes header, disassembler, and data table compiler
2844support as well as a new version of the MPST template.
2845
2846AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
28475.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
2848methods: _HID, _CID, and _UID.
2849
2850Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
2851ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
2852name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
2853names for their various drivers. Affects the AcpiGetObjectInfo external
2854interface, and other internal interfaces as well.
2855
2856Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
2857This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
2858on machines that support non-aligned transfers. Optimizes for this case
2859rather than using a strncpy. With assistance from Zheng Lv.
2860
2861Resource Manager: Small fix for buffer size calculation. Fixed a one byte
2862error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
2863
2864Added a new debug print message for AML mutex objects that are force-
2865released. At control method termination, any currently acquired mutex
2866objects are force-released. Adds a new debug-only message for each one
2867that is released.
2868
2869Audited/updated all ACPICA return macros and the function debug depth
2870counter: 1) Ensure that all functions that use the various TRACE macros
2871also use the appropriate ACPICA return macros. 2) Ensure that all normal
2872return statements surround the return expression (value) with parens to
2873ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
2874Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
2875
2876Global source code changes/maintenance: All extra lines at the start and
2877end of each source file have been removed for consistency. Also, within
2878comments, all new sentences start with a single space instead of a double
2879space, again for consistency across the code base.
2880
2881Example Code and Data Size: These are the sizes for the OS-independent
2882acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2883debug version of the code includes the debug output trace mechanism and
2884has a much larger code and data size.
2885
2886  Previous Release:
2887    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2888    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2889  Current Release:
2890    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
2891    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2892
2893
28942) iASL Compiler/Disassembler and Tools:
2895
2896AcpiExec: Improved the algorithm used for memory leak/corruption
2897detection. Added some intelligence to the code that maintains the global
2898list of allocated memory. The list is now ordered by allocated memory
2899address, significantly improving performance. When running AcpiExec on
2900the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
2901on the platform and/or the environment. Note, this performance
2902enhancement affects the AcpiExec utility only, not the kernel-resident
2903ACPICA code.
2904
2905Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
2906the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
2907incorrect table offset reported for invalid opcodes. Report the original
290832-bit value for bad ACPI_NAMEs (as well as the repaired name.)
2909
2910Disassembler: Enhanced the -vt option to emit the binary table data in
2911hex format to assist with debugging.
2912
2913Fixed a potential filename buffer overflow in osunixdir.c. Increased the
2914size of file structure. Colin Ian King.
2915
2916----------------------------------------
291713 September 2012. Summary of changes for version 20120913:
2918
2919
29201) ACPICA Kernel-resident Subsystem:
2921
2922ACPI 5.0: Added two new notify types for the Hardware Error Notification
2923Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
2924and
2925MCE(6).
2926
2927Table Manager: Merged/removed duplicate code in the root table resize
2928functions. One function is external, the other is internal. Lv Zheng,
2929ACPICA
2930BZ 846.
2931
2932Makefiles: Completely removed the obsolete "Linux" makefiles under
2933acpica/generate/linux. These makefiles are obsolete and have been
2934replaced
2935by
2936the generic unix makefiles under acpica/generate/unix.
2937
2938Makefiles: Ensure that binary files always copied properly. Minor rule
2939change
2940to ensure that the final binary output files are always copied up to the
2941appropriate binary directory (bin32 or bin64.)
2942
2943Example Code and Data Size: These are the sizes for the OS-independent
2944acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2945debug
2946version of the code includes the debug output trace mechanism and has a
2947much
2948larger code and data size.
2949
2950  Previous Release:
2951    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2952    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2953  Current Release:
2954    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2955    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2956
2957
29582) iASL Compiler/Disassembler and Tools:
2959
2960Disassembler: Fixed a possible fault during the disassembly of resource
2961descriptors when a second parse is required because of the invocation of
2962external control methods within the table. With assistance from
2963adq@lidskialf.net. ACPICA BZ 976.
2964
2965iASL: Fixed a namepath optimization problem. An error can occur if the
2966parse
2967node that contains the namepath to be optimized does not have a parent
2968node
2969that is a named object. This change fixes the problem.
2970
2971iASL: Fixed a regression where the AML file is not deleted on errors. The
2972AML
2973output file should be deleted if there are any errors during the
2974compiler.
2975The
2976only exception is if the -f (force output) option is used. ACPICA BZ 974.
2977
2978iASL: Added a feature to automatically increase internal line buffer
2979sizes.
2980Via realloc(), automatically increase the internal line buffer sizes as
2981necessary to support very long source code lines. The current version of
2982the
2983preprocessor requires a buffer long enough to contain full source code
2984lines.
2985This change increases the line buffer(s) if the input lines go beyond the
2986current buffer size. This eliminates errors that occurred when a source
2987code
2988line was longer than the buffer.
2989
2990iASL: Fixed a problem with constant folding in method declarations. The
2991SyncLevel term is a ByteConstExpr, and incorrect code would be generated
2992if a
2993Type3 opcode was used.
2994
2995Debugger: Improved command help support. For incorrect argument count,
2996display
2997full help for the command. For help command itself, allow an argument to
2998specify a command.
2999
3000Test Suites: Several bug fixes for the ASLTS suite reduces the number of
3001errors during execution of the suite. Guan Chao.
3002
3003----------------------------------------
300416 August 2012. Summary of changes for version 20120816:
3005
3006
30071) ACPICA Kernel-resident Subsystem:
3008
3009Removed all use of the deprecated _GTS and _BFS predefined methods. The
3010_GTS
3011(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
3012deprecated and will probably be removed from the ACPI specification.
3013Windows
3014does not invoke them, and reportedly never will. The final nail in the
3015coffin
3016is that the ACPI specification states that these methods must be run with
3017interrupts off, which is not going to happen in a kernel interpreter.
3018Note:
3019Linux has removed all use of the methods also. It was discovered that
3020invoking these functions caused failures on some machines, probably
3021because
3022they were never tested since Windows does not call them. Affects two
3023external
3024interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
3025ACPICA BZ 969.
3026
3027Implemented support for complex bit-packed buffers returned from the _PLD
3028(Physical Location of Device) predefined method. Adds a new external
3029interface, AcpiDecodePldBuffer that parses the buffer into a more usable
3030C
3031structure. Note: C Bitfields cannot be used for this type of predefined
3032structure since the memory layout of individual bitfields is not defined
3033by
3034the C language. In addition, there are endian concerns where a compiler
3035will
3036change the bitfield ordering based on the machine type. The new ACPICA
3037interface eliminates these issues, and should be called after _PLD is
3038executed. ACPICA BZ 954.
3039
3040Implemented a change to allow a scope change to root (via "Scope (\)")
3041during
3042execution of module-level ASL code (code that is executed at table load
3043time.) Lin Ming.
3044
3045Added the Windows8/Server2012 string for the _OSI method. This change
3046adds
3047a
3048new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
30492012.
3050
3051Added header support for the new ACPI tables DBG2 (Debug Port Table Type
30522)
3053and CSRT (Core System Resource Table).
3054
3055Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
3056names. This simplifies access to the buffers returned by these predefined
3057names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
3058
3059GPE support: Removed an extraneous parameter from the various low-level
3060internal GPE functions. Tang Feng.
3061
3062Removed the linux makefiles from the unix packages. The generate/linux
3063makefiles are obsolete and have been removed from the unix tarball
3064release
3065packages. The replacement makefiles are under generate/unix, and there is
3066a
3067top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
3068
3069Updates for Unix makefiles:
30701) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
30712) Update linker flags (move to end of command line) for AcpiExec
3072utility.
3073Guan Chao.
3074
3075Split ACPICA initialization functions to new file, utxfinit.c. Split from
3076utxface.c to improve modularity and reduce file size.
3077
3078Example Code and Data Size: These are the sizes for the OS-independent
3079acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3080debug version of the code includes the debug output trace mechanism and
3081has a
3082much larger code and data size.
3083
3084  Previous Release:
3085    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
3086    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
3087  Current Release:
3088    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
3089    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
3090
3091
30922) iASL Compiler/Disassembler and Tools:
3093
3094iASL: Fixed a problem with constant folding for fixed-length constant
3095expressions. The constant-folding code was not being invoked for constant
3096expressions that allow the use of type 3/4/5 opcodes to generate
3097constants
3098for expressions such as ByteConstExpr, WordConstExpr, etc. This could
3099result
3100in the generation of invalid AML bytecode. ACPICA BZ 970.
3101
3102iASL: Fixed a generation issue on newer versions of Bison. Newer versions
3103apparently automatically emit some of the necessary externals. This
3104change
3105handles these versions in order to eliminate generation warnings.
3106
3107Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
3108
3109Disassembler: Add support to decode _PLD buffers. The decoded buffer
3110appears
3111within comments in the output file.
3112
3113Debugger: Fixed a regression with the "Threads" command where
3114AE_BAD_PARAMETER was always returned.
3115
3116----------------------------------------
311711 July 2012. Summary of changes for version 20120711:
3118
31191) ACPICA Kernel-resident Subsystem:
3120
3121Fixed a possible fault in the return package object repair code. Fixes a
3122problem that can occur when a lone package object is wrapped with an
3123outer
3124package object in order to force conformance to the ACPI specification.
3125Can
3126affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
3127_DLM,
3128_CSD, _PSD, _TSD.
3129
3130Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
3131PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
3132ARB_DIS bit must be implemented in the host-dependent C3 processor power
3133state
3134support. Note, ARB_DIS is obsolete and only applies to older chipsets,
3135both
3136Intel and other vendors. (for Intel: ICH4-M and earlier)
3137
3138This change removes the code to disable/enable bus master arbitration
3139during
3140suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
3141causes
3142resume problems on some machines. The change has been in use for over
3143seven
3144years within Linux.
3145
3146Implemented two new external interfaces to support host-directed dynamic
3147ACPI
3148table load and unload. They are intended to simplify the host
3149implementation
3150of hot-plug support:
3151  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
3152  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
3153table.
3154See the ACPICA reference for additional details. Adds one new file,
3155components/tables/tbxfload.c
3156
3157Implemented and deployed two new interfaces for errors and warnings that
3158are
3159known to be caused by BIOS/firmware issues:
3160  AcpiBiosError: Prints "ACPI Firmware Error" message.
3161  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
3162Deployed these new interfaces in the ACPICA Table Manager code for ACPI
3163table
3164and FADT errors. Additional deployment to be completed as appropriate in
3165the
3166future. The associated conditional macros are ACPI_BIOS_ERROR and
3167ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
3168ACPICA
3169BZ
3170843.
3171
3172Implicit notify support: ensure that no memory allocation occurs within a
3173critical region. This fix moves a memory allocation outside of the time
3174that a
3175spinlock is held. Fixes issues on systems that do not allow this
3176behavior.
3177Jung-uk Kim.
3178
3179Split exception code utilities and tables into a new file,
3180utilities/utexcep.c
3181
3182Example Code and Data Size: These are the sizes for the OS-independent
3183acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3184debug
3185version of the code includes the debug output trace mechanism and has a
3186much
3187larger code and data size.
3188
3189  Previous Release:
3190    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
3191    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
3192  Current Release:
3193    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
3194    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
3195
3196
31972) iASL Compiler/Disassembler and Tools:
3198
3199iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
3200of
32010. Jung-uk Kim.
3202
3203Debugger: Enhanced the "tables" command to emit additional information
3204about
3205the current set of ACPI tables, including the owner ID and flags decode.
3206
3207Debugger: Reimplemented the "unload" command to use the new
3208AcpiUnloadParentTable external interface. This command was disable
3209previously
3210due to need for an unload interface.
3211
3212AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
3213option
3214will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
3215
3216----------------------------------------
321720 June 2012. Summary of changes for version 20120620:
3218
3219
32201) ACPICA Kernel-resident Subsystem:
3221
3222Implemented support to expand the "implicit notify" feature to allow
3223multiple
3224devices to be notified by a single GPE. This feature automatically
3225generates a
3226runtime device notification in the absence of a BIOS-provided GPE control
3227method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
3228notify is
3229provided by ACPICA for Windows compatibility, and is a workaround for
3230BIOS
3231AML
3232code errors. See the description of the AcpiSetupGpeForWake interface in
3233the
3234APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
3235
3236Changed some comments and internal function names to simplify and ensure
3237correctness of the Linux code translation. No functional changes.
3238
3239Example Code and Data Size: These are the sizes for the OS-independent
3240acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3241debug
3242version of the code includes the debug output trace mechanism and has a
3243much
3244larger code and data size.
3245
3246  Previous Release:
3247    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
3248    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
3249  Current Release:
3250    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
3251    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
3252
3253
32542) iASL Compiler/Disassembler and Tools:
3255
3256Disassembler: Added support to emit short, commented descriptions for the
3257ACPI
3258predefined names in order to improve the readability of the disassembled
3259output. ACPICA BZ 959. Changes include:
3260  1) Emit descriptions for all standard predefined names (_INI, _STA,
3261_PRW,
3262etc.)
3263  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
3264  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
3265etc.)
3266
3267AcpiSrc: Fixed several long-standing Linux code translation issues.
3268Argument
3269descriptions in function headers are now translated properly to lower
3270case
3271and
3272underscores. ACPICA BZ 961. Also fixes translation problems such as
3273these:
3274(old -> new)
3275  i_aSL -> iASL
3276  00-7_f -> 00-7F
3277  16_k -> 16K
3278  local_fADT -> local_FADT
3279  execute_oSI -> execute_OSI
3280
3281iASL: Fixed a problem where null bytes were inadvertently emitted into
3282some
3283listing files.
3284
3285iASL: Added the existing debug options to the standard help screen. There
3286are
3287no longer two different help screens. ACPICA BZ 957.
3288
3289AcpiHelp: Fixed some typos in the various predefined name descriptions.
3290Also
3291expand some of the descriptions where appropriate.
3292
3293iASL: Fixed the -ot option (display compile times/statistics). Was not
3294working
3295properly for standard output; only worked for the debug file case.
3296
3297----------------------------------------
329818 May 2012. Summary of changes for version 20120518:
3299
3300
33011) ACPICA Core Subsystem:
3302
3303Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
3304defined
3305to block until asynchronous events such as notifies and GPEs have
3306completed.
3307Within ACPICA, it is only called before a notify or GPE handler is
3308removed/uninstalled. It also may be useful for the host OS within related
3309drivers such as the Embedded Controller driver. See the ACPICA reference
3310for
3311additional information. ACPICA BZ 868.
3312
3313ACPI Tables: Added a new error message for a possible overflow failure
3314during
3315the conversion of FADT 32-bit legacy register addresses to internal
3316common
331764-
3318bit GAS structure representation. The GAS has a one-byte "bit length"
3319field,
3320thus limiting the register length to 255 bits. ACPICA BZ 953.
3321
3322Example Code and Data Size: These are the sizes for the OS-independent
3323acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3324debug
3325version of the code includes the debug output trace mechanism and has a
3326much
3327larger code and data size.
3328
3329  Previous Release:
3330    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3331    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
3332  Current Release:
3333    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
3334    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
3335
3336
33372) iASL Compiler/Disassembler and Tools:
3338
3339iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
3340macro.
3341This keyword was added late in the ACPI 5.0 release cycle and was not
3342implemented until now.
3343
3344Disassembler: Added support for Operation Region externals. Adds missing
3345support for operation regions that are defined in another table, and
3346referenced locally via a Field or BankField ASL operator. Now generates
3347the
3348correct External statement.
3349
3350Disassembler: Several additional fixes for the External() statement
3351generation
3352related to some ASL operators. Also, order the External() statements
3353alphabetically in the disassembler output. Fixes the External()
3354generation
3355for
3356the Create* field, Alias, and Scope operators:
3357 1) Create* buffer field operators - fix type mismatch warning on
3358disassembly
3359 2) Alias - implement missing External support
3360 3) Scope - fix to make sure all necessary externals are emitted.
3361
3362iASL: Improved pathname support. For include files, merge the prefix
3363pathname
3364with the file pathname and eliminate unnecessary components. Convert
3365backslashes in all pathnames to forward slashes, for readability. Include
3366file
3367pathname changes affect both #include and Include() type operators.
3368
3369iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
3370end
3371of a valid line by inserting a newline and then returning the EOF during
3372the
3373next call to GetNextLine. Prevents the line from being ignored due to EOF
3374condition.
3375
3376iASL: Implemented some changes to enhance the IDE support (-vi option.)
3377Error
3378and Warning messages are now correctly recognized for both the source
3379code
3380browser and the global error and warning counts.
3381
3382----------------------------------------
338320 April 2012. Summary of changes for version 20120420:
3384
3385
33861) ACPICA Core Subsystem:
3387
3388Implemented support for multiple notify handlers. This change adds
3389support
3390to
3391allow multiple system and device notify handlers on Device, Thermal Zone,
3392and
3393Processor objects. This can simplify the host OS notification
3394implementation.
3395Also re-worked and restructured the entire notify support code to
3396simplify
3397handler installation, handler removal, notify event queuing, and notify
3398dispatch to handler(s). Note: there can still only be two global notify
3399handlers - one for system notifies and one for device notifies. There are
3400no
3401changes to the existing handler install/remove interfaces. Lin Ming, Bob
3402Moore, Rafael Wysocki.
3403
3404Fixed a regression in the package repair code where the object reference
3405count was calculated incorrectly. Regression was introduced in the commit
3406"Support to add Package wrappers".
3407
3408Fixed a couple possible memory leaks in the AML parser, in the error
3409recovery
3410path. Jesper Juhl, Lin Ming.
3411
3412Example Code and Data Size: These are the sizes for the OS-independent
3413acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3414debug version of the code includes the debug output trace mechanism and
3415has a
3416much larger code and data size.
3417
3418  Previous Release:
3419    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3420    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3421  Current Release:
3422    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3423    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
3424
3425
34262) iASL Compiler/Disassembler and Tools:
3427
3428iASL: Fixed a problem with the resource descriptor support where the
3429length
3430of the StartDependentFn and StartDependentFnNoPrio descriptors were not
3431included in cumulative descriptor offset, resulting in incorrect values
3432for
3433resource tags within resource descriptors appearing after a
3434StartDependent*
3435descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
3436
3437iASL and Preprocessor: Implemented full support for the #line directive
3438to
3439correctly track original source file line numbers through the .i
3440preprocessor
3441output file - for error and warning messages.
3442
3443iASL: Expand the allowable byte constants for address space IDs.
3444Previously,
3445the allowable range was 0x80-0xFF (user-defined spaces), now the range is
34460x0A-0xFF to allow for custom and new IDs without changing the compiler.
3447
3448iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
3449
3450iASL: Add option to completely disable the preprocessor (-Pn).
3451
3452iASL: Now emit all error/warning messages to standard error (stderr) by
3453default (instead of the previous stdout).
3454
3455ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
3456Update
3457for resource descriptor offset fix above. Update/cleanup error output
3458routines. Enable and send iASL errors/warnings to an error logfile
3459(error.txt). Send all other iASL output to a logfile (compiler.txt).
3460Fixed
3461several extraneous "unrecognized operator" messages.
3462
3463----------------------------------------
346420 March 2012. Summary of changes for version 20120320:
3465
3466
34671) ACPICA Core Subsystem:
3468
3469Enhanced the sleep/wake interfaces to optionally execute the _GTS method
3470(Going To Sleep) and the _BFS method (Back From Sleep). Windows
3471apparently
3472does not execute these methods, and therefore these methods are often
3473untested. It has been seen on some systems where the execution of these
3474methods causes errors and also prevents the machine from entering S5. It
3475is
3476therefore suggested that host operating systems do not execute these
3477methods
3478by default. In the future, perhaps these methods can be optionally
3479executed
3480based on the age of the system and/or what is the newest version of
3481Windows
3482that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
3483and
3484AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
3485Ming.
3486
3487Fixed a problem where the length of the local/common FADT was set too
3488early.
3489The local FADT table length cannot be set to the common length until the
3490original length has been examined. There is code that checks the table
3491length
3492and sets various fields appropriately. This can affect older machines
3493with
3494early FADT versions. For example, this can cause inadvertent writes to
3495the
3496CST_CNT register. Julian Anastasov.
3497
3498Fixed a mapping issue related to a physical table override. Use the
3499deferred
3500mapping mechanism for tables loaded via the physical override OSL
3501interface.
3502This allows for early mapping before the virtual memory manager is
3503available.
3504Thomas Renninger, Bob Moore.
3505
3506Enhanced the automatic return-object repair code: Repair a common problem
3507with
3508predefined methods that are defined to return a variable-length Package
3509of
3510sub-objects. If there is only one sub-object, some BIOS ASL code
3511mistakenly
3512simply returns the single object instead of a Package with one sub-
3513object.
3514This new support will repair this error by wrapping a Package object
3515around
3516the original object, creating the correct and expected Package with one
3517sub-
3518object. Names that can be repaired in this manner include: _ALR, _CSD,
3519_HPX,
3520_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
3521939.
3522
3523Changed the exception code returned for invalid ACPI paths passed as
3524parameters to external interfaces such as AcpiEvaluateObject. Was
3525AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
3526
3527Example Code and Data Size: These are the sizes for the OS-independent
3528acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3529debug
3530version of the code includes the debug output trace mechanism and has a
3531much
3532larger code and data size.
3533
3534  Previous Release:
3535    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
3536    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3537  Current Release:
3538    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3539    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3540
3541
35422) iASL Compiler/Disassembler and Tools:
3543
3544iASL: Added the infrastructure and initial implementation of a integrated
3545C-
3546like preprocessor. This will simplify BIOS development process by
3547eliminating
3548the need for a separate preprocessing step during builds. On Windows, it
3549also
3550eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
3551features including full #define() macro support are still under
3552development.
3553These preprocessor directives are supported:
3554    #define
3555    #elif
3556    #else
3557    #endif
3558    #error
3559    #if
3560    #ifdef
3561    #ifndef
3562    #include
3563    #pragma message
3564    #undef
3565    #warning
3566In addition, these new command line options are supported:
3567    -D <symbol> Define symbol for preprocessor use
3568    -li         Create preprocessed output file (*.i)
3569    -P          Preprocess only and create preprocessor output file (*.i)
3570
3571Table Compiler: Fixed a problem where the equals operator within an
3572expression
3573did not work properly.
3574
3575Updated iASL to use the current versions of Bison/Flex. Updated the
3576Windows
3577project file to invoke these tools from the standard location. ACPICA BZ
3578904.
3579Versions supported:
3580    Flex for Windows:  V2.5.4
3581    Bison for Windows: V2.4.1
3582
3583----------------------------------------
358415 February 2012. Summary of changes for version 20120215:
3585
3586
35871) ACPICA Core Subsystem:
3588
3589There have been some major changes to the sleep/wake support code, as
3590described below (a - e).
3591
3592a) The AcpiLeaveSleepState has been split into two interfaces, similar to
3593AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
3594AcpiLeaveSleepStatePrep. This allows the host to perform actions between
3595the
3596time the _BFS method is called and the _WAK method is called. NOTE: all
3597hosts
3598must update their wake/resume code or else sleep/wake will not work
3599properly.
3600Rafael Wysocki.
3601
3602b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
3603_WAK
3604method. Some machines require that the GPEs are enabled before the _WAK
3605method
3606is executed. Thomas Renninger.
3607
3608c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
3609bit.
3610Some BIOS code assumes that WAK_STS will be cleared on resume and use it
3611to
3612determine whether the system is rebooting or resuming. Matthew Garrett.
3613
3614d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
3615Sleep) to
3616match the ACPI specification requirement. Rafael Wysocki.
3617
3618e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
3619registers within the V5 FADT. This support adds two new files:
3620hardware/hwesleep.c implements the support for the new registers. Moved
3621all
3622sleep/wake external interfaces to hardware/hwxfsleep.c.
3623
3624
3625Added a new OSL interface for ACPI table overrides,
3626AcpiOsPhysicalTableOverride. This interface allows the host to override a
3627table via a physical address, instead of the logical address required by
3628AcpiOsTableOverride. This simplifies the host implementation. Initial
3629implementation by Thomas Renninger. The ACPICA implementation creates a
3630single
3631shared function for table overrides that attempts both a logical and a
3632physical override.
3633
3634Expanded the OSL memory read/write interfaces to 64-bit data
3635(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
3636transfer support for GAS register structures passed to AcpiRead and
3637AcpiWrite.
3638
3639Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
3640custom
3641build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
3642model.
3643See the ACPICA reference for details. ACPICA BZ 942. This option removes
3644about
364510% of the code and 5% of the static data, and the following hardware
3646ACPI
3647features become unavailable:
3648    PM Event and Control registers
3649    SCI interrupt (and handler)
3650    Fixed Events
3651    General Purpose Events (GPEs)
3652    Global Lock
3653    ACPI PM timer
3654    FACS table (Waking vectors and Global Lock)
3655
3656Updated the unix tarball directory structure to match the ACPICA git
3657source
3658tree. This ensures that the generic unix makefiles work properly (in
3659generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
3660867.
3661
3662Updated the return value of the _REV predefined method to integer value 5
3663to
3664reflect ACPI 5.0 support.
3665
3666Moved the external ACPI PM timer interface prototypes to the public
3667acpixf.h
3668file where they belong.
3669
3670Example Code and Data Size: These are the sizes for the OS-independent
3671acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3672debug
3673version of the code includes the debug output trace mechanism and has a
3674much
3675larger code and data size.
3676
3677  Previous Release:
3678    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
3679    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
3680  Current Release:
3681    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
3682    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3683
3684
36852) iASL Compiler/Disassembler and Tools:
3686
3687Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
3688descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
3689incorrectly displayed.
3690
3691AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
3692specification.
3693
3694----------------------------------------
369511 January 2012. Summary of changes for version 20120111:
3696
3697
36981) ACPICA Core Subsystem:
3699
3700Implemented a new mechanism to allow host device drivers to check for
3701address
3702range conflicts with ACPI Operation Regions. Both SystemMemory and
3703SystemIO
3704address spaces are supported. A new external interface,
3705AcpiCheckAddressRange,
3706allows drivers to check an address range against the ACPI namespace. See
3707the
3708ACPICA reference for additional details. Adds one new file,
3709utilities/utaddress.c. Lin Ming, Bob Moore.
3710
3711Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
3712Control
3713and
3714Status registers, update the ACPI 5.0 flags, and update internal data
3715structures to handle an FADT larger than 256 bytes. The size of the ACPI
37165.0
3717FADT is 268 bytes.
3718
3719Updated all ACPICA copyrights and signons to 2012. Added the 2012
3720copyright to
3721all module headers and signons, including the standard Linux header. This
3722affects virtually every file in the ACPICA core subsystem, iASL compiler,
3723and
3724all ACPICA utilities.
3725
3726Example Code and Data Size: These are the sizes for the OS-independent
3727acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3728debug
3729version of the code includes the debug output trace mechanism and has a
3730much
3731larger code and data size.
3732
3733  Previous Release:
3734    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
3735    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
3736  Current Release:
3737    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
3738    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
3739
3740
37412) iASL Compiler/Disassembler and Tools:
3742
3743Disassembler: fixed a problem with the automatic resource tag generation
3744support. Fixes a problem where the resource tags are inadvertently not
3745constructed if the table being disassembled contains external references
3746to
3747control methods. Moved the actual construction of the tags to after the
3748final
3749namespace is constructed (after 2nd parse is invoked due to external
3750control
3751method references.) ACPICA BZ 941.
3752
3753Table Compiler: Make all "generic" operators caseless. These are the
3754operators
3755like UINT8, String, etc. Making these caseless improves ease-of-use.
3756ACPICA BZ
3757934.
3758
3759----------------------------------------
376023 November 2011. Summary of changes for version 20111123:
3761
37620) ACPI 5.0 Support:
3763
3764This release contains full support for the ACPI 5.0 specification, as
3765summarized below.
3766
3767Reduced Hardware Support:
3768-------------------------
3769
3770This support allows for ACPI systems without the usual ACPI hardware.
3771This
3772support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
3773will
3774not attempt to initialize or use any of the usual ACPI hardware. Note,
3775when
3776this flag is set, all of the following ACPI hardware is assumed to be not
3777present and is not initialized or accessed:
3778
3779    General Purpose Events (GPEs)
3780    Fixed Events (PM1a/PM1b and PM Control)
3781    Power Management Timer and Console Buttons (power/sleep)
3782    Real-time Clock Alarm
3783    Global Lock
3784    System Control Interrupt (SCI)
3785    The FACS is assumed to be non-existent
3786
3787ACPI Tables:
3788------------
3789
3790All new tables and updates to existing tables are fully supported in the
3791ACPICA headers (for use by device drivers), the disassembler, and the
3792iASL
3793Data Table Compiler. ACPI 5.0 defines these new tables:
3794
3795    BGRT        /* Boot Graphics Resource Table */
3796    DRTM        /* Dynamic Root of Trust for Measurement table */
3797    FPDT        /* Firmware Performance Data Table */
3798    GTDT        /* Generic Timer Description Table */
3799    MPST        /* Memory Power State Table */
3800    PCCT        /* Platform Communications Channel Table */
3801    PMTT        /* Platform Memory Topology Table */
3802    RASF        /* RAS Feature table */
3803
3804Operation Regions/SpaceIDs:
3805---------------------------
3806
3807All new operation regions are fully supported by the iASL compiler, the
3808disassembler, and the ACPICA runtime code (for dispatch to region
3809handlers.)
3810The new operation region Space IDs are:
3811
3812    GeneralPurposeIo
3813    GenericSerialBus
3814
3815Resource Descriptors:
3816---------------------
3817
3818All new ASL resource descriptors are fully supported by the iASL
3819compiler,
3820the
3821ASL/AML disassembler, and the ACPICA runtime Resource Manager code
3822(including
3823all new predefined resource tags). New descriptors are:
3824
3825    FixedDma
3826    GpioIo
3827    GpioInt
3828    I2cSerialBus
3829    SpiSerialBus
3830    UartSerialBus
3831
3832ASL/AML Operators, New and Modified:
3833------------------------------------
3834
3835One new operator is added, the Connection operator, which is used to
3836associate
3837a GeneralPurposeIo or GenericSerialBus resource descriptor with
3838individual
3839field objects within an operation region. Several new protocols are
3840associated
3841with the AccessAs operator. All are fully supported by the iASL compiler,
3842disassembler, and runtime ACPICA AML interpreter:
3843
3844    Connection                      // Declare Field Connection
3845attributes
3846    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
3847    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
3848Protocol
3849    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
3850    RawDataBuffer                       // Data type for Vendor Data
3851fields
3852
3853Predefined ASL/AML Objects:
3854---------------------------
3855
3856All new predefined objects/control-methods are supported by the iASL
3857compiler
3858and the ACPICA runtime validation/repair (arguments and return values.)
3859New
3860predefined names include the following:
3861
3862Standard Predefined Names (Objects or Control Methods):
3863    _AEI, _CLS, _CPC, _CWS, _DEP,
3864    _DLM, _EVT, _GCP, _CRT, _GWS,
3865    _HRV, _PRE, _PSE, _SRT, _SUB.
3866
3867Resource Tags (Names used to access individual fields within resource
3868descriptors):
3869    _DBT, _DPL, _DRS, _END, _FLC,
3870    _IOR, _LIN, _MOD, _PAR, _PHA,
3871    _PIN, _PPI, _POL, _RXL, _SLV,
3872    _SPE, _STB, _TXL, _VEN.
3873
3874ACPICA External Interfaces:
3875---------------------------
3876
3877Several new interfaces have been defined for use by ACPI-related device
3878drivers and other host OS services:
3879
3880AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
3881to
3882acquire and release AML mutexes that are defined in the DSDT/SSDT tables
3883provided by the BIOS. They are intended to be used in conjunction with
3884the
3885ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
3886mutual exclusion with the AML code/interpreter.
3887
3888AcpiGetEventResources: Returns the (formatted) resource descriptors as
3889defined
3890by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
3891provides
3892resource descriptors associated with hardware-reduced platform events,
3893similar
3894to the AcpiGetCurrentResources interface.
3895
3896Operation Region Handlers: For General Purpose IO and Generic Serial Bus
3897operation regions, information about the Connection() object and any
3898optional
3899length information is passed to the region handler within the Context
3900parameter.
3901
3902AcpiBufferToResource: This interface converts a raw AML buffer containing
3903a
3904resource template or resource descriptor to the ACPI_RESOURCE internal
3905format
3906suitable for use by device drivers. Can be used by an operation region
3907handler
3908to convert the Connection() buffer object into a ACPI_RESOURCE.
3909
3910Miscellaneous/Tools/TestSuites:
3911-------------------------------
3912
3913Support for extended _HID names (Four alpha characters instead of three).
3914Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
3915Support for ACPI 5.0 features in the ASLTS test suite.
3916Fully updated documentation (ACPICA and iASL reference documents.)
3917
3918ACPI Table Definition Language:
3919-------------------------------
3920
3921Support for this language was implemented and released as a subsystem of
3922the
3923iASL compiler in 2010. (See the iASL compiler User Guide.)
3924
3925
3926Non-ACPI 5.0 changes for this release:
3927--------------------------------------
3928
39291) ACPICA Core Subsystem:
3930
3931Fix a problem with operation region declarations where a failure can
3932occur
3933if
3934the region name and an argument that evaluates to an object (such as the
3935region address) are in different namespace scopes. Lin Ming, ACPICA BZ
3936937.
3937
3938Do not abort an ACPI table load if an invalid space ID is found within.
3939This
3940will be caught later if the offending method is executed. ACPICA BZ 925.
3941
3942Fixed an issue with the FFixedHW space ID where the ID was not always
3943recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
3944
3945Fixed a problem with the 32-bit generation of the unix-specific OSL
3946(osunixxf.c). Lin Ming, ACPICA BZ 936.
3947
3948Several changes made to enable generation with the GCC 4.6 compiler.
3949ACPICA BZ
3950935.
3951
3952New error messages: Unsupported I/O requests (not 8/16/32 bit), and
3953Index/Bank
3954field registers out-of-range.
3955
39562) iASL Compiler/Disassembler and Tools:
3957
3958iASL: Implemented the __PATH__ operator, which returns the full pathname
3959of
3960the current source file.
3961
3962AcpiHelp: Automatically display expanded keyword information for all ASL
3963operators.
3964
3965Debugger: Add "Template" command to disassemble/dump resource template
3966buffers.
3967
3968Added a new master script to generate and execute the ASLTS test suite.
3969Automatically handles 32- and 64-bit generation. See tests/aslts.sh
3970
3971iASL: Fix problem with listing generation during processing of the
3972Switch()
3973operator where AML listing was disabled until the entire Switch block was
3974completed.
3975
3976iASL: Improve support for semicolon statement terminators. Fix "invalid
3977character" message for some cases when the semicolon is used. Semicolons
3978are
3979now allowed after every <Term> grammar element. ACPICA BZ 927.
3980
3981iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
3982923.
3983
3984Disassembler: Fix problem with disassembly of the DataTableRegion
3985operator
3986where an inadvertent "Unhandled deferred opcode" message could be
3987generated.
3988
39893) Example Code and Data Size
3990
3991These are the sizes for the OS-independent acpica.lib produced by the
3992Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3993includes the debug output trace mechanism and has a much larger code and
3994data
3995size.
3996
3997  Previous Release:
3998    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3999    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4000  Current Release:
4001    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
4002    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
4003
4004----------------------------------------
400522 September 2011. Summary of changes for version 20110922:
4006
40070) ACPI 5.0 News:
4008
4009Support for ACPI 5.0 in ACPICA has been underway for several months and
4010will
4011be released at the same time that ACPI 5.0 is officially released.
4012
4013The ACPI 5.0 specification is on track for release in the next few
4014months.
4015
40161) ACPICA Core Subsystem:
4017
4018Fixed a problem where the maximum sleep time for the Sleep() operator was
4019intended to be limited to two seconds, but was inadvertently limited to
402020
4021seconds instead.
4022
4023Linux and Unix makefiles: Added header file dependencies to ensure
4024correct
4025generation of ACPICA core code and utilities. Also simplified the
4026makefiles
4027considerably through the use of the vpath variable to specify search
4028paths.
4029ACPICA BZ 924.
4030
40312) iASL Compiler/Disassembler and Tools:
4032
4033iASL: Implemented support to check the access length for all fields
4034created to
4035access named Resource Descriptor fields. For example, if a resource field
4036is
4037defined to be two bits, a warning is issued if a CreateXxxxField() is
4038used
4039with an incorrect bit length. This is implemented for all current
4040resource
4041descriptor names. ACPICA BZ 930.
4042
4043Disassembler: Fixed a byte ordering problem with the output of 24-bit and
404456-
4045bit integers.
4046
4047iASL: Fixed a couple of issues associated with variable-length package
4048objects. 1) properly handle constants like One, Ones, Zero -- do not make
4049a
4050VAR_PACKAGE when these are used as a package length. 2) Allow the
4051VAR_PACKAGE
4052opcode (in addition to PACKAGE) when validating object types for
4053predefined
4054names.
4055
4056iASL: Emit statistics for all output files (instead of just the ASL input
4057and
4058AML output). Includes listings, hex files, etc.
4059
4060iASL: Added -G option to the table compiler to allow the compilation of
4061custom
4062ACPI tables. The only part of a table that is required is the standard
406336-
4064byte
4065ACPI header.
4066
4067AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
4068headers),
4069which also adds correct 64-bit support. Also, now all output filenames
4070are
4071completely lower case.
4072
4073AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
4074loading table files. A warning is issued for any such tables. The only
4075exception is an FADT. This also fixes a possible fault when attempting to
4076load
4077non-AML tables. ACPICA BZ 932.
4078
4079AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
4080a
4081missing table terminator could cause a fault when using the -p option.
4082
4083AcpiSrc: Fixed a possible divide-by-zero fault when generating file
4084statistics.
4085
40863) Example Code and Data Size
4087
4088These are the sizes for the OS-independent acpica.lib produced by the
4089Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
4090includes the debug output trace mechanism and has a much larger code and
4091data
4092size.
4093
4094  Previous Release (VC 9.0):
4095    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4096    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4097  Current Release (VC 9.0):
4098    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4099    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4100
4101
4102----------------------------------------
410323 June 2011. Summary of changes for version 20110623:
4104
41051) ACPI CA Core Subsystem:
4106
4107Updated the predefined name repair mechanism to not attempt repair of a
4108_TSS
4109return object if a _PSS object is present. We can only sort the _TSS
4110return
4111package if there is no _PSS within the same scope. This is because if
4112_PSS
4113is
4114present, the ACPI specification dictates that the _TSS Power Dissipation
4115field
4116is to be ignored, and therefore some BIOSs leave garbage values in the
4117_TSS
4118Power field(s). In this case, it is best to just return the _TSS package
4119as-
4120is. Reported by, and fixed with assistance from Fenghua Yu.
4121
4122Added an option to globally disable the control method return value
4123validation
4124and repair. This runtime option can be used to disable return value
4125repair
4126if
4127this is causing a problem on a particular machine. Also added an option
4128to
4129AcpiExec (-dr) to set this disable flag.
4130
4131All makefiles and project files: Major changes to improve generation of
4132ACPICA
4133tools. ACPICA BZ 912:
4134    Reduce default optimization levels to improve compatibility
4135    For Linux, add strict-aliasing=0 for gcc 4
4136    Cleanup and simplify use of command line defines
4137    Cleanup multithread library support
4138    Improve usage messages
4139
4140Linux-specific header: update handling of THREAD_ID and pthread. For the
414132-
4142bit case, improve casting to eliminate possible warnings, especially with
4143the
4144acpica tools.
4145
4146Example Code and Data Size: These are the sizes for the OS-independent
4147acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4148debug
4149version of the code includes the debug output trace mechanism and has a
4150much
4151larger code and data size.
4152
4153  Previous Release (VC 9.0):
4154    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
4155    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4156  Current Release (VC 9.0):
4157    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4158    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4159
41602) iASL Compiler/Disassembler and Tools:
4161
4162With this release, a new utility named "acpihelp" has been added to the
4163ACPICA
4164package. This utility summarizes the ACPI specification chapters for the
4165ASL
4166and AML languages. It generates under Linux/Unix as well as Windows, and
4167provides the following functionality:
4168    Find/display ASL operator(s) -- with description and syntax.
4169    Find/display ASL keyword(s) -- with exact spelling and descriptions.
4170    Find/display ACPI predefined name(s) -- with description, number
4171        of arguments, and the return value data type.
4172    Find/display AML opcode name(s) -- with opcode, arguments, and
4173grammar.
4174    Decode/display AML opcode -- with opcode name, arguments, and
4175grammar.
4176
4177Service Layers: Make multi-thread support configurable. Conditionally
4178compile
4179the multi-thread support so that threading libraries will not be linked
4180if
4181not
4182necessary. The only tool that requires multi-thread support is AcpiExec.
4183
4184iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
4185of
4186Bison appear to want the interface to yyerror to be a const char * (or at
4187least this is a problem when generating iASL on some systems.) ACPICA BZ
4188923
4189Pierre Lejeune.
4190
4191Tools: Fix for systems where O_BINARY is not defined. Only used for
4192Windows
4193versions of the tools.
4194
4195----------------------------------------
419627 May 2011. Summary of changes for version 20110527:
4197
41981) ACPI CA Core Subsystem:
4199
4200ASL Load() operator: Reinstate most restrictions on the incoming ACPI
4201table
4202signature. Now, only allow SSDT, OEMx, and a null signature. History:
4203    1) Originally, we checked the table signature for "SSDT" or "PSDT".
4204       (PSDT is now obsolete.)
4205    2) We added support for OEMx tables, signature "OEM" plus a fourth
4206       "don't care" character.
4207    3) Valid tables were encountered with a null signature, so we just
4208       gave up on validating the signature, (05/2008).
4209    4) We encountered non-AML tables such as the MADT, which caused
4210       interpreter errors and kernel faults. So now, we once again allow
4211       only SSDT, OEMx, and now, also a null signature. (05/2011).
4212
4213Added the missing _TDL predefined name to the global name list in order
4214to
4215enable validation. Affects both the core ACPICA code and the iASL
4216compiler.
4217
4218Example Code and Data Size: These are the sizes for the OS-independent
4219acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4220debug
4221version of the code includes the debug output trace mechanism and has a
4222much
4223larger code and data size.
4224
4225  Previous Release (VC 9.0):
4226    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
4227    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
4228  Current Release (VC 9.0):
4229    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
4230    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4231
42322) iASL Compiler/Disassembler and Tools:
4233
4234Debugger/AcpiExec: Implemented support for "complex" method arguments on
4235the
4236debugger command line. This adds support beyond simple integers --
4237including
4238Strings, Buffers, and Packages. Includes support for nested packages.
4239Increased the default command line buffer size to accommodate these
4240arguments.
4241See the ACPICA reference for details and syntax. ACPICA BZ 917.
4242
4243Debugger/AcpiExec: Implemented support for "default" method arguments for
4244the
4245Execute/Debug command. Now, the debugger will always invoke a control
4246method
4247with the required number of arguments -- even if the command line
4248specifies
4249none or insufficient arguments. It uses default integer values for any
4250missing
4251arguments. Also fixes a bug where only six method arguments maximum were
4252supported instead of the required seven.
4253
4254Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
4255and
4256also return status in order to prevent buffer overruns. See the ACPICA
4257reference for details and syntax. ACPICA BZ 921
4258
4259iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
4260makefiles to simplify support for the two different but similar parser
4261generators, bison and yacc.
4262
4263Updated the generic unix makefile for gcc 4. The default gcc version is
4264now
4265expected to be 4 or greater, since options specific to gcc 4 are used.
4266
4267----------------------------------------
426813 April 2011. Summary of changes for version 20110413:
4269
42701) ACPI CA Core Subsystem:
4271
4272Implemented support to execute a so-called "orphan" _REG method under the
4273EC
4274device. This change will force the execution of a _REG method underneath
4275the
4276EC
4277device even if there is no corresponding operation region of type
4278EmbeddedControl. Fixes a problem seen on some machines and apparently is
4279compatible with Windows behavior. ACPICA BZ 875.
4280
4281Added more predefined methods that are eligible for automatic NULL
4282package
4283element removal. This change adds another group of predefined names to
4284the
4285list
4286of names that can be repaired by having NULL package elements dynamically
4287removed. This group are those methods that return a single variable-
4288length
4289package containing simple data types such as integers, buffers, strings.
4290This
4291includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
4292_PSL,
4293_Sx,
4294and _TZD. ACPICA BZ 914.
4295
4296Split and segregated all internal global lock functions to a new file,
4297evglock.c.
4298
4299Updated internal address SpaceID for DataTable regions. Moved this
4300internal
4301space
4302id in preparation for ACPI 5.0 changes that will include some new space
4303IDs.
4304This
4305change should not affect user/host code.
4306
4307Example Code and Data Size: These are the sizes for the OS-independent
4308acpica.lib
4309produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
4310version of
4311the code includes the debug output trace mechanism and has a much larger
4312code
4313and
4314data size.
4315
4316  Previous Release (VC 9.0):
4317    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
4318    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
4319  Current Release (VC 9.0):
4320    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
4321    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
4322
43232) iASL Compiler/Disassembler and Tools:
4324
4325iASL/DTC: Major update for new grammar features. Allow generic data types
4326in
4327custom ACPI tables. Field names are now optional. Any line can be split
4328to
4329multiple lines using the continuation char (\). Large buffers now use
4330line-
4331continuation character(s) and no colon on the continuation lines. See the
4332grammar
4333update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
4334Moore.
4335
4336iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
4337statements.
4338Since the parser stuffs a "zero" as the return value for these statements
4339(due
4340to
4341the underlying AML grammar), they were seen as "return with value" by the
4342iASL
4343semantic checking. They are now seen correctly as "null" return
4344statements.
4345
4346iASL: Check if a_REG declaration has a corresponding Operation Region.
4347Adds a
4348check for each _REG to ensure that there is in fact a corresponding
4349operation
4350region declaration in the same scope. If not, the _REG method is not very
4351useful
4352since it probably won't be executed. ACPICA BZ 915.
4353
4354iASL/DTC: Finish support for expression evaluation. Added a new
4355expression
4356parser
4357that implements c-style operator precedence and parenthesization. ACPICA
4358bugzilla
4359908.
4360
4361Disassembler/DTC: Remove support for () and <> style comments in data
4362tables.
4363Now
4364that DTC has full expression support, we don't want to have comment
4365strings
4366that
4367start with a parentheses or a less-than symbol. Now, only the standard /*
4368and
4369//
4370comments are supported, as well as the bracket [] comments.
4371
4372AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
4373"unusual"
4374headers in the acpidump file. Update the header validation to support
4375these
4376tables. Problem introduced in previous AcpiXtract version in the change
4377to
4378support "wrong checksum" error messages emitted by acpidump utility.
4379
4380iASL: Add a * option to generate all template files (as a synonym for
4381ALL)
4382as
4383in
4384"iasl -T *" or "iasl -T ALL".
4385
4386iASL/DTC: Do not abort compiler on fatal errors. We do not want to
4387completely
4388abort the compiler on "fatal" errors, simply should abort the current
4389compile.
4390This allows multiple compiles with a single (possibly wildcard) compiler
4391invocation.
4392
4393----------------------------------------
439416 March 2011. Summary of changes for version 20110316:
4395
43961) ACPI CA Core Subsystem:
4397
4398Fixed a problem caused by a _PRW method appearing at the namespace root
4399scope
4400during the setup of wake GPEs. A fault could occur if a _PRW directly
4401under
4402the
4403root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
4404
4405Implemented support for "spurious" Global Lock interrupts. On some
4406systems, a
4407global lock interrupt can occur without the pending flag being set. Upon
4408a
4409GL
4410interrupt, we now ensure that a thread is actually waiting for the lock
4411before
4412signaling GL availability. Rafael Wysocki, Bob Moore.
4413
4414Example Code and Data Size: These are the sizes for the OS-independent
4415acpica.lib
4416produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
4417version of
4418the code includes the debug output trace mechanism and has a much larger
4419code
4420and
4421data size.
4422
4423  Previous Release (VC 9.0):
4424    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4425    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4426  Current Release (VC 9.0):
4427    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
4428    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
4429
44302) iASL Compiler/Disassembler and Tools:
4431
4432Implemented full support for the "SLIC" ACPI table. Includes support in
4433the
4434header files, disassembler, table compiler, and template generator. Bob
4435Moore,
4436Lin Ming.
4437
4438AcpiXtract: Correctly handle embedded comments and messages from
4439AcpiDump.
4440Apparently some or all versions of acpidump will occasionally emit a
4441comment
4442like
4443"Wrong checksum", etc., into the dump file. This was causing problems for
4444AcpiXtract. ACPICA BZ 905.
4445
4446iASL: Fix the Linux makefile by removing an inadvertent double file
4447inclusion.
4448ACPICA BZ 913.
4449
4450AcpiExec: Update installation of operation region handlers. Install one
4451handler
4452for a user-defined address space. This is used by the ASL test suite
4453(ASLTS).
4454
4455----------------------------------------
445611 February 2011. Summary of changes for version 20110211:
4457
44581) ACPI CA Core Subsystem:
4459
4460Added a mechanism to defer _REG methods for some early-installed
4461handlers.
4462Most user handlers should be installed before call to
4463AcpiEnableSubsystem.
4464However, Event handlers and region handlers should be installed after
4465AcpiInitializeObjects. Override handlers for the "default" regions should
4466be
4467installed early, however. This change executes all _REG methods for the
4468default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
4469chicken/egg issues between them. ACPICA BZ 848.
4470
4471Implemented an optimization for GPE detection. This optimization will
4472simply
4473ignore GPE registers that contain no enabled GPEs -- there is no need to
4474read the register since this information is available internally. This
4475becomes more important on machines with a large GPE space. ACPICA
4476bugzilla
4477884. Lin Ming. Suggestion from Joe Liu.
4478
4479Removed all use of the highly unreliable FADT revision field. The
4480revision
4481number in the FADT has been found to be completely unreliable and cannot
4482be
4483trusted. Only the actual table length can be used to infer the version.
4484This
4485change updates the ACPICA core and the disassembler so that both no
4486longer
4487even look at the FADT version and instead depend solely upon the FADT
4488length.
4489
4490Fix an unresolved name issue for the no-debug and no-error-message source
4491generation cases. The _AcpiModuleName was left undefined in these cases,
4492but
4493it is actually needed as a parameter to some interfaces. Define
4494_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
4495
4496Split several large files (makefiles and project files updated)
4497  utglobal.c   -> utdecode.c
4498  dbcomds.c    -> dbmethod.c dbnames.c
4499  dsopcode.c   -> dsargs.c dscontrol.c
4500  dsload.c     -> dsload2.c
4501  aslanalyze.c -> aslbtypes.c aslwalks.c
4502
4503Example Code and Data Size: These are the sizes for the OS-independent
4504acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4505debug version of the code includes the debug output trace mechanism and
4506has
4507a much larger code and data size.
4508
4509  Previous Release (VC 9.0):
4510    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4511    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4512  Current Release (VC 9.0):
4513    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4514    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4515
45162) iASL Compiler/Disassembler and Tools:
4517
4518iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
4519These are useful C-style macros with the standard definitions. ACPICA
4520bugzilla 898.
4521
4522iASL/DTC: Added support for integer expressions and labels. Support for
4523full
4524expressions for all integer fields in all ACPI tables. Support for labels
4525in
4526"generic" portions of tables such as UEFI. See the iASL reference manual.
4527
4528Debugger: Added a command to display the status of global handlers. The
4529"handlers" command will display op region, fixed event, and miscellaneous
4530global handlers. installation status -- and for op regions, whether
4531default
4532or user-installed handler will be used.
4533
4534iASL: Warn if reserved method incorrectly returns a value. Many
4535predefined
4536names are defined such that they do not return a value. If implemented as
4537a
4538method, issue a warning if such a name explicitly returns a value. ACPICA
4539Bugzilla 855.
4540
4541iASL: Added detection of GPE method name conflicts. Detects a conflict
4542where
4543there are two GPE methods of the form _Lxy and _Exy in the same scope.
4544(For
4545example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
4546
4547iASL/DTC: Fixed a couple input scanner issues with comments and line
4548numbers. Comment remover could get confused and miss a comment ending.
4549Fixed
4550a problem with line counter maintenance.
4551
4552iASL/DTC: Reduced the severity of some errors from fatal to error. There
4553is
4554no need to abort on simple errors within a field definition.
4555
4556Debugger: Simplified the output of the help command. All help output now
4557in
4558a single screen, instead of help subcommands. ACPICA Bugzilla 897.
4559
4560----------------------------------------
456112 January 2011. Summary of changes for version 20110112:
4562
45631) ACPI CA Core Subsystem:
4564
4565Fixed a race condition between method execution and namespace walks that
4566can
4567possibly cause a fault. The problem was apparently introduced in version
456820100528 as a result of a performance optimization that reduces the
4569number
4570of
4571namespace walks upon method exit by using the delete_namespace_subtree
4572function instead of the delete_namespace_by_owner function used
4573previously.
4574Bug is a missing namespace lock in the delete_namespace_subtree function.
4575dana.myers@oracle.com
4576
4577Fixed several issues and a possible fault with the automatic "serialized"
4578method support. History: This support changes a method to "serialized" on
4579the
4580fly if the method generates an AE_ALREADY_EXISTS error, indicating the
4581possibility that it cannot handle reentrancy. This fix repairs a couple
4582of
4583issues seen in the field, especially on machines with many cores:
4584
4585    1) Delete method children only upon the exit of the last thread,
4586       so as to not delete objects out from under other running threads
4587      (and possibly causing a fault.)
4588    2) Set the "serialized" bit for the method only upon the exit of the
4589       Last thread, so as to not cause deadlock when running threads
4590       attempt to exit.
4591    3) Cleanup the use of the AML "MethodFlags" and internal method flags
4592       so that there is no longer any confusion between the two.
4593
4594    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
4595
4596Debugger: Now lock the namespace for duration of a namespace dump.
4597Prevents
4598issues if the namespace is changing dynamically underneath the debugger.
4599Especially affects temporary namespace nodes, since the debugger displays
4600these also.
4601
4602Updated the ordering of include files. The ACPICA headers should appear
4603before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
4604set
4605any necessary compiler-specific defines, etc. Affects the ACPI-related
4606tools
4607and utilities.
4608
4609Updated all ACPICA copyrights and signons to 2011. Added the 2011
4610copyright
4611to all module headers and signons, including the Linux header. This
4612affects
4613virtually every file in the ACPICA core subsystem, iASL compiler, and all
4614utilities.
4615
4616Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
4617project files for VC++ 6.0 are now obsolete. New project files can be
4618found
4619under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
4620details.
4621
4622Example Code and Data Size: These are the sizes for the OS-independent
4623acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4624debug version of the code includes the debug output trace mechanism and
4625has a
4626much larger code and data size.
4627
4628  Previous Release (VC 6.0):
4629    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
4630    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
4631  Current Release (VC 9.0):
4632    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4633    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4634
46352) iASL Compiler/Disassembler and Tools:
4636
4637iASL: Added generic data types to the Data Table compiler. Add "generic"
4638data
4639types such as UINT32, String, Unicode, etc., to simplify the generation
4640of
4641platform-defined tables such as UEFI. Lin Ming.
4642
4643iASL: Added listing support for the Data Table Compiler. Adds listing
4644support
4645(-l) to display actual binary output for each line of input code.
4646
4647----------------------------------------
464809 December 2010. Summary of changes for version 20101209:
4649
46501) ACPI CA Core Subsystem:
4651
4652Completed the major overhaul of the GPE support code that was begun in
4653July
46542010. Major features include: removal of _PRW execution in ACPICA (host
4655executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
4656changes to existing interfaces, simplification of GPE handler operation,
4657and
4658a handful of new interfaces:
4659
4660    AcpiUpdateAllGpes
4661    AcpiFinishGpe
4662    AcpiSetupGpeForWake
4663    AcpiSetGpeWakeMask
4664    One new file, evxfgpe.c to consolidate all external GPE interfaces.
4665
4666See the ACPICA Programmer Reference for full details and programming
4667information. See the new section 4.4 "General Purpose Event (GPE)
4668Support"
4669for a full overview, and section 8.7 "ACPI General Purpose Event
4670Management"
4671for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
4672Ming,
4673Bob Moore, Rafael Wysocki.
4674
4675Implemented a new GPE feature for Windows compatibility, the "Implicit
4676Wake
4677GPE Notify". This feature will automatically issue a Notify(2) on a
4678device
4679when a Wake GPE is received if there is no corresponding GPE method or
4680handler. ACPICA BZ 870.
4681
4682Fixed a problem with the Scope() operator during table parse and load
4683phase.
4684During load phase (table load or method execution), the scope operator
4685should
4686not enter the target into the namespace. Instead, it should open a new
4687scope
4688at the target location. Linux BZ 19462, ACPICA BZ 882.
4689
4690Example Code and Data Size: These are the sizes for the OS-independent
4691acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4692debug version of the code includes the debug output trace mechanism and
4693has a
4694much larger code and data size.
4695
4696  Previous Release:
4697    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
4698    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
4699  Current Release:
4700    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4701    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4702
47032) iASL Compiler/Disassembler and Tools:
4704
4705iASL: Relax the alphanumeric restriction on _CID strings. These strings
4706are
4707"bus-specific" per the ACPI specification, and therefore any characters
4708are
4709acceptable. The only checks that can be performed are for a null string
4710and
4711perhaps for a leading asterisk. ACPICA BZ 886.
4712
4713iASL: Fixed a problem where a syntax error that caused a premature EOF
4714condition on the source file emitted a very confusing error message. The
4715premature EOF is now detected correctly. ACPICA BZ 891.
4716
4717Disassembler: Decode the AccessSize within a Generic Address Structure
4718(byte
4719access, word access, etc.) Note, this field does not allow arbitrary bit
4720access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
4721
4722New: AcpiNames utility - Example namespace dump utility. Shows an example
4723of
4724ACPICA configuration for a minimal namespace dump utility. Uses table and
4725namespace managers, but no AML interpreter. Does not add any
4726functionality
4727over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
4728partition and configure ACPICA. ACPICA BZ 883.
4729
4730AML Debugger: Increased the debugger buffer size for method return
4731objects.
4732Was 4K, increased to 16K. Also enhanced error messages for debugger
4733method
4734execution, including the buffer overflow case.
4735
4736----------------------------------------
473713 October 2010. Summary of changes for version 20101013:
4738
47391) ACPI CA Core Subsystem:
4740
4741Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
4742now
4743clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
4744HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
4745
4746Changed the type of the predefined namespace object _TZ from ThermalZone
4747to
4748Device. This was found to be confusing to the host software that
4749processes
4750the various thermal zones, since _TZ is not really a ThermalZone.
4751However,
4752a
4753Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
4754Zhang.
4755
4756Added Windows Vista SP2 to the list of supported _OSI strings. The actual
4757string is "Windows 2006 SP2".
4758
4759Eliminated duplicate code in AcpiUtExecute* functions. Now that the
4760nsrepair
4761code automatically repairs _HID-related strings, this type of code is no
4762longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
4763878.
4764
4765Example Code and Data Size: These are the sizes for the OS-independent
4766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4767debug version of the code includes the debug output trace mechanism and
4768has a
4769much larger code and data size.
4770
4771  Previous Release:
4772    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4773    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4774  Current Release:
4775    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4776    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4777
47782) iASL Compiler/Disassembler and Tools:
4779
4780iASL: Implemented additional compile-time validation for _HID strings.
4781The
4782non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
4783length
4784of
4785the string must be exactly seven or eight characters. For both _HID and
4786_CID
4787strings, all characters must be alphanumeric. ACPICA BZ 874.
4788
4789iASL: Allow certain "null" resource descriptors. Some BIOS code creates
4790descriptors that are mostly or all zeros, with the expectation that they
4791will
4792be filled in at runtime. iASL now allows this as long as there is a
4793"resource
4794tag" (name) associated with the descriptor, which gives the ASL a handle
4795needed to modify the descriptor. ACPICA BZ 873.
4796
4797Added single-thread support to the generic Unix application OSL.
4798Primarily
4799for iASL support, this change removes the use of semaphores in the
4800single-
4801threaded ACPICA tools/applications - increasing performance. The
4802_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
4803option. ACPICA BZ 879.
4804
4805AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
4806support
4807for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
4808
4809iASL: Moved all compiler messages to a new file, aslmessages.h.
4810
4811----------------------------------------
481215 September 2010. Summary of changes for version 20100915:
4813
48141) ACPI CA Core Subsystem:
4815
4816Removed the AcpiOsDerivePciId OSL interface. The various host
4817implementations
4818of this function were not OS-dependent and are now obsolete and can be
4819removed from all host OSLs. This function has been replaced by
4820AcpiHwDerivePciId, which is now part of the ACPICA core code.
4821AcpiHwDerivePciId has been implemented without recursion. Adds one new
4822module, hwpci.c. ACPICA BZ 857.
4823
4824Implemented a dynamic repair for _HID and _CID strings. The following
4825problems are now repaired at runtime: 1) Remove a leading asterisk in the
4826string, and 2) the entire string is uppercased. Both repairs are in
4827accordance with the ACPI specification and will simplify host driver
4828code.
4829ACPICA BZ 871.
4830
4831The ACPI_THREAD_ID type is no longer configurable, internally it is now
4832always UINT64. This simplifies the ACPICA code, especially any printf
4833output.
4834UINT64 is the only common data type for all thread_id types across all
4835operating systems. It is now up to the host OSL to cast the native
4836thread_id
4837type to UINT64 before returning the value to ACPICA (via
4838AcpiOsGetThreadId).
4839Lin Ming, Bob Moore.
4840
4841Added the ACPI_INLINE type to enhance the ACPICA configuration. The
4842"inline"
4843keyword is not standard across compilers, and this type allows inline to
4844be
4845configured on a per-compiler basis. Lin Ming.
4846
4847Made the system global AcpiGbl_SystemAwakeAndRunning publically
4848available.
4849Added an extern for this boolean in acpixf.h. Some hosts utilize this
4850value
4851during suspend/restore operations. ACPICA BZ 869.
4852
4853All code that implements error/warning messages with the "ACPI:" prefix
4854has
4855been moved to a new module, utxferror.c.
4856
4857The UINT64_OVERLAY was moved to utmath.c, which is the only module where
4858it
4859is used. ACPICA BZ 829. Lin Ming, Bob Moore.
4860
4861Example Code and Data Size: These are the sizes for the OS-independent
4862acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4863debug version of the code includes the debug output trace mechanism and
4864has a
4865much larger code and data size.
4866
4867  Previous Release:
4868    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4869    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4870  Current Release:
4871    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4872    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4873
48742) iASL Compiler/Disassembler and Tools:
4875
4876iASL/Disassembler: Write ACPI errors to stderr instead of the output
4877file.
4878This keeps the output files free of random error messages that may
4879originate
4880from within the namespace/interpreter code. Used this opportunity to
4881merge
4882all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
4883866. Lin Ming, Bob Moore.
4884
4885Tools: update some printfs for ansi warnings on size_t. Handle width
4886change
4887of size_t on 32-bit versus 64-bit generations. Lin Ming.
4888
4889----------------------------------------
489006 August 2010. Summary of changes for version 20100806:
4891
48921) ACPI CA Core Subsystem:
4893
4894Designed and implemented a new host interface to the _OSI support code.
4895This
4896will allow the host to dynamically add or remove multiple _OSI strings,
4897as
4898well as install an optional handler that is called for each _OSI
4899invocation.
4900Also added a new AML debugger command, 'osi' to display and modify the
4901global
4902_OSI string table, and test support in the AcpiExec utility. See the
4903ACPICA
4904reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
4905New Functions:
4906    AcpiInstallInterface - Add an _OSI string.
4907    AcpiRemoveInterface - Delete an _OSI string.
4908    AcpiInstallInterfaceHandler - Install optional _OSI handler.
4909Obsolete Functions:
4910    AcpiOsValidateInterface - no longer used.
4911New Files:
4912    source/components/utilities/utosi.c
4913
4914Re-introduced the support to enable multi-byte transfers for Embedded
4915Controller (EC) operation regions. A reported problem was found to be a
4916bug
4917in the host OS, not in the multi-byte support. Previously, the maximum
4918data
4919size passed to the EC operation region handler was a single byte. There
4920are
4921often EC Fields larger than one byte that need to be transferred, and it
4922is
4923useful for the EC driver to lock these as a single transaction. This
4924change
4925enables single transfers larger than 8 bits. This effectively changes the
4926access to the EC space from ByteAcc to AnyAcc, and will probably require
4927changes to the host OS Embedded Controller driver to enable 16/32/64/256-
4928bit
4929transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
4930
4931Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
4932prototype in acpiosxf.h had the output value pointer as a (void *).
4933It should be a (UINT64 *). This may affect some host OSL code.
4934
4935Fixed a couple problems with the recently modified Linux makefiles for
4936iASL
4937and AcpiExec. These new makefiles place the generated object files in the
4938local directory so that there can be no collisions between the files that
4939are
4940shared between them that are compiled with different options.
4941
4942Example Code and Data Size: These are the sizes for the OS-independent
4943acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4944debug version of the code includes the debug output trace mechanism and
4945has a
4946much larger code and data size.
4947
4948  Previous Release:
4949    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4950    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
4951  Current Release:
4952    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4953    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4954
49552) iASL Compiler/Disassembler and Tools:
4956
4957iASL/Disassembler: Added a new option (-da, "disassemble all") to load
4958the
4959namespace from and disassemble an entire group of AML files. Useful for
4960loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
4961and
4962disassembling with one simple command. ACPICA BZ 865. Lin Ming.
4963
4964iASL: Allow multiple invocations of -e option. This change allows
4965multiple
4966uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
4967834.
4968Lin Ming.
4969
4970----------------------------------------
497102 July 2010. Summary of changes for version 20100702:
4972
49731) ACPI CA Core Subsystem:
4974
4975Implemented several updates to the recently added GPE reference count
4976support. The model for "wake" GPEs is changing to give the host OS
4977complete
4978control of these GPEs. Eventually, the ACPICA core will not execute any
4979_PRW
4980methods, since the host already must execute them. Also, additional
4981changes
4982were made to help ensure that the reference counts are kept in proper
4983synchronization with reality. Rafael J. Wysocki.
4984
49851) Ensure that GPEs are not enabled twice during initialization.
49862) Ensure that GPE enable masks stay in sync with the reference count.
49873) Do not inadvertently enable GPEs when writing GPE registers.
49884) Remove the internal wake reference counter and add new AcpiGpeWakeup
4989interface. This interface will set or clear individual GPEs for wakeup.
49905) Remove GpeType argument from AcpiEnable and AcpiDisable. These
4991interfaces
4992are now used for "runtime" GPEs only.
4993
4994Changed the behavior of the GPE install/remove handler interfaces. The
4995GPE
4996is
4997no longer disabled during this process, as it was found to cause problems
4998on
4999some machines. Rafael J. Wysocki.
5000
5001Reverted a change introduced in version 20100528 to enable Embedded
5002Controller multi-byte transfers. This change was found to cause problems
5003with
5004Index Fields and possibly Bank Fields. It will be reintroduced when these
5005problems have been resolved.
5006
5007Fixed a problem with references to Alias objects within Package Objects.
5008A
5009reference to an Alias within the definition of a Package was not always
5010resolved properly. Aliases to objects like Processors, Thermal zones,
5011etc.
5012were resolved to the actual object instead of a reference to the object
5013as
5014it
5015should be. Package objects are only allowed to contain integer, string,
5016buffer, package, and reference objects. Redhat bugzilla 608648.
5017
5018Example Code and Data Size: These are the sizes for the OS-independent
5019acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5020debug version of the code includes the debug output trace mechanism and
5021has a
5022much larger code and data size.
5023
5024  Previous Release:
5025    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5026    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
5027  Current Release:
5028    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5029    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
5030
50312) iASL Compiler/Disassembler and Tools:
5032
5033iASL: Implemented a new compiler subsystem to allow definition and
5034compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
5035These
5036are called "ACPI Data Tables", and the new compiler is the "Data Table
5037Compiler". This compiler is intended to simplify the existing error-prone
5038process of creating these tables for the BIOS, as well as allowing the
5039disassembly, modification, recompilation, and override of existing ACPI
5040data
5041tables. See the iASL User Guide for detailed information.
5042
5043iASL: Implemented a new Template Generator option in support of the new
5044Data
5045Table Compiler. This option will create examples of all known ACPI tables
5046that can be used as the basis for table development. See the iASL
5047documentation and the -T option.
5048
5049Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
5050Descriptor Table).
5051
5052Updated the Linux makefiles for iASL and AcpiExec to place the generated
5053object files in the local directory so that there can be no collisions
5054between the shared files between them that are generated with different
5055options.
5056
5057Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
5058Use
5059the #define __APPLE__ to enable this support.
5060
5061----------------------------------------
506228 May 2010. Summary of changes for version 20100528:
5063
5064Note: The ACPI 4.0a specification was released on April 5, 2010 and is
5065available at www.acpi.info. This is primarily an errata release.
5066
50671) ACPI CA Core Subsystem:
5068
5069Undefined ACPI tables: We are looking for the definitions for the
5070following
5071ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
5072
5073Implemented support to enable multi-byte transfers for Embedded
5074Controller
5075(EC) operation regions. Previously, the maximum data size passed to the
5076EC
5077operation region handler was a single byte. There are often EC Fields
5078larger
5079than one byte that need to be transferred, and it is useful for the EC
5080driver
5081to lock these as a single transaction. This change enables single
5082transfers
5083larger than 8 bits. This effectively changes the access to the EC space
5084from
5085ByteAcc to AnyAcc, and will probably require changes to the host OS
5086Embedded
5087Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
5088bit
5089transfers. Alexey Starikovskiy, Lin Ming
5090
5091Implemented a performance enhancement for namespace search and access.
5092This
5093change enhances the performance of namespace searches and walks by adding
5094a
5095backpointer to the parent in each namespace node. On large namespaces,
5096this
5097change can improve overall ACPI performance by up to 9X. Adding a pointer
5098to
5099each namespace node increases the overall size of the internal namespace
5100by
5101about 5%, since each namespace entry usually consists of both a namespace
5102node and an ACPI operand object. However, this is the first growth of the
5103namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
5104
5105Implemented a performance optimization that reduces the number of
5106namespace
5107walks. On control method exit, only walk the namespace if the method is
5108known
5109to have created namespace objects outside of its local scope. Previously,
5110the
5111entire namespace was traversed on each control method exit. This change
5112can
5113improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
5114Moore.
5115
5116Added support to truncate I/O addresses to 16 bits for Windows
5117compatibility.
5118Some ASL code has been seen in the field that inadvertently has bits set
5119above bit 15. This feature is optional and is enabled if the BIOS
5120requests
5121any Windows OSI strings. It can also be enabled by the host OS. Matthew
5122Garrett, Bob Moore.
5123
5124Added support to limit the maximum time for the ASL Sleep() operator. To
5125prevent accidental deep sleeps, limit the maximum time that Sleep() will
5126actually sleep. Configurable, the default maximum is two seconds. ACPICA
5127bugzilla 854.
5128
5129Added run-time validation support for the _WDG and_WED Microsoft
5130predefined
5131methods. These objects are defined by "Windows Instrumentation", and are
5132not
5133part of the ACPI spec. ACPICA BZ 860.
5134
5135Expanded all statistic counters used during namespace and device
5136initialization from 16 to 32 bits in order to support very large
5137namespaces.
5138
5139Replaced all instances of %d in printf format specifiers with %u since
5140nearly
5141all integers in ACPICA are unsigned.
5142
5143Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
5144returned
5145as AE_NO_HANDLER.
5146
5147Example Code and Data Size: These are the sizes for the OS-independent
5148acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5149debug version of the code includes the debug output trace mechanism and
5150has a
5151much larger code and data size.
5152
5153  Previous Release:
5154    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
5155    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
5156  Current Release:
5157    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5158    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
5159
51602) iASL Compiler/Disassembler and Tools:
5161
5162iASL: Added compiler support for the _WDG and_WED Microsoft predefined
5163methods. These objects are defined by "Windows Instrumentation", and are
5164not
5165part of the ACPI spec. ACPICA BZ 860.
5166
5167AcpiExec: added option to disable the memory tracking mechanism. The -dt
5168option will disable the tracking mechanism, which improves performance
5169considerably.
5170
5171AcpiExec: Restructured the command line options into -d (disable) and -e
5172(enable) options.
5173
5174----------------------------------------
517528 April 2010. Summary of changes for version 20100428:
5176
51771) ACPI CA Core Subsystem:
5178
5179Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
5180including FADT-based and GPE Block Devices, execute any _PRW methods in
5181the
5182new table, and process any _Lxx/_Exx GPE methods in the new table. Any
5183runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
5184immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
5185Devices. Provides compatibility with other ACPI implementations. Two new
5186files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
5187Moore.
5188
5189Fixed a regression introduced in version 20100331 within the table
5190manager
5191where initial table loading could fail. This was introduced in the fix
5192for
5193AcpiReallocateRootTable. Also, renamed some of fields in the table
5194manager
5195data structures to clarify their meaning and use.
5196
5197Fixed a possible allocation overrun during internal object copy in
5198AcpiUtCopySimpleObject. The original code did not correctly handle the
5199case
5200where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
5201847.
5202
5203Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
5204possible access beyond end-of-allocation. Also, now fully validate
5205descriptor
5206(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
5207
5208Example Code and Data Size: These are the sizes for the OS-independent
5209acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5210debug version of the code includes the debug output trace mechanism and
5211has a
5212much larger code and data size.
5213
5214  Previous Release:
5215    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
5216    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
5217  Current Release:
5218    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
5219    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
5220
52212) iASL Compiler/Disassembler and Tools:
5222
5223iASL: Implemented Min/Max/Len/Gran validation for address resource
5224descriptors. This change implements validation for the address fields
5225that
5226are common to all address-type resource descriptors. These checks are
5227implemented: Checks for valid Min/Max, length within the Min/Max window,
5228valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
5229per
5230table 6-40 in the ACPI 4.0a specification. Also split the large
5231aslrestype1.c
5232and aslrestype2.c files into five new files. ACPICA BZ 840.
5233
5234iASL: Added support for the _Wxx predefined names. This support was
5235missing
5236and these names were not recognized by the compiler as valid predefined
5237names. ACPICA BZ 851.
5238
5239iASL: Added an error for all predefined names that are defined to return
5240no
5241value and thus must be implemented as Control Methods. These include all
5242of
5243the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
5244names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
5245
5246iASL: Implemented the -ts option to emit hex AML data in ASL format, as
5247an
5248ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
5249be
5250dynamically loaded via the Load() operator. Also cleaned up output for
5251the
5252-
5253ta and -tc options. ACPICA BZ 853.
5254
5255Tests: Added a new file with examples of extended iASL error checking.
5256Demonstrates the advanced error checking ability of the iASL compiler.
5257Available at tests/misc/badcode.asl.
5258
5259----------------------------------------
526031 March 2010. Summary of changes for version 20100331:
5261
52621) ACPI CA Core Subsystem:
5263
5264Completed a major update for the GPE support in order to improve support
5265for
5266shared GPEs and to simplify both host OS and ACPICA code. Added a
5267reference
5268count mechanism to support shared GPEs that require multiple device
5269drivers.
5270Several external interfaces have changed. One external interface has been
5271removed. One new external interface was added. Most of the GPE external
5272interfaces now use the GPE spinlock instead of the events mutex (and the
5273Flags parameter for many GPE interfaces has been removed.) See the
5274updated
5275ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
5276Rafael
5277Wysocki. ACPICA BZ 831.
5278
5279Changed:
5280    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
5281Removed:
5282    AcpiSetGpeType
5283New:
5284    AcpiSetGpe
5285
5286Implemented write support for DataTable operation regions. These regions
5287are
5288defined via the DataTableRegion() operator. Previously, only read support
5289was
5290implemented. The ACPI specification allows DataTableRegions to be
5291read/write,
5292however.
5293
5294Implemented a new subsystem option to force a copy of the DSDT to local
5295memory. Optionally copy the entire DSDT to local memory (instead of
5296simply
5297mapping it.) There are some (albeit very rare) BIOSs that corrupt or
5298replace
5299the original DSDT, creating the need for this option. Default is FALSE,
5300do
5301not copy the DSDT.
5302
5303Implemented detection of a corrupted or replaced DSDT. This change adds
5304support to detect a DSDT that has been corrupted and/or replaced from
5305outside
5306the OS (by firmware). This is typically catastrophic for the system, but
5307has
5308been seen on some machines. Once this problem has been detected, the DSDT
5309copy option can be enabled via system configuration. Lin Ming, Bob Moore.
5310
5311Fixed two problems with AcpiReallocateRootTable during the root table
5312copy.
5313When copying the root table to the new allocation, the length used was
5314incorrect. The new size was used instead of the current table size,
5315meaning
5316too much data was copied. Also, the count of available slots for ACPI
5317tables
5318was not set correctly. Alexey Starikovskiy, Bob Moore.
5319
5320Example Code and Data Size: These are the sizes for the OS-independent
5321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5322debug version of the code includes the debug output trace mechanism and
5323has a
5324much larger code and data size.
5325
5326  Previous Release:
5327    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
5328    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
5329  Current Release:
5330    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
5331    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
5332
53332) iASL Compiler/Disassembler and Tools:
5334
5335iASL: Implement limited typechecking for values returned from predefined
5336control methods. The type of any returned static (unnamed) object is now
5337validated. For example, Return(1). ACPICA BZ 786.
5338
5339iASL: Fixed a predefined name object verification regression. Fixes a
5340problem
5341introduced in version 20100304. An error is incorrectly generated if a
5342predefined name is declared as a static named object with a value defined
5343using the keywords "Zero", "One", or "Ones". Lin Ming.
5344
5345iASL: Added Windows 7 support for the -g option (get local ACPI tables)
5346by
5347reducing the requested registry access rights. ACPICA BZ 842.
5348
5349Disassembler: fixed a possible fault when generating External()
5350statements.
5351Introduced in commit ae7d6fd: Properly handle externals with parent-
5352prefix
5353(carat). Fixes a string length allocation calculation. Lin Ming.
5354
5355----------------------------------------
535604 March 2010. Summary of changes for version 20100304:
5357
53581) ACPI CA Core Subsystem:
5359
5360Fixed a possible problem with the AML Mutex handling function
5361AcpiExReleaseMutex where the function could fault under the very rare
5362condition when the interpreter has blocked, the interpreter lock is
5363released,
5364the interpreter is then reentered via the same thread, and attempts to
5365acquire an AML mutex that was previously acquired. FreeBSD report 140979.
5366Lin
5367Ming.
5368
5369Implemented additional configuration support for the AML "Debug Object".
5370Output from the debug object can now be enabled via a global variable,
5371AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
5372debugging.
5373This debug output is now available in the release version of ACPICA
5374instead
5375of just the debug version. Also, the entire debug output module can now
5376be
5377configured out of the ACPICA build if desired. One new file added,
5378executer/exdebug.c. Lin Ming, Bob Moore.
5379
5380Added header support for the ACPI MCHI table (Management Controller Host
5381Interface Table). This table was added in ACPI 4.0, but the defining
5382document
5383has only recently become available.
5384
5385Standardized output of integer values for ACPICA warnings/errors. Always
5386use
53870x prefix for hex output, always use %u for unsigned integer decimal
5388output.
5389Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
5390400
5391invocations.) These invocations were converted from the original
5392ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
5393
5394Example Code and Data Size: These are the sizes for the OS-independent
5395acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5396debug version of the code includes the debug output trace mechanism and
5397has a
5398much larger code and data size.
5399
5400  Previous Release:
5401    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
5402    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
5403  Current Release:
5404    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
5405    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
5406
54072) iASL Compiler/Disassembler and Tools:
5408
5409iASL: Implemented typechecking support for static (non-control method)
5410predefined named objects that are declared with the Name() operator. For
5411example, the type of this object is now validated to be of type Integer:
5412Name(_BBN, 1). This change migrates the compiler to using the core
5413predefined
5414name table instead of maintaining a local version. Added a new file,
5415aslpredef.c. ACPICA BZ 832.
5416
5417Disassembler: Added support for the ACPI 4.0 MCHI table.
5418
5419----------------------------------------
542021 January 2010. Summary of changes for version 20100121:
5421
54221) ACPI CA Core Subsystem:
5423
5424Added the 2010 copyright to all module headers and signons. This affects
5425virtually every file in the ACPICA core subsystem, the iASL compiler, the
5426tools/utilities, and the test suites.
5427
5428Implemented a change to the AcpiGetDevices interface to eliminate
5429unnecessary
5430invocations of the _STA method. In the case where a specific _HID is
5431requested, do not run _STA until a _HID match is found. This eliminates
5432potentially dozens of _STA calls during a search for a particular
5433device/HID,
5434which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
5435
5436Implemented an additional repair for predefined method return values.
5437Attempt
5438to repair unexpected NULL elements within returned Package objects.
5439Create
5440an
5441Integer of value zero, a NULL String, or a zero-length Buffer as
5442appropriate.
5443ACPICA BZ 818. Lin Ming, Bob Moore.
5444
5445Removed the obsolete ACPI_INTEGER data type. This type was introduced as
5446the
5447code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
5448(with
544964-bit AML integers). It is now obsolete and this change removes it from
5450the
5451ACPICA code base, replaced by UINT64. The original typedef has been
5452retained
5453for now for compatibility with existing device driver code. ACPICA BZ
5454824.
5455
5456Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
5457in
5458the parse tree object.
5459
5460Added additional warning options for the gcc-4 generation. Updated the
5461source
5462accordingly. This includes some code restructuring to eliminate
5463unreachable
5464code, elimination of some gotos, elimination of unused return values,
5465some
5466additional casting, and removal of redundant declarations.
5467
5468Example Code and Data Size: These are the sizes for the OS-independent
5469acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5470debug version of the code includes the debug output trace mechanism and
5471has a
5472much larger code and data size.
5473
5474  Previous Release:
5475    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
5476    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
5477  Current Release:
5478    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
5479    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
5480
54812) iASL Compiler/Disassembler and Tools:
5482
5483No functional changes for this release.
5484
5485----------------------------------------
548614 December 2009. Summary of changes for version 20091214:
5487
54881) ACPI CA Core Subsystem:
5489
5490Enhanced automatic data type conversions for predefined name repairs.
5491This
5492change expands the automatic repairs/conversions for predefined name
5493return
5494values to make Integers, Strings, and Buffers fully interchangeable.
5495Also,
5496a
5497Buffer can be converted to a Package of Integers if necessary. The
5498nsrepair.c
5499module was completely restructured. Lin Ming, Bob Moore.
5500
5501Implemented automatic removal of null package elements during predefined
5502name
5503repairs. This change will automatically remove embedded and trailing NULL
5504package elements from returned package objects that are defined to
5505contain
5506a
5507variable number of sub-packages. The driver is then presented with a
5508package
5509with no null elements to deal with. ACPICA BZ 819.
5510
5511Implemented a repair for the predefined _FDE and _GTM names. The expected
5512return value for both names is a Buffer of 5 DWORDs. This repair fixes
5513two
5514possible problems (both seen in the field), where a package of integers
5515is
5516returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
5517Kim.
5518
5519Implemented additional module-level code support. This change will
5520properly
5521execute module-level code that is not at the root of the namespace (under
5522a
5523Device object, etc.). Now executes the code within the current scope
5524instead
5525of the root. ACPICA BZ 762. Lin Ming.
5526
5527Fixed possible mutex acquisition errors when running _REG methods. Fixes
5528a
5529problem where mutex errors can occur when running a _REG method that is
5530in
5531the same scope as a method-defined operation region or an operation
5532region
5533under a module-level IF block. This type of code is rare, so the problem
5534has
5535not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
5536
5537Fixed a possible memory leak during module-level code execution. An
5538object
5539could be leaked for each block of executed module-level code if the
5540interpreter slack mode is enabled This change deletes any implicitly
5541returned
5542object from the module-level code block. Lin Ming.
5543
5544Removed messages for successful predefined repair(s). The repair
5545mechanism
5546was considered too wordy. Now, messages are only unconditionally emitted
5547if
5548the return object cannot be repaired. Existing messages for successful
5549repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
5550827.
5551
5552Example Code and Data Size: These are the sizes for the OS-independent
5553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5554debug version of the code includes the debug output trace mechanism and
5555has a
5556much larger code and data size.
5557
5558  Previous Release:
5559    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
5560    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
5561  Current Release:
5562    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
5563    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
5564
55652) iASL Compiler/Disassembler and Tools:
5566
5567iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
5568files
5569were no longer automatically removed at the termination of the compile.
5570
5571acpiexec: Implemented the -f option to specify default region fill value.
5572This option specifies the value used to initialize buffers that simulate
5573operation regions. Default value is zero. Useful for debugging problems
5574that
5575depend on a specific initial value for a region or field.
5576
5577----------------------------------------
557812 November 2009. Summary of changes for version 20091112:
5579
55801) ACPI CA Core Subsystem:
5581
5582Implemented a post-order callback to AcpiWalkNamespace. The existing
5583interface only has a pre-order callback. This change adds an additional
5584parameter for a post-order callback which will be more useful for bus
5585scans.
5586ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
5587
5588Modified the behavior of the operation region memory mapping cache for
5589SystemMemory. Ensure that the memory mappings created for operation
5590regions
5591do not cross 4K page boundaries. Crossing a page boundary while mapping
5592regions can cause kernel warnings on some hosts if the pages have
5593different
5594attributes. Such regions are probably BIOS bugs, and this is the
5595workaround.
5596Linux BZ 14445. Lin Ming.
5597
5598Implemented an automatic repair for predefined methods that must return
5599sorted lists. This change will repair (by sorting) packages returned by
5600_ALR,
5601_PSS, and _TSS. Drivers can now assume that the packages are correctly
5602sorted
5603and do not contain NULL package elements. Adds one new file,
5604namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
5605
5606Fixed a possible fault during predefined name validation if a return
5607Package
5608object contains NULL elements. Also adds a warning if a NULL element is
5609followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
5610may
5611include repair or removal of all such NULL elements where possible.
5612
5613Implemented additional module-level executable AML code support. This
5614change
5615will execute module-level code that is not at the root of the namespace
5616(under a Device object, etc.) at table load time. Module-level executable
5617AML
5618code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
5619
5620Implemented a new internal function to create Integer objects. This
5621function
5622simplifies miscellaneous object creation code. ACPICA BZ 823.
5623
5624Reduced the severity of predefined repair messages, Warning to Info.
5625Since
5626the object was successfully repaired, a warning is too severe. Reduced to
5627an
5628info message for now. These messages may eventually be changed to debug-
5629only.
5630ACPICA BZ 812.
5631
5632Example Code and Data Size: These are the sizes for the OS-independent
5633acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5634debug version of the code includes the debug output trace mechanism and
5635has a
5636much larger code and data size.
5637
5638  Previous Release:
5639    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
5640    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
5641  Current Release:
5642    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
5643    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
5644
56452) iASL Compiler/Disassembler and Tools:
5646
5647iASL: Implemented Switch() with While(1) so that Break works correctly.
5648This
5649change correctly implements the Switch operator with a surrounding
5650While(1)
5651so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
5652
5653iASL: Added a message if a package initializer list is shorter than
5654package
5655length. Adds a new remark for a Package() declaration if an initializer
5656list
5657exists, but is shorter than the declared length of the package. Although
5658technically legal, this is probably a coding error and it is seen in the
5659field. ACPICA BZ 815. Lin Ming, Bob Moore.
5660
5661iASL: Fixed a problem where the compiler could fault after the maximum
5662number
5663of errors was reached (200).
5664
5665acpixtract: Fixed a possible warning for pointer cast if the compiler
5666warning
5667level set very high.
5668
5669----------------------------------------
567013 October 2009. Summary of changes for version 20091013:
5671
56721) ACPI CA Core Subsystem:
5673
5674Fixed a problem where an Operation Region _REG method could be executed
5675more
5676than once. If a custom address space handler is installed by the host
5677before
5678the "initialize operation regions" phase of the ACPICA initialization,
5679any
5680_REG methods for that address space could be executed twice. This change
5681fixes the problem. ACPICA BZ 427. Lin Ming.
5682
5683Fixed a possible memory leak for the Scope() ASL operator. When the exact
5684invocation of "Scope(\)" is executed (change scope to root), one internal
5685operand object was leaked. Lin Ming.
5686
5687Implemented a run-time repair for the _MAT predefined method. If the _MAT
5688return value is defined as a Field object in the AML, and the field
5689size is less than or equal to the default width of an integer (32 or
569064),_MAT
5691can incorrectly return an Integer instead of a Buffer. ACPICA now
5692automatically repairs this problem. ACPICA BZ 810.
5693
5694Implemented a run-time repair for the _BIF and _BIX predefined methods.
5695The
5696"OEM Information" field is often incorrectly returned as an Integer with
5697value zero if the field is not supported by the platform. This is due to
5698an
5699ambiguity in the ACPI specification. The field should always be a string.
5700ACPICA now automatically repairs this problem by returning a NULL string
5701within the returned Package. ACPICA BZ 807.
5702
5703Example Code and Data Size: These are the sizes for the OS-independent
5704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5705debug version of the code includes the debug output trace mechanism and
5706has a
5707much larger code and data size.
5708
5709  Previous Release:
5710    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
5711    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
5712  Current Release:
5713    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
5714    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
5715
57162) iASL Compiler/Disassembler and Tools:
5717
5718Disassembler: Fixed a problem where references to external symbols that
5719contained one or more parent-prefixes (carats) were not handled
5720correctly,
5721possibly causing a fault. ACPICA BZ 806. Lin Ming.
5722
5723Disassembler: Restructured the code so that all functions that handle
5724external symbols are in a single module. One new file is added,
5725common/dmextern.c.
5726
5727AML Debugger: Added a max count argument for the Batch command (which
5728executes multiple predefined methods within the namespace.)
5729
5730iASL: Updated the compiler documentation (User Reference.) Available at
5731http://www.acpica.org/documentation/. ACPICA BZ 750.
5732
5733AcpiXtract: Updated for Lint and other formatting changes. Close all open
5734files.
5735
5736----------------------------------------
573703 September 2009. Summary of changes for version 20090903:
5738
57391) ACPI CA Core Subsystem:
5740
5741For Windows Vista compatibility, added the automatic execution of an _INI
5742method located at the namespace root (\_INI). This method is executed at
5743table load time. This support is in addition to the automatic execution
5744of
5745\_SB._INI. Lin Ming.
5746
5747Fixed a possible memory leak in the interpreter for AML package objects
5748if
5749the package initializer list is longer than the defined size of the
5750package.
5751This apparently can only happen if the BIOS changes the package size on
5752the
5753fly (seen in a _PSS object), as ASL compilers do not allow this. The
5754interpreter will truncate the package to the defined size (and issue an
5755error
5756message), but previously could leave the extra objects undeleted if they
5757were
5758pre-created during the argument processing (such is the case if the
5759package
5760consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
5761
5762Fixed a problem seen when a Buffer or String is stored to itself via ASL.
5763This has been reported in the field. Previously, ACPICA would zero out
5764the
5765buffer/string. Now, the operation is treated as a noop. Provides Windows
5766compatibility. ACPICA BZ 803. Lin Ming.
5767
5768Removed an extraneous error message for ASL constructs of the form
5769Store(LocalX,LocalX) when LocalX is uninitialized. These curious
5770statements
5771are seen in many BIOSs and are once again treated as NOOPs and no error
5772is
5773emitted when they are encountered. ACPICA BZ 785.
5774
5775Fixed an extraneous warning message if a _DSM reserved method returns a
5776Package object. _DSM can return any type of object, so validation on the
5777return type cannot be performed. ACPICA BZ 802.
5778
5779Example Code and Data Size: These are the sizes for the OS-independent
5780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5781debug version of the code includes the debug output trace mechanism and
5782has a
5783much larger code and data size.
5784
5785  Previous Release:
5786    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
5787    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
5788  Current Release:
5789    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
5790    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
5791
57922) iASL Compiler/Disassembler and Tools:
5793
5794iASL: Fixed a problem with the use of the Alias operator and Resource
5795Templates. The correct alias is now constructed and no error is emitted.
5796ACPICA BZ 738.
5797
5798iASL: Implemented the -I option to specify additional search directories
5799for
5800include files. Allows multiple additional search paths for include files.
5801Directories are searched in the order specified on the command line
5802(after
5803the local directory is searched.) ACPICA BZ 800.
5804
5805iASL: Fixed a problem where the full pathname for include files was not
5806emitted for warnings/errors. This caused the IDE support to not work
5807properly. ACPICA BZ 765.
5808
5809iASL: Implemented the -@ option to specify a Windows-style response file
5810containing additional command line options. ACPICA BZ 801.
5811
5812AcpiExec: Added support to load multiple AML files simultaneously (such
5813as
5814a
5815DSDT and multiple SSDTs). Also added support for wildcards within the AML
5816pathname. These features allow all machine tables to be easily loaded and
5817debugged together. ACPICA BZ 804.
5818
5819Disassembler: Added missing support for disassembly of HEST table Error
5820Bank
5821subtables.
5822
5823----------------------------------------
582430 July 2009. Summary of changes for version 20090730:
5825
5826The ACPI 4.0 implementation for ACPICA is complete with this release.
5827
58281) ACPI CA Core Subsystem:
5829
5830ACPI 4.0: Added header file support for all new and changed ACPI tables.
5831Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
5832new
5833for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
5834BERT,
5835EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
5836There
5837have been some ACPI 4.0 changes to other existing tables. Split the large
5838actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
5839
5840ACPI 4.0: Implemented predefined name validation for all new names. There
5841are
584231 new names in ACPI 4.0. The predefined validation module was split into
5843two
5844files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
5845
5846Implemented support for so-called "module-level executable code". This is
5847executable AML code that exists outside of any control method and is
5848intended
5849to be executed at table load time. Although illegal since ACPI 2.0, this
5850type
5851of code still exists and is apparently still being created. Blocks of
5852this
5853code are now detected and executed as intended. Currently, the code
5854blocks
5855must exist under either an If, Else, or While construct; these are the
5856typical cases seen in the field. ACPICA BZ 762. Lin Ming.
5857
5858Implemented an automatic dynamic repair for predefined names that return
5859nested Package objects. This applies to predefined names that are defined
5860to
5861return a variable-length Package of sub-packages. If the number of sub-
5862packages is one, BIOS code is occasionally seen that creates a simple
5863single
5864package with no sub-packages. This code attempts to fix the problem by
5865wrapping a new package object around the existing package. These methods
5866can
5867be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
5868BZ
5869790.
5870
5871Fixed a regression introduced in 20090625 for the AcpiGetDevices
5872interface.
5873The _HID/_CID matching was broken and no longer matched IDs correctly.
5874ACPICA
5875BZ 793.
5876
5877Fixed a problem with AcpiReset where the reset would silently fail if the
5878register was one of the protected I/O ports. AcpiReset now bypasses the
5879port
5880validation mechanism. This may eventually be driven into the
5881AcpiRead/Write
5882interfaces.
5883
5884Fixed a regression related to the recent update of the AcpiRead/Write
5885interfaces. A sleep/suspend could fail if the optional PM2 Control
5886register
5887does not exist during an attempt to write the Bus Master Arbitration bit.
5888(However, some hosts already delete the code that writes this bit, and
5889the
5890code may in fact be obsolete at this date.) ACPICA BZ 799.
5891
5892Fixed a problem where AcpiTerminate could fault if inadvertently called
5893twice
5894in succession. ACPICA BZ 795.
5895
5896Example Code and Data Size: These are the sizes for the OS-independent
5897acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5898debug version of the code includes the debug output trace mechanism and
5899has a
5900much larger code and data size.
5901
5902  Previous Release:
5903    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5904    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
5905  Current Release:
5906    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
5907    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
5908
59092) iASL Compiler/Disassembler and Tools:
5910
5911ACPI 4.0: Implemented disassembler support for all new ACPI tables and
5912changes to existing tables. ACPICA BZ 775.
5913
5914----------------------------------------
591525 June 2009. Summary of changes for version 20090625:
5916
5917The ACPI 4.0 Specification was released on June 16 and is available at
5918www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
5919continue for the next few releases.
5920
59211) ACPI CA Core Subsystem:
5922
5923ACPI 4.0: Implemented interpreter support for the IPMI operation region
5924address space. Includes support for bi-directional data buffers and an
5925IPMI
5926address space handler (to be installed by an IPMI device driver.) ACPICA
5927BZ
5928773. Lin Ming.
5929
5930ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
5931Includes
5932support in both the header files and the disassembler.
5933
5934Completed a major update for the AcpiGetObjectInfo external interface.
5935Changes include:
5936 - Support for variable, unlimited length HID, UID, and CID strings.
5937 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
5938etc.)
5939 - Call the _SxW power methods on behalf of a device object.
5940 - Determine if a device is a PCI root bridge.
5941 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
5942These changes will require an update to all callers of this interface.
5943See
5944the updated ACPICA Programmer Reference for details. One new source file
5945has
5946been added - utilities/utids.c. ACPICA BZ 368, 780.
5947
5948Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
5949transfers. The Value parameter has been extended from 32 bits to 64 bits
5950in
5951order to support new ACPI 4.0 tables. These changes will require an
5952update
5953to
5954all callers of these interfaces. See the ACPICA Programmer Reference for
5955details. ACPICA BZ 768.
5956
5957Fixed several problems with AcpiAttachData. The handler was not invoked
5958when
5959the host node was deleted. The data sub-object was not automatically
5960deleted
5961when the host node was deleted. The interface to the handler had an
5962unused
5963parameter, this was removed. ACPICA BZ 778.
5964
5965Enhanced the function that dumps ACPI table headers. All non-printable
5966characters in the string fields are now replaced with '?' (Signature,
5967OemId,
5968OemTableId, and CompilerId.) ACPI tables with non-printable characters in
5969these fields are occasionally seen in the field. ACPICA BZ 788.
5970
5971Fixed a problem with predefined method repair code where the code that
5972attempts to repair/convert an object of incorrect type is only executed
5973on
5974the first time the predefined method is called. The mechanism that
5975disables
5976warnings on subsequent calls was interfering with the repair mechanism.
5977ACPICA BZ 781.
5978
5979Fixed a possible memory leak in the predefined validation/repair code
5980when
5981a
5982buffer is automatically converted to an expected string object.
5983
5984Removed obsolete 16-bit files from the distribution and from the current
5985git
5986tree head. ACPICA BZ 776.
5987
5988Example Code and Data Size: These are the sizes for the OS-independent
5989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5990debug version of the code includes the debug output trace mechanism and
5991has a
5992much larger code and data size.
5993
5994  Previous Release:
5995    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5996    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5997  Current Release:
5998    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5999    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
6000
60012) iASL Compiler/Disassembler and Tools:
6002
6003ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
6004operation region keyword. ACPICA BZ 771, 772. Lin Ming.
6005
6006ACPI 4.0: iASL - implemented compile-time validation support for all new
6007predefined names and control methods (31 total). ACPICA BZ 769.
6008
6009----------------------------------------
601021 May 2009. Summary of changes for version 20090521:
6011
60121) ACPI CA Core Subsystem:
6013
6014Disabled the preservation of the SCI enable bit in the PM1 control
6015register.
6016The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
6017to
6018be
6019a "preserved" bit - "OSPM always preserves this bit position", section
60204.7.3.2.1. However, some machines fail if this bit is in fact preserved
6021because the bit needs to be explicitly set by the OS as a workaround. No
6022machines fail if the bit is not preserved. Therefore, ACPICA no longer
6023attempts to preserve this bit.
6024
6025Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
6026incorrectly formed _PRT package could cause a fault. Added validation to
6027ensure that each package element is actually a sub-package.
6028
6029Implemented a new interface to install or override a single control
6030method,
6031AcpiInstallMethod. This interface is useful when debugging in order to
6032repair
6033an existing method or to install a missing method without having to
6034override
6035the entire ACPI table. See the ACPICA Programmer Reference for use and
6036examples. Lin Ming, Bob Moore.
6037
6038Fixed several reference count issues with the DdbHandle object that is
6039created from a Load or LoadTable operator. Prevent premature deletion of
6040the
6041object. Also, mark the object as invalid once the table has been
6042unloaded.
6043This is needed because the handle itself may not be deleted after the
6044table
6045unload, depending on whether it has been stored in a named object by the
6046caller. Lin Ming.
6047
6048Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
6049mutexes of the same sync level are acquired but then not released in
6050strict
6051opposite order, the internally maintained Current Sync Level becomes
6052confused
6053and can cause subsequent execution errors. ACPICA BZ 471.
6054
6055Changed the allowable release order for ASL mutex objects. The ACPI 4.0
6056specification has been changed to make the SyncLevel for mutex objects
6057more
6058useful. When releasing a mutex, the SyncLevel of the mutex must now be
6059the
6060same as the current sync level. This makes more sense than the previous
6061rule
6062(SyncLevel less than or equal). This change updates the code to match the
6063specification.
6064
6065Fixed a problem with the local version of the AcpiOsPurgeCache function.
6066The
6067(local) cache must be locked during all cache object deletions. Andrew
6068Baumann.
6069
6070Updated the Load operator to use operation region interfaces. This
6071replaces
6072direct memory mapping with region access calls. Now, all region accesses
6073go
6074through the installed region handler as they should.
6075
6076Simplified and optimized the NsGetNextNode function. Reduced parameter
6077count
6078and reduced code for this frequently used function.
6079
6080Example Code and Data Size: These are the sizes for the OS-independent
6081acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6082debug version of the code includes the debug output trace mechanism and
6083has a
6084much larger code and data size.
6085
6086  Previous Release:
6087    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
6088    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
6089  Current Release:
6090    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
6091    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
6092
60932) iASL Compiler/Disassembler and Tools:
6094
6095Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
6096problems
6097with sub-table disassembly and handling invalid sub-tables. Attempt
6098recovery
6099after an invalid sub-table ID.
6100
6101----------------------------------------
610222 April 2009. Summary of changes for version 20090422:
6103
61041) ACPI CA Core Subsystem:
6105
6106Fixed a compatibility issue with the recently released I/O port
6107protection
6108mechanism. For windows compatibility, 1) On a port protection violation,
6109simply ignore the request and do not return an exception (allow the
6110control
6111method to continue execution.) 2) If only part of the request overlaps a
6112protected port, read/write the individual ports that are not protected.
6113Linux
6114BZ 13036. Lin Ming
6115
6116Enhanced the execution of the ASL/AML BreakPoint operator so that it
6117actually
6118breaks into the AML debugger if the debugger is present. This matches the
6119ACPI-defined behavior.
6120
6121Fixed several possible warnings related to the use of the configurable
6122ACPI_THREAD_ID. This type can now be configured as either an integer or a
6123pointer with no warnings. Also fixes several warnings in printf-like
6124statements for the 64-bit build when the type is configured as a pointer.
6125ACPICA BZ 766, 767.
6126
6127Fixed a number of possible warnings when compiling with gcc 4+ (depending
6128on
6129warning options.) Examples include printf formats, aliasing, unused
6130globals,
6131missing prototypes, missing switch default statements, use of non-ANSI
6132library functions, use of non-ANSI constructs. See generate/unix/Makefile
6133for
6134a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
6135
6136Example Code and Data Size: These are the sizes for the OS-independent
6137acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6138debug version of the code includes the debug output trace mechanism and
6139has a
6140much larger code and data size.
6141
6142  Previous Release:
6143    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
6144    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
6145  Current Release:
6146    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
6147    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
6148
61492) iASL Compiler/Disassembler and Tools:
6150
6151iASL: Fixed a generation warning from Bison 2.3 and fixed several
6152warnings
6153on
6154the 64-bit build.
6155
6156iASL: Fixed a problem where the Unix/Linux versions of the compiler could
6157not
6158correctly digest Windows/DOS formatted files (with CR/LF).
6159
6160iASL: Added a new option for "quiet mode" (-va) that produces only the
6161compilation summary, not individual errors and warnings. Useful for large
6162batch compilations.
6163
6164AcpiExec: Implemented a new option (-z) to enable a forced
6165semaphore/mutex
6166timeout that can be used to detect hang conditions during execution of
6167AML
6168code (includes both internal semaphores and AML-defined mutexes and
6169events.)
6170
6171Added new makefiles for the generation of acpica in a generic unix-like
6172environment. These makefiles are intended to generate the acpica tools
6173and
6174utilities from the original acpica git source tree structure.
6175
6176Test Suites: Updated and cleaned up the documentation files. Updated the
6177copyrights to 2009, affecting all source files. Use the new version of
6178iASL
6179with quiet mode. Increased the number of available semaphores in the
6180Windows
6181OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
6182added
6183an alternate implementation of the semaphore timeout to allow aslts to
6184execute fully on Cygwin.
6185
6186----------------------------------------
618720 March 2009. Summary of changes for version 20090320:
6188
61891) ACPI CA Core Subsystem:
6190
6191Fixed a possible race condition between AcpiWalkNamespace and dynamic
6192table
6193unloads. Added a reader/writer locking mechanism to allow multiple
6194concurrent
6195namespace walks (readers), but block a dynamic table unload until it can
6196gain
6197exclusive write access to the namespace. This fixes a problem where a
6198table
6199unload could (possibly catastrophically) delete the portion of the
6200namespace
6201that is currently being examined by a walk. Adds a new file, utlock.c,
6202that
6203implements the reader/writer lock mechanism. ACPICA BZ 749.
6204
6205Fixed a regression introduced in version 20090220 where a change to the
6206FADT
6207handling could cause the ACPICA subsystem to access non-existent I/O
6208ports.
6209
6210Modified the handling of FADT register and table (FACS/DSDT) addresses.
6211The
6212FADT can contain both 32-bit and 64-bit versions of these addresses.
6213Previously, the 64-bit versions were favored, meaning that if both 32 and
621464
6215versions were valid, but not equal, the 64-bit version was used. This was
6216found to cause some machines to fail. Now, in this case, the 32-bit
6217version
6218is used instead. This now matches the Windows behavior.
6219
6220Implemented a new mechanism to protect certain I/O ports. Provides
6221Microsoft
6222compatibility and protects the standard PC I/O ports from access via AML
6223code. Adds a new file, hwvalid.c
6224
6225Fixed a possible extraneous warning message from the FADT support. The
6226message warns of a 32/64 length mismatch between the legacy and GAS
6227definitions for a register.
6228
6229Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
6230is
6231made obsolete by the port protection mechanism above. It was previously
6232used
6233to validate the entire address range of an operation region, which could
6234be
6235incorrect if the range included illegal ports, but fields within the
6236operation region did not actually access those ports. Validation is now
6237performed on a per-field basis instead of the entire region.
6238
6239Modified the handling of the PM1 Status Register ignored bit (bit 11.)
6240Ignored bits must be "preserved" according to the ACPI spec. Usually,
6241this
6242means a read/modify/write when writing to the register. However, for
6243status
6244registers, writing a one means clear the event. Writing a zero means
6245preserve
6246the event (do not clear.) This behavior is clarified in the ACPI 4.0
6247spec,
6248and the ACPICA code now simply always writes a zero to the ignored bit.
6249
6250Modified the handling of ignored bits for the PM1 A/B Control Registers.
6251As
6252per the ACPI specification, for the control registers, preserve
6253(read/modify/write) all bits that are defined as either reserved or
6254ignored.
6255
6256Updated the handling of write-only bits in the PM1 A/B Control Registers.
6257When reading the register, zero the write-only bits as per the ACPI spec.
6258ACPICA BZ 443. Lin Ming.
6259
6260Removed "Linux" from the list of supported _OSI strings. Linux no longer
6261wants to reply true to this request. The Windows strings are the only
6262paths
6263through the AML that are tested and known to work properly.
6264
6265  Previous Release:
6266    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
6267    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
6268  Current Release:
6269    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
6270    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
6271
62722) iASL Compiler/Disassembler and Tools:
6273
6274Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
6275and
6276aetables.c
6277
6278----------------------------------------
627920 February 2009. Summary of changes for version 20090220:
6280
62811) ACPI CA Core Subsystem:
6282
6283Optimized the ACPI register locking. Removed locking for reads from the
6284ACPI
6285bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
6286is
6287not required when reading the single-bit registers. The
6288AcpiGetRegisterUnlocked function is no longer needed and has been
6289removed.
6290This will improve performance for reads on these registers. ACPICA BZ
6291760.
6292
6293Fixed the parameter validation for AcpiRead/Write. Now return
6294AE_BAD_PARAMETER if the input register pointer is null, and
6295AE_BAD_ADDRESS
6296if
6297the register has an address of zero. Previously, these cases simply
6298returned
6299AE_OK. For optional registers such as PM1B status/enable/control, the
6300caller
6301should check for a valid register address before calling. ACPICA BZ 748.
6302
6303Renamed the external ACPI bit register access functions. Renamed
6304AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
6305functions. The new names are AcpiReadBitRegister and
6306AcpiWriteBitRegister.
6307Also, restructured the code for these functions by simplifying the code
6308path
6309and condensing duplicate code to reduce code size.
6310
6311Added new functions to transparently handle the possibly split PM1 A/B
6312registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
6313functions
6314now handle the split registers for PM1 Status, Enable, and Control.
6315ACPICA
6316BZ
6317746.
6318
6319Added a function to handle the PM1 control registers,
6320AcpiHwWritePm1Control.
6321This function writes both of the PM1 control registers (A/B). These
6322registers
6323are different than the PM1 A/B status and enable registers in that
6324different
6325values can be written to the A/B registers. Most notably, the SLP_TYP
6326bits
6327can be different, as per the values returned from the _Sx predefined
6328methods.
6329
6330Removed an extra register write within AcpiHwClearAcpiStatus. This
6331function
6332was writing an optional PM1B status register twice. The existing call to
6333the
6334low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
6335A/B
6336register. ACPICA BZ 751.
6337
6338Split out the PM1 Status registers from the FADT. Added new globals for
6339these
6340registers (A/B), similar to the way the PM1 Enable registers are handled.
6341Instead of overloading the FADT Event Register blocks. This makes the
6342code
6343clearer and less prone to error.
6344
6345Fixed the warning message for when the platform contains too many ACPI
6346tables
6347for the default size of the global root table data structure. The
6348calculation
6349for the truncation value was incorrect.
6350
6351Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
6352obsolete macro, since it is now a simple reference to ->common.type.
6353There
6354were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
6355
6356Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
6357TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
6358simply SLEEP_TYPE. ACPICA BZ 754.
6359
6360Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
6361function is only needed on 64-bit host operating systems and is thus not
6362included for 32-bit hosts.
6363
6364Debug output: print the input and result for invocations of the _OSI
6365reserved
6366control method via the ACPI_LV_INFO debug level. Also, reduced some of
6367the
6368verbosity of this debug level. Len Brown.
6369
6370Example Code and Data Size: These are the sizes for the OS-independent
6371acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6372debug version of the code includes the debug output trace mechanism and
6373has a
6374much larger code and data size.
6375
6376  Previous Release:
6377    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
6378    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
6379  Current Release:
6380    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
6381    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
6382
63832) iASL Compiler/Disassembler and Tools:
6384
6385Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
6386various legal performance profiles.
6387
6388----------------------------------------
638923 January 2009. Summary of changes for version 20090123:
6390
63911) ACPI CA Core Subsystem:
6392
6393Added the 2009 copyright to all module headers and signons. This affects
6394virtually every file in the ACPICA core subsystem, the iASL compiler, and
6395the tools/utilities.
6396
6397Implemented a change to allow the host to override any ACPI table,
6398including
6399dynamically loaded tables. Previously, only the DSDT could be replaced by
6400the
6401host. With this change, the AcpiOsTableOverride interface is called for
6402each
6403table found in the RSDT/XSDT during ACPICA initialization, and also
6404whenever
6405a table is dynamically loaded via the AML Load operator.
6406
6407Updated FADT flag definitions, especially the Boot Architecture flags.
6408
6409Debugger: For the Find command, automatically pad the input ACPI name
6410with
6411underscores if the name is shorter than 4 characters. This enables a
6412match
6413with the actual namespace entry which is itself padded with underscores.
6414
6415Example Code and Data Size: These are the sizes for the OS-independent
6416acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6417debug version of the code includes the debug output trace mechanism and
6418has a
6419much larger code and data size.
6420
6421  Previous Release:
6422    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
6423    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
6424  Current Release:
6425    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
6426    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
6427
64282) iASL Compiler/Disassembler and Tools:
6429
6430Fix build error under Bison-2.4.
6431
6432Dissasembler: Enhanced FADT support. Added decoding of the Boot
6433Architecture
6434flags. Now decode all flags, regardless of the FADT version. Flag output
6435includes the FADT version which first defined each flag.
6436
6437The iASL -g option now dumps the RSDT to a file (in addition to the FADT
6438and
6439DSDT). Windows only.
6440
6441----------------------------------------
644204 December 2008. Summary of changes for version 20081204:
6443
64441) ACPI CA Core Subsystem:
6445
6446The ACPICA Programmer Reference has been completely updated and revamped
6447for
6448this release. This includes updates to the external interfaces, OSL
6449interfaces, the overview sections, and the debugger reference.
6450
6451Several new ACPICA interfaces have been implemented and documented in the
6452programmer reference:
6453AcpiReset - Writes the reset value to the FADT-defined reset register.
6454AcpiDisableAllGpes - Disable all available GPEs.
6455AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
6456AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
6457AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
6458AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
6459AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
6460
6461Most of the public ACPI hardware-related interfaces have been moved to a
6462new
6463file, components/hardware/hwxface.c
6464
6465Enhanced the FADT parsing and low-level ACPI register access: The ACPI
6466register lengths within the FADT are now used, and the low level ACPI
6467register access no longer hardcodes the ACPI register lengths. Given that
6468there may be some risk in actually trusting the FADT register lengths, a
6469run-
6470time option was added to fall back to the default hardcoded lengths if
6471the
6472FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
6473option is set to true for now, and a warning is issued if a suspicious
6474FADT
6475register length is overridden with the default value.
6476
6477Fixed a reference count issue in NsRepairObject. This problem was
6478introduced
6479in version 20081031 as part of a fix to repair Buffer objects within
6480Packages. Lin Ming.
6481
6482Added semaphore support to the Linux/Unix application OS-services layer
6483(OSL). ACPICA BZ 448. Lin Ming.
6484
6485Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
6486will
6487be implemented in the OSL, or will binary semaphores be used instead.
6488
6489Example Code and Data Size: These are the sizes for the OS-independent
6490acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6491debug version of the code includes the debug output trace mechanism and
6492has a
6493much larger code and data size.
6494
6495  Previous Release:
6496    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
6497    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
6498  Current Release:
6499    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
6500    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
6501
65022) iASL Compiler/Disassembler and Tools:
6503
6504iASL: Completed the '-e' option to include additional ACPI tables in
6505order
6506to
6507aid with disassembly and External statement generation. ACPICA BZ 742.
6508Lin
6509Ming.
6510
6511iASL: Removed the "named object in while loop" error. The compiler cannot
6512determine how many times a loop will execute. ACPICA BZ 730.
6513
6514Disassembler: Implemented support for FADT revision 2 (MS extension).
6515ACPICA
6516BZ 743.
6517
6518Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
6519MCFG).
6520
6521----------------------------------------
652231 October 2008. Summary of changes for version 20081031:
6523
65241) ACPI CA Core Subsystem:
6525
6526Restructured the ACPICA header files into public/private. acpi.h now
6527includes
6528only the "public" acpica headers. All other acpica headers are "private"
6529and
6530should not be included by acpica users. One new file, accommon.h is used
6531to
6532include the commonly used private headers for acpica code generation.
6533Future
6534plans include moving all private headers to a new subdirectory.
6535
6536Implemented an automatic Buffer->String return value conversion for
6537predefined ACPI methods. For these methods (such as _BIF), added
6538automatic
6539conversion for return objects that are required to be a String, but a
6540Buffer
6541was found instead. This can happen when reading string battery data from
6542an
6543operation region, because it used to be difficult to convert the data
6544from
6545buffer to string from within the ASL. Ensures that the host OS is
6546provided
6547with a valid null-terminated string. Linux BZ 11822.
6548
6549Updated the FACS waking vector interfaces. Split
6550AcpiSetFirmwareWakingVector
6551into two: one for the 32-bit vector, another for the 64-bit vector. This
6552is
6553required because the host OS must setup the wake much differently for
6554each
6555vector (real vs. protected mode, etc.) and the interface itself should
6556not
6557be
6558deciding which vector to use. Also, eliminated the
6559GetFirmwareWakingVector
6560interface, as it served no purpose (only the firmware reads the vector,
6561OS
6562only writes the vector.) ACPICA BZ 731.
6563
6564Implemented a mechanism to escape infinite AML While() loops. Added a
6565loop
6566counter to force exit from AML While loops if the count becomes too
6567large.
6568This can occur in poorly written AML when the hardware does not respond
6569within a while loop and the loop does not implement a timeout. The
6570maximum
6571loop count is configurable. A new exception code is returned when a loop
6572is
6573broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
6574
6575Optimized the execution of AML While loops. Previously, a control state
6576object was allocated and freed for each execution of the loop. The
6577optimization is to simply reuse the control state for each iteration.
6578This
6579speeds up the raw loop execution time by about 5%.
6580
6581Enhanced the implicit return mechanism. For Windows compatibility, return
6582an
6583implicit integer of value zero for methods that contain no executable
6584code.
6585Such methods are seen in the field as stubs (presumably), and can cause
6586drivers to fail if they expect a return value. Lin Ming.
6587
6588Allow multiple backslashes as root prefixes in namepaths. In a fully
6589qualified namepath, allow multiple backslash prefixes. This can happen
6590(and
6591is seen in the field) because of the use of a double-backslash in strings
6592(since backslash is the escape character) causing confusion. ACPICA BZ
6593739
6594Lin Ming.
6595
6596Emit a warning if two different FACS or DSDT tables are discovered in the
6597FADT. Checks if there are two valid but different addresses for the FACS
6598and
6599DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
6600
6601Consolidated the method argument count validation code. Merged the code
6602that
6603validates control method argument counts into the predefined validation
6604module. Eliminates possible multiple warnings for incorrect argument
6605counts.
6606
6607Implemented ACPICA example code. Includes code for ACPICA initialization,
6608handler installation, and calling a control method. Available at
6609source/tools/examples.
6610
6611Added a global pointer for FACS table to simplify internal FACS access.
6612Use
6613the global pointer instead of using AcpiGetTableByIndex for each FACS
6614access.
6615This simplifies the code for the Global Lock and the Firmware Waking
6616Vector(s).
6617
6618Example Code and Data Size: These are the sizes for the OS-independent
6619acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6620debug version of the code includes the debug output trace mechanism and
6621has a
6622much larger code and data size.
6623
6624  Previous Release:
6625    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
6626    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
6627  Current Release:
6628    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
6629    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
6630
66312) iASL Compiler/Disassembler and Tools:
6632
6633iASL: Improved disassembly of external method calls. Added the -e option
6634to
6635allow the inclusion of additional ACPI tables to help with the
6636disassembly
6637of
6638method invocations and the generation of external declarations during the
6639disassembly. Certain external method invocations cannot be disassembled
6640properly without the actual declaration of the method. Use the -e option
6641to
6642include the table where the external method(s) are actually declared.
6643Most
6644useful for disassembling SSDTs that make method calls back to the master
6645DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
6646-d
6647-e dsdt.aml ssdt1.aml
6648
6649iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
6650problem where the use of an alias within a namepath would result in a not
6651found error or cause the compiler to fault. Also now allows forward
6652references from the Alias operator itself. ACPICA BZ 738.
6653
6654----------------------------------------
665526 September 2008. Summary of changes for version 20080926:
6656
66571) ACPI CA Core Subsystem:
6658
6659Designed and implemented a mechanism to validate predefined ACPI methods
6660and
6661objects. This code validates the predefined ACPI objects (objects whose
6662names
6663start with underscore) that appear in the namespace, at the time they are
6664evaluated. The argument count and the type of the returned object are
6665validated against the ACPI specification. The purpose of this validation
6666is
6667to detect problems with the BIOS-implemented predefined ACPI objects
6668before
6669the results are returned to the ACPI-related drivers. Future enhancements
6670may
6671include actual repair of incorrect return objects where possible. Two new
6672files are nspredef.c and acpredef.h.
6673
6674Fixed a fault in the AML parser if a memory allocation fails during the
6675Op
6676completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
6677
6678Fixed an issue with implicit return compatibility. This change improves
6679the
6680implicit return mechanism to be more compatible with the MS interpreter.
6681Lin
6682Ming, ACPICA BZ 349.
6683
6684Implemented support for zero-length buffer-to-string conversions. Allow
6685zero
6686length strings during interpreter buffer-to-string conversions. For
6687example,
6688during the ToDecimalString and ToHexString operators, as well as implicit
6689conversions. Fiodor Suietov, ACPICA BZ 585.
6690
6691Fixed two possible memory leaks in the error exit paths of
6692AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
6693are
6694similar in that they use a stack of state objects in order to eliminate
6695recursion. The stack must be fully unwound and deallocated if an error
6696occurs. Lin Ming. ACPICA BZ 383.
6697
6698Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
6699global
6700ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
6701Moore ACPICA BZ 442.
6702
6703Removed the obsolete version number in module headers. Removed the
6704"$Revision" number that appeared in each module header. This version
6705number
6706was useful under SourceSafe and CVS, but has no meaning under git. It is
6707not
6708only incorrect, it could also be misleading.
6709
6710Example Code and Data Size: These are the sizes for the OS-independent
6711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6712debug version of the code includes the debug output trace mechanism and
6713has a
6714much larger code and data size.
6715
6716  Previous Release:
6717    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6718    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
6719  Current Release:
6720    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
6721    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
6722
6723----------------------------------------
672429 August 2008. Summary of changes for version 20080829:
6725
67261) ACPI CA Core Subsystem:
6727
6728Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
6729Reference. Changes include the elimination of cheating on the Object
6730field
6731for the DdbHandle subtype, addition of a reference class field to
6732differentiate the various reference types (instead of an AML opcode), and
6733the
6734cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
6735
6736Reduce an error to a warning for an incorrect method argument count.
6737Previously aborted with an error if too few arguments were passed to a
6738control method via the external ACPICA interface. Now issue a warning
6739instead
6740and continue. Handles the case where the method inadvertently declares
6741too
6742many arguments, but does not actually use the extra ones. Applies mainly
6743to
6744the predefined methods. Lin Ming. Linux BZ 11032.
6745
6746Disallow the evaluation of named object types with no intrinsic value.
6747Return
6748AE_TYPE for objects that have no value and therefore evaluation is
6749undefined:
6750Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
6751of
6752these types were allowed, but an exception would be generated at some
6753point
6754during the evaluation. Now, the error is generated up front.
6755
6756Fixed a possible memory leak in the AcpiNsGetExternalPathname function
6757(nsnames.c). Fixes a leak in the error exit path.
6758
6759Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
6760debug
6761levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
6762ACPI_EXCEPTION
6763interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
6764ACPI_LV_EVENTS.
6765
6766Removed obsolete and/or unused exception codes from the acexcep.h header.
6767There is the possibility that certain device drivers may be affected if
6768they
6769use any of these exceptions.
6770
6771The ACPICA documentation has been added to the public git source tree,
6772under
6773acpica/documents. Included are the ACPICA programmer reference, the iASL
6774compiler reference, and the changes.txt release logfile.
6775
6776Example Code and Data Size: These are the sizes for the OS-independent
6777acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6778debug version of the code includes the debug output trace mechanism and
6779has a
6780much larger code and data size.
6781
6782  Previous Release:
6783    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6784    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
6785  Current Release:
6786    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6787    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
6788
67892) iASL Compiler/Disassembler and Tools:
6790
6791Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
6792defines _SCP with 3 arguments. Previous versions defined it with only 1
6793argument. iASL now allows both definitions.
6794
6795iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
6796zero-
6797length subtables when disassembling ACPI tables. Also fixed a couple of
6798errors where a full 16-bit table type field was not extracted from the
6799input
6800properly.
6801
6802acpisrc: Improve comment counting mechanism for generating source code
6803statistics. Count first and last lines of multi-line comments as
6804whitespace,
6805not comment lines. Handle Linux legal header in addition to standard
6806acpica
6807header.
6808
6809----------------------------------------
6810
681129 July 2008. Summary of changes for version 20080729:
6812
68131) ACPI CA Core Subsystem:
6814
6815Fix a possible deadlock in the GPE dispatch. Remove call to
6816AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
6817attempt
6818to acquire the GPE lock but can deadlock since the GPE lock is already
6819held
6820at dispatch time. This code was introduced in version 20060831 as a
6821response
6822to Linux BZ 6881 and has since been removed from Linux.
6823
6824Add a function to dereference returned reference objects. Examines the
6825return
6826object from a call to AcpiEvaluateObject. Any Index or RefOf references
6827are
6828automatically dereferenced in an attempt to return something useful
6829(these
6830reference types cannot be converted into an external ACPI_OBJECT.)
6831Provides
6832MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
6833
6834x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
6835subtables for the MADT and one new subtable for the SRAT. Includes
6836disassembler and AcpiSrc support. Data from the Intel 64 Architecture
6837x2APIC
6838Specification, June 2008.
6839
6840Additional error checking for pathname utilities. Add error check after
6841all
6842calls to AcpiNsGetPathnameLength. Add status return from
6843AcpiNsBuildExternalPath and check after all calls. Add parameter
6844validation
6845to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
6846
6847Return status from the global init function AcpiUtGlobalInitialize. This
6848is
6849used by both the kernel subsystem and the utilities such as iASL
6850compiler.
6851The function could possibly fail when the caches are initialized. Yang
6852Yi.
6853
6854Add a function to decode reference object types to strings. Created for
6855improved error messages.
6856
6857Improve object conversion error messages. Better error messages during
6858object
6859conversion from internal to the external ACPI_OBJECT. Used for external
6860calls
6861to AcpiEvaluateObject.
6862
6863Example Code and Data Size: These are the sizes for the OS-independent
6864acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6865debug version of the code includes the debug output trace mechanism and
6866has a
6867much larger code and data size.
6868
6869  Previous Release:
6870    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
6871    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
6872  Current Release:
6873    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6874    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
6875
68762) iASL Compiler/Disassembler and Tools:
6877
6878Debugger: fix a possible hang when evaluating non-methods. Fixes a
6879problem
6880introduced in version 20080701. If the object being evaluated (via
6881execute
6882command) is not a method, the debugger can hang while trying to obtain
6883non-
6884existent parameters.
6885
6886iASL: relax error for using reserved "_T_x" identifiers. These names can
6887appear in a disassembled ASL file if they were emitted by the original
6888compiler. Instead of issuing an error or warning and forcing the user to
6889manually change these names, issue a remark instead.
6890
6891iASL: error if named object created in while loop. Emit an error if any
6892named
6893object is created within a While loop. If allowed, this code will
6894generate
6895a
6896run-time error on the second iteration of the loop when an attempt is
6897made
6898to
6899create the same named object twice. ACPICA bugzilla 730.
6900
6901iASL: Support absolute pathnames for include files. Add support for
6902absolute
6903pathnames within the Include operator. previously, only relative
6904pathnames
6905were supported.
6906
6907iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
6908Descriptor.
6909The ACPI spec requires one interrupt minimum. BZ 423
6910
6911iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
6912Handles the case for the Interrupt Resource Descriptor where
6913the ResourceSource argument is omitted but ResourceSourceIndex
6914is present. Now leave room for the Index. BZ 426
6915
6916iASL: Prevent error message if CondRefOf target does not exist. Fixes
6917cases
6918where an error message is emitted if the target does not exist. BZ 516
6919
6920iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
6921(get ACPI tables on Windows). This was apparently broken in version
692220070919.
6923
6924AcpiXtract: Handle EOF while extracting data. Correctly handle the case
6925where
6926the EOF happens immediately after the last table in the input file. Print
6927completion message. Previously, no message was displayed in this case.
6928
6929----------------------------------------
693001 July 2008. Summary of changes for version 20080701:
6931
69320) Git source tree / acpica.org
6933
6934Fixed a problem where a git-clone from http would not transfer the entire
6935source tree.
6936
69371) ACPI CA Core Subsystem:
6938
6939Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
6940enable bit. Now performs a read-change-write of the enable register
6941instead
6942of simply writing out the cached enable mask. This will prevent
6943inadvertent
6944enabling of GPEs if a rogue GPE is received during initialization (before
6945GPE
6946handlers are installed.)
6947
6948Implemented a copy for dynamically loaded tables. Previously, dynamically
6949loaded tables were simply mapped - but on some machines this memory is
6950corrupted after suspend. Now copy the table to a local buffer. For the
6951OpRegion case, added checksum verify. Use the table length from the table
6952header, not the region length. For the Buffer case, use the table length
6953also. Dennis Noordsij, Bob Moore. BZ 10734
6954
6955Fixed a problem where the same ACPI table could not be dynamically loaded
6956and
6957unloaded more than once. Without this change, a table cannot be loaded
6958again
6959once it has been loaded/unloaded one time. The current mechanism does not
6960unregister a table upon an unload. During a load, if the same table is
6961found,
6962this no longer returns an exception. BZ 722
6963
6964Fixed a problem where the wrong descriptor length was calculated for the
6965EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
6966EndTag
6967are calculated as 12 bytes long, but the actual length in the internal
6968descriptor is 16 because of the round-up to 8 on the 64-bit build.
6969Reported
6970by Linn Crosetto. BZ 728
6971
6972Fixed a possible memory leak in the Unload operator. The DdbHandle
6973returned
6974by Load() did not have its reference count decremented during unload,
6975leading
6976to a memory leak. Lin Ming. BZ 727
6977
6978Fixed a possible memory leak when deleting thermal/processor objects. Any
6979associated notify handlers (and objects) were not being deleted. Fiodor
6980Suietov. BZ 506
6981
6982Fixed the ordering of the ASCII names in the global mutex table to match
6983the
6984actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
6985only.
6986Vegard Nossum. BZ 726
6987
6988Enhanced the AcpiGetObjectInfo interface to return the number of required
6989arguments if the object is a control method. Added this call to the
6990debugger
6991so the proper number of default arguments are passed to a method. This
6992prevents a warning when executing methods from AcpiExec.
6993
6994Added a check for an invalid handle in AcpiGetObjectInfo. Return
6995AE_BAD_PARAMETER if input handle is invalid. BZ 474
6996
6997Fixed an extraneous warning from exconfig.c on the 64-bit build.
6998
6999Example Code and Data Size: These are the sizes for the OS-independent
7000acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7001debug version of the code includes the debug output trace mechanism and
7002has a
7003much larger code and data size.
7004
7005  Previous Release:
7006    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7007    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7008  Current Release:
7009    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
7010    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
7011
70122) iASL Compiler/Disassembler and Tools:
7013
7014iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
7015resource descriptor names.
7016
7017iASL: Detect invalid ASCII characters in input (windows version). Removed
7018the
7019"-CF" flag from the flex compile, enables correct detection of non-ASCII
7020characters in the input. BZ 441
7021
7022iASL: Eliminate warning when result of LoadTable is not used. Eliminate
7023the
7024"result of operation not used" warning when the DDB handle returned from
7025LoadTable is not used. The warning is not needed. BZ 590
7026
7027AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
7028method
7029to
7030pass address of table to the AML. Added option to disable OpRegion
7031simulation
7032to allow creation of an OpRegion with a real address that was passed to
7033_CFG.
7034All of this allows testing of the Load and Unload operators from
7035AcpiExec.
7036
7037Debugger: update tables command for unloaded tables. Handle unloaded
7038tables
7039and use the standard table header output routine.
7040
7041----------------------------------------
704209 June 2008. Summary of changes for version 20080609:
7043
70441) ACPI CA Core Subsystem:
7045
7046Implemented a workaround for reversed _PRT entries. A significant number
7047of
7048BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
7049change dynamically detects and repairs this problem. Provides
7050compatibility
7051with MS ACPI. BZ 6859
7052
7053Simplified the internal ACPI hardware interfaces to eliminate the locking
7054flag parameter from Register Read/Write. Added a new external interface,
7055AcpiGetRegisterUnlocked.
7056
7057Fixed a problem where the invocation of a GPE control method could hang.
7058This
7059was a regression introduced in 20080514. The new method argument count
7060validation mechanism can enter an infinite loop when a GPE method is
7061dispatched. Problem fixed by removing the obsolete code that passed GPE
7062block
7063information to the notify handler via the control method parameter
7064pointer.
7065
7066Fixed a problem where the _SST execution status was incorrectly returned
7067to
7068the caller of AcpiEnterSleepStatePrep. This was a regression introduced
7069in
707020080514. _SST is optional and a NOT_FOUND exception should never be
7071returned. BZ 716
7072
7073Fixed a problem where a deleted object could be accessed from within the
7074AML
7075parser. This was a regression introduced in version 20080123 as a fix for
7076the
7077Unload operator. Lin Ming. BZ 10669
7078
7079Cleaned up the debug operand dump mechanism. Eliminated unnecessary
7080operands
7081and eliminated the use of a negative index in a loop. Operands are now
7082displayed in the correct order, not backwards. This also fixes a
7083regression
7084introduced in 20080514 on 64-bit systems where the elimination of
7085ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
7086715
7087
7088Fixed a possible memory leak in EvPciConfigRegionSetup where the error
7089exit
7090path did not delete a locally allocated structure.
7091
7092Updated definitions for the DMAR and SRAT tables to synchronize with the
7093current specifications. Includes disassembler support.
7094
7095Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
7096loop termination value was used. Loop terminated on iteration early,
7097missing
7098one mutex. Linn Crosetto
7099
7100Example Code and Data Size: These are the sizes for the OS-independent
7101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7102debug version of the code includes the debug output trace mechanism and
7103has a
7104much larger code and data size.
7105
7106  Previous Release:
7107    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
7108    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
7109  Current Release:
7110    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7111    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7112
71132) iASL Compiler/Disassembler and Tools:
7114
7115Disassembler: Implemented support for EisaId() within _CID objects. Now
7116disassemble integer _CID objects back to EisaId invocations, including
7117multiple integers within _CID packages. Includes single-step support for
7118debugger also.
7119
7120Disassembler: Added support for DMAR and SRAT table definition changes.
7121
7122----------------------------------------
712314 May 2008. Summary of changes for version 20080514:
7124
71251) ACPI CA Core Subsystem:
7126
7127Fixed a problem where GPEs were enabled too early during the ACPICA
7128initialization. This could lead to "handler not installed" errors on some
7129machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
7130This
7131ensures that all operation regions and devices throughout the namespace
7132have
7133been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
7134
7135Implemented a change to the enter sleep code. Moved execution of the _GTS
7136method to just before setting sleep enable bit. The execution was moved
7137from
7138AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
7139immediately before the SLP_EN bit is set, as per the ACPI specification.
7140Luming Yu, BZ 1653.
7141
7142Implemented a fix to disable unknown GPEs (2nd version). Now always
7143disable
7144the GPE, even if ACPICA thinks that that it is already disabled. It is
7145possible that the AML or some other code has enabled the GPE unbeknownst
7146to
7147the ACPICA code.
7148
7149Fixed a problem with the Field operator where zero-length fields would
7150return
7151an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
7152ASL
7153field declarations in Field(), BankField(), and IndexField(). BZ 10606.
7154
7155Implemented a fix for the Load operator, now load the table at the
7156namespace
7157root. This reverts a change introduced in version 20071019. The table is
7158now
7159loaded at the namespace root even though this goes against the ACPI
7160specification. This provides compatibility with other ACPI
7161implementations.
7162The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
7163Ming.
7164
7165Fixed a problem where ACPICA would not Load() tables with unusual
7166signatures.
7167Now ignore ACPI table signature for Load() operator. Only "SSDT" is
7168acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
7169Therefore, signature validation is worthless. Apparently MS ACPI accepts
7170such
7171signatures, ACPICA must be compatible. BZ 10454.
7172
7173Fixed a possible negative array index in AcpiUtValidateException. Added
7174NULL
7175fields to the exception string arrays to eliminate a -1 subtraction on
7176the
7177SubStatus field.
7178
7179Updated the debug tracking macros to reduce overall code and data size.
7180Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
7181instead of pointers to static strings. Jan Beulich and Bob Moore.
7182
7183Implemented argument count checking in control method invocation via
7184AcpiEvaluateObject. Now emit an error if too few arguments, warning if
7185too
7186many. This applies only to extern programmatic control method execution,
7187not
7188method-to-method calls within the AML. Lin Ming.
7189
7190Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
7191no
7192longer needed, especially with the removal of 16-bit support. It was
7193replaced
7194mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
7195bit
7196on
719732/64-bit platforms is required.
7198
7199Added the C const qualifier for appropriate string constants -- mostly
7200MODULE_NAME and printf format strings. Jan Beulich.
7201
7202Example Code and Data Size: These are the sizes for the OS-independent
7203acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7204debug version of the code includes the debug output trace mechanism and
7205has a
7206much larger code and data size.
7207
7208  Previous Release:
7209    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
7210    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
7211  Current Release:
7212    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
7213    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
7214
72152) iASL Compiler/Disassembler and Tools:
7216
7217Implemented ACPI table revision ID validation in the disassembler. Zero
7218is
7219always invalid. For DSDTs, the ID controls the interpreter integer width.
72201
7221means 32-bit and this is unusual. 2 or greater is 64-bit.
7222
7223----------------------------------------
722421 March 2008. Summary of changes for version 20080321:
7225
72261) ACPI CA Core Subsystem:
7227
7228Implemented an additional change to the GPE support in order to suppress
7229spurious or stray GPEs. The AcpiEvDisableGpe function will now
7230permanently
7231disable incoming GPEs that are neither enabled nor disabled -- meaning
7232that
7233the GPE is unknown to the system. This should prevent future interrupt
7234floods
7235from that GPE. BZ 6217 (Zhang Rui)
7236
7237Fixed a problem where NULL package elements were not returned to the
7238AcpiEvaluateObject interface correctly. The element was simply ignored
7239instead of returning a NULL ACPI_OBJECT package element, potentially
7240causing
7241a buffer overflow and/or confusing the caller who expected a fixed number
7242of
7243elements. BZ 10132 (Lin Ming, Bob Moore)
7244
7245Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
7246Dword,
7247Qword), Field, BankField, and IndexField operators when invoked from
7248inside
7249an executing control method. In this case, these operators created
7250namespace
7251nodes that were incorrectly left marked as permanent nodes instead of
7252temporary nodes. This could cause a problem if there is race condition
7253between an exiting control method and a running namespace walk. (Reported
7254by
7255Linn Crosetto)
7256
7257Fixed a problem where the CreateField and CreateXXXField operators would
7258incorrectly allow duplicate names (the name of the field) with no
7259exception
7260generated.
7261
7262Implemented several changes for Notify handling. Added support for new
7263Notify
7264values (ACPI 2.0+) and improved the Notify debug output. Notify on
7265PowerResource objects is no longer allowed, as per the ACPI
7266specification.
7267(Bob Moore, Zhang Rui)
7268
7269All Reference Objects returned via the AcpiEvaluateObject interface are
7270now
7271marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
7272for
7273NULL objects - either NULL package elements or unresolved named
7274references.
7275
7276Fixed a problem where an extraneous debug message was produced for
7277package
7278objects (when debugging enabled). The message "Package List length larger
7279than NumElements count" is now produced in the correct case, and is now
7280an
7281error message rather than a debug message. Added a debug message for the
7282opposite case, where NumElements is larger than the Package List (the
7283package
7284will be padded out with NULL elements as per the ACPI spec.)
7285
7286Implemented several improvements for the output of the ASL "Debug" object
7287to
7288clarify and keep all data for a given object on one output line.
7289
7290Fixed two size calculation issues with the variable-length Start
7291Dependent
7292resource descriptor.
7293
7294Example Code and Data Size: These are the sizes for the OS-independent
7295acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7296debug version of the code includes the debug output trace mechanism and
7297has
7298a much larger code and data size.
7299
7300  Previous Release:
7301    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
7302    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
7303  Current Release:
7304    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
7305    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
7306
73072) iASL Compiler/Disassembler and Tools:
7308
7309Fixed a problem with the use of the Switch operator where execution of
7310the
7311containing method by multiple concurrent threads could cause an
7312AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
7313actual Switch opcode, it must be simulated with local named temporary
7314variables and if/else pairs. The solution chosen was to mark any method
7315that
7316uses Switch as Serialized, thus preventing multiple thread entries. BZ
7317469.
7318
7319----------------------------------------
732013 February 2008. Summary of changes for version 20080213:
7321
73221) ACPI CA Core Subsystem:
7323
7324Implemented another MS compatibility design change for GPE/Notify
7325handling.
7326GPEs are now cleared/enabled asynchronously to allow all pending notifies
7327to
7328complete first. It is expected that the OSL will queue the enable request
7329behind all pending notify requests (may require changes to the local host
7330OSL
7331in AcpiOsExecute). Alexey Starikovskiy.
7332
7333Fixed a problem where buffer and package objects passed as arguments to a
7334control method via the external AcpiEvaluateObject interface could cause
7335an
7336AE_AML_INTERNAL exception depending on the order and type of operators
7337executed by the target control method.
7338
7339Fixed a problem where resource descriptor size optimization could cause a
7340problem when a _CRS resource template is passed to a _SRS method. The
7341_SRS
7342resource template must use the same descriptors (with the same size) as
7343returned from _CRS. This change affects the following resource
7344descriptors:
7345IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
73469487)
7347
7348Fixed a problem where a CopyObject to RegionField, BankField, and
7349IndexField
7350objects did not perform an implicit conversion as it should. These types
7351must
7352retain their initial type permanently as per the ACPI specification.
7353However,
7354a CopyObject to all other object types should not perform an implicit
7355conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
7356
7357Fixed a problem with the AcpiGetDevices interface where the mechanism to
7358match device CIDs did not examine the entire list of available CIDs, but
7359instead aborted on the first non-matching CID. Andrew Patterson.
7360
7361Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
7362was
7363inadvertently changed to return a 16-bit value instead of a 32-bit value,
7364truncating the upper dword of a 64-bit value. This macro is only used to
7365display debug output, so no incorrect calculations were made. Also,
7366reimplemented the macro so that a 64-bit shift is not performed by
7367inefficient compilers.
7368
7369Added missing va_end statements that should correspond with each va_start
7370statement.
7371
7372Example Code and Data Size: These are the sizes for the OS-independent
7373acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7374debug version of the code includes the debug output trace mechanism and
7375has
7376a much larger code and data size.
7377
7378  Previous Release:
7379    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
7380    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
7381  Current Release:
7382    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
7383    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
7384
73852) iASL Compiler/Disassembler and Tools:
7386
7387Implemented full disassembler support for the following new ACPI tables:
7388BERT, EINJ, and ERST. Implemented partial disassembler support for the
7389complicated HEST table. These tables support the Windows Hardware Error
7390Architecture (WHEA).
7391
7392----------------------------------------
739323 January 2008. Summary of changes for version 20080123:
7394
73951) ACPI CA Core Subsystem:
7396
7397Added the 2008 copyright to all module headers and signons. This affects
7398virtually every file in the ACPICA core subsystem, the iASL compiler, and
7399the tools/utilities.
7400
7401Fixed a problem with the SizeOf operator when used with Package and
7402Buffer
7403objects. These objects have deferred execution for some arguments, and
7404the
7405execution is now completed before the SizeOf is executed. This problem
7406caused
7407unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
7408BZ
74099558
7410
7411Implemented an enhancement to the interpreter "slack mode". In the
7412absence
7413of
7414an explicit return or an implicitly returned object from the last
7415executed
7416opcode, a control method will now implicitly return an integer of value 0
7417for
7418Microsoft compatibility. (Lin Ming) BZ 392
7419
7420Fixed a problem with the Load operator where an exception was not
7421returned
7422in
7423the case where the table is already loaded. (Lin Ming) BZ 463
7424
7425Implemented support for the use of DDBHandles as an Indexed Reference, as
7426per
7427the ACPI spec. (Lin Ming) BZ 486
7428
7429Implemented support for UserTerm (Method invocation) for the Unload
7430operator
7431as per the ACPI spec. (Lin Ming) BZ 580
7432
7433Fixed a problem with the LoadTable operator where the OemId and
7434OemTableId
7435input strings could cause unexpected failures if they were shorter than
7436the
7437maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
7438
7439Implemented support for UserTerm (Method invocation) for the Unload
7440operator
7441as per the ACPI spec. (Lin Ming) BZ 580
7442
7443Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
7444HEST,
7445IBFT, UEFI, WDAT. Disassembler support is forthcoming.
7446
7447Example Code and Data Size: These are the sizes for the OS-independent
7448acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7449debug version of the code includes the debug output trace mechanism and
7450has
7451a much larger code and data size.
7452
7453  Previous Release:
7454    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
7455    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
7456  Current Release:
7457    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
7458    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
7459
74602) iASL Compiler/Disassembler and Tools:
7461
7462Implemented support in the disassembler for checksum validation on
7463incoming
7464binary DSDTs and SSDTs. If incorrect, a message is displayed within the
7465table
7466header dump at the start of the disassembly.
7467
7468Implemented additional debugging information in the namespace listing
7469file
7470created during compilation. In addition to the namespace hierarchy, the
7471full
7472pathname to each namespace object is displayed.
7473
7474Fixed a problem with the disassembler where invalid ACPI tables could
7475cause
7476faults or infinite loops.
7477
7478Fixed an unexpected parse error when using the optional "parameter types"
7479list in a control method declaration. (Lin Ming) BZ 397
7480
7481Fixed a problem where two External declarations with the same name did
7482not
7483cause an error (Lin Ming) BZ 509
7484
7485Implemented support for full TermArgs (adding Argx, Localx and method
7486invocation) for the ParameterData parameter to the LoadTable operator.
7487(Lin
7488Ming) BZ 583,587
7489
7490----------------------------------------
749119 December 2007. Summary of changes for version 20071219:
7492
74931) ACPI CA Core Subsystem:
7494
7495Implemented full support for deferred execution for the TermArg string
7496arguments for DataTableRegion. This enables forward references and full
7497operand resolution for the three string arguments. Similar to
7498OperationRegion
7499deferred argument execution.) Lin Ming. BZ 430
7500
7501Implemented full argument resolution support for the BankValue argument
7502to
7503BankField. Previously, only constants were supported, now any TermArg may
7504be
7505used. Lin Ming BZ 387, 393
7506
7507Fixed a problem with AcpiGetDevices where the search of a branch of the
7508device tree could be terminated prematurely. In accordance with the ACPI
7509specification, the search down the current branch is terminated if a
7510device
7511is both not present and not functional (instead of just not present.)
7512Yakui
7513Zhao.
7514
7515Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
7516if
7517the underlying AML code changed the GPE enable registers. Now, any
7518unknown
7519incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
7520disabled
7521instead of simply ignored. Rui Zhang.
7522
7523Fixed a problem with Index Fields where the Index register was
7524incorrectly
7525limited to a maximum of 32 bits. Now any size may be used.
7526
7527Fixed a couple memory leaks associated with "implicit return" objects
7528when
7529the AML Interpreter slack mode is enabled. Lin Ming BZ 349
7530
7531Example Code and Data Size: These are the sizes for the OS-independent
7532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7533debug version of the code includes the debug output trace mechanism and
7534has
7535a much larger code and data size.
7536
7537  Previous Release:
7538    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
7539    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
7540  Current Release:
7541    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
7542    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
7543
7544----------------------------------------
754514 November 2007. Summary of changes for version 20071114:
7546
75471) ACPI CA Core Subsystem:
7548
7549Implemented event counters for each of the Fixed Events, the ACPI SCI
7550(interrupt) itself, and control methods executed. Named
7551AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
7552These
7553should be useful for debugging and statistics.
7554
7555Implemented a new external interface, AcpiGetStatistics, to retrieve the
7556contents of the various event counters. Returns the current values for
7557AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
7558AcpiMethodCount. The interface can be expanded in the future if new
7559counters
7560are added. Device drivers should use this interface rather than access
7561the
7562counters directly.
7563
7564Fixed a problem with the FromBCD and ToBCD operators. With some
7565compilers,
7566the ShortDivide function worked incorrectly, causing problems with the
7567BCD
7568functions with large input values. A truncation from 64-bit to 32-bit
7569inadvertently occurred. Internal BZ 435. Lin Ming
7570
7571Fixed a problem with Index references passed as method arguments.
7572References
7573passed as arguments to control methods were dereferenced immediately
7574(before
7575control was passed to the called method). The references are now
7576correctly
7577passed directly to the called method. BZ 5389. Lin Ming
7578
7579Fixed a problem with CopyObject used in conjunction with the Index
7580operator.
7581The reference was incorrectly dereferenced before the copy. The reference
7582is
7583now correctly copied. BZ 5391. Lin Ming
7584
7585Fixed a problem with Control Method references within Package objects.
7586These
7587references are now correctly generated. This completes the package
7588construction overhaul that began in version 20071019.
7589
7590Example Code and Data Size: These are the sizes for the OS-independent
7591acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7592debug version of the code includes the debug output trace mechanism and
7593has
7594a much larger code and data size.
7595
7596  Previous Release:
7597    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
7598    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
7599  Current Release:
7600    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
7601    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
7602
7603
76042) iASL Compiler/Disassembler and Tools:
7605
7606The AcpiExec utility now installs handlers for all of the predefined
7607Operation Region types. New types supported are: PCI_Config, CMOS, and
7608PCIBARTarget.
7609
7610Fixed a problem with the 64-bit version of AcpiExec where the extended
7611(64-
7612bit) address fields for the DSDT and FACS within the FADT were not being
7613used, causing truncation of the upper 32-bits of these addresses. Lin
7614Ming
7615and Bob Moore
7616
7617----------------------------------------
761819 October 2007. Summary of changes for version 20071019:
7619
76201) ACPI CA Core Subsystem:
7621
7622Fixed a problem with the Alias operator when the target of the alias is a
7623named ASL operator that opens a new scope -- Scope, Device,
7624PowerResource,
7625Processor, and ThermalZone. In these cases, any children of the original
7626operator could not be accessed via the alias, potentially causing
7627unexpected
7628AE_NOT_FOUND exceptions. (BZ 9067)
7629
7630Fixed a problem with the Package operator where all named references were
7631created as object references and left otherwise unresolved. According to
7632the
7633ACPI specification, a Package can only contain Data Objects or references
7634to
7635control methods. The implication is that named references to Data Objects
7636(Integer, Buffer, String, Package, BufferField, Field) should be resolved
7637immediately upon package creation. This is the approach taken with this
7638change. References to all other named objects (Methods, Devices, Scopes,
7639etc.) are all now properly created as reference objects. (BZ 5328)
7640
7641Reverted a change to Notify handling that was introduced in version
764220070508. This version changed the Notify handling from asynchronous to
7643fully synchronous (Device driver Notify handling with respect to the
7644Notify
7645ASL operator). It was found that this change caused more problems than it
7646solved and was removed by most users.
7647
7648Fixed a problem with the Increment and Decrement operators where the type
7649of
7650the target object could be unexpectedly and incorrectly changed. (BZ 353)
7651Lin Ming.
7652
7653Fixed a problem with the Load and LoadTable operators where the table
7654location within the namespace was ignored. Instead, the table was always
7655loaded into the root or current scope. Lin Ming.
7656
7657Fixed a problem with the Load operator when loading a table from a buffer
7658object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
7659
7660Fixed a problem with the Debug object where a store of a DdbHandle
7661reference
7662object to the Debug object could cause a fault.
7663
7664Added a table checksum verification for the Load operator, in the case
7665where
7666the load is from a buffer. (BZ 578).
7667
7668Implemented additional parameter validation for the LoadTable operator.
7669The
7670length of the input strings SignatureString, OemIdString, and OemTableId
7671are
7672now checked for maximum lengths. (BZ 582) Lin Ming.
7673
7674Example Code and Data Size: These are the sizes for the OS-independent
7675acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7676debug version of the code includes the debug output trace mechanism and
7677has
7678a much larger code and data size.
7679
7680  Previous Release:
7681    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
7682    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
7683  Current Release:
7684    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
7685    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
7686
7687
76882) iASL Compiler/Disassembler:
7689
7690Fixed a problem where if a single file was specified and the file did not
7691exist, no error message was emitted. (Introduced with wildcard support in
7692version 20070917.)
7693
7694----------------------------------------
769519 September 2007. Summary of changes for version 20070919:
7696
76971) ACPI CA Core Subsystem:
7698
7699Designed and implemented new external interfaces to install and remove
7700handlers for ACPI table-related events. Current events that are defined
7701are
7702LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
7703they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
7704AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
7705
7706Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
7707(acpi_serialized option on Linux) could cause some systems to hang during
7708initialization. (Bob Moore) BZ 8171
7709
7710Fixed a problem where objects of certain types (Device, ThermalZone,
7711Processor, PowerResource) can be not found if they are declared and
7712referenced from within the same control method (Lin Ming) BZ 341
7713
7714Example Code and Data Size: These are the sizes for the OS-independent
7715acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7716debug version of the code includes the debug output trace mechanism and
7717has
7718a much larger code and data size.
7719
7720  Previous Release:
7721    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
7722    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
7723  Current Release:
7724    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
7725    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
7726
7727
77282) iASL Compiler/Disassembler:
7729
7730Implemented support to allow multiple files to be compiled/disassembled
7731in
7732a
7733single invocation. This includes command line wildcard support for both
7734the
7735Windows and Unix versions of the compiler. This feature simplifies the
7736disassembly and compilation of multiple ACPI tables in a single
7737directory.
7738
7739----------------------------------------
774008 May 2007. Summary of changes for version 20070508:
7741
77421) ACPI CA Core Subsystem:
7743
7744Implemented a Microsoft compatibility design change for the handling of
7745the
7746Notify AML operator. Previously, notify handlers were dispatched and
7747executed completely asynchronously in a deferred thread. The new design
7748still executes the notify handlers in a different thread, but the
7749original
7750thread that executed the Notify() now waits at a synchronization point
7751for
7752the notify handler to complete. Some machines depend on a synchronous
7753Notify
7754operator in order to operate correctly.
7755
7756Implemented support to allow Package objects to be passed as method
7757arguments to the external AcpiEvaluateObject interface. Previously, this
7758would return the AE_NOT_IMPLEMENTED exception. This feature had not been
7759implemented since there were no reserved control methods that required it
7760until recently.
7761
7762Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
7763that
7764contained invalid non-zero values in reserved fields could cause later
7765failures because these fields have meaning in later revisions of the
7766FADT.
7767For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
7768fields
7769are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
7770
7771Fixed a problem where the Global Lock handle was not properly updated if
7772a
7773thread that acquired the Global Lock via executing AML code then
7774attempted
7775to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
7776Joe
7777Liu.
7778
7779Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
7780could be corrupted if the interrupt being removed was at the head of the
7781list. Reported by Linn Crosetto.
7782
7783Example Code and Data Size: These are the sizes for the OS-independent
7784acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7785debug version of the code includes the debug output trace mechanism and
7786has
7787a much larger code and data size.
7788
7789  Previous Release:
7790    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7791    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
7792  Current Release:
7793    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
7794    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
7795
7796----------------------------------------
779720 March 2007. Summary of changes for version 20070320:
7798
77991) ACPI CA Core Subsystem:
7800
7801Implemented a change to the order of interpretation and evaluation of AML
7802operand objects within the AML interpreter. The interpreter now evaluates
7803operands in the order that they appear in the AML stream (and the
7804corresponding ASL code), instead of in the reverse order (after the
7805entire
7806operand list has been parsed). The previous behavior caused several
7807subtle
7808incompatibilities with the Microsoft AML interpreter as well as being
7809somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
7810
7811Implemented a change to the ACPI Global Lock support. All interfaces to
7812the
7813global lock now allow the same thread to acquire the lock multiple times.
7814This affects the AcpiAcquireGlobalLock external interface to the global
7815lock
7816as well as the internal use of the global lock to support AML fields -- a
7817control method that is holding the global lock can now simultaneously
7818access
7819AML fields that require global lock protection. Previously, in both
7820cases,
7821this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
7822to
7823AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
7824Controller. There is no change to the behavior of the AML Acquire
7825operator,
7826as this can already be used to acquire a mutex multiple times by the same
7827thread. BZ 8066. With assistance from Alexey Starikovskiy.
7828
7829Fixed a problem where invalid objects could be referenced in the AML
7830Interpreter after error conditions. During operand evaluation, ensure
7831that
7832the internal "Return Object" field is cleared on error and only valid
7833pointers are stored there. Caused occasional access to deleted objects
7834that
7835resulted in "large reference count" warning messages. Valery Podrezov.
7836
7837Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
7838on
7839deeply nested control method invocations. BZ 7873, local BZ 487. Valery
7840Podrezov.
7841
7842Fixed an internal problem with the handling of result objects on the
7843interpreter result stack. BZ 7872. Valery Podrezov.
7844
7845Removed obsolete code that handled the case where AML_NAME_OP is the
7846target
7847of a reference (Reference.Opcode). This code was no longer necessary. BZ
78487874. Valery Podrezov.
7849
7850Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
7851was
7852a
7853remnant from the previously discontinued 16-bit support.
7854
7855Example Code and Data Size: These are the sizes for the OS-independent
7856acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7857debug version of the code includes the debug output trace mechanism and
7858has
7859a much larger code and data size.
7860
7861  Previous Release:
7862    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7863    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7864  Current Release:
7865    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7866    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
7867
7868----------------------------------------
786926 January 2007. Summary of changes for version 20070126:
7870
78711) ACPI CA Core Subsystem:
7872
7873Added the 2007 copyright to all module headers and signons. This affects
7874virtually every file in the ACPICA core subsystem, the iASL compiler, and
7875the utilities.
7876
7877Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
7878during a table load. A bad pointer was passed in the case where the DSDT
7879is
7880overridden, causing a fault in this case.
7881
7882Example Code and Data Size: These are the sizes for the OS-independent
7883acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7884debug version of the code includes the debug output trace mechanism and
7885has
7886a much larger code and data size.
7887
7888  Previous Release:
7889    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7890    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7891  Current Release:
7892    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7893    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7894
7895----------------------------------------
789615 December 2006. Summary of changes for version 20061215:
7897
78981) ACPI CA Core Subsystem:
7899
7900Support for 16-bit ACPICA has been completely removed since it is no
7901longer
7902necessary and it clutters the code. All 16-bit macros, types, and
7903conditional compiles have been removed, cleaning up and simplifying the
7904code
7905across the entire subsystem. DOS support is no longer needed since the
7906bootable Linux firmware kit is now available.
7907
7908The handler for the Global Lock is now removed during AcpiTerminate to
7909enable a clean subsystem restart, via the implementation of the
7910AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
7911HP)
7912
7913Implemented enhancements to the multithreading support within the
7914debugger
7915to enable improved multithreading debugging and evaluation of the
7916subsystem.
7917(Valery Podrezov)
7918
7919Debugger: Enhanced the Statistics/Memory command to emit the total
7920(maximum)
7921memory used during the execution, as well as the maximum memory consumed
7922by
7923each of the various object types. (Valery Podrezov)
7924
7925Example Code and Data Size: These are the sizes for the OS-independent
7926acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7927debug version of the code includes the debug output trace mechanism and
7928has
7929a much larger code and data size.
7930
7931  Previous Release:
7932    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7933    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7934  Current Release:
7935    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7936    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7937
7938
79392) iASL Compiler/Disassembler and Tools:
7940
7941AcpiExec: Implemented a new option (-m) to display full memory use
7942statistics upon subsystem/program termination. (Valery Podrezov)
7943
7944----------------------------------------
794509 November 2006. Summary of changes for version 20061109:
7946
79471) ACPI CA Core Subsystem:
7948
7949Optimized the Load ASL operator in the case where the source operand is
7950an
7951operation region. Simply map the operation region memory, instead of
7952performing a bytewise read. (Region must be of type SystemMemory, see
7953below.)
7954
7955Fixed the Load ASL operator for the case where the source operand is a
7956region field. A buffer object is also allowed as the source operand. BZ
7957480
7958
7959Fixed a problem where the Load ASL operator allowed the source operand to
7960be
7961an operation region of any type. It is now restricted to regions of type
7962SystemMemory, as per the ACPI specification. BZ 481
7963
7964Additional cleanup and optimizations for the new Table Manager code.
7965
7966AcpiEnable will now fail if all of the required ACPI tables are not
7967loaded
7968(FADT, FACS, DSDT). BZ 477
7969
7970Added #pragma pack(8/4) to acobject.h to ensure that the structures in
7971this
7972header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
7973manually optimized to be aligned and will not work if it is byte-packed.
7974
7975Example Code and Data Size: These are the sizes for the OS-independent
7976acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7977debug version of the code includes the debug output trace mechanism and
7978has
7979a much larger code and data size.
7980
7981  Previous Release:
7982    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
7983    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
7984  Current Release:
7985    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7986    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7987
7988
79892) iASL Compiler/Disassembler and Tools:
7990
7991Fixed a problem where the presence of the _OSI predefined control method
7992within complex expressions could cause an internal compiler error.
7993
7994AcpiExec: Implemented full region support for multiple address spaces.
7995SpaceId is now part of the REGION object. BZ 429
7996
7997----------------------------------------
799811 October 2006. Summary of changes for version 20061011:
7999
80001) ACPI CA Core Subsystem:
8001
8002Completed an AML interpreter performance enhancement for control method
8003execution. Previously a 2-pass parse/execution, control methods are now
8004completely parsed and executed in a single pass. This improves overall
8005interpreter performance by ~25%, reduces code size, and reduces CPU stack
8006use. (Valery Podrezov + interpreter changes in version 20051202 that
8007eliminated namespace loading during the pass one parse.)
8008
8009Implemented _CID support for PCI Root Bridge detection. If the _HID does
8010not
8011match the predefined PCI Root Bridge IDs, the _CID list (if present) is
8012now
8013obtained and also checked for an ID match.
8014
8015Implemented additional support for the PCI _ADR execution: upsearch until
8016a
8017device scope is found before executing _ADR. This allows PCI_Config
8018operation regions to be declared locally within control methods
8019underneath
8020PCI device objects.
8021
8022Fixed a problem with a possible race condition between threads executing
8023AcpiWalkNamespace and the AML interpreter. This condition was removed by
8024modifying AcpiWalkNamespace to (by default) ignore all temporary
8025namespace
8026entries created during any concurrent control method execution. An
8027additional namespace race condition is known to exist between
8028AcpiWalkNamespace and the Load/Unload ASL operators and is still under
8029investigation.
8030
8031Restructured the AML ParseLoop function, breaking it into several
8032subfunctions in order to reduce CPU stack use and improve
8033maintainability.
8034(Mikhail Kouzmich)
8035
8036AcpiGetHandle: Fix for parameter validation to detect invalid
8037combinations
8038of prefix handle and pathname. BZ 478
8039
8040Example Code and Data Size: These are the sizes for the OS-independent
8041acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8042debug version of the code includes the debug output trace mechanism and
8043has
8044a much larger code and data size.
8045
8046  Previous Release:
8047    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8048    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8049  Current Release:
8050    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
8051    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
8052
80532) iASL Compiler/Disassembler and Tools:
8054
8055Ported the -g option (get local ACPI tables) to the new ACPICA Table
8056Manager
8057to restore original behavior.
8058
8059----------------------------------------
806027 September 2006. Summary of changes for version 20060927:
8061
80621) ACPI CA Core Subsystem:
8063
8064Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
8065These functions now use a spinlock for mutual exclusion and the interrupt
8066level indication flag is not needed.
8067
8068Fixed a problem with the Global Lock where the lock could appear to be
8069obtained before it is actually obtained. The global lock semaphore was
8070inadvertently created with one unit instead of zero units. (BZ 464)
8071Fiodor
8072Suietov.
8073
8074Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
8075during
8076a read from a buffer or region field. (BZ 458) Fiodor Suietov.
8077
8078Example Code and Data Size: These are the sizes for the OS-independent
8079acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8080debug version of the code includes the debug output trace mechanism and
8081has
8082a much larger code and data size.
8083
8084  Previous Release:
8085    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8086    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
8087  Current Release:
8088    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8089    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8090
8091
80922) iASL Compiler/Disassembler and Tools:
8093
8094Fixed a compilation problem with the pre-defined Resource Descriptor
8095field
8096names where an "object does not exist" error could be incorrectly
8097generated
8098if the parent ResourceTemplate pathname places the template within a
8099different namespace scope than the current scope. (BZ 7212)
8100
8101Fixed a problem where the compiler could hang after syntax errors
8102detected
8103in an ElseIf construct. (BZ 453)
8104
8105Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
8106operator. An incorrect output filename was produced when this parameter
8107was
8108a null string (""). Now, the original input filename is used as the AML
8109output filename, with an ".aml" extension.
8110
8111Implemented a generic batch command mode for the AcpiExec utility
8112(execute
8113any AML debugger command) (Valery Podrezov).
8114
8115----------------------------------------
811612 September 2006. Summary of changes for version 20060912:
8117
81181) ACPI CA Core Subsystem:
8119
8120Enhanced the implementation of the "serialized mode" of the interpreter
8121(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
8122specified, instead of creating a serialization semaphore per control
8123method,
8124the interpreter lock is simply no longer released before a blocking
8125operation during control method execution. This effectively makes the AML
8126Interpreter single-threaded. The overhead of a semaphore per-method is
8127eliminated.
8128
8129Fixed a regression where an error was no longer emitted if a control
8130method
8131attempts to create 2 objects of the same name. This once again returns
8132AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
8133that
8134will dynamically serialize the control method to possible prevent future
8135errors. (BZ 440)
8136
8137Integrated a fix for a problem with PCI Express HID detection in the PCI
8138Config Space setup procedure. (BZ 7145)
8139
8140Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
8141AcpiHwInitialize function - the FADT registers are now validated when the
8142table is loaded.
8143
8144Added two new warnings during FADT verification - 1) if the FADT is
8145larger
8146than the largest known FADT version, and 2) if there is a mismatch
8147between
8148a
814932-bit block address and the 64-bit X counterpart (when both are non-
8150zero.)
8151
8152Example Code and Data Size: These are the sizes for the OS-independent
8153acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8154debug version of the code includes the debug output trace mechanism and
8155has
8156a much larger code and data size.
8157
8158  Previous Release:
8159    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
8160    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
8161  Current Release:
8162    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8163    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
8164
8165
81662) iASL Compiler/Disassembler and Tools:
8167
8168Fixed a problem with the implementation of the Switch() operator where
8169the
8170temporary variable was declared too close to the actual Switch, instead
8171of
8172at method level. This could cause a problem if the Switch() operator is
8173within a while loop, causing an error on the second iteration. (BZ 460)
8174
8175Disassembler - fix for error emitted for unknown type for target of scope
8176operator. Now, ignore it and continue.
8177
8178Disassembly of an FADT now verifies the input FADT and reports any errors
8179found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
8180
8181Disassembly of raw data buffers with byte initialization data now
8182prefixes
8183each output line with the current buffer offset.
8184
8185Disassembly of ASF! table now includes all variable-length data fields at
8186the end of some of the subtables.
8187
8188The disassembler now emits a comment if a buffer appears to be a
8189ResourceTemplate, but cannot be disassembled as such because the EndTag
8190does
8191not appear at the very end of the buffer.
8192
8193AcpiExec - Added the "-t" command line option to enable the serialized
8194mode
8195of the AML interpreter.
8196
8197----------------------------------------
819831 August 2006. Summary of changes for version 20060831:
8199
82001) ACPI CA Core Subsystem:
8201
8202Miscellaneous fixes for the Table Manager:
8203- Correctly initialize internal common FADT for all 64-bit "X" fields
8204- Fixed a couple table mapping issues during table load
8205- Fixed a couple alignment issues for IA64
8206- Initialize input array to zero in AcpiInitializeTables
8207- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
8208AcpiGetTableByIndex
8209
8210Change for GPE support: when a "wake" GPE is received, all wake GPEs are
8211now
8212immediately disabled to prevent the waking GPE from firing again and to
8213prevent other wake GPEs from interrupting the wake process.
8214
8215Added the AcpiGpeCount global that tracks the number of processed GPEs,
8216to
8217be used for debugging systems with a large number of ACPI interrupts.
8218
8219Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
8220both the ACPICA headers and the disassembler.
8221
8222Example Code and Data Size: These are the sizes for the OS-independent
8223acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8224debug version of the code includes the debug output trace mechanism and
8225has
8226a much larger code and data size.
8227
8228  Previous Release:
8229    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
8230    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
8231  Current Release:
8232    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
8233    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
8234
8235
82362) iASL Compiler/Disassembler and Tools:
8237
8238Disassembler support for the DMAR ACPI table.
8239
8240----------------------------------------
824123 August 2006. Summary of changes for version 20060823:
8242
82431) ACPI CA Core Subsystem:
8244
8245The Table Manager component has been completely redesigned and
8246reimplemented. The new design is much simpler, and reduces the overall
8247code
8248and data size of the kernel-resident ACPICA by approximately 5%. Also, it
8249is
8250now possible to obtain the ACPI tables very early during kernel
8251initialization, even before dynamic memory management is initialized.
8252(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
8253
8254Obsolete ACPICA interfaces:
8255
8256- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
8257init
8258time).
8259- AcpiLoadTable: Not needed.
8260- AcpiUnloadTable: Not needed.
8261
8262New ACPICA interfaces:
8263
8264- AcpiInitializeTables: Must be called before the table manager can be
8265used.
8266- AcpiReallocateRootTable: Used to transfer the root table to dynamically
8267allocated memory after it becomes available.
8268- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
8269tables
8270in the RSDT/XSDT.
8271
8272Other ACPICA changes:
8273
8274- AcpiGetTableHeader returns the actual mapped table header, not a copy.
8275Use
8276AcpiOsUnmapMemory to free this mapping.
8277- AcpiGetTable returns the actual mapped table. The mapping is managed
8278internally and must not be deleted by the caller. Use of this interface
8279causes no additional dynamic memory allocation.
8280- AcpiFindRootPointer: Support for physical addressing has been
8281eliminated,
8282it appeared to be unused.
8283- The interface to AcpiOsMapMemory has changed to be consistent with the
8284other allocation interfaces.
8285- The interface to AcpiOsGetRootPointer has changed to eliminate
8286unnecessary
8287parameters.
8288- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
828964-
8290bit platforms. Was previously 64 bits on all platforms.
8291- The interface to the ACPI Global Lock acquire/release macros have
8292changed
8293slightly since ACPICA no longer keeps a local copy of the FACS with a
8294constructed pointer to the actual global lock.
8295
8296Porting to the new table manager:
8297
8298- AcpiInitializeTables: Must be called once, and can be called anytime
8299during the OS initialization process. It allows the host to specify an
8300area
8301of memory to be used to store the internal version of the RSDT/XSDT (root
8302table). This allows the host to access ACPI tables before memory
8303management
8304is initialized and running.
8305- AcpiReallocateRootTable: Can be called after memory management is
8306running
8307to copy the root table to a dynamically allocated array, freeing up the
8308scratch memory specified in the call to AcpiInitializeTables.
8309- AcpiSubsystemInitialize: This existing interface is independent of the
8310Table Manager, and does not have to be called before the Table Manager
8311can
8312be used, it only must be called before the rest of ACPICA can be used.
8313- ACPI Tables: Some changes have been made to the names and structure of
8314the
8315actbl.h and actbl1.h header files and may require changes to existing
8316code.
8317For example, bitfields have been completely removed because of their lack
8318of
8319portability across C compilers.
8320- Update interfaces to the Global Lock acquire/release macros if local
8321versions are used. (see acwin.h)
8322
8323Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
8324
8325New files: tbfind.c
8326
8327Example Code and Data Size: These are the sizes for the OS-independent
8328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8329debug version of the code includes the debug output trace mechanism and
8330has
8331a much larger code and data size.
8332
8333  Previous Release:
8334    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8335    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8336  Current Release:
8337    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
8338    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
8339
8340
83412) iASL Compiler/Disassembler and Tools:
8342
8343No changes for this release.
8344
8345----------------------------------------
834621 July 2006. Summary of changes for version 20060721:
8347
83481) ACPI CA Core Subsystem:
8349
8350The full source code for the ASL test suite used to validate the iASL
8351compiler and the ACPICA core subsystem is being released with the ACPICA
8352source for the first time. The source is contained in a separate package
8353and
8354consists of over 1100 files that exercise all ASL/AML operators. The
8355package
8356should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
8357Fiodor
8358Suietov)
8359
8360Completed a new design and implementation for support of the ACPI Global
8361Lock. On the OS side, the global lock is now treated as a standard AML
8362mutex. Previously, multiple OS threads could "acquire" the global lock
8363simultaneously. However, this could cause the BIOS to be starved out of
8364the
8365lock - especially in cases such as the Embedded Controller driver where
8366there is a tight coupling between the OS and the BIOS.
8367
8368Implemented an optimization for the ACPI Global Lock interrupt mechanism.
8369The Global Lock interrupt handler no longer queues the execution of a
8370separate thread to signal the global lock semaphore. Instead, the
8371semaphore
8372is signaled directly from the interrupt handler.
8373
8374Implemented support within the AML interpreter for package objects that
8375contain a larger AML length (package list length) than the package
8376element
8377count. In this case, the length of the package is truncated to match the
8378package element count. Some BIOS code apparently modifies the package
8379length
8380on the fly, and this change supports this behavior. Provides
8381compatibility
8382with the MS AML interpreter. (With assistance from Fiodor Suietov)
8383
8384Implemented a temporary fix for the BankValue parameter of a Bank Field
8385to
8386support all constant values, now including the Zero and One opcodes.
8387Evaluation of this parameter must eventually be converted to a full
8388TermArg
8389evaluation. A not-implemented error is now returned (temporarily) for
8390non-
8391constant values for this parameter.
8392
8393Fixed problem reports (Fiodor Suietov) integrated:
8394- Fix for premature object deletion after CopyObject on Operation Region
8395(BZ
8396350)
8397
8398Example Code and Data Size: These are the sizes for the OS-independent
8399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8400debug version of the code includes the debug output trace mechanism and
8401has
8402a much larger code and data size.
8403
8404  Previous Release:
8405    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
8406    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
8407  Current Release:
8408    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8409    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8410
8411
84122) iASL Compiler/Disassembler and Tools:
8413
8414No changes for this release.
8415
8416----------------------------------------
841707 July 2006. Summary of changes for version 20060707:
8418
84191) ACPI CA Core Subsystem:
8420
8421Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
8422that do not allow the initialization of address pointers within packed
8423structures - even though the hardware itself may support misaligned
8424transfers. Some of the debug data structures are packed by default to
8425minimize size.
8426
8427Added an error message for the case where AcpiOsGetThreadId() returns
8428zero.
8429A non-zero value is required by the core ACPICA code to ensure the proper
8430operation of AML mutexes and recursive control methods.
8431
8432The DSDT is now the only ACPI table that determines whether the AML
8433interpreter is in 32-bit or 64-bit mode. Not really a functional change,
8434but
8435the hooks for per-table 32/64 switching have been removed from the code.
8436A
8437clarification to the ACPI specification is forthcoming in ACPI 3.0B.
8438
8439Fixed a possible leak of an OwnerID in the error path of
8440AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
8441deletion to a single place in AcpiTbUninstallTable to correct possible
8442leaks
8443when using the AcpiTbDeleteTablesByType interface (with assistance from
8444Lance Ortiz.)
8445
8446Fixed a problem with Serialized control methods where the semaphore
8447associated with the method could be over-signaled after multiple method
8448invocations.
8449
8450Fixed two issues with the locking of the internal namespace data
8451structure.
8452Both the Unload() operator and AcpiUnloadTable interface now lock the
8453namespace during the namespace deletion associated with the table unload
8454(with assistance from Linn Crosetto.)
8455
8456Fixed problem reports (Valery Podrezov) integrated:
8457- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
8458
8459Fixed problem reports (Fiodor Suietov) integrated:
8460- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
8461- On Address Space handler deletion, needless deactivation call (BZ 374)
8462- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
8463375)
8464- Possible memory leak, Notify sub-objects of Processor, Power,
8465ThermalZone
8466(BZ 376)
8467- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
8468- Minimum Length of RSDT should be validated (BZ 379)
8469- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
8470Handler (BZ (380)
8471- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
8472loaded
8473(BZ 381)
8474
8475Example Code and Data Size: These are the sizes for the OS-independent
8476acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8477debug version of the code includes the debug output trace mechanism and
8478has
8479a much larger code and data size.
8480
8481  Previous Release:
8482    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
8483    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
8484  Current Release:
8485    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8486    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8487
8488
84892) iASL Compiler/Disassembler and Tools:
8490
8491Fixed problem reports:
8492Compiler segfault when ASL contains a long (>1024) String declaration (BZ
8493436)
8494
8495----------------------------------------
849623 June 2006. Summary of changes for version 20060623:
8497
84981) ACPI CA Core Subsystem:
8499
8500Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
8501allows the type to be customized to the host OS for improved efficiency
8502(since a spinlock is usually a very small object.)
8503
8504Implemented support for "ignored" bits in the ACPI registers. According
8505to
8506the ACPI specification, these bits should be preserved when writing the
8507registers via a read/modify/write cycle. There are 3 bits preserved in
8508this
8509manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
8510
8511Implemented the initial deployment of new OSL mutex interfaces. Since
8512some
8513host operating systems have separate mutex and semaphore objects, this
8514feature was requested. The base code now uses mutexes (and the new mutex
8515interfaces) wherever a binary semaphore was used previously. However, for
8516the current release, the mutex interfaces are defined as macros to map
8517them
8518to the existing semaphore interfaces. Therefore, no OSL changes are
8519required
8520at this time. (See acpiosxf.h)
8521
8522Fixed several problems with the support for the control method SyncLevel
8523parameter. The SyncLevel now works according to the ACPI specification
8524and
8525in concert with the Mutex SyncLevel parameter, since the current
8526SyncLevel
8527is a property of the executing thread. Mutual exclusion for control
8528methods
8529is now implemented with a mutex instead of a semaphore.
8530
8531Fixed three instances of the use of the C shift operator in the bitfield
8532support code (exfldio.c) to avoid the use of a shift value larger than
8533the
8534target data width. The behavior of C compilers is undefined in this case
8535and
8536can cause unpredictable results, and therefore the case must be detected
8537and
8538avoided. (Fiodor Suietov)
8539
8540Added an info message whenever an SSDT or OEM table is loaded dynamically
8541via the Load() or LoadTable() ASL operators. This should improve
8542debugging
8543capability since it will show exactly what tables have been loaded
8544(beyond
8545the tables present in the RSDT/XSDT.)
8546
8547Example Code and Data Size: These are the sizes for the OS-independent
8548acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8549debug version of the code includes the debug output trace mechanism and
8550has
8551a much larger code and data size.
8552
8553  Previous Release:
8554    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
8555    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
8556  Current Release:
8557    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
8558    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
8559
8560
85612) iASL Compiler/Disassembler and Tools:
8562
8563No changes for this release.
8564
8565----------------------------------------
856608 June 2006. Summary of changes for version 20060608:
8567
85681) ACPI CA Core Subsystem:
8569
8570Converted the locking mutex used for the ACPI hardware to a spinlock.
8571This
8572change should eliminate all problems caused by attempting to acquire a
8573semaphore at interrupt level, and it means that all ACPICA external
8574interfaces that directly access the ACPI hardware can be safely called
8575from
8576interrupt level. OSL code that implements the semaphore interfaces should
8577be
8578able to eliminate any workarounds for being called at interrupt level.
8579
8580Fixed a regression introduced in 20060526 where the ACPI device
8581initialization could be prematurely aborted with an AE_NOT_FOUND if a
8582device
8583did not have an optional _INI method.
8584
8585Fixed an IndexField issue where a write to the Data Register should be
8586limited in size to the AccessSize (width) of the IndexField itself. (BZ
8587433,
8588Fiodor Suietov)
8589
8590Fixed problem reports (Valery Podrezov) integrated:
8591- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
8592
8593Fixed problem reports (Fiodor Suietov) integrated:
8594- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
8595
8596Removed four global mutexes that were obsolete and were no longer being
8597used.
8598
8599Example Code and Data Size: These are the sizes for the OS-independent
8600acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8601debug version of the code includes the debug output trace mechanism and
8602has
8603a much larger code and data size.
8604
8605  Previous Release:
8606    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
8607    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
8608  Current Release:
8609    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
8610    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
8611
8612
86132) iASL Compiler/Disassembler and Tools:
8614
8615Fixed a fault when using -g option (get tables from registry) on Windows
8616machines.
8617
8618Fixed problem reports integrated:
8619- Generate error if CreateField NumBits parameter is zero. (BZ 405)
8620- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
8621Suietov)
8622- Global table revision override (-r) is ignored (BZ 413)
8623
8624----------------------------------------
862526 May 2006. Summary of changes for version 20060526:
8626
86271) ACPI CA Core Subsystem:
8628
8629Restructured, flattened, and simplified the internal interfaces for
8630namespace object evaluation - resulting in smaller code, less CPU stack
8631use,
8632and fewer interfaces. (With assistance from Mikhail Kouzmich)
8633
8634Fixed a problem with the CopyObject operator where the first parameter
8635was
8636not typed correctly for the parser, interpreter, compiler, and
8637disassembler.
8638Caused various errors and unexpected behavior.
8639
8640Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
8641produced incorrect results with some C compilers. Since the behavior of C
8642compilers when the shift value is larger than the datatype width is
8643apparently not well defined, the interpreter now detects this condition
8644and
8645simply returns zero as expected in all such cases. (BZ 395)
8646
8647Fixed problem reports (Valery Podrezov) integrated:
8648- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
8649- Allow interpreter to handle nested method declarations (BZ 5361)
8650
8651Fixed problem reports (Fiodor Suietov) integrated:
8652- AcpiTerminate doesn't free debug memory allocation list objects (BZ
8653355)
8654- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
8655356)
8656- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
8657- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
8658- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
8659- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
8660- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
8661- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
8662- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
8663365)
8664- Status of the Global Initialization Handler call not used (BZ 366)
8665- Incorrect object parameter to Global Initialization Handler (BZ 367)
8666
8667Example Code and Data Size: These are the sizes for the OS-independent
8668acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8669debug version of the code includes the debug output trace mechanism and
8670has
8671a much larger code and data size.
8672
8673  Previous Release:
8674    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
8675    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
8676  Current Release:
8677    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
8678    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
8679
8680
86812) iASL Compiler/Disassembler and Tools:
8682
8683Modified the parser to allow the names IO, DMA, and IRQ to be used as
8684namespace identifiers with no collision with existing resource descriptor
8685macro names. This provides compatibility with other ASL compilers and is
8686most useful for disassembly/recompilation of existing tables without
8687parse
8688errors. (With assistance from Thomas Renninger)
8689
8690Disassembler: fixed an incorrect disassembly problem with the
8691DataTableRegion and CopyObject operators. Fixed a possible fault during
8692disassembly of some Alias operators.
8693
8694----------------------------------------
869512 May 2006. Summary of changes for version 20060512:
8696
86971) ACPI CA Core Subsystem:
8698
8699Replaced the AcpiOsQueueForExecution interface with a new interface named
8700AcpiOsExecute. The major difference is that the new interface does not
8701have
8702a Priority parameter, this appeared to be useless and has been replaced
8703by
8704a
8705Type parameter. The Type tells the host what type of execution is being
8706requested, such as global lock handler, notify handler, GPE handler, etc.
8707This allows the host to queue and execute the request as appropriate for
8708the
8709request type, possibly using different work queues and different
8710priorities
8711for the various request types. This enables fixes for multithreading
8712deadlock problems such as BZ #5534, and will require changes to all
8713existing
8714OS interface layers. (Alexey Starikovskiy and Bob Moore)
8715
8716Fixed a possible memory leak associated with the support for the so-
8717called
8718"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
8719Suietov)
8720
8721Fixed a problem with the Load() operator where a table load from an
8722operation region could overwrite an internal table buffer by up to 7
8723bytes
8724and cause alignment faults on IPF systems. (With assistance from Luming
8725Yu)
8726
8727Example Code and Data Size: These are the sizes for the OS-independent
8728acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8729debug version of the code includes the debug output trace mechanism and
8730has
8731a much larger code and data size.
8732
8733  Previous Release:
8734    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
8735    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
8736  Current Release:
8737    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
8738    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
8739
8740
8741
87422) iASL Compiler/Disassembler and Tools:
8743
8744Disassembler: Implemented support to cross reference the internal
8745namespace
8746and automatically generate ASL External() statements for symbols not
8747defined
8748within the current table being disassembled. This will simplify the
8749disassembly and recompilation of interdependent tables such as SSDTs
8750since
8751these statements will no longer have to be added manually.
8752
8753Disassembler: Implemented experimental support to automatically detect
8754invocations of external control methods and generate appropriate
8755External()
8756statements. This is problematic because the AML cannot be correctly
8757parsed
8758until the number of arguments for each control method is known.
8759Currently,
8760standalone method invocations and invocations as the source operand of a
8761Store() statement are supported.
8762
8763Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
8764LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
8765LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
8766more readable and likely closer to the original ASL source.
8767
8768----------------------------------------
876921 April 2006. Summary of changes for version 20060421:
8770
87711) ACPI CA Core Subsystem:
8772
8773Removed a device initialization optimization introduced in 20051216 where
8774the _STA method was not run unless an _INI was also present for the same
8775device. This optimization could cause problems because it could allow
8776_INI
8777methods to be run within a not-present device subtree. (If a not-present
8778device had no _INI, _STA would not be run, the not-present status would
8779not
8780be discovered, and the children of the device would be incorrectly
8781traversed.)
8782
8783Implemented a new _STA optimization where namespace subtrees that do not
8784contain _INI are identified and ignored during device initialization.
8785Selectively running _STA can significantly improve boot time on large
8786machines (with assistance from Len Brown.)
8787
8788Implemented support for the device initialization case where the returned
8789_STA flags indicate a device not-present but functioning. In this case,
8790_INI
8791is not run, but the device children are examined for presence, as per the
8792ACPI specification.
8793
8794Implemented an additional change to the IndexField support in order to
8795conform to MS behavior. The value written to the Index Register is not
8796simply a byte offset, it is a byte offset in units of the access width of
8797the parent Index Field. (Fiodor Suietov)
8798
8799Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
8800interface is called during the creation of all AML operation regions, and
8801allows the host OS to exert control over what addresses it will allow the
8802AML code to access. Operation Regions whose addresses are disallowed will
8803cause a runtime exception when they are actually accessed (will not
8804affect
8805or abort table loading.) See oswinxf or osunixxf for an example
8806implementation.
8807
8808Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
8809interface allows the host OS to match the various "optional"
8810interface/behavior strings for the _OSI predefined control method as
8811appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
8812for an example implementation.
8813
8814Restructured and corrected various problems in the exception handling
8815code
8816paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
8817(with assistance from Takayoshi Kochi.)
8818
8819Modified the Linux source converter to ignore quoted string literals
8820while
8821converting identifiers from mixed to lower case. This will correct
8822problems
8823with the disassembler and other areas where such strings must not be
8824modified.
8825
8826The ACPI_FUNCTION_* macros no longer require quotes around the function
8827name. This allows the Linux source converter to convert the names, now
8828that
8829the converter ignores quoted strings.
8830
8831Example Code and Data Size: These are the sizes for the OS-independent
8832acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8833debug version of the code includes the debug output trace mechanism and
8834has
8835a much larger code and data size.
8836
8837  Previous Release:
8838
8839    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
8840    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
8841  Current Release:
8842    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
8843    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
8844
8845
88462) iASL Compiler/Disassembler and Tools:
8847
8848Implemented 3 new warnings for iASL, and implemented multiple warning
8849levels
8850(w2 flag).
8851
88521) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
8853not
8854WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
8855check for the possible timeout, a warning is issued.
8856
88572) Useless operators: If an ASL operator does not specify an optional
8858target
8859operand and it also does not use the function return value from the
8860operator, a warning is issued since the operator effectively does
8861nothing.
8862
88633) Unreferenced objects: If a namespace object is created, but never
8864referenced, a warning is issued. This is a warning level 2 since there
8865are
8866cases where this is ok, such as when a secondary table is loaded that
8867uses
8868the unreferenced objects. Even so, care is taken to only flag objects
8869that
8870don't look like they will ever be used. For example, the reserved methods
8871(starting with an underscore) are usually not referenced because it is
8872expected that the OS will invoke them.
8873
8874----------------------------------------
887531 March 2006. Summary of changes for version 20060331:
8876
88771) ACPI CA Core Subsystem:
8878
8879Implemented header file support for the following additional ACPI tables:
8880ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
8881support,
8882all current and known ACPI tables are now defined in the ACPICA headers
8883and
8884are available for use by device drivers and other software.
8885
8886Implemented support to allow tables that contain ACPI names with invalid
8887characters to be loaded. Previously, this would cause the table load to
8888fail, but since there are several known cases of such tables on existing
8889machines, this change was made to enable ACPI support for them. Also,
8890this
8891matches the behavior of the Microsoft ACPI implementation.
8892
8893Fixed a couple regressions introduced during the memory optimization in
8894the
889520060317 release. The namespace node definition required additional
8896reorganization and an internal datatype that had been changed to 8-bit
8897was
8898restored to 32-bit. (Valery Podrezov)
8899
8900Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
8901could be passed through to AcpiOsReleaseObject which is unexpected. Such
8902null pointers are now trapped and ignored, matching the behavior of the
8903previous implementation before the deployment of AcpiOsReleaseObject.
8904(Valery Podrezov, Fiodor Suietov)
8905
8906Fixed a memory mapping leak during the deletion of a SystemMemory
8907operation
8908region where a cached memory mapping was not deleted. This became a
8909noticeable problem for operation regions that are defined within
8910frequently
8911used control methods. (Dana Meyers)
8912
8913Reorganized the ACPI table header files into two main files: one for the
8914ACPI tables consumed by the ACPICA core, and another for the
8915miscellaneous
8916ACPI tables that are consumed by the drivers and other software. The
8917various
8918FADT definitions were merged into one common section and three different
8919tables (ACPI 1.0, 1.0+, and 2.0)
8920
8921Example Code and Data Size: These are the sizes for the OS-independent
8922acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8923debug version of the code includes the debug output trace mechanism and
8924has
8925a much larger code and data size.
8926
8927  Previous Release:
8928    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
8929    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
8930  Current Release:
8931    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
8932    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
8933
8934
89352) iASL Compiler/Disassembler and Tools:
8936
8937Disassembler: Implemented support to decode and format all non-AML ACPI
8938tables (tables other than DSDTs and SSDTs.) This includes the new tables
8939added to the ACPICA headers, therefore all current and known ACPI tables
8940are
8941supported.
8942
8943Disassembler: The change to allow ACPI names with invalid characters also
8944enables the disassembly of such tables. Invalid characters within names
8945are
8946changed to '*' to make the name printable; the iASL compiler will still
8947generate an error for such names, however, since this is an invalid ACPI
8948character.
8949
8950Implemented an option for AcpiXtract (-a) to extract all tables found in
8951the
8952input file. The default invocation extracts only the DSDTs and SSDTs.
8953
8954Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
8955makefile for the AcpiXtract utility.
8956
8957----------------------------------------
895817 March 2006. Summary of changes for version 20060317:
8959
89601) ACPI CA Core Subsystem:
8961
8962Implemented the use of a cache object for all internal namespace nodes.
8963Since there are about 1000 static nodes in a typical system, this will
8964decrease memory use for cache implementations that minimize per-
8965allocation
8966overhead (such as a slab allocator.)
8967
8968Removed the reference count mechanism for internal namespace nodes, since
8969it
8970was deemed unnecessary. This reduces the size of each namespace node by
8971about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
8972case,
8973and 32 bytes for the 64-bit case.
8974
8975Optimized several internal data structures to reduce object size on 64-
8976bit
8977platforms by packing data within the 64-bit alignment. This includes the
8978frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
8979instances corresponding to the namespace objects.
8980
8981Added two new strings for the predefined _OSI method: "Windows 2001.1
8982SP1"
8983and "Windows 2006".
8984
8985Split the allocation tracking mechanism out to a separate file, from
8986utalloc.c to uttrack.c. This mechanism appears to be only useful for
8987application-level code. Kernels may wish to not include uttrack.c in
8988distributions.
8989
8990Removed all remnants of the obsolete ACPI_REPORT_* macros and the
8991associated
8992code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
8993macros.)
8994
8995Code and Data Size: These are the sizes for the acpica.lib produced by
8996the
8997Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8998ACPI
8999driver or OSPM code. The debug version of the code includes the debug
9000output
9001trace mechanism and has a much larger code and data size. Note that these
9002values will vary depending on the efficiency of the compiler and the
9003compiler options used during generation.
9004
9005  Previous Release:
9006    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9007    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9008  Current Release:
9009    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
9010    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
9011
9012
90132) iASL Compiler/Disassembler and Tools:
9014
9015Implemented an ANSI C version of the acpixtract utility. This version
9016will
9017automatically extract the DSDT and all SSDTs from the input acpidump text
9018file and dump the binary output to separate files. It can also display a
9019summary of the input file including the headers for each table found and
9020will extract any single ACPI table, with any signature. (See
9021source/tools/acpixtract)
9022
9023----------------------------------------
902410 March 2006. Summary of changes for version 20060310:
9025
90261) ACPI CA Core Subsystem:
9027
9028Tagged all external interfaces to the subsystem with the new
9029ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
9030assist
9031kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
9032macro. The default definition is NULL.
9033
9034Added the ACPI_THREAD_ID type for the return value from
9035AcpiOsGetThreadId.
9036This allows the host to define this as necessary to simplify kernel
9037integration. The default definition is ACPI_NATIVE_UINT.
9038
9039Fixed two interpreter problems related to error processing, the deletion
9040of
9041objects, and placing invalid pointers onto the internal operator result
9042stack. BZ 6028, 6151 (Valery Podrezov)
9043
9044Increased the reference count threshold where a warning is emitted for
9045large
9046reference counts in order to eliminate unnecessary warnings on systems
9047with
9048large namespaces (especially 64-bit.) Increased the value from 0x400 to
90490x800.
9050
9051Due to universal disagreement as to the meaning of the 'c' in the
9052calloc()
9053function, the ACPI_MEM_CALLOCATE macro has been renamed to
9054ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
9055ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
9056ACPI_FREE.
9057
9058Code and Data Size: These are the sizes for the acpica.lib produced by
9059the
9060Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9061ACPI
9062driver or OSPM code. The debug version of the code includes the debug
9063output
9064trace mechanism and has a much larger code and data size. Note that these
9065values will vary depending on the efficiency of the compiler and the
9066compiler options used during generation.
9067
9068  Previous Release:
9069    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
9070    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
9071  Current Release:
9072    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9073    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9074
9075
90762) iASL Compiler/Disassembler:
9077
9078Disassembler: implemented support for symbolic resource descriptor
9079references. If a CreateXxxxField operator references a fixed offset
9080within
9081a
9082resource descriptor, a name is assigned to the descriptor and the offset
9083is
9084translated to the appropriate resource tag and pathname. The addition of
9085this support brings the disassembled code very close to the original ASL
9086source code and helps eliminate run-time errors when the disassembled
9087code
9088is modified (and recompiled) in such a way as to invalidate the original
9089fixed offsets.
9090
9091Implemented support for a Descriptor Name as the last parameter to the
9092ASL
9093Register() macro. This parameter was inadvertently left out of the ACPI
9094specification, and will be added for ACPI 3.0b.
9095
9096Fixed a problem where the use of the "_OSI" string (versus the full path
9097"\_OSI") caused an internal compiler error. ("No back ptr to op")
9098
9099Fixed a problem with the error message that occurs when an invalid string
9100is
9101used for a _HID object (such as one with an embedded asterisk:
9102"*PNP010A".)
9103The correct message is now displayed.
9104
9105----------------------------------------
910617 February 2006. Summary of changes for version 20060217:
9107
91081) ACPI CA Core Subsystem:
9109
9110Implemented a change to the IndexField support to match the behavior of
9111the
9112Microsoft AML interpreter. The value written to the Index register is now
9113a
9114byte offset, no longer an index based upon the width of the Data
9115register.
9116This should fix IndexField problems seen on some machines where the Data
9117register is not exactly one byte wide. The ACPI specification will be
9118clarified on this point.
9119
9120Fixed a problem where several resource descriptor types could overrun the
9121internal descriptor buffer due to size miscalculation: VendorShort,
9122VendorLong, and Interrupt. This was noticed on IA64 machines, but could
9123affect all platforms.
9124
9125Fixed a problem where individual resource descriptors were misaligned
9126within
9127the internal buffer, causing alignment faults on IA64 platforms.
9128
9129Code and Data Size: These are the sizes for the acpica.lib produced by
9130the
9131Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9132ACPI
9133driver or OSPM code. The debug version of the code includes the debug
9134output
9135trace mechanism and has a much larger code and data size. Note that these
9136values will vary depending on the efficiency of the compiler and the
9137compiler options used during generation.
9138
9139  Previous Release:
9140    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9141    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
9142  Current Release:
9143    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
9144    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
9145
9146
91472) iASL Compiler/Disassembler:
9148
9149Implemented support for new reserved names: _WDG and _WED are Microsoft
9150extensions for Windows Instrumentation Management, _TDL is a new ACPI-
9151defined method (Throttling Depth Limit.)
9152
9153Fixed a problem where a zero-length VendorShort or VendorLong resource
9154descriptor was incorrectly emitted as a descriptor of length one.
9155
9156----------------------------------------
915710 February 2006. Summary of changes for version 20060210:
9158
91591) ACPI CA Core Subsystem:
9160
9161Removed a couple of extraneous ACPI_ERROR messages that appeared during
9162normal execution. These became apparent after the conversion from
9163ACPI_DEBUG_PRINT.
9164
9165Fixed a problem where the CreateField operator could hang if the BitIndex
9166or
9167NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
9168
9169Fixed a problem where a DeRefOf operation on a buffer object incorrectly
9170failed with an exception. This also fixes a couple of related RefOf and
9171DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
9172
9173Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
9174of
9175AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
9176BZ
91775480)
9178
9179Implemented a memory cleanup at the end of the execution of each
9180iteration
9181of an AML While() loop, preventing the accumulation of outstanding
9182objects.
9183(Valery Podrezov, BZ 5427)
9184
9185Eliminated a chunk of duplicate code in the object resolution code.
9186(Valery
9187Podrezov, BZ 5336)
9188
9189Fixed several warnings during the 64-bit code generation.
9190
9191The AcpiSrc source code conversion tool now inserts one line of
9192whitespace
9193after an if() statement that is followed immediately by a comment,
9194improving
9195readability of the Linux code.
9196
9197Code and Data Size: The current and previous library sizes for the core
9198subsystem are shown below. These are the code and data sizes for the
9199acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9200These
9201values do not include any ACPI driver or OSPM code. The debug version of
9202the
9203code includes the debug output trace mechanism and has a much larger code
9204and data size. Note that these values will vary depending on the
9205efficiency
9206of the compiler and the compiler options used during generation.
9207
9208  Previous Release:
9209    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
9210    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
9211  Current Release:
9212    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9213    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
9214
9215
92162) iASL Compiler/Disassembler:
9217
9218Fixed a problem with the disassembly of a BankField operator with a
9219complex
9220expression for the BankValue parameter.
9221
9222----------------------------------------
922327 January 2006. Summary of changes for version 20060127:
9224
92251) ACPI CA Core Subsystem:
9226
9227Implemented support in the Resource Manager to allow unresolved
9228namestring
9229references within resource package objects for the _PRT method. This
9230support
9231is in addition to the previously implemented unresolved reference support
9232within the AML parser. If the interpreter slack mode is enabled, these
9233unresolved references will be passed through to the caller as a NULL
9234package
9235entry.
9236
9237Implemented and deployed new macros and functions for error and warning
9238messages across the subsystem. These macros are simpler and generate less
9239code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
9240ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
9241macros remain defined to allow ACPI drivers time to migrate to the new
9242macros.
9243
9244Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
9245the
9246Acquire/Release Lock OSL interfaces.
9247
9248Fixed a problem where Alias ASL operators are sometimes not correctly
9249resolved, in both the interpreter and the iASL compiler.
9250
9251Fixed several problems with the implementation of the
9252ConcatenateResTemplate
9253ASL operator. As per the ACPI specification, zero length buffers are now
9254treated as a single EndTag. One-length buffers always cause a fatal
9255exception. Non-zero length buffers that do not end with a full 2-byte
9256EndTag
9257cause a fatal exception.
9258
9259Fixed a possible structure overwrite in the AcpiGetObjectInfo external
9260interface. (With assistance from Thomas Renninger)
9261
9262Code and Data Size: The current and previous library sizes for the core
9263subsystem are shown below. These are the code and data sizes for the
9264acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9265These
9266values do not include any ACPI driver or OSPM code. The debug version of
9267the
9268code includes the debug output trace mechanism and has a much larger code
9269and data size. Note that these values will vary depending on the
9270efficiency
9271of the compiler and the compiler options used during generation.
9272
9273  Previous Release:
9274    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9275    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9276  Current Release:
9277    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
9278    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
9279
9280
92812) iASL Compiler/Disassembler:
9282
9283Fixed an internal error that was generated for any forward references to
9284ASL
9285Alias objects.
9286
9287----------------------------------------
928813 January 2006. Summary of changes for version 20060113:
9289
92901) ACPI CA Core Subsystem:
9291
9292Added 2006 copyright to all module headers and signons. This affects
9293virtually every file in the ACPICA core subsystem, iASL compiler, and the
9294utilities.
9295
9296Enhanced the ACPICA error reporting in order to simplify user migration
9297to
9298the non-debug version of ACPICA. Replaced all instances of the
9299ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
9300debug
9301levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
9302respectively. This preserves all error and warning messages in the non-
9303debug
9304version of the ACPICA code (this has been referred to as the "debug lite"
9305option.) Over 200 cases were converted to create a total of over 380
9306error/warning messages across the ACPICA code. This increases the code
9307and
9308data size of the default non-debug version of the code somewhat (about
930913K),
9310but all error/warning reporting may be disabled if desired (and code
9311eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
9312configuration option. The size of the debug version of ACPICA remains
9313about
9314the same.
9315
9316Fixed a memory leak within the AML Debugger "Set" command. One object was
9317not properly deleted for every successful invocation of the command.
9318
9319Code and Data Size: The current and previous library sizes for the core
9320subsystem are shown below. These are the code and data sizes for the
9321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9322These
9323values do not include any ACPI driver or OSPM code. The debug version of
9324the
9325code includes the debug output trace mechanism and has a much larger code
9326and data size. Note that these values will vary depending on the
9327efficiency
9328of the compiler and the compiler options used during generation.
9329
9330  Previous Release:
9331    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
9332    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
9333  Current Release:
9334    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9335    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9336
9337
93382) iASL Compiler/Disassembler:
9339
9340The compiler now officially supports the ACPI 3.0a specification that was
9341released on December 30, 2005. (Specification is available at
9342www.acpi.info)
9343
9344----------------------------------------
934516 December 2005. Summary of changes for version 20051216:
9346
93471) ACPI CA Core Subsystem:
9348
9349Implemented optional support to allow unresolved names within ASL Package
9350objects. A null object is inserted in the package when a named reference
9351cannot be located in the current namespace. Enabled via the interpreter
9352slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
9353machines
9354that contain such code.
9355
9356Implemented an optimization to the initialization sequence that can
9357improve
9358boot time. During ACPI device initialization, the _STA method is now run
9359if
9360and only if the _INI method exists. The _STA method is used to determine
9361if
9362the device is present; An _INI can only be run if _STA returns present,
9363but
9364it is a waste of time to run the _STA method if the _INI does not exist.
9365(Prototype and assistance from Dong Wei)
9366
9367Implemented use of the C99 uintptr_t for the pointer casting macros if it
9368is
9369available in the current compiler. Otherwise, the default (void *) cast
9370is
9371used as before.
9372
9373Fixed some possible memory leaks found within the execution path of the
9374Break, Continue, If, and CreateField operators. (Valery Podrezov)
9375
9376Fixed a problem introduced in the 20051202 release where an exception is
9377generated during method execution if a control method attempts to declare
9378another method.
9379
9380Moved resource descriptor string constants that are used by both the AML
9381disassembler and AML debugger to the common utilities directory so that
9382these components are independent.
9383
9384Implemented support in the AcpiExec utility (-e switch) to globally
9385ignore
9386exceptions during control method execution (method is not aborted.)
9387
9388Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
9389generation.
9390
9391Code and Data Size: The current and previous library sizes for the core
9392subsystem are shown below. These are the code and data sizes for the
9393acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9394These
9395values do not include any ACPI driver or OSPM code. The debug version of
9396the
9397code includes the debug output trace mechanism and has a much larger code
9398and data size. Note that these values will vary depending on the
9399efficiency
9400of the compiler and the compiler options used during generation.
9401
9402  Previous Release:
9403    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9404    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
9405  Current Release:
9406    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
9407    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
9408
9409
94102) iASL Compiler/Disassembler:
9411
9412Fixed a problem where a CPU stack overflow fault could occur if a
9413recursive
9414method call was made from within a Return statement.
9415
9416----------------------------------------
941702 December 2005. Summary of changes for version 20051202:
9418
94191) ACPI CA Core Subsystem:
9420
9421Modified the parsing of control methods to no longer create namespace
9422objects during the first pass of the parse. Objects are now created only
9423during the execute phase, at the moment the namespace creation operator
9424is
9425encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
9426This
9427should eliminate ALREADY_EXISTS exceptions seen on some machines where
9428reentrant control methods are protected by an AML mutex. The mutex will
9429now
9430correctly block multiple threads from attempting to create the same
9431object
9432more than once.
9433
9434Increased the number of available Owner Ids for namespace object tracking
9435from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
9436on
9437some machines with a large number of ACPI tables (either static or
9438dynamic).
9439
9440Fixed a problem with the AcpiExec utility where a fault could occur when
9441the
9442-b switch (batch mode) is used.
9443
9444Enhanced the namespace dump routine to output the owner ID for each
9445namespace object.
9446
9447Code and Data Size: The current and previous library sizes for the core
9448subsystem are shown below. These are the code and data sizes for the
9449acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9450These
9451values do not include any ACPI driver or OSPM code. The debug version of
9452the
9453code includes the debug output trace mechanism and has a much larger code
9454and data size. Note that these values will vary depending on the
9455efficiency
9456of the compiler and the compiler options used during generation.
9457
9458  Previous Release:
9459    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9460    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9461  Current Release:
9462    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9463    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
9464
9465
94662) iASL Compiler/Disassembler:
9467
9468Fixed a parse error during compilation of certain Switch/Case constructs.
9469To
9470simplify the parse, the grammar now allows for multiple Default
9471statements
9472and this error is now detected and flagged during the analysis phase.
9473
9474Disassembler: The disassembly now includes the contents of the original
9475table header within a comment at the start of the file. This includes the
9476name and version of the original ASL compiler.
9477
9478----------------------------------------
947917 November 2005. Summary of changes for version 20051117:
9480
94811) ACPI CA Core Subsystem:
9482
9483Fixed a problem in the AML parser where the method thread count could be
9484decremented below zero if any errors occurred during the method parse
9485phase.
9486This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
9487machines.
9488This also fixed a related regression with the mechanism that detects and
9489corrects methods that cannot properly handle reentrancy (related to the
9490deployment of the new OwnerId mechanism.)
9491
9492Eliminated the pre-parsing of control methods (to detect errors) during
9493table load. Related to the problem above, this was causing unwind issues
9494if
9495any errors occurred during the parse, and it seemed to be overkill. A
9496table
9497load should not be aborted if there are problems with any single control
9498method, thus rendering this feature rather pointless.
9499
9500Fixed a problem with the new table-driven resource manager where an
9501internal
9502buffer overflow could occur for small resource templates.
9503
9504Implemented a new external interface, AcpiGetVendorResource. This
9505interface
9506will find and return a vendor-defined resource descriptor within a _CRS
9507or
9508_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
9509Helgaas.
9510
9511Removed the length limit (200) on string objects as per the upcoming ACPI
95123.0A specification. This affects the following areas of the interpreter:
95131)
9514any implicit conversion of a Buffer to a String, 2) a String object
9515result
9516of the ASL Concatentate operator, 3) the String object result of the ASL
9517ToString operator.
9518
9519Fixed a problem in the Windows OS interface layer (OSL) where a
9520WAIT_FOREVER
9521on a semaphore object would incorrectly timeout. This allows the
9522multithreading features of the AcpiExec utility to work properly under
9523Windows.
9524
9525Updated the Linux makefiles for the iASL compiler and AcpiExec to include
9526the recently added file named "utresrc.c".
9527
9528Code and Data Size: The current and previous library sizes for the core
9529subsystem are shown below. These are the code and data sizes for the
9530acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9531These
9532values do not include any ACPI driver or OSPM code. The debug version of
9533the
9534code includes the debug output trace mechanism and has a much larger code
9535and data size. Note that these values will vary depending on the
9536efficiency
9537of the compiler and the compiler options used during generation.
9538
9539  Previous Release:
9540    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
9541    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9542  Current Release:
9543    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9544    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9545
9546
95472) iASL Compiler/Disassembler:
9548
9549Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
9550specification. For the iASL compiler, this means that string literals
9551within
9552the source ASL can be of any length.
9553
9554Enhanced the listing output to dump the AML code for resource descriptors
9555immediately after the ASL code for each descriptor, instead of in a block
9556at
9557the end of the entire resource template.
9558
9559Enhanced the compiler debug output to dump the entire original parse tree
9560constructed during the parse phase, before any transforms are applied to
9561the
9562tree. The transformed tree is dumped also.
9563
9564----------------------------------------
956502 November 2005. Summary of changes for version 20051102:
9566
95671) ACPI CA Core Subsystem:
9568
9569Modified the subsystem initialization sequence to improve GPE support.
9570The
9571GPE initialization has been split into two parts in order to defer
9572execution
9573of the _PRW methods (Power Resources for Wake) until after the hardware
9574is
9575fully initialized and the SCI handler is installed. This allows the _PRW
9576methods to access fields protected by the Global Lock. This will fix
9577systems
9578where a NO_GLOBAL_LOCK exception has been seen during initialization.
9579
9580Converted the ACPI internal object disassemble and display code within
9581the
9582AML debugger to fully table-driven operation, reducing code size and
9583increasing maintainability.
9584
9585Fixed a regression with the ConcatenateResTemplate() ASL operator
9586introduced
9587in the 20051021 release.
9588
9589Implemented support for "local" internal ACPI object types within the
9590debugger "Object" command and the AcpiWalkNamespace external interfaces.
9591These local types include RegionFields, BankFields, IndexFields, Alias,
9592and
9593reference objects.
9594
9595Moved common AML resource handling code into a new file, "utresrc.c".
9596This
9597code is shared by both the Resource Manager and the AML Debugger.
9598
9599Code and Data Size: The current and previous library sizes for the core
9600subsystem are shown below. These are the code and data sizes for the
9601acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9602These
9603values do not include any ACPI driver or OSPM code. The debug version of
9604the
9605code includes the debug output trace mechanism and has a much larger code
9606and data size. Note that these values will vary depending on the
9607efficiency
9608of the compiler and the compiler options used during generation.
9609
9610  Previous Release:
9611    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
9612    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
9613  Current Release:
9614    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
9615    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9616
9617
96182) iASL Compiler/Disassembler:
9619
9620Fixed a problem with very large initializer lists (more than 4000
9621elements)
9622for both Buffer and Package objects where the parse stack could overflow.
9623
9624Enhanced the pre-compile source code scan for non-ASCII characters to
9625ignore
9626characters within comment fields. The scan is now always performed and is
9627no
9628longer optional, detecting invalid characters within a source file
9629immediately rather than during the parse phase or later.
9630
9631Enhanced the ASL grammar definition to force early reductions on all
9632list-
9633style grammar elements so that the overall parse stack usage is greatly
9634reduced. This should improve performance and reduce the possibility of
9635parse
9636stack overflow.
9637
9638Eliminated all reduce/reduce conflicts in the iASL parser generation.
9639Also,
9640with the addition of a %expected statement, the compiler generates from
9641source with no warnings.
9642
9643Fixed a possible segment fault in the disassembler if the input filename
9644does not contain a "dot" extension (Thomas Renninger).
9645
9646----------------------------------------
964721 October 2005. Summary of changes for version 20051021:
9648
96491) ACPI CA Core Subsystem:
9650
9651Implemented support for the EM64T and other x86-64 processors. This
9652essentially entails recognizing that these processors support non-aligned
9653memory transfers. Previously, all 64-bit processors were assumed to lack
9654hardware support for non-aligned transfers.
9655
9656Completed conversion of the Resource Manager to nearly full table-driven
9657operation. Specifically, the resource conversion code (convert AML to
9658internal format and the reverse) and the debug code to dump internal
9659resource descriptors are fully table-driven, reducing code and data size
9660and
9661improving maintainability.
9662
9663The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
9664word
9665on 64-bit processors instead of a fixed 32-bit word. (With assistance
9666from
9667Alexey Starikovskiy)
9668
9669Implemented support within the resource conversion code for the Type-
9670Specific byte within the various ACPI 3.0 *WordSpace macros.
9671
9672Fixed some issues within the resource conversion code for the type-
9673specific
9674flags for both Memory and I/O address resource descriptors. For Memory,
9675implemented support for the MTP and TTP flags. For I/O, split the TRS and
9676TTP flags into two separate fields.
9677
9678Code and Data Size: The current and previous library sizes for the core
9679subsystem are shown below. These are the code and data sizes for the
9680acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9681These
9682values do not include any ACPI driver or OSPM code. The debug version of
9683the
9684code includes the debug output trace mechanism and has a much larger code
9685and data size. Note that these values will vary depending on the
9686efficiency
9687of the compiler and the compiler options used during generation.
9688
9689  Previous Release:
9690    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
9691    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
9692  Current Release:
9693    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
9694    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
9695
9696
9697
96982) iASL Compiler/Disassembler:
9699
9700Relaxed a compiler restriction that disallowed a ResourceIndex byte if
9701the
9702corresponding ResourceSource string was not also present in a resource
9703descriptor declaration. This restriction caused problems with existing
9704AML/ASL code that includes the Index byte without the string. When such
9705AML
9706was disassembled, it could not be compiled without modification. Further,
9707the modified code created a resource template with a different size than
9708the
9709original, breaking code that used fixed offsets into the resource
9710template
9711buffer.
9712
9713Removed a recent feature of the disassembler to ignore a lone
9714ResourceIndex
9715byte. This byte is now emitted if present so that the exact AML can be
9716reproduced when the disassembled code is recompiled.
9717
9718Improved comments and text alignment for the resource descriptor code
9719emitted by the disassembler.
9720
9721Implemented disassembler support for the ACPI 3.0 AccessSize field within
9722a
9723Register() resource descriptor.
9724
9725----------------------------------------
972630 September 2005. Summary of changes for version 20050930:
9727
97281) ACPI CA Core Subsystem:
9729
9730Completed a major overhaul of the Resource Manager code - specifically,
9731optimizations in the area of the AML/internal resource conversion code.
9732The
9733code has been optimized to simplify and eliminate duplicated code, CPU
9734stack
9735use has been decreased by optimizing function parameters and local
9736variables, and naming conventions across the manager have been
9737standardized
9738for clarity and ease of maintenance (this includes function, parameter,
9739variable, and struct/typedef names.) The update may force changes in some
9740driver code, depending on how resources are handled by the host OS.
9741
9742All Resource Manager dispatch and information tables have been moved to a
9743single location for clarity and ease of maintenance. One new file was
9744created, named "rsinfo.c".
9745
9746The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
9747guarantee that the argument is not evaluated twice, making them less
9748prone
9749to macro side-effects. However, since there exists the possibility of
9750additional stack use if a particular compiler cannot optimize them (such
9751as
9752in the debug generation case), the original macros are optionally
9753available.
9754Note that some invocations of the return_VALUE macro may now cause size
9755mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
9756to
9757eliminate these. (From Randy Dunlap)
9758
9759Implemented a new mechanism to enable debug tracing for individual
9760control
9761methods. A new external interface, AcpiDebugTrace, is provided to enable
9762this mechanism. The intent is to allow the host OS to easily enable and
9763disable tracing for problematic control methods. This interface can be
9764easily exposed to a user or debugger interface if desired. See the file
9765psxface.c for details.
9766
9767AcpiUtCallocate will now return a valid pointer if a length of zero is
9768specified - a length of one is used and a warning is issued. This matches
9769the behavior of AcpiUtAllocate.
9770
9771Code and Data Size: The current and previous library sizes for the core
9772subsystem are shown below. These are the code and data sizes for the
9773acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9774These
9775values do not include any ACPI driver or OSPM code. The debug version of
9776the
9777code includes the debug output trace mechanism and has a much larger code
9778and data size. Note that these values will vary depending on the
9779efficiency
9780of the compiler and the compiler options used during generation.
9781
9782  Previous Release:
9783    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
9784    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
9785  Current Release:
9786    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
9787    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
9788
9789
97902) iASL Compiler/Disassembler:
9791
9792A remark is issued if the effective compile-time length of a package or
9793buffer is zero. Previously, this was a warning.
9794
9795----------------------------------------
979616 September 2005. Summary of changes for version 20050916:
9797
97981) ACPI CA Core Subsystem:
9799
9800Fixed a problem within the Resource Manager where support for the Generic
9801Register descriptor was not fully implemented. This descriptor is now
9802fully
9803recognized, parsed, disassembled, and displayed.
9804
9805Completely restructured the Resource Manager code to utilize table-driven
9806dispatch and lookup, eliminating many of the large switch() statements.
9807This
9808reduces overall subsystem code size and code complexity. Affects the
9809resource parsing and construction, disassembly, and debug dump output.
9810
9811Cleaned up and restructured the debug dump output for all resource
9812descriptors. Improved readability of the output and reduced code size.
9813
9814Fixed a problem where changes to internal data structures caused the
9815optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
9816
9817Code and Data Size: The current and previous library sizes for the core
9818subsystem are shown below. These are the code and data sizes for the
9819acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9820These
9821values do not include any ACPI driver or OSPM code. The debug version of
9822the
9823code includes the debug output trace mechanism and has a much larger code
9824and data size. Note that these values will vary depending on the
9825efficiency
9826of the compiler and the compiler options used during generation.
9827
9828  Previous Release:
9829    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
9830    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
9831  Current Release:
9832    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
9833    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
9834
9835
98362) iASL Compiler/Disassembler:
9837
9838Updated the disassembler to automatically insert an EndDependentFn()
9839macro
9840into the ASL stream if this macro is missing in the original AML code,
9841simplifying compilation of the resulting ASL module.
9842
9843Fixed a problem in the disassembler where a disassembled ResourceSource
9844string (within a large resource descriptor) was not surrounded by quotes
9845and
9846not followed by a comma, causing errors when the resulting ASL module was
9847compiled. Also, escape sequences within a ResourceSource string are now
9848handled correctly (especially "\\")
9849
9850----------------------------------------
985102 September 2005. Summary of changes for version 20050902:
9852
98531) ACPI CA Core Subsystem:
9854
9855Fixed a problem with the internal Owner ID allocation and deallocation
9856mechanisms for control method execution and recursive method invocation.
9857This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
9858messages seen on some systems. Recursive method invocation depth is
9859currently limited to 255. (Alexey Starikovskiy)
9860
9861Completely eliminated all vestiges of support for the "module-level
9862executable code" until this support is fully implemented and debugged.
9863This
9864should eliminate the NO_RETURN_VALUE exceptions seen during table load on
9865some systems that invoke this support.
9866
9867Fixed a problem within the resource manager code where the transaction
9868flags
9869for a 64-bit address descriptor were handled incorrectly in the type-
9870specific flag byte.
9871
9872Consolidated duplicate code within the address descriptor resource
9873manager
9874code, reducing overall subsystem code size.
9875
9876Fixed a fault when using the AML debugger "disassemble" command to
9877disassemble individual control methods.
9878
9879Removed references to the "release_current" directory within the Unix
9880release package.
9881
9882Code and Data Size: The current and previous core subsystem library sizes
9883are shown below. These are the code and data sizes for the acpica.lib
9884produced by the Microsoft Visual C++ 6.0 compiler. These values do not
9885include any ACPI driver or OSPM code. The debug version of the code
9886includes
9887the debug output trace mechanism and has a much larger code and data
9888size.
9889Note that these values will vary depending on the efficiency of the
9890compiler
9891and the compiler options used during generation.
9892
9893  Previous Release:
9894    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9895    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9896  Current Release:
9897    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
9898    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
9899
9900
99012) iASL Compiler/Disassembler:
9902
9903Implemented an error check for illegal duplicate values in the interrupt
9904and
9905dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
9906Interrupt().
9907
9908Implemented error checking for the Irq() and IrqNoFlags() macros to
9909detect
9910too many values in the interrupt list (16 max) and invalid values in the
9911list (range 0 - 15)
9912
9913The maximum length string literal within an ASL file is now restricted to
9914200 characters as per the ACPI specification.
9915
9916Fixed a fault when using the -ln option (generate namespace listing).
9917
9918Implemented an error check to determine if a DescriptorName within a
9919resource descriptor has already been used within the current scope.
9920
9921----------------------------------------
992215 August 2005.  Summary of changes for version 20050815:
9923
99241) ACPI CA Core Subsystem:
9925
9926Implemented a full bytewise compare to determine if a table load request
9927is
9928attempting to load a duplicate table. The compare is performed if the
9929table
9930signatures and table lengths match. This will allow different tables with
9931the same OEM Table ID and revision to be loaded - probably against the
9932ACPI
9933specification, but discovered in the field nonetheless.
9934
9935Added the changes.txt logfile to each of the zipped release packages.
9936
9937Code and Data Size: Current and previous core subsystem library sizes are
9938shown below. These are the code and data sizes for the acpica.lib
9939produced
9940by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9941any ACPI driver or OSPM code. The debug version of the code includes the
9942debug output trace mechanism and has a much larger code and data size.
9943Note
9944that these values will vary depending on the efficiency of the compiler
9945and
9946the compiler options used during generation.
9947
9948  Previous Release:
9949    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9950    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
9951  Current Release:
9952    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9953    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9954
9955
99562) iASL Compiler/Disassembler:
9957
9958Fixed a problem where incorrect AML code could be generated for Package
9959objects if optimization is disabled (via the -oa switch).
9960
9961Fixed a problem with where incorrect AML code is generated for variable-
9962length packages when the package length is not specified and the number
9963of
9964initializer values is greater than 255.
9965
9966
9967----------------------------------------
996829 July 2005.  Summary of changes for version 20050729:
9969
99701) ACPI CA Core Subsystem:
9971
9972Implemented support to ignore an attempt to install/load a particular
9973ACPI
9974table more than once. Apparently there exists BIOS code that repeatedly
9975attempts to load the same SSDT upon certain events. With assistance from
9976Venkatesh Pallipadi.
9977
9978Restructured the main interface to the AML parser in order to correctly
9979handle all exceptional conditions. This will prevent leakage of the
9980OwnerId
9981resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
9982some
9983machines. With assistance from Alexey Starikovskiy.
9984
9985Support for "module level code" has been disabled in this version due to
9986a
9987number of issues that have appeared on various machines. The support can
9988be
9989enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
9990compilation. When the issues are fully resolved, the code will be enabled
9991by
9992default again.
9993
9994Modified the internal functions for debug print support to define the
9995FunctionName parameter as a (const char *) for compatibility with
9996compiler
9997built-in macros such as __FUNCTION__, etc.
9998
9999Linted the entire ACPICA source tree for both 32-bit and 64-bit.
10000
10001Implemented support to display an object count summary for the AML
10002Debugger
10003commands Object and Methods.
10004
10005Code and Data Size: Current and previous core subsystem library sizes are
10006shown below. These are the code and data sizes for the acpica.lib
10007produced
10008by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10009any ACPI driver or OSPM code. The debug version of the code includes the
10010debug output trace mechanism and has a much larger code and data size.
10011Note
10012that these values will vary depending on the efficiency of the compiler
10013and
10014the compiler options used during generation.
10015
10016  Previous Release:
10017    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10018    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10019  Current Release:
10020    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10021    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
10022
10023
100242) iASL Compiler/Disassembler:
10025
10026Fixed a regression that appeared in the 20050708 version of the compiler
10027where an error message was inadvertently emitted for invocations of the
10028_OSI
10029reserved control method.
10030
10031----------------------------------------
1003208 July 2005.  Summary of changes for version 20050708:
10033
100341) ACPI CA Core Subsystem:
10035
10036The use of the CPU stack in the debug version of the subsystem has been
10037considerably reduced. Previously, a debug structure was declared in every
10038function that used the debug macros. This structure has been removed in
10039favor of declaring the individual elements as parameters to the debug
10040functions. This reduces the cumulative stack use during nested execution
10041of
10042ACPI function calls at the cost of a small increase in the code size of
10043the
10044debug version of the subsystem. With assistance from Alexey Starikovskiy
10045and
10046Len Brown.
10047
10048Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
10049headers to define a macro that will return the current function name at
10050runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
10051by
10052the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
10053compiler-dependent header, the function name is saved on the CPU stack
10054(one
10055pointer per function.) This mechanism is used because apparently there
10056exists no standard ANSI-C defined macro that that returns the function
10057name.
10058
10059Redesigned and reimplemented the "Owner ID" mechanism used to track
10060namespace objects created/deleted by ACPI tables and control method
10061execution. A bitmap is now used to allocate and free the IDs, thus
10062solving
10063the wraparound problem present in the previous implementation. The size
10064of
10065the namespace node descriptor was reduced by 2 bytes as a result (Alexey
10066Starikovskiy).
10067
10068Removed the UINT32_BIT and UINT16_BIT types that were used for the
10069bitfield
10070flag definitions within the headers for the predefined ACPI tables. These
10071have been replaced by UINT8_BIT in order to increase the code portability
10072of
10073the subsystem. If the use of UINT8 remains a problem, we may be forced to
10074eliminate bitfields entirely because of a lack of portability.
10075
10076Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
10077This
10078is a frequently used function and this improvement increases the
10079performance
10080of the entire subsystem (Alexey Starikovskiy).
10081
10082Fixed several possible memory leaks and the inverse - premature object
10083deletion (Alexey Starikovskiy).
10084
10085Code and Data Size: Current and previous core subsystem library sizes are
10086shown below. These are the code and data sizes for the acpica.lib
10087produced
10088by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10089any ACPI driver or OSPM code. The debug version of the code includes the
10090debug output trace mechanism and has a much larger code and data size.
10091Note
10092that these values will vary depending on the efficiency of the compiler
10093and
10094the compiler options used during generation.
10095
10096  Previous Release:
10097    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
10098    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
10099  Current Release:
10100    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10101    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10102
10103----------------------------------------
1010424 June 2005.  Summary of changes for version 20050624:
10105
101061) ACPI CA Core Subsystem:
10107
10108Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
10109the host-defined cache object. This allows the OSL implementation to
10110define
10111and type this object in any manner desired, simplifying the OSL
10112implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
10113Linux, and should be defined in the OS-specific header file for other
10114operating systems as required.
10115
10116Changed the interface to AcpiOsAcquireObject to directly return the
10117requested object as the function return (instead of ACPI_STATUS.) This
10118change was made for performance reasons, since this is the purpose of the
10119interface in the first place. AcpiOsAcquireObject is now similar to the
10120AcpiOsAllocate interface.
10121
10122Implemented a new AML debugger command named Businfo. This command
10123displays
10124information about all devices that have an associate _PRT object. The
10125_ADR,
10126_HID, _UID, and _CID are displayed for these devices.
10127
10128Modified the initialization sequence in AcpiInitializeSubsystem to call
10129the
10130OSL interface AcpiOslInitialize first, before any local initialization.
10131This
10132change was required because the global initialization now calls OSL
10133interfaces.
10134
10135Enhanced the Dump command to display the entire contents of Package
10136objects
10137(including all sub-objects and their values.)
10138
10139Restructured the code base to split some files because of size and/or
10140because the code logically belonged in a separate file. New files are
10141listed
10142below. All makefiles and project files included in the ACPI CA release
10143have
10144been updated.
10145    utilities/utcache.c           /* Local cache interfaces */
10146    utilities/utmutex.c           /* Local mutex support */
10147    utilities/utstate.c           /* State object support */
10148    interpreter/parser/psloop.c   /* Main AML parse loop */
10149
10150Code and Data Size: Current and previous core subsystem library sizes are
10151shown below. These are the code and data sizes for the acpica.lib
10152produced
10153by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10154any ACPI driver or OSPM code. The debug version of the code includes the
10155debug output trace mechanism and has a much larger code and data size.
10156Note
10157that these values will vary depending on the efficiency of the compiler
10158and
10159the compiler options used during generation.
10160
10161  Previous Release:
10162    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
10163    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
10164  Current Release:
10165    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
10166    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
10167
10168
101692) iASL Compiler/Disassembler:
10170
10171Fixed a regression introduced in version 20050513 where the use of a
10172Package
10173object within a Case() statement caused a compile time exception. The
10174original behavior has been restored (a Match() operator is emitted.)
10175
10176----------------------------------------
1017717 June 2005.  Summary of changes for version 20050617:
10178
101791) ACPI CA Core Subsystem:
10180
10181Moved the object cache operations into the OS interface layer (OSL) to
10182allow
10183the host OS to handle these operations if desired (for example, the Linux
10184OSL will invoke the slab allocator). This support is optional; the
10185compile
10186time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
10187cache
10188code in the ACPI CA core. The new OSL interfaces are shown below. See
10189utalloc.c for an example implementation, and acpiosxf.h for the exact
10190interface definitions. With assistance from Alexey Starikovskiy.
10191    AcpiOsCreateCache
10192    AcpiOsDeleteCache
10193    AcpiOsPurgeCache
10194    AcpiOsAcquireObject
10195    AcpiOsReleaseObject
10196
10197Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
10198return
10199and restore a flags parameter. This fits better with many OS lock models.
10200Note: the current execution state (interrupt handler or not) is no longer
10201passed to these interfaces. If necessary, the OSL must determine this
10202state
10203by itself, a simple and fast operation. With assistance from Alexey
10204Starikovskiy.
10205
10206Fixed a problem in the ACPI table handling where a valid XSDT was assumed
10207present if the revision of the RSDP was 2 or greater. According to the
10208ACPI
10209specification, the XSDT is optional in all cases, and the table manager
10210therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
10211Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
10212contain
10213only the RSDT.
10214
10215Fixed an interpreter problem with the Mid() operator in the case of an
10216input
10217string where the resulting output string is of zero length. It now
10218correctly
10219returns a valid, null terminated string object instead of a string object
10220with a null pointer.
10221
10222Fixed a problem with the control method argument handling to allow a
10223store
10224to an Arg object that already contains an object of type Device. The
10225Device
10226object is now correctly overwritten. Previously, an error was returned.
10227
10228
10229Enhanced the debugger Find command to emit object values in addition to
10230the
10231found object pathnames. The output format is the same as the dump
10232namespace
10233command.
10234
10235Enhanced the debugger Set command. It now has the ability to set the
10236value
10237of any Named integer object in the namespace (Previously, only method
10238locals
10239and args could be set.)
10240
10241Code and Data Size: Current and previous core subsystem library sizes are
10242shown below. These are the code and data sizes for the acpica.lib
10243produced
10244by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10245any ACPI driver or OSPM code. The debug version of the code includes the
10246debug output trace mechanism and has a much larger code and data size.
10247Note
10248that these values will vary depending on the efficiency of the compiler
10249and
10250the compiler options used during generation.
10251
10252  Previous Release:
10253    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
10254    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
10255  Current Release:
10256    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
10257    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
10258
10259
102602) iASL Compiler/Disassembler:
10261
10262Fixed a regression in the disassembler where if/else/while constructs
10263were
10264output incorrectly. This problem was introduced in the previous release
10265(20050526). This problem also affected the single-step disassembly in the
10266debugger.
10267
10268Fixed a problem where compiling the reserved _OSI method would randomly
10269(but
10270rarely) produce compile errors.
10271
10272Enhanced the disassembler to emit compilable code in the face of
10273incorrect
10274AML resource descriptors. If the optional ResourceSourceIndex is present,
10275but the ResourceSource is not, do not emit the ResourceSourceIndex in the
10276disassembly. Otherwise, the resulting code cannot be compiled without
10277errors.
10278
10279----------------------------------------
1028026 May 2005.  Summary of changes for version 20050526:
10281
102821) ACPI CA Core Subsystem:
10283
10284Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
10285the module level (not within a control method.) These opcodes are
10286executed
10287exactly once at the time the table is loaded. This type of code was legal
10288up
10289until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
10290in
10291order to provide backwards compatibility with earlier BIOS
10292implementations.
10293This eliminates the "Encountered executable code at module level" warning
10294that was previously generated upon detection of such code.
10295
10296Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
10297inadvertently be generated during the lookup of namespace objects in the
10298second pass parse of ACPI tables and control methods. It appears that
10299this
10300problem could occur during the resolution of forward references to
10301namespace
10302objects.
10303
10304Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
10305corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
10306allows the deadlock detection debug code to be compiled out in the normal
10307case, improving mutex performance (and overall subsystem performance)
10308considerably.
10309
10310Implemented a handful of miscellaneous fixes for possible memory leaks on
10311error conditions and error handling control paths. These fixes were
10312suggested by FreeBSD and the Coverity Prevent source code analysis tool.
10313
10314Added a check for a null RSDT pointer in AcpiGetFirmwareTable
10315(tbxfroot.c)
10316to prevent a fault in this error case.
10317
10318Code and Data Size: Current and previous core subsystem library sizes are
10319shown below. These are the code and data sizes for the acpica.lib
10320produced
10321by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10322any ACPI driver or OSPM code. The debug version of the code includes the
10323debug output trace mechanism and has a much larger code and data size.
10324Note
10325that these values will vary depending on the efficiency of the compiler
10326and
10327the compiler options used during generation.
10328
10329  Previous Release:
10330    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10331    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10332  Current Release:
10333    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
10334    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
10335
10336
103372) iASL Compiler/Disassembler:
10338
10339Implemented support to allow Type 1 and Type 2 ASL operators to appear at
10340the module level (not within a control method.) These operators will be
10341executed once at the time the table is loaded. This type of code was
10342legal
10343up until the release of ACPI 2.0B (2002) and is now supported by the iASL
10344compiler in order to provide backwards compatibility with earlier BIOS
10345ASL
10346code.
10347
10348The ACPI integer width (specified via the table revision ID or the -r
10349override, 32 or 64 bits) is now used internally during compile-time
10350constant
10351folding to ensure that constants are truncated to 32 bits if necessary.
10352Previously, the revision ID value was only emitted in the AML table
10353header.
10354
10355An error message is now generated for the Mutex and Method operators if
10356the
10357SyncLevel parameter is outside the legal range of 0 through 15.
10358
10359Fixed a problem with the Method operator ParameterTypes list handling
10360(ACPI
103613.0). Previously, more than 2 types or 2 arguments generated a syntax
10362error.
10363The actual underlying implementation of method argument typechecking is
10364still under development, however.
10365
10366----------------------------------------
1036713 May 2005.  Summary of changes for version 20050513:
10368
103691) ACPI CA Core Subsystem:
10370
10371Implemented support for PCI Express root bridges -- added support for
10372device
10373PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
10374
10375The interpreter now automatically truncates incoming 64-bit constants to
1037632
10377bits if currently executing out of a 32-bit ACPI table (Revision < 2).
10378This
10379also affects the iASL compiler constant folding. (Note: as per below, the
10380iASL compiler no longer allows 64-bit constants within 32-bit tables.)
10381
10382Fixed a problem where string and buffer objects with "static" pointers
10383(pointers to initialization data within an ACPI table) were not handled
10384consistently. The internal object copy operation now always copies the
10385data
10386to a newly allocated buffer, regardless of whether the source object is
10387static or not.
10388
10389Fixed a problem with the FromBCD operator where an implicit result
10390conversion was improperly performed while storing the result to the
10391target
10392operand. Since this is an "explicit conversion" operator, the implicit
10393conversion should never be performed on the output.
10394
10395Fixed a problem with the CopyObject operator where a copy to an existing
10396named object did not always completely overwrite the existing object
10397stored
10398at name. Specifically, a buffer-to-buffer copy did not delete the
10399existing
10400buffer.
10401
10402Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
10403and
10404structs for consistency.
10405
10406Code and Data Size: Current and previous core subsystem library sizes are
10407shown below. These are the code and data sizes for the acpica.lib
10408produced
10409by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10410any ACPI driver or OSPM code. The debug version of the code includes the
10411debug output trace mechanism and has a much larger code and data size.
10412Note
10413that these values will vary depending on the efficiency of the compiler
10414and
10415the compiler options used during generation.
10416
10417  Previous Release:
10418    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10419    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10420  Current Release: (Same sizes)
10421    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10422    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10423
10424
104252) iASL Compiler/Disassembler:
10426
10427The compiler now emits a warning if an attempt is made to generate a 64-
10428bit
10429integer constant from within a 32-bit ACPI table (Revision < 2). The
10430integer
10431is truncated to 32 bits.
10432
10433Fixed a problem with large package objects: if the static length of the
10434package is greater than 255, the "variable length package" opcode is
10435emitted. Previously, this caused an error. This requires an update to the
10436ACPI spec, since it currently (incorrectly) states that packages larger
10437than
10438255 elements are not allowed.
10439
10440The disassembler now correctly handles variable length packages and
10441packages
10442larger than 255 elements.
10443
10444----------------------------------------
1044508 April 2005.  Summary of changes for version 20050408:
10446
104471) ACPI CA Core Subsystem:
10448
10449Fixed three cases in the interpreter where an "index" argument to an ASL
10450function was still (internally) 32 bits instead of the required 64 bits.
10451This was the Index argument to the Index, Mid, and Match operators.
10452
10453The "strupr" function is now permanently local (AcpiUtStrupr), since this
10454is
10455not a POSIX-defined function and not present in most kernel-level C
10456libraries. All references to the C library strupr function have been
10457removed
10458from the headers.
10459
10460Completed the deployment of static functions/prototypes. All prototypes
10461with
10462the static attribute have been moved from the headers to the owning C
10463file.
10464
10465Implemented an extract option (-e) for the AcpiBin utility (AML binary
10466utility). This option allows the utility to extract individual ACPI
10467tables
10468from the output of AcpiDmp. It provides the same functionality of the
10469acpixtract.pl perl script without the worry of setting the correct perl
10470options. AcpiBin runs on Windows and has not yet been generated/validated
10471in
10472the Linux/Unix environment (but should be soon).
10473
10474Updated and fixed the table dump option for AcpiBin (-d). This option
10475converts a single ACPI table to a hex/ascii file, similar to the output
10476of
10477AcpiDmp.
10478
10479Code and Data Size: Current and previous core subsystem library sizes are
10480shown below. These are the code and data sizes for the acpica.lib
10481produced
10482by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10483any ACPI driver or OSPM code. The debug version of the code includes the
10484debug output trace mechanism and has a much larger code and data size.
10485Note
10486that these values will vary depending on the efficiency of the compiler
10487and
10488the compiler options used during generation.
10489
10490  Previous Release:
10491    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
10492    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
10493  Current Release:
10494    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10495    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10496
10497
104982) iASL Compiler/Disassembler:
10499
10500Disassembler fix: Added a check to ensure that the table length found in
10501the
10502ACPI table header within the input file is not longer than the actual
10503input
10504file size. This indicates some kind of file or table corruption.
10505
10506----------------------------------------
1050729 March 2005.  Summary of changes for version 20050329:
10508
105091) ACPI CA Core Subsystem:
10510
10511An error is now generated if an attempt is made to create a Buffer Field
10512of
10513length zero (A CreateField with a length operand of zero.)
10514
10515The interpreter now issues a warning whenever executable code at the
10516module
10517level is detected during ACPI table load. This will give some idea of the
10518prevalence of this type of code.
10519
10520Implemented support for references to named objects (other than control
10521methods) within package objects.
10522
10523Enhanced package object output for the debug object. Package objects are
10524now
10525completely dumped, showing all elements.
10526
10527Enhanced miscellaneous object output for the debug object. Any object can
10528now be written to the debug object (for example, a device object can be
10529written, and the type of the object will be displayed.)
10530
10531The "static" qualifier has been added to all local functions across both
10532the
10533core subsystem and the iASL compiler.
10534
10535The number of "long" lines (> 80 chars) within the source has been
10536significantly reduced, by about 1/3.
10537
10538Cleaned up all header files to ensure that all CA/iASL functions are
10539prototyped (even static functions) and the formatting is consistent.
10540
10541Two new header files have been added, acopcode.h and acnames.h.
10542
10543Removed several obsolete functions that were no longer used.
10544
10545Code and Data Size: Current and previous core subsystem library sizes are
10546shown below. These are the code and data sizes for the acpica.lib
10547produced
10548by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10549any ACPI driver or OSPM code. The debug version of the code includes the
10550debug output trace mechanism and has a much larger code and data size.
10551Note
10552that these values will vary depending on the efficiency of the compiler
10553and
10554the compiler options used during generation.
10555
10556  Previous Release:
10557    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10558    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
10559  Current Release:
10560    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
10561    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
10562
10563
10564
105652) iASL Compiler/Disassembler:
10566
10567Fixed a problem with the resource descriptor generation/support. For the
10568ResourceSourceIndex and the ResourceSource fields, both must be present,
10569or
10570both must be not present - can't have one without the other.
10571
10572The compiler now returns non-zero from the main procedure if any errors
10573have
10574occurred during the compilation.
10575
10576
10577----------------------------------------
1057809 March 2005.  Summary of changes for version 20050309:
10579
105801) ACPI CA Core Subsystem:
10581
10582The string-to-buffer implicit conversion code has been modified again
10583after
10584a change to the ACPI specification.  In order to match the behavior of
10585the
10586other major ACPI implementation, the target buffer is no longer truncated
10587if
10588the source string is smaller than an existing target buffer. This change
10589requires an update to the ACPI spec, and should eliminate the recent
10590AE_AML_BUFFER_LIMIT issues.
10591
10592The "implicit return" support was rewritten to a new algorithm that
10593solves
10594the general case. Rather than attempt to determine when a method is about
10595to
10596exit, the result of every ASL operator is saved momentarily until the
10597very
10598next ASL operator is executed. Therefore, no matter how the method exits,
10599there will always be a saved implicit return value. This feature is only
10600enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
10601eliminate
10602AE_AML_NO_RETURN_VALUE errors when enabled.
10603
10604Implemented implicit conversion support for the predicate (operand) of
10605the
10606If, Else, and While operators. String and Buffer arguments are
10607automatically
10608converted to Integers.
10609
10610Changed the string-to-integer conversion behavior to match the new ACPI
10611errata: "If no integer object exists, a new integer is created. The ASCII
10612string is interpreted as a hexadecimal constant. Each string character is
10613interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
10614with the first character as the most significant digit, and ending with
10615the
10616first non-hexadecimal character or end-of-string." This means that the
10617first
10618non-hex character terminates the conversion and this is the code that was
10619changed.
10620
10621Fixed a problem where the ObjectType operator would fail (fault) when
10622used
10623on an Index of a Package which pointed to a null package element. The
10624operator now properly returns zero (Uninitialized) in this case.
10625
10626Fixed a problem where the While operator used excessive memory by not
10627properly popping the result stack during execution. There was no memory
10628leak
10629after execution, however. (Code provided by Valery Podrezov.)
10630
10631Fixed a problem where references to control methods within Package
10632objects
10633caused the method to be invoked, instead of producing a reference object
10634pointing to the method.
10635
10636Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
10637to
10638improve performance and reduce code size. (Code provided by Alexey
10639Starikovskiy.)
10640
10641Code and Data Size: Current and previous core subsystem library sizes are
10642shown below. These are the code and data sizes for the acpica.lib
10643produced
10644by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10645any ACPI driver or OSPM code. The debug version of the code includes the
10646debug output trace mechanism and has a much larger code and data size.
10647Note
10648that these values will vary depending on the efficiency of the compiler
10649and
10650the compiler options used during generation.
10651
10652  Previous Release:
10653    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10654    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
10655  Current Release:
10656    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10657    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
10658
10659
106602) iASL Compiler/Disassembler:
10661
10662Fixed a problem with the Return operator with no arguments. Since the AML
10663grammar for the byte encoding requires an operand for the Return opcode,
10664the
10665compiler now emits a Return(Zero) for this case.  An ACPI specification
10666update has been written for this case.
10667
10668For tables other than the DSDT, namepath optimization is automatically
10669disabled. This is because SSDTs can be loaded anywhere in the namespace,
10670the
10671compiler has no knowledge of where, and thus cannot optimize namepaths.
10672
10673Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
10674inadvertently omitted from the ACPI specification, and will require an
10675update to the spec.
10676
10677The source file scan for ASCII characters is now optional (-a). This
10678change
10679was made because some vendors place non-ascii characters within comments.
10680However, the scan is simply a brute-force byte compare to ensure all
10681characters in the file are in the range 0x00 to 0x7F.
10682
10683Fixed a problem with the CondRefOf operator where the compiler was
10684inappropriately checking for the existence of the target. Since the point
10685of
10686the operator is to check for the existence of the target at run-time, the
10687compiler no longer checks for the target existence.
10688
10689Fixed a problem where errors generated from the internal AML interpreter
10690during constant folding were not handled properly, causing a fault.
10691
10692Fixed a problem with overly aggressive range checking for the Stall
10693operator. The valid range (max 255) is now only checked if the operand is
10694of
10695type Integer. All other operand types cannot be statically checked.
10696
10697Fixed a problem where control method references within the RefOf,
10698DeRefOf,
10699and ObjectType operators were not treated properly. They are now treated
10700as
10701actual references, not method invocations.
10702
10703Fixed and enhanced the "list namespace" option (-ln). This option was
10704broken
10705a number of releases ago.
10706
10707Improved error handling for the Field, IndexField, and BankField
10708operators.
10709The compiler now cleanly reports and recovers from errors in the field
10710component (FieldUnit) list.
10711
10712Fixed a disassembler problem where the optional ResourceDescriptor fields
10713TRS and TTP were not always handled correctly.
10714
10715Disassembler - Comments in output now use "//" instead of "/*"
10716
10717----------------------------------------
1071828 February 2005.  Summary of changes for version 20050228:
10719
107201) ACPI CA Core Subsystem:
10721
10722Fixed a problem where the result of an Index() operator (an object
10723reference) must increment the reference count on the target object for
10724the
10725life of the object reference.
10726
10727Implemented AML Interpreter and Debugger support for the new ACPI 3.0
10728Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
10729WordSpace
10730resource descriptors.
10731
10732Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
10733Space Descriptor" string, indicating interpreter support for the
10734descriptors
10735above.
10736
10737Implemented header support for the new ACPI 3.0 FADT flag bits.
10738
10739Implemented header support for the new ACPI 3.0 PCI Express bits for the
10740PM1
10741status/enable registers.
10742
10743Updated header support for the MADT processor local Apic struct and MADT
10744platform interrupt source struct for new ACPI 3.0 fields.
10745
10746Implemented header support for the SRAT and SLIT ACPI tables.
10747
10748Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
10749flag
10750at runtime.
10751
10752Code and Data Size: Current and previous core subsystem library sizes are
10753shown below. These are the code and data sizes for the acpica.lib
10754produced
10755by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10756any ACPI driver or OSPM code. The debug version of the code includes the
10757debug output trace mechanism and has a much larger code and data size.
10758Note
10759that these values will vary depending on the efficiency of the compiler
10760and
10761the compiler options used during generation.
10762
10763  Previous Release:
10764    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
10765    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
10766  Current Release:
10767    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10768    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
10769
10770
107712) iASL Compiler/Disassembler:
10772
10773Fixed a problem with the internal 64-bit String-to-integer conversion
10774with
10775strings less than two characters long.
10776
10777Fixed a problem with constant folding where the result of the Index()
10778operator can not be considered a constant. This means that Index() cannot
10779be
10780a type3 opcode and this will require an update to the ACPI specification.
10781
10782Disassembler: Implemented support for the TTP, MTP, and TRS resource
10783descriptor fields. These fields were inadvertently ignored and not output
10784in
10785the disassembly of the resource descriptor.
10786
10787
10788 ----------------------------------------
1078911 February 2005.  Summary of changes for version 20050211:
10790
107911) ACPI CA Core Subsystem:
10792
10793Implemented ACPI 3.0 support for implicit conversion within the Match()
10794operator. MatchObjects can now be of type integer, buffer, or string
10795instead
10796of just type integer.  Package elements are implicitly converted to the
10797type
10798of the MatchObject. This change aligns the behavior of Match() with the
10799behavior of the other logical operators (LLess(), etc.) It also requires
10800an
10801errata change to the ACPI specification as this support was intended for
10802ACPI 3.0, but was inadvertently omitted.
10803
10804Fixed a problem with the internal implicit "to buffer" conversion.
10805Strings
10806that are converted to buffers will cause buffer truncation if the string
10807is
10808smaller than the target buffer. Integers that are converted to buffers
10809will
10810not cause buffer truncation, only zero extension (both as per the ACPI
10811spec.) The problem was introduced when code was added to truncate the
10812buffer, but this should not be performed in all cases, only the string
10813case.
10814
10815Fixed a problem with the Buffer and Package operators where the
10816interpreter
10817would get confused if two such operators were used as operands to an ASL
10818operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
10819stack was not being popped after the execution of these operators,
10820resulting
10821in an AE_NO_RETURN_VALUE exception.
10822
10823Fixed a problem with constructs of the form Store(Index(...),...). The
10824reference object returned from Index was inadvertently resolved to an
10825actual
10826value. This problem was introduced in version 20050114 when the behavior
10827of
10828Store() was modified to restrict the object types that can be used as the
10829source operand (to match the ACPI specification.)
10830
10831Reduced excessive stack use within the AcpiGetObjectInfo procedure.
10832
10833Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
10834
10835Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
10836
10837Code and Data Size: Current and previous core subsystem library sizes are
10838shown below. These are the code and data sizes for the acpica.lib
10839produced
10840by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10841any ACPI driver or OSPM code. The debug version of the code includes the
10842debug output trace mechanism and has a much larger code and data size.
10843Note
10844that these values will vary depending on the efficiency of the compiler
10845and
10846the compiler options used during generation.
10847
10848  Previous Release:
10849    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
10850    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
10851  Current Release:
10852    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
10853    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
10854
10855
108562) iASL Compiler/Disassembler:
10857
10858Fixed a code generation problem in the constant folding optimization code
10859where incorrect code was generated if a constant was reduced to a buffer
10860object (i.e., a reduced type 5 opcode.)
10861
10862Fixed a typechecking problem for the ToBuffer operator. Caused by an
10863incorrect return type in the internal opcode information table.
10864
10865----------------------------------------
1086625 January 2005.  Summary of changes for version 20050125:
10867
108681) ACPI CA Core Subsystem:
10869
10870Fixed a recently introduced problem with the Global Lock where the
10871underlying semaphore was not created.  This problem was introduced in
10872version 20050114, and caused an AE_AML_NO_OPERAND exception during an
10873Acquire() operation on _GL.
10874
10875The local object cache is now optional, and is disabled by default. Both
10876AcpiExec and the iASL compiler enable the cache because they run in user
10877mode and this enhances their performance. #define
10878ACPI_ENABLE_OBJECT_CACHE
10879to enable the local cache.
10880
10881Fixed an issue in the internal function AcpiUtEvaluateObject concerning
10882the
10883optional "implicit return" support where an error was returned if no
10884return
10885object was expected, but one was implicitly returned. AE_OK is now
10886returned
10887in this case and the implicitly returned object is deleted.
10888AcpiUtEvaluateObject is only occasionally used, and only to execute
10889reserved
10890methods such as _STA and _INI where the return type is known up front.
10891
10892Fixed a few issues with the internal convert-to-integer code. It now
10893returns
10894an error if an attempt is made to convert a null string, a string of only
10895blanks/tabs, or a zero-length buffer. This affects both implicit
10896conversion
10897and explicit conversion via the ToInteger() operator.
10898
10899The internal debug code in AcpiUtAcquireMutex has been commented out. It
10900is
10901not needed for normal operation and should increase the performance of
10902the
10903entire subsystem. The code remains in case it is needed for debug
10904purposes
10905again.
10906
10907The AcpiExec source and makefile are included in the Unix/Linux package
10908for
10909the first time.
10910
10911Code and Data Size: Current and previous core subsystem library sizes are
10912shown below. These are the code and data sizes for the acpica.lib
10913produced
10914by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10915any ACPI driver or OSPM code. The debug version of the code includes the
10916debug output trace mechanism and has a much larger code and data size.
10917Note
10918that these values will vary depending on the efficiency of the compiler
10919and
10920the compiler options used during generation.
10921
10922  Previous Release:
10923    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
10924    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
10925  Current Release:
10926    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
10927    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
10928
109292) iASL Compiler/Disassembler:
10930
10931Switch/Case support: A warning is now issued if the type of the Switch
10932value
10933cannot be determined at compile time. For example, Switch(Arg0) will
10934generate the warning, and the type is assumed to be an integer. As per
10935the
10936ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
10937the
10938warning.
10939
10940Switch/Case support: Implemented support for buffer and string objects as
10941the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
10942buffers and strings.
10943
10944Switch/Case support: The emitted code for the LEqual() comparisons now
10945uses
10946the switch value as the first operand, not the second. The case value is
10947now
10948the second operand, and this allows the case value to be implicitly
10949converted to the type of the switch value, not the other way around.
10950
10951Switch/Case support: Temporary variables are now emitted immediately
10952within
10953the control method, not at the global level. This means that there are
10954now
1095536 temps available per-method, not 36 temps per-module as was the case
10956with
10957the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
10958
10959----------------------------------------
1096014 January 2005.  Summary of changes for version 20050114:
10961
10962Added 2005 copyright to all module headers.  This affects every module in
10963the core subsystem, iASL compiler, and the utilities.
10964
109651) ACPI CA Core Subsystem:
10966
10967Fixed an issue with the String-to-Buffer conversion code where the string
10968null terminator was not included in the buffer after conversion, but
10969there
10970is existing ASL that assumes the string null terminator is included. This
10971is
10972the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
10973introduced in the previous version when the code was updated to correctly
10974set the converted buffer size as per the ACPI specification. The ACPI
10975spec
10976is ambiguous and will be updated to specify that the null terminator must
10977be
10978included in the converted buffer. This also affects the ToBuffer() ASL
10979operator.
10980
10981Fixed a problem with the Mid() ASL/AML operator where it did not work
10982correctly on Buffer objects. Newly created sub-buffers were not being
10983marked
10984as initialized.
10985
10986
10987Fixed a problem in AcpiTbFindTable where incorrect string compares were
10988performed on the OemId and OemTableId table header fields.  These fields
10989are
10990not null terminated, so strncmp is now used instead of strcmp.
10991
10992Implemented a restriction on the Store() ASL/AML operator to align the
10993behavior with the ACPI specification.  Previously, any object could be
10994used
10995as the source operand.  Now, the only objects that may be used are
10996Integers,
10997Buffers, Strings, Packages, Object References, and DDB Handles.  If
10998necessary, the original behavior can be restored by enabling the
10999EnableInterpreterSlack flag.
11000
11001Enhanced the optional "implicit return" support to allow an implicit
11002return
11003value from methods that are invoked externally via the AcpiEvaluateObject
11004interface.  This enables implicit returns from the _STA and _INI methods,
11005for example.
11006
11007Changed the Revision() ASL/AML operator to return the current version of
11008the
11009AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
11010returned
11011the supported ACPI version (This is the function of the _REV method).
11012
11013Updated the _REV predefined method to return the currently supported
11014version
11015of ACPI, now 3.
11016
11017Implemented batch mode option for the AcpiExec utility (-b).
11018
11019Code and Data Size: Current and previous core subsystem library sizes are
11020shown below. These are the code and data sizes for the acpica.lib
11021produced
11022by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11023any ACPI driver or OSPM code. The debug version of the code includes the
11024debug output trace mechanism and has a much larger code and data size.
11025Note
11026that these values will vary depending on the efficiency of the compiler
11027and
11028the compiler options used during generation.
11029
11030  Previous Release:
11031    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11032    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11033  Current Release:
11034    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
11035    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
11036
11037----------------------------------------
1103810 December 2004.  Summary of changes for version 20041210:
11039
11040ACPI 3.0 support is nearing completion in both the iASL compiler and the
11041ACPI CA core subsystem.
11042
110431) ACPI CA Core Subsystem:
11044
11045Fixed a problem in the ToDecimalString operator where the resulting
11046string
11047length was incorrectly calculated. The length is now calculated exactly,
11048eliminating incorrect AE_STRING_LIMIT exceptions.
11049
11050Fixed a problem in the ToHexString operator to allow a maximum 200
11051character
11052string to be produced.
11053
11054Fixed a problem in the internal string-to-buffer and buffer-to-buffer
11055copy
11056routine where the length of the resulting buffer was not truncated to the
11057new size (if the target buffer already existed).
11058
11059Code and Data Size: Current and previous core subsystem library sizes are
11060shown below. These are the code and data sizes for the acpica.lib
11061produced
11062by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11063any ACPI driver or OSPM code. The debug version of the code includes the
11064debug output trace mechanism and has a much larger code and data size.
11065Note
11066that these values will vary depending on the efficiency of the compiler
11067and
11068the compiler options used during generation.
11069
11070  Previous Release:
11071    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11072    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
11073  Current Release:
11074    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11075    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11076
11077
110782) iASL Compiler/Disassembler:
11079
11080Implemented the new ACPI 3.0 resource template macros - DWordSpace,
11081ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
11082Includes support in the disassembler.
11083
11084Implemented support for the new (ACPI 3.0) parameter to the Register
11085macro,
11086AccessSize.
11087
11088Fixed a problem where the _HE resource name for the Interrupt macro was
11089referencing bit 0 instead of bit 1.
11090
11091Implemented check for maximum 255 interrupts in the Interrupt macro.
11092
11093Fixed a problem with the predefined resource descriptor names where
11094incorrect AML code was generated if the offset within the resource buffer
11095was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
11096but did not update the surrounding package lengths.
11097
11098Changes to the Dma macro:  All channels within the channel list must be
11099in
11100the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
11101optional (default is BusMaster).
11102
11103Implemented check for maximum 7 data bytes for the VendorShort macro.
11104
11105The ReadWrite parameter is now optional for the Memory32 and similar
11106macros.
11107
11108----------------------------------------
1110903 December 2004.  Summary of changes for version 20041203:
11110
111111) ACPI CA Core Subsystem:
11112
11113The low-level field insertion/extraction code (exfldio) has been
11114completely
11115rewritten to eliminate unnecessary complexity, bugs, and boundary
11116conditions.
11117
11118Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
11119ToDecimalString
11120operators where the input operand could be inadvertently deleted if no
11121conversion was necessary (e.g., if the input to ToInteger was an Integer
11122object.)
11123
11124Fixed a problem with the ToDecimalString and ToHexString where an
11125incorrect
11126exception code was returned if the resulting string would be > 200 chars.
11127AE_STRING_LIMIT is now returned.
11128
11129Fixed a problem with the Concatenate operator where AE_OK was always
11130returned, even if the operation failed.
11131
11132Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
11133semaphores to be allocated.
11134
11135Code and Data Size: Current and previous core subsystem library sizes are
11136shown below. These are the code and data sizes for the acpica.lib
11137produced
11138by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11139any ACPI driver or OSPM code. The debug version of the code includes the
11140debug output trace mechanism and has a much larger code and data size.
11141Note
11142that these values will vary depending on the efficiency of the compiler
11143and
11144the compiler options used during generation.
11145
11146  Previous Release:
11147    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11148    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11149  Current Release:
11150    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11151    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
11152
11153
111542) iASL Compiler/Disassembler:
11155
11156Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
11157recently introduced in 20041119.
11158
11159Fixed a problem with the ToUUID macro where the upper nybble of each
11160buffer
11161byte was inadvertently set to zero.
11162
11163----------------------------------------
1116419 November 2004.  Summary of changes for version 20041119:
11165
111661) ACPI CA Core Subsystem:
11167
11168Fixed a problem in the internal ConvertToInteger routine where new
11169integers
11170were not truncated to 32 bits for 32-bit ACPI tables. This routine
11171converts
11172buffers and strings to integers.
11173
11174Implemented support to store a value to an Index() on a String object.
11175This
11176is an ACPI 2.0 feature that had not yet been implemented.
11177
11178Implemented new behavior for storing objects to individual package
11179elements
11180(via the Index() operator). The previous behavior was to invoke the
11181implicit
11182conversion rules if an object was already present at the index.  The new
11183behavior is to simply delete any existing object and directly store the
11184new
11185object. Although the ACPI specification seems unclear on this subject,
11186other
11187ACPI implementations behave in this manner.  (This is the root of the
11188AE_BAD_HEX_CONSTANT issue.)
11189
11190Modified the RSDP memory scan mechanism to support the extended checksum
11191for
11192ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
11193RSDP signature is found with a valid checksum.
11194
11195Code and Data Size: Current and previous core subsystem library sizes are
11196shown below. These are the code and data sizes for the acpica.lib
11197produced
11198by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11199any ACPI driver or OSPM code. The debug version of the code includes the
11200debug output trace mechanism and has a much larger code and data size.
11201Note
11202that these values will vary depending on the efficiency of the compiler
11203and
11204the compiler options used during generation.
11205
11206  Previous Release:
11207    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11208    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11209  Current Release:
11210    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11211    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11212
11213
112142) iASL Compiler/Disassembler:
11215
11216Fixed a missing semicolon in the aslcompiler.y file.
11217
11218----------------------------------------
1121905 November 2004.  Summary of changes for version 20041105:
11220
112211) ACPI CA Core Subsystem:
11222
11223Implemented support for FADT revision 2.  This was an interim table
11224(between
11225ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
11226
11227Implemented optional support to allow uninitialized LocalX and ArgX
11228variables in a control method.  The variables are initialized to an
11229Integer
11230object with a value of zero.  This support is enabled by setting the
11231AcpiGbl_EnableInterpreterSlack flag to TRUE.
11232
11233Implemented support for Integer objects for the SizeOf operator.  Either
112344
11235or 8 is returned, depending on the current integer size (32-bit or 64-
11236bit,
11237depending on the parent table revision).
11238
11239Fixed a problem in the implementation of the SizeOf and ObjectType
11240operators
11241where the operand was resolved to a value too early, causing incorrect
11242return values for some objects.
11243
11244Fixed some possible memory leaks during exceptional conditions.
11245
11246Code and Data Size: Current and previous core subsystem library sizes are
11247shown below. These are the code and data sizes for the acpica.lib
11248produced
11249by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11250any ACPI driver or OSPM code. The debug version of the code includes the
11251debug output trace mechanism and has a much larger code and data size.
11252Note
11253that these values will vary depending on the efficiency of the compiler
11254and
11255the compiler options used during generation.
11256
11257  Previous Release:
11258    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11259    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
11260  Current Release:
11261    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11262    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11263
11264
112652) iASL Compiler/Disassembler:
11266
11267Implemented support for all ACPI 3.0 reserved names and methods.
11268
11269Implemented all ACPI 3.0 grammar elements in the front-end, including
11270support for semicolons.
11271
11272Implemented the ACPI 3.0 Function() and ToUUID() macros
11273
11274Fixed a problem in the disassembler where a Scope() operator would not be
11275emitted properly if the target of the scope was in another table.
11276
11277----------------------------------------
1127815 October 2004.  Summary of changes for version 20041015:
11279
11280Note:  ACPI CA is currently undergoing an in-depth and complete formal
11281evaluation to test/verify the following areas. Other suggestions are
11282welcome. This will result in an increase in the frequency of releases and
11283the number of bug fixes in the next few months.
11284  - Functional tests for all ASL/AML operators
11285  - All implicit/explicit type conversions
11286  - Bit fields and operation regions
11287  - 64-bit math support and 32-bit-only "truncated" math support
11288  - Exceptional conditions, both compiler and interpreter
11289  - Dynamic object deletion and memory leaks
11290  - ACPI 3.0 support when implemented
11291  - External interfaces to the ACPI subsystem
11292
11293
112941) ACPI CA Core Subsystem:
11295
11296Fixed two alignment issues on 64-bit platforms - within debug statements
11297in
11298AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
11299Address
11300field within the non-aligned ACPI generic address structure.
11301
11302Fixed a problem in the Increment and Decrement operators where incorrect
11303operand resolution could result in the inadvertent modification of the
11304original integer when the integer is passed into another method as an
11305argument and the arg is then incremented/decremented.
11306
11307Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
11308bit
11309BCD number were truncated during conversion.
11310
11311Fixed a problem in the ToDecimal operator where the length of the
11312resulting
11313string could be set incorrectly too long if the input operand was a
11314Buffer
11315object.
11316
11317Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
11318(0)
11319within a buffer would prematurely terminate a compare between buffer
11320objects.
11321
11322Added a check for string overflow (>200 characters as per the ACPI
11323specification) during the Concatenate operator with two string operands.
11324
11325Code and Data Size: Current and previous core subsystem library sizes are
11326shown below. These are the code and data sizes for the acpica.lib
11327produced
11328by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11329any ACPI driver or OSPM code. The debug version of the code includes the
11330debug output trace mechanism and has a much larger code and data size.
11331Note
11332that these values will vary depending on the efficiency of the compiler
11333and
11334the compiler options used during generation.
11335
11336  Previous Release:
11337    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11338    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
11339  Current Release:
11340    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11341    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
11342
11343
11344
113452) iASL Compiler/Disassembler:
11346
11347Allow the use of the ObjectType operator on uninitialized Locals and Args
11348(returns 0 as per the ACPI specification).
11349
11350Fixed a problem where the compiler would fault if there was a syntax
11351error
11352in the FieldName of all of the various CreateXXXField operators.
11353
11354Disallow the use of lower case letters within the EISAID macro, as per
11355the
11356ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
11357Where
11358U is an uppercase letter and N is a hex digit.
11359
11360
11361----------------------------------------
1136206 October 2004.  Summary of changes for version 20041006:
11363
113641) ACPI CA Core Subsystem:
11365
11366Implemented support for the ACPI 3.0 Timer operator. This ASL function
11367implements a 64-bit timer with 100 nanosecond granularity.
11368
11369Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
11370implement the ACPI 3.0 Timer operator.  This allows the host OS to
11371implement
11372the timer with the best clock available. Also, it keeps the core
11373subsystem
11374out of the clock handling business, since the host OS (usually) performs
11375this function.
11376
11377Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
11378functions use a 64-bit address which is part of the packed ACPI Generic
11379Address Structure. Since the structure is non-aligned, the alignment
11380macros
11381are now used to extract the address to a local variable before use.
11382
11383Fixed a problem where the ToInteger operator assumed all input strings
11384were
11385hexadecimal. The operator now handles both decimal strings and hex
11386strings
11387(prefixed with "0x").
11388
11389Fixed a problem where the string length in the string object created as a
11390result of the internal ConvertToString procedure could be incorrect. This
11391potentially affected all implicit conversions and also the
11392ToDecimalString
11393and ToHexString operators.
11394
11395Fixed two problems in the ToString operator. If the length parameter was
11396zero, an incorrect string object was created and the value of the input
11397length parameter was inadvertently changed from zero to Ones.
11398
11399Fixed a problem where the optional ResourceSource string in the
11400ExtendedIRQ
11401resource macro was ignored.
11402
11403Simplified the interfaces to the internal division functions, reducing
11404code
11405size and complexity.
11406
11407Code and Data Size: Current and previous core subsystem library sizes are
11408shown below. These are the code and data sizes for the acpica.lib
11409produced
11410by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11411any ACPI driver or OSPM code. The debug version of the code includes the
11412debug output trace mechanism and has a much larger code and data size.
11413Note
11414that these values will vary depending on the efficiency of the compiler
11415and
11416the compiler options used during generation.
11417
11418  Previous Release:
11419    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
11420    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
11421  Current Release:
11422    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11423    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
11424
11425
114262) iASL Compiler/Disassembler:
11427
11428Implemented support for the ACPI 3.0 Timer operator.
11429
11430Fixed a problem where the Default() operator was inadvertently ignored in
11431a
11432Switch/Case block.  This was a problem in the translation of the Switch
11433statement to If...Else pairs.
11434
11435Added support to allow a standalone Return operator, with no parentheses
11436(or
11437operands).
11438
11439Fixed a problem with code generation for the ElseIf operator where the
11440translated Else...If parse tree was improperly constructed leading to the
11441loss of some code.
11442
11443----------------------------------------
1144422 September 2004.  Summary of changes for version 20040922:
11445
114461) ACPI CA Core Subsystem:
11447
11448Fixed a problem with the implementation of the LNot() operator where
11449"Ones"
11450was not returned for the TRUE case. Changed the code to return Ones
11451instead
11452of (!Arg) which was usually 1. This change affects iASL constant folding
11453for
11454this operator also.
11455
11456Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
11457not
11458initialized properly -- Now zero the entire buffer in this case where the
11459buffer already exists.
11460
11461Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
11462Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
11463related code considerably. This will require changes/updates to all OS
11464interface layers (OSLs.)
11465
11466Implemented a new external interface, AcpiInstallExceptionHandler, to
11467allow
11468a system exception handler to be installed. This handler is invoked upon
11469any
11470run-time exception that occurs during control method execution.
11471
11472Added support for the DSDT in AcpiTbFindTable. This allows the
11473DataTableRegion() operator to access the local copy of the DSDT.
11474
11475Code and Data Size: Current and previous core subsystem library sizes are
11476shown below. These are the code and data sizes for the acpica.lib
11477produced
11478by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11479any ACPI driver or OSPM code. The debug version of the code includes the
11480debug output trace mechanism and has a much larger code and data size.
11481Note
11482that these values will vary depending on the efficiency of the compiler
11483and
11484the compiler options used during generation.
11485
11486  Previous Release:
11487    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
11488    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
11489  Current Release:
11490    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
11491    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
11492
11493
114942) iASL Compiler/Disassembler:
11495
11496Fixed a problem with constant folding and the LNot operator. LNot was
11497returning 1 in the TRUE case, not Ones as per the ACPI specification.
11498This
11499could result in the generation of an incorrect folded/reduced constant.
11500
11501End-Of-File is now allowed within a "//"-style comment.  A parse error no
11502longer occurs if such a comment is at the very end of the input ASL
11503source
11504file.
11505
11506Implemented the "-r" option to override the Revision in the table header.
11507The initial use of this option will be to simplify the evaluation of the
11508AML
11509interpreter by allowing a single ASL source module to be compiled for
11510either
1151132-bit or 64-bit integers.
11512
11513
11514----------------------------------------
1151527 August 2004.  Summary of changes for version 20040827:
11516
115171) ACPI CA Core Subsystem:
11518
11519- Implemented support for implicit object conversion in the non-numeric
11520logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
11521and
11522LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
11523the second operand is implicitly converted on the fly to match the type
11524of
11525the first operand.  For example:
11526
11527    LEqual (Source1, Source2)
11528
11529Source1 and Source2 must each evaluate to an integer, a string, or a
11530buffer.
11531The data type of Source1 dictates the required type of Source2. Source2
11532is
11533implicitly converted if necessary to match the type of Source1.
11534
11535- Updated and corrected the behavior of the string conversion support.
11536The
11537rules concerning conversion of buffers to strings (according to the ACPI
11538specification) are as follows:
11539
11540ToDecimalString - explicit byte-wise conversion of buffer to string of
11541decimal values (0-255) separated by commas. ToHexString - explicit byte-
11542wise
11543conversion of buffer to string of hex values (0-FF) separated by commas.
11544ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
11545byte
11546copy with no transform except NULL terminated. Any other implicit buffer-
11547to-
11548string conversion - byte-wise conversion of buffer to string of hex
11549values
11550(0-FF) separated by spaces.
11551
11552- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
11553
11554- Fixed a problem in AcpiNsGetPathnameLength where the returned length
11555was
11556one byte too short in the case of a node in the root scope.  This could
11557cause a fault during debug output.
11558
11559- Code and Data Size: Current and previous core subsystem library sizes
11560are
11561shown below.  These are the code and data sizes for the acpica.lib
11562produced
11563by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11564any ACPI driver or OSPM code.  The debug version of the code includes the
11565debug output trace mechanism and has a much larger code and data size.
11566Note
11567that these values will vary depending on the efficiency of the compiler
11568and
11569the compiler options used during generation.
11570
11571  Previous Release:
11572    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
11573    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
11574  Current Release:
11575    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
11576    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
11577
11578
115792) iASL Compiler/Disassembler:
11580
11581- Fixed a Linux generation error.
11582
11583
11584----------------------------------------
1158516 August 2004.  Summary of changes for version 20040816:
11586
115871) ACPI CA Core Subsystem:
11588
11589Designed and implemented support within the AML interpreter for the so-
11590called "implicit return".  This support returns the result of the last
11591ASL
11592operation within a control method, in the absence of an explicit Return()
11593operator.  A few machines depend on this behavior, even though it is not
11594explicitly supported by the ASL language.  It is optional support that
11595can
11596be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
11597
11598Removed support for the PCI_Config address space from the internal low
11599level
11600hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
11601support was not used internally, and would not work correctly anyway
11602because
11603the PCI bus number and segment number were not supported.  There are
11604separate interfaces for PCI configuration space access because of the
11605unique
11606interface.
11607
11608Code and Data Size: Current and previous core subsystem library sizes are
11609shown below.  These are the code and data sizes for the acpica.lib
11610produced
11611by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11612any ACPI driver or OSPM code.  The debug version of the code includes the
11613debug output trace mechanism and has a much larger code and data size.
11614Note
11615that these values will vary depending on the efficiency of the compiler
11616and
11617the compiler options used during generation.
11618
11619  Previous Release:
11620    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11621    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
11622  Current Release:
11623    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
11624    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
11625
11626
116272) iASL Compiler/Disassembler:
11628
11629Fixed a problem where constants in ASL expressions at the root level (not
11630within a control method) could be inadvertently truncated during code
11631generation.  This problem was introduced in the 20040715 release.
11632
11633
11634----------------------------------------
1163515 July 2004.  Summary of changes for version 20040715:
11636
116371) ACPI CA Core Subsystem:
11638
11639Restructured the internal HW GPE interfaces to pass/track the current
11640state
11641of interrupts (enabled/disabled) in order to avoid possible deadlock and
11642increase flexibility of the interfaces.
11643
11644Implemented a "lexicographical compare" for String and Buffer objects
11645within
11646the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
11647-
11648as per further clarification to the ACPI specification.  Behavior is
11649similar
11650to C library "strcmp".
11651
11652Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
11653external function.  In the 32-bit non-debug case, the stack use has been
11654reduced from 168 bytes to 32 bytes.
11655
11656Deployed a new run-time configuration flag,
11657AcpiGbl_EnableInterpreterSlack,
11658whose purpose is to allow the AML interpreter to forgive certain bad AML
11659constructs.  Default setting is FALSE.
11660
11661Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
11662IO
11663support code.  If enabled, it allows field access to go beyond the end of
11664a
11665region definition if the field is within the region length rounded up to
11666the
11667next access width boundary (a common coding error.)
11668
11669Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
11670ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
11671these
11672symbols are lowercased by the latest version of the AcpiSrc tool.
11673
11674The prototypes for the PCI interfaces in acpiosxf.h have been updated to
11675rename "Register" to simply "Reg" to prevent certain compilers from
11676complaining.
11677
11678Code and Data Size: Current and previous core subsystem library sizes are
11679shown below.  These are the code and data sizes for the acpica.lib
11680produced
11681by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11682any ACPI driver or OSPM code.  The debug version of the code includes the
11683debug output trace mechanism and has a much larger code and data size.
11684Note
11685that these values will vary depending on the efficiency of the compiler
11686and
11687the compiler options used during generation.
11688
11689  Previous Release:
11690    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11691    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
11692  Current Release:
11693    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11694    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
11695
11696
116972) iASL Compiler/Disassembler:
11698
11699Implemented full support for Package objects within the Case() operator.
11700Note: The Break() operator is currently not supported within Case blocks
11701(TermLists) as there is some question about backward compatibility with
11702ACPI
117031.0 interpreters.
11704
11705
11706Fixed a problem where complex terms were not supported properly within
11707the
11708Switch() operator.
11709
11710Eliminated extraneous warning for compiler-emitted reserved names of the
11711form "_T_x".  (Used in Switch/Case operators.)
11712
11713Eliminated optimization messages for "_T_x" objects and small constants
11714within the DefinitionBlock operator.
11715
11716
11717----------------------------------------
1171815 June 2004.  Summary of changes for version 20040615:
11719
117201) ACPI CA Core Subsystem:
11721
11722Implemented support for Buffer and String objects (as per ACPI 2.0) for
11723the
11724following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
11725LLessEqual.
11726
11727All directory names in the entire source package are lower case, as they
11728were in earlier releases.
11729
11730Implemented "Disassemble" command in the AML debugger that will
11731disassemble
11732a single control method.
11733
11734Code and Data Size: Current and previous core subsystem library sizes are
11735shown below.  These are the code and data sizes for the acpica.lib
11736produced
11737by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11738any ACPI driver or OSPM code.  The debug version of the code includes the
11739debug output trace mechanism and has a much larger code and data size.
11740Note
11741that these values will vary depending on the efficiency of the compiler
11742and
11743the compiler options used during generation.
11744
11745  Previous Release:
11746    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
11747    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
11748
11749  Current Release:
11750    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11751    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
11752
11753
117542) iASL Compiler/Disassembler:
11755
11756Implemented support for Buffer and String objects (as per ACPI 2.0) for
11757the
11758following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
11759LLessEqual.
11760
11761All directory names in the entire source package are lower case, as they
11762were in earlier releases.
11763
11764Fixed a fault when using the -g or -d<nofilename> options if the FADT was
11765not found.
11766
11767Fixed an issue with the Windows version of the compiler where later
11768versions
11769of Windows place the FADT in the registry under the name "FADT" and not
11770"FACP" as earlier versions did.  This applies when using the -g or -
11771d<nofilename> options.  The compiler now looks for both strings as
11772necessary.
11773
11774Fixed a problem with compiler namepath optimization where a namepath
11775within
11776the Scope() operator could not be optimized if the namepath was a subpath
11777of
11778the current scope path.
11779
11780----------------------------------------
1178127 May 2004.  Summary of changes for version 20040527:
11782
117831) ACPI CA Core Subsystem:
11784
11785Completed a new design and implementation for EBDA (Extended BIOS Data
11786Area)
11787support in the RSDP scan code.  The original code improperly scanned for
11788the
11789EBDA by simply scanning from memory location 0 to 0x400.  The correct
11790method
11791is to first obtain the EBDA pointer from within the BIOS data area, then
11792scan 1K of memory starting at the EBDA pointer.  There appear to be few
11793if
11794any machines that place the RSDP in the EBDA, however.
11795
11796Integrated a fix for a possible fault during evaluation of BufferField
11797arguments.  Obsolete code that was causing the problem was removed.
11798
11799Found and fixed a problem in the Field Support Code where data could be
11800corrupted on a bit field read that starts on an aligned boundary but does
11801not end on an aligned boundary.  Merged the read/write "datum length"
11802calculation code into a common procedure.
11803
11804Rolled in a couple of changes to the FreeBSD-specific header.
11805
11806
11807Code and Data Size: Current and previous core subsystem library sizes are
11808shown below.  These are the code and data sizes for the acpica.lib
11809produced
11810by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11811any ACPI driver or OSPM code.  The debug version of the code includes the
11812debug output trace mechanism and has a much larger code and data size.
11813Note
11814that these values will vary depending on the efficiency of the compiler
11815and
11816the compiler options used during generation.
11817
11818  Previous Release:
11819    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11820    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
11821  Current Release:
11822    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
11823    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
11824
11825
118262) iASL Compiler/Disassembler:
11827
11828Fixed a generation warning produced by some overly-verbose compilers for
11829a
1183064-bit constant.
11831
11832----------------------------------------
1183314 May 2004.  Summary of changes for version 20040514:
11834
118351) ACPI CA Core Subsystem:
11836
11837Fixed a problem where hardware GPE enable bits sometimes not set properly
11838during and after GPE method execution.  Result of 04/27 changes.
11839
11840Removed extra "clear all GPEs" when sleeping/waking.
11841
11842Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
11843AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
11844to
11845the new AcpiEv* calls as appropriate.
11846
11847ACPI_OS_NAME was removed from the OS-specific headers.  The default name
11848is
11849now "Microsoft Windows NT" for maximum compatibility.  However this can
11850be
11851changed by modifying the acconfig.h file.
11852
11853Allow a single invocation of AcpiInstallNotifyHandler for a handler that
11854traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
11855
11856Run _INI methods on ThermalZone objects.  This is against the ACPI
11857specification, but there is apparently ASL code in the field that has
11858these
11859_INI methods, and apparently "other" AML interpreters execute them.
11860
11861Performed a full 16/32/64 bit lint that resulted in some small changes.
11862
11863Added a sleep simulation command to the AML debugger to test sleep code.
11864
11865Code and Data Size: Current and previous core subsystem library sizes are
11866shown below.  These are the code and data sizes for the acpica.lib
11867produced
11868by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11869any ACPI driver or OSPM code.  The debug version of the code includes the
11870debug output trace mechanism and has a much larger code and data size.
11871Note
11872that these values will vary depending on the efficiency of the compiler
11873and
11874the compiler options used during generation.
11875
11876  Previous Release:
11877    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11878    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
11879  Current Release:
11880    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11881    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
11882
11883----------------------------------------
1188427 April 2004.  Summary of changes for version 20040427:
11885
118861) ACPI CA Core Subsystem:
11887
11888Completed a major overhaul of the GPE handling within ACPI CA.  There are
11889now three types of GPEs:  wake-only, runtime-only, and combination
11890wake/run.
11891The only GPEs allowed to be combination wake/run are for button-style
11892devices such as a control-method power button, control-method sleep
11893button,
11894or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
11895not
11896referenced by any _PRW methods are marked for "runtime" and hardware
11897enabled.  Any GPE that is referenced by a _PRW method is marked for
11898"wake"
11899(and disabled at runtime).  However, at sleep time, only those GPEs that
11900have been specifically enabled for wake via the AcpiEnableGpe interface
11901will
11902actually be hardware enabled.
11903
11904A new external interface has been added, AcpiSetGpeType(), that is meant
11905to
11906be used by device drivers to force a GPE to a particular type.  It will
11907be
11908especially useful for the drivers for the button devices mentioned above.
11909
11910Completed restructuring of the ACPI CA initialization sequence so that
11911default operation region handlers are installed before GPEs are
11912initialized
11913and the _PRW methods are executed.  This will prevent errors when the
11914_PRW
11915methods attempt to access system memory or I/O space.
11916
11917GPE enable/disable no longer reads the GPE enable register.  We now keep
11918the
11919enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
11920thus no longer depend on the hardware to maintain these bits.
11921
11922Always clear the wake status and fixed/GPE status bits before sleep, even
11923for state S5.
11924
11925Improved the AML debugger output for displaying the GPE blocks and their
11926current status.
11927
11928Added new strings for the _OSI method, of the form "Windows 2001 SPx"
11929where
11930x = 0,1,2,3,4.
11931
11932Fixed a problem where the physical address was incorrectly calculated
11933when
11934the Load() operator was used to directly load from an Operation Region
11935(vs.
11936loading from a Field object.)  Also added check for minimum table length
11937for
11938this case.
11939
11940Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
11941mutex release.
11942
11943Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
11944consistency with the other fields returned.
11945
11946Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
11947structure for each GPE in the system, so the size of this structure is
11948important.
11949
11950CPU stack requirement reduction:  Cleaned up the method execution and
11951object
11952evaluation paths so that now a parameter structure is passed, instead of
11953copying the various method parameters over and over again.
11954
11955In evregion.c:  Correctly exit and reenter the interpreter region if and
11956only if dispatching an operation region request to a user-installed
11957handler.
11958Do not exit/reenter when dispatching to a default handler (e.g., default
11959system memory or I/O handlers)
11960
11961
11962Notes for updating drivers for the new GPE support.  The following
11963changes
11964must be made to ACPI-related device drivers that are attached to one or
11965more
11966GPEs: (This information will be added to the ACPI CA Programmer
11967Reference.)
11968
119691) AcpiInstallGpeHandler no longer automatically enables the GPE, you
11970must
11971explicitly call AcpiEnableGpe.
119722) There is a new interface called AcpiSetGpeType. This should be called
11973before enabling the GPE.  Also, this interface will automatically disable
11974the GPE if it is currently enabled.
119753) AcpiEnableGpe no longer supports a GPE type flag.
11976
11977Specific drivers that must be changed:
119781) EC driver:
11979    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
11980AeGpeHandler, NULL);
11981    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
11982    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
11983
119842) Button Drivers (Power, Lid, Sleep):
11985Run _PRW method under parent device
11986If _PRW exists: /* This is a control-method button */
11987    Extract GPE number and possibly GpeDevice
11988    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
11989    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
11990
11991For all other devices that have _PRWs, we automatically set the GPE type
11992to
11993ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
11994This
11995must be done on a selective basis, usually requiring some kind of user
11996app
11997to allow the user to pick the wake devices.
11998
11999
12000Code and Data Size: Current and previous core subsystem library sizes are
12001shown below.  These are the code and data sizes for the acpica.lib
12002produced
12003by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12004any ACPI driver or OSPM code.  The debug version of the code includes the
12005debug output trace mechanism and has a much larger code and data size.
12006Note
12007that these values will vary depending on the efficiency of the compiler
12008and
12009the compiler options used during generation.
12010
12011  Previous Release:
12012    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12013    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12014  Current Release:
12015
12016    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12017    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
12018
12019
12020
12021----------------------------------------
1202202 April 2004.  Summary of changes for version 20040402:
12023
120241) ACPI CA Core Subsystem:
12025
12026Fixed an interpreter problem where an indirect store through an ArgX
12027parameter was incorrectly applying the "implicit conversion rules" during
12028the store.  From the ACPI specification: "If the target is a method local
12029or
12030argument (LocalX or ArgX), no conversion is performed and the result is
12031stored directly to the target".  The new behavior is to disable implicit
12032conversion during ALL stores to an ArgX.
12033
12034Changed the behavior of the _PRW method scan to ignore any and all errors
12035returned by a given _PRW.  This prevents the scan from aborting from the
12036failure of any single _PRW.
12037
12038Moved the runtime configuration parameters from the global init procedure
12039to
12040static variables in acglobal.h.  This will allow the host to override the
12041default values easily.
12042
12043Code and Data Size: Current and previous core subsystem library sizes are
12044shown below.  These are the code and data sizes for the acpica.lib
12045produced
12046by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12047any ACPI driver or OSPM code.  The debug version of the code includes the
12048debug output trace mechanism and has a much larger code and data size.
12049Note
12050that these values will vary depending on the efficiency of the compiler
12051and
12052the compiler options used during generation.
12053
12054  Previous Release:
12055    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
12056    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
12057  Current Release:
12058    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12059    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12060
12061
120622) iASL Compiler/Disassembler:
12063
12064iASL now fully disassembles SSDTs.  However, External() statements are
12065not
12066generated automatically for unresolved symbols at this time.  This is a
12067planned feature for future implementation.
12068
12069Fixed a scoping problem in the disassembler that occurs when the type of
12070the
12071target of a Scope() operator is overridden.  This problem caused an
12072incorrectly nested internal namespace to be constructed.
12073
12074Any warnings or errors that are emitted during disassembly are now
12075commented
12076out automatically so that the resulting file can be recompiled without
12077any
12078hand editing.
12079
12080----------------------------------------
1208126 March 2004.  Summary of changes for version 20040326:
12082
120831) ACPI CA Core Subsystem:
12084
12085Implemented support for "wake" GPEs via interaction between GPEs and the
12086_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
12087identified as a WAKE GPE and by default will no longer be enabled at
12088runtime.  Previously, we were blindly enabling all GPEs with a
12089corresponding
12090_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
12091We
12092believe this has been the cause of thousands of "spurious" GPEs on some
12093systems.
12094
12095This new GPE behavior is can be reverted to the original behavior (enable
12096ALL GPEs at runtime) via a runtime flag.
12097
12098Fixed a problem where aliased control methods could not access objects
12099properly.  The proper scope within the namespace was not initialized
12100(transferred to the target of the aliased method) before executing the
12101target method.
12102
12103Fixed a potential race condition on internal object deletion on the
12104return
12105object in AcpiEvaluateObject.
12106
12107Integrated a fix for resource descriptors where both _MEM and _MTP were
12108being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
12109wide, 0x0F instead of 0x03.)
12110
12111Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
12112preventing
12113a
12114fault in some cases.
12115
12116Updated Notify() values for debug statements in evmisc.c
12117
12118Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
12119
12120Code and Data Size: Current and previous core subsystem library sizes are
12121shown below.  These are the code and data sizes for the acpica.lib
12122produced
12123by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12124any ACPI driver or OSPM code.  The debug version of the code includes the
12125debug output trace mechanism and has a much larger code and data size.
12126Note
12127that these values will vary depending on the efficiency of the compiler
12128and
12129the compiler options used during generation.
12130
12131  Previous Release:
12132
12133    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
12134    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
12135  Current Release:
12136    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
12137    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
12138
12139----------------------------------------
1214011 March 2004.  Summary of changes for version 20040311:
12141
121421) ACPI CA Core Subsystem:
12143
12144Fixed a problem where errors occurring during the parse phase of control
12145method execution did not abort cleanly.  For example, objects created and
12146installed in the namespace were not deleted.  This caused all subsequent
12147invocations of the method to return the AE_ALREADY_EXISTS exception.
12148
12149Implemented a mechanism to force a control method to "Serialized"
12150execution
12151if the method attempts to create namespace objects. (The root of the
12152AE_ALREADY_EXISTS problem.)
12153
12154Implemented support for the predefined _OSI "internal" control method.
12155Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
12156and
12157"Windows 2001.1", and can be easily upgraded for new strings as
12158necessary.
12159This feature will allow "other" operating systems to execute the fully
12160tested, "Windows" code path through the ASL code
12161
12162Global Lock Support:  Now allows multiple acquires and releases with any
12163internal thread.  Removed concept of "owning thread" for this special
12164mutex.
12165
12166Fixed two functions that were inappropriately declaring large objects on
12167the
12168CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
12169during
12170method execution considerably.
12171
12172Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
12173S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
12174
12175Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
12176defined on the machine.
12177
12178Implemented two runtime options:  One to force all control method
12179execution
12180to "Serialized" to mimic Windows behavior, another to disable _OSI
12181support
12182if it causes problems on a given machine.
12183
12184Code and Data Size: Current and previous core subsystem library sizes are
12185shown below.  These are the code and data sizes for the acpica.lib
12186produced
12187by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12188any ACPI driver or OSPM code.  The debug version of the code includes the
12189debug output trace mechanism and has a much larger code and data size.
12190Note
12191that these values will vary depending on the efficiency of the compiler
12192and
12193the compiler options used during generation.
12194
12195  Previous Release:
12196    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
12197    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
12198  Current Release:
12199    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
12200    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
12201
122022) iASL Compiler/Disassembler:
12203
12204Fixed an array size problem for FreeBSD that would cause the compiler to
12205fault.
12206
12207----------------------------------------
1220820 February 2004.  Summary of changes for version 20040220:
12209
12210
122111) ACPI CA Core Subsystem:
12212
12213Implemented execution of _SxD methods for Device objects in the
12214GetObjectInfo interface.
12215
12216Fixed calls to _SST method to pass the correct arguments.
12217
12218Added a call to _SST on wake to restore to "working" state.
12219
12220Check for End-Of-Buffer failure case in the WalkResources interface.
12221
12222Integrated fix for 64-bit alignment issue in acglobal.h by moving two
12223structures to the beginning of the file.
12224
12225After wake, clear GPE status register(s) before enabling GPEs.
12226
12227After wake, clear/enable power button.  (Perhaps we should clear/enable
12228all
12229fixed events upon wake.)
12230
12231Fixed a couple of possible memory leaks in the Namespace manager.
12232
12233Integrated latest acnetbsd.h file.
12234
12235----------------------------------------
1223611 February 2004.  Summary of changes for version 20040211:
12237
12238
122391) ACPI CA Core Subsystem:
12240
12241Completed investigation and implementation of the call-by-reference
12242mechanism for control method arguments.
12243
12244Fixed a problem where a store of an object into an indexed package could
12245fail if the store occurs within a different method than the method that
12246created the package.
12247
12248Fixed a problem where the ToDecimal operator could return incorrect
12249results.
12250
12251Fixed a problem where the CopyObject operator could fail on some of the
12252more
12253obscure objects (e.g., Reference objects.)
12254
12255Improved the output of the Debug object to display buffer, package, and
12256index objects.
12257
12258Fixed a problem where constructs of the form "RefOf (ArgX)" did not
12259return
12260the expected result.
12261
12262Added permanent ACPI_REPORT_ERROR macros for all instances of the
12263ACPI_AML_INTERNAL exception.
12264
12265Integrated latest version of acfreebsd.h
12266
12267----------------------------------------
1226816 January 2004.  Summary of changes for version 20040116:
12269
12270The purpose of this release is primarily to update the copyright years in
12271each module, thus causing a huge number of diffs.  There are a few small
12272functional changes, however.
12273
122741) ACPI CA Core Subsystem:
12275
12276Improved error messages when there is a problem finding one or more of
12277the
12278required base ACPI tables
12279
12280Reintroduced the definition of APIC_HEADER in actbl.h
12281
12282Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
12283
12284Removed extraneous reference to NewObj in dsmthdat.c
12285
122862) iASL compiler
12287
12288Fixed a problem introduced in December that disabled the correct
12289disassembly
12290of Resource Templates
12291
12292
12293----------------------------------------
1229403 December 2003.  Summary of changes for version 20031203:
12295
122961) ACPI CA Core Subsystem:
12297
12298Changed the initialization of Operation Regions during subsystem
12299init to perform two entire walks of the ACPI namespace; The first
12300to initialize the regions themselves, the second to execute the
12301_REG methods.  This fixed some interdependencies across _REG
12302methods found on some machines.
12303
12304Fixed a problem where a Store(Local0, Local1) could simply update
12305the object reference count, and not create a new copy of the
12306object if the Local1 is uninitialized.
12307
12308Implemented support for the _SST reserved method during sleep
12309transitions.
12310
12311Implemented support to clear the SLP_TYP and SLP_EN bits when
12312waking up, this is apparently required by some machines.
12313
12314When sleeping, clear the wake status only if SleepState is not S5.
12315
12316Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
12317pointer arithmetic advanced a string pointer too far.
12318
12319Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
12320could be returned if the requested table has not been loaded.
12321
12322Within the support for IRQ resources, restructured the handling of
12323the active and edge/level bits.
12324
12325Fixed a few problems in AcpiPsxExecute() where memory could be
12326leaked under certain error conditions.
12327
12328Improved error messages for the cases where the ACPI mode could
12329not be entered.
12330
12331Code and Data Size: Current and previous core subsystem library
12332sizes are shown below.  These are the code and data sizes for the
12333acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12334these values do not include any ACPI driver or OSPM code.  The
12335debug version of the code includes the debug output trace
12336mechanism and has a much larger code and data size.  Note that
12337these values will vary depending on the efficiency of the compiler
12338and the compiler options used during generation.
12339
12340  Previous Release (20031029):
12341    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
12342    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
12343  Current Release:
12344    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
12345    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
12346
123472) iASL Compiler/Disassembler:
12348
12349Implemented a fix for the iASL disassembler where a bad index was
12350generated.  This was most noticeable on 64-bit platforms
12351
12352
12353----------------------------------------
1235429 October 2003.  Summary of changes for version 20031029:
12355
123561) ACPI CA Core Subsystem:
12357
12358
12359Fixed a problem where a level-triggered GPE with an associated
12360_Lxx control method was incorrectly cleared twice.
12361
12362Fixed a problem with the Field support code where an access can
12363occur beyond the end-of-region if the field is non-aligned but
12364extends to the very end of the parent region (resulted in an
12365AE_AML_REGION_LIMIT exception.)
12366
12367Fixed a problem with ACPI Fixed Events where an RT Clock handler
12368would not get invoked on an RTC event.  The RTC event bitmasks for
12369the PM1 registers were not being initialized properly.
12370
12371Implemented support for executing _STA and _INI methods for
12372Processor objects.  Although this is currently not part of the
12373ACPI specification, there is existing ASL code that depends on the
12374init-time execution of these methods.
12375
12376Implemented and deployed a GetDescriptorName function to decode
12377the various types of internal descriptors.  Guards against null
12378descriptors during debug output also.
12379
12380Implemented and deployed a GetNodeName function to extract the 4-
12381character namespace node name.  This function simplifies the debug
12382and error output, as well as guarding against null pointers during
12383output.
12384
12385Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
12386simplify the debug and error output of 64-bit integers.  This
12387macro replaces the HIDWORD and LODWORD macros for dumping these
12388integers.
12389
12390Updated the implementation of the Stall() operator to only call
12391AcpiOsStall(), and also return an error if the operand is larger
12392than 255.  This preserves the required behavior of not
12393relinquishing the processor, as would happen if AcpiOsSleep() was
12394called for "long stalls".
12395
12396Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
12397initialized are now treated as NOOPs.
12398
12399Cleaned up a handful of warnings during 64-bit generation.
12400
12401Fixed a reported error where and incorrect GPE number was passed
12402to the GPE dispatch handler.  This value is only used for error
12403output, however.  Used this opportunity to clean up and streamline
12404the GPE dispatch code.
12405
12406Code and Data Size: Current and previous core subsystem library
12407sizes are shown below.  These are the code and data sizes for the
12408acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12409these values do not include any ACPI driver or OSPM code.  The
12410
12411debug version of the code includes the debug output trace
12412mechanism and has a much larger code and data size.  Note that
12413these values will vary depending on the efficiency of the compiler
12414and the compiler options used during generation.
12415
12416  Previous Release (20031002):
12417    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
12418    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
12419  Current Release:
12420    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
12421    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
12422
12423
124242) iASL Compiler/Disassembler:
12425
12426Updated the iASL compiler to return an error if the operand to the
12427Stall() operator is larger than 255.
12428
12429
12430----------------------------------------
1243102 October 2003.  Summary of changes for version 20031002:
12432
12433
124341) ACPI CA Core Subsystem:
12435
12436Fixed a problem with Index Fields where the index was not
12437incremented for fields that require multiple writes to the
12438index/data registers (Fields that are wider than the data
12439register.)
12440
12441Fixed a problem with all Field objects where a write could go
12442beyond the end-of-field if the field was larger than the access
12443granularity and therefore required multiple writes to complete the
12444request.  An extra write beyond the end of the field could happen
12445inadvertently.
12446
12447Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
12448would incorrectly be returned if the width of the Data Register
12449was larger than the specified field access width.
12450
12451Completed fixes for LoadTable() and Unload() and verified their
12452operation.  Implemented full support for the "DdbHandle" object
12453throughout the ACPI CA subsystem.
12454
12455Implemented full support for the MADT and ECDT tables in the ACPI
12456CA header files.  Even though these tables are not directly
12457consumed by ACPI CA, the header definitions are useful for ACPI
12458device drivers.
12459
12460Integrated resource descriptor fixes posted to the Linux ACPI
12461list.  This included checks for minimum descriptor length, and
12462support for trailing NULL strings within descriptors that have
12463optional string elements.
12464
12465Code and Data Size: Current and previous core subsystem library
12466sizes are shown below.  These are the code and data sizes for the
12467acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12468these values do not include any ACPI driver or OSPM code.  The
12469debug version of the code includes the debug output trace
12470mechanism and has a much larger code and data size.  Note that
12471these values will vary depending on the efficiency of the compiler
12472and the compiler options used during generation.
12473
12474  Previous Release (20030918):
12475    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
12476    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
12477  Current Release:
12478    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
12479    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
12480
12481
124822) iASL Compiler:
12483
12484Implemented detection of non-ASCII characters within the input
12485source ASL file.  This catches attempts to compile binary (AML)
12486files early in the compile, with an informative error message.
12487
12488Fixed a problem where the disassembler would fault if the output
12489filename could not be generated or if the output file could not be
12490opened.
12491
12492----------------------------------------
1249318 September 2003.  Summary of changes for version 20030918:
12494
12495
124961) ACPI CA Core Subsystem:
12497
12498Found and fixed a longstanding problem with the late execution of
12499the various deferred AML opcodes (such as Operation Regions,
12500Buffer Fields, Buffers, and Packages).  If the name string
12501specified for the name of the new object placed the object in a
12502scope other than the current scope, the initialization/execution
12503of the opcode failed.  The solution to this problem was to
12504implement a mechanism where the late execution of such opcodes
12505does not attempt to lookup/create the name a second time in an
12506incorrect scope.  This fixes the "region size computed
12507incorrectly" problem.
12508
12509Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
12510Global Lock AE_BAD_PARAMETER error.
12511
12512Fixed several 64-bit issues with prototypes, casting and data
12513types.
12514
12515Removed duplicate prototype from acdisasm.h
12516
12517Fixed an issue involving EC Operation Region Detach (Shaohua Li)
12518
12519Code and Data Size: Current and previous core subsystem library
12520sizes are shown below.  These are the code and data sizes for the
12521acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12522these values do not include any ACPI driver or OSPM code.  The
12523debug version of the code includes the debug output trace
12524mechanism and has a much larger code and data size.  Note that
12525these values will vary depending on the efficiency of the compiler
12526and the compiler options used during generation.
12527
12528  Previous Release:
12529
12530    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
12531    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
12532  Current Release:
12533    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
12534    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
12535
12536
125372) Linux:
12538
12539Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
12540correct sleep time in seconds.
12541
12542----------------------------------------
1254314 July 2003.  Summary of changes for version 20030619:
12544
125451) ACPI CA Core Subsystem:
12546
12547Parse SSDTs in order discovered, as opposed to reverse order
12548(Hrvoje Habjanic)
12549
12550Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
12551Klausner,
12552   Nate Lawson)
12553
12554
125552) Linux:
12556
12557Dynamically allocate SDT list (suggested by Andi Kleen)
12558
12559proc function return value cleanups (Andi Kleen)
12560
12561Correctly handle NMI watchdog during long stalls (Andrew Morton)
12562
12563Make it so acpismp=force works (reported by Andrew Morton)
12564
12565
12566----------------------------------------
1256719 June 2003.  Summary of changes for version 20030619:
12568
125691) ACPI CA Core Subsystem:
12570
12571Fix To/FromBCD, eliminating the need for an arch-specific #define.
12572
12573Do not acquire a semaphore in the S5 shutdown path.
12574
12575Fix ex_digits_needed for 0. (Takayoshi Kochi)
12576
12577Fix sleep/stall code reversal. (Andi Kleen)
12578
12579Revert a change having to do with control method calling
12580semantics.
12581
125822) Linux:
12583
12584acpiphp update (Takayoshi Kochi)
12585
12586Export acpi_disabled for sonypi (Stelian Pop)
12587
12588Mention acpismp=force in config help
12589
12590Re-add acpitable.c and acpismp=force. This improves backwards
12591
12592compatibility and also cleans up the code to a significant degree.
12593
12594Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
12595
12596----------------------------------------
1259722 May 2003.  Summary of changes for version 20030522:
12598
125991) ACPI CA Core Subsystem:
12600
12601Found and fixed a reported problem where an AE_NOT_FOUND error
12602occurred occasionally during _BST evaluation.  This turned out to
12603be an Owner ID allocation issue where a called method did not get
12604a new ID assigned to it.  Eventually, (after 64k calls), the Owner
12605ID UINT16 would wraparound so that the ID would be the same as the
12606caller's and the called method would delete the caller's
12607namespace.
12608
12609Implemented extended error reporting for control methods that are
12610aborted due to a run-time exception.  Output includes the exact
12611AML instruction that caused the method abort, a dump of the method
12612locals and arguments at the time of the abort, and a trace of all
12613nested control method calls.
12614
12615Modified the interpreter to allow the creation of buffers of zero
12616length from the AML code. Implemented new code to ensure that no
12617attempt is made to actually allocate a memory buffer (of length
12618zero) - instead, a simple buffer object with a NULL buffer pointer
12619and length zero is created.  A warning is no longer issued when
12620the AML attempts to create a zero-length buffer.
12621
12622Implemented a workaround for the "leading asterisk issue" in
12623_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
12624asterisk is automatically removed if present in any HID, UID, or
12625CID strings.  The iASL compiler will still flag this asterisk as
12626an error, however.
12627
12628Implemented full support for _CID methods that return a package of
12629multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
12630now additionally returns a device _CID list if present.  This
12631required a change to the external interface in order to pass an
12632ACPI_BUFFER object as a parameter since the _CID list is of
12633variable length.
12634
12635Fixed a problem with the new AE_SAME_HANDLER exception where
12636handler initialization code did not know about this exception.
12637
12638Code and Data Size: Current and previous core subsystem library
12639sizes are shown below.  These are the code and data sizes for the
12640acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12641these values do not include any ACPI driver or OSPM code.  The
12642debug version of the code includes the debug output trace
12643mechanism and has a much larger code and data size.  Note that
12644these values will vary depending on the efficiency of the compiler
12645and the compiler options used during generation.
12646
12647  Previous Release (20030509):
12648    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
12649    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
12650  Current Release:
12651    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
12652    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
12653
12654
126552) Linux:
12656
12657Fixed a bug in which we would reinitialize the ACPI interrupt
12658after it was already working, thus disabling all ACPI and the IRQs
12659for any other device sharing the interrupt. (Thanks to Stian
12660Jordet)
12661
12662Toshiba driver update (John Belmonte)
12663
12664Return only 0 or 1 for our interrupt handler status (Andrew
12665Morton)
12666
12667
126683) iASL Compiler:
12669
12670Fixed a reported problem where multiple (nested) ElseIf()
12671statements were not handled correctly by the compiler, resulting
12672in incorrect warnings and incorrect AML code.  This was a problem
12673in both the ASL parser and the code generator.
12674
12675
126764) Documentation:
12677
12678Added changes to existing interfaces, new exception codes, and new
12679text concerning reference count object management versus garbage
12680collection.
12681
12682----------------------------------------
1268309 May 2003.  Summary of changes for version 20030509.
12684
12685
126861) ACPI CA Core Subsystem:
12687
12688Changed the subsystem initialization sequence to hold off
12689installation of address space handlers until the hardware has been
12690initialized and the system has entered ACPI mode.  This is because
12691the installation of space handlers can cause _REG methods to be
12692run.  Previously, the _REG methods could potentially be run before
12693ACPI mode was enabled.
12694
12695Fixed some memory leak issues related to address space handler and
12696notify handler installation.  There were some problems with the
12697reference count mechanism caused by the fact that the handler
12698objects are shared across several namespace objects.
12699
12700Fixed a reported problem where reference counts within the
12701namespace were not properly updated when named objects created by
12702method execution were deleted.
12703
12704Fixed a reported problem where multiple SSDTs caused a deletion
12705issue during subsystem termination.  Restructured the table data
12706structures to simplify the linked lists and the related code.
12707
12708Fixed a problem where the table ID associated with secondary
12709tables (SSDTs) was not being propagated into the namespace objects
12710created by those tables.  This would only present a problem for
12711tables that are unloaded at run-time, however.
12712
12713Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
12714type as the length parameter (instead of UINT32).
12715
12716Solved a long-standing problem where an ALREADY_EXISTS error
12717appears on various systems.  This problem could happen when there
12718are multiple PCI_Config operation regions under a single PCI root
12719bus.  This doesn't happen very frequently, but there are some
12720systems that do this in the ASL.
12721
12722Fixed a reported problem where the internal DeleteNode function
12723was incorrectly handling the case where a namespace node was the
12724first in the parent's child list, and had additional peers (not
12725the only child, but first in the list of children.)
12726
12727Code and Data Size: Current core subsystem library sizes are shown
12728below.  These are the code and data sizes for the acpica.lib
12729produced by the Microsoft Visual C++ 6.0 compiler, and these
12730values do not include any ACPI driver or OSPM code.  The debug
12731version of the code includes the debug output trace mechanism and
12732has a much larger code and data size.  Note that these values will
12733vary depending on the efficiency of the compiler and the compiler
12734options used during generation.
12735
12736  Previous Release
12737    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
12738    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
12739  Current Release:
12740    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
12741    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
12742
12743
127442) Linux:
12745
12746Allow ":" in OS override string (Ducrot Bruno)
12747
12748Kobject fix (Greg KH)
12749
12750
127513 iASL Compiler/Disassembler:
12752
12753Fixed a problem in the generation of the C source code files (AML
12754is emitted in C source statements for BIOS inclusion) where the
12755Ascii dump that appears within a C comment at the end of each line
12756could cause a compile time error if the AML sequence happens to
12757have an open comment or close comment sequence embedded.
12758
12759
12760----------------------------------------
1276124 April 2003.  Summary of changes for version 20030424.
12762
12763
127641) ACPI CA Core Subsystem:
12765
12766Support for big-endian systems has been implemented.  Most of the
12767support has been invisibly added behind big-endian versions of the
12768ACPI_MOVE_* macros.
12769
12770Fixed a problem in AcpiHwDisableGpeBlock() and
12771AcpiHwClearGpeBlock() where an incorrect offset was passed to the
12772low level hardware write routine.  The offset parameter was
12773actually eliminated from the low level read/write routines because
12774they had become obsolete.
12775
12776Fixed a problem where a handler object was deleted twice during
12777the removal of a fixed event handler.
12778
12779
127802) Linux:
12781
12782A fix for SMP systems with link devices was contributed by
12783
12784Compaq's Dan Zink.
12785
12786(2.5) Return whether we handled the interrupt in our IRQ handler.
12787(Linux ISRs no longer return void, so we can propagate the handler
12788return value from the ACPI CA core back to the OS.)
12789
12790
12791
127923) Documentation:
12793
12794The ACPI CA Programmer Reference has been updated to reflect new
12795interfaces and changes to existing interfaces.
12796
12797----------------------------------------
1279828 March 2003.  Summary of changes for version 20030328.
12799
128001) ACPI CA Core Subsystem:
12801
12802The GPE Block Device support has been completed.  New interfaces
12803are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
12804interfaces (enable, disable, clear, getstatus) have been split
12805into separate interfaces for Fixed Events and General Purpose
12806Events (GPEs) in order to support GPE Block Devices properly.
12807
12808Fixed a problem where the error message "Failed to acquire
12809semaphore" would appear during operations on the embedded
12810controller (EC).
12811
12812Code and Data Size: Current core subsystem library sizes are shown
12813below.  These are the code and data sizes for the acpica.lib
12814produced by the Microsoft Visual C++ 6.0 compiler, and these
12815values do not include any ACPI driver or OSPM code.  The debug
12816version of the code includes the debug output trace mechanism and
12817has a much larger code and data size.  Note that these values will
12818vary depending on the efficiency of the compiler and the compiler
12819options used during generation.
12820
12821  Previous Release
12822    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
12823    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
12824  Current Release:
12825    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
12826    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
12827
12828
12829----------------------------------------
1283028 February 2003.  Summary of changes for version 20030228.
12831
12832
128331) ACPI CA Core Subsystem:
12834
12835The GPE handling and dispatch code has been completely overhauled
12836in preparation for support of GPE Block Devices (ID ACPI0006).
12837This affects internal data structures and code only; there should
12838be no differences visible externally.  One new file has been
12839added, evgpeblk.c
12840
12841The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
12842fields that are used to determine the GPE block lengths.  The
12843REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
12844structures are ignored.  This is per the ACPI specification but it
12845isn't very clear.  The full 256 Block 0/1 GPEs are now supported
12846(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
12847
12848In the SCI interrupt handler, removed the read of the PM1_CONTROL
12849register to look at the SCI_EN bit.  On some machines, this read
12850causes an SMI event and greatly slows down SCI events.  (This may
12851in fact be the cause of slow battery status response on some
12852systems.)
12853
12854Fixed a problem where a store of a NULL string to a package object
12855could cause the premature deletion of the object.  This was seen
12856during execution of the battery _BIF method on some systems,
12857resulting in no battery data being returned.
12858
12859Added AcpiWalkResources interface to simplify parsing of resource
12860lists.
12861
12862Code and Data Size: Current core subsystem library sizes are shown
12863below.  These are the code and data sizes for the acpica.lib
12864produced by the Microsoft Visual C++ 6.0 compiler, and these
12865values do not include any ACPI driver or OSPM code.  The debug
12866version of the code includes the debug output trace mechanism and
12867has a much larger code and data size.  Note that these values will
12868vary depending on the efficiency of the compiler and the compiler
12869options used during generation.
12870
12871  Previous Release
12872    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12873    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12874  Current Release:
12875    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
12876    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
12877
12878
128792) Linux
12880
12881S3 fixes (Ole Rohne)
12882
12883Update ACPI PHP driver with to use new acpi_walk_resource API
12884(Bjorn Helgaas)
12885
12886Add S4BIOS support (Pavel Machek)
12887
12888Map in entire table before performing checksum (John Stultz)
12889
12890Expand the mem= cmdline to allow the specification of reserved and
12891ACPI DATA blocks (Pavel Machek)
12892
12893Never use ACPI on VISWS
12894
12895Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
12896
12897Revert a change that allowed P_BLK lengths to be 4 or 5. This is
12898causing us to think that some systems support C2 when they really
12899don't.
12900
12901Do not count processor objects for non-present CPUs (Thanks to
12902Dominik Brodowski)
12903
12904
129053) iASL Compiler:
12906
12907Fixed a problem where ASL include files could not be found and
12908opened.
12909
12910Added support for the _PDC reserved name.
12911
12912
12913----------------------------------------
1291422 January 2003.  Summary of changes for version 20030122.
12915
12916
129171) ACPI CA Core Subsystem:
12918
12919Added a check for constructs of the form:  Store (Local0, Local0)
12920where Local0 is not initialized.  Apparently, some BIOS
12921programmers believe that this is a NOOP.  Since this store doesn't
12922do anything anyway, the new prototype behavior will ignore this
12923error.  This is a case where we can relax the strict checking in
12924the interpreter in the name of compatibility.
12925
12926
129272) Linux
12928
12929The AcpiSrc Source Conversion Utility has been released with the
12930Linux package for the first time.  This is the utility that is
12931used to convert the ACPI CA base source code to the Linux version.
12932
12933(Both) Handle P_BLK lengths shorter than 6 more gracefully
12934
12935(Both) Move more headers to include/acpi, and delete an unused
12936header.
12937
12938(Both) Move drivers/acpi/include directory to include/acpi
12939
12940(Both) Boot functions don't use cmdline, so don't pass it around
12941
12942(Both) Remove include of unused header (Adrian Bunk)
12943
12944(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
12945the
12946former now also includes the latter, acpiphp.h only needs the one,
12947now.
12948
12949(2.5) Make it possible to select method of bios restoring after S3
12950resume. [=> no more ugly ifdefs] (Pavel Machek)
12951
12952(2.5) Make proc write interfaces work (Pavel Machek)
12953
12954(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
12955
12956(2.5) Break out ACPI Perf code into its own module, under cpufreq
12957(Dominik Brodowski)
12958
12959(2.4) S4BIOS support (Ducrot Bruno)
12960
12961(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
12962Visinoni)
12963
12964
129653) iASL Compiler:
12966
12967Added support to disassemble SSDT and PSDTs.
12968
12969Implemented support to obtain SSDTs from the Windows registry if
12970available.
12971
12972
12973----------------------------------------
1297409 January 2003.  Summary of changes for version 20030109.
12975
129761) ACPI CA Core Subsystem:
12977
12978Changed the behavior of the internal Buffer-to-String conversion
12979function.  The current ACPI specification states that the contents
12980of the buffer are "converted to a string of two-character
12981hexadecimal numbers, each separated by a space".  Unfortunately,
12982this definition is not backwards compatible with existing ACPI 1.0
12983implementations (although the behavior was not defined in the ACPI
129841.0 specification).  The new behavior simply copies data from the
12985buffer to the string until a null character is found or the end of
12986the buffer is reached.  The new String object is always null
12987terminated.  This problem was seen during the generation of _BIF
12988battery data where incorrect strings were returned for battery
12989type, etc.  This will also require an errata to the ACPI
12990specification.
12991
12992Renamed all instances of NATIVE_UINT and NATIVE_INT to
12993ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
12994
12995Copyright in all module headers (both Linux and non-Linux) has be
12996updated to 2003.
12997
12998Code and Data Size: Current core subsystem library sizes are shown
12999below.  These are the code and data sizes for the acpica.lib
13000produced by the Microsoft Visual C++ 6.0 compiler, and these
13001values do not include any ACPI driver or OSPM code.  The debug
13002version of the code includes the debug output trace mechanism and
13003has a much larger code and data size.  Note that these values will
13004vary depending on the efficiency of the compiler and the compiler
13005options used during generation.
13006
13007  Previous Release
13008    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13009    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13010  Current Release:
13011    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13012    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13013
13014
130152) Linux
13016
13017Fixed an oops on module insertion/removal (Matthew Tippett)
13018
13019(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
13020
13021(2.5) Replace pr_debug (Randy Dunlap)
13022
13023(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
13024
13025(Both) Eliminate spawning of thread from timer callback, in favor
13026of schedule_work()
13027
13028(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
13029
13030(Both) Added define for Fixed Function HW region (Matthew Wilcox)
13031
13032(Both) Add missing statics to button.c (Pavel Machek)
13033
13034Several changes have been made to the source code translation
13035utility that generates the Linux Code in order to make the code
13036more "Linux-like":
13037
13038All typedefs on structs and unions have been removed in keeping
13039with the Linux coding style.
13040
13041Removed the non-Linux SourceSafe module revision number from each
13042module header.
13043
13044Completed major overhaul of symbols to be lowercased for linux.
13045Doubled the number of symbols that are lowercased.
13046
13047Fixed a problem where identifiers within procedure headers and
13048within quotes were not fully lower cased (they were left with a
13049starting capital.)
13050
13051Some C macros whose only purpose is to allow the generation of 16-
13052bit code are now completely removed in the Linux code, increasing
13053readability and maintainability.
13054
13055----------------------------------------
13056
1305712 December 2002.  Summary of changes for version 20021212.
13058
13059
130601) ACPI CA Core Subsystem:
13061
13062Fixed a problem where the creation of a zero-length AML Buffer
13063would cause a fault.
13064
13065Fixed a problem where a Buffer object that pointed to a static AML
13066buffer (in an ACPI table) could inadvertently be deleted, causing
13067memory corruption.
13068
13069Fixed a problem where a user buffer (passed in to the external
13070ACPI CA interfaces) could be overwritten if the buffer was too
13071small to complete the operation, causing memory corruption.
13072
13073Fixed a problem in the Buffer-to-String conversion code where a
13074string of length one was always returned, regardless of the size
13075of the input Buffer object.
13076
13077Removed the NATIVE_CHAR data type across the entire source due to
13078lack of need and lack of consistent use.
13079
13080Code and Data Size: Current core subsystem library sizes are shown
13081below.  These are the code and data sizes for the acpica.lib
13082produced by the Microsoft Visual C++ 6.0 compiler, and these
13083values do not include any ACPI driver or OSPM code.  The debug
13084version of the code includes the debug output trace mechanism and
13085has a much larger code and data size.  Note that these values will
13086vary depending on the efficiency of the compiler and the compiler
13087options used during generation.
13088
13089  Previous Release
13090    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
13091    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
13092  Current Release:
13093    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13094    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13095
13096
13097----------------------------------------
1309805 December 2002.  Summary of changes for version 20021205.
13099
131001) ACPI CA Core Subsystem:
13101
13102Fixed a problem where a store to a String or Buffer object could
13103cause corruption of the DSDT if the object type being stored was
13104the same as the target object type and the length of the object
13105being stored was equal to or smaller than the original (existing)
13106target object.  This was seen to cause corruption of battery _BIF
13107buffers if the _BIF method modified the buffer on the fly.
13108
13109Fixed a problem where an internal error was generated if a control
13110method invocation was used in an OperationRegion, Buffer, or
13111Package declaration.  This was caused by the deferred parsing of
13112the control method and thus the deferred creation of the internal
13113method object.  The solution to this problem was to create the
13114internal method object at the moment the method is encountered in
13115the first pass - so that subsequent references to the method will
13116able to obtain the required parameter count and thus properly
13117parse the method invocation.  This problem presented itself as an
13118AE_AML_INTERNAL during the pass 1 parse phase during table load.
13119
13120Fixed a problem where the internal String object copy routine did
13121not always allocate sufficient memory for the target String object
13122and caused memory corruption.  This problem was seen to cause
13123"Allocation already present in list!" errors as memory allocation
13124became corrupted.
13125
13126Implemented a new function for the evaluation of namespace objects
13127that allows the specification of the allowable return object
13128types.  This simplifies a lot of code that checks for a return
13129object of one or more specific objects returned from the
13130evaluation (such as _STA, etc.)  This may become and external
13131function if it would be useful to ACPI-related drivers.
13132
13133Completed another round of prefixing #defines with "ACPI_" for
13134clarity.
13135
13136Completed additional code restructuring to allow more modular
13137linking for iASL compiler and AcpiExec.  Several files were split
13138creating new files.  New files:  nsparse.c dsinit.c evgpe.c
13139
13140Implemented an abort mechanism to terminate an executing control
13141method via the AML debugger.  This feature is useful for debugging
13142control methods that depend (wait) for specific hardware
13143responses.
13144
13145Code and Data Size: Current core subsystem library sizes are shown
13146below.  These are the code and data sizes for the acpica.lib
13147produced by the Microsoft Visual C++ 6.0 compiler, and these
13148values do not include any ACPI driver or OSPM code.  The debug
13149version of the code includes the debug output trace mechanism and
13150has a much larger code and data size.  Note that these values will
13151vary depending on the efficiency of the compiler and the compiler
13152options used during generation.
13153
13154  Previous Release
13155    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13156    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
13157  Current Release:
13158    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
13159    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
13160
13161
131622) iASL Compiler/Disassembler
13163
13164Fixed a compiler code generation problem for "Interrupt" Resource
13165Descriptors.  If specified in the ASL, the optional "Resource
13166Source Index" and "Resource Source" fields were not inserted into
13167the correct location within the AML resource descriptor, creating
13168an invalid descriptor.
13169
13170Fixed a disassembler problem for "Interrupt" resource descriptors.
13171The optional "Resource Source Index" and "Resource Source" fields
13172were ignored.
13173
13174
13175----------------------------------------
1317622 November 2002.  Summary of changes for version 20021122.
13177
13178
131791) ACPI CA Core Subsystem:
13180
13181Fixed a reported problem where an object stored to a Method Local
13182or Arg was not copied to a new object during the store - the
13183object pointer was simply copied to the Local/Arg.  This caused
13184all subsequent operations on the Local/Arg to also affect the
13185original source of the store operation.
13186
13187Fixed a problem where a store operation to a Method Local or Arg
13188was not completed properly if the Local/Arg contained a reference
13189(from RefOf) to a named field.  The general-purpose store-to-
13190namespace-node code is now used so that this case is handled
13191automatically.
13192
13193Fixed a problem where the internal object copy routine would cause
13194a protection fault if the object being copied was a Package and
13195contained either 1) a NULL package element or 2) a nested sub-
13196package.
13197
13198Fixed a problem with the GPE initialization that resulted from an
13199ambiguity in the ACPI specification.  One section of the
13200specification states that both the address and length of the GPE
13201block must be zero if the block is not supported.  Another section
13202implies that only the address need be zero if the block is not
13203supported.  The code has been changed so that both the address and
13204the length must be non-zero to indicate a valid GPE block (i.e.,
13205if either the address or the length is zero, the GPE block is
13206invalid.)
13207
13208Code and Data Size: Current core subsystem library sizes are shown
13209below.  These are the code and data sizes for the acpica.lib
13210produced by the Microsoft Visual C++ 6.0 compiler, and these
13211values do not include any ACPI driver or OSPM code.  The debug
13212version of the code includes the debug output trace mechanism and
13213has a much larger code and data size.  Note that these values will
13214vary depending on the efficiency of the compiler and the compiler
13215options used during generation.
13216
13217  Previous Release
13218    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
13219    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
13220  Current Release:
13221    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13222    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
13223
13224
132252) Linux
13226
13227Cleaned up EC driver. Exported an external EC read/write
13228interface. By going through this, other drivers (most notably
13229sonypi) will be able to serialize access to the EC.
13230
13231
132323) iASL Compiler/Disassembler
13233
13234Implemented support to optionally generate include files for both
13235ASM and C (the -i switch).  This simplifies BIOS development by
13236automatically creating include files that contain external
13237declarations for the symbols that are created within the
13238
13239(optionally generated) ASM and C AML source files.
13240
13241
13242----------------------------------------
1324315 November 2002.  Summary of changes for version 20021115.
13244
132451) ACPI CA Core Subsystem:
13246
13247Fixed a memory leak problem where an error during resolution of
13248
13249method arguments during a method invocation from another method
13250failed to cleanup properly by deleting all successfully resolved
13251argument objects.
13252
13253Fixed a problem where the target of the Index() operator was not
13254correctly constructed if the source object was a package.  This
13255problem has not been detected because the use of a target operand
13256with Index() is very rare.
13257
13258Fixed a problem with the Index() operator where an attempt was
13259made to delete the operand objects twice.
13260
13261Fixed a problem where an attempt was made to delete an operand
13262twice during execution of the CondRefOf() operator if the target
13263did not exist.
13264
13265Implemented the first of perhaps several internal create object
13266functions that create and initialize a specific object type.  This
13267consolidates duplicated code wherever the object is created, thus
13268shrinking the size of the subsystem.
13269
13270Implemented improved debug/error messages for errors that occur
13271during nested method invocations.  All executing method pathnames
13272are displayed (with the error) as the call stack is unwound - thus
13273simplifying debug.
13274
13275Fixed a problem introduced in the 10/02 release that caused
13276premature deletion of a buffer object if a buffer was used as an
13277ASL operand where an integer operand is required (Thus causing an
13278implicit object conversion from Buffer to Integer.)  The change in
13279the 10/02 release was attempting to fix a memory leak (albeit
13280incorrectly.)
13281
13282Code and Data Size: Current core subsystem library sizes are shown
13283below.  These are the code and data sizes for the acpica.lib
13284produced by the Microsoft Visual C++ 6.0 compiler, and these
13285values do not include any ACPI driver or OSPM code.  The debug
13286version of the code includes the debug output trace mechanism and
13287has a much larger code and data size.  Note that these values will
13288vary depending on the efficiency of the compiler and the compiler
13289options used during generation.
13290
13291  Previous Release
13292    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
13293    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
13294  Current Release:
13295    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
13296    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
13297
13298
132992) Linux
13300
13301Changed the implementation of the ACPI semaphores to use down()
13302instead of down_interruptable().  It is important that the
13303execution of ACPI control methods not be interrupted by signals.
13304Methods must run to completion, or the system may be left in an
13305unknown/unstable state.
13306
13307Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
13308(Shawn Starr)
13309
13310
133113) iASL Compiler/Disassembler
13312
13313
13314Changed the default location of output files.  All output files
13315are now placed in the current directory by default instead of in
13316the directory of the source file.  This change may affect some
13317existing makefiles, but it brings the behavior of the compiler in
13318line with other similar tools.  The location of the output files
13319can be overridden with the -p command line switch.
13320
13321
13322----------------------------------------
1332311 November 2002.  Summary of changes for version 20021111.
13324
13325
133260) ACPI Specification 2.0B is released and is now available at:
13327http://www.acpi.info/index.html
13328
13329
133301) ACPI CA Core Subsystem:
13331
13332Implemented support for the ACPI 2.0 SMBus Operation Regions.
13333This includes the early detection and handoff of the request to
13334the SMBus region handler (avoiding all of the complex field
13335support code), and support for the bidirectional return packet
13336from an SMBus write operation.  This paves the way for the
13337development of SMBus drivers in each host operating system.
13338
13339Fixed a problem where the semaphore WAIT_FOREVER constant was
13340defined as 32 bits, but must be 16 bits according to the ACPI
13341specification.  This had the side effect of causing ASL
13342Mutex/Event timeouts even though the ASL code requested a wait
13343forever.  Changed all internal references to the ACPI timeout
13344parameter to 16 bits to prevent future problems.  Changed the name
13345of WAIT_FOREVER to ACPI_WAIT_FOREVER.
13346
13347Code and Data Size: Current core subsystem library sizes are shown
13348below.  These are the code and data sizes for the acpica.lib
13349produced by the Microsoft Visual C++ 6.0 compiler, and these
13350values do not include any ACPI driver or OSPM code.  The debug
13351version of the code includes the debug output trace mechanism and
13352has a much larger code and data size.  Note that these values will
13353vary depending on the efficiency of the compiler and the compiler
13354options used during generation.
13355
13356  Previous Release
13357    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13358    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
13359  Current Release:
13360    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
13361    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
13362
13363
133642) Linux
13365
13366Module loading/unloading fixes (John Cagle)
13367
13368
133693) iASL Compiler/Disassembler
13370
13371Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
13372
13373Implemented support for the disassembly of all SMBus protocol
13374keywords (SMBQuick, SMBWord, etc.)
13375
13376----------------------------------------
1337701 November 2002.  Summary of changes for version 20021101.
13378
13379
133801) ACPI CA Core Subsystem:
13381
13382Fixed a problem where platforms that have a GPE1 block but no GPE0
13383block were not handled correctly.  This resulted in a "GPE
13384overlap" error message.  GPE0 is no longer required.
13385
13386Removed code added in the previous release that inserted nodes
13387into the namespace in alphabetical order.  This caused some side-
13388effects on various machines.  The root cause of the problem is
13389still under investigation since in theory, the internal ordering
13390of the namespace nodes should not matter.
13391
13392
13393Enhanced error reporting for the case where a named object is not
13394found during control method execution.  The full ACPI namepath
13395(name reference) of the object that was not found is displayed in
13396this case.
13397
13398Note: as a result of the overhaul of the namespace object types in
13399the previous release, the namespace nodes for the predefined
13400scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
13401instead of ACPI_TYPE_ANY.  This simplifies the namespace
13402management code but may affect code that walks the namespace tree
13403looking for specific object types.
13404
13405Code and Data Size: Current core subsystem library sizes are shown
13406below.  These are the code and data sizes for the acpica.lib
13407produced by the Microsoft Visual C++ 6.0 compiler, and these
13408values do not include any ACPI driver or OSPM code.  The debug
13409version of the code includes the debug output trace mechanism and
13410has a much larger code and data size.  Note that these values will
13411vary depending on the efficiency of the compiler and the compiler
13412options used during generation.
13413
13414  Previous Release
13415    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
13416    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
13417  Current Release:
13418    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13419    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
13420
13421
134222) Linux
13423
13424Fixed a problem introduced in the previous release where the
13425Processor and Thermal objects were not recognized and installed in
13426/proc.  This was related to the scope type change described above.
13427
13428
134293) iASL Compiler/Disassembler
13430
13431Implemented the -g option to get all of the required ACPI tables
13432from the registry and save them to files (Windows version of the
13433compiler only.)  The required tables are the FADT, FACS, and DSDT.
13434
13435Added ACPI table checksum validation during table disassembly in
13436order to catch corrupted tables.
13437
13438
13439----------------------------------------
1344022 October 2002.  Summary of changes for version 20021022.
13441
134421) ACPI CA Core Subsystem:
13443
13444Implemented a restriction on the Scope operator that the target
13445must already exist in the namespace at the time the operator is
13446encountered (during table load or method execution).  In other
13447words, forward references are not allowed and Scope() cannot
13448create a new object. This changes the previous behavior where the
13449interpreter would create the name if not found.  This new behavior
13450correctly enables the search-to-root algorithm during namespace
13451lookup of the target name.  Because of this upsearch, this fixes
13452the known Compaq _SB_.OKEC problem and makes both the AML
13453interpreter and iASL compiler compatible with other ACPI
13454implementations.
13455
13456Completed a major overhaul of the internal ACPI object types for
13457the ACPI Namespace and the associated operand objects.  Many of
13458these types had become obsolete with the introduction of the two-
13459pass namespace load.  This cleanup simplifies the code and makes
13460the entire namespace load mechanism much clearer and easier to
13461understand.
13462
13463Improved debug output for tracking scope opening/closing to help
13464diagnose scoping issues.  The old scope name as well as the new
13465scope name are displayed.  Also improved error messages for
13466problems with ASL Mutex objects and error messages for GPE
13467problems.
13468
13469Cleaned up the namespace dump code, removed obsolete code.
13470
13471All string output (for all namespace/object dumps) now uses the
13472common ACPI string output procedure which handles escapes properly
13473and does not emit non-printable characters.
13474
13475Fixed some issues with constants in the 64-bit version of the
13476local C library (utclib.c)
13477
13478
134792) Linux
13480
13481EC Driver:  No longer attempts to acquire the Global Lock at
13482interrupt level.
13483
13484
134853) iASL Compiler/Disassembler
13486
13487Implemented ACPI 2.0B grammar change that disallows all Type 1 and
134882 opcodes outside of a control method.  This means that the
13489"executable" operators (versus the "namespace" operators) cannot
13490be used at the table level; they can only be used within a control
13491method.
13492
13493Implemented the restriction on the Scope() operator where the
13494target must already exist in the namespace at the time the
13495operator is encountered (during ASL compilation). In other words,
13496forward references are not allowed and Scope() cannot create a new
13497object.  This makes the iASL compiler compatible with other ACPI
13498implementations and makes the Scope() implementation adhere to the
13499ACPI specification.
13500
13501Fixed a problem where namepath optimization for the Alias operator
13502was optimizing the wrong path (of the two namepaths.)  This caused
13503a "Missing alias link" error message.
13504
13505Fixed a problem where an "unknown reserved name" warning could be
13506incorrectly generated for names like "_SB" when the trailing
13507underscore is not used in the original ASL.
13508
13509Fixed a problem where the reserved name check did not handle
13510NamePaths with multiple NameSegs correctly.  The first nameseg of
13511the NamePath was examined instead of the last NameSeg.
13512
13513
13514----------------------------------------
13515
1351602 October 2002.  Summary of changes for this release.
13517
13518
135191) ACPI CA Core Subsystem version 20021002:
13520
13521Fixed a problem where a store/copy of a string to an existing
13522string did not always set the string length properly in the String
13523object.
13524
13525Fixed a reported problem with the ToString operator where the
13526behavior was identical to the ToHexString operator instead of just
13527simply converting a raw buffer to a string data type.
13528
13529Fixed a problem where CopyObject and the other "explicit"
13530conversion operators were not updating the internal namespace node
13531type as part of the store operation.
13532
13533Fixed a memory leak during implicit source operand conversion
13534where the original object was not deleted if it was converted to a
13535new object of a different type.
13536
13537Enhanced error messages for all problems associated with namespace
13538lookups.  Common procedure generates and prints the lookup name as
13539well as the formatted status.
13540
13541Completed implementation of a new design for the Alias support
13542within the namespace.  The existing design did not handle the case
13543where a new object was assigned to one of the two names due to the
13544use of an explicit conversion operator, resulting in the two names
13545pointing to two different objects.  The new design simply points
13546the Alias name to the original name node - not to the object.
13547This results in a level of indirection that must be handled in the
13548name resolution mechanism.
13549
13550Code and Data Size: Current core subsystem library sizes are shown
13551below.  These are the code and data sizes for the acpica.lib
13552produced by the Microsoft Visual C++ 6.0 compiler, and these
13553values do not include any ACPI driver or OSPM code.  The debug
13554version of the code includes the debug output trace mechanism and
13555has a larger code and data size.  Note that these values will vary
13556depending on the efficiency of the compiler and the compiler
13557options used during generation.
13558
13559  Previous Release
13560    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
13561    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
13562  Current Release:
13563    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
13564    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
13565
13566
135672) Linux
13568
13569Initialize thermal driver's timer before it is used. (Knut
13570Neumann)
13571
13572Allow handling negative celsius values. (Kochi Takayoshi)
13573
13574Fix thermal management and make trip points. R/W (Pavel Machek)
13575
13576Fix /proc/acpi/sleep. (P. Christeas)
13577
13578IA64 fixes. (David Mosberger)
13579
13580Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
13581
13582Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
13583Brodowski)
13584
13585
135863) iASL Compiler/Disassembler
13587
13588Clarified some warning/error messages.
13589
13590
13591----------------------------------------
1359218 September 2002.  Summary of changes for this release.
13593
13594
135951) ACPI CA Core Subsystem version 20020918:
13596
13597Fixed a reported problem with reference chaining (via the Index()
13598and RefOf() operators) in the ObjectType() and SizeOf() operators.
13599The definition of these operators includes the dereferencing of
13600all chained references to return information on the base object.
13601
13602Fixed a problem with stores to indexed package elements - the
13603existing code would not complete the store if an "implicit
13604conversion" was not performed.  In other words, if the existing
13605object (package element) was to be replaced completely, the code
13606didn't handle this case.
13607
13608Relaxed typechecking on the ASL "Scope" operator to allow the
13609target name to refer to an object of type Integer, String, or
13610Buffer, in addition to the scoping object types (Device,
13611predefined Scopes, Processor, PowerResource, and ThermalZone.)
13612This allows existing AML code that has workarounds for a bug in
13613Windows to function properly.  A warning is issued, however.  This
13614affects both the AML interpreter and the iASL compiler. Below is
13615an example of this type of ASL code:
13616
13617      Name(DEB,0x00)
13618      Scope(DEB)
13619      {
13620
13621Fixed some reported problems with 64-bit integer support in the
13622local implementation of C library functions (clib.c)
13623
13624
136252) Linux
13626
13627Use ACPI fix map region instead of IOAPIC region, since it is
13628undefined in non-SMP.
13629
13630Ensure that the SCI has the proper polarity and trigger, even on
13631systems that do not have an interrupt override entry in the MADT.
13632
136332.5 big driver reorganization (Pat Mochel)
13634
13635Use early table mapping code from acpitable.c (Andi Kleen)
13636
13637New blacklist entries (Andi Kleen)
13638
13639Blacklist improvements. Split blacklist code out into a separate
13640file. Move checking the blacklist to very early. Previously, we
13641would use ACPI tables, and then halfway through init, check the
13642blacklist -- too late. Now, it's early enough to completely fall-
13643back to non-ACPI.
13644
13645
136463) iASL Compiler/Disassembler version 20020918:
13647
13648Fixed a problem where the typechecking code didn't know that an
13649alias could point to a method.  In other words, aliases were not
13650being dereferenced during typechecking.
13651
13652
13653----------------------------------------
1365429 August 2002.  Summary of changes for this release.
13655
136561) ACPI CA Core Subsystem Version 20020829:
13657
13658If the target of a Scope() operator already exists, it must be an
13659object type that actually opens a scope -- such as a Device,
13660Method, Scope, etc.  This is a fatal runtime error.  Similar error
13661check has been added to the iASL compiler also.
13662
13663Tightened up the namespace load to disallow multiple names in the
13664same scope.  This previously was allowed if both objects were of
13665the same type.  (i.e., a lookup was the same as entering a new
13666name).
13667
13668
136692) Linux
13670
13671Ensure that the ACPI interrupt has the proper trigger and
13672polarity.
13673
13674local_irq_disable is extraneous. (Matthew Wilcox)
13675
13676Make "acpi=off" actually do what it says, and not use the ACPI
13677interpreter *or* the tables.
13678
13679Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
13680Takayoshi)
13681
13682
136833) iASL Compiler/Disassembler  Version 20020829:
13684
13685Implemented namepath optimization for name declarations.  For
13686example, a declaration like "Method (\_SB_.ABCD)" would get
13687optimized to "Method (ABCD)" if the declaration is within the
13688\_SB_ scope.  This optimization is in addition to the named
13689reference path optimization first released in the previous
13690version. This would seem to complete all possible optimizations
13691for namepaths within the ASL/AML.
13692
13693If the target of a Scope() operator already exists, it must be an
13694object type that actually opens a scope -- such as a Device,
13695Method, Scope, etc.
13696
13697Implemented a check and warning for unreachable code in the same
13698block below a Return() statement.
13699
13700Fixed a problem where the listing file was not generated if the
13701compiler aborted if the maximum error count was exceeded (200).
13702
13703Fixed a problem where the typechecking of method return values was
13704broken.  This includes the check for a return value when the
13705method is invoked as a TermArg (a return value is expected.)
13706
13707Fixed a reported problem where EOF conditions during a quoted
13708string or comment caused a fault.
13709
13710
13711----------------------------------------
1371215 August 2002.  Summary of changes for this release.
13713
137141) ACPI CA Core Subsystem Version 20020815:
13715
13716Fixed a reported problem where a Store to a method argument that
13717contains a reference did not perform the indirect store correctly.
13718This problem was created during the conversion to the new
13719reference object model - the indirect store to a method argument
13720code was not updated to reflect the new model.
13721
13722Reworked the ACPI mode change code to better conform to ACPI 2.0,
13723handle corner cases, and improve code legibility (Kochi Takayoshi)
13724
13725Fixed a problem with the pathname parsing for the carat (^)
13726prefix.  The heavy use of the carat operator by the new namepath
13727optimization in the iASL compiler uncovered a problem with the AML
13728interpreter handling of this prefix.  In the case where one or
13729more carats precede a single nameseg, the nameseg was treated as
13730standalone and the search rule (to root) was inadvertently
13731applied.  This could cause both the iASL compiler and the
13732interpreter to find the wrong object or to miss the error that
13733should occur if the object does not exist at that exact pathname.
13734
13735Found and fixed the problem where the HP Pavilion DSDT would not
13736load.  This was a relatively minor tweak to the table loading code
13737(a problem caused by the unexpected encounter with a method
13738invocation not within a control method), but it does not solve the
13739overall issue of the execution of AML code at the table level.
13740This investigation is still ongoing.
13741
13742Code and Data Size: Current core subsystem library sizes are shown
13743below.  These are the code and data sizes for the acpica.lib
13744produced by the Microsoft Visual C++ 6.0 compiler, and these
13745values do not include any ACPI driver or OSPM code.  The debug
13746version of the code includes the debug output trace mechanism and
13747has a larger code and data size.  Note that these values will vary
13748depending on the efficiency of the compiler and the compiler
13749options used during generation.
13750
13751  Previous Release
13752    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
13753    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
13754  Current Release:
13755    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
13756    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
13757
13758
137592) Linux
13760
13761Remove redundant slab.h include (Brad Hards)
13762
13763Fix several bugs in thermal.c (Herbert Nachtnebel)
13764
13765Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
13766
13767Change acpi_system_suspend to use updated irq functions (Pavel
13768Machek)
13769
13770Export acpi_get_firmware_table (Matthew Wilcox)
13771
13772Use proper root proc entry for ACPI (Kochi Takayoshi)
13773
13774Fix early-boot table parsing (Bjorn Helgaas)
13775
13776
137773) iASL Compiler/Disassembler
13778
13779Reworked the compiler options to make them more consistent and to
13780use two-letter options where appropriate.  We were running out of
13781sensible letters.   This may break some makefiles, so check the
13782current options list by invoking the compiler with no parameters.
13783
13784Completed the design and implementation of the ASL namepath
13785optimization option for the compiler.  This option optimizes all
13786references to named objects to the shortest possible path.  The
13787first attempt tries to utilize a single nameseg (4 characters) and
13788the "search-to-root" algorithm used by the interpreter.  If that
13789cannot be used (because either the name is not in the search path
13790or there is a conflict with another object with the same name),
13791the pathname is optimized using the carat prefix (usually a
13792shorter string than specifying the entire path from the root.)
13793
13794Implemented support to obtain the DSDT from the Windows registry
13795(when the disassembly option is specified with no input file).
13796Added this code as the implementation for AcpiOsTableOverride in
13797the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
13798utility) to scan memory for the DSDT to the AcpiOsTableOverride
13799function in the DOS OSL to make the disassembler truly OS
13800independent.
13801
13802Implemented a new option to disassemble and compile in one step.
13803When used without an input filename, this option will grab the
13804DSDT from the local machine, disassemble it, and compile it in one
13805step.
13806
13807Added a warning message for invalid escapes (a backslash followed
13808by any character other than the allowable escapes).  This catches
13809the quoted string error "\_SB_" (which should be "\\_SB_" ).
13810
13811Also, there are numerous instances in the ACPI specification where
13812this error occurs.
13813
13814Added a compiler option to disable all optimizations.  This is
13815basically the "compatibility mode" because by using this option,
13816the AML code will come out exactly the same as other ASL
13817compilers.
13818
13819Added error messages for incorrectly ordered dependent resource
13820functions.  This includes: missing EndDependentFn macro at end of
13821dependent resource list, nested dependent function macros (both
13822start and end), and missing StartDependentFn macro.  These are
13823common errors that should be caught at compile time.
13824
13825Implemented _OSI support for the disassembler and compiler.  _OSI
13826must be included in the namespace for proper disassembly (because
13827the disassembler must know the number of arguments.)
13828
13829Added an "optimization" message type that is optional (off by
13830default).  This message is used for all optimizations - including
13831constant folding, integer optimization, and namepath optimization.
13832
13833----------------------------------------
1383425 July 2002.  Summary of changes for this release.
13835
13836
138371) ACPI CA Core Subsystem Version 20020725:
13838
13839The AML Disassembler has been enhanced to produce compilable ASL
13840code and has been integrated into the iASL compiler (see below) as
13841well as the single-step disassembly for the AML debugger and the
13842disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
13843resource templates and macros are fully supported.  The
13844disassembler has been tested on over 30 different AML files,
13845producing identical AML when the resulting disassembled ASL file
13846is recompiled with the same ASL compiler.
13847
13848Modified the Resource Manager to allow zero interrupts and zero
13849dma channels during the GetCurrentResources call.  This was
13850causing problems on some platforms.
13851
13852Added the AcpiOsRedirectOutput interface to the OSL to simplify
13853output redirection for the AcpiOsPrintf and AcpiOsVprintf
13854interfaces.
13855
13856Code and Data Size: Current core subsystem library sizes are shown
13857below.  These are the code and data sizes for the acpica.lib
13858produced by the Microsoft Visual C++ 6.0 compiler, and these
13859values do not include any ACPI driver or OSPM code.  The debug
13860version of the code includes the debug output trace mechanism and
13861has a larger code and data size.  Note that these values will vary
13862depending on the efficiency of the compiler and the compiler
13863options used during generation.
13864
13865  Previous Release
13866    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
13867    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
13868  Current Release:
13869    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
13870    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
13871
13872
138732) Linux
13874
13875Fixed a panic in the EC driver (Dominik Brodowski)
13876
13877Implemented checksum of the R/XSDT itself during Linux table scan
13878(Richard Schaal)
13879
13880
138813) iASL compiler
13882
13883The AML disassembler is integrated into the compiler.  The "-d"
13884option invokes the disassembler  to completely disassemble an
13885input AML file, producing as output a text ASL file with the
13886extension ".dsl" (to avoid name collisions with existing .asl
13887source files.)  A future enhancement will allow the disassembler
13888to obtain the BIOS DSDT from the registry under Windows.
13889
13890Fixed a problem with the VendorShort and VendorLong resource
13891descriptors where an invalid AML sequence was created.
13892
13893Implemented a fix for BufferData term in the ASL parser.  It was
13894inadvertently defined twice, allowing invalid syntax to pass and
13895causing reduction conflicts.
13896
13897Fixed a problem where the Ones opcode could get converted to a
13898value of zero if "Ones" was used where a byte, word or dword value
13899was expected.  The 64-bit value is now truncated to the correct
13900size with the correct value.
13901
13902
13903
13904----------------------------------------
1390502 July 2002.  Summary of changes for this release.
13906
13907
139081) ACPI CA Core Subsystem Version 20020702:
13909
13910The Table Manager code has been restructured to add several new
13911features.  Tables that are not required by the core subsystem
13912(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
13913validated in any way and are returned from AcpiGetFirmwareTable if
13914requested.  The AcpiOsTableOverride interface is now called for
13915each table that is loaded by the subsystem in order to allow the
13916host to override any table it chooses.  Previously, only the DSDT
13917could be overridden.  Added one new files, tbrsdt.c and
13918tbgetall.c.
13919
13920Fixed a problem with the conversion of internal package objects to
13921external objects (when a package is returned from a control
13922method.)  The return buffer length was set to zero instead of the
13923proper length of the package object.
13924
13925Fixed a reported problem with the use of the RefOf and DeRefOf
13926operators when passing reference arguments to control methods.  A
13927new type of Reference object is used internally for references
13928produced by the RefOf operator.
13929
13930Added additional error messages in the Resource Manager to explain
13931AE_BAD_DATA errors when they occur during resource parsing.
13932
13933Split the AcpiEnableSubsystem into two primitives to enable a
13934finer granularity initialization sequence.  These two calls should
13935be called in this order: AcpiEnableSubsystem (flags),
13936AcpiInitializeObjects (flags).  The flags parameter remains the
13937same.
13938
13939
139402) Linux
13941
13942Updated the ACPI utilities module to understand the new style of
13943fully resolved package objects that are now returned from the core
13944subsystem.  This eliminates errors of the form:
13945
13946    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
13947    acpi_utils-0430 [145] acpi_evaluate_reference:
13948        Invalid element in package (not a device reference)
13949
13950The method evaluation utility uses the new buffer allocation
13951scheme instead of calling AcpiEvaluate Object twice.
13952
13953Added support for ECDT. This allows the use of the Embedded
13954
13955Controller before the namespace has been fully initialized, which
13956is necessary for ACPI 2.0 support, and for some laptops to
13957initialize properly. (Laptops using ECDT are still rare, so only
13958limited testing was performed of the added functionality.)
13959
13960Fixed memory leaks in the EC driver.
13961
13962Eliminated a brittle code structure in acpi_bus_init().
13963
13964Eliminated the acpi_evaluate() helper function in utils.c. It is
13965no longer needed since acpi_evaluate_object can optionally
13966allocate memory for the return object.
13967
13968Implemented fix for keyboard hang when getting battery readings on
13969some systems (Stephen White)
13970
13971PCI IRQ routing update (Dominik Brodowski)
13972
13973Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
13974support
13975
13976----------------------------------------
1397711 June 2002.  Summary of changes for this release.
13978
13979
139801) ACPI CA Core Subsystem Version 20020611:
13981
13982Fixed a reported problem where constants such as Zero and One
13983appearing within _PRT packages were not handled correctly within
13984the resource manager code.  Originally reported against the ASL
13985compiler because the code generator now optimizes integers to
13986their minimal AML representation (i.e. AML constants if possible.)
13987The _PRT code now handles all AML constant opcodes correctly
13988(Zero, One, Ones, Revision).
13989
13990Fixed a problem with the Concatenate operator in the AML
13991interpreter where a buffer result object was incorrectly marked as
13992not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
13993
13994All package sub-objects are now fully resolved before they are
13995returned from the external ACPI interfaces.  This means that name
13996strings are resolved to object handles, and constant operators
13997(Zero, One, Ones, Revision) are resolved to Integers.
13998
13999Implemented immediate resolution of the AML Constant opcodes
14000(Zero, One, Ones, Revision) to Integer objects upon detection
14001within the AML stream. This has simplified and reduced the
14002generated code size of the subsystem by eliminating about 10
14003switch statements for these constants (which previously were
14004contained in Reference objects.)  The complicating issues are that
14005the Zero opcode is used as a "placeholder" for unspecified
14006optional target operands and stores to constants are defined to be
14007no-ops.
14008
14009Code and Data Size: Current core subsystem library sizes are shown
14010below. These are the code and data sizes for the acpica.lib
14011produced by the Microsoft Visual C++ 6.0 compiler, and these
14012values do not include any ACPI driver or OSPM code.  The debug
14013version of the code includes the debug output trace mechanism and
14014has a larger code and data size.  Note that these values will vary
14015depending on the efficiency of the compiler and the compiler
14016options used during generation.
14017
14018  Previous Release
14019    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14020    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14021  Current Release:
14022    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
14023    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
14024
14025
140262) Linux
14027
14028
14029Added preliminary support for obtaining _TRA data for PCI root
14030bridges (Bjorn Helgaas).
14031
14032
140333) iASL Compiler Version X2046:
14034
14035Fixed a problem where the "_DDN" reserved name was defined to be a
14036control method with one argument.  There are no arguments, and
14037_DDN does not have to be a control method.
14038
14039Fixed a problem with the Linux version of the compiler where the
14040source lines printed with error messages were the wrong lines.
14041This turned out to be the "LF versus CR/LF" difference between
14042Windows and Unix.  This appears to be the longstanding issue
14043concerning listing output and error messages.
14044
14045Fixed a problem with the Linux version of compiler where opcode
14046names within error messages were wrong.  This was caused by a
14047slight difference in the output of the Flex tool on Linux versus
14048Windows.
14049
14050Fixed a problem with the Linux compiler where the hex output files
14051contained some garbage data caused by an internal buffer overrun.
14052
14053
14054----------------------------------------
1405517 May 2002.  Summary of changes for this release.
14056
14057
140581) ACPI CA Core Subsystem Version 20020517:
14059
14060Implemented a workaround to an BIOS bug discovered on the HP
14061OmniBook where the FADT revision number and the table size are
14062inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
14063behavior is to fallback to using only the ACPI 1.0 fields of the
14064FADT if the table is too small to be a ACPI 2.0 table as claimed
14065by the revision number.  Although this is a BIOS bug, this is a
14066case where the workaround is simple enough and with no side
14067effects, so it seemed prudent to add it.  A warning message is
14068issued, however.
14069
14070Implemented minimum size checks for the fixed-length ACPI tables -
14071- the FADT and FACS, as well as consistency checks between the
14072revision number and the table size.
14073
14074Fixed a reported problem in the table override support where the
14075new table pointer was incorrectly treated as a physical address
14076instead of a logical address.
14077
14078Eliminated the use of the AE_AML_ERROR exception and replaced it
14079with more descriptive codes.
14080
14081Fixed a problem where an exception would occur if an ASL Field was
14082defined with no named Field Units underneath it (used by some
14083index fields).
14084
14085Code and Data Size: Current core subsystem library sizes are shown
14086below.  These are the code and data sizes for the acpica.lib
14087produced by the Microsoft Visual C++ 6.0 compiler, and these
14088values do not include any ACPI driver or OSPM code.  The debug
14089version of the code includes the debug output trace mechanism and
14090has a larger code and data size.  Note that these values will vary
14091depending on the efficiency of the compiler and the compiler
14092options used during generation.
14093
14094  Previous Release
14095    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
14096    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
14097  Current Release:
14098    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14099    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14100
14101
14102
141032) Linux
14104
14105Much work done on ACPI init (MADT and PCI IRQ routing support).
14106(Paul D. and Dominik Brodowski)
14107
14108Fix PCI IRQ-related panic on boot (Sam Revitch)
14109
14110Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
14111
14112Fix "MHz" typo (Dominik Brodowski)
14113
14114Fix RTC year 2000 issue (Dominik Brodowski)
14115
14116Preclude multiple button proc entries (Eric Brunet)
14117
14118Moved arch-specific code out of include/platform/aclinux.h
14119
141203) iASL Compiler Version X2044:
14121
14122Implemented error checking for the string used in the EISAID macro
14123(Usually used in the definition of the _HID object.)  The code now
14124strictly enforces the PnP format - exactly 7 characters, 3
14125uppercase letters and 4 hex digits.
14126
14127If a raw string is used in the definition of the _HID object
14128(instead of the EISAID macro), the string must contain all
14129alphanumeric characters (e.g., "*PNP0011" is not allowed because
14130of the asterisk.)
14131
14132Implemented checking for invalid use of ACPI reserved names for
14133most of the name creation operators (Name, Device, Event, Mutex,
14134OperationRegion, PowerResource, Processor, and ThermalZone.)
14135Previously, this check was only performed for control methods.
14136
14137Implemented an additional check on the Name operator to emit an
14138error if a reserved name that must be implemented in ASL as a
14139control method is used.  We know that a reserved name must be a
14140method if it is defined with input arguments.
14141
14142The warning emitted when a namespace object reference is not found
14143during the cross reference phase has been changed into an error.
14144The "External" directive should be used for names defined in other
14145modules.
14146
14147
141484) Tools and Utilities
14149
14150The 16-bit tools (adump16 and aexec16) have been regenerated and
14151tested.
14152
14153Fixed a problem with the output of both acpidump and adump16 where
14154the indentation of closing parentheses and brackets was not
14155
14156aligned properly with the parent block.
14157
14158
14159----------------------------------------
1416003 May 2002.  Summary of changes for this release.
14161
14162
141631) ACPI CA Core Subsystem Version 20020503:
14164
14165Added support a new OSL interface that allows the host operating
14166
14167system software to override the DSDT found in the firmware -
14168AcpiOsTableOverride.  With this interface, the OSL can examine the
14169version of the firmware DSDT and replace it with a different one
14170if desired.
14171
14172Added new external interfaces for accessing ACPI registers from
14173device drivers and other system software - AcpiGetRegister and
14174AcpiSetRegister.  This was simply an externalization of the
14175existing AcpiHwBitRegister interfaces.
14176
14177Fixed a regression introduced in the previous build where the
14178ASL/AML CreateField operator always returned an error,
14179"destination must be a NS Node".
14180
14181Extended the maximum time (before failure) to successfully enable
14182ACPI mode to 3 seconds.
14183
14184Code and Data Size: Current core subsystem library sizes are shown
14185below.  These are the code and data sizes for the acpica.lib
14186produced by the Microsoft Visual C++ 6.0 compiler, and these
14187values do not include any ACPI driver or OSPM code.  The debug
14188version of the code includes the debug output trace mechanism and
14189has a larger code and data size.  Note that these values will vary
14190depending on the efficiency of the compiler and the compiler
14191options used during generation.
14192
14193  Previous Release
14194    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
14195    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
14196  Current Release:
14197    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
14198    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
14199
14200
142012) Linux
14202
14203Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
14204free. While 3 out of 4 of our in-house systems work fine, the last
14205one still hangs when testing the LAPIC timer.
14206
14207Renamed many files in 2.5 kernel release to omit "acpi_" from the
14208name.
14209
14210Added warning on boot for Presario 711FR.
14211
14212Sleep improvements (Pavel Machek)
14213
14214ACPI can now be built without CONFIG_PCI enabled.
14215
14216IA64: Fixed memory map functions (JI Lee)
14217
14218
142193) iASL Compiler Version X2043:
14220
14221Added support to allow the compiler to be integrated into the MS
14222VC++ development environment for one-button compilation of single
14223files or entire projects -- with error-to-source-line mapping.
14224
14225Implemented support for compile-time constant folding for the
14226Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
14227specification.  This allows the ASL writer to use expressions
14228instead of Integer/Buffer/String constants in terms that must
14229evaluate to constants at compile time and will also simplify the
14230emitted AML in any such sub-expressions that can be folded
14231(evaluated at compile-time.)  This increases the size of the
14232compiler significantly because a portion of the ACPI CA AML
14233interpreter is included within the compiler in order to pre-
14234evaluate constant expressions.
14235
14236
14237Fixed a problem with the "Unicode" ASL macro that caused the
14238compiler to fault.  (This macro is used in conjunction with the
14239_STR reserved name.)
14240
14241Implemented an AML opcode optimization to use the Zero, One, and
14242Ones opcodes where possible to further reduce the size of integer
14243constants and thus reduce the overall size of the generated AML
14244code.
14245
14246Implemented error checking for new reserved terms for ACPI version
142472.0A.
14248
14249Implemented the -qr option to display the current list of ACPI
14250reserved names known to the compiler.
14251
14252Implemented the -qc option to display the current list of ASL
14253operators that are allowed within constant expressions and can
14254therefore be folded at compile time if the operands are constants.
14255
14256
142574) Documentation
14258
14259Updated the Programmer's Reference for new interfaces, data types,
14260and memory allocation model options.
14261
14262Updated the iASL Compiler User Reference to apply new format and
14263add information about new features and options.
14264
14265----------------------------------------
1426619 April 2002.  Summary of changes for this release.
14267
142681) ACPI CA Core Subsystem Version 20020419:
14269
14270The source code base for the Core Subsystem has been completely
14271cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
14272versions.  The Lint option files used are included in the
14273/acpi/generate/lint directory.
14274
14275Implemented enhanced status/error checking across the entire
14276Hardware manager subsystem.  Any hardware errors (reported from
14277the OSL) are now bubbled up and will abort a running control
14278method.
14279
14280
14281Fixed a problem where the per-ACPI-table integer width (32 or 64)
14282was stored only with control method nodes, causing a fault when
14283non-control method code was executed during table loading.  The
14284solution implemented uses a global variable to indicate table
14285width across the entire ACPI subsystem.  Therefore, ACPI CA does
14286not support mixed integer widths across different ACPI tables
14287(DSDT, SSDT).
14288
14289Fixed a problem where NULL extended fields (X fields) in an ACPI
142902.0 ACPI FADT caused the table load to fail.  Although the
14291existing ACPI specification is a bit fuzzy on this topic, the new
14292behavior is to fall back on a ACPI 1.0 field if the corresponding
14293ACPI 2.0 X field is zero (even though the table revision indicates
14294a full ACPI 2.0 table.)  The ACPI specification will be updated to
14295clarify this issue.
14296
14297Fixed a problem with the SystemMemory operation region handler
14298where memory was always accessed byte-wise even if the AML-
14299specified access width was larger than a byte.  This caused
14300problems on systems with memory-mapped I/O.  Memory is now
14301accessed with the width specified.  On systems that do not support
14302non-aligned transfers, a check is made to guarantee proper address
14303alignment before proceeding in order to avoid an AML-caused
14304alignment fault within the kernel.
14305
14306
14307Fixed a problem with the ExtendedIrq resource where only one byte
14308of the 4-byte Irq field was extracted.
14309
14310Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
14311function was out of date and required a rewrite.
14312
14313Code and Data Size: Current core subsystem library sizes are shown
14314below.  These are the code and data sizes for the acpica.lib
14315produced by the Microsoft Visual C++ 6.0 compiler, and these
14316values do not include any ACPI driver or OSPM code.  The debug
14317version of the code includes the debug output trace mechanism and
14318has a larger code and data size.  Note that these values will vary
14319depending on the efficiency of the compiler and the compiler
14320options used during generation.
14321
14322  Previous Release
14323    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
14324    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
14325  Current Release:
14326    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
14327    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
14328
14329
143302) Linux
14331
14332PCI IRQ routing fixes (Dominik Brodowski)
14333
14334
143353) iASL Compiler Version X2042:
14336
14337Implemented an additional compile-time error check for a field
14338unit whose size + minimum access width would cause a run-time
14339access beyond the end-of-region.  Previously, only the field size
14340itself was checked.
14341
14342The Core subsystem and iASL compiler now share a common parse
14343object in preparation for compile-time evaluation of the type
143443/4/5 ASL operators.
14345
14346
14347----------------------------------------
14348Summary of changes for this release: 03_29_02
14349
143501) ACPI CA Core Subsystem Version 20020329:
14351
14352Implemented support for late evaluation of TermArg operands to
14353Buffer and Package objects.  This allows complex expressions to be
14354used in the declarations of these object types.
14355
14356Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
143571.0, if the field was larger than 32 bits, it was returned as a
14358buffer - otherwise it was returned as an integer.  In ACPI 2.0,
14359the field is returned as a buffer only if the field is larger than
1436064 bits.  The TableRevision is now considered when making this
14361conversion to avoid incompatibility with existing ASL code.
14362
14363Implemented logical addressing for AcpiOsGetRootPointer.  This
14364allows an RSDP with either a logical or physical address.  With
14365this support, the host OS can now override all ACPI tables with
14366one logical RSDP.  Includes implementation of  "typed" pointer
14367support to allow a common data type for both physical and logical
14368pointers internally.  This required a change to the
14369AcpiOsGetRootPointer interface.
14370
14371Implemented the use of ACPI 2.0 Generic Address Structures for all
14372GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
14373mapped I/O for these ACPI features.
14374
14375Initialization now ignores not only non-required tables (All
14376tables other than the FADT, FACS, DSDT, and SSDTs), but also does
14377not validate the table headers of unrecognized tables.
14378
14379Fixed a problem where a notify handler could only be
14380installed/removed on an object of type Device.  All "notify"
14381
14382objects are now supported -- Devices, Processor, Power, and
14383Thermal.
14384
14385Removed most verbosity from the ACPI_DB_INFO debug level.  Only
14386critical information is returned when this debug level is enabled.
14387
14388Code and Data Size: Current core subsystem library sizes are shown
14389below.  These are the code and data sizes for the acpica.lib
14390produced by the Microsoft Visual C++ 6.0 compiler, and these
14391values do not include any ACPI driver or OSPM code.  The debug
14392version of the code includes the debug output trace mechanism and
14393has a larger code and data size.  Note that these values will vary
14394depending on the efficiency of the compiler and the compiler
14395options used during generation.
14396
14397  Previous Release
14398    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
14399    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
14400  Current Release:
14401    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
14402    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
14403
14404
144052) Linux:
14406
14407The processor driver (acpi_processor.c) now fully supports ACPI
144082.0-based processor performance control (e.g. Intel(R)
14409SpeedStep(TM) technology) Note that older laptops that only have
14410the Intel "applet" interface are not supported through this.  The
14411'limit' and 'performance' interface (/proc) are fully functional.
14412[Note that basic policy for controlling performance state
14413transitions will be included in the next version of ospmd.]  The
14414idle handler was modified to more aggressively use C2, and PIIX4
14415errata handling underwent a complete overhaul (big thanks to
14416Dominik Brodowski).
14417
14418Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
14419based devices in the ACPI namespace are now dynamically bound
14420(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
14421This allows, among other things, ACPI to resolve bus numbers for
14422subordinate PCI bridges.
14423
14424Enhanced PCI IRQ routing to get the proper bus number for _PRT
14425entries defined underneath PCI bridges.
14426
14427Added IBM 600E to bad bios list due to invalid _ADR value for
14428PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
14429
14430In the process of adding full MADT support (e.g. IOAPIC) for IA32
14431(acpi.c, mpparse.c) -- stay tuned.
14432
14433Added back visual differentiation between fixed-feature and
14434control-method buttons in dmesg.  Buttons are also subtyped (e.g.
14435button/power/PWRF) to simplify button identification.
14436
14437We no longer use -Wno-unused when compiling debug. Please ignore
14438any "_THIS_MODULE defined but not used" messages.
14439
14440Can now shut down the system using "magic sysrq" key.
14441
14442
144433) iASL Compiler version 2041:
14444
14445Fixed a problem where conversion errors for hex/octal/decimal
14446constants were not reported.
14447
14448Implemented a fix for the General Register template Address field.
14449This field was 8 bits when it should be 64.
14450
14451Fixed a problem where errors/warnings were no longer being emitted
14452within the listing output file.
14453
14454Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
14455exactly 4 characters, alphanumeric only.
14456
14457
14458
14459
14460----------------------------------------
14461Summary of changes for this release: 03_08_02
14462
14463
144641) ACPI CA Core Subsystem Version 20020308:
14465
14466Fixed a problem with AML Fields where the use of the "AccessAny"
14467keyword could cause an interpreter error due to attempting to read
14468or write beyond the end of the parent Operation Region.
14469
14470Fixed a problem in the SystemMemory Operation Region handler where
14471an attempt was made to map memory beyond the end of the region.
14472This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
14473errors on some Linux systems.
14474
14475Fixed a problem where the interpreter/namespace "search to root"
14476algorithm was not functioning for some object types.  Relaxed the
14477internal restriction on the search to allow upsearches for all
14478external object types as well as most internal types.
14479
14480
144812) Linux:
14482
14483We now use safe_halt() macro versus individual calls to sti | hlt.
14484
14485Writing to the processor limit interface should now work. "echo 1"
14486will increase the limit, 2 will decrease, and 0 will reset to the
14487
14488default.
14489
14490
144913) ASL compiler:
14492
14493Fixed segfault on Linux version.
14494
14495
14496----------------------------------------
14497Summary of changes for this release: 02_25_02
14498
144991) ACPI CA Core Subsystem:
14500
14501
14502Fixed a problem where the GPE bit masks were not initialized
14503properly, causing erratic GPE behavior.
14504
14505Implemented limited support for multiple calling conventions.  The
14506code can be generated with either the VPL (variable parameter
14507list, or "C") convention, or the FPL (fixed parameter list, or
14508"Pascal") convention.  The core subsystem is about 3.4% smaller
14509when generated with FPL.
14510
14511
145122) Linux
14513
14514Re-add some /proc/acpi/event functionality that was lost during
14515the rewrite
14516
14517Resolved issue with /proc events for fixed-feature buttons showing
14518up as the system device.
14519
14520Fixed checks on C2/C3 latencies to be inclusive of maximum values.
14521
14522Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
14523
14524Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
14525
14526Fixed limit interface & usage to fix bugs with passive cooling
14527hysterisis.
14528
14529Restructured PRT support.
14530
14531
14532----------------------------------------
14533Summary of changes for this label: 02_14_02
14534
14535
145361) ACPI CA Core Subsystem:
14537
14538Implemented support in AcpiLoadTable to allow loading of FACS and
14539FADT tables.
14540
14541Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
14542been removed.  All 64-bit platforms should be migrated to the ACPI
145432.0 tables.  The actbl71.h header has been removed from the source
14544tree.
14545
14546All C macros defined within the subsystem have been prefixed with
14547"ACPI_" to avoid collision with other system include files.
14548
14549Removed the return value for the two AcpiOsPrint interfaces, since
14550it is never used and causes lint warnings for ignoring the return
14551value.
14552
14553Added error checking to all internal mutex acquire and release
14554calls.  Although a failure from one of these interfaces is
14555probably a fatal system error, these checks will cause the
14556immediate abort of the currently executing method or interface.
14557
14558Fixed a problem where the AcpiSetCurrentResources interface could
14559fault.  This was a side effect of the deployment of the new memory
14560allocation model.
14561
14562Fixed a couple of problems with the Global Lock support introduced
14563in the last major build.  The "common" (1.0/2.0) internal FACS was
14564being overwritten with the FACS signature and clobbering the
14565Global Lock pointer.  Also, the actual firmware FACS was being
14566unmapped after construction of the "common" FACS, preventing
14567access to the actual Global Lock field within it.  The "common"
14568internal FACS is no longer installed as an actual ACPI table; it
14569is used simply as a global.
14570
14571Code and Data Size: Current core subsystem library sizes are shown
14572below.  These are the code and data sizes for the acpica.lib
14573produced by the Microsoft Visual C++ 6.0 compiler, and these
14574values do not include any ACPI driver or OSPM code.  The debug
14575version of the code includes the debug output trace mechanism and
14576has a larger code and data size.  Note that these values will vary
14577depending on the efficiency of the compiler and the compiler
14578options used during generation.
14579
14580  Previous Release (02_07_01)
14581    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
14582    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
14583  Current Release:
14584    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
14585    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
14586
14587
145882) Linux
14589
14590Updated Linux-specific code for core macro and OSL interface
14591changes described above.
14592
14593Improved /proc/acpi/event. It now can be opened only once and has
14594proper poll functionality.
14595
14596Fixed and restructured power management (acpi_bus).
14597
14598Only create /proc "view by type" when devices of that class exist.
14599
14600Fixed "charging/discharging" bug (and others) in acpi_battery.
14601
14602Improved thermal zone code.
14603
14604
146053) ASL Compiler, version X2039:
14606
14607
14608Implemented the new compiler restriction on ASL String hex/octal
14609escapes to non-null, ASCII values.  An error results if an invalid
14610value is used.  (This will require an ACPI 2.0 specification
14611change.)
14612
14613AML object labels that are output to the optional C and ASM source
14614are now prefixed with both the ACPI table signature and table ID
14615to help guarantee uniqueness within a large BIOS project.
14616
14617
14618----------------------------------------
14619Summary of changes for this label: 02_01_02
14620
146211) ACPI CA Core Subsystem:
14622
14623ACPI 2.0 support is complete in the entire Core Subsystem and the
14624ASL compiler. All new ACPI 2.0 operators are implemented and all
14625other changes for ACPI 2.0 support are complete.  With
14626simultaneous code and data optimizations throughout the subsystem,
14627ACPI 2.0 support has been implemented with almost no additional
14628cost in terms of code and data size.
14629
14630Implemented a new mechanism for allocation of return buffers.  If
14631the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
14632be allocated on behalf of the caller.  Consolidated all return
14633buffer validation and allocation to a common procedure.  Return
14634buffers will be allocated via the primary OSL allocation interface
14635since it appears that a separate pool is not needed by most users.
14636If a separate pool is required for these buffers, the caller can
14637still use the original mechanism and pre-allocate the buffer(s).
14638
14639Implemented support for string operands within the DerefOf
14640operator.
14641
14642Restructured the Hardware and Event managers to be table driven,
14643simplifying the source code and reducing the amount of generated
14644code.
14645
14646Split the common read/write low-level ACPI register bitfield
14647procedure into a separate read and write, simplifying the code
14648considerably.
14649
14650Obsoleted the AcpiOsCallocate OSL interface.  This interface was
14651used only a handful of times and didn't have enough critical mass
14652for a separate interface.  Replaced with a common calloc procedure
14653in the core.
14654
14655Fixed a reported problem with the GPE number mapping mechanism
14656that allows GPE1 numbers to be non-contiguous with GPE0.
14657Reorganized the GPE information and shrunk a large array that was
14658originally large enough to hold info for all possible GPEs (256)
14659to simply large enough to hold all GPEs up to the largest GPE
14660number on the machine.
14661
14662Fixed a reported problem with resource structure alignment on 64-
14663bit platforms.
14664
14665Changed the AcpiEnableEvent and AcpiDisableEvent external
14666interfaces to not require any flags for the common case of
14667enabling/disabling a GPE.
14668
14669Implemented support to allow a "Notify" on a Processor object.
14670
14671Most TBDs in comments within the source code have been resolved
14672and eliminated.
14673
14674
14675Fixed a problem in the interpreter where a standalone parent
14676prefix (^) was not handled correctly in the interpreter and
14677debugger.
14678
14679Removed obsolete and unnecessary GPE save/restore code.
14680
14681Implemented Field support in the ASL Load operator.  This allows a
14682table to be loaded from a named field, in addition to loading a
14683table directly from an Operation Region.
14684
14685Implemented timeout and handle support in the external Global Lock
14686interfaces.
14687
14688Fixed a problem in the AcpiDump utility where pathnames were no
14689longer being generated correctly during the dump of named objects.
14690
14691Modified the AML debugger to give a full display of if/while
14692predicates instead of just one AML opcode at a time.  (The
14693predicate can have several nested ASL statements.)  The old method
14694was confusing during single stepping.
14695
14696Code and Data Size: Current core subsystem library sizes are shown
14697below. These are the code and data sizes for the acpica.lib
14698produced by the Microsoft Visual C++ 6.0 compiler, and these
14699values do not include any ACPI driver or OSPM code.  The debug
14700version of the code includes the debug output trace mechanism and
14701has a larger code and data size.  Note that these values will vary
14702depending on the efficiency of the compiler and the compiler
14703options used during generation.
14704
14705  Previous Release (12_18_01)
14706     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
14707     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
14708   Current Release:
14709     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
14710     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
14711
147122) Linux
14713
14714 Implemented fix for PIIX reverse throttling errata (Processor
14715driver)
14716
14717Added new Limit interface (Processor and Thermal drivers)
14718
14719New thermal policy (Thermal driver)
14720
14721Many updates to /proc
14722
14723Battery "low" event support (Battery driver)
14724
14725Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
14726
14727IA32 - IA64 initialization unification, no longer experimental
14728
14729Menuconfig options redesigned
14730
147313) ASL Compiler, version X2037:
14732
14733Implemented several new output features to simplify integration of
14734AML code into  firmware: 1) Output the AML in C source code with
14735labels for each named ASL object.  The    original ASL source code
14736is interleaved as C comments. 2) Output the AML in ASM source code
14737with labels and interleaved ASL    source. 3) Output the AML in
14738raw hex table form, in either C or ASM.
14739
14740Implemented support for optional string parameters to the
14741LoadTable operator.
14742
14743Completed support for embedded escape sequences within string
14744literals.  The compiler now supports all single character escapes
14745as well as the Octal and Hex escapes.  Note: the insertion of a
14746null byte into a string literal (via the hex/octal escape) causes
14747the string to be immediately terminated.  A warning is issued.
14748
14749Fixed a problem where incorrect AML was generated for the case
14750where an ASL namepath consists of a single parent prefix (
14751
14752) with no trailing name segments.
14753
14754The compiler has been successfully generated with a 64-bit C
14755compiler.
14756
14757
14758
14759
14760----------------------------------------
14761Summary of changes for this label: 12_18_01
14762
147631) Linux
14764
14765Enhanced blacklist with reason and severity fields. Any table's
14766signature may now be used to identify a blacklisted system.
14767
14768Call _PIC control method to inform the firmware which interrupt
14769model the OS is using. Turn on any disabled link devices.
14770
14771Cleaned up busmgr /proc error handling (Andreas Dilger)
14772
14773 2) ACPI CA Core Subsystem:
14774
14775Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
14776while loop)
14777
14778Completed implementation of the ACPI 2.0 "Continue",
14779"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
14780operators.  All new ACPI 2.0 operators are now implemented in both
14781the ASL compiler and the AML interpreter.  The only remaining ACPI
147822.0 task is support for the String data type in the DerefOf
14783operator.  Fixed a problem with AcquireMutex where the status code
14784was lost if the caller had to actually wait for the mutex.
14785
14786Increased the maximum ASL Field size from 64K bits to 4G bits.
14787
14788Completed implementation of the external Global Lock interfaces --
14789AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
14790Handler parameters were added.
14791
14792Completed another pass at removing warnings and issues when
14793compiling with 64-bit compilers.  The code now compiles cleanly
14794with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
14795add and subtract (diff) macros have changed considerably.
14796
14797
14798Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1479964-bit platforms, 32-bits on all others.  This type is used
14800wherever memory allocation and/or the C sizeof() operator is used,
14801and affects the OSL memory allocation interfaces AcpiOsAllocate
14802and AcpiOsCallocate.
14803
14804Implemented sticky user breakpoints in the AML debugger.
14805
14806Code and Data Size: Current core subsystem library sizes are shown
14807below. These are the code and data sizes for the acpica.lib
14808produced by the Microsoft Visual C++ 6.0 compiler, and these
14809values do not include any ACPI driver or OSPM code.  The debug
14810version of the code includes the debug output trace mechanism and
14811has a larger code and data size. Note that these values will vary
14812depending on the efficiency of the compiler and the compiler
14813options used during generation.
14814
14815  Previous Release (12_05_01)
14816     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
14817     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
14818   Current Release:
14819     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
14820     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
14821
14822 3) ASL Compiler, version X2034:
14823
14824Now checks for (and generates an error if detected) the use of a
14825Break or Continue statement without an enclosing While statement.
14826
14827
14828Successfully generated the compiler with the Intel 64-bit C
14829compiler.
14830
14831 ----------------------------------------
14832Summary of changes for this label: 12_05_01
14833
14834 1) ACPI CA Core Subsystem:
14835
14836The ACPI 2.0 CopyObject operator is fully implemented.  This
14837operator creates a new copy of an object (and is also used to
14838bypass the "implicit conversion" mechanism of the Store operator.)
14839
14840The ACPI 2.0 semantics for the SizeOf operator are fully
14841implemented.  The change is that performing a SizeOf on a
14842reference object causes an automatic dereference of the object to
14843tha actual value before the size is evaluated. This behavior was
14844undefined in ACPI 1.0.
14845
14846The ACPI 2.0 semantics for the Extended IRQ resource descriptor
14847have been implemented.  The interrupt polarity and mode are now
14848independently set.
14849
14850Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
14851appearing in Package objects were not properly converted to
14852integers when the internal Package was converted to an external
14853object (via the AcpiEvaluateObject interface.)
14854
14855Fixed a problem with the namespace object deletion mechanism for
14856objects created by control methods.  There were two parts to this
14857problem: 1) Objects created during the initialization phase method
14858parse were not being deleted, and 2) The object owner ID mechanism
14859to track objects was broken.
14860
14861Fixed a problem where the use of the ASL Scope operator within a
14862control method would result in an invalid opcode exception.
14863
14864Fixed a problem introduced in the previous label where the buffer
14865length required for the _PRT structure was not being returned
14866correctly.
14867
14868Code and Data Size: Current core subsystem library sizes are shown
14869below. These are the code and data sizes for the acpica.lib
14870produced by the Microsoft Visual C++ 6.0 compiler, and these
14871values do not include any ACPI driver or OSPM code.  The debug
14872version of the code includes the debug output trace mechanism and
14873has a larger code and data size.  Note that these values will vary
14874depending on the efficiency of the compiler and the compiler
14875options used during generation.
14876
14877  Previous Release (11_20_01)
14878     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14879     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14880
14881  Current Release:
14882     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
14883     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
14884
14885 2) Linux:
14886
14887Updated all files to apply cleanly against 2.4.16.
14888
14889Added basic PCI Interrupt Routing Table (PRT) support for IA32
14890(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
14891version supports both static and dyanmic PRT entries, but dynamic
14892entries are treated as if they were static (not yet
14893reconfigurable).  Architecture- specific code to use this data is
14894absent on IA32 but should be available shortly.
14895
14896Changed the initialization sequence to start the ACPI interpreter
14897(acpi_init) prior to initialization of the PCI driver (pci_init)
14898in init/main.c.  This ordering is required to support PRT and
14899facilitate other (future) enhancement.  A side effect is that the
14900ACPI bus driver and certain device drivers can no longer be loaded
14901as modules.
14902
14903Modified the 'make menuconfig' options to allow PCI Interrupt
14904Routing support to be included without the ACPI Bus and other
14905device drivers.
14906
14907 3) ASL Compiler, version X2033:
14908
14909Fixed some issues with the use of the new CopyObject and
14910DataTableRegion operators.  Both are fully functional.
14911
14912 ----------------------------------------
14913Summary of changes for this label: 11_20_01
14914
14915 20 November 2001.  Summary of changes for this release.
14916
14917 1) ACPI CA Core Subsystem:
14918
14919Updated Index support to match ACPI 2.0 semantics.  Storing a
14920Integer, String, or Buffer to an Index of a Buffer will store only
14921the least-significant byte of the source to the Indexed buffer
14922byte.  Multiple writes are not performed.
14923
14924Fixed a problem where the access type used in an AccessAs ASL
14925operator was not recorded correctly into the field object.
14926
14927Fixed a problem where ASL Event objects were created in a
14928signalled state. Events are now created in an unsignalled state.
14929
14930The internal object cache is now purged after table loading and
14931initialization to reduce the use of dynamic kernel memory -- on
14932the assumption that object use is greatest during the parse phase
14933of the entire table (versus the run-time use of individual control
14934methods.)
14935
14936ACPI 2.0 variable-length packages are now fully operational.
14937
14938Code and Data Size: Code and Data optimizations have permitted new
14939feature development with an actual reduction in the library size.
14940Current core subsystem library sizes are shown below.  These are
14941the code and data sizes for the acpica.lib produced by the
14942Microsoft Visual C++ 6.0 compiler, and these values do not include
14943any ACPI driver or OSPM code.  The debug version of the code
14944includes the debug output trace mechanism and has a larger code
14945and data size.  Note that these values will vary depending on the
14946efficiency of the compiler and the compiler options used during
14947generation.
14948
14949  Previous Release (11_09_01):
14950     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14951     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14952
14953  Current Release:
14954     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14955     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14956
14957 2) Linux:
14958
14959Enhanced the ACPI boot-time initialization code to allow the use
14960of Local APIC tables for processor enumeration on IA-32, and to
14961pave the way for a fully MPS-free boot (on SMP systems) in the
14962near future.  This functionality replaces
14963arch/i386/kernel/acpitables.c, which was introduced in an earlier
149642.4.15-preX release.  To enable this feature you must add
14965"acpi_boot=on" to the kernel command line -- see the help entry
14966for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
14967the works...
14968
14969Restructured the configuration options to allow boot-time table
14970parsing support without inclusion of the ACPI Interpreter (and
14971other) code.
14972
14973NOTE: This release does not include fixes for the reported events,
14974power-down, and thermal passive cooling issues (coming soon).
14975
14976 3) ASL Compiler:
14977
14978Added additional typechecking for Fields within restricted access
14979Operation Regions.  All fields within EC and CMOS regions must be
14980declared with ByteAcc. All fields withing SMBus regions must be
14981declared with the BufferAcc access type.
14982
14983Fixed a problem where the listing file output of control methods
14984no longer interleaved the actual AML code with the ASL source
14985code.
14986
14987
14988
14989
14990----------------------------------------
14991Summary of changes for this label: 11_09_01
14992
149931) ACPI CA Core Subsystem:
14994
14995Implemented ACPI 2.0-defined support for writes to fields with a
14996Buffer, String, or Integer source operand that is smaller than the
14997target field. In these cases, the source operand is zero-extended
14998to fill the target field.
14999
15000Fixed a problem where a Field starting bit offset (within the
15001parent operation region) was calculated incorrectly if the
15002
15003alignment of the field differed from the access width.  This
15004affected CreateWordField, CreateDwordField, CreateQwordField, and
15005possibly other fields that use the "AccessAny" keyword.
15006
15007Fixed a problem introduced in the 11_02_01 release where indirect
15008stores through method arguments did not operate correctly.
15009
150102) Linux:
15011
15012Implemented boot-time ACPI table parsing support
15013(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
15014facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
15015legacy BIOS interfaces (e.g. MPS) for the configuration of system
15016processors, memory, and interrupts during setup_arch().  Note that
15017this patch does not include the required architecture-specific
15018changes required to apply this information -- subsequent patches
15019will be posted for both IA32 and IA64 to achieve this.
15020
15021Added low-level sleep support for IA32 platforms, courtesy of Pat
15022Mochel. This allows IA32 systems to transition to/from various
15023sleeping states (e.g. S1, S3), although the lack of a centralized
15024driver model and power-manageable drivers will prevent its
15025(successful) use on most systems.
15026
15027Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
15028submenu, unified IA32 and IA64 options, added new "Boot using ACPI
15029tables" option, etc.
15030
15031Increased the default timeout for the EC driver from 1ms to 10ms
15032(1000 cycles of 10us) to try to address AE_TIME errors during EC
15033transactions.
15034
15035 ----------------------------------------
15036Summary of changes for this label: 11_02_01
15037
150381) ACPI CA Core Subsystem:
15039
15040ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
15041(QWordAcc keyword). All ACPI 2.0 64-bit support is now
15042implemented.
15043
15044OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
15045changes to support ACPI 2.0 Qword field access.  Read/Write
15046PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
15047accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
15048the value parameter for the address space handler interface is now
15049an ACPI_INTEGER.  OSL implementations of these interfaces must now
15050handle the case where the Width parameter is 64.
15051
15052Index Fields: Fixed a problem where unaligned bit assembly and
15053disassembly for IndexFields was not supported correctly.
15054
15055Index and Bank Fields:  Nested Index and Bank Fields are now
15056supported. During field access, a check is performed to ensure
15057that the value written to an Index or Bank register is not out of
15058the range of the register.  The Index (or Bank) register is
15059written before each access to the field data. Future support will
15060include allowing individual IndexFields to be wider than the
15061DataRegister width.
15062
15063Fields: Fixed a problem where the AML interpreter was incorrectly
15064attempting to write beyond the end of a Field/OpRegion.  This was
15065a boundary case that occurred when a DWORD field was written to a
15066BYTE access OpRegion, forcing multiple writes and causing the
15067interpreter to write one datum too many.
15068
15069Fields: Fixed a problem with Field/OpRegion access where the
15070starting bit address of a field was incorrectly calculated if the
15071current access type was wider than a byte (WordAcc, DwordAcc, or
15072QwordAcc).
15073
15074Fields: Fixed a problem where forward references to individual
15075FieldUnits (individual Field names within a Field definition) were
15076not resolved during the AML table load.
15077
15078Fields: Fixed a problem where forward references from a Field
15079definition to the parent Operation Region definition were not
15080resolved during the AML table load.
15081
15082Fields: Duplicate FieldUnit names within a scope are now detected
15083during AML table load.
15084
15085Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
15086returned an incorrect name for the root node.
15087
15088Code and Data Size: Code and Data optimizations have permitted new
15089feature development with an actual reduction in the library size.
15090Current core subsystem library sizes are shown below.  These are
15091the code and data sizes for the acpica.lib produced by the
15092Microsoft Visual C++ 6.0 compiler, and these values do not include
15093any ACPI driver or OSPM code.  The debug version of the code
15094includes the debug output trace mechanism and has a larger code
15095and data size.  Note that these values will vary depending on the
15096efficiency of the compiler and the compiler options used during
15097generation.
15098
15099  Previous Release (10_18_01):
15100     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
15101     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
15102
15103  Current Release:
15104     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
15105     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
15106
15107 2) Linux:
15108
15109Improved /proc processor output (Pavel Machek) Re-added
15110MODULE_LICENSE("GPL") to all modules.
15111
15112 3) ASL Compiler version X2030:
15113
15114Duplicate FieldUnit names within a scope are now detected and
15115flagged as errors.
15116
15117 4) Documentation:
15118
15119Programmer Reference updated to reflect OSL and address space
15120handler interface changes described above.
15121
15122----------------------------------------
15123Summary of changes for this label: 10_18_01
15124
15125ACPI CA Core Subsystem:
15126
15127Fixed a problem with the internal object reference count mechanism
15128that occasionally caused premature object deletion. This resolves
15129all of the outstanding problem reports where an object is deleted
15130in the middle of an interpreter evaluation.  Although this problem
15131only showed up in rather obscure cases, the solution to the
15132problem involved an adjustment of all reference counts involving
15133objects attached to namespace nodes.
15134
15135Fixed a problem with Field support in the interpreter where
15136writing to an aligned field whose length is an exact multiple (2
15137or greater) of the field access granularity would cause an attempt
15138to write beyond the end of the field.
15139
15140The top level AML opcode execution functions within the
15141interpreter have been renamed with a more meaningful and
15142consistent naming convention.  The modules exmonad.c and
15143exdyadic.c were eliminated.  New modules are exoparg1.c,
15144exoparg2.c, exoparg3.c, and exoparg6.c.
15145
15146Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
15147
15148Fixed a problem where the AML debugger was causing some internal
15149objects to not be deleted during subsystem termination.
15150
15151Fixed a problem with the external AcpiEvaluateObject interface
15152where the subsystem would fault if the named object to be
15153evaluated refered to a constant such as Zero, Ones, etc.
15154
15155Fixed a problem with IndexFields and BankFields where the
15156subsystem would fault if the index, data, or bank registers were
15157not defined in the same scope as the field itself.
15158
15159Added printf format string checking for compilers that support
15160this feature.  Corrected more than 50 instances of issues with
15161format specifiers within invocations of ACPI_DEBUG_PRINT
15162throughout the core subsystem code.
15163
15164The ASL "Revision" operator now returns the ACPI support level
15165implemented in the core - the value "2" since the ACPI 2.0 support
15166is more than 50% implemented.
15167
15168Enhanced the output of the AML debugger "dump namespace" command
15169to output in a more human-readable form.
15170
15171Current core subsystem library code sizes are shown below.  These
15172
15173are the code and data sizes for the acpica.lib produced by the
15174Microsoft Visual C++ 6.0 compiler, and these values do not include
15175any ACPI driver or OSPM code.  The debug version of the code
15176includes the full debug trace mechanism -- leading to a much
15177
15178larger code and data size.  Note that these values will vary
15179depending on the efficiency of the compiler and the compiler
15180options used during generation.
15181
15182     Previous Label (09_20_01):
15183     Non-Debug Version:    65K Code,     5K Data,     70K Total
15184     Debug Version:       138K Code,    58K Data,    196K Total
15185
15186     This Label:
15187
15188     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
15189     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
15190
15191Linux:
15192
15193Implemented a "Bad BIOS Blacklist" to track machines that have
15194known ASL/AML problems.
15195
15196Enhanced the /proc interface for the thermal zone driver and added
15197support for _HOT (the critical suspend trip point).  The 'info'
15198file now includes threshold/policy information, and allows setting
15199of _SCP (cooling preference) and _TZP (polling frequency) values
15200to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
15201frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
15202preference to the passive/quiet mode (if supported by the ASL).
15203
15204Implemented a workaround for a gcc bug that resuted in an OOPs
15205when loading the control method battery driver.
15206
15207 ----------------------------------------
15208Summary of changes for this label: 09_20_01
15209
15210 ACPI CA Core Subsystem:
15211
15212The AcpiEnableEvent and AcpiDisableEvent interfaces have been
15213modified to allow individual GPE levels to be flagged as wake-
15214enabled (i.e., these GPEs are to remain enabled when the platform
15215sleeps.)
15216
15217The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
15218support wake-enabled GPEs.  This means that upon entering the
15219sleep state, all GPEs that are not wake-enabled are disabled.
15220When leaving the sleep state, these GPEs are reenabled.
15221
15222A local double-precision divide/modulo module has been added to
15223enhance portability to OS kernels where a 64-bit math library is
15224not available.  The new module is "utmath.c".
15225
15226Several optimizations have been made to reduce the use of CPU
15227stack.  Originally over 2K, the maximum stack usage is now below
152282K at 1860  bytes (1.82k)
15229
15230Fixed a problem with the AcpiGetFirmwareTable interface where the
15231root table pointer was not mapped into a logical address properly.
15232
15233Fixed a problem where a NULL pointer was being dereferenced in the
15234interpreter code for the ASL Notify operator.
15235
15236Fixed a problem where the use of the ASL Revision operator
15237returned an error. This operator now returns the current version
15238of the ACPI CA core subsystem.
15239
15240Fixed a problem where objects passed as control method parameters
15241to AcpiEvaluateObject were always deleted at method termination.
15242However, these objects may end up being stored into the namespace
15243by the called method.  The object reference count mechanism was
15244applied to these objects instead of a force delete.
15245
15246Fixed a problem where static strings or buffers (contained in the
15247AML code) that are declared as package elements within the ASL
15248code could cause a fault because the interpreter would attempt to
15249delete them.  These objects are now marked with the "static
15250object" flag to prevent any attempt to delete them.
15251
15252Implemented an interpreter optimization to use operands directly
15253from the state object instead of extracting the operands to local
15254variables.  This reduces stack use and code size, and improves
15255performance.
15256
15257The module exxface.c was eliminated as it was an unnecessary extra
15258layer of code.
15259
15260Current core subsystem library code sizes are shown below.  These
15261are the code and data sizes for the acpica.lib produced by the
15262Microsoft Visual C++ 6.0 compiler, and these values do not include
15263any ACPI driver or OSPM code.  The debug version of the code
15264includes the full debug trace mechanism -- leading to a much
15265larger code and data size.  Note that these values will vary
15266depending on the efficiency of the compiler and the compiler
15267options used during generation.
15268
15269  Non-Debug Version:  65K Code,   5K Data,   70K Total
15270(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
15271Total  (Previously 195K)
15272
15273Linux:
15274
15275Support for ACPI 2.0 64-bit integers has been added.   All ACPI
15276Integer objects are now 64 bits wide
15277
15278All Acpi data types and structures are now in lower case.  Only
15279Acpi macros are upper case for differentiation.
15280
15281 Documentation:
15282
15283Changes to the external interfaces as described above.
15284
15285 ----------------------------------------
15286Summary of changes for this label: 08_31_01
15287
15288 ACPI CA Core Subsystem:
15289
15290A bug with interpreter implementation of the ASL Divide operator
15291was found and fixed.  The implicit function return value (not the
15292explicit store operands) was returning the remainder instead of
15293the quotient.  This was a longstanding bug and it fixes several
15294known outstanding issues on various platforms.
15295
15296The ACPI_DEBUG_PRINT and function trace entry/exit macros have
15297been further optimized for size.  There are 700 invocations of the
15298DEBUG_PRINT macro alone, so each optimization reduces the size of
15299the debug version of the subsystem significantly.
15300
15301A stack trace mechanism has been implemented.  The maximum stack
15302usage is about 2K on 32-bit platforms.  The debugger command "stat
15303stack" will display the current maximum stack usage.
15304
15305All public symbols and global variables within the subsystem are
15306now prefixed with the string "Acpi".  This keeps all of the
15307symbols grouped together in a kernel map, and avoids conflicts
15308with other kernel subsystems.
15309
15310Most of the internal fixed lookup tables have been moved into the
15311code segment via the const operator.
15312
15313Several enhancements have been made to the interpreter to both
15314reduce the code size and improve performance.
15315
15316Current core subsystem library code sizes are shown below.  These
15317are the code and data sizes for the acpica.lib produced by the
15318Microsoft Visual C++ 6.0 compiler, and these values do not include
15319any ACPI driver or OSPM code.  The debug version of the code
15320includes the full debug trace mechanism which contains over 700
15321invocations of the DEBUG_PRINT macro, 500 function entry macro
15322invocations, and over 900 function exit macro invocations --
15323leading to a much larger code and data size.  Note that these
15324values will vary depending on the efficiency of the compiler and
15325the compiler options used during generation.
15326
15327        Non-Debug Version:  64K Code,   5K Data,   69K Total
15328Debug Version:     137K Code,  58K Data,  195K Total
15329
15330 Linux:
15331
15332Implemented wbinvd() macro, pending a kernel-wide definition.
15333
15334Fixed /proc/acpi/event to handle poll() and short reads.
15335
15336 ASL Compiler, version X2026:
15337
15338Fixed a problem introduced in the previous label where the AML
15339
15340code emitted for package objects produced packages with zero
15341length.
15342
15343 ----------------------------------------
15344Summary of changes for this label: 08_16_01
15345
15346ACPI CA Core Subsystem:
15347
15348The following ACPI 2.0 ASL operators have been implemented in the
15349AML interpreter (These are already supported by the Intel ASL
15350compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
15351ToBuffer.  Support for 64-bit AML constants is implemented in the
15352AML parser, debugger, and disassembler.
15353
15354The internal memory tracking mechanism (leak detection code) has
15355been upgraded to reduce the memory overhead (a separate tracking
15356block is no longer allocated for each memory allocation), and now
15357supports all of the internal object caches.
15358
15359The data structures and code for the internal object caches have
15360been coelesced and optimized so that there is a single cache and
15361memory list data structure and a single group of functions that
15362implement generic cache management.  This has reduced the code
15363size in both the debug and release versions of the subsystem.
15364
15365The DEBUG_PRINT macro(s) have been optimized for size and replaced
15366by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
15367different, because it generates a single call to an internal
15368function.  This results in a savings of about 90 bytes per
15369invocation, resulting in an overall code and data savings of about
1537016% in the debug version of the subsystem.
15371
15372 Linux:
15373
15374Fixed C3 disk corruption problems and re-enabled C3 on supporting
15375machines.
15376
15377Integrated low-level sleep code by Patrick Mochel.
15378
15379Further tweaked source code Linuxization.
15380
15381Other minor fixes.
15382
15383 ASL Compiler:
15384
15385Support for ACPI 2.0 variable length packages is fixed/completed.
15386
15387Fixed a problem where the optional length parameter for the ACPI
153882.0 ToString operator.
15389
15390Fixed multiple extraneous error messages when a syntax error is
15391detected within the declaration line of a control method.
15392
15393 ----------------------------------------
15394Summary of changes for this label: 07_17_01
15395
15396ACPI CA Core Subsystem:
15397
15398Added a new interface named AcpiGetFirmwareTable to obtain any
15399ACPI table via the ACPI signature.  The interface can be called at
15400any time during kernel initialization, even before the kernel
15401virtual memory manager is initialized and paging is enabled.  This
15402allows kernel subsystems to obtain ACPI tables very early, even
15403before the ACPI CA subsystem is initialized.
15404
15405Fixed a problem where Fields defined with the AnyAcc attribute
15406could be resolved to the incorrect address under the following
15407conditions: 1) the field width is larger than 8 bits and 2) the
15408parent operation region is not defined on a DWORD boundary.
15409
15410Fixed a problem where the interpreter is not being locked during
15411namespace initialization (during execution of the _INI control
15412methods), causing an error when an attempt is made to release it
15413later.
15414
15415ACPI 2.0 support in the AML Interpreter has begun and will be
15416ongoing throughout the rest of this year.  In this label, The Mod
15417operator is implemented.
15418
15419Added a new data type to contain full PCI addresses named
15420ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
15421and Function values.
15422
15423 Linux:
15424
15425Enhanced the Linux version of the source code to change most
15426capitalized ACPI type names to lowercase. For example, all
15427instances of ACPI_STATUS are changed to acpi_status.  This will
15428result in a large diff, but the change is strictly cosmetic and
15429aligns the CA code closer to the Linux coding standard.
15430
15431OSL Interfaces:
15432
15433The interfaces to the PCI configuration space have been changed to
15434add the PCI Segment number and to split the single 32-bit combined
15435DeviceFunction field into two 16-bit fields.  This was
15436accomplished by moving the four values that define an address in
15437PCI configuration space (segment, bus, device, and function) to
15438the new ACPI_PCI_ID structure.
15439
15440The changes to the PCI configuration space interfaces led to a
15441reexamination of the complete set of address space access
15442interfaces for PCI, I/O, and Memory.  The previously existing 18
15443interfaces have proven difficult to maintain (any small change
15444must be propagated across at least 6 interfaces) and do not easily
15445allow for future expansion to 64 bits if necessary.  Also, on some
15446systems, it would not be appropriate to demultiplex the access
15447width (8, 16, 32,or 64) before calling the OSL if the
15448corresponding native OS interfaces contain a similar access width
15449parameter.  For these reasons, the 18 address space interfaces
15450have been replaced by these 6 new ones:
15451
15452AcpiOsReadPciConfiguration
15453AcpiOsWritePciConfiguration
15454AcpiOsReadMemory
15455AcpiOsWriteMemory
15456AcpiOsReadPort
15457AcpiOsWritePort
15458
15459Added a new interface named AcpiOsGetRootPointer to allow the OSL
15460to perform the platform and/or OS-specific actions necessary to
15461obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
15462interface will simply call down to the CA core to perform the low-
15463memory search for the table.  On IA-64, the RSDP is obtained from
15464EFI.  Migrating this interface to the OSL allows the CA core to
15465
15466remain OS and platform independent.
15467
15468Added a new interface named AcpiOsSignal to provide a generic
15469"function code and pointer" interface for various miscellaneous
15470signals and notifications that must be made to the host OS.   The
15471first such signals are intended to support the ASL Fatal and
15472Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
15473interface has been obsoleted.
15474
15475The definition of the AcpiFormatException interface has been
15476changed to simplify its use.  The caller no longer must supply a
15477buffer to the call; A pointer to a const string is now returned
15478directly.  This allows the call to be easily used in printf
15479statements, etc. since the caller does not have to manage a local
15480buffer.
15481
15482
15483 ASL Compiler, Version X2025:
15484
15485The ACPI 2.0 Switch/Case/Default operators have been implemented
15486and are fully functional.  They will work with all ACPI 1.0
15487interpreters, since the operators are simply translated to If/Else
15488pairs.
15489
15490The ACPI 2.0 ElseIf operator is implemented and will also work
15491with 1.0 interpreters, for the same reason.
15492
15493Implemented support for ACPI 2.0 variable-length packages.  These
15494packages have a separate opcode, and their size is determined by
15495the interpreter at run-time.
15496
15497Documentation The ACPI CA Programmer Reference has been updated to
15498reflect the new interfaces and changes to existing interfaces.
15499
15500 ------------------------------------------
15501Summary of changes for this label: 06_15_01
15502
15503 ACPI CA Core Subsystem:
15504
15505Fixed a problem where a DWORD-accessed field within a Buffer
15506object would get its byte address inadvertently rounded down to
15507the nearest DWORD.  Buffers are always Byte-accessible.
15508
15509 ASL Compiler, version X2024:
15510
15511Fixed a problem where the Switch() operator would either fault or
15512hang the compiler.  Note however, that the AML code for this ACPI
155132.0 operator is not yet implemented.
15514
15515Compiler uses the new AcpiOsGetTimer interface to obtain compile
15516timings.
15517
15518Implementation of the CreateField operator automatically converts
15519a reference to a named field within a resource descriptor from a
15520byte offset to a bit offset if required.
15521
15522Added some missing named fields from the resource descriptor
15523support. These are the names that are automatically created by the
15524compiler to reference fields within a descriptor.  They are only
15525valid at compile time and are not passed through to the AML
15526interpreter.
15527
15528Resource descriptor named fields are now typed as Integers and
15529subject to compile-time typechecking when used in expressions.
15530
15531 ------------------------------------------
15532Summary of changes for this label: 05_18_01
15533
15534 ACPI CA Core Subsystem:
15535
15536Fixed a couple of problems in the Field support code where bits
15537from adjacent fields could be returned along with the proper field
15538bits. Restructured the field support code to improve performance,
15539readability and maintainability.
15540
15541New DEBUG_PRINTP macro automatically inserts the procedure name
15542into the output, saving hundreds of copies of procedure name
15543strings within the source, shrinking the memory footprint of the
15544debug version of the core subsystem.
15545
15546 Source Code Structure:
15547
15548The source code directory tree was restructured to reflect the
15549current organization of the component architecture.  Some files
15550and directories have been moved and/or renamed.
15551
15552 Linux:
15553
15554Fixed leaking kacpidpc processes.
15555
15556Fixed queueing event data even when /proc/acpi/event is not
15557opened.
15558
15559 ASL Compiler, version X2020:
15560
15561Memory allocation performance enhancement - over 24X compile time
15562improvement on large ASL files.  Parse nodes and namestring
15563buffers are now allocated from a large internal compiler buffer.
15564
15565The temporary .SRC file is deleted unless the "-s" option is
15566specified
15567
15568The "-d" debug output option now sends all output to the .DBG file
15569instead of the console.
15570
15571"External" second parameter is now optional
15572
15573"ElseIf" syntax now properly allows the predicate
15574
15575Last operand to "Load" now recognized as a Target operand
15576
15577Debug object can now be used anywhere as a normal object.
15578
15579ResourceTemplate now returns an object of type BUFFER
15580
15581EISAID now returns an object of type INTEGER
15582
15583"Index" now works with a STRING operand
15584
15585"LoadTable" now accepts optional parameters
15586
15587"ToString" length parameter is now optional
15588
15589"Interrupt (ResourceType," parse error fixed.
15590
15591"Register" with a user-defined region space parse error fixed
15592
15593Escaped backslash at the end of a string ("\\") scan/parse error
15594fixed
15595
15596"Revision" is now an object of type INTEGER.
15597
15598
15599
15600------------------------------------------
15601Summary of changes for this label: 05_02_01
15602
15603Linux:
15604
15605/proc/acpi/event now blocks properly.
15606
15607Removed /proc/sys/acpi. You can still dump your DSDT from
15608/proc/acpi/dsdt.
15609
15610 ACPI CA Core Subsystem:
15611
15612Fixed a problem introduced in the previous label where some of the
15613"small" resource descriptor types were not recognized.
15614
15615Improved error messages for the case where an ASL Field is outside
15616the range of the parent operation region.
15617
15618 ASL Compiler, version X2018:
15619
15620
15621Added error detection for ASL Fields that extend beyond the length
15622of the parent operation region (only if the length of the region
15623is known at compile time.)  This includes fields that have a
15624minimum access width that is smaller than the parent region, and
15625individual field units that are partially or entirely beyond the
15626extent of the parent.
15627
15628
15629
15630------------------------------------------
15631Summary of changes for this label: 04_27_01
15632
15633 ACPI CA Core Subsystem:
15634
15635Fixed a problem where the namespace mutex could be released at the
15636wrong time during execution of AcpiRemoveAddressSpaceHandler.
15637
15638Added optional thread ID output for debug traces, to simplify
15639debugging of multiple threads.  Added context switch notification
15640when the debug code realizes that a different thread is now
15641executing ACPI code.
15642
15643Some additional external data types have been prefixed with the
15644string "ACPI_" for consistency.  This may effect existing code.
15645The data types affected are the external callback typedefs - e.g.,
15646
15647WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
15648
15649 Linux:
15650
15651Fixed an issue with the OSL semaphore implementation where a
15652thread was waking up with an error from receiving a SIGCHLD
15653signal.
15654
15655Linux version of ACPI CA now uses the system C library for string
15656manipulation routines instead of a local implementation.
15657
15658Cleaned up comments and removed TBDs.
15659
15660 ASL Compiler, version X2017:
15661
15662Enhanced error detection and reporting for all file I/O
15663operations.
15664
15665 Documentation:
15666
15667Programmer Reference updated to version 1.06.
15668
15669
15670
15671------------------------------------------
15672Summary of changes for this label: 04_13_01
15673
15674 ACPI CA Core Subsystem:
15675
15676Restructured support for BufferFields and RegionFields.
15677BankFields support is now fully operational.  All known 32-bit
15678limitations on field sizes have been removed.  Both BufferFields
15679and (Operation) RegionFields are now supported by the same field
15680management code.
15681
15682Resource support now supports QWORD address and IO resources. The
1568316/32/64 bit address structures and the Extended IRQ structure
15684have been changed to properly handle Source Resource strings.
15685
15686A ThreadId of -1 is now used to indicate a "mutex not acquired"
15687condition internally and must never be returned by AcpiOsThreadId.
15688This reserved value was changed from 0 since Unix systems allow a
15689thread ID of 0.
15690
15691Linux:
15692
15693Driver code reorganized to enhance portability
15694
15695Added a kernel configuration option to control ACPI_DEBUG
15696
15697Fixed the EC driver to honor _GLK.
15698
15699ASL Compiler, version X2016:
15700
15701Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
15702address space was set to 0, not 0x7f as it should be.
15703
15704 ------------------------------------------
15705Summary of changes for this label: 03_13_01
15706
15707 ACPI CA Core Subsystem:
15708
15709During ACPI initialization, the _SB_._INI method is now run if
15710present.
15711
15712Notify handler fix - notifies are deferred until the parent method
15713completes execution.  This fixes the "mutex already acquired"
15714issue seen occasionally.
15715
15716Part of the "implicit conversion" rules in ACPI 2.0 have been
15717found to cause compatibility problems with existing ASL/AML.  The
15718convert "result-to-target-type" implementation has been removed
15719for stores to method Args and Locals.  Source operand conversion
15720is still fully implemented.  Possible changes to ACPI 2.0
15721specification pending.
15722
15723Fix to AcpiRsCalculatePciRoutingTableLength to return correct
15724length.
15725
15726Fix for compiler warnings for 64-bit compiles.
15727
15728 Linux:
15729
15730/proc output aligned for easier parsing.
15731
15732Release-version compile problem fixed.
15733
15734New kernel configuration options documented in Configure.help.
15735
15736IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
15737context" message.
15738
15739 OSPM:
15740
15741Power resource driver integrated with bus manager.
15742
15743Fixed kernel fault during active cooling for thermal zones.
15744
15745Source Code:
15746
15747The source code tree has been restructured.
15748
15749
15750
15751------------------------------------------
15752Summary of changes for this label: 03_02_01
15753
15754 Linux OS Services Layer (OSL):
15755
15756Major revision of all Linux-specific code.
15757
15758Modularized all ACPI-specific drivers.
15759
15760Added new thermal zone and power resource drivers.
15761
15762Revamped /proc interface (new functionality is under /proc/acpi).
15763
15764New kernel configuration options.
15765
15766 Linux known issues:
15767
15768New kernel configuration options not documented in Configure.help
15769yet.
15770
15771
15772Module dependencies not currently implemented. If used, they
15773should be loaded in this order: busmgr, power, ec, system,
15774processor, battery, ac_adapter, button, thermal.
15775
15776Modules will not load if CONFIG_MODVERSION is set.
15777
15778IBM 600E - entering S5 may reboot instead of shutting down.
15779
15780IBM 600E - Sleep button may generate "Invalid <NULL> context"
15781message.
15782
15783Some systems may fail with "execution mutex already acquired"
15784message.
15785
15786 ACPI CA Core Subsystem:
15787
15788Added a new OSL Interface, AcpiOsGetThreadId.  This was required
15789for the  deadlock detection code. Defined to return a non-zero, 32-
15790bit thread ID for the currently executing thread.  May be a non-
15791zero constant integer on single-thread systems.
15792
15793Implemented deadlock detection for internal subsystem mutexes.  We
15794may add conditional compilation for this code (debug only) later.
15795
15796ASL/AML Mutex object semantics are now fully supported.  This
15797includes multiple acquires/releases by owner and support for the
15798
15799Mutex SyncLevel parameter.
15800
15801A new "Force Release" mechanism automatically frees all ASL
15802Mutexes that have been acquired but not released when a thread
15803exits the interpreter.  This forces conformance to the ACPI spec
15804("All mutexes must be released when an invocation exits") and
15805prevents deadlocked ASL threads.  This mechanism can be expanded
15806(later) to monitor other resource acquisitions if OEM ASL code
15807continues to misbehave (which it will).
15808
15809Several new ACPI exception codes have been added for the Mutex
15810support.
15811
15812Recursive method calls are now allowed and supported (the ACPI
15813spec does in fact allow recursive method calls.)  The number of
15814recursive calls is subject to the restrictions imposed by the
15815SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
15816parameter.
15817
15818Implemented support for the SyncLevel parameter for control
15819methods (ACPI 2.0 feature)
15820
15821Fixed a deadlock problem when multiple threads attempted to use
15822the interpreter.
15823
15824Fixed a problem where the string length of a String package
15825element was not always set in a package returned from
15826AcpiEvaluateObject.
15827
15828Fixed a problem where the length of a String package element was
15829not always included in the length of the overall package returned
15830from AcpiEvaluateObject.
15831
15832Added external interfaces (Acpi*) to the ACPI debug memory
15833manager.  This manager keeps a list of all outstanding
15834allocations, and can therefore detect memory leaks and attempts to
15835free memory blocks more than once. Useful for code such as the
15836power manager, etc.  May not be appropriate for device drivers.
15837Performance with the debug code enabled is slow.
15838
15839The ACPI Global Lock is now an optional hardware element.
15840
15841 ASL Compiler Version X2015:
15842
15843Integrated changes to allow the compiler to be generated on
15844multiple platforms.
15845
15846Linux makefile added to generate the compiler on Linux
15847
15848 Source Code:
15849
15850All platform-specific headers have been moved to their own
15851subdirectory, Include/Platform.
15852
15853New source file added, Interpreter/ammutex.c
15854
15855New header file, Include/acstruct.h
15856
15857 Documentation:
15858
15859The programmer reference has been updated for the following new
15860interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
15861
15862 ------------------------------------------
15863Summary of changes for this label: 02_08_01
15864
15865Core ACPI CA Subsystem: Fixed a problem where an error was
15866incorrectly returned if the return resource buffer was larger than
15867the actual data (in the resource interfaces).
15868
15869References to named objects within packages are resolved to the
15870
15871full pathname string before packages are returned directly (via
15872the AcpiEvaluateObject interface) or indirectly via the resource
15873interfaces.
15874
15875Linux OS Services Layer (OSL):
15876
15877Improved /proc battery interface.
15878
15879
15880Added C-state debugging output and other miscellaneous fixes.
15881
15882ASL Compiler Version X2014:
15883
15884All defined method arguments can now be used as local variables,
15885including the ones that are not actually passed in as parameters.
15886The compiler tracks initialization of the arguments and issues an
15887exception if they are used without prior assignment (just like
15888locals).
15889
15890The -o option now specifies a filename prefix that is used for all
15891output files, including the AML output file.  Otherwise, the
15892default behavior is as follows:  1) the AML goes to the file
15893specified in the DSDT.  2) all other output files use the input
15894source filename as the base.
15895
15896 ------------------------------------------
15897Summary of changes for this label: 01_25_01
15898
15899Core ACPI CA Subsystem: Restructured the implementation of object
15900store support within the  interpreter.  This includes support for
15901the Store operator as well  as any ASL operators that include a
15902target operand.
15903
15904Partially implemented support for Implicit Result-to-Target
15905conversion. This is when a result object is converted on the fly
15906to the type of  an existing target object.  Completion of this
15907support is pending  further analysis of the ACPI specification
15908concerning this matter.
15909
15910CPU-specific code has been removed from the subsystem (hardware
15911directory).
15912
15913New Power Management Timer functions added
15914
15915Linux OS Services Layer (OSL): Moved system state transition code
15916to the core, fixed it, and modified  Linux OSL accordingly.
15917
15918Fixed C2 and C3 latency calculations.
15919
15920
15921We no longer use the compilation date for the version message on
15922initialization, but retrieve the version from AcpiGetSystemInfo().
15923
15924Incorporated for fix Sony VAIO machines.
15925
15926Documentation:  The Programmer Reference has been updated and
15927reformatted.
15928
15929
15930ASL Compiler:  Version X2013: Fixed a problem where the line
15931numbering and error reporting could get out  of sync in the
15932presence of multiple include files.
15933
15934 ------------------------------------------
15935Summary of changes for this label: 01_15_01
15936
15937Core ACPI CA Subsystem:
15938
15939Implemented support for type conversions in the execution of the
15940ASL  Concatenate operator (The second operand is converted to
15941match the type  of the first operand before concatenation.)
15942
15943Support for implicit source operand conversion is partially
15944implemented.   The ASL source operand types Integer, Buffer, and
15945String are freely  interchangeable for most ASL operators and are
15946converted by the interpreter  on the fly as required.  Implicit
15947Target operand conversion (where the  result is converted to the
15948target type before storing) is not yet implemented.
15949
15950Support for 32-bit and 64-bit BCD integers is implemented.
15951
15952Problem fixed where a field read on an aligned field could cause a
15953read  past the end of the field.
15954
15955New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
15956does not return a value, but the caller expects one.  (The ASL
15957compiler flags this as a warning.)
15958
15959ASL Compiler:
15960
15961Version X2011:
159621. Static typechecking of all operands is implemented. This
15963prevents the use of invalid objects (such as using a Package where
15964an Integer is required) at compile time instead of at interpreter
15965run-time.
159662. The ASL source line is printed with ALL errors and warnings.
159673. Bug fix for source EOF without final linefeed.
159684. Debug option is split into a parse trace and a namespace trace.
159695. Namespace output option (-n) includes initial values for
15970integers and strings.
159716. Parse-only option added for quick syntax checking.
159727. Compiler checks for duplicate ACPI name declarations
15973
15974Version X2012:
159751. Relaxed typechecking to allow interchangeability between
15976strings, integers, and buffers.  These types are now converted by
15977the interpreter at runtime.
159782. Compiler reports time taken by each internal subsystem in the
15979debug         output file.
15980
15981
15982 ------------------------------------------
15983Summary of changes for this label: 12_14_00
15984
15985ASL Compiler:
15986
15987This is the first official release of the compiler. Since the
15988compiler requires elements of the Core Subsystem, this label
15989synchronizes everything.
15990
15991------------------------------------------
15992Summary of changes for this label: 12_08_00
15993
15994
15995Fixed a problem where named references within the ASL definition
15996of both OperationRegions and CreateXXXFields did not work
15997properly.  The symptom was an AE_AML_OPERAND_TYPE during
15998initialization of the region/field. This is similar (but not
15999related internally) to the problem that was fixed in the last
16000label.
16001
16002Implemented both 32-bit and 64-bit support for the BCD ASL
16003functions ToBCD and FromBCD.
16004
16005Updated all legal headers to include "2000" in the copyright
16006years.
16007
16008 ------------------------------------------
16009Summary of changes for this label: 12_01_00
16010
16011Fixed a problem where method invocations within the ASL definition
16012of both OperationRegions and CreateXXXFields did not work
16013properly.  The symptom was an AE_AML_OPERAND_TYPE during
16014initialization of the region/field:
16015
16016  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
16017[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
16018(0x3005)
16019
16020Fixed a problem where operators with more than one nested
16021subexpression would fail.  The symptoms were varied, by mostly
16022AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
16023problem that has gone unnoticed until now.
16024
16025  Subtract (Add (1,2), Multiply (3,4))
16026
16027Fixed a problem where AcpiGetHandle didn't quite get fixed in the
16028previous build (The prefix part of a relative path was handled
16029incorrectly).
16030
16031Fixed a problem where Operation Region initialization failed if
16032the operation region name was a "namepath" instead of a simple
16033"nameseg". Symptom was an AE_NO_OPERAND error.
16034
16035Fixed a problem where an assignment to a local variable via the
16036indirect RefOf mechanism only worked for the first such
16037assignment.  Subsequent assignments were ignored.
16038
16039 ------------------------------------------
16040Summary of changes for this label: 11_15_00
16041
16042ACPI 2.0 table support with backwards support for ACPI 1.0 and the
160430.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
16044the AML  interpreter does NOT have support for the new 2.0 ASL
16045grammar terms at this time.
16046
16047All ACPI hardware access is via the GAS structures in the ACPI 2.0
16048FADT.
16049
16050All physical memory addresses across all platforms are now 64 bits
16051wide. Logical address width remains dependent on the platform
16052(i.e., "void *").
16053
16054AcpiOsMapMemory interface changed to a 64-bit physical address.
16055
16056The AML interpreter integer size is now 64 bits, as per the ACPI
160572.0 specification.
16058
16059For backwards compatibility with ACPI 1.0, ACPI tables with a
16060revision number less than 2 use 32-bit integers only.
16061
16062Fixed a problem where the evaluation of OpRegion operands did not
16063always resolve them to numbers properly.
16064
16065------------------------------------------
16066Summary of changes for this label: 10_20_00
16067
16068Fix for CBN_._STA issue.  This fix will allow correct access to
16069CBN_ OpRegions when the _STA returns 0x8.
16070
16071Support to convert ACPI constants (Ones, Zeros, One) to actual
16072values before a package object is returned
16073
16074Fix for method call as predicate to if/while construct causing
16075incorrect if/while behavior
16076
16077Fix for Else block package lengths sometimes calculated wrong (if
16078block > 63 bytes)
16079
16080Fix for Processor object length field, was always zero
16081
16082Table load abort if FACP sanity check fails
16083
16084Fix for problem with Scope(name) if name already exists
16085
16086Warning emitted if a named object referenced cannot be found
16087(resolved) during method execution.
16088
16089
16090
16091
16092
16093------------------------------------------
16094Summary of changes for this label: 9_29_00
16095
16096New table initialization interfaces: AcpiInitializeSubsystem no
16097longer has any parameters AcpiFindRootPointer - Find the RSDP (if
16098necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
16099>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
16100AcpiLoadTables
16101
16102Note: These interface changes require changes to all existing OSDs
16103
16104The PCI_Config default address space handler is always installed
16105at the root namespace object.
16106
16107-------------------------------------------
16108Summary of changes for this label: 09_15_00
16109
16110The new initialization architecture is implemented.  New
16111interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
16112AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
16113
16114(Namespace is automatically loaded when a table is loaded)
16115
16116The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1611752 bytes to 32 bytes.  There is usually one of these for every
16118namespace object, so the memory savings is significant.
16119
16120Implemented just-in-time evaluation of the CreateField operators.
16121
16122Bug fixes for IA-64 support have been integrated.
16123
16124Additional code review comments have been implemented
16125
16126The so-called "third pass parse" has been replaced by a final walk
16127through the namespace to initialize all operation regions (address
16128spaces) and fields that have not yet been initialized during the
16129execution of the various _INI and REG methods.
16130
16131New file - namespace/nsinit.c
16132
16133-------------------------------------------
16134Summary of changes for this label: 09_01_00
16135
16136Namespace manager data structures have been reworked to change the
16137primary  object from a table to a single object.  This has
16138resulted in dynamic memory  savings of 3X within the namespace and
161392X overall in the ACPI CA subsystem.
16140
16141Fixed problem where the call to AcpiEvFindPciRootBuses was
16142inadvertently left  commented out.
16143
16144Reduced the warning count when generating the source with the GCC
16145compiler.
16146
16147Revision numbers added to each module header showing the
16148SourceSafe version of the file.  Please refer to this version
16149number when giving us feedback or comments on individual modules.
16150
16151The main object types within the subsystem have been renamed to
16152clarify their  purpose:
16153
16154ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
16155ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
16156ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
16157
16158NOTE: no changes to the initialization sequence are included in
16159this label.
16160
16161-------------------------------------------
16162Summary of changes for this label: 08_23_00
16163
16164Fixed problem where TerminateControlMethod was being called
16165multiple times per  method
16166
16167Fixed debugger problem where single stepping caused a semaphore to
16168be  oversignalled
16169
16170Improved performance through additional parse object caching -
16171added  ACPI_EXTENDED_OP type
16172
16173-------------------------------------------
16174Summary of changes for this label: 08_10_00
16175
16176Parser/Interpreter integration:  Eliminated the creation of
16177complete parse trees  for ACPI tables and control methods.
16178Instead, parse subtrees are created and  then deleted as soon as
16179they are processed (Either entered into the namespace or  executed
16180by the interpreter).  This reduces the use of dynamic kernel
16181memory  significantly. (about 10X)
16182
16183Exception codes broken into classes and renumbered.  Be sure to
16184recompile all  code that includes acexcep.h.  Hopefully we won't
16185have to renumber the codes  again now that they are split into
16186classes (environment, programmer, AML code,  ACPI table, and
16187internal).
16188
16189Fixed some additional alignment issues in the Resource Manager
16190subcomponent
16191
16192Implemented semaphore tracking in the AcpiExec utility, and fixed
16193several places  where mutexes/semaphores were being unlocked
16194without a corresponding lock  operation.  There are no known
16195semaphore or mutex "leaks" at this time.
16196
16197Fixed the case where an ASL Return operator is used to return an
16198unnamed  package.
16199
16200-------------------------------------------
16201Summary of changes for this label: 07_28_00
16202
16203Fixed a problem with the way addresses were calculated in
16204AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
16205manifested itself when a Field was  created with WordAccess or
16206DwordAccess, but the field unit defined within the  Field was less
16207
16208than a Word or Dword.
16209
16210Fixed a problem in AmlDumpOperands() module's loop to pull
16211operands off of the  operand stack to display information. The
16212problem manifested itself as a TLB  error on 64-bit systems when
16213accessing an operand stack with two or more  operands.
16214
16215Fixed a problem with the PCI configuration space handlers where
16216context was  getting confused between accesses. This required a
16217change to the generic address  space handler and address space
16218setup definitions. Handlers now get both a  global handler context
16219(this is the one passed in by the user when executing
16220AcpiInstallAddressSpaceHandler() and a specific region context
16221that is unique to  each region (For example, the _ADR, _SEG and
16222_BBN values associated with a  specific region). The generic
16223function definitions have changed to the  following:
16224
16225typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
16226UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
16227*HandlerContext, // This used to be void *Context void
16228*RegionContext); // This is an additional parameter
16229
16230typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
16231RegionHandle, UINT32 Function, void *HandlerContext,  void
16232**RegionContext); // This used to be **ReturnContext
16233
16234-------------------------------------------
16235Summary of changes for this label: 07_21_00
16236
16237Major file consolidation and rename.  All files within the
16238interpreter have been  renamed as well as most header files.  This
16239was done to prevent collisions with  existing files in the host
16240OSs -- filenames such as "config.h" and "global.h"  seem to be
16241quite common.  The VC project files have been updated.  All
16242makefiles  will require modification.
16243
16244The parser/interpreter integration continues in Phase 5 with the
16245implementation  of a complete 2-pass parse (the AML is parsed
16246twice) for each table;  This  avoids the construction of a huge
16247parse tree and therefore reduces the amount of  dynamic memory
16248required by the subsystem.  Greater use of the parse object cache
16249means that performance is unaffected.
16250
16251Many comments from the two code reviews have been rolled in.
16252
16253The 64-bit alignment support is complete.
16254
16255-------------------------------------------
16256Summary of changes for this label: 06_30_00
16257
16258With a nod and a tip of the hat to the technology of yesteryear,
16259we've added  support in the source code for 80 column output
16260devices.  The code is now mostly  constrained to 80 columns or
16261less to support environments and editors that 1)  cannot display
16262or print more than 80 characters on a single line, and 2) cannot
16263disable line wrapping.
16264
16265A major restructuring of the namespace data structure has been
16266completed.  The  result is 1) cleaner and more
16267understandable/maintainable code, and 2) a  significant reduction
16268in the dynamic memory requirement for each named ACPI  object
16269(almost half).
16270
16271-------------------------------------------
16272Summary of changes for this label: 06_23_00
16273
16274Linux support has been added.  In order to obtain approval to get
16275the ACPI CA  subsystem into the Linux kernel, we've had to make
16276quite a few changes to the  base subsystem that will affect all
16277users (all the changes are generic and OS- independent).  The
16278effects of these global changes have been somewhat far  reaching.
16279Files have been merged and/or renamed and interfaces have been
16280renamed.   The major changes are described below.
16281
16282Osd* interfaces renamed to AcpiOs* to eliminate namespace
16283pollution/confusion  within our target kernels.  All OSD
16284interfaces must be modified to match the new  naming convention.
16285
16286Files merged across the subsystem.  A number of the smaller source
16287and header  files have been merged to reduce the file count and
16288increase the density of the  existing files.  There are too many
16289to list here.  In general, makefiles that  call out individual
16290files will require rebuilding.
16291
16292Interpreter files renamed.  All interpreter files now have the
16293prefix am*  instead of ie* and is*.
16294
16295Header files renamed:  The acapi.h file is now acpixf.h.  The
16296acpiosd.h file is  now acpiosxf.h.  We are removing references to
16297the acronym "API" since it is  somewhat windowsy. The new name is
16298"external interface" or xface or xf in the  filenames.j
16299
16300
16301All manifest constants have been forced to upper case (some were
16302mixed case.)   Also, the string "ACPI_" has been prepended to many
16303(not all) of the constants,  typedefs, and structs.
16304
16305The globals "DebugLevel" and "DebugLayer" have been renamed
16306"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
16307
16308All other globals within the subsystem are now prefixed with
16309"AcpiGbl_" Internal procedures within the subsystem are now
16310prefixed with "Acpi" (with only  a few exceptions).  The original
16311two-letter abbreviation for the subcomponent  remains after "Acpi"
16312- for example, CmCallocate became AcpiCmCallocate.
16313
16314Added a source code translation/conversion utility.  Used to
16315generate the Linux  source code, it can be modified to generate
16316other types of source as well. Can  also be used to cleanup
16317existing source by removing extraneous spaces and blank  lines.
16318Found in tools/acpisrc/*
16319
16320OsdUnMapMemory was renamed to OsdUnmapMemory and then
16321AcpiOsUnmapMemory.  (UnMap  became Unmap).
16322
16323A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
16324When set to  one, this indicates that the caller wants to use the
16325
16326semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
16327both types.  However, implementers of this  call may want to use
16328different OS primitives depending on the type of semaphore
16329requested.  For example, some operating systems provide separate
16330
16331"mutex" and  "semaphore" interfaces - where the mutex interface is
16332much faster because it  doesn't have all the overhead of a full
16333semaphore implementation.
16334
16335Fixed a deadlock problem where a method that accesses the PCI
16336address space can  block forever if it is the first access to the
16337space.
16338
16339-------------------------------------------
16340Summary of changes for this label: 06_02_00
16341
16342Support for environments that cannot handle unaligned data
16343accesses (e.g.  firmware and OS environments devoid of alignment
16344handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
16345been added (via configurable macros) in  these three areas: -
16346Transfer of data from the raw AML byte stream is done via byte
16347moves instead of    word/dword/qword moves. - External objects are
16348aligned within the user buffer, including package   elements (sub-
16349objects). - Conversion of name strings to UINT32 Acpi Names is now
16350done byte-wise.
16351
16352The Store operator was modified to mimic Microsoft's
16353implementation when storing  to a Buffer Field.
16354
16355Added a check of the BM_STS bit before entering C3.
16356
16357The methods subdirectory has been obsoleted and removed.  A new
16358file, cmeval.c  subsumes the functionality.
16359
16360A 16-bit (DOS) version of AcpiExec has been developed.  The
16361makefile is under  the acpiexec directory.
16362