xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 71990c18)
1----------------------------------------
217 November 2016. Summary of changes for version 20161117:
3
4
51) ACPICA kernel-resident subsystem:
6
7Table Manager: Fixed a regression introduced in 20160729, "FADT support
8cleanup". This was an attempt to remove all references in the source to
9the FADT version 2, which never was a legal version number. It was
10skipped because it was an early version of 64-bit support that was
11eventually abandoned for the current 64-bit support.
12
13Interpreter: Fixed a problem where runtime implicit conversion was
14incorrectly disabled for the ASL operators below. This brings the
15behavior into compliance with the ACPI specification:
16    FromBCD
17    ToBCD
18    ToDecimalString
19    ToHexString
20    ToInteger
21    ToBuffer
22
23Table Manager: Added a new public interface, AcpiPutTable, used to
24release and free an ACPI table returned by AcpiGetTable and related
25interfaces. Lv Zheng.
26
27Example Code and Data Size: These are the sizes for the OS-independent
28acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
29debug version of the code includes the debug output trace mechanism and
30has a much larger code and data size.
31
32  Current Release:
33    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
34    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
35  Previous Release:
36    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
37    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
38
39
402) iASL Compiler/Disassembler and Tools:
41
42Disassembler: Fixed a regression for disassembly of Resource Template.
43Detection of templates in the AML stream missed some types of templates.
44
45iASL: Fixed a problem where an Access Size error was returned for the PCC
46address space when the AccessSize of the GAS register is greater than a
47DWORD. Hoan Tran.
48
49iASL: Implemented several grammar changes for the operators below. These
50changes are slated for the next version of the ACPI specification:
51    RefOf        - Disallow method invocation as an operand
52    CondRefOf    - Disallow method invocation as an operand
53    DerefOf      - Disallow operands that use the result from operators
54that
55                   do not return a reference (Changed TermArg to
56SuperName).
57
58iASL: Control method invocations are now allowed for Target operands, as
59per the ACPI specification. Removed error for using a control method
60invocation as a Target operand.
61
62Disassembler: Improved detection of Resource Templates, Unicode, and
63Strings within Buffer objects. These subtypes do not contain a specific
64opcode to indicate the originating ASL code, and they must be detected by
65other means within the disassembler.
66
67iASL: Implemented an optimization improvement for 32-bit ACPI tables
68(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
69only after 64-bit to 32-bit truncation. A truncation warning message is
70still emitted, however.
71
72AcpiXtract: Implemented handling for both types of line terminators (LF
73or CR/LF) so that it can accept AcpiDump output files from any system.
74Peter Wu.
75
76AcpiBin: Added two new options for comparing AML files:
77    -a: compare and display ALL mismatches
78    -o: start compare at this offset into the second file
79
80----------------------------------------
8130 September 2016. Summary of changes for version 20160930:
82
83
841) ACPICA kernel-resident subsystem:
85
86Fixed a regression in the internal AcpiTbFindTable function where a non
87AE_OK exception could inadvertently be returned even if the function did
88not fail. This problem affects the following operators:
89    DataTableRegion
90    LoadTable
91
92Fixed a regression in the LoadTable operator where a load to any
93namespace location other than the root no longer worked properly.
94
95Increased the maximum loop count value that will result in the
96AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
97prevent infinite loops within the AML interpreter and thus the host OS
98kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
991,048,575).
100
101Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
102acpixf.h file. This allows hosts to easily configure the maximum loop
103count at runtime.
104
105Removed an illegal character in the strtoul64.c file. This character
106caused errors with some C compilers.
107
108Example Code and Data Size: These are the sizes for the OS-independent
109acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
110debug version of the code includes the debug output trace mechanism and
111has a much larger code and data size.
112
113  Current Release:
114    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
115    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
116  Previous Release:
117    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
118    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
119
120
1212) iASL Compiler/Disassembler and Tools:
122
123Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
124the simpler ASL ElseIf keyword. During the conversion, a trailing If
125block could be lost and missing from the disassembled output.
126
127iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
128the missing rule caused a parse error when using the Index operator as an
129operand to ObjectType. This construct now compiles properly. Example:
130    ObjectType(PKG1[4]).
131
132iASL: Correctly handle unresolved symbols in the hardware map file (-lm
133option). Previously, unresolved symbols could cause a protection fault.
134Such symbols are now marked as unresolved in the map file.
135
136iASL: Implemented support to allow control method invocations as an
137operand to the ASL DeRefOf operator. Example:
138    DeRefOf(MTH1(Local0))
139
140Disassembler: Improved support for the ToPLD ASL macro. Detection of a
141possible _PLD buffer now includes examination of both the normal buffer
142length (16 or 20) as well as the surrounding AML package length.
143
144Disassembler: Fixed a problem with the decoding of complex expressions
145within the Divide operator for ASL+. For the case where both the quotient
146and remainder targets are specified, the entire statement cannot be
147disassembled. Previously, the output incorrectly contained a mix of ASL-
148and ASL+ operators. This mixed statement causes a syntax error when
149compiled. Example:
150    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
151disassembled to:
152    Divide (INT1 + 6, 128, RSLT, QUOT)
153
154iASL/Tools: Added support to process AML and non-AML ACPI tables
155consistently. For the disassembler and AcpiExec, allow all types of ACPI
156tables (AML and data tables). For the iASL -e option, allow only AML
157tables (DSDT/SSDT).
158
159----------------------------------------
16031 August 2016. Summary of changes for version 20160831:
161
162
1631) ACPICA kernel-resident subsystem:
164
165Improve support for the so-called "module-level code", which is defined
166to be math, logical and control AML opcodes that appear outside of any
167control method. This change improves the support by adding more opcodes
168that can be executed in the manner. Some other issues have been solved,
169and the ASL grammar changes to support such code under all scope
170operators (Device, etc.) are complete. Lv Zheng.
171
172UEFI support: these OSL functions have been implemented. This is an
173additional step toward supporting the AcpiExec utility natively (with
174full hardware access) under UEFI. Marcelo Ferreira.
175    AcpiOsReadPciConfiguration
176    AcpiOsWritePciConfiguration
177
178Fixed a possible mutex error during control method auto-serialization. Lv
179Zheng.
180
181Updated support for the Generic Address Structure by fully implementing
182all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
183Zheng.
184
185Updated the return value for the internal _OSI method. Instead of
1860xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
187for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
188implementations, and will be reflected and clarified in the next version
189of the ACPI specification.
190
191Implemented two new table events that can be passed to an ACPICA table
192handler. These events are used to indicate a table installation or
193uninstallation. These events are used in addition to existed table load
194and unload events. Lv Zheng.
195
196Implemented a cleanup for all internal string-to-integer conversions.
197Consolidate multiple versions of this functionality and limit possible
198bases to either 10 or 16 to simplify the code. Adds a new file,
199utstrtoul64.
200
201Cleanup the inclusion order of the various compiler-specific headers.
202This simplifies build configuration management. The compiler-specific
203headers are now split out from the host-specific headers. Lv Zheng.
204
205Example Code and Data Size: These are the sizes for the OS-independent
206acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
207debug version of the code includes the debug output trace mechanism and
208has a much larger code and data size.
209
210  Current Release:
211    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
212    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
213
214
2152) iASL Compiler/Disassembler and Tools:
216
217iASL/AcpiExec: Added a command line option to display the build date/time
218of the tool (-vd). This can be useful to verify that the correct version
219of the tools are being used.
220
221AML Debugger: Implemented a new subcommand ("execute predef") to execute
222all predefined control methods and names within the current namespace.
223This can be useful for debugging problems with ACPI tables and the ACPI
224namespace.
225
226----------------------------------------
22729 July 2016. Summary of changes for version 20160729:
228
229
2301) ACPICA kernel-resident subsystem:
231
232Implemented basic UEFI support for the various ACPICA tools. This
233includes:
2341) An OSL to implement the various AcpiOs* interfaces on UEFI.
2352) Support to obtain the ACPI tables on UEFI.
2363) Local implementation of required C library functions not available on
237UEFI.
2384) A front-end (main) function for the tools for UEFI-related
239initialization.
240
241The initial deployment of this support is the AcpiDump utility executing
242as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
243Current environments supported are Linux/Unix. MSVC generation is not
244supported at this time. See the generate/efi/README file for build
245instructions. Lv Zheng.
246
247Future plans include porting the AcpiExec utility to execute natively on
248the platform with I/O and memory access. This will allow viewing/dump of
249the platform namespace and native execution of ACPI control methods that
250access the actual hardware. To fully implement this support, the OSL
251functions below must be implemented with UEFI interfaces. Any community
252help in the implementation of these functions would be appreciated:
253    AcpiOsReadPort
254    AcpiOsWritePort
255    AcpiOsReadMemory
256    AcpiOsWriteMemory
257    AcpiOsReadPciConfiguration
258    AcpiOsWritePciConfiguration
259
260Restructured and standardized the C library configuration for ACPICA,
261resulting in the various configuration options below. This includes a
262global restructuring of the compiler-dependent and platform-dependent
263include files. These changes may affect the existing platform-dependent
264configuration files on some hosts. Lv Zheng.
265
266The current C library configuration options appear below. For any issues,
267it may be helpful to examine the existing compiler-dependent and
268platform-dependent files as examples. Lv Zheng.
269
2701) Linux kernel:
271    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
272library.
273    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2742) Unix/Windows/BSD applications:
275    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
276library.
277    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2783) UEFI applications:
279    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
280library.
281    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
2824) UEFI applications (EDK2/StdLib):
283    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
284    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
285
286
287AML interpreter: "module-level code" support. Allows for execution of so-
288called "executable" AML code (math/logical operations, etc.) outside of
289control methods not just at the module level (top level) but also within
290any scope declared outside of a control method - Scope{}, Device{},
291Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
292
293Simplified the configuration of the "maximum AML loops" global option by
294adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
295modified at runtime.
296
297
298Example Code and Data Size: These are the sizes for the OS-independent
299acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
300debug version of the code includes the debug output trace mechanism and
301has a much larger code and data size.
302
303  Current Release:
304    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
305    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
306
307
3082) iASL Compiler/Disassembler and Tools:
309
310iASL: Add full support for the RASF ACPI table (RAS Features Table).
311Includes disassembler, data table compiler, and header support.
312
313iASL Expand "module-level code" support. Allows for
314compilation/disassembly of so-called "executable" AML code (math/logical
315operations, etc.) outside of control methods not just at the module level
316(top level) but also within any scope declared outside of a control
317method - Scope{}, Device{}, Processor{}, PowerResource{}, and
318ThermalZone{}.
319
320AcpiDump: Added support for dumping all SSDTs on newer versions of
321Windows. These tables are now easily available -- SSDTs are not available
322through the registry on older versions.
323
324----------------------------------------
32527 May 2016. Summary of changes for version 20160527:
326
327
3281) ACPICA kernel-resident subsystem:
329
330Temporarily reverted the new arbitrary bit length/alignment support in
331AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
332a number of regressions with the new code that need to be fully resolved
333and tested before this support can be finally integrated into ACPICA.
334Apologies for any inconveniences these issues may have caused.
335
336The ACPI message macros are not configurable (ACPI_MSG_ERROR,
337ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
338and ACPI_MSG_BIOS_WARNING). Lv Zheng.
339
340Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
341option. Adds a new return macro, return_STR. Junk-uk Kim.
342
343Example Code and Data Size: These are the sizes for the OS-independent
344acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
345debug version of the code includes the debug output trace mechanism and
346has a much larger code and data size.
347
348  Current Release:
349    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
350    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
351  Previous Release:
352    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
353    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
354
355----------------------------------------
35622 April 2016. Summary of changes for version 20160422:
357
3581) ACPICA kernel-resident subsystem:
359
360Fixed a regression in the GAS (generic address structure) arbitrary bit
361support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
362and incorrect return values. Lv Zheng. ACPICA BZ 1270.
363
364ACPI 6.0: Added support for new/renamed resource macros. One new argument
365was added to each of these macros, and the original name has been
366deprecated. The AML disassembler will always disassemble to the new
367names. Support for the new macros was added to iASL, disassembler,
368resource manager, and the acpihelp utility. ACPICA BZ 1274.
369
370    I2cSerialBus  -> I2cSerialBusV2
371    SpiSerialBus  -> SpiSerialBusV2
372    UartSerialBus -> UartSerialBusV2
373
374ACPI 6.0: Added support for a new integer field that was appended to the
375package object returned by the _BIX method. This adds iASL compile-time
376and AML runtime error checking. ACPICA BZ 1273.
377
378ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
379Subspace Type2" (Headers, Disassembler, and data table compiler).
380
381Example Code and Data Size: These are the sizes for the OS-independent
382acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
383debug version of the code includes the debug output trace mechanism and
384has a much larger code and data size.
385
386  Current Release:
387    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
388    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
389  Previous Release:
390    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
391    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
392
393
3942) iASL Compiler/Disassembler and Tools:
395
396iASL: Implemented an ASL grammar extension to allow/enable executable
397"module-level code" to be created and executed under the various
398operators that create new scopes. This type of AML code is already
399supported in all known AML interpreters, and the grammar change will
400appear in the next version of the ACPI specification. Simplifies the
401conditional runtime creation of named objects under these object types:
402
403    Device
404    PowerResource
405    Processor
406    Scope
407    ThermalZone
408
409iASL: Implemented a new ASL extension, a "For" loop macro to add greater
410ease-of-use to the ASL language. The syntax is similar to the
411corresponding C operator, and is implemented with the existing AML While
412opcode -- thus requiring no changes to existing AML interpreters.
413
414    For (Initialize, Predicate, Update) {TermList}
415
416Grammar:
417    ForTerm :=
418        For (
419            Initializer    // Nothing | TermArg => ComputationalData
420            Predicate      // Nothing | TermArg => ComputationalData
421            Update         // Nothing | TermArg => ComputationalData
422        ) {TermList}
423
424
425iASL: The _HID/_ADR detection and validation has been enhanced to search
426under conditionals in order to allow these objects to be conditionally
427created at runtime.
428
429iASL: Fixed several issues with the constant folding feature. The
430improvement allows better detection and resolution of statements that can
431be folded at compile time. ACPICA BZ 1266.
432
433iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
434conversion to the ASL ElseIf operator where incorrect ASL code could be
435generated.
436
437iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
438sometimes an extra (and extraneous) set of parentheses were emitted for
439some combinations of operators. Although this did not cause any problems
440with recompilation of the disassembled code, it made the code more
441difficult to read. David Box. ACPICA BZ 1231.
442
443iASL: Changed to ignore the unreferenced detection for predefined names
444of resource descriptor elements, when the resource descriptor is
445created/defined within a control method.
446
447iASL: Disassembler: Fix a possible fault with externally declared Buffer
448objects.
449
450----------------------------------------
45118 March 2016. Summary of changes for version 20160318:
452
4531) ACPICA kernel-resident subsystem:
454
455Added support for arbitrary bit lengths and bit offsets for registers
456defined by the Generic Address Structure. Previously, only aligned bit
457lengths of 8/16/32/64 were supported. This was sufficient for many years,
458but recently some machines have been seen that require arbitrary bit-
459level support. ACPICA BZ 1240. Lv Zheng.
460
461Fixed an issue where the \_SB._INI method sometimes must be evaluated
462before any _REG methods are evaluated. Lv Zheng.
463
464Implemented several changes related to ACPI table support
465(Headers/Disassembler/TableCompiler):
466NFIT: For ACPI 6.1, updated to add some additional new fields and
467constants.
468FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
4696).
470DMAR: Added new constants per the 10/2014 DMAR spec.
471IORT: Added new subtable per the 10/2015 IORT spec.
472HEST: For ACPI 6.1, added new constants and new subtable.
473DBG2: Added new constants per the 12/2015 DBG2 spec.
474FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
475ACPICA BZ 1249.
476ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
477
478Updated header support for the DMAR table to match the current version of
479the related spec.
480
481Added extensions to the ASL Concatenate operator to allow any ACPI object
482to be passed as an operand. Any object other than Integer/String/Buffer
483simply returns a string containing the object type. This extends the
484usefulness of the Printf macros. Previously, Concatenate would abort the
485control method if a non-data object was encountered.
486
487ACPICA source code: Deployed the C "const" keyword across the source code
488where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
489
490Example Code and Data Size: These are the sizes for the OS-independent
491acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
492debug version of the code includes the debug output trace mechanism and
493has a much larger code and data size.
494
495  Current Release:
496    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
497    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
498  Previous Release:
499    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
500    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
501
502
5032) iASL Compiler/Disassembler and Tools:
504
505iASL/Disassembler: Improved the heuristic used to determine the number of
506arguments for an externally defined control method (a method in another
507table). Although this is an improvement, there is no deterministic way to
508"guess" the number of method arguments. Only the ACPI 6.0 External opcode
509will completely solve this problem as it is deployed (automatically) in
510newer BIOS code.
511
512iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
513statements that could cause errors when the disassembled file is
514compiled. ACPICA BZ 1243. David Box.
515
516iASL: Fixed a regression caused by the merger of the two versions of the
517local strtoul64. Because of a dependency on a global variable, strtoul64
518could return an error for integers greater than a 32-bit value. ACPICA BZ
5191260.
520
521iASL: Fixed a regression where a fault could occur for an ASL Return
522statement if it invokes a control method that is not resolved. ACPICA BZ
5231264.
524
525AcpiXtract: Improved input file validation: detection of binary files and
526non-acpidump text files.
527
528----------------------------------------
52912 February 2016. Summary of changes for version 20160212:
530
5311) ACPICA kernel-resident subsystem:
532
533Implemented full support for the ACPI 6.1 specification (released in
534January). This version of the specification is available at:
535http://www.uefi.org/specifications
536
537Only a relatively small number of changes were required in ACPICA to
538support ACPI 6.1, in these areas:
539- New predefined names
540- New _HID values
541- A new subtable for HEST
542- A few other header changes for new values
543
544Ensure \_SB_._INI is executed before any _REG methods are executed. There
545appears to be existing BIOS code that relies on this behavior. Lv Zheng.
546
547Reverted a change made in version 20151218 which enabled method
548invocations to be targets of various ASL operators (SuperName and Target
549grammar elements). While the new behavior is supported by the ACPI
550specification, other AML interpreters do not support this behavior and
551never will. The ACPI specification will be updated for ACPI 6.2 to remove
552this support. Therefore, the change was reverted to the original ACPICA
553behavior.
554
555ACPICA now supports the GCC 6 compiler.
556
557Current Release: (Note: build changes increased sizes)
558    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
559    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
560Previous Release:
561    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
562    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
563
564
5652) iASL Compiler/Disassembler and Tools:
566
567Completed full support for the ACPI 6.0 External() AML opcode. The
568compiler emits an external AML opcode for each ASL External statement.
569This opcode is used by the disassembler to assist with the disassembly of
570external control methods by specifying the required number of arguments
571for the method. AML interpreters do not use this opcode. To ensure that
572interpreters do not even see the opcode, a block of one or more external
573opcodes is surrounded by an "If(0)" construct. As this feature becomes
574commonly deployed in BIOS code, the ability of disassemblers to correctly
575disassemble AML code will be greatly improved. David Box.
576
577iASL: Implemented support for an optional cross-reference output file.
578The -lx option will create a the cross-reference file with the suffix
579"xrf". Three different types of cross-reference are created in this file:
580- List of object references made from within each control method
581- Invocation (caller) list for each user-defined control method
582- List of references to each non-method object in the namespace
583
584iASL: Method invocations as ASL Target operands are now disallowed and
585flagged as errors in preparation for ACPI 6.2 (see the description of the
586problem above).
587
588----------------------------------------
5898 January 2016. Summary of changes for version 20160108:
590
5911) ACPICA kernel-resident subsystem:
592
593Updated all ACPICA copyrights and signons to 2016: Added the 2016
594copyright to all source code module headers and utility/tool signons.
595This includes the standard Linux dual-license header. This affects
596virtually every file in the ACPICA core subsystem, iASL compiler, all
597ACPICA utilities, and the ACPICA test suite.
598
599Fixed a regression introduced in version 20151218 concerning the
600execution of so-called module-level ASL/AML code. Namespace objects
601created under a module-level If() construct were not properly/fully
602entered into the namespace and could cause an interpreter fault when
603accessed.
604
605Example Code and Data Size: These are the sizes for the OS-independent
606acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
607debug version of the code includes the debug output trace mechanism and
608has a much larger code and data size.
609
610Current Release:
611    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
612    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
613  Previous Release:
614    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
615    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
616
617
6182) iASL Compiler/Disassembler and Tools:
619
620Fixed a problem with the compilation of the GpioIo and GpioInt resource
621descriptors. The _PIN field name was incorrectly defined to be an array
622of 32-bit values, but the _PIN values are in fact 16 bits each. This
623would cause incorrect bit width warnings when using Word (16-bit) fields
624to access the descriptors.
625
626
627----------------------------------------
62818 December 2015. Summary of changes for version 20151218:
629
6301) ACPICA kernel-resident subsystem:
631
632Implemented per-AML-table execution of "module-level code" as individual
633ACPI tables are loaded into the namespace during ACPICA initialization.
634In other words, any module-level code within an AML table is executed
635immediately after the table is loaded, instead of batched and executed
636after all of the tables have been loaded. This provides compatibility
637with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
638David Box.
639
640To fully support the feature above, the default operation region handlers
641for the SystemMemory, SystemIO, and PCI_Config address spaces are now
642installed before any ACPI tables are loaded. This enables module-level
643code to access these address spaces during the table load and module-
644level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
645Box.
646
647Implemented several changes to the internal _REG support in conjunction
648with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
649utilities for the changes above. Although these tools were changed, host
650operating systems that simply use the default handlers for SystemMemory,
651SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
652
653For example, in the code below, DEV1 is conditionally added to the
654namespace by the DSDT via module-level code that accesses an operation
655region. The SSDT references DEV1 via the Scope operator. DEV1 must be
656created immediately after the DSDT is loaded in order for the SSDT to
657successfully reference DEV1. Previously, this code would cause an
658AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
659fully supported by ACPICA.
660
661    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
662    {
663        OperationRegion (OPR1, SystemMemory, 0x400, 32)
664        Field (OPR1, AnyAcc, NoLock, Preserve)
665        {
666            FLD1, 1
667        }
668        If (FLD1)
669        {
670            Device (\DEV1)
671            {
672            }
673        }
674    }
675    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
676    {
677        External (\DEV1, DeviceObj)
678        Scope (\DEV1)
679        {
680        }
681    }
682
683Fixed an AML interpreter problem where control method invocations were
684not handled correctly when the invocation was itself a SuperName argument
685to another ASL operator. In these cases, the method was not invoked.
686ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
687argument:
688    Store
689    Acquire, Wait
690    CondRefOf, RefOf
691    Decrement, Increment
692    Load, Unload
693    Notify
694    Signal, Release, Reset
695    SizeOf
696
697Implemented automatic String-to-ObjectReference conversion support for
698packages returned by predefined names (such as _DEP). A common BIOS error
699is to add double quotes around an ObjectReference namepath, which turns
700the reference into an unexpected string object. This support detects the
701problem and corrects it before the package is returned to the caller that
702invoked the method. Lv Zheng.
703
704Implemented extensions to the Concatenate operator. Concatenate now
705accepts any type of object, it is not restricted to simply
706Integer/String/Buffer. For objects other than these 3 basic data types,
707the argument is treated as a string containing the name of the object
708type. This expands the utility of Concatenate and the Printf/Fprintf
709macros. ACPICA BZ 1222.
710
711Cleaned up the output of the ASL Debug object. The timer() value is now
712optional and no longer emitted by default. Also, the basic data types of
713Integer/String/Buffer are simply emitted as their values, without a data
714type string -- since the data type is obvious from the output. ACPICA BZ
7151221.
716
717Example Code and Data Size: These are the sizes for the OS-independent
718acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
719debug version of the code includes the debug output trace mechanism and
720has a much larger code and data size.
721
722  Current Release:
723    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
724    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
725  Previous Release:
726    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
727    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
728
729
7302) iASL Compiler/Disassembler and Tools:
731
732iASL: Fixed some issues with the ASL Include() operator. This operator
733was incorrectly defined in the iASL parser rules, causing a new scope to
734be opened for the code within the include file. This could lead to
735several issues, including allowing ASL code that is technically illegal
736and not supported by AML interpreters. Note, this does not affect the
737related #include preprocessor operator. ACPICA BZ 1212.
738
739iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
740operator is essentially an ASL macro since there is no AML opcode
741associated with it. The code emitted by the iASL compiler for ElseIf is
742an Else opcode followed immediately by an If opcode. The disassembler
743will now emit an ElseIf if it finds an Else immediately followed by an
744If. This simplifies the decoded ASL, especially for deeply nested
745If..Else and large Switch constructs. Thus, the disassembled code more
746closely follows the original source ASL. ACPICA BZ 1211. Example:
747
748    Old disassembly:
749        Else
750        {
751            If (Arg0 == 0x02)
752            {
753                Local0 = 0x05
754            }
755        }
756
757    New disassembly:
758        ElseIf (Arg0 == 0x02)
759        {
760            Local0 = 0x05
761        }
762
763AcpiExec: Added support for the new module level code behavior and the
764early region installation. This required a small change to the
765initialization, since AcpiExec must install its own operation region
766handlers.
767
768AcpiExec: Added support to make the debug object timer optional. Default
769is timer disabled. This cleans up the debug object output -- the timer
770data is rarely used.
771
772AcpiExec: Multiple ACPI tables are now loaded in the order that they
773appear on the command line. This can be important when there are
774interdependencies/references between the tables.
775
776iASL/Templates. Add support to generate template files with multiple
777SSDTs within a single output file. Also added ommand line support to
778specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
7791223, 1225.
780
781
782----------------------------------------
78324 November 2015. Summary of changes for version 20151124:
784
7851) ACPICA kernel-resident subsystem:
786
787Fixed a possible regression for a previous update to FADT handling. The
788FADT no longer has a fixed table ID, causing some issues with code that
789was hardwired to a specific ID. Lv Zheng.
790
791Fixed a problem where the method auto-serialization could interfere with
792the current SyncLevel. This change makes the auto-serialization support
793transparent to the SyncLevel support and management.
794
795Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
796interface is intended for early access to the namespace during the
797initial namespace device discovery walk. The _SUB method has been seen to
798access operation regions in some cases, causing errors because the
799operation regions are not fully initialized.
800
801AML Debugger: Fixed some issues with the terminate/quit/exit commands
802that can cause faults. Lv Zheng.
803
804AML Debugger: Add thread ID support so that single-step mode only applies
805to the AML Debugger thread. This prevents runtime errors within some
806kernels. Lv Zheng.
807
808Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
809methods that are invoked by this interface are optional, removed warnings
810emitted for the case where one or more of these methods do not exist.
811ACPICA BZ 1208, original change by Prarit Bhargava.
812
813Made a major pass through the entire ACPICA source code base to
814standardize formatting that has diverged a bit over time. There are no
815functional changes, but this will of course cause quite a few code
816differences from the previous ACPICA release.
817
818Example Code and Data Size: These are the sizes for the OS-independent
819acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
820debug version of the code includes the debug output trace mechanism and
821has a much larger code and data size.
822
823  Current Release:
824    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
825    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
826  Previous Release:
827    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
828    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
829
830
8312) iASL Compiler/Disassembler and Tools:
832
833iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
834definition blocks within a single ASL file and the resulting AML file.
835Support for this type of file was also added to the various tools that
836use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
837example code below shows two definition blocks within the same file:
838
839    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
8400x12345678)
841    {
842    }
843    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
844    {
845    }
846
847iASL: Enhanced typechecking for the Name() operator. All expressions for
848the value of the named object must be reduced/folded to a single constant
849at compile time, as per the ACPI specification (the AML definition of
850Name()).
851
852iASL: Fixed some code indentation issues for the -ic and -ia options (C
853and assembly headers). Now all emitted code correctly begins in column 1.
854
855iASL: Added an error message for an attempt to open a Scope() on an
856object defined in an SSDT. The DSDT is always loaded into the namespace
857first, so any attempt to open a Scope on an SSDT object will fail at
858runtime.
859
860
861----------------------------------------
86230 September 2015. Summary of changes for version 20150930:
863
8641) ACPICA kernel-resident subsystem:
865
866Debugger: Implemented several changes and bug fixes to assist support for
867the in-kernel version of the AML debugger. Lv Zheng.
868- Fix the "predefined" command for in-kernel debugger.
869- Do not enter debug command loop for the help and version commands.
870- Disallow "execute" command during execution/single-step of a method.
871
872Interpreter: Updated runtime typechecking for all operators that have
873target operands. The operand is resolved and validated that it is legal.
874For example, the target cannot be a non-data object such as a Device,
875Mutex, ThermalZone, etc., as per the ACPI specification.
876
877Debugger: Fixed the double-mutex user I/O handshake to work when local
878deadlock detection is enabled.
879
880Debugger: limited display of method locals and arguments (LocalX and
881ArgX) to only those that have actually been initialized. This prevents
882lines of extraneous output.
883
884Updated the definition of the NFIT table to correct the bit polarity of
885one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
886
887Example Code and Data Size: These are the sizes for the OS-independent
888acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
889debug version of the code includes the debug output trace mechanism and
890has a much larger code and data size.
891
892  Current Release:
893    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
894    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
895  Previous Release:
896    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
897    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
898
899
9002) iASL Compiler/Disassembler and Tools:
901
902iASL: Improved the compile-time typechecking for operands of many of the
903ASL operators:
904
905-- Added an option to disable compiler operand/operator typechecking (-
906ot).
907
908-- For the following operators, the TermArg operands are now validated
909when possible to be Integer data objects: BankField, OperationRegion,
910DataTableRegion, Buffer, and Package.
911
912-- Store (Source, Target): Both the source and target operands are
913resolved and checked that the operands are both legal. For example,
914neither operand can be a non-data object such as a Device, Mutex,
915ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
916operator can be used to store an object to any type of target object.
917
918-- Store (Source, Target): If the source is a Package object, the target
919must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
920is a Package, the source must also be a Package.
921
922-- Store (Source, Target): A warning is issued if the source and target
923resolve to the identical named object.
924
925-- Store (Source, <method invocation>): An error is generated for the
926target method invocation, as this construct is not supported by the AML
927interpreter.
928
929-- For all ASL math and logic operators, the target operand must be a
930data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
931includes the function return value also.
932
933-- External declarations are also included in the typechecking where
934possible. External objects defined using the UnknownObj keyword cannot be
935typechecked, however.
936
937iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
938operator:
939- Legacy code: Index(PKG1, 3)
940- New ASL+ code: PKG1[3]
941This completes the ACPI 6.0 ASL+ support as it was the only operator not
942supported.
943
944iASL: Fixed the file suffix for the preprocessor output file (.i). Two
945spaces were inadvertently appended to the filename, causing file access
946and deletion problems on some systems.
947
948ASL Test Suite (ASLTS): Updated the master makefile to generate all
949possible compiler output files when building the test suite -- thus
950exercising these features of the compiler. These files are automatically
951deleted when the test suite exits.
952
953
954----------------------------------------
95518 August 2015. Summary of changes for version 20150818:
956
9571) ACPICA kernel-resident subsystem:
958
959Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
960Zheng. ACPICA BZ 1186.
961
962Completed development to ensure that the ACPICA Disassembler and Debugger
963are fully standalone components of ACPICA. Removed cross-component
964dependences. Lv Zheng.
965
966The max-number-of-AML-loops is now runtime configurable (previously was
967compile-time only). This is essentially a loop timeout to force-abort
968infinite AML loops. ACPCIA BZ 1192.
969
970Debugger: Cleanup output to dump ACPI names and namepaths without any
971trailing underscores. Lv Zheng. ACPICA BZ 1135.
972
973Removed unnecessary conditional compilations across the Debugger and
974Disassembler components where entire modules could be left uncompiled.
975
976The aapits test is deprecated and has been removed from the ACPICA git
977tree. The test has never been completed and has not been maintained, thus
978becoming rather useless. ACPICA BZ 1015, 794.
979
980A batch of small changes to close bugzilla and other reports:
981- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
982- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
983- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
984- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
985Moore.
986- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
987ACPICA BZ 1184.
988- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
989operators.
990- Debugger: Split debugger initialization/termination interfaces. Lv
991Zheng.
992- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
993identification.
994- AcpiExec: Add debug message during _REG method phase during table
995load/init.
996- AcpiNames: Fix a regression where some output was missing and no longer
997emitted.
998- Debugger: General cleanup and simplification. Lv Zheng.
999- Disassembler: Cleanup use of several global option variables. Lv Zheng.
1000
1001Example Code and Data Size: These are the sizes for the OS-independent
1002acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1003debug version of the code includes the debug output trace mechanism and
1004has a much larger code and data size.
1005
1006  Current Release:
1007    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1008    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
1009  Previous Release:
1010    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1011    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1012
1013
10142) iASL Compiler/Disassembler and Tools:
1015
1016AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
1017were not handled properly and caused load errors. Now, properly invoke
1018and use the ACPICA auto-reallocate mechanism for ACPI table data
1019structures. ACPICA BZ 1188
1020
1021AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
1022BZ 1190.
1023
1024AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
1025AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
1026executed during initialization. ACPICA BZ 1187, 1189.
1027
1028iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
1029that corresponds to each disassembled ASL statement, to simplify
1030debugging. ACPICA BZ 1191.
1031
1032Debugger: Add option to the "objects" command to display a summary of the
1033current namespace objects (Object type and count). This is displayed if
1034the command is entered with no arguments.
1035
1036AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
1037
1038
1039----------------------------------------
104017 July 2015. Summary of changes for version 20150717:
1041
10421) ACPICA kernel-resident subsystem:
1043
1044Improved the partitioning between the Debugger and Disassembler
1045components. This allows the Debugger to be used standalone within kernel
1046code without the Disassembler (which is used for single stepping also).
1047This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
1048
1049Debugger: Implemented a new command to trace the execution of control
1050methods (Trace). This is especially useful for the in-kernel version of
1051the debugger when file I/O may not be available for method trace output.
1052See the ACPICA reference for more information. Lv Zheng.
1053
1054Moved all C library prototypes (used for the local versions of these
1055functions when requested) to a new header, acclib.h
1056Cleaned up the use of non-ANSI C library functions. These functions are
1057implemented locally in ACPICA. Moved all such functions to a common
1058source file, utnonansi.c
1059
1060Debugger: Fixed a problem with the "!!" command (get last command
1061executed) where the debugger could enter an infinite loop and eventually
1062crash.
1063
1064Removed the use of local macros that were used for some of the standard C
1065library functions to automatically cast input parameters. This mostly
1066affected the is* functions where the input parameter is defined to be an
1067int. This required a few modifications to the main ACPICA source code to
1068provide casting for these functions and eliminate possible compiler
1069warnings for these parameters.
1070
1071Across the source code, added additional status/error checking to resolve
1072issues discovered by static source code analysis tools such as Coverity.
1073
1074Example Code and Data Size: These are the sizes for the OS-independent
1075acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1076debug version of the code includes the debug output trace mechanism and
1077has a much larger code and data size.
1078
1079  Current Release:
1080    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1081    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1082  Previous Release:
1083    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
1084    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
1085
1086
10872) iASL Compiler/Disassembler and Tools:
1088
1089iASL: Fixed a regression where the device map file feature no longer
1090worked properly when used in conjunction with the disassembler. It only
1091worked properly with the compiler itself.
1092
1093iASL: Implemented a new warning for method LocalX variables that are set
1094but never used (similar to a C compiler such as gcc). This also applies
1095to ArgX variables that are not defined by the parent method, and are
1096instead (legally) used as local variables.
1097
1098iASL/Preprocessor: Finished the pass-through of line numbers from the
1099preprocessor to the compiler. This ensures that compiler errors/warnings
1100have the correct original line numbers and filenames, regardless of any
1101#include files.
1102
1103iASL/Preprocessor: Fixed a couple of issues with comment handling and the
1104pass-through of comments to the preprocessor output file (which becomes
1105the compiler input file). Also fixed a problem with // comments that
1106appear after a math expression.
1107
1108iASL: Added support for the TCPA server table to the table compiler and
1109template generator. (The client table was already previously supported)
1110
1111iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
1112identify the iASL compiler.
1113
1114Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
1115multiple times. The new names are ACPI_SIGN_NEGATIVE and
1116ACPI_SIGN_POSITIVE.
1117
1118AcpiHelp: Update to expand help messages for the iASL preprocessor
1119directives.
1120
1121
1122----------------------------------------
112319 June 2015. Summary of changes for version 20150619:
1124
1125Two regressions in version 20150616 have been addressed:
1126
1127Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
1128etc.) This update changes ACPICA to only use the standard headers for
1129functions, or the prototypes for the local versions of the C library
1130functions. Across the source code, this required some additional casts
1131for some Clib invocations for portability. Moved all local prototypes to
1132a new file, acclib.h
1133
1134Fixes several problems with recent changes to the handling of the FACS
1135table that could cause some systems not to boot.
1136
1137
1138----------------------------------------
113916 June 2015. Summary of changes for version 20150616:
1140
1141
11421) ACPICA kernel-resident subsystem:
1143
1144Across the entire ACPICA source code base, the various macros for the C
1145library functions (such as ACPI_STRLEN, etc.) have been removed and
1146replaced by the standard C library names (strlen, etc.) The original
1147purpose for these macros is no longer applicable. This simplification
1148reduces the number of macros used in the ACPICA source code
1149significantly, improving readability and maintainability.
1150
1151Implemented support for a new ACPI table, the OSDT. This table, the
1152"override" SDT, can be loaded directly by the host OS at boot time. It
1153enables the replacement of existing namespace objects that were installed
1154via the DSDT and/or SSDTs. The primary purpose for this is to replace
1155buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
1156for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
1157Moore.
1158
1159Added support for systems with (improperly) two FACS tables -- a "32-bit"
1160table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
1161X field). This change will support both automatically. There continues to
1162be systems found with this issue. This support requires a change to the
1163AcpiSetFirmwareWakingVector interface. Also, a public global variable has
1164been added to allow the host to select which FACS is desired
1165(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
1166details Lv Zheng.
1167
1168Added a new feature to allow for systems that do not contain an FACS.
1169Although this is already supported on hardware-reduced platforms, the
1170feature has been extended for all platforms. The reasoning is that we do
1171not want to abort the entire ACPICA initialization just because the
1172system is seriously buggy and has no FACS.
1173
1174Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
1175not correctly transcribed from the ACPI specification in ACPICA version
117620150515.
1177
1178Implemented support for the _CLS object in the AcpiGetObjectInfo external
1179interface.
1180
1181Updated the definitions of the TCPA and TPM2 ACPI tables to the more
1182recent TCG ACPI Specification, December 14, 2014. Table disassembler and
1183compiler also updated. Note: The TCPA "server" table is not supported by
1184the disassembler/table-compiler at this time.
1185
1186ACPI 6.0: Added definitions for the new GIC version field in the MADT.
1187
1188Example Code and Data Size: These are the sizes for the OS-independent
1189acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1190debug version of the code includes the debug output trace mechanism and
1191has a much larger code and data size.
1192
1193  Current Release:
1194    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
1195    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
1196  Previous Release:
1197    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
1198    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
1199
1200
12012) iASL Compiler/Disassembler and Tools:
1202
1203Disassembler: Fixed a problem with the new symbolic operator disassembler
1204where incorrect ASL code could be emitted in some cases for the "non-
1205commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
1206ShiftRight. The actual problem cases seem to be rather unusual in common
1207ASL code, however. David Box.
1208
1209Modified the linux version of acpidump to obtain ACPI tables from not
1210just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
1211Zheng.
1212
1213iASL: Fixed a problem where the user preprocessor output file (.i)
1214contained extra data that was not expected. The compiler was using this
1215file as a temporary file and passed through #line directives in order to
1216keep compiler error messages in sync with the input file and line number
1217across multiple include files. The (.i) is no longer a temporary file as
1218the compiler uses a new, different file for the original purpose.
1219
1220iASL: Fixed a problem where comments within the original ASL source code
1221file were not passed through to the preprocessor output file, nor any
1222listing files.
1223
1224iASL: Fixed some issues for the handling of the "#include" preprocessor
1225directive and the similar (but not the same) "Include" ASL operator.
1226
1227iASL: Add support for the new OSDT in both the disassembler and compiler.
1228
1229iASL: Fixed a problem with the constant folding support where a Buffer
1230object could be incorrectly generated (incorrectly formed) during a
1231conversion to a Store() operator.
1232
1233AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
1234description text for the _REV predefined name. _REV now permanently
1235returns 2, as per the ACPI 6.0 specification.
1236
1237Debugger: Enhanced the output of the Debug ASL object for references
1238produced by the Index operator. For Buffers and strings, only output the
1239actual byte pointed to by the index. For packages, only print the single
1240package element decoded by the index. Previously, the entire
1241buffer/string/package was emitted.
1242
1243iASL/Table-compiler: Fixed a regression where the "generic" data types
1244were no longer recognized, causing errors.
1245
1246
1247----------------------------------------
124815 May 2015. Summary of changes for version 20150515:
1249
1250This release implements most of ACPI 6.0 as described below.
1251
12521) ACPICA kernel-resident subsystem:
1253
1254Implemented runtime argument checking and return value checking for all
1255new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
1256_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
1257
1258Example Code and Data Size: These are the sizes for the OS-independent
1259acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1260debug version of the code includes the debug output trace mechanism and
1261has a much larger code and data size.
1262
1263  Current Release:
1264    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
1265    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
1266  Previous Release:
1267    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
1268    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
1269
1270
12712) iASL Compiler/Disassembler and Tools:
1272
1273iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
1274names (argument count validation and return value typechecking.)
1275
1276iASL disassembler and table compiler: implemented support for all new
1277ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
1278
1279iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
1280tables: FADT, MADT.
1281
1282iASL preprocessor: Added a new directive to enable inclusion of binary
1283blobs into ASL code. The new directive is #includebuffer. It takes a
1284binary file as input and emits a named ascii buffer object into the ASL
1285code.
1286
1287AcpiHelp: Added support for all new ACPI 6.0 predefined names.
1288
1289AcpiHelp: Added a new option, -d, to display all iASL preprocessor
1290directives.
1291
1292AcpiHelp: Added a new option, -t, to display all known/supported ACPI
1293tables.
1294
1295
1296----------------------------------------
129710 April 2015. Summary of changes for version 20150410:
1298
1299Reverted a change introduced in version 20150408 that caused
1300a regression in the disassembler where incorrect operator
1301symbols could be emitted.
1302
1303
1304----------------------------------------
130508 April 2015. Summary of changes for version 20150408:
1306
1307
13081) ACPICA kernel-resident subsystem:
1309
1310Permanently set the return value for the _REV predefined name. It now
1311returns 2 (was 5). This matches other ACPI implementations. _REV will be
1312deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
1313for ACPI 2.0 and later. It should never be used to differentiate or
1314identify operating systems.
1315
1316Added the "Windows 2015" string to the _OSI support. ACPICA will now
1317return TRUE to a query with this string.
1318
1319Fixed several issues with the local version of the printf function.
1320
1321Added the C99 compiler option (-std=c99) to the Unix makefiles.
1322
1323  Current Release:
1324    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
1325    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
1326  Previous Release:
1327    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1328    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1329
1330
13312) iASL Compiler/Disassembler and Tools:
1332
1333iASL: Implemented an enhancement to the constant folding feature to
1334transform the parse tree to a simple Store operation whenever possible:
1335    Add (2, 3, X) ==> is converted to: Store (5, X)
1336    X = 2 + 3     ==> is converted to: Store (5, X)
1337
1338Updated support for the SLIC table (Software Licensing Description Table)
1339in both the Data Table compiler and the disassembler. The SLIC table
1340support now conforms to "Microsoft Software Licensing Tables (SLIC and
1341MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
1342following the ACPI header is now defined to be "Proprietary Data", and as
1343such, can only be entered or displayed as a hex data block.
1344
1345Implemented full support for the MSDM table as described in the document
1346above. Note: The format of MSDM is similar to SLIC. Any MSDM data
1347following the ACPI header is defined to be "Proprietary Data", and can
1348only be entered or displayed as a hex data block.
1349
1350Implemented the -Pn option for the iASL Table Compiler (was only
1351implemented for the ASL compiler). This option disables the iASL
1352preprocessor.
1353
1354Disassembler: For disassembly of Data Tables, added a comment field
1355around the Ascii equivalent data that is emitted as part of the "Raw
1356Table Data" block. This prevents the iASL Preprocessor from possible
1357confusion if/when the table is compiled.
1358
1359Disassembler: Added an option (-df) to force the disassembler to assume
1360that the table being disassembled contains valid AML. This feature is
1361useful for disassembling AML files that contain ACPI signatures other
1362than DSDT or SSDT (such as OEMx or other signatures).
1363
1364Changes for the EFI version of the tools:
13651) Fixed a build error/issue
13662) Fixed a cast warning
1367
1368iASL: Fixed a path issue with the __FILE__ operator by making the
1369directory prefix optional within the internal SplitInputFilename
1370function.
1371
1372Debugger: Removed some unused global variables.
1373
1374Tests: Updated the makefile for proper generation of the AAPITS suite.
1375
1376
1377----------------------------------------
137804 February 2015. Summary of changes for version 20150204:
1379
1380ACPICA kernel-resident subsystem:
1381
1382Updated all ACPICA copyrights and signons to 2014. Added the 2014
1383copyright to all module headers and signons, including the standard Linux
1384header. This affects virtually every file in the ACPICA core subsystem,
1385iASL compiler, all ACPICA utilities, and the test suites.
1386
1387Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
1388A raw gpe handling mechanism was created to allow better handling of GPE
1389storms that aren't easily managed by the normal handler. The raw handler
1390allows disabling/renabling of the the GPE so that interrupt storms can be
1391avoided in cases where events cannot be timely serviced. In this
1392scenario, handlers should use the AcpiSetGpe() API to disable/enable the
1393GPE. This API will leave the reference counts undisturbed, thereby
1394preventing unintentional clearing of the GPE when the intent in only to
1395temporarily disable it. Raw handlers allow enabling and disabling of a
1396GPE by removing GPE register locking. As such, raw handlers much provide
1397their own locks while using GPE API's to protect access to GPE data
1398structures.
1399Lv Zheng
1400
1401Events: Always modify GPE registers under the GPE lock.
1402Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
1403values. Reported as bug by joe.liu@apple.com.
1404
1405Unix makefiles: Separate option to disable optimizations and
1406_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
1407NOOPT disable option and creates a separate flag (NOFORTIFY) for this
1408purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
1409errors when building ACPICA. This allows disabling the option without
1410also having to disable optimazations.
1411David Box
1412
1413  Current Release:
1414    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1415    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
1416
1417--
1418--------------------------------------
141907 November 2014. Summary of changes for version 20141107:
1420
1421This release is available at https://acpica.org/downloads
1422
1423This release introduces and implements language extensions to ASL that
1424provide support for symbolic ("C-style") operators and expressions. These
1425language extensions are known collectively as ASL+.
1426
1427
14281) iASL Compiler/Disassembler and Tools:
1429
1430Disassembler: Fixed a problem with disassembly of the UartSerialBus
1431macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
1432Box.
1433
1434Disassembler: Fixed the Unicode macro support to add escape sequences.
1435All non-printable ASCII values are emitted as escape sequences, as well
1436as the standard escapes for quote and backslash. Ensures that the
1437disassembled macro can be correctly recompiled.
1438
1439iASL: Added Printf/Fprintf macros for formatted output. These macros are
1440translated to existing AML Concatenate and Store operations. Printf
1441writes to the ASL Debug object. Fprintf allows the specification of an
1442ASL name as the target. Only a single format specifier is required, %o,
1443since the AML interpreter dynamically converts objects to the required
1444type. David E. Box.
1445
1446    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
1447                 (Concatenate (Concatenate (Concatenate ("", Arg0),
1448                 ": Unexpected value for "), Arg1), ", "), Arg2),
1449                 " at line "), Arg3), Debug)
1450
1451    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
1452                 Arg0, Arg1, Arg2, Arg3)
1453
1454    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
1455                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
1456
1457    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
1458
1459iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
1460ASL parse tree before the AML code is generated. This allows blocks of
1461ASL code to be removed in order to help locate and identify problem
1462devices and/or code. David E. Box.
1463
1464AcpiExec: Added support (-fi) for an optional namespace object
1465initialization file. This file specifies initial values for namespace
1466objects as necessary for debugging and testing different ASL code paths
1467that may be taken as a result of BIOS options.
1468
1469
14702) Overview of symbolic operator support for ASL (ASL+)
1471-------------------------------------------------------
1472
1473As an extension to the ASL language, iASL implements support for symbolic
1474(C-style) operators for math and logical expressions. This can greatly
1475simplify ASL code as well as improve both readability and
1476maintainability. These language extensions can exist concurrently with
1477all legacy ASL code and expressions.
1478
1479The symbolic extensions are 100% compatible with existing AML
1480interpreters, since no new AML opcodes are created. To implement the
1481extensions, the iASL compiler transforms the symbolic expressions into
1482the legacy ASL/AML equivalents at compile time.
1483
1484Full symbolic expressions are supported, along with the standard C
1485precedence and associativity rules.
1486
1487Full disassembler support for the symbolic expressions is provided, and
1488creates an automatic migration path for existing ASL code to ASL+ code
1489via the disassembly process. By default, the disassembler now emits ASL+
1490code with symbolic expressions. An option (-dl) is provided to force the
1491disassembler to emit legacy ASL code if desired.
1492
1493Below is the complete list of the currently supported symbolic operators
1494with examples. See the iASL User Guide for additional information.
1495
1496
1497ASL+ Syntax      Legacy ASL Equivalent
1498-----------      ---------------------
1499
1500    // Math operators
1501
1502Z = X + Y        Add (X, Y, Z)
1503Z = X - Y        Subtract (X, Y, Z)
1504Z = X * Y        Multiply (X, Y, Z)
1505Z = X / Y        Divide (X, Y, , Z)
1506Z = X % Y        Mod (X, Y, Z)
1507Z = X << Y       ShiftLeft (X, Y, Z)
1508Z = X >> Y       ShiftRight (X, Y, Z)
1509Z = X & Y        And (X, Y, Z)
1510Z = X | Y        Or (X, Y, Z)
1511Z = X ^ Y        Xor (X, Y, Z)
1512Z = ~X           Not (X, Z)
1513X++              Increment (X)
1514X--              Decrement (X)
1515
1516    // Logical operators
1517
1518(X == Y)         LEqual (X, Y)
1519(X != Y)         LNotEqual (X, Y)
1520(X < Y)          LLess (X, Y)
1521(X > Y)          LGreater (X, Y)
1522(X <= Y)         LLessEqual (X, Y)
1523(X >= Y)         LGreaterEqual (X, Y)
1524(X && Y)         LAnd (X, Y)
1525(X || Y)         LOr (X, Y)
1526(!X)             LNot (X)
1527
1528    // Assignment and compound assignment operations
1529
1530X = Y           Store (Y, X)
1531X += Y          Add (X, Y, X)
1532X -= Y          Subtract (X, Y, X)
1533X *= Y          Multiply (X, Y, X)
1534X /= Y          Divide (X, Y, , X)
1535X %= Y          Mod (X, Y, X)
1536X <<= Y         ShiftLeft (X, Y, X)
1537X >>= Y         ShiftRight (X, Y, X)
1538X &= Y          And (X, Y, X)
1539X |= Y          Or (X, Y, X)
1540X ^= Y          Xor (X, Y, X)
1541
1542
15433) ASL+ Examples:
1544-----------------
1545
1546Legacy ASL:
1547        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
1548            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
15490x03FB),
1550            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
1551        {
1552            And (MEMB, 0xFFFFFFF0, SRMB)
1553            Store (MEMB, Local2)
1554            Store (PDBM, Local1)
1555            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
1556            Store (SRMB, MEMB)
1557            Or (PDBM, 0x02, PDBM)
1558        }
1559
1560ASL+ version:
1561        If (((R510 & 0x03FB) == 0x02E0) ||
1562            ((R520 & 0x03FB) == 0x02E0) ||
1563            ((R530 & 0x03FB) == 0x02E0) ||
1564            ((R540 & 0x03FB) == 0x02E0))
1565        {
1566            SRMB = (MEMB & 0xFFFFFFF0)
1567            Local2 = MEMB
1568            Local1 = PDBM
1569            PDBM &= 0xFFFFFFFFFFFFFFF9
1570            MEMB = SRMB
1571            PDBM |= 0x02
1572        }
1573
1574Legacy ASL:
1575        Store (0x1234, Local1)
1576        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
1577        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
1578        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
1579        Store (Index (PKG1, 0x03), Local6)
1580        Store (Add (Local3, Local2), Debug)
1581        Add (Local1, 0x0F, Local2)
1582        Add (Local1, Multiply (Local2, Local3), Local2)
1583        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
1584
1585ASL+ version:
1586        Local1 = 0x1234
1587        Local3 = (((Local1 + TEST) + 0x20) * Local2)
1588        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
1589        Local3 = (Local1 + (TEST + (0x20 * Local2)))
1590        Local6 = Index (PKG1, 0x03)
1591        Debug = (Local3 + Local2)
1592        Local2 = (Local1 + 0x0F)
1593        Local2 = (Local1 + (Local2 * Local3))
1594        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
1595
1596
1597----------------------------------------
159826 September 2014. Summary of changes for version 20140926:
1599
16001) ACPICA kernel-resident subsystem:
1601
1602Updated the GPIO operation region handler interface (GeneralPurposeIo).
1603In order to support GPIO Connection objects with multiple pins, along
1604with the related Field objects, the following changes to the interface
1605have been made: The Address is now defined to be the offset in bits of
1606the field unit from the previous invocation of a Connection. It can be
1607viewed as a "Pin Number Index" into the connection resource descriptor.
1608The BitWidth is the exact bit width of the field. It is usually one bit,
1609but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
1610additional information and examples.
1611
1612GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
1613corresponding _Lxx/_Exx methods are disabled (they may have been enabled
1614by the firmware), so that they cannot fire until they are enabled via
1615AcpiUpdateAllGpes. Rafael J. Wysocki.
1616
1617Added a new return flag for the Event/GPE status interfaces --
1618AcpiGetEventStatus and AcpiGetGpeStatus. The new
1619ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
1620GPE currently has a handler associated with it, and can thus actually
1621affect the system. Lv Zheng.
1622
1623Example Code and Data Size: These are the sizes for the OS-independent
1624acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1625debug version of the code includes the debug output trace mechanism and
1626has a much larger code and data size.
1627
1628  Current Release:
1629    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
1630    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
1631  Previous Release:
1632    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1633    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1634
16352) iASL Compiler/Disassembler and Tools:
1636
1637iASL: Fixed a memory allocation/free regression introduced in 20140828
1638that could cause the compiler to crash. This was introduced inadvertently
1639during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
16401113.
1641
1642iASL: Removed two error messages that have been found to create false
1643positives, until they can be fixed and fully validated (ACPICA BZ 1112):
16441) Illegal forward reference within a method
16452) Illegal reference across two methods
1646
1647iASL: Implemented a new option (-lm) to create a hardware mapping file
1648that summarizes all GPIO, I2C, SPI, and UART connections. This option
1649works for both the compiler and disassembler. See the iASL compiler user
1650guide for additional information and examples (section 6.4.6).
1651
1652AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
1653version 2. This corrects the AE_BAD_HEADER exception seen on systems with
1654a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
1655
1656AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
1657unless STDIN is actually a terminal. Assists with batch-mode processing.
1658ACPICA BZ 1114.
1659
1660Disassembler/AcpiHelp: Added another large group of recognized _HID
1661values.
1662
1663
1664----------------------------------------
166528 August 2014. Summary of changes for version 20140828:
1666
16671) ACPICA kernel-resident subsystem:
1668
1669Fixed a problem related to the internal use of the Timer() operator where
1670a 64-bit divide could cause an attempted link to a double-precision math
1671library. This divide is not actually necessary, so the code was
1672restructured to eliminate it. Lv Zheng.
1673
1674ACPI 5.1: Added support for the runtime validation of the _DSD package
1675(similar to the iASL support).
1676
1677ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
1678SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
1679
1680Example Code and Data Size: These are the sizes for the OS-independent
1681acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1682debug version of the code includes the debug output trace mechanism and
1683has a much larger code and data size.
1684
1685  Current Release:
1686    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1687    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1688  Previous Release:
1689    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
1690    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
1691
16922) iASL Compiler/Disassembler and Tools:
1693
1694AcpiExec: Fixed a problem on unix systems where the original terminal
1695state was not always properly restored upon exit. Seen when using the -v
1696option. ACPICA BZ 1104.
1697
1698iASL: Fixed a problem with the validation of the ranges/length within the
1699Memory24 resource descriptor. There was a boundary condition when the
1700range was equal to the (length -1) caused by the fact that these values
1701are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
1702
1703Disassembler: Fixed a problem with the GpioInt descriptor interrupt
1704polarity
1705flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
1706is
1707now supported properly.
1708
1709ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
1710in the disassembler, data table compiler, and table template generator.
1711
1712iASL: Added a requirement for Device() objects that one of either a _HID
1713or _ADR must exist within the scope of a Device, as per the ACPI
1714specification. Remove a similar requirement that was incorrectly in place
1715for the _DSD object.
1716
1717iASL: Added error detection for illegal named references within control
1718methods that would cause runtime failures. Now trapped as errors are: 1)
1719References to objects within a non-parent control method. 2) Forward
1720references (within a method) -- for control methods, AML interpreters use
1721a one-pass parse of control methods. ACPICA BZ 1008.
1722
1723iASL: Added error checking for dependencies related to the _PSx power
1724methods. ACPICA BZ 1029.
17251) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
1726_PS3.
17272) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
1728scope.
1729
1730iASL and table compiler: Cleanup miscellaneous memory leaks by fully
1731deploying the existing object and string caches and adding new caches for
1732the table compiler.
1733
1734iASL: Split the huge parser source file into multiple subfiles to improve
1735manageability. Generation now requires the M4 macro preprocessor, which
1736is part of the Bison distribution on both unix and windows platforms.
1737
1738AcpiSrc: Fixed and removed all extraneous warnings generated during
1739entire ACPICA source code scan and/or conversion.
1740
1741
1742----------------------------------------
1743
174424 July 2014. Summary of changes for version 20140724:
1745
1746The ACPI 5.1 specification has been released and is available at:
1747http://uefi.org/specs/access
1748
1749
17500) ACPI 5.1 support in ACPICA:
1751
1752ACPI 5.1 is fully supported in ACPICA as of this release.
1753
1754New predefined names. Support includes iASL and runtime ACPICA
1755validation.
1756    _CCA (Cache Coherency Attribute).
1757    _DSD (Device-Specific Data). David Box.
1758
1759Modifications to existing ACPI tables. Support includes headers, iASL
1760Data Table compiler, disassembler, and the template generator.
1761    FADT - New fields and flags. Graeme Gregory.
1762    GTDT - One new subtable and new fields. Tomasz Nowicki.
1763    MADT - Two new subtables. Tomasz Nowicki.
1764    PCCT - One new subtable.
1765
1766Miscellaneous.
1767    New notification type for System Resource Affinity change events.
1768
1769
17701) ACPICA kernel-resident subsystem:
1771
1772Fixed a regression introduced in 20140627 where a fault can happen during
1773the deletion of Alias AML namespace objects. The problem affected both
1774the core ACPICA and the ACPICA tools including iASL and AcpiExec.
1775
1776Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
1777simple mechanism to enable wake GPEs that have no associated handler or
1778control method. Rafael Wysocki.
1779
1780Updated the AcpiEnableGpe interface to disallow the enable if there is no
1781handler or control method associated with the particular GPE. This will
1782help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
1783
1784Updated GPE handling and dispatch by disabling the GPE before clearing
1785the status bit for edge-triggered GPEs. Lv Zheng.
1786
1787Added Timer() support to the AML Debug object. The current timer value is
1788now displayed with each invocation of (Store to) the debug object to
1789enable simple generation of execution times for AML code (method
1790execution for example.) ACPICA BZ 1093.
1791
1792Example Code and Data Size: These are the sizes for the OS-independent
1793acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1794debug version of the code includes the debug output trace mechanism and
1795has a much larger code and data size.
1796
1797  Current Release:
1798    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
1799    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
1800  Previous Release:
1801    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
1802    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
1803
1804
18052) iASL Compiler/Disassembler and Tools:
1806
1807Fixed an issue with the recently added local printf implementation,
1808concerning width/precision specifiers that could cause incorrect output.
1809Lv Zheng. ACPICA BZ 1094.
1810
1811Disassembler: Added support to detect buffers that contain UUIDs and
1812disassemble them to an invocation of the ToUUID operator. Also emit
1813commented descriptions of known ACPI-related UUIDs.
1814
1815AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
1816-u. Adds three new files.
1817
1818iASL: Update table compiler and disassembler for DMAR table changes that
1819were introduced in September 2013. With assistance by David Woodhouse.
1820
1821----------------------------------------
182227 June 2014. Summary of changes for version 20140627:
1823
18241) ACPICA kernel-resident subsystem:
1825
1826Formatted Output: Implemented local versions of standard formatted output
1827utilities such as printf, etc. Over time, it has been discovered that
1828there are in fact many portability issues with printf, and the addition
1829of this feature will fix/prevent these issues once and for all. Some
1830known issues are summarized below:
1831
18321) Output of 64-bit values is not portable. For example, UINT64 is %ull
1833for the Linux kernel and is %uI64 for some MSVC versions.
18342) Invoking printf consistently in a manner that is portable across both
183532-bit and 64-bit platforms is difficult at best in many situations.
18363) The output format for pointers varies from system to system (leading
1837zeros especially), and leads to inconsistent output from ACPICA across
1838platforms.
18394) Certain platform-specific printf formats may conflict with ACPICA use.
18405) If there is no local C library available, ACPICA now has local support
1841for printf.
1842
1843-- To address these printf issues in a complete manner, ACPICA now
1844directly implements a small subset of printf format specifiers, only
1845those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
1846
1847Implemented support for ACPICA generation within the EFI environment.
1848Initially, the AcpiDump utility is supported in the UEFI shell
1849environment. Lv Zheng.
1850
1851Added a new external interface, AcpiLogError, to improve ACPICA
1852portability. This allows the host to redirect error messages from the
1853ACPICA utilities. Lv Zheng.
1854
1855Added and deployed new OSL file I/O interfaces to improve ACPICA
1856portability:
1857  AcpiOsOpenFile
1858  AcpiOsCloseFile
1859  AcpiOsReadFile
1860  AcpiOsWriteFile
1861  AcpiOsGetFileOffset
1862  AcpiOsSetFileOffset
1863There are C library implementations of these functions in the new file
1864service_layers/oslibcfs.c -- however, the functions can be implemented by
1865the local host in any way necessary. Lv Zheng.
1866
1867Implemented a mechanism to disable/enable ACPI table checksum validation
1868at runtime. This can be useful when loading tables very early during OS
1869initialization when it may not be possible to map the entire table in
1870order to compute the checksum. Lv Zheng.
1871
1872Fixed a buffer allocation issue for the Generic Serial Bus support.
1873Originally, a fixed buffer length was used. This change allows for
1874variable-length buffers based upon the protocol indicated by the field
1875access attributes. Reported by Lan Tianyu. Lv Zheng.
1876
1877Fixed a problem where an object detached from a namespace node was not
1878properly terminated/cleared and could cause a circular list problem if
1879reattached. ACPICA BZ 1063. David Box.
1880
1881Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
1882
1883Fixed a possible memory leak in an error return path within the function
1884AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
1885
1886Example Code and Data Size: These are the sizes for the OS-independent
1887acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1888debug version of the code includes the debug output trace mechanism and
1889has a much larger code and data size.
1890
1891  Current Release:
1892    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
1893    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
1894  Previous Release:
1895    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
1896    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
1897
1898
18992) iASL Compiler/Disassembler and Tools:
1900
1901Disassembler: Add dump of ASCII equivalent text within a comment at the
1902end of each line of the output for the Buffer() ASL operator.
1903
1904AcpiDump: Miscellaneous changes:
1905  Fixed repetitive table dump in -n mode.
1906  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
1907the ACPI 2.0 GUID fails.
1908
1909iASL: Fixed a problem where the compiler could fault if incorrectly given
1910an acpidump output file as input. ACPICA BZ 1088. David Box.
1911
1912AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
1913they are invoked without any arguments.
1914
1915Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
19161086. Colin Ian King.
1917
1918Disassembler: Cleaned up a block of code that extracts a parent Op
1919object. Added a comment that explains that the parent is guaranteed to be
1920valid in this case. ACPICA BZ 1069.
1921
1922
1923----------------------------------------
192424 April 2014. Summary of changes for version 20140424:
1925
19261) ACPICA kernel-resident subsystem:
1927
1928Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
1929Some of these tables are known to contain a trailing NULL entry. Lv
1930Zheng.
1931
1932Removed an extraneous error message for the case where there are a large
1933number of system GPEs (> 124). This was the "32-bit FADT register is too
1934long to convert to GAS struct" message, which is irrelevant for GPEs
1935since the GPEx_BLK_LEN fields of the FADT are always used instead of the
1936(limited capacity) GAS bit length. Also, several changes to ensure proper
1937support for GPE numbers > 255, where some "GPE number" fields were 8-bits
1938internally.
1939
1940Implemented and deployed additional configuration support for the public
1941ACPICA external interfaces. Entire classes of interfaces can now be
1942easily modified or configured out, replaced by stubbed inline functions
1943by default. Lv Zheng.
1944
1945Moved all public ACPICA runtime configuration globals to the public
1946ACPICA external interface file for convenience. Also, removed some
1947obsolete/unused globals. See the file acpixf.h. Lv Zheng.
1948
1949Documentation: Added a new section to the ACPICA reference describing the
1950maximum number of GPEs that can be supported by the FADT-defined GPEs in
1951block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
1952reference.
1953
1954Example Code and Data Size: These are the sizes for the OS-independent
1955acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1956debug version of the code includes the debug output trace mechanism and
1957has a much larger code and data size.
1958
1959  Current Release:
1960    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
1961    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
1962  Previous Release:
1963    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
1964    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
1965
1966
19672) iASL Compiler/Disassembler and Tools:
1968
1969iASL and disassembler: Add full support for the LPIT table (Low Power
1970Idle Table). Includes support in the disassembler, data table compiler,
1971and template generator.
1972
1973AcpiDump utility:
19741) Add option to force the use of the RSDT (over the XSDT).
19752) Improve validation of the RSDP signature (use 8 chars instead of 4).
1976
1977iASL: Add check for predefined packages that are too large.  For
1978predefined names that contain subpackages, check if each subpackage is
1979too large. (Check for too small already exists.)
1980
1981Debugger: Updated the GPE command (which simulates a GPE by executing the
1982GPE code paths in ACPICA). The GPE device is now optional, and defaults
1983to the GPE 0/1 FADT-defined blocks.
1984
1985Unix application OSL: Update line-editing support. Add additional error
1986checking and take care not to reset terminal attributes on exit if they
1987were never set. This should help guarantee that the terminal is always
1988left in the previous state on program exit.
1989
1990
1991----------------------------------------
199225 March 2014. Summary of changes for version 20140325:
1993
19941) ACPICA kernel-resident subsystem:
1995
1996Updated the auto-serialize feature for control methods. This feature
1997automatically serializes all methods that create named objects in order
1998to prevent runtime errors. The update adds support to ignore the
1999currently executing AML SyncLevel when invoking such a method, in order
2000to prevent disruption of any existing SyncLevel priorities that may exist
2001in the AML code. Although the use of SyncLevels is relatively rare, this
2002change fixes a regression where an AE_AML_MUTEX_ORDER exception can
2003appear on some machines starting with the 20140214 release.
2004
2005Added a new external interface to allow the host to install ACPI tables
2006very early, before the namespace is even created. AcpiInstallTable gives
2007the host additional flexibility for ACPI table management. Tables can be
2008installed directly by the host as if they had originally appeared in the
2009XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
2010(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
2011with additional internal restructuring and cleanup. See the ACPICA
2012Reference for interface details. Lv Zheng.
2013
2014Added validation of the checksum for all incoming dynamically loaded
2015tables (via external interfaces or via AML Load/LoadTable operators). Lv
2016Zheng.
2017
2018Updated the use of the AcpiOsWaitEventsComplete interface during Notify
2019and GPE handler removal. Restructured calls to eliminate possible race
2020conditions. Lv Zheng.
2021
2022Added a warning for the use/execution of the ASL/AML Unload (table)
2023operator. This will help detect and identify machines that use this
2024operator if and when it is ever used. This operator has never been seen
2025in the field and the usage model and possible side-effects of the drastic
2026runtime action of a full table removal are unknown.
2027
2028Reverted the use of #pragma push/pop which was introduced in the 20140214
2029release. It appears that push and pop are not implemented by enough
2030compilers to make the use of this feature feasible for ACPICA at this
2031time. However, these operators may be deployed in a future ACPICA
2032release.
2033
2034Added the missing EXPORT_SYMBOL macros for the install and remove SCI
2035handler interfaces.
2036
2037Source code generation:
20381) Disabled the use of the "strchr" macro for the gcc-specific
2039generation. For some versions of gcc, this macro can periodically expose
2040a compiler bug which in turn causes compile-time error(s).
20412) Added support for PPC64 compilation. Colin Ian King.
2042
2043Example Code and Data Size: These are the sizes for the OS-independent
2044acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2045debug version of the code includes the debug output trace mechanism and
2046has a much larger code and data size.
2047
2048  Current Release:
2049    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
2050    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
2051  Previous Release:
2052    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
2053    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
2054
2055
20562) iASL Compiler/Disassembler and Tools:
2057
2058Disassembler: Added several new features to improve the readability of
2059the resulting ASL code. Extra information is emitted within comment
2060fields in the ASL code:
20611) Known _HID/_CID values are decoded to descriptive text.
20622) Standard values for the Notify() operator are decoded to descriptive
2063text.
20643) Target operands are expanded to full pathnames (in a comment) when
2065possible.
2066
2067Disassembler: Miscellaneous updates for extern() handling:
20681) Abort compiler if file specified by -fe option does not exist.
20692) Silence unnecessary warnings about argument count mismatches.
20703) Update warning messages concerning unresolved method externals.
20714) Emit "UnknownObj" keyword for externals whose type cannot be
2072determined.
2073
2074AcpiHelp utility:
20751) Added the -a option to display both the ASL syntax and the AML
2076encoding for an input ASL operator. This effectively displays all known
2077information about an ASL operator with one AcpiHelp invocation.
20782) Added substring match support (similar to a wildcard) for the -i
2079(_HID/PNP IDs) option.
2080
2081iASL/Disassembler: Since this tool does not yet support execution on big-
2082endian machines, added detection of endianness and an error message if
2083execution is attempted on big-endian. Support for big-endian within iASL
2084is a feature that is on the ACPICA to-be-done list.
2085
2086AcpiBin utility:
20871) Remove option to extract binary files from an acpidump; this function
2088is made obsolete by the AcpiXtract utility.
20892) General cleanup of open files and allocated buffers.
2090
2091
2092----------------------------------------
209314 February 2014. Summary of changes for version 20140214:
2094
20951) ACPICA kernel-resident subsystem:
2096
2097Implemented a new mechanism to proactively prevent problems with ill-
2098behaved reentrant control methods that create named ACPI objects. This
2099behavior is illegal as per the ACPI specification, but is nonetheless
2100frequently seen in the field. Previously, this could lead to an
2101AE_ALREADY_EXISTS exception if the method was actually entered by more
2102than one thread. This new mechanism detects such methods at table load
2103time and marks them "serialized" to prevent reentrancy. A new global
2104option, AcpiGbl_AutoSerializeMethods, has been added to disable this
2105feature if desired. This mechanism and global option obsoletes and
2106supersedes the previous AcpiGbl_SerializeAllMethods option.
2107
2108Added the "Windows 2013" string to the _OSI support. ACPICA will now
2109respond TRUE to _OSI queries with this string. It is the stated policy of
2110ACPICA to add new strings to the _OSI support as soon as possible after
2111they are defined. See the full ACPICA _OSI policy which has been added to
2112the utilities/utosi.c file.
2113
2114Hardened/updated the _PRT return value auto-repair code:
21151) Do not abort the repair on a single subpackage failure, continue to
2116check all subpackages.
21172) Add check for the minimum subpackage length (4).
21183) Properly handle extraneous NULL package elements.
2119
2120Added support to avoid the possibility of infinite loops when traversing
2121object linked lists. Never allow an infinite loop, even in the face of
2122corrupted object lists.
2123
2124ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
2125pack(pop) directives to ensure that the ACPICA headers are independent of
2126compiler settings or other host headers.
2127
2128Example Code and Data Size: These are the sizes for the OS-independent
2129acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2130debug version of the code includes the debug output trace mechanism and
2131has a much larger code and data size.
2132
2133  Current Release:
2134    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
2135    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
2136  Previous Release:
2137    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
2138    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
2139
2140
21412) iASL Compiler/Disassembler and Tools:
2142
2143iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
2144first reserved field was incorrectly forced to have a value of zero. This
2145change correctly forces the field to have a value of one. ACPICA BZ 1081.
2146
2147Debugger: Added missing support for the "Extra" and "Data" subobjects
2148when displaying object data.
2149
2150Debugger: Added support to display entire object linked lists when
2151displaying object data.
2152
2153iASL: Removed the obsolete -g option to obtain ACPI tables from the
2154Windows registry. This feature has been superseded by the acpidump
2155utility.
2156
2157
2158----------------------------------------
215914 January 2014. Summary of changes for version 20140114:
2160
21611) ACPICA kernel-resident subsystem:
2162
2163Updated all ACPICA copyrights and signons to 2014. Added the 2014
2164copyright to all module headers and signons, including the standard Linux
2165header. This affects virtually every file in the ACPICA core subsystem,
2166iASL compiler, all ACPICA utilities, and the test suites.
2167
2168Improved parameter validation for AcpiInstallGpeBlock. Added the
2169following checks:
21701) The incoming device handle refers to type ACPI_TYPE_DEVICE.
21712) There is not already a GPE block attached to the device.
2172Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
2173device.
2174
2175Correctly support "references" in the ACPI_OBJECT. This change fixes the
2176support to allow references (namespace nodes) to be passed as arguments
2177to control methods via the evaluate object interface. This is probably
2178most useful for testing purposes, however.
2179
2180Improved support for 32/64 bit physical addresses in printf()-like
2181output. This change improves the support for physical addresses in printf
2182debug statements and other output on both 32-bit and 64-bit hosts. It
2183consistently outputs the appropriate number of bytes for each host. The
2184%p specifier is unsatisfactory since it does not emit uniform output on
2185all hosts/clib implementations (on some, leading zeros are not supported,
2186leading to difficult-to-read output).
2187
2188Example Code and Data Size: These are the sizes for the OS-independent
2189acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2190debug version of the code includes the debug output trace mechanism and
2191has a much larger code and data size.
2192
2193  Current Release:
2194    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
2195    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
2196  Previous Release:
2197    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
2198    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
2199
2200
22012) iASL Compiler/Disassembler and Tools:
2202
2203iASL: Fix a possible fault when using the Connection() operator. Fixes a
2204problem if the parent Field definition for the Connection operator refers
2205to an operation region that does not exist. ACPICA BZ 1064.
2206
2207AcpiExec: Load of local test tables is now optional. The utility has the
2208capability to load some various tables to test features of ACPICA.
2209However, there are enough of them that the output of the utility became
2210confusing. With this change, only the required local tables are displayed
2211(RSDP, XSDT, etc.) along with the actual tables loaded via the command
2212line specification. This makes the default output simler and easier to
2213understand. The -el command line option restores the original behavior
2214for testing purposes.
2215
2216AcpiExec: Added support for overlapping operation regions. This change
2217expands the simulation of operation regions by supporting regions that
2218overlap within the given address space. Supports SystemMemory and
2219SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
2220
2221AcpiExec: Added region handler support for PCI_Config and EC spaces. This
2222allows AcpiExec to simulate these address spaces, similar to the current
2223support for SystemMemory and SystemIO.
2224
2225Debugger: Added new command to read/write/compare all namespace objects.
2226The command "test objects" will exercise the entire namespace by writing
2227new values to each data object, and ensuring that the write was
2228successful. The original value is then restored and verified.
2229
2230Debugger: Added the "test predefined" command. This change makes this
2231test public and puts it under the new "test" command. The test executes
2232each and every predefined name within the current namespace.
2233
2234
2235----------------------------------------
223618 December 2013. Summary of changes for version 20131218:
2237
2238Global note: The ACPI 5.0A specification was released this month. There
2239are no changes needed for ACPICA since this release of ACPI is an
2240errata/clarification release. The specification is available at
2241acpi.info.
2242
2243
22441) ACPICA kernel-resident subsystem:
2245
2246Added validation of the XSDT root table if it is present. Some older
2247platforms contain an XSDT that is ill-formed or otherwise invalid (such
2248as containing some or all entries that are NULL pointers). This change
2249adds a new function to validate the XSDT before actually using it. If the
2250XSDT is found to be invalid, ACPICA will now automatically fall back to
2251using the RSDT instead. Original implementation by Zhao Yakui. Ported to
2252ACPICA and enhanced by Lv Zheng and Bob Moore.
2253
2254Added a runtime option to ignore the XSDT and force the use of the RSDT.
2255This change adds a runtime option that will force ACPICA to use the RSDT
2256instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
2257requires that an XSDT be used instead of the RSDT, the XSDT has been
2258found to be corrupt or ill-formed on some machines. Lv Zheng.
2259
2260Added a runtime option to favor 32-bit FADT register addresses over the
226164-bit addresses. This change adds an option to favor 32-bit FADT
2262addresses when there is a conflict between the 32-bit and 64-bit versions
2263of the same register. The default behavior is to use the 64-bit version
2264in accordance with the ACPI specification. This can now be overridden via
2265the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
2266
2267During the change above, the internal "Convert FADT" and "Verify FADT"
2268functions have been merged to simplify the code, making it easier to
2269understand and maintain. ACPICA BZ 933.
2270
2271Improve exception reporting and handling for GPE block installation.
2272Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
2273status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
2274
2275Added helper macros to extract bus/segment numbers from the HEST table.
2276This change adds two macros to extract the encoded bus and segment
2277numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
2278Betty Dall <betty.dall@hp.com>
2279
2280Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
2281by ACPICA. It is not a public macro, so it should have no effect on
2282existing OSV code. Lv Zheng.
2283
2284Example Code and Data Size: These are the sizes for the OS-independent
2285acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2286debug version of the code includes the debug output trace mechanism and
2287has a much larger code and data size.
2288
2289  Current Release:
2290    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
2291    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
2292  Previous Release:
2293    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
2294    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
2295
2296
22972) iASL Compiler/Disassembler and Tools:
2298
2299Disassembler: Improved pathname support for emitted External()
2300statements. This change adds full pathname support for external names
2301that have been resolved internally by the inclusion of additional ACPI
2302tables (via the iASL -e option). Without this change, the disassembler
2303can emit multiple externals for the same object, or it become confused
2304when the Scope() operator is used on an external object. Overall, greatly
2305improves the ability to actually recompile the emitted ASL code when
2306objects a referenced across multiple ACPI tables. Reported by Michael
2307Tsirkin (mst@redhat.com).
2308
2309Tests/ASLTS: Updated functional control suite to execute with no errors.
2310David Box. Fixed several errors related to the testing of the interpreter
2311slack mode. Lv Zheng.
2312
2313iASL: Added support to detect names that are declared within a control
2314method, but are unused (these are temporary names that are only valid
2315during the time the method is executing). A remark is issued for these
2316cases. ACPICA BZ 1022.
2317
2318iASL: Added full support for the DBG2 table. Adds full disassembler,
2319table compiler, and template generator support for the DBG2 table (Debug
2320Port 2 table).
2321
2322iASL: Added full support for the PCCT table, update the table definition.
2323Updates the PCCT table definition in the actbl3.h header and adds table
2324compiler and template generator support.
2325
2326iASL: Added an option to emit only error messages (no warnings/remarks).
2327The -ve option will enable only error messages, warnings and remarks are
2328suppressed. This can simplify debugging when only the errors are
2329important, such as when an ACPI table is disassembled and there are many
2330warnings and remarks -- but only the actual errors are of real interest.
2331
2332Example ACPICA code (source/tools/examples): Updated the example code so
2333that it builds to an actual working program, not just example code. Added
2334ACPI tables and execution of an example control method in the DSDT. Added
2335makefile support for Unix generation.
2336
2337
2338----------------------------------------
233915 November 2013. Summary of changes for version 20131115:
2340
2341This release is available at https://acpica.org/downloads
2342
2343
23441) ACPICA kernel-resident subsystem:
2345
2346Resource Manager: Fixed loop termination for the "get AML length"
2347function. The loop previously had an error termination on a NULL resource
2348pointer, which can never happen since the loop simply increments a valid
2349resource pointer. This fix changes the loop to terminate with an error on
2350an invalid end-of-buffer condition. The problem can be seen as an
2351infinite loop by callers to AcpiSetCurrentResources with an invalid or
2352corrupted resource descriptor, or a resource descriptor that is missing
2353an END_TAG descriptor. Reported by Dan Carpenter
2354<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
2355
2356Table unload and ACPICA termination: Delete all attached data objects
2357during namespace node deletion. This fix updates namespace node deletion
2358to delete the entire list of attached objects (attached via
2359AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
23601024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
2361
2362ACPICA termination: Added support to delete all objects attached to the
2363root namespace node. This fix deletes any and all objects that have been
2364attached to the root node via AcpiAttachData. Previously, none of these
2365objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
2366
2367Debug output: Do not emit the function nesting level for the in-kernel
2368build. The nesting level is really only useful during a single-thread
2369execution. Therefore, only enable this output for the AcpiExec utility.
2370Also, only emit the thread ID when executing under AcpiExec (Context
2371switches are still always detected and a message is emitted). ACPICA BZ
2372972.
2373
2374Example Code and Data Size: These are the sizes for the OS-independent
2375acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2376debug version of the code includes the debug output trace mechanism and
2377has a much larger code and data size.
2378
2379  Current Release:
2380    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
2381    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
2382  Previous Release:
2383    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
2384    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
2385
2386
23872) iASL Compiler/Disassembler and Tools:
2388
2389AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
2390correct portable POSIX header for terminal control functions.
2391
2392Disassembler: Fixed control method invocation issues related to the use
2393of the CondRefOf() operator. The problem is seen in the disassembly where
2394control method invocations may not be disassembled properly if the
2395control method name has been used previously as an argument to CondRefOf.
2396The solution is to not attempt to emit an external declaration for the
2397CondRefOf target (it is not necessary in the first place). This prevents
2398disassembler object type confusion. ACPICA BZ 988.
2399
2400Unix Makefiles: Added an option to disable compiler optimizations and the
2401_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
2402with optimizations (reportedly, gcc 4.4 for example). This change adds a
2403command line option for make (NOOPT) that disables all compiler
2404optimizations and the _FORTIFY_SOURCE compiler flag. The default
2405optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
24061034. Lv Zheng, Bob Moore.
2407
2408Tests/ASLTS: Added options to specify individual test cases and modes.
2409This allows testers running aslts.sh to optionally specify individual
2410test modes and test cases. Also added an option to disable the forced
2411generation of the ACPICA tools from source if desired. Lv Zheng.
2412
2413----------------------------------------
241427 September 2013. Summary of changes for version 20130927:
2415
2416This release is available at https://acpica.org/downloads
2417
2418
24191) ACPICA kernel-resident subsystem:
2420
2421Fixed a problem with store operations to reference objects. This change
2422fixes a problem where a Store operation to an ArgX object that contained
2423a
2424reference to a field object did not complete the automatic dereference
2425and
2426then write to the actual field object. Instead, the object type of the
2427field object was inadvertently changed to match the type of the source
2428operand. The new behavior will actually write to the field object (buffer
2429field or field unit), thus matching the correct ACPI-defined behavior.
2430
2431Implemented support to allow the host to redefine individual OSL
2432prototypes. This change enables the host to redefine OSL prototypes found
2433in the acpiosxf.h file. This allows the host to implement OSL interfaces
2434with a macro or inlined function. Further, it allows the host to add any
2435additional required modifiers such as __iomem, __init, __exit, etc., as
2436necessary on a per-interface basis. Enables maximum flexibility for the
2437OSL interfaces. Lv Zheng.
2438
2439Hardcoded the access width for the FADT-defined reset register. The ACPI
2440specification requires the reset register width to be 8 bits. ACPICA now
2441hardcodes the width to 8 and ignores the FADT width value. This provides
2442compatibility with other ACPI implementations that have allowed BIOS code
2443with bad register width values to go unnoticed. Matthew Garett, Bob
2444Moore,
2445Lv Zheng.
2446
2447Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
2448used
2449in the OSL header (acpiosxf). The change modifies the position of this
2450macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
2451build issues if the OSL defines the implementation of the interface to be
2452an inline stub function. Lv Zheng.
2453
2454Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
2455initialization interfaces. This change adds a new macro for the main init
2456and terminate external interfaces in order to support hosts that require
2457additional or different processing for these functions. Changed from
2458ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
2459Zheng, Bob Moore.
2460
2461Cleaned up the memory allocation macros for configurability. In the
2462common
2463case, the ACPI_ALLOCATE and related macros now resolve directly to their
2464respective AcpiOs* OSL interfaces. Two options:
24651) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
2466default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
24672) For AcpiExec (and for debugging), the macros can optionally be
2468resolved
2469to the local ACPICA interfaces that track each allocation (local tracking
2470is used to immediately detect memory leaks).
2471Lv Zheng.
2472
2473Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
2474to predefine this macro to either TRUE or FALSE during the system build.
2475
2476Replaced __FUNCTION_ with __func__ in the gcc-specific header.
2477
2478Example Code and Data Size: These are the sizes for the OS-independent
2479acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2480debug version of the code includes the debug output trace mechanism and
2481has a much larger code and data size.
2482
2483  Current Release:
2484    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
2485    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
2486  Previous Release:
2487    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
2488    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2489
2490
24912) iASL Compiler/Disassembler and Tools:
2492
2493iASL: Implemented wildcard support for the -e option. This simplifies use
2494when there are many SSDTs that must be included to resolve external
2495method
2496declarations. ACPICA BZ 1041. Example:
2497    iasl -e ssdt*.dat -d dsdt.dat
2498
2499AcpiExec: Add history/line-editing for Unix/Linux systems. This change
2500adds a portable module that implements full history and limited line
2501editing for Unix and Linux systems. It does not use readline() due to
2502portability issues. Instead it uses the POSIX termio interface to put the
2503terminal in raw input mode so that the various special keys can be
2504trapped
2505(such as up/down-arrow for history support and left/right-arrow for line
2506editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
2507
2508AcpiXtract: Add support to handle (ignore) "empty" lines containing only
2509one or more spaces. This provides compatible with early or different
2510versions of the AcpiDump utility. ACPICA BZ 1044.
2511
2512AcpiDump: Do not ignore tables that contain only an ACPI table header.
2513Apparently, some BIOSs create SSDTs that contain an ACPI table header but
2514no other data. This change adds support to dump these tables. Any tables
2515shorter than the length of an ACPI table header remain in error (an error
2516message is emitted). Reported by Yi Li.
2517
2518Debugger: Echo actual command along with the "unknown command" message.
2519
2520----------------------------------------
252123 August 2013. Summary of changes for version 20130823:
2522
25231) ACPICA kernel-resident subsystem:
2524
2525Implemented support for host-installed System Control Interrupt (SCI)
2526handlers. Certain ACPI functionality requires the host to handle raw
2527SCIs. For example, the "SCI Doorbell" that is defined for memory power
2528state support requires the host device driver to handle SCIs to examine
2529if the doorbell has been activated. Multiple SCI handlers can be
2530installed to allow for future expansion. New external interfaces are
2531AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
2532details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
2533
2534Operation region support: Never locally free the handler "context"
2535pointer. This change removes some dangerous code that attempts to free
2536the handler context pointer in some (rare) circumstances. The owner of
2537the handler owns this pointer and the ACPICA code should never touch it.
2538Although not seen to be an issue in any kernel, it did show up as a
2539problem (fault) under AcpiExec. Also, set the internal storage field for
2540the context pointer to zero when the region is deactivated, simply for
2541sanity. David Box. ACPICA BZ 1039.
2542
2543AcpiRead: On error, do not modify the return value target location. If an
2544error happens in the middle of a split 32/32 64-bit I/O operation, do not
2545modify the target of the return value pointer. Makes the code consistent
2546with the rest of ACPICA. Bjorn Helgaas.
2547
2548Example Code and Data Size: These are the sizes for the OS-independent
2549acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2550debug version of the code includes the debug output trace mechanism and
2551has a much larger code and data size.
2552
2553  Current Release:
2554    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
2555    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2556  Previous Release:
2557    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
2558    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
2559
2560
25612) iASL Compiler/Disassembler and Tools:
2562
2563AcpiDump: Implemented several new features and fixed some problems:
25641) Added support to dump the RSDP, RSDT, and XSDT tables.
25652) Added support for multiple table instances (SSDT, UEFI).
25663) Added option to dump "customized" (overridden) tables (-c).
25674) Fixed a problem where some table filenames were improperly
2568constructed.
25695) Improved some error messages, removed some unnecessary messages.
2570
2571iASL: Implemented additional support for disassembly of ACPI tables that
2572contain invocations of external control methods. The -fe<file> option
2573allows the import of a file that specifies the external methods along
2574with the required number of arguments for each -- allowing for the
2575correct disassembly of the table. This is a workaround for a limitation
2576of AML code where the disassembler often cannot determine the number of
2577arguments required for an external control method and generates incorrect
2578ASL code. See the iASL reference for details. ACPICA BZ 1030.
2579
2580Debugger: Implemented a new command (paths) that displays the full
2581pathnames (namepaths) and object types of all objects in the namespace.
2582This is an alternative to the namespace command.
2583
2584Debugger: Implemented a new command (sci) that invokes the SCI dispatch
2585mechanism and any installed handlers.
2586
2587iASL: Fixed a possible segfault for "too many parent prefixes" condition.
2588This can occur if there are too many parent prefixes in a namepath (for
2589example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
2590
2591Application OSLs: Set the return value for the PCI read functions. These
2592functions simply return AE_OK, but should set the return value to zero
2593also. This change implements this. ACPICA BZ 1038.
2594
2595Debugger: Prevent possible command line buffer overflow. Increase the
2596size of a couple of the debugger line buffers, and ensure that overflow
2597cannot happen. ACPICA BZ 1037.
2598
2599iASL: Changed to abort immediately on serious errors during the parsing
2600phase. Due to the nature of ASL, there is no point in attempting to
2601compile these types of errors, and they typically end up causing a
2602cascade of hundreds of errors which obscure the original problem.
2603
2604----------------------------------------
260525 July 2013. Summary of changes for version 20130725:
2606
26071) ACPICA kernel-resident subsystem:
2608
2609Fixed a problem with the DerefOf operator where references to FieldUnits
2610and BufferFields incorrectly returned the parent object, not the actual
2611value of the object. After this change, a dereference of a FieldUnit
2612reference results in a read operation on the field to get the value, and
2613likewise, the appropriate BufferField value is extracted from the target
2614buffer.
2615
2616Fixed a problem where the _WAK method could cause a fault under these
2617circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
2618method returned no value. The problem is rarely seen because most kernels
2619run ACPICA in slack mode.
2620
2621For the DerefOf operator, a fatal error now results if an attempt is made
2622to dereference a reference (created by the Index operator) to a NULL
2623package element. Provides compatibility with other ACPI implementations,
2624and this behavior will be added to a future version of the ACPI
2625specification.
2626
2627The ACPI Power Management Timer (defined in the FADT) is now optional.
2628This provides compatibility with other ACPI implementations and will
2629appear in the next version of the ACPI specification. If there is no PM
2630Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
2631zero in the FADT indicates no PM timer.
2632
2633Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
2634allows the host to globally enable/disable all vendor strings, all
2635feature strings, or both. Intended to be primarily used for debugging
2636purposes only. Lv Zheng.
2637
2638Expose the collected _OSI data to the host via a global variable. This
2639data tracks the highest level vendor ID that has been invoked by the BIOS
2640so that the host (and potentially ACPICA itself) can change behaviors
2641based upon the age of the BIOS.
2642
2643Example Code and Data Size: These are the sizes for the OS-independent
2644acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2645debug version of the code includes the debug output trace mechanism and
2646has a much larger code and data size.
2647
2648  Current Release:
2649    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
2650    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2651  Previous Release:
2652    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
2653    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
2654
2655
26562) iASL Compiler/Disassembler and Tools:
2657
2658iASL: Created the following enhancements for the -so option (create
2659offset table):
26601)Add offsets for the last nameseg in each namepath for every supported
2661object type
26622)Add support for Processor, Device, Thermal Zone, and Scope objects
26633)Add the actual AML opcode for the parent object of every supported
2664object type
26654)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
2666
2667Disassembler: Emit all unresolved external symbols in a single block.
2668These are external references to control methods that could not be
2669resolved, and thus, the disassembler had to make a guess at the number of
2670arguments to parse.
2671
2672iASL: The argument to the -T option (create table template) is now
2673optional. If not specified, the default table is a DSDT, typically the
2674most common case.
2675
2676----------------------------------------
267726 June 2013. Summary of changes for version 20130626:
2678
26791) ACPICA kernel-resident subsystem:
2680
2681Fixed an issue with runtime repair of the _CST object. Null or invalid
2682elements were not always removed properly. Lv Zheng.
2683
2684Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
2685FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
2686the maximum number of GPEs is 1016. Use of multiple GPE block devices
2687makes the system-wide number of GPEs essentially unlimited.
2688
2689Example Code and Data Size: These are the sizes for the OS-independent
2690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2691debug version of the code includes the debug output trace mechanism and
2692has a much larger code and data size.
2693
2694  Current Release:
2695    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
2696    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
2697  Previous Release:
2698    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
2699    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
2700
2701
27022) iASL Compiler/Disassembler and Tools:
2703
2704Portable AcpiDump: Implemented full support for the Linux and FreeBSD
2705hosts. Now supports Linux, FreeBSD, and Windows.
2706
2707Disassembler: Added some missing types for the HEST and EINJ tables: "Set
2708Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
2709
2710iASL/Preprocessor: Implemented full support for nested
2711#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
2712
2713Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
2714max. The original purpose of this constraint was to limit the amount of
2715debug output. However, the string function in question (UtPrintString) is
2716now used for the disassembler also, where 256 bytes is insufficient.
2717Reported by RehabMan@GitHub.
2718
2719iASL/DataTables: Fixed some problems and issues with compilation of DMAR
2720tables. ACPICA BZ 999. Lv Zheng.
2721
2722iASL: Fixed a couple of error exit issues that could result in a "Could
2723not delete <file>" message during ASL compilation.
2724
2725AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
2726the actual signatures for these tables are "FACP" and "APIC",
2727respectively.
2728
2729AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
2730tables are allowed to have multiple instances.
2731
2732----------------------------------------
273317 May 2013. Summary of changes for version 20130517:
2734
27351) ACPICA kernel-resident subsystem:
2736
2737Fixed a regression introduced in version 20130328 for _INI methods. This
2738change fixes a problem introduced in 20130328 where _INI methods are no
2739longer executed properly because of a memory block that was not
2740initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
2741<tomasz.nowicki@linaro.org>.
2742
2743Fixed a possible problem with the new extended sleep registers in the
2744ACPI
27455.0 FADT. Do not use these registers (even if populated) unless the HW-
2746reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
27471020. Lv Zheng.
2748
2749Implemented return value repair code for _CST predefined objects: Sort
2750the
2751list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
2752
2753Implemented a debug-only option to disable loading of SSDTs from the
2754RSDT/XSDT during ACPICA initialization. This can be useful for debugging
2755ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
2756acglobal.h - ACPICA BZ 1005. Lv Zheng.
2757
2758Fixed some issues in the ACPICA initialization and termination code:
2759Tomasz Nowicki <tomasz.nowicki@linaro.org>
27601) Clear events initialized flag upon event component termination. ACPICA
2761BZ 1013.
27622) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
27633) Delete global lock pending lock during termination. ACPICA BZ 1012.
27644) Clear debug buffer global on termination to prevent possible multiple
2765delete. ACPICA BZ 1010.
2766
2767Standardized all switch() blocks across the entire source base. After
2768many
2769years, different formatting for switch() had crept in. This change makes
2770the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
2771
2772Split some files to enhance ACPICA modularity and configurability:
27731) Split buffer dump routines into utilities/utbuffer.c
27742) Split internal error message routines into utilities/uterror.c
27753) Split table print utilities into tables/tbprint.c
27764) Split iASL command-line option processing into asloptions.c
2777
2778Makefile enhancements:
27791) Support for all new files above.
27802) Abort make on errors from any subcomponent. Chao Guan.
27813) Add build support for Apple Mac OS X. Liang Qi.
2782
2783Example Code and Data Size: These are the sizes for the OS-independent
2784acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2785debug version of the code includes the debug output trace mechanism and
2786has a much larger code and data size.
2787
2788  Current Release:
2789    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
2790    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
2791  Previous Release:
2792    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
2793    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
2794
2795
27962) iASL Compiler/Disassembler and Tools:
2797
2798New utility: Implemented an easily portable version of the acpidump
2799utility to extract ACPI tables from the system (or a file) in an ASCII
2800hex
2801dump format. The top-level code implements the various command line
2802options, file I/O, and table dump routines. To port to a new host, only
2803three functions need to be implemented to get tables -- since this
2804functionality is OS-dependent. See the tools/acpidump/apmain.c module and
2805the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
28061) The Windows version obtains the ACPI tables from the Registry.
28072) The Linux version is under development.
28083) Other hosts - If an OS-dependent module is submitted, it will be
2809distributed with ACPICA.
2810
2811iASL: Fixed a regression for -D preprocessor option (define symbol). A
2812restructuring/change to the initialization sequence caused this option to
2813no longer work properly.
2814
2815iASL: Implemented a mechanism to disable specific warnings and remarks.
2816Adds a new command line option, "-vw <messageid> as well as "#pragma
2817disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
2818
2819iASL: Fix for too-strict package object validation. The package object
2820validation for return values from the predefined names is a bit too
2821strict, it does not allow names references within the package (which will
2822be resolved at runtime.) These types of references cannot be validated at
2823compile time. This change ignores named references within package objects
2824for names that return or define static packages.
2825
2826Debugger: Fixed the 80-character command line limitation for the History
2827command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
2828
2829iASL: Added control method and package support for the -so option
2830(generates AML offset table for BIOS support.)
2831
2832iASL: issue a remark if a non-serialized method creates named objects. If
2833a thread blocks within the method for any reason, and another thread
2834enters the method, the method will fail because an attempt will be made
2835to
2836create the same (named) object twice. In this case, issue a remark that
2837the method should be marked serialized. NOTE: may become a warning later.
2838ACPICA BZ 909.
2839
2840----------------------------------------
284118 April 2013. Summary of changes for version 20130418:
2842
28431) ACPICA kernel-resident subsystem:
2844
2845Fixed a possible buffer overrun during some rare but specific field unit
2846read operations. This overrun can only happen if the DSDT version is 1 --
2847meaning that all AML integers are 32 bits -- and the field length is
2848between 33 and 55 bits long. During the read, an internal buffer object
2849is
2850created for the field unit because the field is larger than an integer
2851(32
2852bits). However, in this case, the buffer will be incorrectly written
2853beyond the end because the buffer length is less than the internal
2854minimum
2855of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
2856long, but a full 8 bytes will be written.
2857
2858Updated the Embedded Controller "orphan" _REG method support. This refers
2859to _REG methods under the EC device that have no corresponding operation
2860region. This is allowed by the ACPI specification. This update removes a
2861dependency on the existence an ECDT table. It will execute an orphan _REG
2862method as long as the operation region handler for the EC is installed at
2863the EC device node and not the namespace root. Rui Zhang (original
2864update), Bob Moore (update/integrate).
2865
2866Implemented run-time argument typechecking for all predefined ACPI names
2867(_STA, _BIF, etc.) This change performs object typechecking on all
2868incoming arguments for all predefined names executed via
2869AcpiEvaluateObject. This ensures that ACPI-related device drivers are
2870passing correct object types as well as the correct number of arguments
2871(therefore identifying any issues immediately). Also, the ASL/namespace
2872definition of the predefined name is checked against the ACPI
2873specification for the proper argument count. Adds one new file,
2874nsarguments.c
2875
2876Changed an exception code for the ASL UnLoad() operator. Changed the
2877exception code for the case where the input DdbHandle is invalid, from
2878AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
2879
2880Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
2881global makefile. The use of this flag causes compiler errors on earlier
2882versions of GCC, so it has been removed for compatibility.
2883
2884Miscellaneous cleanup:
28851) Removed some unused/obsolete macros
28862) Fixed a possible memory leak in the _OSI support
28873) Removed an unused variable in the predefined name support
28884) Windows OSL: remove obsolete reference to a memory list field
2889
2890Example Code and Data Size: These are the sizes for the OS-independent
2891acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2892debug version of the code includes the debug output trace mechanism and
2893has a much larger code and data size.
2894
2895  Current Release:
2896    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
2897    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
2898  Previous Release:
2899    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
2900    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
2901
2902
29032) iASL Compiler/Disassembler and Tools:
2904
2905AcpiExec: Added installation of a handler for the SystemCMOS address
2906space. This prevents control method abort if a method accesses this
2907space.
2908
2909AcpiExec: Added support for multiple EC devices, and now install EC
2910operation region handler(s) at the actual EC device instead of the
2911namespace root. This reflects the typical behavior of host operating
2912systems.
2913
2914AcpiExec: Updated to ensure that all operation region handlers are
2915installed before the _REG methods are executed. This prevents a _REG
2916method from aborting if it accesses an address space has no handler.
2917AcpiExec installs a handler for every possible address space.
2918
2919Debugger: Enhanced the "handlers" command to display non-root handlers.
2920This change enhances the handlers command to display handlers associated
2921with individual devices throughout the namespace, in addition to the
2922currently supported display of handlers associated with the root
2923namespace
2924node.
2925
2926ASL Test Suite: Several test suite errors have been identified and
2927resolved, reducing the total error count during execution. Chao Guan.
2928
2929----------------------------------------
293028 March 2013. Summary of changes for version 20130328:
2931
29321) ACPICA kernel-resident subsystem:
2933
2934Fixed several possible race conditions with the internal object reference
2935counting mechanism. Some of the external ACPICA interfaces update object
2936reference counts without holding the interpreter or namespace lock. This
2937change adds a spinlock to protect reference count updates on the internal
2938ACPICA objects. Reported by and with assistance from Andriy Gapon
2939(avg@FreeBSD.org).
2940
2941FADT support: Removed an extraneous warning for very large GPE register
2942sets. This change removes a size mismatch warning if the legacy length
2943field for a GPE register set is larger than the 64-bit GAS structure can
2944accommodate. GPE register sets can be larger than the 255-bit width
2945limitation of the GAS structure. Linn Crosetto (linn@hp.com).
2946
2947_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
2948return from this interface. Handles a possible timeout case if
2949ACPI_WAIT_FOREVER is modified by the host to be a value less than
2950"forever". Jung-uk Kim.
2951
2952Predefined name support: Add allowed/required argument type information
2953to
2954the master predefined info table. This change adds the infrastructure to
2955enable typechecking on incoming arguments for all predefined
2956methods/objects. It does not actually contain the code that will fully
2957utilize this information, this is still under development. Also condenses
2958some duplicate code for the predefined names into a new module,
2959utilities/utpredef.c
2960
2961Example Code and Data Size: These are the sizes for the OS-independent
2962acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2963debug version of the code includes the debug output trace mechanism and
2964has a much larger code and data size.
2965
2966  Previous Release:
2967    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
2968    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
2969  Current Release:
2970    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
2971    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
2972
2973
29742) iASL Compiler/Disassembler and Tools:
2975
2976iASL: Implemented a new option to simplify the development of ACPI-
2977related
2978BIOS code. Adds support for a new "offset table" output file. The -so
2979option will create a C table containing the AML table offsets of various
2980named objects in the namespace so that BIOS code can modify them easily
2981at
2982boot time. This can simplify BIOS runtime code by eliminating expensive
2983searches for "magic values", enhancing boot times and adding greater
2984reliability. With assistance from Lee Hamel.
2985
2986iASL: Allow additional predefined names to return zero-length packages.
2987Now, all predefined names that are defined by the ACPI specification to
2988return a "variable-length package of packages" are allowed to return a
2989zero length top-level package. This allows the BIOS to tell the host that
2990the requested feature is not supported, and supports existing BIOS/ASL
2991code and practices.
2992
2993iASL: Changed the "result not used" warning to an error. This is the case
2994where an ASL operator is effectively a NOOP because the result of the
2995operation is not stored anywhere. For example:
2996    Add (4, Local0)
2997There is no target (missing 3rd argument), nor is the function return
2998value used. This is potentially a very serious problem -- since the code
2999was probably intended to do something, but for whatever reason, the value
3000was not stored. Therefore, this issue has been upgraded from a warning to
3001an error.
3002
3003AcpiHelp: Added allowable/required argument types to the predefined names
3004info display. This feature utilizes the recent update to the predefined
3005names table (above).
3006
3007----------------------------------------
300814 February 2013. Summary of changes for version 20130214:
3009
30101) ACPICA Kernel-resident Subsystem:
3011
3012Fixed a possible regression on some hosts: Reinstated the safe return
3013macros (return_ACPI_STATUS, etc.) that ensure that the argument is
3014evaluated only once. Although these macros are not needed for the ACPICA
3015code itself, they are often used by ACPI-related host device drivers
3016where
3017the safe feature may be necessary.
3018
3019Fixed several issues related to the ACPI 5.0 reduced hardware support
3020(SOC): Now ensure that if the platform declares itself as hardware-
3021reduced
3022via the FADT, the following functions become NOOPs (and always return
3023AE_OK) because ACPI is always enabled by definition on these machines:
3024  AcpiEnable
3025  AcpiDisable
3026  AcpiHwGetMode
3027  AcpiHwSetMode
3028
3029Dynamic Object Repair: Implemented additional runtime repairs for
3030predefined name return values. Both of these repairs can simplify code in
3031the related device drivers that invoke these methods:
30321) For the _STR and _MLS names, automatically repair/convert an ASCII
3033string to a Unicode buffer.
30342) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
3035a
3036lone end tag descriptor in the following cases: A Return(0) was executed,
3037a null buffer was returned, or no object at all was returned (non-slack
3038mode only). Adds a new file, nsconvert.c
3039ACPICA BZ 998. Bob Moore, Lv Zheng.
3040
3041Resource Manager: Added additional code to prevent possible infinite
3042loops
3043while traversing corrupted or ill-formed resource template buffers. Check
3044for zero-length resource descriptors in all code that loops through
3045resource templates (the length field is used to index through the
3046template). This change also hardens the external AcpiWalkResources and
3047AcpiWalkResourceBuffer interfaces.
3048
3049Local Cache Manager: Enhanced the main data structure to eliminate an
3050unnecessary mechanism to access the next object in the list. Actually
3051provides a small performance enhancement for hosts that use the local
3052ACPICA cache manager. Jung-uk Kim.
3053
3054Example Code and Data Size: These are the sizes for the OS-independent
3055acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3056debug version of the code includes the debug output trace mechanism and
3057has a much larger code and data size.
3058
3059  Previous Release:
3060    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
3061    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
3062  Current Release:
3063    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
3064    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
3065
3066
30672) iASL Compiler/Disassembler and Tools:
3068
3069iASL/Disassembler: Fixed several issues with the definition of the ACPI
30705.0 RASF table (RAS Feature Table). This change incorporates late changes
3071that were made to the ACPI 5.0 specification.
3072
3073iASL/Disassembler: Added full support for the following new ACPI tables:
3074  1) The MTMR table (MID Timer Table)
3075  2) The VRTC table (Virtual Real Time Clock Table).
3076Includes header file, disassembler, table compiler, and template support
3077for both tables.
3078
3079iASL: Implemented compile-time validation of package objects returned by
3080predefined names. This new feature validates static package objects
3081returned by the various predefined names defined to return packages. Both
3082object types and package lengths are validated, for both parent packages
3083and sub-packages, if any. The code is similar in structure and behavior
3084to
3085the runtime repair mechanism within the AML interpreter and uses the
3086existing predefined name information table. Adds a new file, aslprepkg.c.
3087ACPICA BZ 938.
3088
3089iASL: Implemented auto-detection of binary ACPI tables for disassembly.
3090This feature detects a binary file with a valid ACPI table header and
3091invokes the disassembler automatically. Eliminates the need to
3092specifically invoke the disassembler with the -d option. ACPICA BZ 862.
3093
3094iASL/Disassembler: Added several warnings for the case where there are
3095unresolved control methods during the disassembly. This can potentially
3096cause errors when the output file is compiled, because the disassembler
3097assumes zero method arguments in these cases (it cannot determine the
3098actual number of arguments without resolution/definition of the method).
3099
3100Debugger: Added support to display all resources with a single command.
3101Invocation of the resources command with no arguments will now display
3102all
3103resources within the current namespace.
3104
3105AcpiHelp: Added descriptive text for each ACPICA exception code displayed
3106via the -e option.
3107
3108----------------------------------------
310917 January 2013. Summary of changes for version 20130117:
3110
31111) ACPICA Kernel-resident Subsystem:
3112
3113Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
3114return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
3115objects to return a package containing one integer, most BIOS code
3116returns
3117two integers and the previous code reflects that. However, we also need
3118to
3119support BIOS code that actually implements to the ACPI spec, and this
3120change reflects this.
3121
3122Fixed two issues with the ACPI_DEBUG_PRINT macros:
31231) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
3124C compilers that require this support.
31252) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
3126ACPI_DEBUG is already used by many of the various hosts.
3127
3128Updated all ACPICA copyrights and signons to 2013. Added the 2013
3129copyright to all module headers and signons, including the standard Linux
3130header. This affects virtually every file in the ACPICA core subsystem,
3131iASL compiler, all ACPICA utilities, and the test suites.
3132
3133Example Code and Data Size: These are the sizes for the OS-independent
3134acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3135debug version of the code includes the debug output trace mechanism and
3136has a much larger code and data size.
3137
3138  Previous Release:
3139    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
3140    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
3141  Current Release:
3142    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
3143    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
3144
3145
31462) iASL Compiler/Disassembler and Tools:
3147
3148Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
3149prevent a possible fault on some hosts. Some C libraries modify the arg
3150pointer parameter to vfprintf making it difficult to call it twice in the
3151AcpiOsVprintf function. Use a local buffer to workaround this issue. This
3152does not affect the Windows OSL since the Win C library does not modify
3153the arg pointer. Chao Guan, Bob Moore.
3154
3155iASL: Fixed a possible infinite loop when the maximum error count is
3156reached. If an output file other than the .AML file is specified (such as
3157a listing file), and the maximum number of errors is reached, do not
3158attempt to flush data to the output file(s) as the compiler is aborting.
3159This can cause an infinite loop as the max error count code essentially
3160keeps calling itself.
3161
3162iASL/Disassembler: Added an option (-in) to ignore NOOP
3163opcodes/operators.
3164Implemented for both the compiler and the disassembler. Often, the NOOP
3165opcode is used as padding for packages that are changed dynamically by
3166the
3167BIOS. When disassembled and recompiled, these NOOPs will cause syntax
3168errors. This option causes the disassembler to ignore all NOOP opcodes
3169(0xA3), and it also causes the compiler to ignore all ASL source code
3170NOOP
3171statements as well.
3172
3173Debugger: Enhanced the Sleep command to execute all sleep states. This
3174change allows Sleep to be invoked with no arguments and causes the
3175debugger to execute all of the sleep states, 0-5, automatically.
3176
3177----------------------------------------
317820 December 2012. Summary of changes for version 20121220:
3179
31801) ACPICA Kernel-resident Subsystem:
3181
3182Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
3183alternate entry point for AcpiWalkResources and improves the usability of
3184the resource manager by accepting as input a buffer containing the output
3185of either a _CRS, _PRS, or _AEI method. The key functionality is that the
3186input buffer is not deleted by this interface so that it can be used by
3187the host later. See the ACPICA reference for details.
3188
3189Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
3190(DSDT version < 2). The constant will be truncated and this warning
3191reflects that behavior.
3192
3193Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
3194ExtendedInterrupt, and GpioInt descriptors. This change adds support to
3195both get and set the new wake bit in these descriptors, separately from
3196the existing share bit. Reported by Aaron Lu.
3197
3198Interpreter: Fix Store() when an implicit conversion is not possible. For
3199example, in the cases such as a store of a string to an existing package
3200object, implement the store as a CopyObject(). This is a small departure
3201from the ACPI specification which states that the control method should
3202be
3203aborted in this case. However, the ASLTS suite depends on this behavior.
3204
3205Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
3206macros: check if debug output is currently enabled as soon as possible to
3207minimize performance impact if debug is in fact not enabled.
3208
3209Source code restructuring: Cleanup to improve modularity. The following
3210new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
3211psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
3212Associated makefiles and project files have been updated.
3213
3214Changed an exception code for LoadTable operator. For the case where one
3215of the input strings is too long, change the returned exception code from
3216AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
3217
3218Fixed a possible memory leak in dispatcher error path. On error, delete
3219the mutex object created during method mutex creation. Reported by
3220tim.gardner@canonical.com.
3221
3222Example Code and Data Size: These are the sizes for the OS-independent
3223acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3224debug version of the code includes the debug output trace mechanism and
3225has a much larger code and data size.
3226
3227  Previous Release:
3228    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
3229    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3230  Current Release:
3231    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
3232    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
3233
3234
32352) iASL Compiler/Disassembler and Tools:
3236
3237iASL: Disallow a method call as argument to the ObjectType ASL operator.
3238This change tracks an errata to the ACPI 5.0 document. The AML grammar
3239will not allow the interpreter to differentiate between a method and a
3240method invocation when these are used as an argument to the ObjectType
3241operator. The ACPI specification change is to disallow a method
3242invocation
3243(UserTerm) for the ObjectType operator.
3244
3245Finish support for the TPM2 and CSRT tables in the headers, table
3246compiler, and disassembler.
3247
3248Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
3249always expires immediately if the semaphore is not available. The
3250original
3251code was using a relative-time timeout, but sem_timedwait requires the
3252use
3253of an absolute time.
3254
3255iASL: Added a remark if the Timer() operator is used within a 32-bit
3256table. This operator returns a 64-bit time value that will be truncated
3257within a 32-bit table.
3258
3259iASL Source code restructuring: Cleanup to improve modularity. The
3260following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
3261aslmethod.c, and aslfileio.c. Associated makefiles and project files have
3262been updated.
3263
3264
3265----------------------------------------
326614 November 2012. Summary of changes for version 20121114:
3267
32681) ACPICA Kernel-resident Subsystem:
3269
3270Implemented a performance enhancement for ACPI/AML Package objects. This
3271change greatly increases the performance of Package objects within the
3272interpreter. It changes the processing of reference counts for packages
3273by
3274optimizing for the most common case where the package sub-objects are
3275either Integers, Strings, or Buffers. Increases the overall performance
3276of
3277the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
32782X.)
3279Chao Guan. ACPICA BZ 943.
3280
3281Implemented and deployed common macros to extract flag bits from resource
3282descriptors. Improves readability and maintainability of the code. Fixes
3283a
3284problem with the UART serial bus descriptor for the number of data bits
3285flags (was incorrectly 2 bits, should be 3).
3286
3287Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
3288of the macros and changed the SETx macros to the style of (destination,
3289source). Also added ACPI_CASTx companion macros. Lv Zheng.
3290
3291Example Code and Data Size: These are the sizes for the OS-independent
3292acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3293debug version of the code includes the debug output trace mechanism and
3294has a much larger code and data size.
3295
3296  Previous Release:
3297    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
3298    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3299  Current Release:
3300    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
3301    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3302
3303
33042) iASL Compiler/Disassembler and Tools:
3305
3306Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
3307adds the ShareAndWake and ExclusiveAndWake flags which were added to the
3308Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
3309
3310Disassembler: Fixed a problem with external declaration generation. Fixes
3311a problem where an incorrect pathname could be generated for an external
3312declaration if the original reference to the object includes leading
3313carats (^). ACPICA BZ 984.
3314
3315Debugger: Completed a major update for the Disassemble<method> command.
3316This command was out-of-date and did not properly disassemble control
3317methods that had any reasonable complexity. This fix brings the command
3318up
3319to the same level as the rest of the disassembler. Adds one new file,
3320dmdeferred.c, which is existing code that is now common with the main
3321disassembler and the debugger disassemble command. ACPICA MZ 978.
3322
3323iASL: Moved the parser entry prototype to avoid a duplicate declaration.
3324Newer versions of Bison emit this prototype, so moved the prototype out
3325of
3326the iASL header to where it is actually used in order to avoid a
3327duplicate
3328declaration.
3329
3330iASL/Tools: Standardized use of the stream I/O functions:
3331  1) Ensure check for I/O error after every fopen/fread/fwrite
3332  2) Ensure proper order of size/count arguments for fread/fwrite
3333  3) Use test of (Actual != Requested) after all fwrite, and most fread
3334  4) Standardize I/O error messages
3335Improves reliability and maintainability of the code. Bob Moore, Lv
3336Zheng.
3337ACPICA BZ 981.
3338
3339Disassembler: Prevent duplicate External() statements. During generation
3340of external statements, detect similar pathnames that are actually
3341duplicates such as these:
3342  External (\ABCD)
3343  External (ABCD)
3344Remove all leading '\' characters from pathnames during the external
3345statement generation so that duplicates will be detected and tossed.
3346ACPICA BZ 985.
3347
3348Tools: Replace low-level I/O with stream I/O functions. Replace
3349open/read/write/close with the stream I/O equivalents
3350fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
3351Moore.
3352
3353AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
3354name header so that AcpiXtract recognizes the output file/table.
3355
3356iASL: Remove obsolete -2 option flag. Originally intended to force the
3357compiler/disassembler into an ACPI 2.0 mode, this was never implemented
3358and the entire concept is now obsolete.
3359
3360----------------------------------------
336118 October 2012. Summary of changes for version 20121018:
3362
3363
33641) ACPICA Kernel-resident Subsystem:
3365
3366Updated support for the ACPI 5.0 MPST table. Fixes some problems
3367introduced by late changes to the table as it was added to the ACPI 5.0
3368specification. Includes header, disassembler, and data table compiler
3369support as well as a new version of the MPST template.
3370
3371AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
33725.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
3373methods: _HID, _CID, and _UID.
3374
3375Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
3376ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
3377name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
3378names for their various drivers. Affects the AcpiGetObjectInfo external
3379interface, and other internal interfaces as well.
3380
3381Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
3382This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
3383on machines that support non-aligned transfers. Optimizes for this case
3384rather than using a strncpy. With assistance from Zheng Lv.
3385
3386Resource Manager: Small fix for buffer size calculation. Fixed a one byte
3387error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
3388
3389Added a new debug print message for AML mutex objects that are force-
3390released. At control method termination, any currently acquired mutex
3391objects are force-released. Adds a new debug-only message for each one
3392that is released.
3393
3394Audited/updated all ACPICA return macros and the function debug depth
3395counter: 1) Ensure that all functions that use the various TRACE macros
3396also use the appropriate ACPICA return macros. 2) Ensure that all normal
3397return statements surround the return expression (value) with parens to
3398ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
3399Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
3400
3401Global source code changes/maintenance: All extra lines at the start and
3402end of each source file have been removed for consistency. Also, within
3403comments, all new sentences start with a single space instead of a double
3404space, again for consistency across the code base.
3405
3406Example Code and Data Size: These are the sizes for the OS-independent
3407acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3408debug version of the code includes the debug output trace mechanism and
3409has a much larger code and data size.
3410
3411  Previous Release:
3412    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
3413    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
3414  Current Release:
3415    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
3416    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3417
3418
34192) iASL Compiler/Disassembler and Tools:
3420
3421AcpiExec: Improved the algorithm used for memory leak/corruption
3422detection. Added some intelligence to the code that maintains the global
3423list of allocated memory. The list is now ordered by allocated memory
3424address, significantly improving performance. When running AcpiExec on
3425the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
3426on the platform and/or the environment. Note, this performance
3427enhancement affects the AcpiExec utility only, not the kernel-resident
3428ACPICA code.
3429
3430Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
3431the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
3432incorrect table offset reported for invalid opcodes. Report the original
343332-bit value for bad ACPI_NAMEs (as well as the repaired name.)
3434
3435Disassembler: Enhanced the -vt option to emit the binary table data in
3436hex format to assist with debugging.
3437
3438Fixed a potential filename buffer overflow in osunixdir.c. Increased the
3439size of file structure. Colin Ian King.
3440
3441----------------------------------------
344213 September 2012. Summary of changes for version 20120913:
3443
3444
34451) ACPICA Kernel-resident Subsystem:
3446
3447ACPI 5.0: Added two new notify types for the Hardware Error Notification
3448Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
3449and
3450MCE(6).
3451
3452Table Manager: Merged/removed duplicate code in the root table resize
3453functions. One function is external, the other is internal. Lv Zheng,
3454ACPICA
3455BZ 846.
3456
3457Makefiles: Completely removed the obsolete "Linux" makefiles under
3458acpica/generate/linux. These makefiles are obsolete and have been
3459replaced
3460by
3461the generic unix makefiles under acpica/generate/unix.
3462
3463Makefiles: Ensure that binary files always copied properly. Minor rule
3464change
3465to ensure that the final binary output files are always copied up to the
3466appropriate binary directory (bin32 or bin64.)
3467
3468Example Code and Data Size: These are the sizes for the OS-independent
3469acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3470debug
3471version of the code includes the debug output trace mechanism and has a
3472much
3473larger code and data size.
3474
3475  Previous Release:
3476    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
3477    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
3478  Current Release:
3479    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
3480    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
3481
3482
34832) iASL Compiler/Disassembler and Tools:
3484
3485Disassembler: Fixed a possible fault during the disassembly of resource
3486descriptors when a second parse is required because of the invocation of
3487external control methods within the table. With assistance from
3488adq@lidskialf.net. ACPICA BZ 976.
3489
3490iASL: Fixed a namepath optimization problem. An error can occur if the
3491parse
3492node that contains the namepath to be optimized does not have a parent
3493node
3494that is a named object. This change fixes the problem.
3495
3496iASL: Fixed a regression where the AML file is not deleted on errors. The
3497AML
3498output file should be deleted if there are any errors during the
3499compiler.
3500The
3501only exception is if the -f (force output) option is used. ACPICA BZ 974.
3502
3503iASL: Added a feature to automatically increase internal line buffer
3504sizes.
3505Via realloc(), automatically increase the internal line buffer sizes as
3506necessary to support very long source code lines. The current version of
3507the
3508preprocessor requires a buffer long enough to contain full source code
3509lines.
3510This change increases the line buffer(s) if the input lines go beyond the
3511current buffer size. This eliminates errors that occurred when a source
3512code
3513line was longer than the buffer.
3514
3515iASL: Fixed a problem with constant folding in method declarations. The
3516SyncLevel term is a ByteConstExpr, and incorrect code would be generated
3517if a
3518Type3 opcode was used.
3519
3520Debugger: Improved command help support. For incorrect argument count,
3521display
3522full help for the command. For help command itself, allow an argument to
3523specify a command.
3524
3525Test Suites: Several bug fixes for the ASLTS suite reduces the number of
3526errors during execution of the suite. Guan Chao.
3527
3528----------------------------------------
352916 August 2012. Summary of changes for version 20120816:
3530
3531
35321) ACPICA Kernel-resident Subsystem:
3533
3534Removed all use of the deprecated _GTS and _BFS predefined methods. The
3535_GTS
3536(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
3537deprecated and will probably be removed from the ACPI specification.
3538Windows
3539does not invoke them, and reportedly never will. The final nail in the
3540coffin
3541is that the ACPI specification states that these methods must be run with
3542interrupts off, which is not going to happen in a kernel interpreter.
3543Note:
3544Linux has removed all use of the methods also. It was discovered that
3545invoking these functions caused failures on some machines, probably
3546because
3547they were never tested since Windows does not call them. Affects two
3548external
3549interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
3550ACPICA BZ 969.
3551
3552Implemented support for complex bit-packed buffers returned from the _PLD
3553(Physical Location of Device) predefined method. Adds a new external
3554interface, AcpiDecodePldBuffer that parses the buffer into a more usable
3555C
3556structure. Note: C Bitfields cannot be used for this type of predefined
3557structure since the memory layout of individual bitfields is not defined
3558by
3559the C language. In addition, there are endian concerns where a compiler
3560will
3561change the bitfield ordering based on the machine type. The new ACPICA
3562interface eliminates these issues, and should be called after _PLD is
3563executed. ACPICA BZ 954.
3564
3565Implemented a change to allow a scope change to root (via "Scope (\)")
3566during
3567execution of module-level ASL code (code that is executed at table load
3568time.) Lin Ming.
3569
3570Added the Windows8/Server2012 string for the _OSI method. This change
3571adds
3572a
3573new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
35742012.
3575
3576Added header support for the new ACPI tables DBG2 (Debug Port Table Type
35772)
3578and CSRT (Core System Resource Table).
3579
3580Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
3581names. This simplifies access to the buffers returned by these predefined
3582names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
3583
3584GPE support: Removed an extraneous parameter from the various low-level
3585internal GPE functions. Tang Feng.
3586
3587Removed the linux makefiles from the unix packages. The generate/linux
3588makefiles are obsolete and have been removed from the unix tarball
3589release
3590packages. The replacement makefiles are under generate/unix, and there is
3591a
3592top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
3593
3594Updates for Unix makefiles:
35951) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
35962) Update linker flags (move to end of command line) for AcpiExec
3597utility.
3598Guan Chao.
3599
3600Split ACPICA initialization functions to new file, utxfinit.c. Split from
3601utxface.c to improve modularity and reduce file size.
3602
3603Example Code and Data Size: These are the sizes for the OS-independent
3604acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3605debug version of the code includes the debug output trace mechanism and
3606has a
3607much larger code and data size.
3608
3609  Previous Release:
3610    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
3611    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
3612  Current Release:
3613    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
3614    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
3615
3616
36172) iASL Compiler/Disassembler and Tools:
3618
3619iASL: Fixed a problem with constant folding for fixed-length constant
3620expressions. The constant-folding code was not being invoked for constant
3621expressions that allow the use of type 3/4/5 opcodes to generate
3622constants
3623for expressions such as ByteConstExpr, WordConstExpr, etc. This could
3624result
3625in the generation of invalid AML bytecode. ACPICA BZ 970.
3626
3627iASL: Fixed a generation issue on newer versions of Bison. Newer versions
3628apparently automatically emit some of the necessary externals. This
3629change
3630handles these versions in order to eliminate generation warnings.
3631
3632Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
3633
3634Disassembler: Add support to decode _PLD buffers. The decoded buffer
3635appears
3636within comments in the output file.
3637
3638Debugger: Fixed a regression with the "Threads" command where
3639AE_BAD_PARAMETER was always returned.
3640
3641----------------------------------------
364211 July 2012. Summary of changes for version 20120711:
3643
36441) ACPICA Kernel-resident Subsystem:
3645
3646Fixed a possible fault in the return package object repair code. Fixes a
3647problem that can occur when a lone package object is wrapped with an
3648outer
3649package object in order to force conformance to the ACPI specification.
3650Can
3651affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
3652_DLM,
3653_CSD, _PSD, _TSD.
3654
3655Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
3656PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
3657ARB_DIS bit must be implemented in the host-dependent C3 processor power
3658state
3659support. Note, ARB_DIS is obsolete and only applies to older chipsets,
3660both
3661Intel and other vendors. (for Intel: ICH4-M and earlier)
3662
3663This change removes the code to disable/enable bus master arbitration
3664during
3665suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
3666causes
3667resume problems on some machines. The change has been in use for over
3668seven
3669years within Linux.
3670
3671Implemented two new external interfaces to support host-directed dynamic
3672ACPI
3673table load and unload. They are intended to simplify the host
3674implementation
3675of hot-plug support:
3676  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
3677  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
3678table.
3679See the ACPICA reference for additional details. Adds one new file,
3680components/tables/tbxfload.c
3681
3682Implemented and deployed two new interfaces for errors and warnings that
3683are
3684known to be caused by BIOS/firmware issues:
3685  AcpiBiosError: Prints "ACPI Firmware Error" message.
3686  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
3687Deployed these new interfaces in the ACPICA Table Manager code for ACPI
3688table
3689and FADT errors. Additional deployment to be completed as appropriate in
3690the
3691future. The associated conditional macros are ACPI_BIOS_ERROR and
3692ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
3693ACPICA
3694BZ
3695843.
3696
3697Implicit notify support: ensure that no memory allocation occurs within a
3698critical region. This fix moves a memory allocation outside of the time
3699that a
3700spinlock is held. Fixes issues on systems that do not allow this
3701behavior.
3702Jung-uk Kim.
3703
3704Split exception code utilities and tables into a new file,
3705utilities/utexcep.c
3706
3707Example Code and Data Size: These are the sizes for the OS-independent
3708acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3709debug
3710version of the code includes the debug output trace mechanism and has a
3711much
3712larger code and data size.
3713
3714  Previous Release:
3715    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
3716    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
3717  Current Release:
3718    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
3719    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
3720
3721
37222) iASL Compiler/Disassembler and Tools:
3723
3724iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
3725of
37260. Jung-uk Kim.
3727
3728Debugger: Enhanced the "tables" command to emit additional information
3729about
3730the current set of ACPI tables, including the owner ID and flags decode.
3731
3732Debugger: Reimplemented the "unload" command to use the new
3733AcpiUnloadParentTable external interface. This command was disable
3734previously
3735due to need for an unload interface.
3736
3737AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
3738option
3739will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
3740
3741----------------------------------------
374220 June 2012. Summary of changes for version 20120620:
3743
3744
37451) ACPICA Kernel-resident Subsystem:
3746
3747Implemented support to expand the "implicit notify" feature to allow
3748multiple
3749devices to be notified by a single GPE. This feature automatically
3750generates a
3751runtime device notification in the absence of a BIOS-provided GPE control
3752method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
3753notify is
3754provided by ACPICA for Windows compatibility, and is a workaround for
3755BIOS
3756AML
3757code errors. See the description of the AcpiSetupGpeForWake interface in
3758the
3759APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
3760
3761Changed some comments and internal function names to simplify and ensure
3762correctness of the Linux code translation. No functional changes.
3763
3764Example Code and Data Size: These are the sizes for the OS-independent
3765acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3766debug
3767version of the code includes the debug output trace mechanism and has a
3768much
3769larger code and data size.
3770
3771  Previous Release:
3772    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
3773    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
3774  Current Release:
3775    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
3776    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
3777
3778
37792) iASL Compiler/Disassembler and Tools:
3780
3781Disassembler: Added support to emit short, commented descriptions for the
3782ACPI
3783predefined names in order to improve the readability of the disassembled
3784output. ACPICA BZ 959. Changes include:
3785  1) Emit descriptions for all standard predefined names (_INI, _STA,
3786_PRW,
3787etc.)
3788  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
3789  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
3790etc.)
3791
3792AcpiSrc: Fixed several long-standing Linux code translation issues.
3793Argument
3794descriptions in function headers are now translated properly to lower
3795case
3796and
3797underscores. ACPICA BZ 961. Also fixes translation problems such as
3798these:
3799(old -> new)
3800  i_aSL -> iASL
3801  00-7_f -> 00-7F
3802  16_k -> 16K
3803  local_fADT -> local_FADT
3804  execute_oSI -> execute_OSI
3805
3806iASL: Fixed a problem where null bytes were inadvertently emitted into
3807some
3808listing files.
3809
3810iASL: Added the existing debug options to the standard help screen. There
3811are
3812no longer two different help screens. ACPICA BZ 957.
3813
3814AcpiHelp: Fixed some typos in the various predefined name descriptions.
3815Also
3816expand some of the descriptions where appropriate.
3817
3818iASL: Fixed the -ot option (display compile times/statistics). Was not
3819working
3820properly for standard output; only worked for the debug file case.
3821
3822----------------------------------------
382318 May 2012. Summary of changes for version 20120518:
3824
3825
38261) ACPICA Core Subsystem:
3827
3828Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
3829defined
3830to block until asynchronous events such as notifies and GPEs have
3831completed.
3832Within ACPICA, it is only called before a notify or GPE handler is
3833removed/uninstalled. It also may be useful for the host OS within related
3834drivers such as the Embedded Controller driver. See the ACPICA reference
3835for
3836additional information. ACPICA BZ 868.
3837
3838ACPI Tables: Added a new error message for a possible overflow failure
3839during
3840the conversion of FADT 32-bit legacy register addresses to internal
3841common
384264-
3843bit GAS structure representation. The GAS has a one-byte "bit length"
3844field,
3845thus limiting the register length to 255 bits. ACPICA BZ 953.
3846
3847Example Code and Data Size: These are the sizes for the OS-independent
3848acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3849debug
3850version of the code includes the debug output trace mechanism and has a
3851much
3852larger code and data size.
3853
3854  Previous Release:
3855    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3856    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
3857  Current Release:
3858    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
3859    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
3860
3861
38622) iASL Compiler/Disassembler and Tools:
3863
3864iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
3865macro.
3866This keyword was added late in the ACPI 5.0 release cycle and was not
3867implemented until now.
3868
3869Disassembler: Added support for Operation Region externals. Adds missing
3870support for operation regions that are defined in another table, and
3871referenced locally via a Field or BankField ASL operator. Now generates
3872the
3873correct External statement.
3874
3875Disassembler: Several additional fixes for the External() statement
3876generation
3877related to some ASL operators. Also, order the External() statements
3878alphabetically in the disassembler output. Fixes the External()
3879generation
3880for
3881the Create* field, Alias, and Scope operators:
3882 1) Create* buffer field operators - fix type mismatch warning on
3883disassembly
3884 2) Alias - implement missing External support
3885 3) Scope - fix to make sure all necessary externals are emitted.
3886
3887iASL: Improved pathname support. For include files, merge the prefix
3888pathname
3889with the file pathname and eliminate unnecessary components. Convert
3890backslashes in all pathnames to forward slashes, for readability. Include
3891file
3892pathname changes affect both #include and Include() type operators.
3893
3894iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
3895end
3896of a valid line by inserting a newline and then returning the EOF during
3897the
3898next call to GetNextLine. Prevents the line from being ignored due to EOF
3899condition.
3900
3901iASL: Implemented some changes to enhance the IDE support (-vi option.)
3902Error
3903and Warning messages are now correctly recognized for both the source
3904code
3905browser and the global error and warning counts.
3906
3907----------------------------------------
390820 April 2012. Summary of changes for version 20120420:
3909
3910
39111) ACPICA Core Subsystem:
3912
3913Implemented support for multiple notify handlers. This change adds
3914support
3915to
3916allow multiple system and device notify handlers on Device, Thermal Zone,
3917and
3918Processor objects. This can simplify the host OS notification
3919implementation.
3920Also re-worked and restructured the entire notify support code to
3921simplify
3922handler installation, handler removal, notify event queuing, and notify
3923dispatch to handler(s). Note: there can still only be two global notify
3924handlers - one for system notifies and one for device notifies. There are
3925no
3926changes to the existing handler install/remove interfaces. Lin Ming, Bob
3927Moore, Rafael Wysocki.
3928
3929Fixed a regression in the package repair code where the object reference
3930count was calculated incorrectly. Regression was introduced in the commit
3931"Support to add Package wrappers".
3932
3933Fixed a couple possible memory leaks in the AML parser, in the error
3934recovery
3935path. Jesper Juhl, Lin Ming.
3936
3937Example Code and Data Size: These are the sizes for the OS-independent
3938acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3939debug version of the code includes the debug output trace mechanism and
3940has a
3941much larger code and data size.
3942
3943  Previous Release:
3944    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3945    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3946  Current Release:
3947    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3948    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
3949
3950
39512) iASL Compiler/Disassembler and Tools:
3952
3953iASL: Fixed a problem with the resource descriptor support where the
3954length
3955of the StartDependentFn and StartDependentFnNoPrio descriptors were not
3956included in cumulative descriptor offset, resulting in incorrect values
3957for
3958resource tags within resource descriptors appearing after a
3959StartDependent*
3960descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
3961
3962iASL and Preprocessor: Implemented full support for the #line directive
3963to
3964correctly track original source file line numbers through the .i
3965preprocessor
3966output file - for error and warning messages.
3967
3968iASL: Expand the allowable byte constants for address space IDs.
3969Previously,
3970the allowable range was 0x80-0xFF (user-defined spaces), now the range is
39710x0A-0xFF to allow for custom and new IDs without changing the compiler.
3972
3973iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
3974
3975iASL: Add option to completely disable the preprocessor (-Pn).
3976
3977iASL: Now emit all error/warning messages to standard error (stderr) by
3978default (instead of the previous stdout).
3979
3980ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
3981Update
3982for resource descriptor offset fix above. Update/cleanup error output
3983routines. Enable and send iASL errors/warnings to an error logfile
3984(error.txt). Send all other iASL output to a logfile (compiler.txt).
3985Fixed
3986several extraneous "unrecognized operator" messages.
3987
3988----------------------------------------
398920 March 2012. Summary of changes for version 20120320:
3990
3991
39921) ACPICA Core Subsystem:
3993
3994Enhanced the sleep/wake interfaces to optionally execute the _GTS method
3995(Going To Sleep) and the _BFS method (Back From Sleep). Windows
3996apparently
3997does not execute these methods, and therefore these methods are often
3998untested. It has been seen on some systems where the execution of these
3999methods causes errors and also prevents the machine from entering S5. It
4000is
4001therefore suggested that host operating systems do not execute these
4002methods
4003by default. In the future, perhaps these methods can be optionally
4004executed
4005based on the age of the system and/or what is the newest version of
4006Windows
4007that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
4008and
4009AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
4010Ming.
4011
4012Fixed a problem where the length of the local/common FADT was set too
4013early.
4014The local FADT table length cannot be set to the common length until the
4015original length has been examined. There is code that checks the table
4016length
4017and sets various fields appropriately. This can affect older machines
4018with
4019early FADT versions. For example, this can cause inadvertent writes to
4020the
4021CST_CNT register. Julian Anastasov.
4022
4023Fixed a mapping issue related to a physical table override. Use the
4024deferred
4025mapping mechanism for tables loaded via the physical override OSL
4026interface.
4027This allows for early mapping before the virtual memory manager is
4028available.
4029Thomas Renninger, Bob Moore.
4030
4031Enhanced the automatic return-object repair code: Repair a common problem
4032with
4033predefined methods that are defined to return a variable-length Package
4034of
4035sub-objects. If there is only one sub-object, some BIOS ASL code
4036mistakenly
4037simply returns the single object instead of a Package with one sub-
4038object.
4039This new support will repair this error by wrapping a Package object
4040around
4041the original object, creating the correct and expected Package with one
4042sub-
4043object. Names that can be repaired in this manner include: _ALR, _CSD,
4044_HPX,
4045_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
4046939.
4047
4048Changed the exception code returned for invalid ACPI paths passed as
4049parameters to external interfaces such as AcpiEvaluateObject. Was
4050AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
4051
4052Example Code and Data Size: These are the sizes for the OS-independent
4053acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4054debug
4055version of the code includes the debug output trace mechanism and has a
4056much
4057larger code and data size.
4058
4059  Previous Release:
4060    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
4061    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4062  Current Release:
4063    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4064    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4065
4066
40672) iASL Compiler/Disassembler and Tools:
4068
4069iASL: Added the infrastructure and initial implementation of a integrated
4070C-
4071like preprocessor. This will simplify BIOS development process by
4072eliminating
4073the need for a separate preprocessing step during builds. On Windows, it
4074also
4075eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
4076features including full #define() macro support are still under
4077development.
4078These preprocessor directives are supported:
4079    #define
4080    #elif
4081    #else
4082    #endif
4083    #error
4084    #if
4085    #ifdef
4086    #ifndef
4087    #include
4088    #pragma message
4089    #undef
4090    #warning
4091In addition, these new command line options are supported:
4092    -D <symbol> Define symbol for preprocessor use
4093    -li         Create preprocessed output file (*.i)
4094    -P          Preprocess only and create preprocessor output file (*.i)
4095
4096Table Compiler: Fixed a problem where the equals operator within an
4097expression
4098did not work properly.
4099
4100Updated iASL to use the current versions of Bison/Flex. Updated the
4101Windows
4102project file to invoke these tools from the standard location. ACPICA BZ
4103904.
4104Versions supported:
4105    Flex for Windows:  V2.5.4
4106    Bison for Windows: V2.4.1
4107
4108----------------------------------------
410915 February 2012. Summary of changes for version 20120215:
4110
4111
41121) ACPICA Core Subsystem:
4113
4114There have been some major changes to the sleep/wake support code, as
4115described below (a - e).
4116
4117a) The AcpiLeaveSleepState has been split into two interfaces, similar to
4118AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
4119AcpiLeaveSleepStatePrep. This allows the host to perform actions between
4120the
4121time the _BFS method is called and the _WAK method is called. NOTE: all
4122hosts
4123must update their wake/resume code or else sleep/wake will not work
4124properly.
4125Rafael Wysocki.
4126
4127b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
4128_WAK
4129method. Some machines require that the GPEs are enabled before the _WAK
4130method
4131is executed. Thomas Renninger.
4132
4133c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
4134bit.
4135Some BIOS code assumes that WAK_STS will be cleared on resume and use it
4136to
4137determine whether the system is rebooting or resuming. Matthew Garrett.
4138
4139d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
4140Sleep) to
4141match the ACPI specification requirement. Rafael Wysocki.
4142
4143e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
4144registers within the V5 FADT. This support adds two new files:
4145hardware/hwesleep.c implements the support for the new registers. Moved
4146all
4147sleep/wake external interfaces to hardware/hwxfsleep.c.
4148
4149
4150Added a new OSL interface for ACPI table overrides,
4151AcpiOsPhysicalTableOverride. This interface allows the host to override a
4152table via a physical address, instead of the logical address required by
4153AcpiOsTableOverride. This simplifies the host implementation. Initial
4154implementation by Thomas Renninger. The ACPICA implementation creates a
4155single
4156shared function for table overrides that attempts both a logical and a
4157physical override.
4158
4159Expanded the OSL memory read/write interfaces to 64-bit data
4160(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
4161transfer support for GAS register structures passed to AcpiRead and
4162AcpiWrite.
4163
4164Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
4165custom
4166build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
4167model.
4168See the ACPICA reference for details. ACPICA BZ 942. This option removes
4169about
417010% of the code and 5% of the static data, and the following hardware
4171ACPI
4172features become unavailable:
4173    PM Event and Control registers
4174    SCI interrupt (and handler)
4175    Fixed Events
4176    General Purpose Events (GPEs)
4177    Global Lock
4178    ACPI PM timer
4179    FACS table (Waking vectors and Global Lock)
4180
4181Updated the unix tarball directory structure to match the ACPICA git
4182source
4183tree. This ensures that the generic unix makefiles work properly (in
4184generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
4185867.
4186
4187Updated the return value of the _REV predefined method to integer value 5
4188to
4189reflect ACPI 5.0 support.
4190
4191Moved the external ACPI PM timer interface prototypes to the public
4192acpixf.h
4193file where they belong.
4194
4195Example Code and Data Size: These are the sizes for the OS-independent
4196acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4197debug
4198version of the code includes the debug output trace mechanism and has a
4199much
4200larger code and data size.
4201
4202  Previous Release:
4203    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
4204    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
4205  Current Release:
4206    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
4207    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4208
4209
42102) iASL Compiler/Disassembler and Tools:
4211
4212Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
4213descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
4214incorrectly displayed.
4215
4216AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
4217specification.
4218
4219----------------------------------------
422011 January 2012. Summary of changes for version 20120111:
4221
4222
42231) ACPICA Core Subsystem:
4224
4225Implemented a new mechanism to allow host device drivers to check for
4226address
4227range conflicts with ACPI Operation Regions. Both SystemMemory and
4228SystemIO
4229address spaces are supported. A new external interface,
4230AcpiCheckAddressRange,
4231allows drivers to check an address range against the ACPI namespace. See
4232the
4233ACPICA reference for additional details. Adds one new file,
4234utilities/utaddress.c. Lin Ming, Bob Moore.
4235
4236Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
4237Control
4238and
4239Status registers, update the ACPI 5.0 flags, and update internal data
4240structures to handle an FADT larger than 256 bytes. The size of the ACPI
42415.0
4242FADT is 268 bytes.
4243
4244Updated all ACPICA copyrights and signons to 2012. Added the 2012
4245copyright to
4246all module headers and signons, including the standard Linux header. This
4247affects virtually every file in the ACPICA core subsystem, iASL compiler,
4248and
4249all ACPICA utilities.
4250
4251Example Code and Data Size: These are the sizes for the OS-independent
4252acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4253debug
4254version of the code includes the debug output trace mechanism and has a
4255much
4256larger code and data size.
4257
4258  Previous Release:
4259    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
4260    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
4261  Current Release:
4262    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
4263    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
4264
4265
42662) iASL Compiler/Disassembler and Tools:
4267
4268Disassembler: fixed a problem with the automatic resource tag generation
4269support. Fixes a problem where the resource tags are inadvertently not
4270constructed if the table being disassembled contains external references
4271to
4272control methods. Moved the actual construction of the tags to after the
4273final
4274namespace is constructed (after 2nd parse is invoked due to external
4275control
4276method references.) ACPICA BZ 941.
4277
4278Table Compiler: Make all "generic" operators caseless. These are the
4279operators
4280like UINT8, String, etc. Making these caseless improves ease-of-use.
4281ACPICA BZ
4282934.
4283
4284----------------------------------------
428523 November 2011. Summary of changes for version 20111123:
4286
42870) ACPI 5.0 Support:
4288
4289This release contains full support for the ACPI 5.0 specification, as
4290summarized below.
4291
4292Reduced Hardware Support:
4293-------------------------
4294
4295This support allows for ACPI systems without the usual ACPI hardware.
4296This
4297support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
4298will
4299not attempt to initialize or use any of the usual ACPI hardware. Note,
4300when
4301this flag is set, all of the following ACPI hardware is assumed to be not
4302present and is not initialized or accessed:
4303
4304    General Purpose Events (GPEs)
4305    Fixed Events (PM1a/PM1b and PM Control)
4306    Power Management Timer and Console Buttons (power/sleep)
4307    Real-time Clock Alarm
4308    Global Lock
4309    System Control Interrupt (SCI)
4310    The FACS is assumed to be non-existent
4311
4312ACPI Tables:
4313------------
4314
4315All new tables and updates to existing tables are fully supported in the
4316ACPICA headers (for use by device drivers), the disassembler, and the
4317iASL
4318Data Table Compiler. ACPI 5.0 defines these new tables:
4319
4320    BGRT        /* Boot Graphics Resource Table */
4321    DRTM        /* Dynamic Root of Trust for Measurement table */
4322    FPDT        /* Firmware Performance Data Table */
4323    GTDT        /* Generic Timer Description Table */
4324    MPST        /* Memory Power State Table */
4325    PCCT        /* Platform Communications Channel Table */
4326    PMTT        /* Platform Memory Topology Table */
4327    RASF        /* RAS Feature table */
4328
4329Operation Regions/SpaceIDs:
4330---------------------------
4331
4332All new operation regions are fully supported by the iASL compiler, the
4333disassembler, and the ACPICA runtime code (for dispatch to region
4334handlers.)
4335The new operation region Space IDs are:
4336
4337    GeneralPurposeIo
4338    GenericSerialBus
4339
4340Resource Descriptors:
4341---------------------
4342
4343All new ASL resource descriptors are fully supported by the iASL
4344compiler,
4345the
4346ASL/AML disassembler, and the ACPICA runtime Resource Manager code
4347(including
4348all new predefined resource tags). New descriptors are:
4349
4350    FixedDma
4351    GpioIo
4352    GpioInt
4353    I2cSerialBus
4354    SpiSerialBus
4355    UartSerialBus
4356
4357ASL/AML Operators, New and Modified:
4358------------------------------------
4359
4360One new operator is added, the Connection operator, which is used to
4361associate
4362a GeneralPurposeIo or GenericSerialBus resource descriptor with
4363individual
4364field objects within an operation region. Several new protocols are
4365associated
4366with the AccessAs operator. All are fully supported by the iASL compiler,
4367disassembler, and runtime ACPICA AML interpreter:
4368
4369    Connection                      // Declare Field Connection
4370attributes
4371    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
4372    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
4373Protocol
4374    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
4375    RawDataBuffer                       // Data type for Vendor Data
4376fields
4377
4378Predefined ASL/AML Objects:
4379---------------------------
4380
4381All new predefined objects/control-methods are supported by the iASL
4382compiler
4383and the ACPICA runtime validation/repair (arguments and return values.)
4384New
4385predefined names include the following:
4386
4387Standard Predefined Names (Objects or Control Methods):
4388    _AEI, _CLS, _CPC, _CWS, _DEP,
4389    _DLM, _EVT, _GCP, _CRT, _GWS,
4390    _HRV, _PRE, _PSE, _SRT, _SUB.
4391
4392Resource Tags (Names used to access individual fields within resource
4393descriptors):
4394    _DBT, _DPL, _DRS, _END, _FLC,
4395    _IOR, _LIN, _MOD, _PAR, _PHA,
4396    _PIN, _PPI, _POL, _RXL, _SLV,
4397    _SPE, _STB, _TXL, _VEN.
4398
4399ACPICA External Interfaces:
4400---------------------------
4401
4402Several new interfaces have been defined for use by ACPI-related device
4403drivers and other host OS services:
4404
4405AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
4406to
4407acquire and release AML mutexes that are defined in the DSDT/SSDT tables
4408provided by the BIOS. They are intended to be used in conjunction with
4409the
4410ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
4411mutual exclusion with the AML code/interpreter.
4412
4413AcpiGetEventResources: Returns the (formatted) resource descriptors as
4414defined
4415by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
4416provides
4417resource descriptors associated with hardware-reduced platform events,
4418similar
4419to the AcpiGetCurrentResources interface.
4420
4421Operation Region Handlers: For General Purpose IO and Generic Serial Bus
4422operation regions, information about the Connection() object and any
4423optional
4424length information is passed to the region handler within the Context
4425parameter.
4426
4427AcpiBufferToResource: This interface converts a raw AML buffer containing
4428a
4429resource template or resource descriptor to the ACPI_RESOURCE internal
4430format
4431suitable for use by device drivers. Can be used by an operation region
4432handler
4433to convert the Connection() buffer object into a ACPI_RESOURCE.
4434
4435Miscellaneous/Tools/TestSuites:
4436-------------------------------
4437
4438Support for extended _HID names (Four alpha characters instead of three).
4439Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
4440Support for ACPI 5.0 features in the ASLTS test suite.
4441Fully updated documentation (ACPICA and iASL reference documents.)
4442
4443ACPI Table Definition Language:
4444-------------------------------
4445
4446Support for this language was implemented and released as a subsystem of
4447the
4448iASL compiler in 2010. (See the iASL compiler User Guide.)
4449
4450
4451Non-ACPI 5.0 changes for this release:
4452--------------------------------------
4453
44541) ACPICA Core Subsystem:
4455
4456Fix a problem with operation region declarations where a failure can
4457occur
4458if
4459the region name and an argument that evaluates to an object (such as the
4460region address) are in different namespace scopes. Lin Ming, ACPICA BZ
4461937.
4462
4463Do not abort an ACPI table load if an invalid space ID is found within.
4464This
4465will be caught later if the offending method is executed. ACPICA BZ 925.
4466
4467Fixed an issue with the FFixedHW space ID where the ID was not always
4468recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
4469
4470Fixed a problem with the 32-bit generation of the unix-specific OSL
4471(osunixxf.c). Lin Ming, ACPICA BZ 936.
4472
4473Several changes made to enable generation with the GCC 4.6 compiler.
4474ACPICA BZ
4475935.
4476
4477New error messages: Unsupported I/O requests (not 8/16/32 bit), and
4478Index/Bank
4479field registers out-of-range.
4480
44812) iASL Compiler/Disassembler and Tools:
4482
4483iASL: Implemented the __PATH__ operator, which returns the full pathname
4484of
4485the current source file.
4486
4487AcpiHelp: Automatically display expanded keyword information for all ASL
4488operators.
4489
4490Debugger: Add "Template" command to disassemble/dump resource template
4491buffers.
4492
4493Added a new master script to generate and execute the ASLTS test suite.
4494Automatically handles 32- and 64-bit generation. See tests/aslts.sh
4495
4496iASL: Fix problem with listing generation during processing of the
4497Switch()
4498operator where AML listing was disabled until the entire Switch block was
4499completed.
4500
4501iASL: Improve support for semicolon statement terminators. Fix "invalid
4502character" message for some cases when the semicolon is used. Semicolons
4503are
4504now allowed after every <Term> grammar element. ACPICA BZ 927.
4505
4506iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
4507923.
4508
4509Disassembler: Fix problem with disassembly of the DataTableRegion
4510operator
4511where an inadvertent "Unhandled deferred opcode" message could be
4512generated.
4513
45143) Example Code and Data Size
4515
4516These are the sizes for the OS-independent acpica.lib produced by the
4517Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
4518includes the debug output trace mechanism and has a much larger code and
4519data
4520size.
4521
4522  Previous Release:
4523    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4524    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4525  Current Release:
4526    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
4527    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
4528
4529----------------------------------------
453022 September 2011. Summary of changes for version 20110922:
4531
45320) ACPI 5.0 News:
4533
4534Support for ACPI 5.0 in ACPICA has been underway for several months and
4535will
4536be released at the same time that ACPI 5.0 is officially released.
4537
4538The ACPI 5.0 specification is on track for release in the next few
4539months.
4540
45411) ACPICA Core Subsystem:
4542
4543Fixed a problem where the maximum sleep time for the Sleep() operator was
4544intended to be limited to two seconds, but was inadvertently limited to
454520
4546seconds instead.
4547
4548Linux and Unix makefiles: Added header file dependencies to ensure
4549correct
4550generation of ACPICA core code and utilities. Also simplified the
4551makefiles
4552considerably through the use of the vpath variable to specify search
4553paths.
4554ACPICA BZ 924.
4555
45562) iASL Compiler/Disassembler and Tools:
4557
4558iASL: Implemented support to check the access length for all fields
4559created to
4560access named Resource Descriptor fields. For example, if a resource field
4561is
4562defined to be two bits, a warning is issued if a CreateXxxxField() is
4563used
4564with an incorrect bit length. This is implemented for all current
4565resource
4566descriptor names. ACPICA BZ 930.
4567
4568Disassembler: Fixed a byte ordering problem with the output of 24-bit and
456956-
4570bit integers.
4571
4572iASL: Fixed a couple of issues associated with variable-length package
4573objects. 1) properly handle constants like One, Ones, Zero -- do not make
4574a
4575VAR_PACKAGE when these are used as a package length. 2) Allow the
4576VAR_PACKAGE
4577opcode (in addition to PACKAGE) when validating object types for
4578predefined
4579names.
4580
4581iASL: Emit statistics for all output files (instead of just the ASL input
4582and
4583AML output). Includes listings, hex files, etc.
4584
4585iASL: Added -G option to the table compiler to allow the compilation of
4586custom
4587ACPI tables. The only part of a table that is required is the standard
458836-
4589byte
4590ACPI header.
4591
4592AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
4593headers),
4594which also adds correct 64-bit support. Also, now all output filenames
4595are
4596completely lower case.
4597
4598AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
4599loading table files. A warning is issued for any such tables. The only
4600exception is an FADT. This also fixes a possible fault when attempting to
4601load
4602non-AML tables. ACPICA BZ 932.
4603
4604AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
4605a
4606missing table terminator could cause a fault when using the -p option.
4607
4608AcpiSrc: Fixed a possible divide-by-zero fault when generating file
4609statistics.
4610
46113) Example Code and Data Size
4612
4613These are the sizes for the OS-independent acpica.lib produced by the
4614Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
4615includes the debug output trace mechanism and has a much larger code and
4616data
4617size.
4618
4619  Previous Release (VC 9.0):
4620    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4621    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4622  Current Release (VC 9.0):
4623    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4624    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4625
4626
4627----------------------------------------
462823 June 2011. Summary of changes for version 20110623:
4629
46301) ACPI CA Core Subsystem:
4631
4632Updated the predefined name repair mechanism to not attempt repair of a
4633_TSS
4634return object if a _PSS object is present. We can only sort the _TSS
4635return
4636package if there is no _PSS within the same scope. This is because if
4637_PSS
4638is
4639present, the ACPI specification dictates that the _TSS Power Dissipation
4640field
4641is to be ignored, and therefore some BIOSs leave garbage values in the
4642_TSS
4643Power field(s). In this case, it is best to just return the _TSS package
4644as-
4645is. Reported by, and fixed with assistance from Fenghua Yu.
4646
4647Added an option to globally disable the control method return value
4648validation
4649and repair. This runtime option can be used to disable return value
4650repair
4651if
4652this is causing a problem on a particular machine. Also added an option
4653to
4654AcpiExec (-dr) to set this disable flag.
4655
4656All makefiles and project files: Major changes to improve generation of
4657ACPICA
4658tools. ACPICA BZ 912:
4659    Reduce default optimization levels to improve compatibility
4660    For Linux, add strict-aliasing=0 for gcc 4
4661    Cleanup and simplify use of command line defines
4662    Cleanup multithread library support
4663    Improve usage messages
4664
4665Linux-specific header: update handling of THREAD_ID and pthread. For the
466632-
4667bit case, improve casting to eliminate possible warnings, especially with
4668the
4669acpica tools.
4670
4671Example Code and Data Size: These are the sizes for the OS-independent
4672acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4673debug
4674version of the code includes the debug output trace mechanism and has a
4675much
4676larger code and data size.
4677
4678  Previous Release (VC 9.0):
4679    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
4680    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4681  Current Release (VC 9.0):
4682    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4683    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4684
46852) iASL Compiler/Disassembler and Tools:
4686
4687With this release, a new utility named "acpihelp" has been added to the
4688ACPICA
4689package. This utility summarizes the ACPI specification chapters for the
4690ASL
4691and AML languages. It generates under Linux/Unix as well as Windows, and
4692provides the following functionality:
4693    Find/display ASL operator(s) -- with description and syntax.
4694    Find/display ASL keyword(s) -- with exact spelling and descriptions.
4695    Find/display ACPI predefined name(s) -- with description, number
4696        of arguments, and the return value data type.
4697    Find/display AML opcode name(s) -- with opcode, arguments, and
4698grammar.
4699    Decode/display AML opcode -- with opcode name, arguments, and
4700grammar.
4701
4702Service Layers: Make multi-thread support configurable. Conditionally
4703compile
4704the multi-thread support so that threading libraries will not be linked
4705if
4706not
4707necessary. The only tool that requires multi-thread support is AcpiExec.
4708
4709iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
4710of
4711Bison appear to want the interface to yyerror to be a const char * (or at
4712least this is a problem when generating iASL on some systems.) ACPICA BZ
4713923
4714Pierre Lejeune.
4715
4716Tools: Fix for systems where O_BINARY is not defined. Only used for
4717Windows
4718versions of the tools.
4719
4720----------------------------------------
472127 May 2011. Summary of changes for version 20110527:
4722
47231) ACPI CA Core Subsystem:
4724
4725ASL Load() operator: Reinstate most restrictions on the incoming ACPI
4726table
4727signature. Now, only allow SSDT, OEMx, and a null signature. History:
4728    1) Originally, we checked the table signature for "SSDT" or "PSDT".
4729       (PSDT is now obsolete.)
4730    2) We added support for OEMx tables, signature "OEM" plus a fourth
4731       "don't care" character.
4732    3) Valid tables were encountered with a null signature, so we just
4733       gave up on validating the signature, (05/2008).
4734    4) We encountered non-AML tables such as the MADT, which caused
4735       interpreter errors and kernel faults. So now, we once again allow
4736       only SSDT, OEMx, and now, also a null signature. (05/2011).
4737
4738Added the missing _TDL predefined name to the global name list in order
4739to
4740enable validation. Affects both the core ACPICA code and the iASL
4741compiler.
4742
4743Example Code and Data Size: These are the sizes for the OS-independent
4744acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4745debug
4746version of the code includes the debug output trace mechanism and has a
4747much
4748larger code and data size.
4749
4750  Previous Release (VC 9.0):
4751    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
4752    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
4753  Current Release (VC 9.0):
4754    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
4755    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4756
47572) iASL Compiler/Disassembler and Tools:
4758
4759Debugger/AcpiExec: Implemented support for "complex" method arguments on
4760the
4761debugger command line. This adds support beyond simple integers --
4762including
4763Strings, Buffers, and Packages. Includes support for nested packages.
4764Increased the default command line buffer size to accommodate these
4765arguments.
4766See the ACPICA reference for details and syntax. ACPICA BZ 917.
4767
4768Debugger/AcpiExec: Implemented support for "default" method arguments for
4769the
4770Execute/Debug command. Now, the debugger will always invoke a control
4771method
4772with the required number of arguments -- even if the command line
4773specifies
4774none or insufficient arguments. It uses default integer values for any
4775missing
4776arguments. Also fixes a bug where only six method arguments maximum were
4777supported instead of the required seven.
4778
4779Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
4780and
4781also return status in order to prevent buffer overruns. See the ACPICA
4782reference for details and syntax. ACPICA BZ 921
4783
4784iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
4785makefiles to simplify support for the two different but similar parser
4786generators, bison and yacc.
4787
4788Updated the generic unix makefile for gcc 4. The default gcc version is
4789now
4790expected to be 4 or greater, since options specific to gcc 4 are used.
4791
4792----------------------------------------
479313 April 2011. Summary of changes for version 20110413:
4794
47951) ACPI CA Core Subsystem:
4796
4797Implemented support to execute a so-called "orphan" _REG method under the
4798EC
4799device. This change will force the execution of a _REG method underneath
4800the
4801EC
4802device even if there is no corresponding operation region of type
4803EmbeddedControl. Fixes a problem seen on some machines and apparently is
4804compatible with Windows behavior. ACPICA BZ 875.
4805
4806Added more predefined methods that are eligible for automatic NULL
4807package
4808element removal. This change adds another group of predefined names to
4809the
4810list
4811of names that can be repaired by having NULL package elements dynamically
4812removed. This group are those methods that return a single variable-
4813length
4814package containing simple data types such as integers, buffers, strings.
4815This
4816includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
4817_PSL,
4818_Sx,
4819and _TZD. ACPICA BZ 914.
4820
4821Split and segregated all internal global lock functions to a new file,
4822evglock.c.
4823
4824Updated internal address SpaceID for DataTable regions. Moved this
4825internal
4826space
4827id in preparation for ACPI 5.0 changes that will include some new space
4828IDs.
4829This
4830change should not affect user/host code.
4831
4832Example Code and Data Size: These are the sizes for the OS-independent
4833acpica.lib
4834produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
4835version of
4836the code includes the debug output trace mechanism and has a much larger
4837code
4838and
4839data size.
4840
4841  Previous Release (VC 9.0):
4842    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
4843    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
4844  Current Release (VC 9.0):
4845    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
4846    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
4847
48482) iASL Compiler/Disassembler and Tools:
4849
4850iASL/DTC: Major update for new grammar features. Allow generic data types
4851in
4852custom ACPI tables. Field names are now optional. Any line can be split
4853to
4854multiple lines using the continuation char (\). Large buffers now use
4855line-
4856continuation character(s) and no colon on the continuation lines. See the
4857grammar
4858update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
4859Moore.
4860
4861iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
4862statements.
4863Since the parser stuffs a "zero" as the return value for these statements
4864(due
4865to
4866the underlying AML grammar), they were seen as "return with value" by the
4867iASL
4868semantic checking. They are now seen correctly as "null" return
4869statements.
4870
4871iASL: Check if a_REG declaration has a corresponding Operation Region.
4872Adds a
4873check for each _REG to ensure that there is in fact a corresponding
4874operation
4875region declaration in the same scope. If not, the _REG method is not very
4876useful
4877since it probably won't be executed. ACPICA BZ 915.
4878
4879iASL/DTC: Finish support for expression evaluation. Added a new
4880expression
4881parser
4882that implements c-style operator precedence and parenthesization. ACPICA
4883bugzilla
4884908.
4885
4886Disassembler/DTC: Remove support for () and <> style comments in data
4887tables.
4888Now
4889that DTC has full expression support, we don't want to have comment
4890strings
4891that
4892start with a parentheses or a less-than symbol. Now, only the standard /*
4893and
4894//
4895comments are supported, as well as the bracket [] comments.
4896
4897AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
4898"unusual"
4899headers in the acpidump file. Update the header validation to support
4900these
4901tables. Problem introduced in previous AcpiXtract version in the change
4902to
4903support "wrong checksum" error messages emitted by acpidump utility.
4904
4905iASL: Add a * option to generate all template files (as a synonym for
4906ALL)
4907as
4908in
4909"iasl -T *" or "iasl -T ALL".
4910
4911iASL/DTC: Do not abort compiler on fatal errors. We do not want to
4912completely
4913abort the compiler on "fatal" errors, simply should abort the current
4914compile.
4915This allows multiple compiles with a single (possibly wildcard) compiler
4916invocation.
4917
4918----------------------------------------
491916 March 2011. Summary of changes for version 20110316:
4920
49211) ACPI CA Core Subsystem:
4922
4923Fixed a problem caused by a _PRW method appearing at the namespace root
4924scope
4925during the setup of wake GPEs. A fault could occur if a _PRW directly
4926under
4927the
4928root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
4929
4930Implemented support for "spurious" Global Lock interrupts. On some
4931systems, a
4932global lock interrupt can occur without the pending flag being set. Upon
4933a
4934GL
4935interrupt, we now ensure that a thread is actually waiting for the lock
4936before
4937signaling GL availability. Rafael Wysocki, Bob Moore.
4938
4939Example Code and Data Size: These are the sizes for the OS-independent
4940acpica.lib
4941produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
4942version of
4943the code includes the debug output trace mechanism and has a much larger
4944code
4945and
4946data size.
4947
4948  Previous Release (VC 9.0):
4949    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4950    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4951  Current Release (VC 9.0):
4952    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
4953    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
4954
49552) iASL Compiler/Disassembler and Tools:
4956
4957Implemented full support for the "SLIC" ACPI table. Includes support in
4958the
4959header files, disassembler, table compiler, and template generator. Bob
4960Moore,
4961Lin Ming.
4962
4963AcpiXtract: Correctly handle embedded comments and messages from
4964AcpiDump.
4965Apparently some or all versions of acpidump will occasionally emit a
4966comment
4967like
4968"Wrong checksum", etc., into the dump file. This was causing problems for
4969AcpiXtract. ACPICA BZ 905.
4970
4971iASL: Fix the Linux makefile by removing an inadvertent double file
4972inclusion.
4973ACPICA BZ 913.
4974
4975AcpiExec: Update installation of operation region handlers. Install one
4976handler
4977for a user-defined address space. This is used by the ASL test suite
4978(ASLTS).
4979
4980----------------------------------------
498111 February 2011. Summary of changes for version 20110211:
4982
49831) ACPI CA Core Subsystem:
4984
4985Added a mechanism to defer _REG methods for some early-installed
4986handlers.
4987Most user handlers should be installed before call to
4988AcpiEnableSubsystem.
4989However, Event handlers and region handlers should be installed after
4990AcpiInitializeObjects. Override handlers for the "default" regions should
4991be
4992installed early, however. This change executes all _REG methods for the
4993default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
4994chicken/egg issues between them. ACPICA BZ 848.
4995
4996Implemented an optimization for GPE detection. This optimization will
4997simply
4998ignore GPE registers that contain no enabled GPEs -- there is no need to
4999read the register since this information is available internally. This
5000becomes more important on machines with a large GPE space. ACPICA
5001bugzilla
5002884. Lin Ming. Suggestion from Joe Liu.
5003
5004Removed all use of the highly unreliable FADT revision field. The
5005revision
5006number in the FADT has been found to be completely unreliable and cannot
5007be
5008trusted. Only the actual table length can be used to infer the version.
5009This
5010change updates the ACPICA core and the disassembler so that both no
5011longer
5012even look at the FADT version and instead depend solely upon the FADT
5013length.
5014
5015Fix an unresolved name issue for the no-debug and no-error-message source
5016generation cases. The _AcpiModuleName was left undefined in these cases,
5017but
5018it is actually needed as a parameter to some interfaces. Define
5019_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
5020
5021Split several large files (makefiles and project files updated)
5022  utglobal.c   -> utdecode.c
5023  dbcomds.c    -> dbmethod.c dbnames.c
5024  dsopcode.c   -> dsargs.c dscontrol.c
5025  dsload.c     -> dsload2.c
5026  aslanalyze.c -> aslbtypes.c aslwalks.c
5027
5028Example Code and Data Size: These are the sizes for the OS-independent
5029acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5030debug version of the code includes the debug output trace mechanism and
5031has
5032a much larger code and data size.
5033
5034  Previous Release (VC 9.0):
5035    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5036    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5037  Current Release (VC 9.0):
5038    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5039    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5040
50412) iASL Compiler/Disassembler and Tools:
5042
5043iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
5044These are useful C-style macros with the standard definitions. ACPICA
5045bugzilla 898.
5046
5047iASL/DTC: Added support for integer expressions and labels. Support for
5048full
5049expressions for all integer fields in all ACPI tables. Support for labels
5050in
5051"generic" portions of tables such as UEFI. See the iASL reference manual.
5052
5053Debugger: Added a command to display the status of global handlers. The
5054"handlers" command will display op region, fixed event, and miscellaneous
5055global handlers. installation status -- and for op regions, whether
5056default
5057or user-installed handler will be used.
5058
5059iASL: Warn if reserved method incorrectly returns a value. Many
5060predefined
5061names are defined such that they do not return a value. If implemented as
5062a
5063method, issue a warning if such a name explicitly returns a value. ACPICA
5064Bugzilla 855.
5065
5066iASL: Added detection of GPE method name conflicts. Detects a conflict
5067where
5068there are two GPE methods of the form _Lxy and _Exy in the same scope.
5069(For
5070example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
5071
5072iASL/DTC: Fixed a couple input scanner issues with comments and line
5073numbers. Comment remover could get confused and miss a comment ending.
5074Fixed
5075a problem with line counter maintenance.
5076
5077iASL/DTC: Reduced the severity of some errors from fatal to error. There
5078is
5079no need to abort on simple errors within a field definition.
5080
5081Debugger: Simplified the output of the help command. All help output now
5082in
5083a single screen, instead of help subcommands. ACPICA Bugzilla 897.
5084
5085----------------------------------------
508612 January 2011. Summary of changes for version 20110112:
5087
50881) ACPI CA Core Subsystem:
5089
5090Fixed a race condition between method execution and namespace walks that
5091can
5092possibly cause a fault. The problem was apparently introduced in version
509320100528 as a result of a performance optimization that reduces the
5094number
5095of
5096namespace walks upon method exit by using the delete_namespace_subtree
5097function instead of the delete_namespace_by_owner function used
5098previously.
5099Bug is a missing namespace lock in the delete_namespace_subtree function.
5100dana.myers@oracle.com
5101
5102Fixed several issues and a possible fault with the automatic "serialized"
5103method support. History: This support changes a method to "serialized" on
5104the
5105fly if the method generates an AE_ALREADY_EXISTS error, indicating the
5106possibility that it cannot handle reentrancy. This fix repairs a couple
5107of
5108issues seen in the field, especially on machines with many cores:
5109
5110    1) Delete method children only upon the exit of the last thread,
5111       so as to not delete objects out from under other running threads
5112      (and possibly causing a fault.)
5113    2) Set the "serialized" bit for the method only upon the exit of the
5114       Last thread, so as to not cause deadlock when running threads
5115       attempt to exit.
5116    3) Cleanup the use of the AML "MethodFlags" and internal method flags
5117       so that there is no longer any confusion between the two.
5118
5119    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
5120
5121Debugger: Now lock the namespace for duration of a namespace dump.
5122Prevents
5123issues if the namespace is changing dynamically underneath the debugger.
5124Especially affects temporary namespace nodes, since the debugger displays
5125these also.
5126
5127Updated the ordering of include files. The ACPICA headers should appear
5128before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
5129set
5130any necessary compiler-specific defines, etc. Affects the ACPI-related
5131tools
5132and utilities.
5133
5134Updated all ACPICA copyrights and signons to 2011. Added the 2011
5135copyright
5136to all module headers and signons, including the Linux header. This
5137affects
5138virtually every file in the ACPICA core subsystem, iASL compiler, and all
5139utilities.
5140
5141Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
5142project files for VC++ 6.0 are now obsolete. New project files can be
5143found
5144under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
5145details.
5146
5147Example Code and Data Size: These are the sizes for the OS-independent
5148acpica.lib produced by the Microsoft Visual C++ 9.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 (VC 6.0):
5154    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
5155    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
5156  Current Release (VC 9.0):
5157    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5158    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5159
51602) iASL Compiler/Disassembler and Tools:
5161
5162iASL: Added generic data types to the Data Table compiler. Add "generic"
5163data
5164types such as UINT32, String, Unicode, etc., to simplify the generation
5165of
5166platform-defined tables such as UEFI. Lin Ming.
5167
5168iASL: Added listing support for the Data Table Compiler. Adds listing
5169support
5170(-l) to display actual binary output for each line of input code.
5171
5172----------------------------------------
517309 December 2010. Summary of changes for version 20101209:
5174
51751) ACPI CA Core Subsystem:
5176
5177Completed the major overhaul of the GPE support code that was begun in
5178July
51792010. Major features include: removal of _PRW execution in ACPICA (host
5180executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
5181changes to existing interfaces, simplification of GPE handler operation,
5182and
5183a handful of new interfaces:
5184
5185    AcpiUpdateAllGpes
5186    AcpiFinishGpe
5187    AcpiSetupGpeForWake
5188    AcpiSetGpeWakeMask
5189    One new file, evxfgpe.c to consolidate all external GPE interfaces.
5190
5191See the ACPICA Programmer Reference for full details and programming
5192information. See the new section 4.4 "General Purpose Event (GPE)
5193Support"
5194for a full overview, and section 8.7 "ACPI General Purpose Event
5195Management"
5196for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
5197Ming,
5198Bob Moore, Rafael Wysocki.
5199
5200Implemented a new GPE feature for Windows compatibility, the "Implicit
5201Wake
5202GPE Notify". This feature will automatically issue a Notify(2) on a
5203device
5204when a Wake GPE is received if there is no corresponding GPE method or
5205handler. ACPICA BZ 870.
5206
5207Fixed a problem with the Scope() operator during table parse and load
5208phase.
5209During load phase (table load or method execution), the scope operator
5210should
5211not enter the target into the namespace. Instead, it should open a new
5212scope
5213at the target location. Linux BZ 19462, ACPICA BZ 882.
5214
5215Example Code and Data Size: These are the sizes for the OS-independent
5216acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5217debug version of the code includes the debug output trace mechanism and
5218has a
5219much larger code and data size.
5220
5221  Previous Release:
5222    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
5223    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
5224  Current Release:
5225    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5226    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5227
52282) iASL Compiler/Disassembler and Tools:
5229
5230iASL: Relax the alphanumeric restriction on _CID strings. These strings
5231are
5232"bus-specific" per the ACPI specification, and therefore any characters
5233are
5234acceptable. The only checks that can be performed are for a null string
5235and
5236perhaps for a leading asterisk. ACPICA BZ 886.
5237
5238iASL: Fixed a problem where a syntax error that caused a premature EOF
5239condition on the source file emitted a very confusing error message. The
5240premature EOF is now detected correctly. ACPICA BZ 891.
5241
5242Disassembler: Decode the AccessSize within a Generic Address Structure
5243(byte
5244access, word access, etc.) Note, this field does not allow arbitrary bit
5245access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
5246
5247New: AcpiNames utility - Example namespace dump utility. Shows an example
5248of
5249ACPICA configuration for a minimal namespace dump utility. Uses table and
5250namespace managers, but no AML interpreter. Does not add any
5251functionality
5252over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
5253partition and configure ACPICA. ACPICA BZ 883.
5254
5255AML Debugger: Increased the debugger buffer size for method return
5256objects.
5257Was 4K, increased to 16K. Also enhanced error messages for debugger
5258method
5259execution, including the buffer overflow case.
5260
5261----------------------------------------
526213 October 2010. Summary of changes for version 20101013:
5263
52641) ACPI CA Core Subsystem:
5265
5266Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
5267now
5268clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
5269HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
5270
5271Changed the type of the predefined namespace object _TZ from ThermalZone
5272to
5273Device. This was found to be confusing to the host software that
5274processes
5275the various thermal zones, since _TZ is not really a ThermalZone.
5276However,
5277a
5278Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
5279Zhang.
5280
5281Added Windows Vista SP2 to the list of supported _OSI strings. The actual
5282string is "Windows 2006 SP2".
5283
5284Eliminated duplicate code in AcpiUtExecute* functions. Now that the
5285nsrepair
5286code automatically repairs _HID-related strings, this type of code is no
5287longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
5288878.
5289
5290Example Code and Data Size: These are the sizes for the OS-independent
5291acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5292debug version of the code includes the debug output trace mechanism and
5293has a
5294much larger code and data size.
5295
5296  Previous Release:
5297    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5298    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5299  Current Release:
5300    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5301    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5302
53032) iASL Compiler/Disassembler and Tools:
5304
5305iASL: Implemented additional compile-time validation for _HID strings.
5306The
5307non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
5308length
5309of
5310the string must be exactly seven or eight characters. For both _HID and
5311_CID
5312strings, all characters must be alphanumeric. ACPICA BZ 874.
5313
5314iASL: Allow certain "null" resource descriptors. Some BIOS code creates
5315descriptors that are mostly or all zeros, with the expectation that they
5316will
5317be filled in at runtime. iASL now allows this as long as there is a
5318"resource
5319tag" (name) associated with the descriptor, which gives the ASL a handle
5320needed to modify the descriptor. ACPICA BZ 873.
5321
5322Added single-thread support to the generic Unix application OSL.
5323Primarily
5324for iASL support, this change removes the use of semaphores in the
5325single-
5326threaded ACPICA tools/applications - increasing performance. The
5327_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
5328option. ACPICA BZ 879.
5329
5330AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
5331support
5332for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
5333
5334iASL: Moved all compiler messages to a new file, aslmessages.h.
5335
5336----------------------------------------
533715 September 2010. Summary of changes for version 20100915:
5338
53391) ACPI CA Core Subsystem:
5340
5341Removed the AcpiOsDerivePciId OSL interface. The various host
5342implementations
5343of this function were not OS-dependent and are now obsolete and can be
5344removed from all host OSLs. This function has been replaced by
5345AcpiHwDerivePciId, which is now part of the ACPICA core code.
5346AcpiHwDerivePciId has been implemented without recursion. Adds one new
5347module, hwpci.c. ACPICA BZ 857.
5348
5349Implemented a dynamic repair for _HID and _CID strings. The following
5350problems are now repaired at runtime: 1) Remove a leading asterisk in the
5351string, and 2) the entire string is uppercased. Both repairs are in
5352accordance with the ACPI specification and will simplify host driver
5353code.
5354ACPICA BZ 871.
5355
5356The ACPI_THREAD_ID type is no longer configurable, internally it is now
5357always UINT64. This simplifies the ACPICA code, especially any printf
5358output.
5359UINT64 is the only common data type for all thread_id types across all
5360operating systems. It is now up to the host OSL to cast the native
5361thread_id
5362type to UINT64 before returning the value to ACPICA (via
5363AcpiOsGetThreadId).
5364Lin Ming, Bob Moore.
5365
5366Added the ACPI_INLINE type to enhance the ACPICA configuration. The
5367"inline"
5368keyword is not standard across compilers, and this type allows inline to
5369be
5370configured on a per-compiler basis. Lin Ming.
5371
5372Made the system global AcpiGbl_SystemAwakeAndRunning publically
5373available.
5374Added an extern for this boolean in acpixf.h. Some hosts utilize this
5375value
5376during suspend/restore operations. ACPICA BZ 869.
5377
5378All code that implements error/warning messages with the "ACPI:" prefix
5379has
5380been moved to a new module, utxferror.c.
5381
5382The UINT64_OVERLAY was moved to utmath.c, which is the only module where
5383it
5384is used. ACPICA BZ 829. Lin Ming, Bob Moore.
5385
5386Example Code and Data Size: These are the sizes for the OS-independent
5387acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5388debug version of the code includes the debug output trace mechanism and
5389has a
5390much larger code and data size.
5391
5392  Previous Release:
5393    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
5394    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
5395  Current Release:
5396    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5397    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5398
53992) iASL Compiler/Disassembler and Tools:
5400
5401iASL/Disassembler: Write ACPI errors to stderr instead of the output
5402file.
5403This keeps the output files free of random error messages that may
5404originate
5405from within the namespace/interpreter code. Used this opportunity to
5406merge
5407all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
5408866. Lin Ming, Bob Moore.
5409
5410Tools: update some printfs for ansi warnings on size_t. Handle width
5411change
5412of size_t on 32-bit versus 64-bit generations. Lin Ming.
5413
5414----------------------------------------
541506 August 2010. Summary of changes for version 20100806:
5416
54171) ACPI CA Core Subsystem:
5418
5419Designed and implemented a new host interface to the _OSI support code.
5420This
5421will allow the host to dynamically add or remove multiple _OSI strings,
5422as
5423well as install an optional handler that is called for each _OSI
5424invocation.
5425Also added a new AML debugger command, 'osi' to display and modify the
5426global
5427_OSI string table, and test support in the AcpiExec utility. See the
5428ACPICA
5429reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
5430New Functions:
5431    AcpiInstallInterface - Add an _OSI string.
5432    AcpiRemoveInterface - Delete an _OSI string.
5433    AcpiInstallInterfaceHandler - Install optional _OSI handler.
5434Obsolete Functions:
5435    AcpiOsValidateInterface - no longer used.
5436New Files:
5437    source/components/utilities/utosi.c
5438
5439Re-introduced the support to enable multi-byte transfers for Embedded
5440Controller (EC) operation regions. A reported problem was found to be a
5441bug
5442in the host OS, not in the multi-byte support. Previously, the maximum
5443data
5444size passed to the EC operation region handler was a single byte. There
5445are
5446often EC Fields larger than one byte that need to be transferred, and it
5447is
5448useful for the EC driver to lock these as a single transaction. This
5449change
5450enables single transfers larger than 8 bits. This effectively changes the
5451access to the EC space from ByteAcc to AnyAcc, and will probably require
5452changes to the host OS Embedded Controller driver to enable 16/32/64/256-
5453bit
5454transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
5455
5456Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
5457prototype in acpiosxf.h had the output value pointer as a (void *).
5458It should be a (UINT64 *). This may affect some host OSL code.
5459
5460Fixed a couple problems with the recently modified Linux makefiles for
5461iASL
5462and AcpiExec. These new makefiles place the generated object files in the
5463local directory so that there can be no collisions between the files that
5464are
5465shared between them that are compiled with different options.
5466
5467Example Code and Data Size: These are the sizes for the OS-independent
5468acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5469debug version of the code includes the debug output trace mechanism and
5470has a
5471much larger code and data size.
5472
5473  Previous Release:
5474    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5475    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
5476  Current Release:
5477    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
5478    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
5479
54802) iASL Compiler/Disassembler and Tools:
5481
5482iASL/Disassembler: Added a new option (-da, "disassemble all") to load
5483the
5484namespace from and disassemble an entire group of AML files. Useful for
5485loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
5486and
5487disassembling with one simple command. ACPICA BZ 865. Lin Ming.
5488
5489iASL: Allow multiple invocations of -e option. This change allows
5490multiple
5491uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
5492834.
5493Lin Ming.
5494
5495----------------------------------------
549602 July 2010. Summary of changes for version 20100702:
5497
54981) ACPI CA Core Subsystem:
5499
5500Implemented several updates to the recently added GPE reference count
5501support. The model for "wake" GPEs is changing to give the host OS
5502complete
5503control of these GPEs. Eventually, the ACPICA core will not execute any
5504_PRW
5505methods, since the host already must execute them. Also, additional
5506changes
5507were made to help ensure that the reference counts are kept in proper
5508synchronization with reality. Rafael J. Wysocki.
5509
55101) Ensure that GPEs are not enabled twice during initialization.
55112) Ensure that GPE enable masks stay in sync with the reference count.
55123) Do not inadvertently enable GPEs when writing GPE registers.
55134) Remove the internal wake reference counter and add new AcpiGpeWakeup
5514interface. This interface will set or clear individual GPEs for wakeup.
55155) Remove GpeType argument from AcpiEnable and AcpiDisable. These
5516interfaces
5517are now used for "runtime" GPEs only.
5518
5519Changed the behavior of the GPE install/remove handler interfaces. The
5520GPE
5521is
5522no longer disabled during this process, as it was found to cause problems
5523on
5524some machines. Rafael J. Wysocki.
5525
5526Reverted a change introduced in version 20100528 to enable Embedded
5527Controller multi-byte transfers. This change was found to cause problems
5528with
5529Index Fields and possibly Bank Fields. It will be reintroduced when these
5530problems have been resolved.
5531
5532Fixed a problem with references to Alias objects within Package Objects.
5533A
5534reference to an Alias within the definition of a Package was not always
5535resolved properly. Aliases to objects like Processors, Thermal zones,
5536etc.
5537were resolved to the actual object instead of a reference to the object
5538as
5539it
5540should be. Package objects are only allowed to contain integer, string,
5541buffer, package, and reference objects. Redhat bugzilla 608648.
5542
5543Example Code and Data Size: These are the sizes for the OS-independent
5544acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5545debug version of the code includes the debug output trace mechanism and
5546has a
5547much larger code and data size.
5548
5549  Previous Release:
5550    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5551    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
5552  Current Release:
5553    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5554    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
5555
55562) iASL Compiler/Disassembler and Tools:
5557
5558iASL: Implemented a new compiler subsystem to allow definition and
5559compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
5560These
5561are called "ACPI Data Tables", and the new compiler is the "Data Table
5562Compiler". This compiler is intended to simplify the existing error-prone
5563process of creating these tables for the BIOS, as well as allowing the
5564disassembly, modification, recompilation, and override of existing ACPI
5565data
5566tables. See the iASL User Guide for detailed information.
5567
5568iASL: Implemented a new Template Generator option in support of the new
5569Data
5570Table Compiler. This option will create examples of all known ACPI tables
5571that can be used as the basis for table development. See the iASL
5572documentation and the -T option.
5573
5574Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
5575Descriptor Table).
5576
5577Updated the Linux makefiles for iASL and AcpiExec to place the generated
5578object files in the local directory so that there can be no collisions
5579between the shared files between them that are generated with different
5580options.
5581
5582Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
5583Use
5584the #define __APPLE__ to enable this support.
5585
5586----------------------------------------
558728 May 2010. Summary of changes for version 20100528:
5588
5589Note: The ACPI 4.0a specification was released on April 5, 2010 and is
5590available at www.acpi.info. This is primarily an errata release.
5591
55921) ACPI CA Core Subsystem:
5593
5594Undefined ACPI tables: We are looking for the definitions for the
5595following
5596ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
5597
5598Implemented support to enable multi-byte transfers for Embedded
5599Controller
5600(EC) operation regions. Previously, the maximum data size passed to the
5601EC
5602operation region handler was a single byte. There are often EC Fields
5603larger
5604than one byte that need to be transferred, and it is useful for the EC
5605driver
5606to lock these as a single transaction. This change enables single
5607transfers
5608larger than 8 bits. This effectively changes the access to the EC space
5609from
5610ByteAcc to AnyAcc, and will probably require changes to the host OS
5611Embedded
5612Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
5613bit
5614transfers. Alexey Starikovskiy, Lin Ming
5615
5616Implemented a performance enhancement for namespace search and access.
5617This
5618change enhances the performance of namespace searches and walks by adding
5619a
5620backpointer to the parent in each namespace node. On large namespaces,
5621this
5622change can improve overall ACPI performance by up to 9X. Adding a pointer
5623to
5624each namespace node increases the overall size of the internal namespace
5625by
5626about 5%, since each namespace entry usually consists of both a namespace
5627node and an ACPI operand object. However, this is the first growth of the
5628namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
5629
5630Implemented a performance optimization that reduces the number of
5631namespace
5632walks. On control method exit, only walk the namespace if the method is
5633known
5634to have created namespace objects outside of its local scope. Previously,
5635the
5636entire namespace was traversed on each control method exit. This change
5637can
5638improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
5639Moore.
5640
5641Added support to truncate I/O addresses to 16 bits for Windows
5642compatibility.
5643Some ASL code has been seen in the field that inadvertently has bits set
5644above bit 15. This feature is optional and is enabled if the BIOS
5645requests
5646any Windows OSI strings. It can also be enabled by the host OS. Matthew
5647Garrett, Bob Moore.
5648
5649Added support to limit the maximum time for the ASL Sleep() operator. To
5650prevent accidental deep sleeps, limit the maximum time that Sleep() will
5651actually sleep. Configurable, the default maximum is two seconds. ACPICA
5652bugzilla 854.
5653
5654Added run-time validation support for the _WDG and_WED Microsoft
5655predefined
5656methods. These objects are defined by "Windows Instrumentation", and are
5657not
5658part of the ACPI spec. ACPICA BZ 860.
5659
5660Expanded all statistic counters used during namespace and device
5661initialization from 16 to 32 bits in order to support very large
5662namespaces.
5663
5664Replaced all instances of %d in printf format specifiers with %u since
5665nearly
5666all integers in ACPICA are unsigned.
5667
5668Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
5669returned
5670as AE_NO_HANDLER.
5671
5672Example Code and Data Size: These are the sizes for the OS-independent
5673acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5674debug version of the code includes the debug output trace mechanism and
5675has a
5676much larger code and data size.
5677
5678  Previous Release:
5679    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
5680    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
5681  Current Release:
5682    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5683    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
5684
56852) iASL Compiler/Disassembler and Tools:
5686
5687iASL: Added compiler support for the _WDG and_WED Microsoft predefined
5688methods. These objects are defined by "Windows Instrumentation", and are
5689not
5690part of the ACPI spec. ACPICA BZ 860.
5691
5692AcpiExec: added option to disable the memory tracking mechanism. The -dt
5693option will disable the tracking mechanism, which improves performance
5694considerably.
5695
5696AcpiExec: Restructured the command line options into -d (disable) and -e
5697(enable) options.
5698
5699----------------------------------------
570028 April 2010. Summary of changes for version 20100428:
5701
57021) ACPI CA Core Subsystem:
5703
5704Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
5705including FADT-based and GPE Block Devices, execute any _PRW methods in
5706the
5707new table, and process any _Lxx/_Exx GPE methods in the new table. Any
5708runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
5709immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
5710Devices. Provides compatibility with other ACPI implementations. Two new
5711files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
5712Moore.
5713
5714Fixed a regression introduced in version 20100331 within the table
5715manager
5716where initial table loading could fail. This was introduced in the fix
5717for
5718AcpiReallocateRootTable. Also, renamed some of fields in the table
5719manager
5720data structures to clarify their meaning and use.
5721
5722Fixed a possible allocation overrun during internal object copy in
5723AcpiUtCopySimpleObject. The original code did not correctly handle the
5724case
5725where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
5726847.
5727
5728Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
5729possible access beyond end-of-allocation. Also, now fully validate
5730descriptor
5731(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
5732
5733Example Code and Data Size: These are the sizes for the OS-independent
5734acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5735debug version of the code includes the debug output trace mechanism and
5736has a
5737much larger code and data size.
5738
5739  Previous Release:
5740    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
5741    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
5742  Current Release:
5743    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
5744    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
5745
57462) iASL Compiler/Disassembler and Tools:
5747
5748iASL: Implemented Min/Max/Len/Gran validation for address resource
5749descriptors. This change implements validation for the address fields
5750that
5751are common to all address-type resource descriptors. These checks are
5752implemented: Checks for valid Min/Max, length within the Min/Max window,
5753valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
5754per
5755table 6-40 in the ACPI 4.0a specification. Also split the large
5756aslrestype1.c
5757and aslrestype2.c files into five new files. ACPICA BZ 840.
5758
5759iASL: Added support for the _Wxx predefined names. This support was
5760missing
5761and these names were not recognized by the compiler as valid predefined
5762names. ACPICA BZ 851.
5763
5764iASL: Added an error for all predefined names that are defined to return
5765no
5766value and thus must be implemented as Control Methods. These include all
5767of
5768the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
5769names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
5770
5771iASL: Implemented the -ts option to emit hex AML data in ASL format, as
5772an
5773ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
5774be
5775dynamically loaded via the Load() operator. Also cleaned up output for
5776the
5777-
5778ta and -tc options. ACPICA BZ 853.
5779
5780Tests: Added a new file with examples of extended iASL error checking.
5781Demonstrates the advanced error checking ability of the iASL compiler.
5782Available at tests/misc/badcode.asl.
5783
5784----------------------------------------
578531 March 2010. Summary of changes for version 20100331:
5786
57871) ACPI CA Core Subsystem:
5788
5789Completed a major update for the GPE support in order to improve support
5790for
5791shared GPEs and to simplify both host OS and ACPICA code. Added a
5792reference
5793count mechanism to support shared GPEs that require multiple device
5794drivers.
5795Several external interfaces have changed. One external interface has been
5796removed. One new external interface was added. Most of the GPE external
5797interfaces now use the GPE spinlock instead of the events mutex (and the
5798Flags parameter for many GPE interfaces has been removed.) See the
5799updated
5800ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
5801Rafael
5802Wysocki. ACPICA BZ 831.
5803
5804Changed:
5805    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
5806Removed:
5807    AcpiSetGpeType
5808New:
5809    AcpiSetGpe
5810
5811Implemented write support for DataTable operation regions. These regions
5812are
5813defined via the DataTableRegion() operator. Previously, only read support
5814was
5815implemented. The ACPI specification allows DataTableRegions to be
5816read/write,
5817however.
5818
5819Implemented a new subsystem option to force a copy of the DSDT to local
5820memory. Optionally copy the entire DSDT to local memory (instead of
5821simply
5822mapping it.) There are some (albeit very rare) BIOSs that corrupt or
5823replace
5824the original DSDT, creating the need for this option. Default is FALSE,
5825do
5826not copy the DSDT.
5827
5828Implemented detection of a corrupted or replaced DSDT. This change adds
5829support to detect a DSDT that has been corrupted and/or replaced from
5830outside
5831the OS (by firmware). This is typically catastrophic for the system, but
5832has
5833been seen on some machines. Once this problem has been detected, the DSDT
5834copy option can be enabled via system configuration. Lin Ming, Bob Moore.
5835
5836Fixed two problems with AcpiReallocateRootTable during the root table
5837copy.
5838When copying the root table to the new allocation, the length used was
5839incorrect. The new size was used instead of the current table size,
5840meaning
5841too much data was copied. Also, the count of available slots for ACPI
5842tables
5843was not set correctly. Alexey Starikovskiy, Bob Moore.
5844
5845Example Code and Data Size: These are the sizes for the OS-independent
5846acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5847debug version of the code includes the debug output trace mechanism and
5848has a
5849much larger code and data size.
5850
5851  Previous Release:
5852    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
5853    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
5854  Current Release:
5855    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
5856    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
5857
58582) iASL Compiler/Disassembler and Tools:
5859
5860iASL: Implement limited typechecking for values returned from predefined
5861control methods. The type of any returned static (unnamed) object is now
5862validated. For example, Return(1). ACPICA BZ 786.
5863
5864iASL: Fixed a predefined name object verification regression. Fixes a
5865problem
5866introduced in version 20100304. An error is incorrectly generated if a
5867predefined name is declared as a static named object with a value defined
5868using the keywords "Zero", "One", or "Ones". Lin Ming.
5869
5870iASL: Added Windows 7 support for the -g option (get local ACPI tables)
5871by
5872reducing the requested registry access rights. ACPICA BZ 842.
5873
5874Disassembler: fixed a possible fault when generating External()
5875statements.
5876Introduced in commit ae7d6fd: Properly handle externals with parent-
5877prefix
5878(carat). Fixes a string length allocation calculation. Lin Ming.
5879
5880----------------------------------------
588104 March 2010. Summary of changes for version 20100304:
5882
58831) ACPI CA Core Subsystem:
5884
5885Fixed a possible problem with the AML Mutex handling function
5886AcpiExReleaseMutex where the function could fault under the very rare
5887condition when the interpreter has blocked, the interpreter lock is
5888released,
5889the interpreter is then reentered via the same thread, and attempts to
5890acquire an AML mutex that was previously acquired. FreeBSD report 140979.
5891Lin
5892Ming.
5893
5894Implemented additional configuration support for the AML "Debug Object".
5895Output from the debug object can now be enabled via a global variable,
5896AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
5897debugging.
5898This debug output is now available in the release version of ACPICA
5899instead
5900of just the debug version. Also, the entire debug output module can now
5901be
5902configured out of the ACPICA build if desired. One new file added,
5903executer/exdebug.c. Lin Ming, Bob Moore.
5904
5905Added header support for the ACPI MCHI table (Management Controller Host
5906Interface Table). This table was added in ACPI 4.0, but the defining
5907document
5908has only recently become available.
5909
5910Standardized output of integer values for ACPICA warnings/errors. Always
5911use
59120x prefix for hex output, always use %u for unsigned integer decimal
5913output.
5914Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
5915400
5916invocations.) These invocations were converted from the original
5917ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
5918
5919Example Code and Data Size: These are the sizes for the OS-independent
5920acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5921debug version of the code includes the debug output trace mechanism and
5922has a
5923much larger code and data size.
5924
5925  Previous Release:
5926    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
5927    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
5928  Current Release:
5929    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
5930    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
5931
59322) iASL Compiler/Disassembler and Tools:
5933
5934iASL: Implemented typechecking support for static (non-control method)
5935predefined named objects that are declared with the Name() operator. For
5936example, the type of this object is now validated to be of type Integer:
5937Name(_BBN, 1). This change migrates the compiler to using the core
5938predefined
5939name table instead of maintaining a local version. Added a new file,
5940aslpredef.c. ACPICA BZ 832.
5941
5942Disassembler: Added support for the ACPI 4.0 MCHI table.
5943
5944----------------------------------------
594521 January 2010. Summary of changes for version 20100121:
5946
59471) ACPI CA Core Subsystem:
5948
5949Added the 2010 copyright to all module headers and signons. This affects
5950virtually every file in the ACPICA core subsystem, the iASL compiler, the
5951tools/utilities, and the test suites.
5952
5953Implemented a change to the AcpiGetDevices interface to eliminate
5954unnecessary
5955invocations of the _STA method. In the case where a specific _HID is
5956requested, do not run _STA until a _HID match is found. This eliminates
5957potentially dozens of _STA calls during a search for a particular
5958device/HID,
5959which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
5960
5961Implemented an additional repair for predefined method return values.
5962Attempt
5963to repair unexpected NULL elements within returned Package objects.
5964Create
5965an
5966Integer of value zero, a NULL String, or a zero-length Buffer as
5967appropriate.
5968ACPICA BZ 818. Lin Ming, Bob Moore.
5969
5970Removed the obsolete ACPI_INTEGER data type. This type was introduced as
5971the
5972code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
5973(with
597464-bit AML integers). It is now obsolete and this change removes it from
5975the
5976ACPICA code base, replaced by UINT64. The original typedef has been
5977retained
5978for now for compatibility with existing device driver code. ACPICA BZ
5979824.
5980
5981Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
5982in
5983the parse tree object.
5984
5985Added additional warning options for the gcc-4 generation. Updated the
5986source
5987accordingly. This includes some code restructuring to eliminate
5988unreachable
5989code, elimination of some gotos, elimination of unused return values,
5990some
5991additional casting, and removal of redundant declarations.
5992
5993Example Code and Data Size: These are the sizes for the OS-independent
5994acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5995debug version of the code includes the debug output trace mechanism and
5996has a
5997much larger code and data size.
5998
5999  Previous Release:
6000    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6001    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6002  Current Release:
6003    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
6004    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
6005
60062) iASL Compiler/Disassembler and Tools:
6007
6008No functional changes for this release.
6009
6010----------------------------------------
601114 December 2009. Summary of changes for version 20091214:
6012
60131) ACPI CA Core Subsystem:
6014
6015Enhanced automatic data type conversions for predefined name repairs.
6016This
6017change expands the automatic repairs/conversions for predefined name
6018return
6019values to make Integers, Strings, and Buffers fully interchangeable.
6020Also,
6021a
6022Buffer can be converted to a Package of Integers if necessary. The
6023nsrepair.c
6024module was completely restructured. Lin Ming, Bob Moore.
6025
6026Implemented automatic removal of null package elements during predefined
6027name
6028repairs. This change will automatically remove embedded and trailing NULL
6029package elements from returned package objects that are defined to
6030contain
6031a
6032variable number of sub-packages. The driver is then presented with a
6033package
6034with no null elements to deal with. ACPICA BZ 819.
6035
6036Implemented a repair for the predefined _FDE and _GTM names. The expected
6037return value for both names is a Buffer of 5 DWORDs. This repair fixes
6038two
6039possible problems (both seen in the field), where a package of integers
6040is
6041returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
6042Kim.
6043
6044Implemented additional module-level code support. This change will
6045properly
6046execute module-level code that is not at the root of the namespace (under
6047a
6048Device object, etc.). Now executes the code within the current scope
6049instead
6050of the root. ACPICA BZ 762. Lin Ming.
6051
6052Fixed possible mutex acquisition errors when running _REG methods. Fixes
6053a
6054problem where mutex errors can occur when running a _REG method that is
6055in
6056the same scope as a method-defined operation region or an operation
6057region
6058under a module-level IF block. This type of code is rare, so the problem
6059has
6060not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
6061
6062Fixed a possible memory leak during module-level code execution. An
6063object
6064could be leaked for each block of executed module-level code if the
6065interpreter slack mode is enabled This change deletes any implicitly
6066returned
6067object from the module-level code block. Lin Ming.
6068
6069Removed messages for successful predefined repair(s). The repair
6070mechanism
6071was considered too wordy. Now, messages are only unconditionally emitted
6072if
6073the return object cannot be repaired. Existing messages for successful
6074repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
6075827.
6076
6077Example Code and Data Size: These are the sizes for the OS-independent
6078acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6079debug version of the code includes the debug output trace mechanism and
6080has a
6081much larger code and data size.
6082
6083  Previous Release:
6084    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
6085    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
6086  Current Release:
6087    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6088    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6089
60902) iASL Compiler/Disassembler and Tools:
6091
6092iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
6093files
6094were no longer automatically removed at the termination of the compile.
6095
6096acpiexec: Implemented the -f option to specify default region fill value.
6097This option specifies the value used to initialize buffers that simulate
6098operation regions. Default value is zero. Useful for debugging problems
6099that
6100depend on a specific initial value for a region or field.
6101
6102----------------------------------------
610312 November 2009. Summary of changes for version 20091112:
6104
61051) ACPI CA Core Subsystem:
6106
6107Implemented a post-order callback to AcpiWalkNamespace. The existing
6108interface only has a pre-order callback. This change adds an additional
6109parameter for a post-order callback which will be more useful for bus
6110scans.
6111ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
6112
6113Modified the behavior of the operation region memory mapping cache for
6114SystemMemory. Ensure that the memory mappings created for operation
6115regions
6116do not cross 4K page boundaries. Crossing a page boundary while mapping
6117regions can cause kernel warnings on some hosts if the pages have
6118different
6119attributes. Such regions are probably BIOS bugs, and this is the
6120workaround.
6121Linux BZ 14445. Lin Ming.
6122
6123Implemented an automatic repair for predefined methods that must return
6124sorted lists. This change will repair (by sorting) packages returned by
6125_ALR,
6126_PSS, and _TSS. Drivers can now assume that the packages are correctly
6127sorted
6128and do not contain NULL package elements. Adds one new file,
6129namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
6130
6131Fixed a possible fault during predefined name validation if a return
6132Package
6133object contains NULL elements. Also adds a warning if a NULL element is
6134followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
6135may
6136include repair or removal of all such NULL elements where possible.
6137
6138Implemented additional module-level executable AML code support. This
6139change
6140will execute module-level code that is not at the root of the namespace
6141(under a Device object, etc.) at table load time. Module-level executable
6142AML
6143code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
6144
6145Implemented a new internal function to create Integer objects. This
6146function
6147simplifies miscellaneous object creation code. ACPICA BZ 823.
6148
6149Reduced the severity of predefined repair messages, Warning to Info.
6150Since
6151the object was successfully repaired, a warning is too severe. Reduced to
6152an
6153info message for now. These messages may eventually be changed to debug-
6154only.
6155ACPICA BZ 812.
6156
6157Example Code and Data Size: These are the sizes for the OS-independent
6158acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6159debug version of the code includes the debug output trace mechanism and
6160has a
6161much larger code and data size.
6162
6163  Previous Release:
6164    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
6165    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
6166  Current Release:
6167    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
6168    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
6169
61702) iASL Compiler/Disassembler and Tools:
6171
6172iASL: Implemented Switch() with While(1) so that Break works correctly.
6173This
6174change correctly implements the Switch operator with a surrounding
6175While(1)
6176so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
6177
6178iASL: Added a message if a package initializer list is shorter than
6179package
6180length. Adds a new remark for a Package() declaration if an initializer
6181list
6182exists, but is shorter than the declared length of the package. Although
6183technically legal, this is probably a coding error and it is seen in the
6184field. ACPICA BZ 815. Lin Ming, Bob Moore.
6185
6186iASL: Fixed a problem where the compiler could fault after the maximum
6187number
6188of errors was reached (200).
6189
6190acpixtract: Fixed a possible warning for pointer cast if the compiler
6191warning
6192level set very high.
6193
6194----------------------------------------
619513 October 2009. Summary of changes for version 20091013:
6196
61971) ACPI CA Core Subsystem:
6198
6199Fixed a problem where an Operation Region _REG method could be executed
6200more
6201than once. If a custom address space handler is installed by the host
6202before
6203the "initialize operation regions" phase of the ACPICA initialization,
6204any
6205_REG methods for that address space could be executed twice. This change
6206fixes the problem. ACPICA BZ 427. Lin Ming.
6207
6208Fixed a possible memory leak for the Scope() ASL operator. When the exact
6209invocation of "Scope(\)" is executed (change scope to root), one internal
6210operand object was leaked. Lin Ming.
6211
6212Implemented a run-time repair for the _MAT predefined method. If the _MAT
6213return value is defined as a Field object in the AML, and the field
6214size is less than or equal to the default width of an integer (32 or
621564),_MAT
6216can incorrectly return an Integer instead of a Buffer. ACPICA now
6217automatically repairs this problem. ACPICA BZ 810.
6218
6219Implemented a run-time repair for the _BIF and _BIX predefined methods.
6220The
6221"OEM Information" field is often incorrectly returned as an Integer with
6222value zero if the field is not supported by the platform. This is due to
6223an
6224ambiguity in the ACPI specification. The field should always be a string.
6225ACPICA now automatically repairs this problem by returning a NULL string
6226within the returned Package. ACPICA BZ 807.
6227
6228Example Code and Data Size: These are the sizes for the OS-independent
6229acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6230debug version of the code includes the debug output trace mechanism and
6231has a
6232much larger code and data size.
6233
6234  Previous Release:
6235    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
6236    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
6237  Current Release:
6238    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
6239    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
6240
62412) iASL Compiler/Disassembler and Tools:
6242
6243Disassembler: Fixed a problem where references to external symbols that
6244contained one or more parent-prefixes (carats) were not handled
6245correctly,
6246possibly causing a fault. ACPICA BZ 806. Lin Ming.
6247
6248Disassembler: Restructured the code so that all functions that handle
6249external symbols are in a single module. One new file is added,
6250common/dmextern.c.
6251
6252AML Debugger: Added a max count argument for the Batch command (which
6253executes multiple predefined methods within the namespace.)
6254
6255iASL: Updated the compiler documentation (User Reference.) Available at
6256http://www.acpica.org/documentation/. ACPICA BZ 750.
6257
6258AcpiXtract: Updated for Lint and other formatting changes. Close all open
6259files.
6260
6261----------------------------------------
626203 September 2009. Summary of changes for version 20090903:
6263
62641) ACPI CA Core Subsystem:
6265
6266For Windows Vista compatibility, added the automatic execution of an _INI
6267method located at the namespace root (\_INI). This method is executed at
6268table load time. This support is in addition to the automatic execution
6269of
6270\_SB._INI. Lin Ming.
6271
6272Fixed a possible memory leak in the interpreter for AML package objects
6273if
6274the package initializer list is longer than the defined size of the
6275package.
6276This apparently can only happen if the BIOS changes the package size on
6277the
6278fly (seen in a _PSS object), as ASL compilers do not allow this. The
6279interpreter will truncate the package to the defined size (and issue an
6280error
6281message), but previously could leave the extra objects undeleted if they
6282were
6283pre-created during the argument processing (such is the case if the
6284package
6285consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
6286
6287Fixed a problem seen when a Buffer or String is stored to itself via ASL.
6288This has been reported in the field. Previously, ACPICA would zero out
6289the
6290buffer/string. Now, the operation is treated as a noop. Provides Windows
6291compatibility. ACPICA BZ 803. Lin Ming.
6292
6293Removed an extraneous error message for ASL constructs of the form
6294Store(LocalX,LocalX) when LocalX is uninitialized. These curious
6295statements
6296are seen in many BIOSs and are once again treated as NOOPs and no error
6297is
6298emitted when they are encountered. ACPICA BZ 785.
6299
6300Fixed an extraneous warning message if a _DSM reserved method returns a
6301Package object. _DSM can return any type of object, so validation on the
6302return type cannot be performed. ACPICA BZ 802.
6303
6304Example Code and Data Size: These are the sizes for the OS-independent
6305acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6306debug version of the code includes the debug output trace mechanism and
6307has a
6308much larger code and data size.
6309
6310  Previous Release:
6311    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
6312    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
6313  Current Release:
6314    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
6315    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
6316
63172) iASL Compiler/Disassembler and Tools:
6318
6319iASL: Fixed a problem with the use of the Alias operator and Resource
6320Templates. The correct alias is now constructed and no error is emitted.
6321ACPICA BZ 738.
6322
6323iASL: Implemented the -I option to specify additional search directories
6324for
6325include files. Allows multiple additional search paths for include files.
6326Directories are searched in the order specified on the command line
6327(after
6328the local directory is searched.) ACPICA BZ 800.
6329
6330iASL: Fixed a problem where the full pathname for include files was not
6331emitted for warnings/errors. This caused the IDE support to not work
6332properly. ACPICA BZ 765.
6333
6334iASL: Implemented the -@ option to specify a Windows-style response file
6335containing additional command line options. ACPICA BZ 801.
6336
6337AcpiExec: Added support to load multiple AML files simultaneously (such
6338as
6339a
6340DSDT and multiple SSDTs). Also added support for wildcards within the AML
6341pathname. These features allow all machine tables to be easily loaded and
6342debugged together. ACPICA BZ 804.
6343
6344Disassembler: Added missing support for disassembly of HEST table Error
6345Bank
6346subtables.
6347
6348----------------------------------------
634930 July 2009. Summary of changes for version 20090730:
6350
6351The ACPI 4.0 implementation for ACPICA is complete with this release.
6352
63531) ACPI CA Core Subsystem:
6354
6355ACPI 4.0: Added header file support for all new and changed ACPI tables.
6356Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
6357new
6358for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
6359BERT,
6360EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
6361There
6362have been some ACPI 4.0 changes to other existing tables. Split the large
6363actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
6364
6365ACPI 4.0: Implemented predefined name validation for all new names. There
6366are
636731 new names in ACPI 4.0. The predefined validation module was split into
6368two
6369files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
6370
6371Implemented support for so-called "module-level executable code". This is
6372executable AML code that exists outside of any control method and is
6373intended
6374to be executed at table load time. Although illegal since ACPI 2.0, this
6375type
6376of code still exists and is apparently still being created. Blocks of
6377this
6378code are now detected and executed as intended. Currently, the code
6379blocks
6380must exist under either an If, Else, or While construct; these are the
6381typical cases seen in the field. ACPICA BZ 762. Lin Ming.
6382
6383Implemented an automatic dynamic repair for predefined names that return
6384nested Package objects. This applies to predefined names that are defined
6385to
6386return a variable-length Package of sub-packages. If the number of sub-
6387packages is one, BIOS code is occasionally seen that creates a simple
6388single
6389package with no sub-packages. This code attempts to fix the problem by
6390wrapping a new package object around the existing package. These methods
6391can
6392be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
6393BZ
6394790.
6395
6396Fixed a regression introduced in 20090625 for the AcpiGetDevices
6397interface.
6398The _HID/_CID matching was broken and no longer matched IDs correctly.
6399ACPICA
6400BZ 793.
6401
6402Fixed a problem with AcpiReset where the reset would silently fail if the
6403register was one of the protected I/O ports. AcpiReset now bypasses the
6404port
6405validation mechanism. This may eventually be driven into the
6406AcpiRead/Write
6407interfaces.
6408
6409Fixed a regression related to the recent update of the AcpiRead/Write
6410interfaces. A sleep/suspend could fail if the optional PM2 Control
6411register
6412does not exist during an attempt to write the Bus Master Arbitration bit.
6413(However, some hosts already delete the code that writes this bit, and
6414the
6415code may in fact be obsolete at this date.) ACPICA BZ 799.
6416
6417Fixed a problem where AcpiTerminate could fault if inadvertently called
6418twice
6419in succession. ACPICA BZ 795.
6420
6421Example Code and Data Size: These are the sizes for the OS-independent
6422acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6423debug version of the code includes the debug output trace mechanism and
6424has a
6425much larger code and data size.
6426
6427  Previous Release:
6428    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
6429    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
6430  Current Release:
6431    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
6432    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
6433
64342) iASL Compiler/Disassembler and Tools:
6435
6436ACPI 4.0: Implemented disassembler support for all new ACPI tables and
6437changes to existing tables. ACPICA BZ 775.
6438
6439----------------------------------------
644025 June 2009. Summary of changes for version 20090625:
6441
6442The ACPI 4.0 Specification was released on June 16 and is available at
6443www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
6444continue for the next few releases.
6445
64461) ACPI CA Core Subsystem:
6447
6448ACPI 4.0: Implemented interpreter support for the IPMI operation region
6449address space. Includes support for bi-directional data buffers and an
6450IPMI
6451address space handler (to be installed by an IPMI device driver.) ACPICA
6452BZ
6453773. Lin Ming.
6454
6455ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
6456Includes
6457support in both the header files and the disassembler.
6458
6459Completed a major update for the AcpiGetObjectInfo external interface.
6460Changes include:
6461 - Support for variable, unlimited length HID, UID, and CID strings.
6462 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
6463etc.)
6464 - Call the _SxW power methods on behalf of a device object.
6465 - Determine if a device is a PCI root bridge.
6466 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
6467These changes will require an update to all callers of this interface.
6468See
6469the updated ACPICA Programmer Reference for details. One new source file
6470has
6471been added - utilities/utids.c. ACPICA BZ 368, 780.
6472
6473Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
6474transfers. The Value parameter has been extended from 32 bits to 64 bits
6475in
6476order to support new ACPI 4.0 tables. These changes will require an
6477update
6478to
6479all callers of these interfaces. See the ACPICA Programmer Reference for
6480details. ACPICA BZ 768.
6481
6482Fixed several problems with AcpiAttachData. The handler was not invoked
6483when
6484the host node was deleted. The data sub-object was not automatically
6485deleted
6486when the host node was deleted. The interface to the handler had an
6487unused
6488parameter, this was removed. ACPICA BZ 778.
6489
6490Enhanced the function that dumps ACPI table headers. All non-printable
6491characters in the string fields are now replaced with '?' (Signature,
6492OemId,
6493OemTableId, and CompilerId.) ACPI tables with non-printable characters in
6494these fields are occasionally seen in the field. ACPICA BZ 788.
6495
6496Fixed a problem with predefined method repair code where the code that
6497attempts to repair/convert an object of incorrect type is only executed
6498on
6499the first time the predefined method is called. The mechanism that
6500disables
6501warnings on subsequent calls was interfering with the repair mechanism.
6502ACPICA BZ 781.
6503
6504Fixed a possible memory leak in the predefined validation/repair code
6505when
6506a
6507buffer is automatically converted to an expected string object.
6508
6509Removed obsolete 16-bit files from the distribution and from the current
6510git
6511tree head. ACPICA BZ 776.
6512
6513Example Code and Data Size: These are the sizes for the OS-independent
6514acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6515debug version of the code includes the debug output trace mechanism and
6516has a
6517much larger code and data size.
6518
6519  Previous Release:
6520    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
6521    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
6522  Current Release:
6523    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
6524    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
6525
65262) iASL Compiler/Disassembler and Tools:
6527
6528ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
6529operation region keyword. ACPICA BZ 771, 772. Lin Ming.
6530
6531ACPI 4.0: iASL - implemented compile-time validation support for all new
6532predefined names and control methods (31 total). ACPICA BZ 769.
6533
6534----------------------------------------
653521 May 2009. Summary of changes for version 20090521:
6536
65371) ACPI CA Core Subsystem:
6538
6539Disabled the preservation of the SCI enable bit in the PM1 control
6540register.
6541The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
6542to
6543be
6544a "preserved" bit - "OSPM always preserves this bit position", section
65454.7.3.2.1. However, some machines fail if this bit is in fact preserved
6546because the bit needs to be explicitly set by the OS as a workaround. No
6547machines fail if the bit is not preserved. Therefore, ACPICA no longer
6548attempts to preserve this bit.
6549
6550Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
6551incorrectly formed _PRT package could cause a fault. Added validation to
6552ensure that each package element is actually a sub-package.
6553
6554Implemented a new interface to install or override a single control
6555method,
6556AcpiInstallMethod. This interface is useful when debugging in order to
6557repair
6558an existing method or to install a missing method without having to
6559override
6560the entire ACPI table. See the ACPICA Programmer Reference for use and
6561examples. Lin Ming, Bob Moore.
6562
6563Fixed several reference count issues with the DdbHandle object that is
6564created from a Load or LoadTable operator. Prevent premature deletion of
6565the
6566object. Also, mark the object as invalid once the table has been
6567unloaded.
6568This is needed because the handle itself may not be deleted after the
6569table
6570unload, depending on whether it has been stored in a named object by the
6571caller. Lin Ming.
6572
6573Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
6574mutexes of the same sync level are acquired but then not released in
6575strict
6576opposite order, the internally maintained Current Sync Level becomes
6577confused
6578and can cause subsequent execution errors. ACPICA BZ 471.
6579
6580Changed the allowable release order for ASL mutex objects. The ACPI 4.0
6581specification has been changed to make the SyncLevel for mutex objects
6582more
6583useful. When releasing a mutex, the SyncLevel of the mutex must now be
6584the
6585same as the current sync level. This makes more sense than the previous
6586rule
6587(SyncLevel less than or equal). This change updates the code to match the
6588specification.
6589
6590Fixed a problem with the local version of the AcpiOsPurgeCache function.
6591The
6592(local) cache must be locked during all cache object deletions. Andrew
6593Baumann.
6594
6595Updated the Load operator to use operation region interfaces. This
6596replaces
6597direct memory mapping with region access calls. Now, all region accesses
6598go
6599through the installed region handler as they should.
6600
6601Simplified and optimized the NsGetNextNode function. Reduced parameter
6602count
6603and reduced code for this frequently used function.
6604
6605Example Code and Data Size: These are the sizes for the OS-independent
6606acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6607debug version of the code includes the debug output trace mechanism and
6608has a
6609much larger code and data size.
6610
6611  Previous Release:
6612    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
6613    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
6614  Current Release:
6615    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
6616    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
6617
66182) iASL Compiler/Disassembler and Tools:
6619
6620Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
6621problems
6622with sub-table disassembly and handling invalid sub-tables. Attempt
6623recovery
6624after an invalid sub-table ID.
6625
6626----------------------------------------
662722 April 2009. Summary of changes for version 20090422:
6628
66291) ACPI CA Core Subsystem:
6630
6631Fixed a compatibility issue with the recently released I/O port
6632protection
6633mechanism. For windows compatibility, 1) On a port protection violation,
6634simply ignore the request and do not return an exception (allow the
6635control
6636method to continue execution.) 2) If only part of the request overlaps a
6637protected port, read/write the individual ports that are not protected.
6638Linux
6639BZ 13036. Lin Ming
6640
6641Enhanced the execution of the ASL/AML BreakPoint operator so that it
6642actually
6643breaks into the AML debugger if the debugger is present. This matches the
6644ACPI-defined behavior.
6645
6646Fixed several possible warnings related to the use of the configurable
6647ACPI_THREAD_ID. This type can now be configured as either an integer or a
6648pointer with no warnings. Also fixes several warnings in printf-like
6649statements for the 64-bit build when the type is configured as a pointer.
6650ACPICA BZ 766, 767.
6651
6652Fixed a number of possible warnings when compiling with gcc 4+ (depending
6653on
6654warning options.) Examples include printf formats, aliasing, unused
6655globals,
6656missing prototypes, missing switch default statements, use of non-ANSI
6657library functions, use of non-ANSI constructs. See generate/unix/Makefile
6658for
6659a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
6660
6661Example Code and Data Size: These are the sizes for the OS-independent
6662acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6663debug version of the code includes the debug output trace mechanism and
6664has a
6665much larger code and data size.
6666
6667  Previous Release:
6668    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
6669    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
6670  Current Release:
6671    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
6672    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
6673
66742) iASL Compiler/Disassembler and Tools:
6675
6676iASL: Fixed a generation warning from Bison 2.3 and fixed several
6677warnings
6678on
6679the 64-bit build.
6680
6681iASL: Fixed a problem where the Unix/Linux versions of the compiler could
6682not
6683correctly digest Windows/DOS formatted files (with CR/LF).
6684
6685iASL: Added a new option for "quiet mode" (-va) that produces only the
6686compilation summary, not individual errors and warnings. Useful for large
6687batch compilations.
6688
6689AcpiExec: Implemented a new option (-z) to enable a forced
6690semaphore/mutex
6691timeout that can be used to detect hang conditions during execution of
6692AML
6693code (includes both internal semaphores and AML-defined mutexes and
6694events.)
6695
6696Added new makefiles for the generation of acpica in a generic unix-like
6697environment. These makefiles are intended to generate the acpica tools
6698and
6699utilities from the original acpica git source tree structure.
6700
6701Test Suites: Updated and cleaned up the documentation files. Updated the
6702copyrights to 2009, affecting all source files. Use the new version of
6703iASL
6704with quiet mode. Increased the number of available semaphores in the
6705Windows
6706OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
6707added
6708an alternate implementation of the semaphore timeout to allow aslts to
6709execute fully on Cygwin.
6710
6711----------------------------------------
671220 March 2009. Summary of changes for version 20090320:
6713
67141) ACPI CA Core Subsystem:
6715
6716Fixed a possible race condition between AcpiWalkNamespace and dynamic
6717table
6718unloads. Added a reader/writer locking mechanism to allow multiple
6719concurrent
6720namespace walks (readers), but block a dynamic table unload until it can
6721gain
6722exclusive write access to the namespace. This fixes a problem where a
6723table
6724unload could (possibly catastrophically) delete the portion of the
6725namespace
6726that is currently being examined by a walk. Adds a new file, utlock.c,
6727that
6728implements the reader/writer lock mechanism. ACPICA BZ 749.
6729
6730Fixed a regression introduced in version 20090220 where a change to the
6731FADT
6732handling could cause the ACPICA subsystem to access non-existent I/O
6733ports.
6734
6735Modified the handling of FADT register and table (FACS/DSDT) addresses.
6736The
6737FADT can contain both 32-bit and 64-bit versions of these addresses.
6738Previously, the 64-bit versions were favored, meaning that if both 32 and
673964
6740versions were valid, but not equal, the 64-bit version was used. This was
6741found to cause some machines to fail. Now, in this case, the 32-bit
6742version
6743is used instead. This now matches the Windows behavior.
6744
6745Implemented a new mechanism to protect certain I/O ports. Provides
6746Microsoft
6747compatibility and protects the standard PC I/O ports from access via AML
6748code. Adds a new file, hwvalid.c
6749
6750Fixed a possible extraneous warning message from the FADT support. The
6751message warns of a 32/64 length mismatch between the legacy and GAS
6752definitions for a register.
6753
6754Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
6755is
6756made obsolete by the port protection mechanism above. It was previously
6757used
6758to validate the entire address range of an operation region, which could
6759be
6760incorrect if the range included illegal ports, but fields within the
6761operation region did not actually access those ports. Validation is now
6762performed on a per-field basis instead of the entire region.
6763
6764Modified the handling of the PM1 Status Register ignored bit (bit 11.)
6765Ignored bits must be "preserved" according to the ACPI spec. Usually,
6766this
6767means a read/modify/write when writing to the register. However, for
6768status
6769registers, writing a one means clear the event. Writing a zero means
6770preserve
6771the event (do not clear.) This behavior is clarified in the ACPI 4.0
6772spec,
6773and the ACPICA code now simply always writes a zero to the ignored bit.
6774
6775Modified the handling of ignored bits for the PM1 A/B Control Registers.
6776As
6777per the ACPI specification, for the control registers, preserve
6778(read/modify/write) all bits that are defined as either reserved or
6779ignored.
6780
6781Updated the handling of write-only bits in the PM1 A/B Control Registers.
6782When reading the register, zero the write-only bits as per the ACPI spec.
6783ACPICA BZ 443. Lin Ming.
6784
6785Removed "Linux" from the list of supported _OSI strings. Linux no longer
6786wants to reply true to this request. The Windows strings are the only
6787paths
6788through the AML that are tested and known to work properly.
6789
6790  Previous Release:
6791    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
6792    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
6793  Current Release:
6794    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
6795    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
6796
67972) iASL Compiler/Disassembler and Tools:
6798
6799Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
6800and
6801aetables.c
6802
6803----------------------------------------
680420 February 2009. Summary of changes for version 20090220:
6805
68061) ACPI CA Core Subsystem:
6807
6808Optimized the ACPI register locking. Removed locking for reads from the
6809ACPI
6810bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
6811is
6812not required when reading the single-bit registers. The
6813AcpiGetRegisterUnlocked function is no longer needed and has been
6814removed.
6815This will improve performance for reads on these registers. ACPICA BZ
6816760.
6817
6818Fixed the parameter validation for AcpiRead/Write. Now return
6819AE_BAD_PARAMETER if the input register pointer is null, and
6820AE_BAD_ADDRESS
6821if
6822the register has an address of zero. Previously, these cases simply
6823returned
6824AE_OK. For optional registers such as PM1B status/enable/control, the
6825caller
6826should check for a valid register address before calling. ACPICA BZ 748.
6827
6828Renamed the external ACPI bit register access functions. Renamed
6829AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
6830functions. The new names are AcpiReadBitRegister and
6831AcpiWriteBitRegister.
6832Also, restructured the code for these functions by simplifying the code
6833path
6834and condensing duplicate code to reduce code size.
6835
6836Added new functions to transparently handle the possibly split PM1 A/B
6837registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
6838functions
6839now handle the split registers for PM1 Status, Enable, and Control.
6840ACPICA
6841BZ
6842746.
6843
6844Added a function to handle the PM1 control registers,
6845AcpiHwWritePm1Control.
6846This function writes both of the PM1 control registers (A/B). These
6847registers
6848are different than the PM1 A/B status and enable registers in that
6849different
6850values can be written to the A/B registers. Most notably, the SLP_TYP
6851bits
6852can be different, as per the values returned from the _Sx predefined
6853methods.
6854
6855Removed an extra register write within AcpiHwClearAcpiStatus. This
6856function
6857was writing an optional PM1B status register twice. The existing call to
6858the
6859low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
6860A/B
6861register. ACPICA BZ 751.
6862
6863Split out the PM1 Status registers from the FADT. Added new globals for
6864these
6865registers (A/B), similar to the way the PM1 Enable registers are handled.
6866Instead of overloading the FADT Event Register blocks. This makes the
6867code
6868clearer and less prone to error.
6869
6870Fixed the warning message for when the platform contains too many ACPI
6871tables
6872for the default size of the global root table data structure. The
6873calculation
6874for the truncation value was incorrect.
6875
6876Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
6877obsolete macro, since it is now a simple reference to ->common.type.
6878There
6879were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
6880
6881Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
6882TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
6883simply SLEEP_TYPE. ACPICA BZ 754.
6884
6885Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
6886function is only needed on 64-bit host operating systems and is thus not
6887included for 32-bit hosts.
6888
6889Debug output: print the input and result for invocations of the _OSI
6890reserved
6891control method via the ACPI_LV_INFO debug level. Also, reduced some of
6892the
6893verbosity of this debug level. Len Brown.
6894
6895Example Code and Data Size: These are the sizes for the OS-independent
6896acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6897debug version of the code includes the debug output trace mechanism and
6898has a
6899much larger code and data size.
6900
6901  Previous Release:
6902    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
6903    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
6904  Current Release:
6905    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
6906    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
6907
69082) iASL Compiler/Disassembler and Tools:
6909
6910Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
6911various legal performance profiles.
6912
6913----------------------------------------
691423 January 2009. Summary of changes for version 20090123:
6915
69161) ACPI CA Core Subsystem:
6917
6918Added the 2009 copyright to all module headers and signons. This affects
6919virtually every file in the ACPICA core subsystem, the iASL compiler, and
6920the tools/utilities.
6921
6922Implemented a change to allow the host to override any ACPI table,
6923including
6924dynamically loaded tables. Previously, only the DSDT could be replaced by
6925the
6926host. With this change, the AcpiOsTableOverride interface is called for
6927each
6928table found in the RSDT/XSDT during ACPICA initialization, and also
6929whenever
6930a table is dynamically loaded via the AML Load operator.
6931
6932Updated FADT flag definitions, especially the Boot Architecture flags.
6933
6934Debugger: For the Find command, automatically pad the input ACPI name
6935with
6936underscores if the name is shorter than 4 characters. This enables a
6937match
6938with the actual namespace entry which is itself padded with underscores.
6939
6940Example Code and Data Size: These are the sizes for the OS-independent
6941acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6942debug version of the code includes the debug output trace mechanism and
6943has a
6944much larger code and data size.
6945
6946  Previous Release:
6947    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
6948    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
6949  Current Release:
6950    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
6951    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
6952
69532) iASL Compiler/Disassembler and Tools:
6954
6955Fix build error under Bison-2.4.
6956
6957Dissasembler: Enhanced FADT support. Added decoding of the Boot
6958Architecture
6959flags. Now decode all flags, regardless of the FADT version. Flag output
6960includes the FADT version which first defined each flag.
6961
6962The iASL -g option now dumps the RSDT to a file (in addition to the FADT
6963and
6964DSDT). Windows only.
6965
6966----------------------------------------
696704 December 2008. Summary of changes for version 20081204:
6968
69691) ACPI CA Core Subsystem:
6970
6971The ACPICA Programmer Reference has been completely updated and revamped
6972for
6973this release. This includes updates to the external interfaces, OSL
6974interfaces, the overview sections, and the debugger reference.
6975
6976Several new ACPICA interfaces have been implemented and documented in the
6977programmer reference:
6978AcpiReset - Writes the reset value to the FADT-defined reset register.
6979AcpiDisableAllGpes - Disable all available GPEs.
6980AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
6981AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
6982AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
6983AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
6984AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
6985
6986Most of the public ACPI hardware-related interfaces have been moved to a
6987new
6988file, components/hardware/hwxface.c
6989
6990Enhanced the FADT parsing and low-level ACPI register access: The ACPI
6991register lengths within the FADT are now used, and the low level ACPI
6992register access no longer hardcodes the ACPI register lengths. Given that
6993there may be some risk in actually trusting the FADT register lengths, a
6994run-
6995time option was added to fall back to the default hardcoded lengths if
6996the
6997FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
6998option is set to true for now, and a warning is issued if a suspicious
6999FADT
7000register length is overridden with the default value.
7001
7002Fixed a reference count issue in NsRepairObject. This problem was
7003introduced
7004in version 20081031 as part of a fix to repair Buffer objects within
7005Packages. Lin Ming.
7006
7007Added semaphore support to the Linux/Unix application OS-services layer
7008(OSL). ACPICA BZ 448. Lin Ming.
7009
7010Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
7011will
7012be implemented in the OSL, or will binary semaphores be used instead.
7013
7014Example Code and Data Size: These are the sizes for the OS-independent
7015acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7016debug version of the code includes the debug output trace mechanism and
7017has a
7018much larger code and data size.
7019
7020  Previous Release:
7021    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
7022    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
7023  Current Release:
7024    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
7025    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
7026
70272) iASL Compiler/Disassembler and Tools:
7028
7029iASL: Completed the '-e' option to include additional ACPI tables in
7030order
7031to
7032aid with disassembly and External statement generation. ACPICA BZ 742.
7033Lin
7034Ming.
7035
7036iASL: Removed the "named object in while loop" error. The compiler cannot
7037determine how many times a loop will execute. ACPICA BZ 730.
7038
7039Disassembler: Implemented support for FADT revision 2 (MS extension).
7040ACPICA
7041BZ 743.
7042
7043Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
7044MCFG).
7045
7046----------------------------------------
704731 October 2008. Summary of changes for version 20081031:
7048
70491) ACPI CA Core Subsystem:
7050
7051Restructured the ACPICA header files into public/private. acpi.h now
7052includes
7053only the "public" acpica headers. All other acpica headers are "private"
7054and
7055should not be included by acpica users. One new file, accommon.h is used
7056to
7057include the commonly used private headers for acpica code generation.
7058Future
7059plans include moving all private headers to a new subdirectory.
7060
7061Implemented an automatic Buffer->String return value conversion for
7062predefined ACPI methods. For these methods (such as _BIF), added
7063automatic
7064conversion for return objects that are required to be a String, but a
7065Buffer
7066was found instead. This can happen when reading string battery data from
7067an
7068operation region, because it used to be difficult to convert the data
7069from
7070buffer to string from within the ASL. Ensures that the host OS is
7071provided
7072with a valid null-terminated string. Linux BZ 11822.
7073
7074Updated the FACS waking vector interfaces. Split
7075AcpiSetFirmwareWakingVector
7076into two: one for the 32-bit vector, another for the 64-bit vector. This
7077is
7078required because the host OS must setup the wake much differently for
7079each
7080vector (real vs. protected mode, etc.) and the interface itself should
7081not
7082be
7083deciding which vector to use. Also, eliminated the
7084GetFirmwareWakingVector
7085interface, as it served no purpose (only the firmware reads the vector,
7086OS
7087only writes the vector.) ACPICA BZ 731.
7088
7089Implemented a mechanism to escape infinite AML While() loops. Added a
7090loop
7091counter to force exit from AML While loops if the count becomes too
7092large.
7093This can occur in poorly written AML when the hardware does not respond
7094within a while loop and the loop does not implement a timeout. The
7095maximum
7096loop count is configurable. A new exception code is returned when a loop
7097is
7098broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
7099
7100Optimized the execution of AML While loops. Previously, a control state
7101object was allocated and freed for each execution of the loop. The
7102optimization is to simply reuse the control state for each iteration.
7103This
7104speeds up the raw loop execution time by about 5%.
7105
7106Enhanced the implicit return mechanism. For Windows compatibility, return
7107an
7108implicit integer of value zero for methods that contain no executable
7109code.
7110Such methods are seen in the field as stubs (presumably), and can cause
7111drivers to fail if they expect a return value. Lin Ming.
7112
7113Allow multiple backslashes as root prefixes in namepaths. In a fully
7114qualified namepath, allow multiple backslash prefixes. This can happen
7115(and
7116is seen in the field) because of the use of a double-backslash in strings
7117(since backslash is the escape character) causing confusion. ACPICA BZ
7118739
7119Lin Ming.
7120
7121Emit a warning if two different FACS or DSDT tables are discovered in the
7122FADT. Checks if there are two valid but different addresses for the FACS
7123and
7124DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
7125
7126Consolidated the method argument count validation code. Merged the code
7127that
7128validates control method argument counts into the predefined validation
7129module. Eliminates possible multiple warnings for incorrect argument
7130counts.
7131
7132Implemented ACPICA example code. Includes code for ACPICA initialization,
7133handler installation, and calling a control method. Available at
7134source/tools/examples.
7135
7136Added a global pointer for FACS table to simplify internal FACS access.
7137Use
7138the global pointer instead of using AcpiGetTableByIndex for each FACS
7139access.
7140This simplifies the code for the Global Lock and the Firmware Waking
7141Vector(s).
7142
7143Example Code and Data Size: These are the sizes for the OS-independent
7144acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7145debug version of the code includes the debug output trace mechanism and
7146has a
7147much larger code and data size.
7148
7149  Previous Release:
7150    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
7151    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
7152  Current Release:
7153    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
7154    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
7155
71562) iASL Compiler/Disassembler and Tools:
7157
7158iASL: Improved disassembly of external method calls. Added the -e option
7159to
7160allow the inclusion of additional ACPI tables to help with the
7161disassembly
7162of
7163method invocations and the generation of external declarations during the
7164disassembly. Certain external method invocations cannot be disassembled
7165properly without the actual declaration of the method. Use the -e option
7166to
7167include the table where the external method(s) are actually declared.
7168Most
7169useful for disassembling SSDTs that make method calls back to the master
7170DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
7171-d
7172-e dsdt.aml ssdt1.aml
7173
7174iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
7175problem where the use of an alias within a namepath would result in a not
7176found error or cause the compiler to fault. Also now allows forward
7177references from the Alias operator itself. ACPICA BZ 738.
7178
7179----------------------------------------
718026 September 2008. Summary of changes for version 20080926:
7181
71821) ACPI CA Core Subsystem:
7183
7184Designed and implemented a mechanism to validate predefined ACPI methods
7185and
7186objects. This code validates the predefined ACPI objects (objects whose
7187names
7188start with underscore) that appear in the namespace, at the time they are
7189evaluated. The argument count and the type of the returned object are
7190validated against the ACPI specification. The purpose of this validation
7191is
7192to detect problems with the BIOS-implemented predefined ACPI objects
7193before
7194the results are returned to the ACPI-related drivers. Future enhancements
7195may
7196include actual repair of incorrect return objects where possible. Two new
7197files are nspredef.c and acpredef.h.
7198
7199Fixed a fault in the AML parser if a memory allocation fails during the
7200Op
7201completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
7202
7203Fixed an issue with implicit return compatibility. This change improves
7204the
7205implicit return mechanism to be more compatible with the MS interpreter.
7206Lin
7207Ming, ACPICA BZ 349.
7208
7209Implemented support for zero-length buffer-to-string conversions. Allow
7210zero
7211length strings during interpreter buffer-to-string conversions. For
7212example,
7213during the ToDecimalString and ToHexString operators, as well as implicit
7214conversions. Fiodor Suietov, ACPICA BZ 585.
7215
7216Fixed two possible memory leaks in the error exit paths of
7217AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
7218are
7219similar in that they use a stack of state objects in order to eliminate
7220recursion. The stack must be fully unwound and deallocated if an error
7221occurs. Lin Ming. ACPICA BZ 383.
7222
7223Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
7224global
7225ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
7226Moore ACPICA BZ 442.
7227
7228Removed the obsolete version number in module headers. Removed the
7229"$Revision" number that appeared in each module header. This version
7230number
7231was useful under SourceSafe and CVS, but has no meaning under git. It is
7232not
7233only incorrect, it could also be misleading.
7234
7235Example Code and Data Size: These are the sizes for the OS-independent
7236acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7237debug version of the code includes the debug output trace mechanism and
7238has a
7239much larger code and data size.
7240
7241  Previous Release:
7242    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7243    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
7244  Current Release:
7245    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
7246    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
7247
7248----------------------------------------
724929 August 2008. Summary of changes for version 20080829:
7250
72511) ACPI CA Core Subsystem:
7252
7253Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
7254Reference. Changes include the elimination of cheating on the Object
7255field
7256for the DdbHandle subtype, addition of a reference class field to
7257differentiate the various reference types (instead of an AML opcode), and
7258the
7259cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
7260
7261Reduce an error to a warning for an incorrect method argument count.
7262Previously aborted with an error if too few arguments were passed to a
7263control method via the external ACPICA interface. Now issue a warning
7264instead
7265and continue. Handles the case where the method inadvertently declares
7266too
7267many arguments, but does not actually use the extra ones. Applies mainly
7268to
7269the predefined methods. Lin Ming. Linux BZ 11032.
7270
7271Disallow the evaluation of named object types with no intrinsic value.
7272Return
7273AE_TYPE for objects that have no value and therefore evaluation is
7274undefined:
7275Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
7276of
7277these types were allowed, but an exception would be generated at some
7278point
7279during the evaluation. Now, the error is generated up front.
7280
7281Fixed a possible memory leak in the AcpiNsGetExternalPathname function
7282(nsnames.c). Fixes a leak in the error exit path.
7283
7284Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
7285debug
7286levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
7287ACPI_EXCEPTION
7288interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
7289ACPI_LV_EVENTS.
7290
7291Removed obsolete and/or unused exception codes from the acexcep.h header.
7292There is the possibility that certain device drivers may be affected if
7293they
7294use any of these exceptions.
7295
7296The ACPICA documentation has been added to the public git source tree,
7297under
7298acpica/documents. Included are the ACPICA programmer reference, the iASL
7299compiler reference, and the changes.txt release logfile.
7300
7301Example Code and Data Size: These are the sizes for the OS-independent
7302acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7303debug version of the code includes the debug output trace mechanism and
7304has a
7305much larger code and data size.
7306
7307  Previous Release:
7308    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7309    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
7310  Current Release:
7311    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7312    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
7313
73142) iASL Compiler/Disassembler and Tools:
7315
7316Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
7317defines _SCP with 3 arguments. Previous versions defined it with only 1
7318argument. iASL now allows both definitions.
7319
7320iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
7321zero-
7322length subtables when disassembling ACPI tables. Also fixed a couple of
7323errors where a full 16-bit table type field was not extracted from the
7324input
7325properly.
7326
7327acpisrc: Improve comment counting mechanism for generating source code
7328statistics. Count first and last lines of multi-line comments as
7329whitespace,
7330not comment lines. Handle Linux legal header in addition to standard
7331acpica
7332header.
7333
7334----------------------------------------
7335
733629 July 2008. Summary of changes for version 20080729:
7337
73381) ACPI CA Core Subsystem:
7339
7340Fix a possible deadlock in the GPE dispatch. Remove call to
7341AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
7342attempt
7343to acquire the GPE lock but can deadlock since the GPE lock is already
7344held
7345at dispatch time. This code was introduced in version 20060831 as a
7346response
7347to Linux BZ 6881 and has since been removed from Linux.
7348
7349Add a function to dereference returned reference objects. Examines the
7350return
7351object from a call to AcpiEvaluateObject. Any Index or RefOf references
7352are
7353automatically dereferenced in an attempt to return something useful
7354(these
7355reference types cannot be converted into an external ACPI_OBJECT.)
7356Provides
7357MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
7358
7359x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
7360subtables for the MADT and one new subtable for the SRAT. Includes
7361disassembler and AcpiSrc support. Data from the Intel 64 Architecture
7362x2APIC
7363Specification, June 2008.
7364
7365Additional error checking for pathname utilities. Add error check after
7366all
7367calls to AcpiNsGetPathnameLength. Add status return from
7368AcpiNsBuildExternalPath and check after all calls. Add parameter
7369validation
7370to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
7371
7372Return status from the global init function AcpiUtGlobalInitialize. This
7373is
7374used by both the kernel subsystem and the utilities such as iASL
7375compiler.
7376The function could possibly fail when the caches are initialized. Yang
7377Yi.
7378
7379Add a function to decode reference object types to strings. Created for
7380improved error messages.
7381
7382Improve object conversion error messages. Better error messages during
7383object
7384conversion from internal to the external ACPI_OBJECT. Used for external
7385calls
7386to AcpiEvaluateObject.
7387
7388Example Code and Data Size: These are the sizes for the OS-independent
7389acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7390debug version of the code includes the debug output trace mechanism and
7391has a
7392much larger code and data size.
7393
7394  Previous Release:
7395    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
7396    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
7397  Current Release:
7398    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7399    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
7400
74012) iASL Compiler/Disassembler and Tools:
7402
7403Debugger: fix a possible hang when evaluating non-methods. Fixes a
7404problem
7405introduced in version 20080701. If the object being evaluated (via
7406execute
7407command) is not a method, the debugger can hang while trying to obtain
7408non-
7409existent parameters.
7410
7411iASL: relax error for using reserved "_T_x" identifiers. These names can
7412appear in a disassembled ASL file if they were emitted by the original
7413compiler. Instead of issuing an error or warning and forcing the user to
7414manually change these names, issue a remark instead.
7415
7416iASL: error if named object created in while loop. Emit an error if any
7417named
7418object is created within a While loop. If allowed, this code will
7419generate
7420a
7421run-time error on the second iteration of the loop when an attempt is
7422made
7423to
7424create the same named object twice. ACPICA bugzilla 730.
7425
7426iASL: Support absolute pathnames for include files. Add support for
7427absolute
7428pathnames within the Include operator. previously, only relative
7429pathnames
7430were supported.
7431
7432iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
7433Descriptor.
7434The ACPI spec requires one interrupt minimum. BZ 423
7435
7436iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
7437Handles the case for the Interrupt Resource Descriptor where
7438the ResourceSource argument is omitted but ResourceSourceIndex
7439is present. Now leave room for the Index. BZ 426
7440
7441iASL: Prevent error message if CondRefOf target does not exist. Fixes
7442cases
7443where an error message is emitted if the target does not exist. BZ 516
7444
7445iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
7446(get ACPI tables on Windows). This was apparently broken in version
744720070919.
7448
7449AcpiXtract: Handle EOF while extracting data. Correctly handle the case
7450where
7451the EOF happens immediately after the last table in the input file. Print
7452completion message. Previously, no message was displayed in this case.
7453
7454----------------------------------------
745501 July 2008. Summary of changes for version 20080701:
7456
74570) Git source tree / acpica.org
7458
7459Fixed a problem where a git-clone from http would not transfer the entire
7460source tree.
7461
74621) ACPI CA Core Subsystem:
7463
7464Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
7465enable bit. Now performs a read-change-write of the enable register
7466instead
7467of simply writing out the cached enable mask. This will prevent
7468inadvertent
7469enabling of GPEs if a rogue GPE is received during initialization (before
7470GPE
7471handlers are installed.)
7472
7473Implemented a copy for dynamically loaded tables. Previously, dynamically
7474loaded tables were simply mapped - but on some machines this memory is
7475corrupted after suspend. Now copy the table to a local buffer. For the
7476OpRegion case, added checksum verify. Use the table length from the table
7477header, not the region length. For the Buffer case, use the table length
7478also. Dennis Noordsij, Bob Moore. BZ 10734
7479
7480Fixed a problem where the same ACPI table could not be dynamically loaded
7481and
7482unloaded more than once. Without this change, a table cannot be loaded
7483again
7484once it has been loaded/unloaded one time. The current mechanism does not
7485unregister a table upon an unload. During a load, if the same table is
7486found,
7487this no longer returns an exception. BZ 722
7488
7489Fixed a problem where the wrong descriptor length was calculated for the
7490EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
7491EndTag
7492are calculated as 12 bytes long, but the actual length in the internal
7493descriptor is 16 because of the round-up to 8 on the 64-bit build.
7494Reported
7495by Linn Crosetto. BZ 728
7496
7497Fixed a possible memory leak in the Unload operator. The DdbHandle
7498returned
7499by Load() did not have its reference count decremented during unload,
7500leading
7501to a memory leak. Lin Ming. BZ 727
7502
7503Fixed a possible memory leak when deleting thermal/processor objects. Any
7504associated notify handlers (and objects) were not being deleted. Fiodor
7505Suietov. BZ 506
7506
7507Fixed the ordering of the ASCII names in the global mutex table to match
7508the
7509actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
7510only.
7511Vegard Nossum. BZ 726
7512
7513Enhanced the AcpiGetObjectInfo interface to return the number of required
7514arguments if the object is a control method. Added this call to the
7515debugger
7516so the proper number of default arguments are passed to a method. This
7517prevents a warning when executing methods from AcpiExec.
7518
7519Added a check for an invalid handle in AcpiGetObjectInfo. Return
7520AE_BAD_PARAMETER if input handle is invalid. BZ 474
7521
7522Fixed an extraneous warning from exconfig.c on the 64-bit build.
7523
7524Example Code and Data Size: These are the sizes for the OS-independent
7525acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7526debug version of the code includes the debug output trace mechanism and
7527has a
7528much larger code and data size.
7529
7530  Previous Release:
7531    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7532    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7533  Current Release:
7534    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
7535    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
7536
75372) iASL Compiler/Disassembler and Tools:
7538
7539iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
7540resource descriptor names.
7541
7542iASL: Detect invalid ASCII characters in input (windows version). Removed
7543the
7544"-CF" flag from the flex compile, enables correct detection of non-ASCII
7545characters in the input. BZ 441
7546
7547iASL: Eliminate warning when result of LoadTable is not used. Eliminate
7548the
7549"result of operation not used" warning when the DDB handle returned from
7550LoadTable is not used. The warning is not needed. BZ 590
7551
7552AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
7553method
7554to
7555pass address of table to the AML. Added option to disable OpRegion
7556simulation
7557to allow creation of an OpRegion with a real address that was passed to
7558_CFG.
7559All of this allows testing of the Load and Unload operators from
7560AcpiExec.
7561
7562Debugger: update tables command for unloaded tables. Handle unloaded
7563tables
7564and use the standard table header output routine.
7565
7566----------------------------------------
756709 June 2008. Summary of changes for version 20080609:
7568
75691) ACPI CA Core Subsystem:
7570
7571Implemented a workaround for reversed _PRT entries. A significant number
7572of
7573BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
7574change dynamically detects and repairs this problem. Provides
7575compatibility
7576with MS ACPI. BZ 6859
7577
7578Simplified the internal ACPI hardware interfaces to eliminate the locking
7579flag parameter from Register Read/Write. Added a new external interface,
7580AcpiGetRegisterUnlocked.
7581
7582Fixed a problem where the invocation of a GPE control method could hang.
7583This
7584was a regression introduced in 20080514. The new method argument count
7585validation mechanism can enter an infinite loop when a GPE method is
7586dispatched. Problem fixed by removing the obsolete code that passed GPE
7587block
7588information to the notify handler via the control method parameter
7589pointer.
7590
7591Fixed a problem where the _SST execution status was incorrectly returned
7592to
7593the caller of AcpiEnterSleepStatePrep. This was a regression introduced
7594in
759520080514. _SST is optional and a NOT_FOUND exception should never be
7596returned. BZ 716
7597
7598Fixed a problem where a deleted object could be accessed from within the
7599AML
7600parser. This was a regression introduced in version 20080123 as a fix for
7601the
7602Unload operator. Lin Ming. BZ 10669
7603
7604Cleaned up the debug operand dump mechanism. Eliminated unnecessary
7605operands
7606and eliminated the use of a negative index in a loop. Operands are now
7607displayed in the correct order, not backwards. This also fixes a
7608regression
7609introduced in 20080514 on 64-bit systems where the elimination of
7610ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
7611715
7612
7613Fixed a possible memory leak in EvPciConfigRegionSetup where the error
7614exit
7615path did not delete a locally allocated structure.
7616
7617Updated definitions for the DMAR and SRAT tables to synchronize with the
7618current specifications. Includes disassembler support.
7619
7620Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
7621loop termination value was used. Loop terminated on iteration early,
7622missing
7623one mutex. Linn Crosetto
7624
7625Example Code and Data Size: These are the sizes for the OS-independent
7626acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7627debug version of the code includes the debug output trace mechanism and
7628has a
7629much larger code and data size.
7630
7631  Previous Release:
7632    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
7633    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
7634  Current Release:
7635    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7636    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7637
76382) iASL Compiler/Disassembler and Tools:
7639
7640Disassembler: Implemented support for EisaId() within _CID objects. Now
7641disassemble integer _CID objects back to EisaId invocations, including
7642multiple integers within _CID packages. Includes single-step support for
7643debugger also.
7644
7645Disassembler: Added support for DMAR and SRAT table definition changes.
7646
7647----------------------------------------
764814 May 2008. Summary of changes for version 20080514:
7649
76501) ACPI CA Core Subsystem:
7651
7652Fixed a problem where GPEs were enabled too early during the ACPICA
7653initialization. This could lead to "handler not installed" errors on some
7654machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
7655This
7656ensures that all operation regions and devices throughout the namespace
7657have
7658been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
7659
7660Implemented a change to the enter sleep code. Moved execution of the _GTS
7661method to just before setting sleep enable bit. The execution was moved
7662from
7663AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
7664immediately before the SLP_EN bit is set, as per the ACPI specification.
7665Luming Yu, BZ 1653.
7666
7667Implemented a fix to disable unknown GPEs (2nd version). Now always
7668disable
7669the GPE, even if ACPICA thinks that that it is already disabled. It is
7670possible that the AML or some other code has enabled the GPE unbeknownst
7671to
7672the ACPICA code.
7673
7674Fixed a problem with the Field operator where zero-length fields would
7675return
7676an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
7677ASL
7678field declarations in Field(), BankField(), and IndexField(). BZ 10606.
7679
7680Implemented a fix for the Load operator, now load the table at the
7681namespace
7682root. This reverts a change introduced in version 20071019. The table is
7683now
7684loaded at the namespace root even though this goes against the ACPI
7685specification. This provides compatibility with other ACPI
7686implementations.
7687The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
7688Ming.
7689
7690Fixed a problem where ACPICA would not Load() tables with unusual
7691signatures.
7692Now ignore ACPI table signature for Load() operator. Only "SSDT" is
7693acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
7694Therefore, signature validation is worthless. Apparently MS ACPI accepts
7695such
7696signatures, ACPICA must be compatible. BZ 10454.
7697
7698Fixed a possible negative array index in AcpiUtValidateException. Added
7699NULL
7700fields to the exception string arrays to eliminate a -1 subtraction on
7701the
7702SubStatus field.
7703
7704Updated the debug tracking macros to reduce overall code and data size.
7705Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
7706instead of pointers to static strings. Jan Beulich and Bob Moore.
7707
7708Implemented argument count checking in control method invocation via
7709AcpiEvaluateObject. Now emit an error if too few arguments, warning if
7710too
7711many. This applies only to extern programmatic control method execution,
7712not
7713method-to-method calls within the AML. Lin Ming.
7714
7715Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
7716no
7717longer needed, especially with the removal of 16-bit support. It was
7718replaced
7719mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
7720bit
7721on
772232/64-bit platforms is required.
7723
7724Added the C const qualifier for appropriate string constants -- mostly
7725MODULE_NAME and printf format strings. Jan Beulich.
7726
7727Example Code and Data Size: These are the sizes for the OS-independent
7728acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7729debug version of the code includes the debug output trace mechanism and
7730has a
7731much larger code and data size.
7732
7733  Previous Release:
7734    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
7735    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
7736  Current Release:
7737    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
7738    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
7739
77402) iASL Compiler/Disassembler and Tools:
7741
7742Implemented ACPI table revision ID validation in the disassembler. Zero
7743is
7744always invalid. For DSDTs, the ID controls the interpreter integer width.
77451
7746means 32-bit and this is unusual. 2 or greater is 64-bit.
7747
7748----------------------------------------
774921 March 2008. Summary of changes for version 20080321:
7750
77511) ACPI CA Core Subsystem:
7752
7753Implemented an additional change to the GPE support in order to suppress
7754spurious or stray GPEs. The AcpiEvDisableGpe function will now
7755permanently
7756disable incoming GPEs that are neither enabled nor disabled -- meaning
7757that
7758the GPE is unknown to the system. This should prevent future interrupt
7759floods
7760from that GPE. BZ 6217 (Zhang Rui)
7761
7762Fixed a problem where NULL package elements were not returned to the
7763AcpiEvaluateObject interface correctly. The element was simply ignored
7764instead of returning a NULL ACPI_OBJECT package element, potentially
7765causing
7766a buffer overflow and/or confusing the caller who expected a fixed number
7767of
7768elements. BZ 10132 (Lin Ming, Bob Moore)
7769
7770Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
7771Dword,
7772Qword), Field, BankField, and IndexField operators when invoked from
7773inside
7774an executing control method. In this case, these operators created
7775namespace
7776nodes that were incorrectly left marked as permanent nodes instead of
7777temporary nodes. This could cause a problem if there is race condition
7778between an exiting control method and a running namespace walk. (Reported
7779by
7780Linn Crosetto)
7781
7782Fixed a problem where the CreateField and CreateXXXField operators would
7783incorrectly allow duplicate names (the name of the field) with no
7784exception
7785generated.
7786
7787Implemented several changes for Notify handling. Added support for new
7788Notify
7789values (ACPI 2.0+) and improved the Notify debug output. Notify on
7790PowerResource objects is no longer allowed, as per the ACPI
7791specification.
7792(Bob Moore, Zhang Rui)
7793
7794All Reference Objects returned via the AcpiEvaluateObject interface are
7795now
7796marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
7797for
7798NULL objects - either NULL package elements or unresolved named
7799references.
7800
7801Fixed a problem where an extraneous debug message was produced for
7802package
7803objects (when debugging enabled). The message "Package List length larger
7804than NumElements count" is now produced in the correct case, and is now
7805an
7806error message rather than a debug message. Added a debug message for the
7807opposite case, where NumElements is larger than the Package List (the
7808package
7809will be padded out with NULL elements as per the ACPI spec.)
7810
7811Implemented several improvements for the output of the ASL "Debug" object
7812to
7813clarify and keep all data for a given object on one output line.
7814
7815Fixed two size calculation issues with the variable-length Start
7816Dependent
7817resource descriptor.
7818
7819Example Code and Data Size: These are the sizes for the OS-independent
7820acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7821debug version of the code includes the debug output trace mechanism and
7822has
7823a much larger code and data size.
7824
7825  Previous Release:
7826    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
7827    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
7828  Current Release:
7829    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
7830    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
7831
78322) iASL Compiler/Disassembler and Tools:
7833
7834Fixed a problem with the use of the Switch operator where execution of
7835the
7836containing method by multiple concurrent threads could cause an
7837AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
7838actual Switch opcode, it must be simulated with local named temporary
7839variables and if/else pairs. The solution chosen was to mark any method
7840that
7841uses Switch as Serialized, thus preventing multiple thread entries. BZ
7842469.
7843
7844----------------------------------------
784513 February 2008. Summary of changes for version 20080213:
7846
78471) ACPI CA Core Subsystem:
7848
7849Implemented another MS compatibility design change for GPE/Notify
7850handling.
7851GPEs are now cleared/enabled asynchronously to allow all pending notifies
7852to
7853complete first. It is expected that the OSL will queue the enable request
7854behind all pending notify requests (may require changes to the local host
7855OSL
7856in AcpiOsExecute). Alexey Starikovskiy.
7857
7858Fixed a problem where buffer and package objects passed as arguments to a
7859control method via the external AcpiEvaluateObject interface could cause
7860an
7861AE_AML_INTERNAL exception depending on the order and type of operators
7862executed by the target control method.
7863
7864Fixed a problem where resource descriptor size optimization could cause a
7865problem when a _CRS resource template is passed to a _SRS method. The
7866_SRS
7867resource template must use the same descriptors (with the same size) as
7868returned from _CRS. This change affects the following resource
7869descriptors:
7870IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
78719487)
7872
7873Fixed a problem where a CopyObject to RegionField, BankField, and
7874IndexField
7875objects did not perform an implicit conversion as it should. These types
7876must
7877retain their initial type permanently as per the ACPI specification.
7878However,
7879a CopyObject to all other object types should not perform an implicit
7880conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
7881
7882Fixed a problem with the AcpiGetDevices interface where the mechanism to
7883match device CIDs did not examine the entire list of available CIDs, but
7884instead aborted on the first non-matching CID. Andrew Patterson.
7885
7886Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
7887was
7888inadvertently changed to return a 16-bit value instead of a 32-bit value,
7889truncating the upper dword of a 64-bit value. This macro is only used to
7890display debug output, so no incorrect calculations were made. Also,
7891reimplemented the macro so that a 64-bit shift is not performed by
7892inefficient compilers.
7893
7894Added missing va_end statements that should correspond with each va_start
7895statement.
7896
7897Example Code and Data Size: These are the sizes for the OS-independent
7898acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7899debug version of the code includes the debug output trace mechanism and
7900has
7901a much larger code and data size.
7902
7903  Previous Release:
7904    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
7905    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
7906  Current Release:
7907    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
7908    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
7909
79102) iASL Compiler/Disassembler and Tools:
7911
7912Implemented full disassembler support for the following new ACPI tables:
7913BERT, EINJ, and ERST. Implemented partial disassembler support for the
7914complicated HEST table. These tables support the Windows Hardware Error
7915Architecture (WHEA).
7916
7917----------------------------------------
791823 January 2008. Summary of changes for version 20080123:
7919
79201) ACPI CA Core Subsystem:
7921
7922Added the 2008 copyright to all module headers and signons. This affects
7923virtually every file in the ACPICA core subsystem, the iASL compiler, and
7924the tools/utilities.
7925
7926Fixed a problem with the SizeOf operator when used with Package and
7927Buffer
7928objects. These objects have deferred execution for some arguments, and
7929the
7930execution is now completed before the SizeOf is executed. This problem
7931caused
7932unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
7933BZ
79349558
7935
7936Implemented an enhancement to the interpreter "slack mode". In the
7937absence
7938of
7939an explicit return or an implicitly returned object from the last
7940executed
7941opcode, a control method will now implicitly return an integer of value 0
7942for
7943Microsoft compatibility. (Lin Ming) BZ 392
7944
7945Fixed a problem with the Load operator where an exception was not
7946returned
7947in
7948the case where the table is already loaded. (Lin Ming) BZ 463
7949
7950Implemented support for the use of DDBHandles as an Indexed Reference, as
7951per
7952the ACPI spec. (Lin Ming) BZ 486
7953
7954Implemented support for UserTerm (Method invocation) for the Unload
7955operator
7956as per the ACPI spec. (Lin Ming) BZ 580
7957
7958Fixed a problem with the LoadTable operator where the OemId and
7959OemTableId
7960input strings could cause unexpected failures if they were shorter than
7961the
7962maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
7963
7964Implemented support for UserTerm (Method invocation) for the Unload
7965operator
7966as per the ACPI spec. (Lin Ming) BZ 580
7967
7968Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
7969HEST,
7970IBFT, UEFI, WDAT. Disassembler support is forthcoming.
7971
7972Example Code and Data Size: These are the sizes for the OS-independent
7973acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7974debug version of the code includes the debug output trace mechanism and
7975has
7976a much larger code and data size.
7977
7978  Previous Release:
7979    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
7980    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
7981  Current Release:
7982    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
7983    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
7984
79852) iASL Compiler/Disassembler and Tools:
7986
7987Implemented support in the disassembler for checksum validation on
7988incoming
7989binary DSDTs and SSDTs. If incorrect, a message is displayed within the
7990table
7991header dump at the start of the disassembly.
7992
7993Implemented additional debugging information in the namespace listing
7994file
7995created during compilation. In addition to the namespace hierarchy, the
7996full
7997pathname to each namespace object is displayed.
7998
7999Fixed a problem with the disassembler where invalid ACPI tables could
8000cause
8001faults or infinite loops.
8002
8003Fixed an unexpected parse error when using the optional "parameter types"
8004list in a control method declaration. (Lin Ming) BZ 397
8005
8006Fixed a problem where two External declarations with the same name did
8007not
8008cause an error (Lin Ming) BZ 509
8009
8010Implemented support for full TermArgs (adding Argx, Localx and method
8011invocation) for the ParameterData parameter to the LoadTable operator.
8012(Lin
8013Ming) BZ 583,587
8014
8015----------------------------------------
801619 December 2007. Summary of changes for version 20071219:
8017
80181) ACPI CA Core Subsystem:
8019
8020Implemented full support for deferred execution for the TermArg string
8021arguments for DataTableRegion. This enables forward references and full
8022operand resolution for the three string arguments. Similar to
8023OperationRegion
8024deferred argument execution.) Lin Ming. BZ 430
8025
8026Implemented full argument resolution support for the BankValue argument
8027to
8028BankField. Previously, only constants were supported, now any TermArg may
8029be
8030used. Lin Ming BZ 387, 393
8031
8032Fixed a problem with AcpiGetDevices where the search of a branch of the
8033device tree could be terminated prematurely. In accordance with the ACPI
8034specification, the search down the current branch is terminated if a
8035device
8036is both not present and not functional (instead of just not present.)
8037Yakui
8038Zhao.
8039
8040Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
8041if
8042the underlying AML code changed the GPE enable registers. Now, any
8043unknown
8044incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
8045disabled
8046instead of simply ignored. Rui Zhang.
8047
8048Fixed a problem with Index Fields where the Index register was
8049incorrectly
8050limited to a maximum of 32 bits. Now any size may be used.
8051
8052Fixed a couple memory leaks associated with "implicit return" objects
8053when
8054the AML Interpreter slack mode is enabled. Lin Ming BZ 349
8055
8056Example Code and Data Size: These are the sizes for the OS-independent
8057acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8058debug version of the code includes the debug output trace mechanism and
8059has
8060a much larger code and data size.
8061
8062  Previous Release:
8063    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
8064    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
8065  Current Release:
8066    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
8067    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
8068
8069----------------------------------------
807014 November 2007. Summary of changes for version 20071114:
8071
80721) ACPI CA Core Subsystem:
8073
8074Implemented event counters for each of the Fixed Events, the ACPI SCI
8075(interrupt) itself, and control methods executed. Named
8076AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
8077These
8078should be useful for debugging and statistics.
8079
8080Implemented a new external interface, AcpiGetStatistics, to retrieve the
8081contents of the various event counters. Returns the current values for
8082AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
8083AcpiMethodCount. The interface can be expanded in the future if new
8084counters
8085are added. Device drivers should use this interface rather than access
8086the
8087counters directly.
8088
8089Fixed a problem with the FromBCD and ToBCD operators. With some
8090compilers,
8091the ShortDivide function worked incorrectly, causing problems with the
8092BCD
8093functions with large input values. A truncation from 64-bit to 32-bit
8094inadvertently occurred. Internal BZ 435. Lin Ming
8095
8096Fixed a problem with Index references passed as method arguments.
8097References
8098passed as arguments to control methods were dereferenced immediately
8099(before
8100control was passed to the called method). The references are now
8101correctly
8102passed directly to the called method. BZ 5389. Lin Ming
8103
8104Fixed a problem with CopyObject used in conjunction with the Index
8105operator.
8106The reference was incorrectly dereferenced before the copy. The reference
8107is
8108now correctly copied. BZ 5391. Lin Ming
8109
8110Fixed a problem with Control Method references within Package objects.
8111These
8112references are now correctly generated. This completes the package
8113construction overhaul that began in version 20071019.
8114
8115Example Code and Data Size: These are the sizes for the OS-independent
8116acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8117debug version of the code includes the debug output trace mechanism and
8118has
8119a much larger code and data size.
8120
8121  Previous Release:
8122    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
8123    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
8124  Current Release:
8125    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
8126    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
8127
8128
81292) iASL Compiler/Disassembler and Tools:
8130
8131The AcpiExec utility now installs handlers for all of the predefined
8132Operation Region types. New types supported are: PCI_Config, CMOS, and
8133PCIBARTarget.
8134
8135Fixed a problem with the 64-bit version of AcpiExec where the extended
8136(64-
8137bit) address fields for the DSDT and FACS within the FADT were not being
8138used, causing truncation of the upper 32-bits of these addresses. Lin
8139Ming
8140and Bob Moore
8141
8142----------------------------------------
814319 October 2007. Summary of changes for version 20071019:
8144
81451) ACPI CA Core Subsystem:
8146
8147Fixed a problem with the Alias operator when the target of the alias is a
8148named ASL operator that opens a new scope -- Scope, Device,
8149PowerResource,
8150Processor, and ThermalZone. In these cases, any children of the original
8151operator could not be accessed via the alias, potentially causing
8152unexpected
8153AE_NOT_FOUND exceptions. (BZ 9067)
8154
8155Fixed a problem with the Package operator where all named references were
8156created as object references and left otherwise unresolved. According to
8157the
8158ACPI specification, a Package can only contain Data Objects or references
8159to
8160control methods. The implication is that named references to Data Objects
8161(Integer, Buffer, String, Package, BufferField, Field) should be resolved
8162immediately upon package creation. This is the approach taken with this
8163change. References to all other named objects (Methods, Devices, Scopes,
8164etc.) are all now properly created as reference objects. (BZ 5328)
8165
8166Reverted a change to Notify handling that was introduced in version
816720070508. This version changed the Notify handling from asynchronous to
8168fully synchronous (Device driver Notify handling with respect to the
8169Notify
8170ASL operator). It was found that this change caused more problems than it
8171solved and was removed by most users.
8172
8173Fixed a problem with the Increment and Decrement operators where the type
8174of
8175the target object could be unexpectedly and incorrectly changed. (BZ 353)
8176Lin Ming.
8177
8178Fixed a problem with the Load and LoadTable operators where the table
8179location within the namespace was ignored. Instead, the table was always
8180loaded into the root or current scope. Lin Ming.
8181
8182Fixed a problem with the Load operator when loading a table from a buffer
8183object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
8184
8185Fixed a problem with the Debug object where a store of a DdbHandle
8186reference
8187object to the Debug object could cause a fault.
8188
8189Added a table checksum verification for the Load operator, in the case
8190where
8191the load is from a buffer. (BZ 578).
8192
8193Implemented additional parameter validation for the LoadTable operator.
8194The
8195length of the input strings SignatureString, OemIdString, and OemTableId
8196are
8197now checked for maximum lengths. (BZ 582) Lin Ming.
8198
8199Example Code and Data Size: These are the sizes for the OS-independent
8200acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8201debug version of the code includes the debug output trace mechanism and
8202has
8203a much larger code and data size.
8204
8205  Previous Release:
8206    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
8207    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
8208  Current Release:
8209    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
8210    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
8211
8212
82132) iASL Compiler/Disassembler:
8214
8215Fixed a problem where if a single file was specified and the file did not
8216exist, no error message was emitted. (Introduced with wildcard support in
8217version 20070917.)
8218
8219----------------------------------------
822019 September 2007. Summary of changes for version 20070919:
8221
82221) ACPI CA Core Subsystem:
8223
8224Designed and implemented new external interfaces to install and remove
8225handlers for ACPI table-related events. Current events that are defined
8226are
8227LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
8228they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
8229AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
8230
8231Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
8232(acpi_serialized option on Linux) could cause some systems to hang during
8233initialization. (Bob Moore) BZ 8171
8234
8235Fixed a problem where objects of certain types (Device, ThermalZone,
8236Processor, PowerResource) can be not found if they are declared and
8237referenced from within the same control method (Lin Ming) BZ 341
8238
8239Example Code and Data Size: These are the sizes for the OS-independent
8240acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8241debug version of the code includes the debug output trace mechanism and
8242has
8243a much larger code and data size.
8244
8245  Previous Release:
8246    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
8247    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
8248  Current Release:
8249    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
8250    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
8251
8252
82532) iASL Compiler/Disassembler:
8254
8255Implemented support to allow multiple files to be compiled/disassembled
8256in
8257a
8258single invocation. This includes command line wildcard support for both
8259the
8260Windows and Unix versions of the compiler. This feature simplifies the
8261disassembly and compilation of multiple ACPI tables in a single
8262directory.
8263
8264----------------------------------------
826508 May 2007. Summary of changes for version 20070508:
8266
82671) ACPI CA Core Subsystem:
8268
8269Implemented a Microsoft compatibility design change for the handling of
8270the
8271Notify AML operator. Previously, notify handlers were dispatched and
8272executed completely asynchronously in a deferred thread. The new design
8273still executes the notify handlers in a different thread, but the
8274original
8275thread that executed the Notify() now waits at a synchronization point
8276for
8277the notify handler to complete. Some machines depend on a synchronous
8278Notify
8279operator in order to operate correctly.
8280
8281Implemented support to allow Package objects to be passed as method
8282arguments to the external AcpiEvaluateObject interface. Previously, this
8283would return the AE_NOT_IMPLEMENTED exception. This feature had not been
8284implemented since there were no reserved control methods that required it
8285until recently.
8286
8287Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
8288that
8289contained invalid non-zero values in reserved fields could cause later
8290failures because these fields have meaning in later revisions of the
8291FADT.
8292For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
8293fields
8294are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
8295
8296Fixed a problem where the Global Lock handle was not properly updated if
8297a
8298thread that acquired the Global Lock via executing AML code then
8299attempted
8300to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
8301Joe
8302Liu.
8303
8304Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
8305could be corrupted if the interrupt being removed was at the head of the
8306list. Reported by Linn Crosetto.
8307
8308Example Code and Data Size: These are the sizes for the OS-independent
8309acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8310debug version of the code includes the debug output trace mechanism and
8311has
8312a much larger code and data size.
8313
8314  Previous Release:
8315    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8316    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
8317  Current Release:
8318    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
8319    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
8320
8321----------------------------------------
832220 March 2007. Summary of changes for version 20070320:
8323
83241) ACPI CA Core Subsystem:
8325
8326Implemented a change to the order of interpretation and evaluation of AML
8327operand objects within the AML interpreter. The interpreter now evaluates
8328operands in the order that they appear in the AML stream (and the
8329corresponding ASL code), instead of in the reverse order (after the
8330entire
8331operand list has been parsed). The previous behavior caused several
8332subtle
8333incompatibilities with the Microsoft AML interpreter as well as being
8334somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
8335
8336Implemented a change to the ACPI Global Lock support. All interfaces to
8337the
8338global lock now allow the same thread to acquire the lock multiple times.
8339This affects the AcpiAcquireGlobalLock external interface to the global
8340lock
8341as well as the internal use of the global lock to support AML fields -- a
8342control method that is holding the global lock can now simultaneously
8343access
8344AML fields that require global lock protection. Previously, in both
8345cases,
8346this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
8347to
8348AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
8349Controller. There is no change to the behavior of the AML Acquire
8350operator,
8351as this can already be used to acquire a mutex multiple times by the same
8352thread. BZ 8066. With assistance from Alexey Starikovskiy.
8353
8354Fixed a problem where invalid objects could be referenced in the AML
8355Interpreter after error conditions. During operand evaluation, ensure
8356that
8357the internal "Return Object" field is cleared on error and only valid
8358pointers are stored there. Caused occasional access to deleted objects
8359that
8360resulted in "large reference count" warning messages. Valery Podrezov.
8361
8362Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
8363on
8364deeply nested control method invocations. BZ 7873, local BZ 487. Valery
8365Podrezov.
8366
8367Fixed an internal problem with the handling of result objects on the
8368interpreter result stack. BZ 7872. Valery Podrezov.
8369
8370Removed obsolete code that handled the case where AML_NAME_OP is the
8371target
8372of a reference (Reference.Opcode). This code was no longer necessary. BZ
83737874. Valery Podrezov.
8374
8375Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
8376was
8377a
8378remnant from the previously discontinued 16-bit support.
8379
8380Example Code and Data Size: These are the sizes for the OS-independent
8381acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8382debug version of the code includes the debug output trace mechanism and
8383has
8384a much larger code and data size.
8385
8386  Previous Release:
8387    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8388    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8389  Current Release:
8390    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8391    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
8392
8393----------------------------------------
839426 January 2007. Summary of changes for version 20070126:
8395
83961) ACPI CA Core Subsystem:
8397
8398Added the 2007 copyright to all module headers and signons. This affects
8399virtually every file in the ACPICA core subsystem, the iASL compiler, and
8400the utilities.
8401
8402Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
8403during a table load. A bad pointer was passed in the case where the DSDT
8404is
8405overridden, causing a fault in this case.
8406
8407Example Code and Data Size: These are the sizes for the OS-independent
8408acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8409debug version of the code includes the debug output trace mechanism and
8410has
8411a much larger code and data size.
8412
8413  Previous Release:
8414    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8415    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8416  Current Release:
8417    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8418    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8419
8420----------------------------------------
842115 December 2006. Summary of changes for version 20061215:
8422
84231) ACPI CA Core Subsystem:
8424
8425Support for 16-bit ACPICA has been completely removed since it is no
8426longer
8427necessary and it clutters the code. All 16-bit macros, types, and
8428conditional compiles have been removed, cleaning up and simplifying the
8429code
8430across the entire subsystem. DOS support is no longer needed since the
8431bootable Linux firmware kit is now available.
8432
8433The handler for the Global Lock is now removed during AcpiTerminate to
8434enable a clean subsystem restart, via the implementation of the
8435AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
8436HP)
8437
8438Implemented enhancements to the multithreading support within the
8439debugger
8440to enable improved multithreading debugging and evaluation of the
8441subsystem.
8442(Valery Podrezov)
8443
8444Debugger: Enhanced the Statistics/Memory command to emit the total
8445(maximum)
8446memory used during the execution, as well as the maximum memory consumed
8447by
8448each of the various object types. (Valery Podrezov)
8449
8450Example Code and Data Size: These are the sizes for the OS-independent
8451acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8452debug version of the code includes the debug output trace mechanism and
8453has
8454a much larger code and data size.
8455
8456  Previous Release:
8457    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
8458    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
8459  Current Release:
8460    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8461    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8462
8463
84642) iASL Compiler/Disassembler and Tools:
8465
8466AcpiExec: Implemented a new option (-m) to display full memory use
8467statistics upon subsystem/program termination. (Valery Podrezov)
8468
8469----------------------------------------
847009 November 2006. Summary of changes for version 20061109:
8471
84721) ACPI CA Core Subsystem:
8473
8474Optimized the Load ASL operator in the case where the source operand is
8475an
8476operation region. Simply map the operation region memory, instead of
8477performing a bytewise read. (Region must be of type SystemMemory, see
8478below.)
8479
8480Fixed the Load ASL operator for the case where the source operand is a
8481region field. A buffer object is also allowed as the source operand. BZ
8482480
8483
8484Fixed a problem where the Load ASL operator allowed the source operand to
8485be
8486an operation region of any type. It is now restricted to regions of type
8487SystemMemory, as per the ACPI specification. BZ 481
8488
8489Additional cleanup and optimizations for the new Table Manager code.
8490
8491AcpiEnable will now fail if all of the required ACPI tables are not
8492loaded
8493(FADT, FACS, DSDT). BZ 477
8494
8495Added #pragma pack(8/4) to acobject.h to ensure that the structures in
8496this
8497header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
8498manually optimized to be aligned and will not work if it is byte-packed.
8499
8500Example Code and Data Size: These are the sizes for the OS-independent
8501acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8502debug version of the code includes the debug output trace mechanism and
8503has
8504a much larger code and data size.
8505
8506  Previous Release:
8507    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
8508    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
8509  Current Release:
8510    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
8511    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
8512
8513
85142) iASL Compiler/Disassembler and Tools:
8515
8516Fixed a problem where the presence of the _OSI predefined control method
8517within complex expressions could cause an internal compiler error.
8518
8519AcpiExec: Implemented full region support for multiple address spaces.
8520SpaceId is now part of the REGION object. BZ 429
8521
8522----------------------------------------
852311 October 2006. Summary of changes for version 20061011:
8524
85251) ACPI CA Core Subsystem:
8526
8527Completed an AML interpreter performance enhancement for control method
8528execution. Previously a 2-pass parse/execution, control methods are now
8529completely parsed and executed in a single pass. This improves overall
8530interpreter performance by ~25%, reduces code size, and reduces CPU stack
8531use. (Valery Podrezov + interpreter changes in version 20051202 that
8532eliminated namespace loading during the pass one parse.)
8533
8534Implemented _CID support for PCI Root Bridge detection. If the _HID does
8535not
8536match the predefined PCI Root Bridge IDs, the _CID list (if present) is
8537now
8538obtained and also checked for an ID match.
8539
8540Implemented additional support for the PCI _ADR execution: upsearch until
8541a
8542device scope is found before executing _ADR. This allows PCI_Config
8543operation regions to be declared locally within control methods
8544underneath
8545PCI device objects.
8546
8547Fixed a problem with a possible race condition between threads executing
8548AcpiWalkNamespace and the AML interpreter. This condition was removed by
8549modifying AcpiWalkNamespace to (by default) ignore all temporary
8550namespace
8551entries created during any concurrent control method execution. An
8552additional namespace race condition is known to exist between
8553AcpiWalkNamespace and the Load/Unload ASL operators and is still under
8554investigation.
8555
8556Restructured the AML ParseLoop function, breaking it into several
8557subfunctions in order to reduce CPU stack use and improve
8558maintainability.
8559(Mikhail Kouzmich)
8560
8561AcpiGetHandle: Fix for parameter validation to detect invalid
8562combinations
8563of prefix handle and pathname. BZ 478
8564
8565Example Code and Data Size: These are the sizes for the OS-independent
8566acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8567debug version of the code includes the debug output trace mechanism and
8568has
8569a much larger code and data size.
8570
8571  Previous Release:
8572    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8573    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8574  Current Release:
8575    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
8576    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
8577
85782) iASL Compiler/Disassembler and Tools:
8579
8580Ported the -g option (get local ACPI tables) to the new ACPICA Table
8581Manager
8582to restore original behavior.
8583
8584----------------------------------------
858527 September 2006. Summary of changes for version 20060927:
8586
85871) ACPI CA Core Subsystem:
8588
8589Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
8590These functions now use a spinlock for mutual exclusion and the interrupt
8591level indication flag is not needed.
8592
8593Fixed a problem with the Global Lock where the lock could appear to be
8594obtained before it is actually obtained. The global lock semaphore was
8595inadvertently created with one unit instead of zero units. (BZ 464)
8596Fiodor
8597Suietov.
8598
8599Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
8600during
8601a read from a buffer or region field. (BZ 458) Fiodor Suietov.
8602
8603Example Code and Data Size: These are the sizes for the OS-independent
8604acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8605debug version of the code includes the debug output trace mechanism and
8606has
8607a much larger code and data size.
8608
8609  Previous Release:
8610    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8611    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
8612  Current Release:
8613    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8614    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8615
8616
86172) iASL Compiler/Disassembler and Tools:
8618
8619Fixed a compilation problem with the pre-defined Resource Descriptor
8620field
8621names where an "object does not exist" error could be incorrectly
8622generated
8623if the parent ResourceTemplate pathname places the template within a
8624different namespace scope than the current scope. (BZ 7212)
8625
8626Fixed a problem where the compiler could hang after syntax errors
8627detected
8628in an ElseIf construct. (BZ 453)
8629
8630Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
8631operator. An incorrect output filename was produced when this parameter
8632was
8633a null string (""). Now, the original input filename is used as the AML
8634output filename, with an ".aml" extension.
8635
8636Implemented a generic batch command mode for the AcpiExec utility
8637(execute
8638any AML debugger command) (Valery Podrezov).
8639
8640----------------------------------------
864112 September 2006. Summary of changes for version 20060912:
8642
86431) ACPI CA Core Subsystem:
8644
8645Enhanced the implementation of the "serialized mode" of the interpreter
8646(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
8647specified, instead of creating a serialization semaphore per control
8648method,
8649the interpreter lock is simply no longer released before a blocking
8650operation during control method execution. This effectively makes the AML
8651Interpreter single-threaded. The overhead of a semaphore per-method is
8652eliminated.
8653
8654Fixed a regression where an error was no longer emitted if a control
8655method
8656attempts to create 2 objects of the same name. This once again returns
8657AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
8658that
8659will dynamically serialize the control method to possible prevent future
8660errors. (BZ 440)
8661
8662Integrated a fix for a problem with PCI Express HID detection in the PCI
8663Config Space setup procedure. (BZ 7145)
8664
8665Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
8666AcpiHwInitialize function - the FADT registers are now validated when the
8667table is loaded.
8668
8669Added two new warnings during FADT verification - 1) if the FADT is
8670larger
8671than the largest known FADT version, and 2) if there is a mismatch
8672between
8673a
867432-bit block address and the 64-bit X counterpart (when both are non-
8675zero.)
8676
8677Example Code and Data Size: These are the sizes for the OS-independent
8678acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8679debug version of the code includes the debug output trace mechanism and
8680has
8681a much larger code and data size.
8682
8683  Previous Release:
8684    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
8685    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
8686  Current Release:
8687    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8688    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
8689
8690
86912) iASL Compiler/Disassembler and Tools:
8692
8693Fixed a problem with the implementation of the Switch() operator where
8694the
8695temporary variable was declared too close to the actual Switch, instead
8696of
8697at method level. This could cause a problem if the Switch() operator is
8698within a while loop, causing an error on the second iteration. (BZ 460)
8699
8700Disassembler - fix for error emitted for unknown type for target of scope
8701operator. Now, ignore it and continue.
8702
8703Disassembly of an FADT now verifies the input FADT and reports any errors
8704found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
8705
8706Disassembly of raw data buffers with byte initialization data now
8707prefixes
8708each output line with the current buffer offset.
8709
8710Disassembly of ASF! table now includes all variable-length data fields at
8711the end of some of the subtables.
8712
8713The disassembler now emits a comment if a buffer appears to be a
8714ResourceTemplate, but cannot be disassembled as such because the EndTag
8715does
8716not appear at the very end of the buffer.
8717
8718AcpiExec - Added the "-t" command line option to enable the serialized
8719mode
8720of the AML interpreter.
8721
8722----------------------------------------
872331 August 2006. Summary of changes for version 20060831:
8724
87251) ACPI CA Core Subsystem:
8726
8727Miscellaneous fixes for the Table Manager:
8728- Correctly initialize internal common FADT for all 64-bit "X" fields
8729- Fixed a couple table mapping issues during table load
8730- Fixed a couple alignment issues for IA64
8731- Initialize input array to zero in AcpiInitializeTables
8732- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
8733AcpiGetTableByIndex
8734
8735Change for GPE support: when a "wake" GPE is received, all wake GPEs are
8736now
8737immediately disabled to prevent the waking GPE from firing again and to
8738prevent other wake GPEs from interrupting the wake process.
8739
8740Added the AcpiGpeCount global that tracks the number of processed GPEs,
8741to
8742be used for debugging systems with a large number of ACPI interrupts.
8743
8744Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
8745both the ACPICA headers and the disassembler.
8746
8747Example Code and Data Size: These are the sizes for the OS-independent
8748acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8749debug version of the code includes the debug output trace mechanism and
8750has
8751a much larger code and data size.
8752
8753  Previous Release:
8754    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
8755    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
8756  Current Release:
8757    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
8758    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
8759
8760
87612) iASL Compiler/Disassembler and Tools:
8762
8763Disassembler support for the DMAR ACPI table.
8764
8765----------------------------------------
876623 August 2006. Summary of changes for version 20060823:
8767
87681) ACPI CA Core Subsystem:
8769
8770The Table Manager component has been completely redesigned and
8771reimplemented. The new design is much simpler, and reduces the overall
8772code
8773and data size of the kernel-resident ACPICA by approximately 5%. Also, it
8774is
8775now possible to obtain the ACPI tables very early during kernel
8776initialization, even before dynamic memory management is initialized.
8777(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
8778
8779Obsolete ACPICA interfaces:
8780
8781- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
8782init
8783time).
8784- AcpiLoadTable: Not needed.
8785- AcpiUnloadTable: Not needed.
8786
8787New ACPICA interfaces:
8788
8789- AcpiInitializeTables: Must be called before the table manager can be
8790used.
8791- AcpiReallocateRootTable: Used to transfer the root table to dynamically
8792allocated memory after it becomes available.
8793- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
8794tables
8795in the RSDT/XSDT.
8796
8797Other ACPICA changes:
8798
8799- AcpiGetTableHeader returns the actual mapped table header, not a copy.
8800Use
8801AcpiOsUnmapMemory to free this mapping.
8802- AcpiGetTable returns the actual mapped table. The mapping is managed
8803internally and must not be deleted by the caller. Use of this interface
8804causes no additional dynamic memory allocation.
8805- AcpiFindRootPointer: Support for physical addressing has been
8806eliminated,
8807it appeared to be unused.
8808- The interface to AcpiOsMapMemory has changed to be consistent with the
8809other allocation interfaces.
8810- The interface to AcpiOsGetRootPointer has changed to eliminate
8811unnecessary
8812parameters.
8813- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
881464-
8815bit platforms. Was previously 64 bits on all platforms.
8816- The interface to the ACPI Global Lock acquire/release macros have
8817changed
8818slightly since ACPICA no longer keeps a local copy of the FACS with a
8819constructed pointer to the actual global lock.
8820
8821Porting to the new table manager:
8822
8823- AcpiInitializeTables: Must be called once, and can be called anytime
8824during the OS initialization process. It allows the host to specify an
8825area
8826of memory to be used to store the internal version of the RSDT/XSDT (root
8827table). This allows the host to access ACPI tables before memory
8828management
8829is initialized and running.
8830- AcpiReallocateRootTable: Can be called after memory management is
8831running
8832to copy the root table to a dynamically allocated array, freeing up the
8833scratch memory specified in the call to AcpiInitializeTables.
8834- AcpiSubsystemInitialize: This existing interface is independent of the
8835Table Manager, and does not have to be called before the Table Manager
8836can
8837be used, it only must be called before the rest of ACPICA can be used.
8838- ACPI Tables: Some changes have been made to the names and structure of
8839the
8840actbl.h and actbl1.h header files and may require changes to existing
8841code.
8842For example, bitfields have been completely removed because of their lack
8843of
8844portability across C compilers.
8845- Update interfaces to the Global Lock acquire/release macros if local
8846versions are used. (see acwin.h)
8847
8848Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
8849
8850New files: tbfind.c
8851
8852Example Code and Data Size: These are the sizes for the OS-independent
8853acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8854debug version of the code includes the debug output trace mechanism and
8855has
8856a much larger code and data size.
8857
8858  Previous Release:
8859    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8860    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8861  Current Release:
8862    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
8863    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
8864
8865
88662) iASL Compiler/Disassembler and Tools:
8867
8868No changes for this release.
8869
8870----------------------------------------
887121 July 2006. Summary of changes for version 20060721:
8872
88731) ACPI CA Core Subsystem:
8874
8875The full source code for the ASL test suite used to validate the iASL
8876compiler and the ACPICA core subsystem is being released with the ACPICA
8877source for the first time. The source is contained in a separate package
8878and
8879consists of over 1100 files that exercise all ASL/AML operators. The
8880package
8881should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
8882Fiodor
8883Suietov)
8884
8885Completed a new design and implementation for support of the ACPI Global
8886Lock. On the OS side, the global lock is now treated as a standard AML
8887mutex. Previously, multiple OS threads could "acquire" the global lock
8888simultaneously. However, this could cause the BIOS to be starved out of
8889the
8890lock - especially in cases such as the Embedded Controller driver where
8891there is a tight coupling between the OS and the BIOS.
8892
8893Implemented an optimization for the ACPI Global Lock interrupt mechanism.
8894The Global Lock interrupt handler no longer queues the execution of a
8895separate thread to signal the global lock semaphore. Instead, the
8896semaphore
8897is signaled directly from the interrupt handler.
8898
8899Implemented support within the AML interpreter for package objects that
8900contain a larger AML length (package list length) than the package
8901element
8902count. In this case, the length of the package is truncated to match the
8903package element count. Some BIOS code apparently modifies the package
8904length
8905on the fly, and this change supports this behavior. Provides
8906compatibility
8907with the MS AML interpreter. (With assistance from Fiodor Suietov)
8908
8909Implemented a temporary fix for the BankValue parameter of a Bank Field
8910to
8911support all constant values, now including the Zero and One opcodes.
8912Evaluation of this parameter must eventually be converted to a full
8913TermArg
8914evaluation. A not-implemented error is now returned (temporarily) for
8915non-
8916constant values for this parameter.
8917
8918Fixed problem reports (Fiodor Suietov) integrated:
8919- Fix for premature object deletion after CopyObject on Operation Region
8920(BZ
8921350)
8922
8923Example Code and Data Size: These are the sizes for the OS-independent
8924acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8925debug version of the code includes the debug output trace mechanism and
8926has
8927a much larger code and data size.
8928
8929  Previous Release:
8930    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
8931    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
8932  Current Release:
8933    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8934    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8935
8936
89372) iASL Compiler/Disassembler and Tools:
8938
8939No changes for this release.
8940
8941----------------------------------------
894207 July 2006. Summary of changes for version 20060707:
8943
89441) ACPI CA Core Subsystem:
8945
8946Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
8947that do not allow the initialization of address pointers within packed
8948structures - even though the hardware itself may support misaligned
8949transfers. Some of the debug data structures are packed by default to
8950minimize size.
8951
8952Added an error message for the case where AcpiOsGetThreadId() returns
8953zero.
8954A non-zero value is required by the core ACPICA code to ensure the proper
8955operation of AML mutexes and recursive control methods.
8956
8957The DSDT is now the only ACPI table that determines whether the AML
8958interpreter is in 32-bit or 64-bit mode. Not really a functional change,
8959but
8960the hooks for per-table 32/64 switching have been removed from the code.
8961A
8962clarification to the ACPI specification is forthcoming in ACPI 3.0B.
8963
8964Fixed a possible leak of an OwnerID in the error path of
8965AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
8966deletion to a single place in AcpiTbUninstallTable to correct possible
8967leaks
8968when using the AcpiTbDeleteTablesByType interface (with assistance from
8969Lance Ortiz.)
8970
8971Fixed a problem with Serialized control methods where the semaphore
8972associated with the method could be over-signaled after multiple method
8973invocations.
8974
8975Fixed two issues with the locking of the internal namespace data
8976structure.
8977Both the Unload() operator and AcpiUnloadTable interface now lock the
8978namespace during the namespace deletion associated with the table unload
8979(with assistance from Linn Crosetto.)
8980
8981Fixed problem reports (Valery Podrezov) integrated:
8982- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
8983
8984Fixed problem reports (Fiodor Suietov) integrated:
8985- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
8986- On Address Space handler deletion, needless deactivation call (BZ 374)
8987- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
8988375)
8989- Possible memory leak, Notify sub-objects of Processor, Power,
8990ThermalZone
8991(BZ 376)
8992- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
8993- Minimum Length of RSDT should be validated (BZ 379)
8994- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
8995Handler (BZ (380)
8996- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
8997loaded
8998(BZ 381)
8999
9000Example Code and Data Size: These are the sizes for the OS-independent
9001acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9002debug version of the code includes the debug output trace mechanism and
9003has
9004a much larger code and data size.
9005
9006  Previous Release:
9007    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
9008    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9009  Current Release:
9010    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9011    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9012
9013
90142) iASL Compiler/Disassembler and Tools:
9015
9016Fixed problem reports:
9017Compiler segfault when ASL contains a long (>1024) String declaration (BZ
9018436)
9019
9020----------------------------------------
902123 June 2006. Summary of changes for version 20060623:
9022
90231) ACPI CA Core Subsystem:
9024
9025Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
9026allows the type to be customized to the host OS for improved efficiency
9027(since a spinlock is usually a very small object.)
9028
9029Implemented support for "ignored" bits in the ACPI registers. According
9030to
9031the ACPI specification, these bits should be preserved when writing the
9032registers via a read/modify/write cycle. There are 3 bits preserved in
9033this
9034manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
9035
9036Implemented the initial deployment of new OSL mutex interfaces. Since
9037some
9038host operating systems have separate mutex and semaphore objects, this
9039feature was requested. The base code now uses mutexes (and the new mutex
9040interfaces) wherever a binary semaphore was used previously. However, for
9041the current release, the mutex interfaces are defined as macros to map
9042them
9043to the existing semaphore interfaces. Therefore, no OSL changes are
9044required
9045at this time. (See acpiosxf.h)
9046
9047Fixed several problems with the support for the control method SyncLevel
9048parameter. The SyncLevel now works according to the ACPI specification
9049and
9050in concert with the Mutex SyncLevel parameter, since the current
9051SyncLevel
9052is a property of the executing thread. Mutual exclusion for control
9053methods
9054is now implemented with a mutex instead of a semaphore.
9055
9056Fixed three instances of the use of the C shift operator in the bitfield
9057support code (exfldio.c) to avoid the use of a shift value larger than
9058the
9059target data width. The behavior of C compilers is undefined in this case
9060and
9061can cause unpredictable results, and therefore the case must be detected
9062and
9063avoided. (Fiodor Suietov)
9064
9065Added an info message whenever an SSDT or OEM table is loaded dynamically
9066via the Load() or LoadTable() ASL operators. This should improve
9067debugging
9068capability since it will show exactly what tables have been loaded
9069(beyond
9070the tables present in the RSDT/XSDT.)
9071
9072Example Code and Data Size: These are the sizes for the OS-independent
9073acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9074debug version of the code includes the debug output trace mechanism and
9075has
9076a much larger code and data size.
9077
9078  Previous Release:
9079    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
9080    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
9081  Current Release:
9082    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
9083    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9084
9085
90862) iASL Compiler/Disassembler and Tools:
9087
9088No changes for this release.
9089
9090----------------------------------------
909108 June 2006. Summary of changes for version 20060608:
9092
90931) ACPI CA Core Subsystem:
9094
9095Converted the locking mutex used for the ACPI hardware to a spinlock.
9096This
9097change should eliminate all problems caused by attempting to acquire a
9098semaphore at interrupt level, and it means that all ACPICA external
9099interfaces that directly access the ACPI hardware can be safely called
9100from
9101interrupt level. OSL code that implements the semaphore interfaces should
9102be
9103able to eliminate any workarounds for being called at interrupt level.
9104
9105Fixed a regression introduced in 20060526 where the ACPI device
9106initialization could be prematurely aborted with an AE_NOT_FOUND if a
9107device
9108did not have an optional _INI method.
9109
9110Fixed an IndexField issue where a write to the Data Register should be
9111limited in size to the AccessSize (width) of the IndexField itself. (BZ
9112433,
9113Fiodor Suietov)
9114
9115Fixed problem reports (Valery Podrezov) integrated:
9116- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
9117
9118Fixed problem reports (Fiodor Suietov) integrated:
9119- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
9120
9121Removed four global mutexes that were obsolete and were no longer being
9122used.
9123
9124Example Code and Data Size: These are the sizes for the OS-independent
9125acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9126debug version of the code includes the debug output trace mechanism and
9127has
9128a much larger code and data size.
9129
9130  Previous Release:
9131    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
9132    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
9133  Current Release:
9134    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
9135    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
9136
9137
91382) iASL Compiler/Disassembler and Tools:
9139
9140Fixed a fault when using -g option (get tables from registry) on Windows
9141machines.
9142
9143Fixed problem reports integrated:
9144- Generate error if CreateField NumBits parameter is zero. (BZ 405)
9145- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
9146Suietov)
9147- Global table revision override (-r) is ignored (BZ 413)
9148
9149----------------------------------------
915026 May 2006. Summary of changes for version 20060526:
9151
91521) ACPI CA Core Subsystem:
9153
9154Restructured, flattened, and simplified the internal interfaces for
9155namespace object evaluation - resulting in smaller code, less CPU stack
9156use,
9157and fewer interfaces. (With assistance from Mikhail Kouzmich)
9158
9159Fixed a problem with the CopyObject operator where the first parameter
9160was
9161not typed correctly for the parser, interpreter, compiler, and
9162disassembler.
9163Caused various errors and unexpected behavior.
9164
9165Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
9166produced incorrect results with some C compilers. Since the behavior of C
9167compilers when the shift value is larger than the datatype width is
9168apparently not well defined, the interpreter now detects this condition
9169and
9170simply returns zero as expected in all such cases. (BZ 395)
9171
9172Fixed problem reports (Valery Podrezov) integrated:
9173- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
9174- Allow interpreter to handle nested method declarations (BZ 5361)
9175
9176Fixed problem reports (Fiodor Suietov) integrated:
9177- AcpiTerminate doesn't free debug memory allocation list objects (BZ
9178355)
9179- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
9180356)
9181- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
9182- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
9183- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
9184- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
9185- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
9186- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
9187- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
9188365)
9189- Status of the Global Initialization Handler call not used (BZ 366)
9190- Incorrect object parameter to Global Initialization Handler (BZ 367)
9191
9192Example Code and Data Size: These are the sizes for the OS-independent
9193acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9194debug version of the code includes the debug output trace mechanism and
9195has
9196a much larger code and data size.
9197
9198  Previous Release:
9199    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
9200    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
9201  Current Release:
9202    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
9203    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
9204
9205
92062) iASL Compiler/Disassembler and Tools:
9207
9208Modified the parser to allow the names IO, DMA, and IRQ to be used as
9209namespace identifiers with no collision with existing resource descriptor
9210macro names. This provides compatibility with other ASL compilers and is
9211most useful for disassembly/recompilation of existing tables without
9212parse
9213errors. (With assistance from Thomas Renninger)
9214
9215Disassembler: fixed an incorrect disassembly problem with the
9216DataTableRegion and CopyObject operators. Fixed a possible fault during
9217disassembly of some Alias operators.
9218
9219----------------------------------------
922012 May 2006. Summary of changes for version 20060512:
9221
92221) ACPI CA Core Subsystem:
9223
9224Replaced the AcpiOsQueueForExecution interface with a new interface named
9225AcpiOsExecute. The major difference is that the new interface does not
9226have
9227a Priority parameter, this appeared to be useless and has been replaced
9228by
9229a
9230Type parameter. The Type tells the host what type of execution is being
9231requested, such as global lock handler, notify handler, GPE handler, etc.
9232This allows the host to queue and execute the request as appropriate for
9233the
9234request type, possibly using different work queues and different
9235priorities
9236for the various request types. This enables fixes for multithreading
9237deadlock problems such as BZ #5534, and will require changes to all
9238existing
9239OS interface layers. (Alexey Starikovskiy and Bob Moore)
9240
9241Fixed a possible memory leak associated with the support for the so-
9242called
9243"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
9244Suietov)
9245
9246Fixed a problem with the Load() operator where a table load from an
9247operation region could overwrite an internal table buffer by up to 7
9248bytes
9249and cause alignment faults on IPF systems. (With assistance from Luming
9250Yu)
9251
9252Example Code and Data Size: These are the sizes for the OS-independent
9253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9254debug version of the code includes the debug output trace mechanism and
9255has
9256a much larger code and data size.
9257
9258  Previous Release:
9259    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
9260    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
9261  Current Release:
9262    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
9263    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
9264
9265
9266
92672) iASL Compiler/Disassembler and Tools:
9268
9269Disassembler: Implemented support to cross reference the internal
9270namespace
9271and automatically generate ASL External() statements for symbols not
9272defined
9273within the current table being disassembled. This will simplify the
9274disassembly and recompilation of interdependent tables such as SSDTs
9275since
9276these statements will no longer have to be added manually.
9277
9278Disassembler: Implemented experimental support to automatically detect
9279invocations of external control methods and generate appropriate
9280External()
9281statements. This is problematic because the AML cannot be correctly
9282parsed
9283until the number of arguments for each control method is known.
9284Currently,
9285standalone method invocations and invocations as the source operand of a
9286Store() statement are supported.
9287
9288Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
9289LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
9290LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
9291more readable and likely closer to the original ASL source.
9292
9293----------------------------------------
929421 April 2006. Summary of changes for version 20060421:
9295
92961) ACPI CA Core Subsystem:
9297
9298Removed a device initialization optimization introduced in 20051216 where
9299the _STA method was not run unless an _INI was also present for the same
9300device. This optimization could cause problems because it could allow
9301_INI
9302methods to be run within a not-present device subtree. (If a not-present
9303device had no _INI, _STA would not be run, the not-present status would
9304not
9305be discovered, and the children of the device would be incorrectly
9306traversed.)
9307
9308Implemented a new _STA optimization where namespace subtrees that do not
9309contain _INI are identified and ignored during device initialization.
9310Selectively running _STA can significantly improve boot time on large
9311machines (with assistance from Len Brown.)
9312
9313Implemented support for the device initialization case where the returned
9314_STA flags indicate a device not-present but functioning. In this case,
9315_INI
9316is not run, but the device children are examined for presence, as per the
9317ACPI specification.
9318
9319Implemented an additional change to the IndexField support in order to
9320conform to MS behavior. The value written to the Index Register is not
9321simply a byte offset, it is a byte offset in units of the access width of
9322the parent Index Field. (Fiodor Suietov)
9323
9324Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
9325interface is called during the creation of all AML operation regions, and
9326allows the host OS to exert control over what addresses it will allow the
9327AML code to access. Operation Regions whose addresses are disallowed will
9328cause a runtime exception when they are actually accessed (will not
9329affect
9330or abort table loading.) See oswinxf or osunixxf for an example
9331implementation.
9332
9333Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
9334interface allows the host OS to match the various "optional"
9335interface/behavior strings for the _OSI predefined control method as
9336appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
9337for an example implementation.
9338
9339Restructured and corrected various problems in the exception handling
9340code
9341paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
9342(with assistance from Takayoshi Kochi.)
9343
9344Modified the Linux source converter to ignore quoted string literals
9345while
9346converting identifiers from mixed to lower case. This will correct
9347problems
9348with the disassembler and other areas where such strings must not be
9349modified.
9350
9351The ACPI_FUNCTION_* macros no longer require quotes around the function
9352name. This allows the Linux source converter to convert the names, now
9353that
9354the converter ignores quoted strings.
9355
9356Example Code and Data Size: These are the sizes for the OS-independent
9357acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9358debug version of the code includes the debug output trace mechanism and
9359has
9360a much larger code and data size.
9361
9362  Previous Release:
9363
9364    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
9365    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
9366  Current Release:
9367    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
9368    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
9369
9370
93712) iASL Compiler/Disassembler and Tools:
9372
9373Implemented 3 new warnings for iASL, and implemented multiple warning
9374levels
9375(w2 flag).
9376
93771) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
9378not
9379WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
9380check for the possible timeout, a warning is issued.
9381
93822) Useless operators: If an ASL operator does not specify an optional
9383target
9384operand and it also does not use the function return value from the
9385operator, a warning is issued since the operator effectively does
9386nothing.
9387
93883) Unreferenced objects: If a namespace object is created, but never
9389referenced, a warning is issued. This is a warning level 2 since there
9390are
9391cases where this is ok, such as when a secondary table is loaded that
9392uses
9393the unreferenced objects. Even so, care is taken to only flag objects
9394that
9395don't look like they will ever be used. For example, the reserved methods
9396(starting with an underscore) are usually not referenced because it is
9397expected that the OS will invoke them.
9398
9399----------------------------------------
940031 March 2006. Summary of changes for version 20060331:
9401
94021) ACPI CA Core Subsystem:
9403
9404Implemented header file support for the following additional ACPI tables:
9405ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
9406support,
9407all current and known ACPI tables are now defined in the ACPICA headers
9408and
9409are available for use by device drivers and other software.
9410
9411Implemented support to allow tables that contain ACPI names with invalid
9412characters to be loaded. Previously, this would cause the table load to
9413fail, but since there are several known cases of such tables on existing
9414machines, this change was made to enable ACPI support for them. Also,
9415this
9416matches the behavior of the Microsoft ACPI implementation.
9417
9418Fixed a couple regressions introduced during the memory optimization in
9419the
942020060317 release. The namespace node definition required additional
9421reorganization and an internal datatype that had been changed to 8-bit
9422was
9423restored to 32-bit. (Valery Podrezov)
9424
9425Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
9426could be passed through to AcpiOsReleaseObject which is unexpected. Such
9427null pointers are now trapped and ignored, matching the behavior of the
9428previous implementation before the deployment of AcpiOsReleaseObject.
9429(Valery Podrezov, Fiodor Suietov)
9430
9431Fixed a memory mapping leak during the deletion of a SystemMemory
9432operation
9433region where a cached memory mapping was not deleted. This became a
9434noticeable problem for operation regions that are defined within
9435frequently
9436used control methods. (Dana Meyers)
9437
9438Reorganized the ACPI table header files into two main files: one for the
9439ACPI tables consumed by the ACPICA core, and another for the
9440miscellaneous
9441ACPI tables that are consumed by the drivers and other software. The
9442various
9443FADT definitions were merged into one common section and three different
9444tables (ACPI 1.0, 1.0+, and 2.0)
9445
9446Example Code and Data Size: These are the sizes for the OS-independent
9447acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9448debug version of the code includes the debug output trace mechanism and
9449has
9450a much larger code and data size.
9451
9452  Previous Release:
9453    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
9454    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
9455  Current Release:
9456    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
9457    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
9458
9459
94602) iASL Compiler/Disassembler and Tools:
9461
9462Disassembler: Implemented support to decode and format all non-AML ACPI
9463tables (tables other than DSDTs and SSDTs.) This includes the new tables
9464added to the ACPICA headers, therefore all current and known ACPI tables
9465are
9466supported.
9467
9468Disassembler: The change to allow ACPI names with invalid characters also
9469enables the disassembly of such tables. Invalid characters within names
9470are
9471changed to '*' to make the name printable; the iASL compiler will still
9472generate an error for such names, however, since this is an invalid ACPI
9473character.
9474
9475Implemented an option for AcpiXtract (-a) to extract all tables found in
9476the
9477input file. The default invocation extracts only the DSDTs and SSDTs.
9478
9479Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
9480makefile for the AcpiXtract utility.
9481
9482----------------------------------------
948317 March 2006. Summary of changes for version 20060317:
9484
94851) ACPI CA Core Subsystem:
9486
9487Implemented the use of a cache object for all internal namespace nodes.
9488Since there are about 1000 static nodes in a typical system, this will
9489decrease memory use for cache implementations that minimize per-
9490allocation
9491overhead (such as a slab allocator.)
9492
9493Removed the reference count mechanism for internal namespace nodes, since
9494it
9495was deemed unnecessary. This reduces the size of each namespace node by
9496about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
9497case,
9498and 32 bytes for the 64-bit case.
9499
9500Optimized several internal data structures to reduce object size on 64-
9501bit
9502platforms by packing data within the 64-bit alignment. This includes the
9503frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
9504instances corresponding to the namespace objects.
9505
9506Added two new strings for the predefined _OSI method: "Windows 2001.1
9507SP1"
9508and "Windows 2006".
9509
9510Split the allocation tracking mechanism out to a separate file, from
9511utalloc.c to uttrack.c. This mechanism appears to be only useful for
9512application-level code. Kernels may wish to not include uttrack.c in
9513distributions.
9514
9515Removed all remnants of the obsolete ACPI_REPORT_* macros and the
9516associated
9517code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
9518macros.)
9519
9520Code and Data Size: These are the sizes for the acpica.lib produced by
9521the
9522Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9523ACPI
9524driver or OSPM code. The debug version of the code includes the debug
9525output
9526trace mechanism and has a much larger code and data size. Note that these
9527values will vary depending on the efficiency of the compiler and the
9528compiler options used during generation.
9529
9530  Previous Release:
9531    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9532    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9533  Current Release:
9534    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
9535    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
9536
9537
95382) iASL Compiler/Disassembler and Tools:
9539
9540Implemented an ANSI C version of the acpixtract utility. This version
9541will
9542automatically extract the DSDT and all SSDTs from the input acpidump text
9543file and dump the binary output to separate files. It can also display a
9544summary of the input file including the headers for each table found and
9545will extract any single ACPI table, with any signature. (See
9546source/tools/acpixtract)
9547
9548----------------------------------------
954910 March 2006. Summary of changes for version 20060310:
9550
95511) ACPI CA Core Subsystem:
9552
9553Tagged all external interfaces to the subsystem with the new
9554ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
9555assist
9556kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
9557macro. The default definition is NULL.
9558
9559Added the ACPI_THREAD_ID type for the return value from
9560AcpiOsGetThreadId.
9561This allows the host to define this as necessary to simplify kernel
9562integration. The default definition is ACPI_NATIVE_UINT.
9563
9564Fixed two interpreter problems related to error processing, the deletion
9565of
9566objects, and placing invalid pointers onto the internal operator result
9567stack. BZ 6028, 6151 (Valery Podrezov)
9568
9569Increased the reference count threshold where a warning is emitted for
9570large
9571reference counts in order to eliminate unnecessary warnings on systems
9572with
9573large namespaces (especially 64-bit.) Increased the value from 0x400 to
95740x800.
9575
9576Due to universal disagreement as to the meaning of the 'c' in the
9577calloc()
9578function, the ACPI_MEM_CALLOCATE macro has been renamed to
9579ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
9580ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
9581ACPI_FREE.
9582
9583Code and Data Size: These are the sizes for the acpica.lib produced by
9584the
9585Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9586ACPI
9587driver or OSPM code. The debug version of the code includes the debug
9588output
9589trace mechanism and has a much larger code and data size. Note that these
9590values will vary depending on the efficiency of the compiler and the
9591compiler options used during generation.
9592
9593  Previous Release:
9594    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
9595    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
9596  Current Release:
9597    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9598    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9599
9600
96012) iASL Compiler/Disassembler:
9602
9603Disassembler: implemented support for symbolic resource descriptor
9604references. If a CreateXxxxField operator references a fixed offset
9605within
9606a
9607resource descriptor, a name is assigned to the descriptor and the offset
9608is
9609translated to the appropriate resource tag and pathname. The addition of
9610this support brings the disassembled code very close to the original ASL
9611source code and helps eliminate run-time errors when the disassembled
9612code
9613is modified (and recompiled) in such a way as to invalidate the original
9614fixed offsets.
9615
9616Implemented support for a Descriptor Name as the last parameter to the
9617ASL
9618Register() macro. This parameter was inadvertently left out of the ACPI
9619specification, and will be added for ACPI 3.0b.
9620
9621Fixed a problem where the use of the "_OSI" string (versus the full path
9622"\_OSI") caused an internal compiler error. ("No back ptr to op")
9623
9624Fixed a problem with the error message that occurs when an invalid string
9625is
9626used for a _HID object (such as one with an embedded asterisk:
9627"*PNP010A".)
9628The correct message is now displayed.
9629
9630----------------------------------------
963117 February 2006. Summary of changes for version 20060217:
9632
96331) ACPI CA Core Subsystem:
9634
9635Implemented a change to the IndexField support to match the behavior of
9636the
9637Microsoft AML interpreter. The value written to the Index register is now
9638a
9639byte offset, no longer an index based upon the width of the Data
9640register.
9641This should fix IndexField problems seen on some machines where the Data
9642register is not exactly one byte wide. The ACPI specification will be
9643clarified on this point.
9644
9645Fixed a problem where several resource descriptor types could overrun the
9646internal descriptor buffer due to size miscalculation: VendorShort,
9647VendorLong, and Interrupt. This was noticed on IA64 machines, but could
9648affect all platforms.
9649
9650Fixed a problem where individual resource descriptors were misaligned
9651within
9652the internal buffer, causing alignment faults on IA64 platforms.
9653
9654Code and Data Size: These are the sizes for the acpica.lib produced by
9655the
9656Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9657ACPI
9658driver or OSPM code. The debug version of the code includes the debug
9659output
9660trace mechanism and has a much larger code and data size. Note that these
9661values will vary depending on the efficiency of the compiler and the
9662compiler options used during generation.
9663
9664  Previous Release:
9665    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9666    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
9667  Current Release:
9668    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
9669    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
9670
9671
96722) iASL Compiler/Disassembler:
9673
9674Implemented support for new reserved names: _WDG and _WED are Microsoft
9675extensions for Windows Instrumentation Management, _TDL is a new ACPI-
9676defined method (Throttling Depth Limit.)
9677
9678Fixed a problem where a zero-length VendorShort or VendorLong resource
9679descriptor was incorrectly emitted as a descriptor of length one.
9680
9681----------------------------------------
968210 February 2006. Summary of changes for version 20060210:
9683
96841) ACPI CA Core Subsystem:
9685
9686Removed a couple of extraneous ACPI_ERROR messages that appeared during
9687normal execution. These became apparent after the conversion from
9688ACPI_DEBUG_PRINT.
9689
9690Fixed a problem where the CreateField operator could hang if the BitIndex
9691or
9692NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
9693
9694Fixed a problem where a DeRefOf operation on a buffer object incorrectly
9695failed with an exception. This also fixes a couple of related RefOf and
9696DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
9697
9698Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
9699of
9700AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
9701BZ
97025480)
9703
9704Implemented a memory cleanup at the end of the execution of each
9705iteration
9706of an AML While() loop, preventing the accumulation of outstanding
9707objects.
9708(Valery Podrezov, BZ 5427)
9709
9710Eliminated a chunk of duplicate code in the object resolution code.
9711(Valery
9712Podrezov, BZ 5336)
9713
9714Fixed several warnings during the 64-bit code generation.
9715
9716The AcpiSrc source code conversion tool now inserts one line of
9717whitespace
9718after an if() statement that is followed immediately by a comment,
9719improving
9720readability of the Linux code.
9721
9722Code and Data Size: The current and previous library sizes for the core
9723subsystem are shown below. These are the code and data sizes for the
9724acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9725These
9726values do not include any ACPI driver or OSPM code. The debug version of
9727the
9728code includes the debug output trace mechanism and has a much larger code
9729and data size. Note that these values will vary depending on the
9730efficiency
9731of the compiler and the compiler options used during generation.
9732
9733  Previous Release:
9734    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
9735    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
9736  Current Release:
9737    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9738    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
9739
9740
97412) iASL Compiler/Disassembler:
9742
9743Fixed a problem with the disassembly of a BankField operator with a
9744complex
9745expression for the BankValue parameter.
9746
9747----------------------------------------
974827 January 2006. Summary of changes for version 20060127:
9749
97501) ACPI CA Core Subsystem:
9751
9752Implemented support in the Resource Manager to allow unresolved
9753namestring
9754references within resource package objects for the _PRT method. This
9755support
9756is in addition to the previously implemented unresolved reference support
9757within the AML parser. If the interpreter slack mode is enabled, these
9758unresolved references will be passed through to the caller as a NULL
9759package
9760entry.
9761
9762Implemented and deployed new macros and functions for error and warning
9763messages across the subsystem. These macros are simpler and generate less
9764code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
9765ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
9766macros remain defined to allow ACPI drivers time to migrate to the new
9767macros.
9768
9769Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
9770the
9771Acquire/Release Lock OSL interfaces.
9772
9773Fixed a problem where Alias ASL operators are sometimes not correctly
9774resolved, in both the interpreter and the iASL compiler.
9775
9776Fixed several problems with the implementation of the
9777ConcatenateResTemplate
9778ASL operator. As per the ACPI specification, zero length buffers are now
9779treated as a single EndTag. One-length buffers always cause a fatal
9780exception. Non-zero length buffers that do not end with a full 2-byte
9781EndTag
9782cause a fatal exception.
9783
9784Fixed a possible structure overwrite in the AcpiGetObjectInfo external
9785interface. (With assistance from Thomas Renninger)
9786
9787Code and Data Size: The current and previous library sizes for the core
9788subsystem are shown below. These are the code and data sizes for the
9789acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9790These
9791values do not include any ACPI driver or OSPM code. The debug version of
9792the
9793code includes the debug output trace mechanism and has a much larger code
9794and data size. Note that these values will vary depending on the
9795efficiency
9796of the compiler and the compiler options used during generation.
9797
9798  Previous Release:
9799    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9800    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9801  Current Release:
9802    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
9803    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
9804
9805
98062) iASL Compiler/Disassembler:
9807
9808Fixed an internal error that was generated for any forward references to
9809ASL
9810Alias objects.
9811
9812----------------------------------------
981313 January 2006. Summary of changes for version 20060113:
9814
98151) ACPI CA Core Subsystem:
9816
9817Added 2006 copyright to all module headers and signons. This affects
9818virtually every file in the ACPICA core subsystem, iASL compiler, and the
9819utilities.
9820
9821Enhanced the ACPICA error reporting in order to simplify user migration
9822to
9823the non-debug version of ACPICA. Replaced all instances of the
9824ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
9825debug
9826levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
9827respectively. This preserves all error and warning messages in the non-
9828debug
9829version of the ACPICA code (this has been referred to as the "debug lite"
9830option.) Over 200 cases were converted to create a total of over 380
9831error/warning messages across the ACPICA code. This increases the code
9832and
9833data size of the default non-debug version of the code somewhat (about
983413K),
9835but all error/warning reporting may be disabled if desired (and code
9836eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
9837configuration option. The size of the debug version of ACPICA remains
9838about
9839the same.
9840
9841Fixed a memory leak within the AML Debugger "Set" command. One object was
9842not properly deleted for every successful invocation of the command.
9843
9844Code and Data Size: The current and previous library sizes for the core
9845subsystem are shown below. These are the code and data sizes for the
9846acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9847These
9848values do not include any ACPI driver or OSPM code. The debug version of
9849the
9850code includes the debug output trace mechanism and has a much larger code
9851and data size. Note that these values will vary depending on the
9852efficiency
9853of the compiler and the compiler options used during generation.
9854
9855  Previous Release:
9856    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
9857    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
9858  Current Release:
9859    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9860    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9861
9862
98632) iASL Compiler/Disassembler:
9864
9865The compiler now officially supports the ACPI 3.0a specification that was
9866released on December 30, 2005. (Specification is available at
9867www.acpi.info)
9868
9869----------------------------------------
987016 December 2005. Summary of changes for version 20051216:
9871
98721) ACPI CA Core Subsystem:
9873
9874Implemented optional support to allow unresolved names within ASL Package
9875objects. A null object is inserted in the package when a named reference
9876cannot be located in the current namespace. Enabled via the interpreter
9877slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
9878machines
9879that contain such code.
9880
9881Implemented an optimization to the initialization sequence that can
9882improve
9883boot time. During ACPI device initialization, the _STA method is now run
9884if
9885and only if the _INI method exists. The _STA method is used to determine
9886if
9887the device is present; An _INI can only be run if _STA returns present,
9888but
9889it is a waste of time to run the _STA method if the _INI does not exist.
9890(Prototype and assistance from Dong Wei)
9891
9892Implemented use of the C99 uintptr_t for the pointer casting macros if it
9893is
9894available in the current compiler. Otherwise, the default (void *) cast
9895is
9896used as before.
9897
9898Fixed some possible memory leaks found within the execution path of the
9899Break, Continue, If, and CreateField operators. (Valery Podrezov)
9900
9901Fixed a problem introduced in the 20051202 release where an exception is
9902generated during method execution if a control method attempts to declare
9903another method.
9904
9905Moved resource descriptor string constants that are used by both the AML
9906disassembler and AML debugger to the common utilities directory so that
9907these components are independent.
9908
9909Implemented support in the AcpiExec utility (-e switch) to globally
9910ignore
9911exceptions during control method execution (method is not aborted.)
9912
9913Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
9914generation.
9915
9916Code and Data Size: The current and previous library sizes for the core
9917subsystem are shown below. These are the code and data sizes for the
9918acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9919These
9920values do not include any ACPI driver or OSPM code. The debug version of
9921the
9922code includes the debug output trace mechanism and has a much larger code
9923and data size. Note that these values will vary depending on the
9924efficiency
9925of the compiler and the compiler options used during generation.
9926
9927  Previous Release:
9928    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9929    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
9930  Current Release:
9931    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
9932    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
9933
9934
99352) iASL Compiler/Disassembler:
9936
9937Fixed a problem where a CPU stack overflow fault could occur if a
9938recursive
9939method call was made from within a Return statement.
9940
9941----------------------------------------
994202 December 2005. Summary of changes for version 20051202:
9943
99441) ACPI CA Core Subsystem:
9945
9946Modified the parsing of control methods to no longer create namespace
9947objects during the first pass of the parse. Objects are now created only
9948during the execute phase, at the moment the namespace creation operator
9949is
9950encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
9951This
9952should eliminate ALREADY_EXISTS exceptions seen on some machines where
9953reentrant control methods are protected by an AML mutex. The mutex will
9954now
9955correctly block multiple threads from attempting to create the same
9956object
9957more than once.
9958
9959Increased the number of available Owner Ids for namespace object tracking
9960from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
9961on
9962some machines with a large number of ACPI tables (either static or
9963dynamic).
9964
9965Fixed a problem with the AcpiExec utility where a fault could occur when
9966the
9967-b switch (batch mode) is used.
9968
9969Enhanced the namespace dump routine to output the owner ID for each
9970namespace object.
9971
9972Code and Data Size: The current and previous library sizes for the core
9973subsystem are shown below. These are the code and data sizes for the
9974acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9975These
9976values do not include any ACPI driver or OSPM code. The debug version of
9977the
9978code includes the debug output trace mechanism and has a much larger code
9979and data size. Note that these values will vary depending on the
9980efficiency
9981of the compiler and the compiler options used during generation.
9982
9983  Previous Release:
9984    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9985    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9986  Current Release:
9987    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9988    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
9989
9990
99912) iASL Compiler/Disassembler:
9992
9993Fixed a parse error during compilation of certain Switch/Case constructs.
9994To
9995simplify the parse, the grammar now allows for multiple Default
9996statements
9997and this error is now detected and flagged during the analysis phase.
9998
9999Disassembler: The disassembly now includes the contents of the original
10000table header within a comment at the start of the file. This includes the
10001name and version of the original ASL compiler.
10002
10003----------------------------------------
1000417 November 2005. Summary of changes for version 20051117:
10005
100061) ACPI CA Core Subsystem:
10007
10008Fixed a problem in the AML parser where the method thread count could be
10009decremented below zero if any errors occurred during the method parse
10010phase.
10011This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
10012machines.
10013This also fixed a related regression with the mechanism that detects and
10014corrects methods that cannot properly handle reentrancy (related to the
10015deployment of the new OwnerId mechanism.)
10016
10017Eliminated the pre-parsing of control methods (to detect errors) during
10018table load. Related to the problem above, this was causing unwind issues
10019if
10020any errors occurred during the parse, and it seemed to be overkill. A
10021table
10022load should not be aborted if there are problems with any single control
10023method, thus rendering this feature rather pointless.
10024
10025Fixed a problem with the new table-driven resource manager where an
10026internal
10027buffer overflow could occur for small resource templates.
10028
10029Implemented a new external interface, AcpiGetVendorResource. This
10030interface
10031will find and return a vendor-defined resource descriptor within a _CRS
10032or
10033_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
10034Helgaas.
10035
10036Removed the length limit (200) on string objects as per the upcoming ACPI
100373.0A specification. This affects the following areas of the interpreter:
100381)
10039any implicit conversion of a Buffer to a String, 2) a String object
10040result
10041of the ASL Concatentate operator, 3) the String object result of the ASL
10042ToString operator.
10043
10044Fixed a problem in the Windows OS interface layer (OSL) where a
10045WAIT_FOREVER
10046on a semaphore object would incorrectly timeout. This allows the
10047multithreading features of the AcpiExec utility to work properly under
10048Windows.
10049
10050Updated the Linux makefiles for the iASL compiler and AcpiExec to include
10051the recently added file named "utresrc.c".
10052
10053Code and Data Size: The current and previous library sizes for the core
10054subsystem are shown below. These are the code and data sizes for the
10055acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10056These
10057values do not include any ACPI driver or OSPM code. The debug version of
10058the
10059code includes the debug output trace mechanism and has a much larger code
10060and data size. Note that these values will vary depending on the
10061efficiency
10062of the compiler and the compiler options used during generation.
10063
10064  Previous Release:
10065    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
10066    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10067  Current Release:
10068    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10069    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10070
10071
100722) iASL Compiler/Disassembler:
10073
10074Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
10075specification. For the iASL compiler, this means that string literals
10076within
10077the source ASL can be of any length.
10078
10079Enhanced the listing output to dump the AML code for resource descriptors
10080immediately after the ASL code for each descriptor, instead of in a block
10081at
10082the end of the entire resource template.
10083
10084Enhanced the compiler debug output to dump the entire original parse tree
10085constructed during the parse phase, before any transforms are applied to
10086the
10087tree. The transformed tree is dumped also.
10088
10089----------------------------------------
1009002 November 2005. Summary of changes for version 20051102:
10091
100921) ACPI CA Core Subsystem:
10093
10094Modified the subsystem initialization sequence to improve GPE support.
10095The
10096GPE initialization has been split into two parts in order to defer
10097execution
10098of the _PRW methods (Power Resources for Wake) until after the hardware
10099is
10100fully initialized and the SCI handler is installed. This allows the _PRW
10101methods to access fields protected by the Global Lock. This will fix
10102systems
10103where a NO_GLOBAL_LOCK exception has been seen during initialization.
10104
10105Converted the ACPI internal object disassemble and display code within
10106the
10107AML debugger to fully table-driven operation, reducing code size and
10108increasing maintainability.
10109
10110Fixed a regression with the ConcatenateResTemplate() ASL operator
10111introduced
10112in the 20051021 release.
10113
10114Implemented support for "local" internal ACPI object types within the
10115debugger "Object" command and the AcpiWalkNamespace external interfaces.
10116These local types include RegionFields, BankFields, IndexFields, Alias,
10117and
10118reference objects.
10119
10120Moved common AML resource handling code into a new file, "utresrc.c".
10121This
10122code is shared by both the Resource Manager and the AML Debugger.
10123
10124Code and Data Size: The current and previous library sizes for the core
10125subsystem are shown below. These are the code and data sizes for the
10126acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10127These
10128values do not include any ACPI driver or OSPM code. The debug version of
10129the
10130code includes the debug output trace mechanism and has a much larger code
10131and data size. Note that these values will vary depending on the
10132efficiency
10133of the compiler and the compiler options used during generation.
10134
10135  Previous Release:
10136    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
10137    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
10138  Current Release:
10139    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
10140    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10141
10142
101432) iASL Compiler/Disassembler:
10144
10145Fixed a problem with very large initializer lists (more than 4000
10146elements)
10147for both Buffer and Package objects where the parse stack could overflow.
10148
10149Enhanced the pre-compile source code scan for non-ASCII characters to
10150ignore
10151characters within comment fields. The scan is now always performed and is
10152no
10153longer optional, detecting invalid characters within a source file
10154immediately rather than during the parse phase or later.
10155
10156Enhanced the ASL grammar definition to force early reductions on all
10157list-
10158style grammar elements so that the overall parse stack usage is greatly
10159reduced. This should improve performance and reduce the possibility of
10160parse
10161stack overflow.
10162
10163Eliminated all reduce/reduce conflicts in the iASL parser generation.
10164Also,
10165with the addition of a %expected statement, the compiler generates from
10166source with no warnings.
10167
10168Fixed a possible segment fault in the disassembler if the input filename
10169does not contain a "dot" extension (Thomas Renninger).
10170
10171----------------------------------------
1017221 October 2005. Summary of changes for version 20051021:
10173
101741) ACPI CA Core Subsystem:
10175
10176Implemented support for the EM64T and other x86-64 processors. This
10177essentially entails recognizing that these processors support non-aligned
10178memory transfers. Previously, all 64-bit processors were assumed to lack
10179hardware support for non-aligned transfers.
10180
10181Completed conversion of the Resource Manager to nearly full table-driven
10182operation. Specifically, the resource conversion code (convert AML to
10183internal format and the reverse) and the debug code to dump internal
10184resource descriptors are fully table-driven, reducing code and data size
10185and
10186improving maintainability.
10187
10188The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
10189word
10190on 64-bit processors instead of a fixed 32-bit word. (With assistance
10191from
10192Alexey Starikovskiy)
10193
10194Implemented support within the resource conversion code for the Type-
10195Specific byte within the various ACPI 3.0 *WordSpace macros.
10196
10197Fixed some issues within the resource conversion code for the type-
10198specific
10199flags for both Memory and I/O address resource descriptors. For Memory,
10200implemented support for the MTP and TTP flags. For I/O, split the TRS and
10201TTP flags into two separate fields.
10202
10203Code and Data Size: The current and previous library sizes for the core
10204subsystem are shown below. These are the code and data sizes for the
10205acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10206These
10207values do not include any ACPI driver or OSPM code. The debug version of
10208the
10209code includes the debug output trace mechanism and has a much larger code
10210and data size. Note that these values will vary depending on the
10211efficiency
10212of the compiler and the compiler options used during generation.
10213
10214  Previous Release:
10215    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
10216    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
10217  Current Release:
10218    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
10219    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
10220
10221
10222
102232) iASL Compiler/Disassembler:
10224
10225Relaxed a compiler restriction that disallowed a ResourceIndex byte if
10226the
10227corresponding ResourceSource string was not also present in a resource
10228descriptor declaration. This restriction caused problems with existing
10229AML/ASL code that includes the Index byte without the string. When such
10230AML
10231was disassembled, it could not be compiled without modification. Further,
10232the modified code created a resource template with a different size than
10233the
10234original, breaking code that used fixed offsets into the resource
10235template
10236buffer.
10237
10238Removed a recent feature of the disassembler to ignore a lone
10239ResourceIndex
10240byte. This byte is now emitted if present so that the exact AML can be
10241reproduced when the disassembled code is recompiled.
10242
10243Improved comments and text alignment for the resource descriptor code
10244emitted by the disassembler.
10245
10246Implemented disassembler support for the ACPI 3.0 AccessSize field within
10247a
10248Register() resource descriptor.
10249
10250----------------------------------------
1025130 September 2005. Summary of changes for version 20050930:
10252
102531) ACPI CA Core Subsystem:
10254
10255Completed a major overhaul of the Resource Manager code - specifically,
10256optimizations in the area of the AML/internal resource conversion code.
10257The
10258code has been optimized to simplify and eliminate duplicated code, CPU
10259stack
10260use has been decreased by optimizing function parameters and local
10261variables, and naming conventions across the manager have been
10262standardized
10263for clarity and ease of maintenance (this includes function, parameter,
10264variable, and struct/typedef names.) The update may force changes in some
10265driver code, depending on how resources are handled by the host OS.
10266
10267All Resource Manager dispatch and information tables have been moved to a
10268single location for clarity and ease of maintenance. One new file was
10269created, named "rsinfo.c".
10270
10271The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
10272guarantee that the argument is not evaluated twice, making them less
10273prone
10274to macro side-effects. However, since there exists the possibility of
10275additional stack use if a particular compiler cannot optimize them (such
10276as
10277in the debug generation case), the original macros are optionally
10278available.
10279Note that some invocations of the return_VALUE macro may now cause size
10280mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
10281to
10282eliminate these. (From Randy Dunlap)
10283
10284Implemented a new mechanism to enable debug tracing for individual
10285control
10286methods. A new external interface, AcpiDebugTrace, is provided to enable
10287this mechanism. The intent is to allow the host OS to easily enable and
10288disable tracing for problematic control methods. This interface can be
10289easily exposed to a user or debugger interface if desired. See the file
10290psxface.c for details.
10291
10292AcpiUtCallocate will now return a valid pointer if a length of zero is
10293specified - a length of one is used and a warning is issued. This matches
10294the behavior of AcpiUtAllocate.
10295
10296Code and Data Size: The current and previous library sizes for the core
10297subsystem are shown below. These are the code and data sizes for the
10298acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10299These
10300values do not include any ACPI driver or OSPM code. The debug version of
10301the
10302code includes the debug output trace mechanism and has a much larger code
10303and data size. Note that these values will vary depending on the
10304efficiency
10305of the compiler and the compiler options used during generation.
10306
10307  Previous Release:
10308    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
10309    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
10310  Current Release:
10311    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
10312    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
10313
10314
103152) iASL Compiler/Disassembler:
10316
10317A remark is issued if the effective compile-time length of a package or
10318buffer is zero. Previously, this was a warning.
10319
10320----------------------------------------
1032116 September 2005. Summary of changes for version 20050916:
10322
103231) ACPI CA Core Subsystem:
10324
10325Fixed a problem within the Resource Manager where support for the Generic
10326Register descriptor was not fully implemented. This descriptor is now
10327fully
10328recognized, parsed, disassembled, and displayed.
10329
10330Completely restructured the Resource Manager code to utilize table-driven
10331dispatch and lookup, eliminating many of the large switch() statements.
10332This
10333reduces overall subsystem code size and code complexity. Affects the
10334resource parsing and construction, disassembly, and debug dump output.
10335
10336Cleaned up and restructured the debug dump output for all resource
10337descriptors. Improved readability of the output and reduced code size.
10338
10339Fixed a problem where changes to internal data structures caused the
10340optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
10341
10342Code and Data Size: The current and previous library sizes for the core
10343subsystem are shown below. These are the code and data sizes for the
10344acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10345These
10346values do not include any ACPI driver or OSPM code. The debug version of
10347the
10348code includes the debug output trace mechanism and has a much larger code
10349and data size. Note that these values will vary depending on the
10350efficiency
10351of the compiler and the compiler options used during generation.
10352
10353  Previous Release:
10354    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
10355    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
10356  Current Release:
10357    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
10358    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
10359
10360
103612) iASL Compiler/Disassembler:
10362
10363Updated the disassembler to automatically insert an EndDependentFn()
10364macro
10365into the ASL stream if this macro is missing in the original AML code,
10366simplifying compilation of the resulting ASL module.
10367
10368Fixed a problem in the disassembler where a disassembled ResourceSource
10369string (within a large resource descriptor) was not surrounded by quotes
10370and
10371not followed by a comma, causing errors when the resulting ASL module was
10372compiled. Also, escape sequences within a ResourceSource string are now
10373handled correctly (especially "\\")
10374
10375----------------------------------------
1037602 September 2005. Summary of changes for version 20050902:
10377
103781) ACPI CA Core Subsystem:
10379
10380Fixed a problem with the internal Owner ID allocation and deallocation
10381mechanisms for control method execution and recursive method invocation.
10382This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
10383messages seen on some systems. Recursive method invocation depth is
10384currently limited to 255. (Alexey Starikovskiy)
10385
10386Completely eliminated all vestiges of support for the "module-level
10387executable code" until this support is fully implemented and debugged.
10388This
10389should eliminate the NO_RETURN_VALUE exceptions seen during table load on
10390some systems that invoke this support.
10391
10392Fixed a problem within the resource manager code where the transaction
10393flags
10394for a 64-bit address descriptor were handled incorrectly in the type-
10395specific flag byte.
10396
10397Consolidated duplicate code within the address descriptor resource
10398manager
10399code, reducing overall subsystem code size.
10400
10401Fixed a fault when using the AML debugger "disassemble" command to
10402disassemble individual control methods.
10403
10404Removed references to the "release_current" directory within the Unix
10405release package.
10406
10407Code and Data Size: The current and previous core subsystem library sizes
10408are shown below. These are the code and data sizes for the acpica.lib
10409produced by the Microsoft Visual C++ 6.0 compiler. These values do not
10410include any ACPI driver or OSPM code. The debug version of the code
10411includes
10412the debug output trace mechanism and has a much larger code and data
10413size.
10414Note that these values will vary depending on the efficiency of the
10415compiler
10416and the compiler options used during generation.
10417
10418  Previous Release:
10419    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10420    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
10421  Current Release:
10422    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
10423    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
10424
10425
104262) iASL Compiler/Disassembler:
10427
10428Implemented an error check for illegal duplicate values in the interrupt
10429and
10430dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
10431Interrupt().
10432
10433Implemented error checking for the Irq() and IrqNoFlags() macros to
10434detect
10435too many values in the interrupt list (16 max) and invalid values in the
10436list (range 0 - 15)
10437
10438The maximum length string literal within an ASL file is now restricted to
10439200 characters as per the ACPI specification.
10440
10441Fixed a fault when using the -ln option (generate namespace listing).
10442
10443Implemented an error check to determine if a DescriptorName within a
10444resource descriptor has already been used within the current scope.
10445
10446----------------------------------------
1044715 August 2005.  Summary of changes for version 20050815:
10448
104491) ACPI CA Core Subsystem:
10450
10451Implemented a full bytewise compare to determine if a table load request
10452is
10453attempting to load a duplicate table. The compare is performed if the
10454table
10455signatures and table lengths match. This will allow different tables with
10456the same OEM Table ID and revision to be loaded - probably against the
10457ACPI
10458specification, but discovered in the field nonetheless.
10459
10460Added the changes.txt logfile to each of the zipped release packages.
10461
10462Code and Data Size: Current and previous core subsystem library sizes are
10463shown below. These are the code and data sizes for the acpica.lib
10464produced
10465by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10466any ACPI driver or OSPM code. The debug version of the code includes the
10467debug output trace mechanism and has a much larger code and data size.
10468Note
10469that these values will vary depending on the efficiency of the compiler
10470and
10471the compiler options used during generation.
10472
10473  Previous Release:
10474    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10475    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
10476  Current Release:
10477    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10478    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
10479
10480
104812) iASL Compiler/Disassembler:
10482
10483Fixed a problem where incorrect AML code could be generated for Package
10484objects if optimization is disabled (via the -oa switch).
10485
10486Fixed a problem with where incorrect AML code is generated for variable-
10487length packages when the package length is not specified and the number
10488of
10489initializer values is greater than 255.
10490
10491
10492----------------------------------------
1049329 July 2005.  Summary of changes for version 20050729:
10494
104951) ACPI CA Core Subsystem:
10496
10497Implemented support to ignore an attempt to install/load a particular
10498ACPI
10499table more than once. Apparently there exists BIOS code that repeatedly
10500attempts to load the same SSDT upon certain events. With assistance from
10501Venkatesh Pallipadi.
10502
10503Restructured the main interface to the AML parser in order to correctly
10504handle all exceptional conditions. This will prevent leakage of the
10505OwnerId
10506resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
10507some
10508machines. With assistance from Alexey Starikovskiy.
10509
10510Support for "module level code" has been disabled in this version due to
10511a
10512number of issues that have appeared on various machines. The support can
10513be
10514enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
10515compilation. When the issues are fully resolved, the code will be enabled
10516by
10517default again.
10518
10519Modified the internal functions for debug print support to define the
10520FunctionName parameter as a (const char *) for compatibility with
10521compiler
10522built-in macros such as __FUNCTION__, etc.
10523
10524Linted the entire ACPICA source tree for both 32-bit and 64-bit.
10525
10526Implemented support to display an object count summary for the AML
10527Debugger
10528commands Object and Methods.
10529
10530Code and Data Size: Current and previous core subsystem library sizes are
10531shown below. These are the code and data sizes for the acpica.lib
10532produced
10533by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10534any ACPI driver or OSPM code. The debug version of the code includes the
10535debug output trace mechanism and has a much larger code and data size.
10536Note
10537that these values will vary depending on the efficiency of the compiler
10538and
10539the compiler options used during generation.
10540
10541  Previous Release:
10542    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10543    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10544  Current Release:
10545    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10546    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
10547
10548
105492) iASL Compiler/Disassembler:
10550
10551Fixed a regression that appeared in the 20050708 version of the compiler
10552where an error message was inadvertently emitted for invocations of the
10553_OSI
10554reserved control method.
10555
10556----------------------------------------
1055708 July 2005.  Summary of changes for version 20050708:
10558
105591) ACPI CA Core Subsystem:
10560
10561The use of the CPU stack in the debug version of the subsystem has been
10562considerably reduced. Previously, a debug structure was declared in every
10563function that used the debug macros. This structure has been removed in
10564favor of declaring the individual elements as parameters to the debug
10565functions. This reduces the cumulative stack use during nested execution
10566of
10567ACPI function calls at the cost of a small increase in the code size of
10568the
10569debug version of the subsystem. With assistance from Alexey Starikovskiy
10570and
10571Len Brown.
10572
10573Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
10574headers to define a macro that will return the current function name at
10575runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
10576by
10577the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
10578compiler-dependent header, the function name is saved on the CPU stack
10579(one
10580pointer per function.) This mechanism is used because apparently there
10581exists no standard ANSI-C defined macro that that returns the function
10582name.
10583
10584Redesigned and reimplemented the "Owner ID" mechanism used to track
10585namespace objects created/deleted by ACPI tables and control method
10586execution. A bitmap is now used to allocate and free the IDs, thus
10587solving
10588the wraparound problem present in the previous implementation. The size
10589of
10590the namespace node descriptor was reduced by 2 bytes as a result (Alexey
10591Starikovskiy).
10592
10593Removed the UINT32_BIT and UINT16_BIT types that were used for the
10594bitfield
10595flag definitions within the headers for the predefined ACPI tables. These
10596have been replaced by UINT8_BIT in order to increase the code portability
10597of
10598the subsystem. If the use of UINT8 remains a problem, we may be forced to
10599eliminate bitfields entirely because of a lack of portability.
10600
10601Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
10602This
10603is a frequently used function and this improvement increases the
10604performance
10605of the entire subsystem (Alexey Starikovskiy).
10606
10607Fixed several possible memory leaks and the inverse - premature object
10608deletion (Alexey Starikovskiy).
10609
10610Code and Data Size: Current and previous core subsystem library sizes are
10611shown below. These are the code and data sizes for the acpica.lib
10612produced
10613by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10614any ACPI driver or OSPM code. The debug version of the code includes the
10615debug output trace mechanism and has a much larger code and data size.
10616Note
10617that these values will vary depending on the efficiency of the compiler
10618and
10619the compiler options used during generation.
10620
10621  Previous Release:
10622    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
10623    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
10624  Current Release:
10625    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10626    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10627
10628----------------------------------------
1062924 June 2005.  Summary of changes for version 20050624:
10630
106311) ACPI CA Core Subsystem:
10632
10633Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
10634the host-defined cache object. This allows the OSL implementation to
10635define
10636and type this object in any manner desired, simplifying the OSL
10637implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
10638Linux, and should be defined in the OS-specific header file for other
10639operating systems as required.
10640
10641Changed the interface to AcpiOsAcquireObject to directly return the
10642requested object as the function return (instead of ACPI_STATUS.) This
10643change was made for performance reasons, since this is the purpose of the
10644interface in the first place. AcpiOsAcquireObject is now similar to the
10645AcpiOsAllocate interface.
10646
10647Implemented a new AML debugger command named Businfo. This command
10648displays
10649information about all devices that have an associate _PRT object. The
10650_ADR,
10651_HID, _UID, and _CID are displayed for these devices.
10652
10653Modified the initialization sequence in AcpiInitializeSubsystem to call
10654the
10655OSL interface AcpiOslInitialize first, before any local initialization.
10656This
10657change was required because the global initialization now calls OSL
10658interfaces.
10659
10660Enhanced the Dump command to display the entire contents of Package
10661objects
10662(including all sub-objects and their values.)
10663
10664Restructured the code base to split some files because of size and/or
10665because the code logically belonged in a separate file. New files are
10666listed
10667below. All makefiles and project files included in the ACPI CA release
10668have
10669been updated.
10670    utilities/utcache.c           /* Local cache interfaces */
10671    utilities/utmutex.c           /* Local mutex support */
10672    utilities/utstate.c           /* State object support */
10673    interpreter/parser/psloop.c   /* Main AML parse loop */
10674
10675Code and Data Size: Current and previous core subsystem library sizes are
10676shown below. These are the code and data sizes for the acpica.lib
10677produced
10678by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10679any ACPI driver or OSPM code. The debug version of the code includes the
10680debug output trace mechanism and has a much larger code and data size.
10681Note
10682that these values will vary depending on the efficiency of the compiler
10683and
10684the compiler options used during generation.
10685
10686  Previous Release:
10687    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
10688    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
10689  Current Release:
10690    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
10691    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
10692
10693
106942) iASL Compiler/Disassembler:
10695
10696Fixed a regression introduced in version 20050513 where the use of a
10697Package
10698object within a Case() statement caused a compile time exception. The
10699original behavior has been restored (a Match() operator is emitted.)
10700
10701----------------------------------------
1070217 June 2005.  Summary of changes for version 20050617:
10703
107041) ACPI CA Core Subsystem:
10705
10706Moved the object cache operations into the OS interface layer (OSL) to
10707allow
10708the host OS to handle these operations if desired (for example, the Linux
10709OSL will invoke the slab allocator). This support is optional; the
10710compile
10711time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
10712cache
10713code in the ACPI CA core. The new OSL interfaces are shown below. See
10714utalloc.c for an example implementation, and acpiosxf.h for the exact
10715interface definitions. With assistance from Alexey Starikovskiy.
10716    AcpiOsCreateCache
10717    AcpiOsDeleteCache
10718    AcpiOsPurgeCache
10719    AcpiOsAcquireObject
10720    AcpiOsReleaseObject
10721
10722Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
10723return
10724and restore a flags parameter. This fits better with many OS lock models.
10725Note: the current execution state (interrupt handler or not) is no longer
10726passed to these interfaces. If necessary, the OSL must determine this
10727state
10728by itself, a simple and fast operation. With assistance from Alexey
10729Starikovskiy.
10730
10731Fixed a problem in the ACPI table handling where a valid XSDT was assumed
10732present if the revision of the RSDP was 2 or greater. According to the
10733ACPI
10734specification, the XSDT is optional in all cases, and the table manager
10735therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
10736Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
10737contain
10738only the RSDT.
10739
10740Fixed an interpreter problem with the Mid() operator in the case of an
10741input
10742string where the resulting output string is of zero length. It now
10743correctly
10744returns a valid, null terminated string object instead of a string object
10745with a null pointer.
10746
10747Fixed a problem with the control method argument handling to allow a
10748store
10749to an Arg object that already contains an object of type Device. The
10750Device
10751object is now correctly overwritten. Previously, an error was returned.
10752
10753
10754Enhanced the debugger Find command to emit object values in addition to
10755the
10756found object pathnames. The output format is the same as the dump
10757namespace
10758command.
10759
10760Enhanced the debugger Set command. It now has the ability to set the
10761value
10762of any Named integer object in the namespace (Previously, only method
10763locals
10764and args could be set.)
10765
10766Code and Data Size: Current and previous core subsystem library sizes are
10767shown below. These are the code and data sizes for the acpica.lib
10768produced
10769by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10770any ACPI driver or OSPM code. The debug version of the code includes the
10771debug output trace mechanism and has a much larger code and data size.
10772Note
10773that these values will vary depending on the efficiency of the compiler
10774and
10775the compiler options used during generation.
10776
10777  Previous Release:
10778    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
10779    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
10780  Current Release:
10781    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
10782    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
10783
10784
107852) iASL Compiler/Disassembler:
10786
10787Fixed a regression in the disassembler where if/else/while constructs
10788were
10789output incorrectly. This problem was introduced in the previous release
10790(20050526). This problem also affected the single-step disassembly in the
10791debugger.
10792
10793Fixed a problem where compiling the reserved _OSI method would randomly
10794(but
10795rarely) produce compile errors.
10796
10797Enhanced the disassembler to emit compilable code in the face of
10798incorrect
10799AML resource descriptors. If the optional ResourceSourceIndex is present,
10800but the ResourceSource is not, do not emit the ResourceSourceIndex in the
10801disassembly. Otherwise, the resulting code cannot be compiled without
10802errors.
10803
10804----------------------------------------
1080526 May 2005.  Summary of changes for version 20050526:
10806
108071) ACPI CA Core Subsystem:
10808
10809Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
10810the module level (not within a control method.) These opcodes are
10811executed
10812exactly once at the time the table is loaded. This type of code was legal
10813up
10814until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
10815in
10816order to provide backwards compatibility with earlier BIOS
10817implementations.
10818This eliminates the "Encountered executable code at module level" warning
10819that was previously generated upon detection of such code.
10820
10821Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
10822inadvertently be generated during the lookup of namespace objects in the
10823second pass parse of ACPI tables and control methods. It appears that
10824this
10825problem could occur during the resolution of forward references to
10826namespace
10827objects.
10828
10829Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
10830corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
10831allows the deadlock detection debug code to be compiled out in the normal
10832case, improving mutex performance (and overall subsystem performance)
10833considerably.
10834
10835Implemented a handful of miscellaneous fixes for possible memory leaks on
10836error conditions and error handling control paths. These fixes were
10837suggested by FreeBSD and the Coverity Prevent source code analysis tool.
10838
10839Added a check for a null RSDT pointer in AcpiGetFirmwareTable
10840(tbxfroot.c)
10841to prevent a fault in this error case.
10842
10843Code and Data Size: Current and previous core subsystem library sizes are
10844shown below. These are the code and data sizes for the acpica.lib
10845produced
10846by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10847any ACPI driver or OSPM code. The debug version of the code includes the
10848debug output trace mechanism and has a much larger code and data size.
10849Note
10850that these values will vary depending on the efficiency of the compiler
10851and
10852the compiler options used during generation.
10853
10854  Previous Release:
10855    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10856    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10857  Current Release:
10858    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
10859    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
10860
10861
108622) iASL Compiler/Disassembler:
10863
10864Implemented support to allow Type 1 and Type 2 ASL operators to appear at
10865the module level (not within a control method.) These operators will be
10866executed once at the time the table is loaded. This type of code was
10867legal
10868up until the release of ACPI 2.0B (2002) and is now supported by the iASL
10869compiler in order to provide backwards compatibility with earlier BIOS
10870ASL
10871code.
10872
10873The ACPI integer width (specified via the table revision ID or the -r
10874override, 32 or 64 bits) is now used internally during compile-time
10875constant
10876folding to ensure that constants are truncated to 32 bits if necessary.
10877Previously, the revision ID value was only emitted in the AML table
10878header.
10879
10880An error message is now generated for the Mutex and Method operators if
10881the
10882SyncLevel parameter is outside the legal range of 0 through 15.
10883
10884Fixed a problem with the Method operator ParameterTypes list handling
10885(ACPI
108863.0). Previously, more than 2 types or 2 arguments generated a syntax
10887error.
10888The actual underlying implementation of method argument typechecking is
10889still under development, however.
10890
10891----------------------------------------
1089213 May 2005.  Summary of changes for version 20050513:
10893
108941) ACPI CA Core Subsystem:
10895
10896Implemented support for PCI Express root bridges -- added support for
10897device
10898PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
10899
10900The interpreter now automatically truncates incoming 64-bit constants to
1090132
10902bits if currently executing out of a 32-bit ACPI table (Revision < 2).
10903This
10904also affects the iASL compiler constant folding. (Note: as per below, the
10905iASL compiler no longer allows 64-bit constants within 32-bit tables.)
10906
10907Fixed a problem where string and buffer objects with "static" pointers
10908(pointers to initialization data within an ACPI table) were not handled
10909consistently. The internal object copy operation now always copies the
10910data
10911to a newly allocated buffer, regardless of whether the source object is
10912static or not.
10913
10914Fixed a problem with the FromBCD operator where an implicit result
10915conversion was improperly performed while storing the result to the
10916target
10917operand. Since this is an "explicit conversion" operator, the implicit
10918conversion should never be performed on the output.
10919
10920Fixed a problem with the CopyObject operator where a copy to an existing
10921named object did not always completely overwrite the existing object
10922stored
10923at name. Specifically, a buffer-to-buffer copy did not delete the
10924existing
10925buffer.
10926
10927Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
10928and
10929structs for consistency.
10930
10931Code and Data Size: Current and previous core subsystem library sizes are
10932shown below. These are the code and data sizes for the acpica.lib
10933produced
10934by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10935any ACPI driver or OSPM code. The debug version of the code includes the
10936debug output trace mechanism and has a much larger code and data size.
10937Note
10938that these values will vary depending on the efficiency of the compiler
10939and
10940the compiler options used during generation.
10941
10942  Previous Release:
10943    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10944    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10945  Current Release: (Same sizes)
10946    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10947    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10948
10949
109502) iASL Compiler/Disassembler:
10951
10952The compiler now emits a warning if an attempt is made to generate a 64-
10953bit
10954integer constant from within a 32-bit ACPI table (Revision < 2). The
10955integer
10956is truncated to 32 bits.
10957
10958Fixed a problem with large package objects: if the static length of the
10959package is greater than 255, the "variable length package" opcode is
10960emitted. Previously, this caused an error. This requires an update to the
10961ACPI spec, since it currently (incorrectly) states that packages larger
10962than
10963255 elements are not allowed.
10964
10965The disassembler now correctly handles variable length packages and
10966packages
10967larger than 255 elements.
10968
10969----------------------------------------
1097008 April 2005.  Summary of changes for version 20050408:
10971
109721) ACPI CA Core Subsystem:
10973
10974Fixed three cases in the interpreter where an "index" argument to an ASL
10975function was still (internally) 32 bits instead of the required 64 bits.
10976This was the Index argument to the Index, Mid, and Match operators.
10977
10978The "strupr" function is now permanently local (AcpiUtStrupr), since this
10979is
10980not a POSIX-defined function and not present in most kernel-level C
10981libraries. All references to the C library strupr function have been
10982removed
10983from the headers.
10984
10985Completed the deployment of static functions/prototypes. All prototypes
10986with
10987the static attribute have been moved from the headers to the owning C
10988file.
10989
10990Implemented an extract option (-e) for the AcpiBin utility (AML binary
10991utility). This option allows the utility to extract individual ACPI
10992tables
10993from the output of AcpiDmp. It provides the same functionality of the
10994acpixtract.pl perl script without the worry of setting the correct perl
10995options. AcpiBin runs on Windows and has not yet been generated/validated
10996in
10997the Linux/Unix environment (but should be soon).
10998
10999Updated and fixed the table dump option for AcpiBin (-d). This option
11000converts a single ACPI table to a hex/ascii file, similar to the output
11001of
11002AcpiDmp.
11003
11004Code and Data Size: Current and previous core subsystem library sizes are
11005shown below. These are the code and data sizes for the acpica.lib
11006produced
11007by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11008any ACPI driver or OSPM code. The debug version of the code includes the
11009debug output trace mechanism and has a much larger code and data size.
11010Note
11011that these values will vary depending on the efficiency of the compiler
11012and
11013the compiler options used during generation.
11014
11015  Previous Release:
11016    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11017    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11018  Current Release:
11019    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11020    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11021
11022
110232) iASL Compiler/Disassembler:
11024
11025Disassembler fix: Added a check to ensure that the table length found in
11026the
11027ACPI table header within the input file is not longer than the actual
11028input
11029file size. This indicates some kind of file or table corruption.
11030
11031----------------------------------------
1103229 March 2005.  Summary of changes for version 20050329:
11033
110341) ACPI CA Core Subsystem:
11035
11036An error is now generated if an attempt is made to create a Buffer Field
11037of
11038length zero (A CreateField with a length operand of zero.)
11039
11040The interpreter now issues a warning whenever executable code at the
11041module
11042level is detected during ACPI table load. This will give some idea of the
11043prevalence of this type of code.
11044
11045Implemented support for references to named objects (other than control
11046methods) within package objects.
11047
11048Enhanced package object output for the debug object. Package objects are
11049now
11050completely dumped, showing all elements.
11051
11052Enhanced miscellaneous object output for the debug object. Any object can
11053now be written to the debug object (for example, a device object can be
11054written, and the type of the object will be displayed.)
11055
11056The "static" qualifier has been added to all local functions across both
11057the
11058core subsystem and the iASL compiler.
11059
11060The number of "long" lines (> 80 chars) within the source has been
11061significantly reduced, by about 1/3.
11062
11063Cleaned up all header files to ensure that all CA/iASL functions are
11064prototyped (even static functions) and the formatting is consistent.
11065
11066Two new header files have been added, acopcode.h and acnames.h.
11067
11068Removed several obsolete functions that were no longer used.
11069
11070Code and Data Size: Current and previous core subsystem library sizes are
11071shown below. These are the code and data sizes for the acpica.lib
11072produced
11073by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11074any ACPI driver or OSPM code. The debug version of the code includes the
11075debug output trace mechanism and has a much larger code and data size.
11076Note
11077that these values will vary depending on the efficiency of the compiler
11078and
11079the compiler options used during generation.
11080
11081  Previous Release:
11082    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11083    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
11084  Current Release:
11085    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11086    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11087
11088
11089
110902) iASL Compiler/Disassembler:
11091
11092Fixed a problem with the resource descriptor generation/support. For the
11093ResourceSourceIndex and the ResourceSource fields, both must be present,
11094or
11095both must be not present - can't have one without the other.
11096
11097The compiler now returns non-zero from the main procedure if any errors
11098have
11099occurred during the compilation.
11100
11101
11102----------------------------------------
1110309 March 2005.  Summary of changes for version 20050309:
11104
111051) ACPI CA Core Subsystem:
11106
11107The string-to-buffer implicit conversion code has been modified again
11108after
11109a change to the ACPI specification.  In order to match the behavior of
11110the
11111other major ACPI implementation, the target buffer is no longer truncated
11112if
11113the source string is smaller than an existing target buffer. This change
11114requires an update to the ACPI spec, and should eliminate the recent
11115AE_AML_BUFFER_LIMIT issues.
11116
11117The "implicit return" support was rewritten to a new algorithm that
11118solves
11119the general case. Rather than attempt to determine when a method is about
11120to
11121exit, the result of every ASL operator is saved momentarily until the
11122very
11123next ASL operator is executed. Therefore, no matter how the method exits,
11124there will always be a saved implicit return value. This feature is only
11125enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
11126eliminate
11127AE_AML_NO_RETURN_VALUE errors when enabled.
11128
11129Implemented implicit conversion support for the predicate (operand) of
11130the
11131If, Else, and While operators. String and Buffer arguments are
11132automatically
11133converted to Integers.
11134
11135Changed the string-to-integer conversion behavior to match the new ACPI
11136errata: "If no integer object exists, a new integer is created. The ASCII
11137string is interpreted as a hexadecimal constant. Each string character is
11138interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
11139with the first character as the most significant digit, and ending with
11140the
11141first non-hexadecimal character or end-of-string." This means that the
11142first
11143non-hex character terminates the conversion and this is the code that was
11144changed.
11145
11146Fixed a problem where the ObjectType operator would fail (fault) when
11147used
11148on an Index of a Package which pointed to a null package element. The
11149operator now properly returns zero (Uninitialized) in this case.
11150
11151Fixed a problem where the While operator used excessive memory by not
11152properly popping the result stack during execution. There was no memory
11153leak
11154after execution, however. (Code provided by Valery Podrezov.)
11155
11156Fixed a problem where references to control methods within Package
11157objects
11158caused the method to be invoked, instead of producing a reference object
11159pointing to the method.
11160
11161Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
11162to
11163improve performance and reduce code size. (Code provided by Alexey
11164Starikovskiy.)
11165
11166Code and Data Size: Current and previous core subsystem library sizes are
11167shown below. These are the code and data sizes for the acpica.lib
11168produced
11169by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11170any ACPI driver or OSPM code. The debug version of the code includes the
11171debug output trace mechanism and has a much larger code and data size.
11172Note
11173that these values will vary depending on the efficiency of the compiler
11174and
11175the compiler options used during generation.
11176
11177  Previous Release:
11178    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11179    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
11180  Current Release:
11181    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11182    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
11183
11184
111852) iASL Compiler/Disassembler:
11186
11187Fixed a problem with the Return operator with no arguments. Since the AML
11188grammar for the byte encoding requires an operand for the Return opcode,
11189the
11190compiler now emits a Return(Zero) for this case.  An ACPI specification
11191update has been written for this case.
11192
11193For tables other than the DSDT, namepath optimization is automatically
11194disabled. This is because SSDTs can be loaded anywhere in the namespace,
11195the
11196compiler has no knowledge of where, and thus cannot optimize namepaths.
11197
11198Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
11199inadvertently omitted from the ACPI specification, and will require an
11200update to the spec.
11201
11202The source file scan for ASCII characters is now optional (-a). This
11203change
11204was made because some vendors place non-ascii characters within comments.
11205However, the scan is simply a brute-force byte compare to ensure all
11206characters in the file are in the range 0x00 to 0x7F.
11207
11208Fixed a problem with the CondRefOf operator where the compiler was
11209inappropriately checking for the existence of the target. Since the point
11210of
11211the operator is to check for the existence of the target at run-time, the
11212compiler no longer checks for the target existence.
11213
11214Fixed a problem where errors generated from the internal AML interpreter
11215during constant folding were not handled properly, causing a fault.
11216
11217Fixed a problem with overly aggressive range checking for the Stall
11218operator. The valid range (max 255) is now only checked if the operand is
11219of
11220type Integer. All other operand types cannot be statically checked.
11221
11222Fixed a problem where control method references within the RefOf,
11223DeRefOf,
11224and ObjectType operators were not treated properly. They are now treated
11225as
11226actual references, not method invocations.
11227
11228Fixed and enhanced the "list namespace" option (-ln). This option was
11229broken
11230a number of releases ago.
11231
11232Improved error handling for the Field, IndexField, and BankField
11233operators.
11234The compiler now cleanly reports and recovers from errors in the field
11235component (FieldUnit) list.
11236
11237Fixed a disassembler problem where the optional ResourceDescriptor fields
11238TRS and TTP were not always handled correctly.
11239
11240Disassembler - Comments in output now use "//" instead of "/*"
11241
11242----------------------------------------
1124328 February 2005.  Summary of changes for version 20050228:
11244
112451) ACPI CA Core Subsystem:
11246
11247Fixed a problem where the result of an Index() operator (an object
11248reference) must increment the reference count on the target object for
11249the
11250life of the object reference.
11251
11252Implemented AML Interpreter and Debugger support for the new ACPI 3.0
11253Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
11254WordSpace
11255resource descriptors.
11256
11257Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
11258Space Descriptor" string, indicating interpreter support for the
11259descriptors
11260above.
11261
11262Implemented header support for the new ACPI 3.0 FADT flag bits.
11263
11264Implemented header support for the new ACPI 3.0 PCI Express bits for the
11265PM1
11266status/enable registers.
11267
11268Updated header support for the MADT processor local Apic struct and MADT
11269platform interrupt source struct for new ACPI 3.0 fields.
11270
11271Implemented header support for the SRAT and SLIT ACPI tables.
11272
11273Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
11274flag
11275at runtime.
11276
11277Code and Data Size: Current and previous core subsystem library sizes are
11278shown below. These are the code and data sizes for the acpica.lib
11279produced
11280by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11281any ACPI driver or OSPM code. The debug version of the code includes the
11282debug output trace mechanism and has a much larger code and data size.
11283Note
11284that these values will vary depending on the efficiency of the compiler
11285and
11286the compiler options used during generation.
11287
11288  Previous Release:
11289    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
11290    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
11291  Current Release:
11292    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11293    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
11294
11295
112962) iASL Compiler/Disassembler:
11297
11298Fixed a problem with the internal 64-bit String-to-integer conversion
11299with
11300strings less than two characters long.
11301
11302Fixed a problem with constant folding where the result of the Index()
11303operator can not be considered a constant. This means that Index() cannot
11304be
11305a type3 opcode and this will require an update to the ACPI specification.
11306
11307Disassembler: Implemented support for the TTP, MTP, and TRS resource
11308descriptor fields. These fields were inadvertently ignored and not output
11309in
11310the disassembly of the resource descriptor.
11311
11312
11313 ----------------------------------------
1131411 February 2005.  Summary of changes for version 20050211:
11315
113161) ACPI CA Core Subsystem:
11317
11318Implemented ACPI 3.0 support for implicit conversion within the Match()
11319operator. MatchObjects can now be of type integer, buffer, or string
11320instead
11321of just type integer.  Package elements are implicitly converted to the
11322type
11323of the MatchObject. This change aligns the behavior of Match() with the
11324behavior of the other logical operators (LLess(), etc.) It also requires
11325an
11326errata change to the ACPI specification as this support was intended for
11327ACPI 3.0, but was inadvertently omitted.
11328
11329Fixed a problem with the internal implicit "to buffer" conversion.
11330Strings
11331that are converted to buffers will cause buffer truncation if the string
11332is
11333smaller than the target buffer. Integers that are converted to buffers
11334will
11335not cause buffer truncation, only zero extension (both as per the ACPI
11336spec.) The problem was introduced when code was added to truncate the
11337buffer, but this should not be performed in all cases, only the string
11338case.
11339
11340Fixed a problem with the Buffer and Package operators where the
11341interpreter
11342would get confused if two such operators were used as operands to an ASL
11343operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
11344stack was not being popped after the execution of these operators,
11345resulting
11346in an AE_NO_RETURN_VALUE exception.
11347
11348Fixed a problem with constructs of the form Store(Index(...),...). The
11349reference object returned from Index was inadvertently resolved to an
11350actual
11351value. This problem was introduced in version 20050114 when the behavior
11352of
11353Store() was modified to restrict the object types that can be used as the
11354source operand (to match the ACPI specification.)
11355
11356Reduced excessive stack use within the AcpiGetObjectInfo procedure.
11357
11358Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
11359
11360Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
11361
11362Code and Data Size: Current and previous core subsystem library sizes are
11363shown below. These are the code and data sizes for the acpica.lib
11364produced
11365by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11366any ACPI driver or OSPM code. The debug version of the code includes the
11367debug output trace mechanism and has a much larger code and data size.
11368Note
11369that these values will vary depending on the efficiency of the compiler
11370and
11371the compiler options used during generation.
11372
11373  Previous Release:
11374    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
11375    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
11376  Current Release:
11377    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
11378    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
11379
11380
113812) iASL Compiler/Disassembler:
11382
11383Fixed a code generation problem in the constant folding optimization code
11384where incorrect code was generated if a constant was reduced to a buffer
11385object (i.e., a reduced type 5 opcode.)
11386
11387Fixed a typechecking problem for the ToBuffer operator. Caused by an
11388incorrect return type in the internal opcode information table.
11389
11390----------------------------------------
1139125 January 2005.  Summary of changes for version 20050125:
11392
113931) ACPI CA Core Subsystem:
11394
11395Fixed a recently introduced problem with the Global Lock where the
11396underlying semaphore was not created.  This problem was introduced in
11397version 20050114, and caused an AE_AML_NO_OPERAND exception during an
11398Acquire() operation on _GL.
11399
11400The local object cache is now optional, and is disabled by default. Both
11401AcpiExec and the iASL compiler enable the cache because they run in user
11402mode and this enhances their performance. #define
11403ACPI_ENABLE_OBJECT_CACHE
11404to enable the local cache.
11405
11406Fixed an issue in the internal function AcpiUtEvaluateObject concerning
11407the
11408optional "implicit return" support where an error was returned if no
11409return
11410object was expected, but one was implicitly returned. AE_OK is now
11411returned
11412in this case and the implicitly returned object is deleted.
11413AcpiUtEvaluateObject is only occasionally used, and only to execute
11414reserved
11415methods such as _STA and _INI where the return type is known up front.
11416
11417Fixed a few issues with the internal convert-to-integer code. It now
11418returns
11419an error if an attempt is made to convert a null string, a string of only
11420blanks/tabs, or a zero-length buffer. This affects both implicit
11421conversion
11422and explicit conversion via the ToInteger() operator.
11423
11424The internal debug code in AcpiUtAcquireMutex has been commented out. It
11425is
11426not needed for normal operation and should increase the performance of
11427the
11428entire subsystem. The code remains in case it is needed for debug
11429purposes
11430again.
11431
11432The AcpiExec source and makefile are included in the Unix/Linux package
11433for
11434the first time.
11435
11436Code and Data Size: Current and previous core subsystem library sizes are
11437shown below. These are the code and data sizes for the acpica.lib
11438produced
11439by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11440any ACPI driver or OSPM code. The debug version of the code includes the
11441debug output trace mechanism and has a much larger code and data size.
11442Note
11443that these values will vary depending on the efficiency of the compiler
11444and
11445the compiler options used during generation.
11446
11447  Previous Release:
11448    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
11449    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
11450  Current Release:
11451    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
11452    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
11453
114542) iASL Compiler/Disassembler:
11455
11456Switch/Case support: A warning is now issued if the type of the Switch
11457value
11458cannot be determined at compile time. For example, Switch(Arg0) will
11459generate the warning, and the type is assumed to be an integer. As per
11460the
11461ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
11462the
11463warning.
11464
11465Switch/Case support: Implemented support for buffer and string objects as
11466the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
11467buffers and strings.
11468
11469Switch/Case support: The emitted code for the LEqual() comparisons now
11470uses
11471the switch value as the first operand, not the second. The case value is
11472now
11473the second operand, and this allows the case value to be implicitly
11474converted to the type of the switch value, not the other way around.
11475
11476Switch/Case support: Temporary variables are now emitted immediately
11477within
11478the control method, not at the global level. This means that there are
11479now
1148036 temps available per-method, not 36 temps per-module as was the case
11481with
11482the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
11483
11484----------------------------------------
1148514 January 2005.  Summary of changes for version 20050114:
11486
11487Added 2005 copyright to all module headers.  This affects every module in
11488the core subsystem, iASL compiler, and the utilities.
11489
114901) ACPI CA Core Subsystem:
11491
11492Fixed an issue with the String-to-Buffer conversion code where the string
11493null terminator was not included in the buffer after conversion, but
11494there
11495is existing ASL that assumes the string null terminator is included. This
11496is
11497the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
11498introduced in the previous version when the code was updated to correctly
11499set the converted buffer size as per the ACPI specification. The ACPI
11500spec
11501is ambiguous and will be updated to specify that the null terminator must
11502be
11503included in the converted buffer. This also affects the ToBuffer() ASL
11504operator.
11505
11506Fixed a problem with the Mid() ASL/AML operator where it did not work
11507correctly on Buffer objects. Newly created sub-buffers were not being
11508marked
11509as initialized.
11510
11511
11512Fixed a problem in AcpiTbFindTable where incorrect string compares were
11513performed on the OemId and OemTableId table header fields.  These fields
11514are
11515not null terminated, so strncmp is now used instead of strcmp.
11516
11517Implemented a restriction on the Store() ASL/AML operator to align the
11518behavior with the ACPI specification.  Previously, any object could be
11519used
11520as the source operand.  Now, the only objects that may be used are
11521Integers,
11522Buffers, Strings, Packages, Object References, and DDB Handles.  If
11523necessary, the original behavior can be restored by enabling the
11524EnableInterpreterSlack flag.
11525
11526Enhanced the optional "implicit return" support to allow an implicit
11527return
11528value from methods that are invoked externally via the AcpiEvaluateObject
11529interface.  This enables implicit returns from the _STA and _INI methods,
11530for example.
11531
11532Changed the Revision() ASL/AML operator to return the current version of
11533the
11534AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
11535returned
11536the supported ACPI version (This is the function of the _REV method).
11537
11538Updated the _REV predefined method to return the currently supported
11539version
11540of ACPI, now 3.
11541
11542Implemented batch mode option for the AcpiExec utility (-b).
11543
11544Code and Data Size: Current and previous core subsystem library sizes are
11545shown below. These are the code and data sizes for the acpica.lib
11546produced
11547by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11548any ACPI driver or OSPM code. The debug version of the code includes the
11549debug output trace mechanism and has a much larger code and data size.
11550Note
11551that these values will vary depending on the efficiency of the compiler
11552and
11553the compiler options used during generation.
11554
11555  Previous Release:
11556    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11557    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11558  Current Release:
11559    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
11560    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
11561
11562----------------------------------------
1156310 December 2004.  Summary of changes for version 20041210:
11564
11565ACPI 3.0 support is nearing completion in both the iASL compiler and the
11566ACPI CA core subsystem.
11567
115681) ACPI CA Core Subsystem:
11569
11570Fixed a problem in the ToDecimalString operator where the resulting
11571string
11572length was incorrectly calculated. The length is now calculated exactly,
11573eliminating incorrect AE_STRING_LIMIT exceptions.
11574
11575Fixed a problem in the ToHexString operator to allow a maximum 200
11576character
11577string to be produced.
11578
11579Fixed a problem in the internal string-to-buffer and buffer-to-buffer
11580copy
11581routine where the length of the resulting buffer was not truncated to the
11582new size (if the target buffer already existed).
11583
11584Code and Data Size: Current and previous core subsystem library sizes are
11585shown below. These are the code and data sizes for the acpica.lib
11586produced
11587by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11588any ACPI driver or OSPM code. The debug version of the code includes the
11589debug output trace mechanism and has a much larger code and data size.
11590Note
11591that these values will vary depending on the efficiency of the compiler
11592and
11593the compiler options used during generation.
11594
11595  Previous Release:
11596    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11597    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
11598  Current Release:
11599    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11600    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11601
11602
116032) iASL Compiler/Disassembler:
11604
11605Implemented the new ACPI 3.0 resource template macros - DWordSpace,
11606ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
11607Includes support in the disassembler.
11608
11609Implemented support for the new (ACPI 3.0) parameter to the Register
11610macro,
11611AccessSize.
11612
11613Fixed a problem where the _HE resource name for the Interrupt macro was
11614referencing bit 0 instead of bit 1.
11615
11616Implemented check for maximum 255 interrupts in the Interrupt macro.
11617
11618Fixed a problem with the predefined resource descriptor names where
11619incorrect AML code was generated if the offset within the resource buffer
11620was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
11621but did not update the surrounding package lengths.
11622
11623Changes to the Dma macro:  All channels within the channel list must be
11624in
11625the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
11626optional (default is BusMaster).
11627
11628Implemented check for maximum 7 data bytes for the VendorShort macro.
11629
11630The ReadWrite parameter is now optional for the Memory32 and similar
11631macros.
11632
11633----------------------------------------
1163403 December 2004.  Summary of changes for version 20041203:
11635
116361) ACPI CA Core Subsystem:
11637
11638The low-level field insertion/extraction code (exfldio) has been
11639completely
11640rewritten to eliminate unnecessary complexity, bugs, and boundary
11641conditions.
11642
11643Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
11644ToDecimalString
11645operators where the input operand could be inadvertently deleted if no
11646conversion was necessary (e.g., if the input to ToInteger was an Integer
11647object.)
11648
11649Fixed a problem with the ToDecimalString and ToHexString where an
11650incorrect
11651exception code was returned if the resulting string would be > 200 chars.
11652AE_STRING_LIMIT is now returned.
11653
11654Fixed a problem with the Concatenate operator where AE_OK was always
11655returned, even if the operation failed.
11656
11657Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
11658semaphores to be allocated.
11659
11660Code and Data Size: Current and previous core subsystem library sizes are
11661shown below. These are the code and data sizes for the acpica.lib
11662produced
11663by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11664any ACPI driver or OSPM code. The debug version of the code includes the
11665debug output trace mechanism and has a much larger code and data size.
11666Note
11667that these values will vary depending on the efficiency of the compiler
11668and
11669the compiler options used during generation.
11670
11671  Previous Release:
11672    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11673    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11674  Current Release:
11675    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11676    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
11677
11678
116792) iASL Compiler/Disassembler:
11680
11681Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
11682recently introduced in 20041119.
11683
11684Fixed a problem with the ToUUID macro where the upper nybble of each
11685buffer
11686byte was inadvertently set to zero.
11687
11688----------------------------------------
1168919 November 2004.  Summary of changes for version 20041119:
11690
116911) ACPI CA Core Subsystem:
11692
11693Fixed a problem in the internal ConvertToInteger routine where new
11694integers
11695were not truncated to 32 bits for 32-bit ACPI tables. This routine
11696converts
11697buffers and strings to integers.
11698
11699Implemented support to store a value to an Index() on a String object.
11700This
11701is an ACPI 2.0 feature that had not yet been implemented.
11702
11703Implemented new behavior for storing objects to individual package
11704elements
11705(via the Index() operator). The previous behavior was to invoke the
11706implicit
11707conversion rules if an object was already present at the index.  The new
11708behavior is to simply delete any existing object and directly store the
11709new
11710object. Although the ACPI specification seems unclear on this subject,
11711other
11712ACPI implementations behave in this manner.  (This is the root of the
11713AE_BAD_HEX_CONSTANT issue.)
11714
11715Modified the RSDP memory scan mechanism to support the extended checksum
11716for
11717ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
11718RSDP signature is found with a valid checksum.
11719
11720Code and Data Size: Current and previous core subsystem library sizes are
11721shown below. These are the code and data sizes for the acpica.lib
11722produced
11723by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11724any ACPI driver or OSPM code. The debug version of the code includes the
11725debug output trace mechanism and has a much larger code and data size.
11726Note
11727that these values will vary depending on the efficiency of the compiler
11728and
11729the compiler options used during generation.
11730
11731  Previous Release:
11732    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11733    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11734  Current Release:
11735    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11736    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11737
11738
117392) iASL Compiler/Disassembler:
11740
11741Fixed a missing semicolon in the aslcompiler.y file.
11742
11743----------------------------------------
1174405 November 2004.  Summary of changes for version 20041105:
11745
117461) ACPI CA Core Subsystem:
11747
11748Implemented support for FADT revision 2.  This was an interim table
11749(between
11750ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
11751
11752Implemented optional support to allow uninitialized LocalX and ArgX
11753variables in a control method.  The variables are initialized to an
11754Integer
11755object with a value of zero.  This support is enabled by setting the
11756AcpiGbl_EnableInterpreterSlack flag to TRUE.
11757
11758Implemented support for Integer objects for the SizeOf operator.  Either
117594
11760or 8 is returned, depending on the current integer size (32-bit or 64-
11761bit,
11762depending on the parent table revision).
11763
11764Fixed a problem in the implementation of the SizeOf and ObjectType
11765operators
11766where the operand was resolved to a value too early, causing incorrect
11767return values for some objects.
11768
11769Fixed some possible memory leaks during exceptional conditions.
11770
11771Code and Data Size: Current and previous core subsystem library sizes are
11772shown below. These are the code and data sizes for the acpica.lib
11773produced
11774by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11775any ACPI driver or OSPM code. The debug version of the code includes the
11776debug output trace mechanism and has a much larger code and data size.
11777Note
11778that these values will vary depending on the efficiency of the compiler
11779and
11780the compiler options used during generation.
11781
11782  Previous Release:
11783    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11784    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
11785  Current Release:
11786    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11787    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11788
11789
117902) iASL Compiler/Disassembler:
11791
11792Implemented support for all ACPI 3.0 reserved names and methods.
11793
11794Implemented all ACPI 3.0 grammar elements in the front-end, including
11795support for semicolons.
11796
11797Implemented the ACPI 3.0 Function() and ToUUID() macros
11798
11799Fixed a problem in the disassembler where a Scope() operator would not be
11800emitted properly if the target of the scope was in another table.
11801
11802----------------------------------------
1180315 October 2004.  Summary of changes for version 20041015:
11804
11805Note:  ACPI CA is currently undergoing an in-depth and complete formal
11806evaluation to test/verify the following areas. Other suggestions are
11807welcome. This will result in an increase in the frequency of releases and
11808the number of bug fixes in the next few months.
11809  - Functional tests for all ASL/AML operators
11810  - All implicit/explicit type conversions
11811  - Bit fields and operation regions
11812  - 64-bit math support and 32-bit-only "truncated" math support
11813  - Exceptional conditions, both compiler and interpreter
11814  - Dynamic object deletion and memory leaks
11815  - ACPI 3.0 support when implemented
11816  - External interfaces to the ACPI subsystem
11817
11818
118191) ACPI CA Core Subsystem:
11820
11821Fixed two alignment issues on 64-bit platforms - within debug statements
11822in
11823AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
11824Address
11825field within the non-aligned ACPI generic address structure.
11826
11827Fixed a problem in the Increment and Decrement operators where incorrect
11828operand resolution could result in the inadvertent modification of the
11829original integer when the integer is passed into another method as an
11830argument and the arg is then incremented/decremented.
11831
11832Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
11833bit
11834BCD number were truncated during conversion.
11835
11836Fixed a problem in the ToDecimal operator where the length of the
11837resulting
11838string could be set incorrectly too long if the input operand was a
11839Buffer
11840object.
11841
11842Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
11843(0)
11844within a buffer would prematurely terminate a compare between buffer
11845objects.
11846
11847Added a check for string overflow (>200 characters as per the ACPI
11848specification) during the Concatenate operator with two string operands.
11849
11850Code and Data Size: Current and previous core subsystem library sizes are
11851shown below. These are the code and data sizes for the acpica.lib
11852produced
11853by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11854any ACPI driver or OSPM code. The debug version of the code includes the
11855debug output trace mechanism and has a much larger code and data size.
11856Note
11857that these values will vary depending on the efficiency of the compiler
11858and
11859the compiler options used during generation.
11860
11861  Previous Release:
11862    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11863    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
11864  Current Release:
11865    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11866    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
11867
11868
11869
118702) iASL Compiler/Disassembler:
11871
11872Allow the use of the ObjectType operator on uninitialized Locals and Args
11873(returns 0 as per the ACPI specification).
11874
11875Fixed a problem where the compiler would fault if there was a syntax
11876error
11877in the FieldName of all of the various CreateXXXField operators.
11878
11879Disallow the use of lower case letters within the EISAID macro, as per
11880the
11881ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
11882Where
11883U is an uppercase letter and N is a hex digit.
11884
11885
11886----------------------------------------
1188706 October 2004.  Summary of changes for version 20041006:
11888
118891) ACPI CA Core Subsystem:
11890
11891Implemented support for the ACPI 3.0 Timer operator. This ASL function
11892implements a 64-bit timer with 100 nanosecond granularity.
11893
11894Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
11895implement the ACPI 3.0 Timer operator.  This allows the host OS to
11896implement
11897the timer with the best clock available. Also, it keeps the core
11898subsystem
11899out of the clock handling business, since the host OS (usually) performs
11900this function.
11901
11902Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
11903functions use a 64-bit address which is part of the packed ACPI Generic
11904Address Structure. Since the structure is non-aligned, the alignment
11905macros
11906are now used to extract the address to a local variable before use.
11907
11908Fixed a problem where the ToInteger operator assumed all input strings
11909were
11910hexadecimal. The operator now handles both decimal strings and hex
11911strings
11912(prefixed with "0x").
11913
11914Fixed a problem where the string length in the string object created as a
11915result of the internal ConvertToString procedure could be incorrect. This
11916potentially affected all implicit conversions and also the
11917ToDecimalString
11918and ToHexString operators.
11919
11920Fixed two problems in the ToString operator. If the length parameter was
11921zero, an incorrect string object was created and the value of the input
11922length parameter was inadvertently changed from zero to Ones.
11923
11924Fixed a problem where the optional ResourceSource string in the
11925ExtendedIRQ
11926resource macro was ignored.
11927
11928Simplified the interfaces to the internal division functions, reducing
11929code
11930size and complexity.
11931
11932Code and Data Size: Current and previous core subsystem library sizes are
11933shown below. These are the code and data sizes for the acpica.lib
11934produced
11935by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11936any ACPI driver or OSPM code. The debug version of the code includes the
11937debug output trace mechanism and has a much larger code and data size.
11938Note
11939that these values will vary depending on the efficiency of the compiler
11940and
11941the compiler options used during generation.
11942
11943  Previous Release:
11944    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
11945    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
11946  Current Release:
11947    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11948    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
11949
11950
119512) iASL Compiler/Disassembler:
11952
11953Implemented support for the ACPI 3.0 Timer operator.
11954
11955Fixed a problem where the Default() operator was inadvertently ignored in
11956a
11957Switch/Case block.  This was a problem in the translation of the Switch
11958statement to If...Else pairs.
11959
11960Added support to allow a standalone Return operator, with no parentheses
11961(or
11962operands).
11963
11964Fixed a problem with code generation for the ElseIf operator where the
11965translated Else...If parse tree was improperly constructed leading to the
11966loss of some code.
11967
11968----------------------------------------
1196922 September 2004.  Summary of changes for version 20040922:
11970
119711) ACPI CA Core Subsystem:
11972
11973Fixed a problem with the implementation of the LNot() operator where
11974"Ones"
11975was not returned for the TRUE case. Changed the code to return Ones
11976instead
11977of (!Arg) which was usually 1. This change affects iASL constant folding
11978for
11979this operator also.
11980
11981Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
11982not
11983initialized properly -- Now zero the entire buffer in this case where the
11984buffer already exists.
11985
11986Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
11987Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
11988related code considerably. This will require changes/updates to all OS
11989interface layers (OSLs.)
11990
11991Implemented a new external interface, AcpiInstallExceptionHandler, to
11992allow
11993a system exception handler to be installed. This handler is invoked upon
11994any
11995run-time exception that occurs during control method execution.
11996
11997Added support for the DSDT in AcpiTbFindTable. This allows the
11998DataTableRegion() operator to access the local copy of the DSDT.
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.8K Code,  11.4K Data,   89.2K Total
12013    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12014  Current Release:
12015    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
12016    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
12017
12018
120192) iASL Compiler/Disassembler:
12020
12021Fixed a problem with constant folding and the LNot operator. LNot was
12022returning 1 in the TRUE case, not Ones as per the ACPI specification.
12023This
12024could result in the generation of an incorrect folded/reduced constant.
12025
12026End-Of-File is now allowed within a "//"-style comment.  A parse error no
12027longer occurs if such a comment is at the very end of the input ASL
12028source
12029file.
12030
12031Implemented the "-r" option to override the Revision in the table header.
12032The initial use of this option will be to simplify the evaluation of the
12033AML
12034interpreter by allowing a single ASL source module to be compiled for
12035either
1203632-bit or 64-bit integers.
12037
12038
12039----------------------------------------
1204027 August 2004.  Summary of changes for version 20040827:
12041
120421) ACPI CA Core Subsystem:
12043
12044- Implemented support for implicit object conversion in the non-numeric
12045logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
12046and
12047LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
12048the second operand is implicitly converted on the fly to match the type
12049of
12050the first operand.  For example:
12051
12052    LEqual (Source1, Source2)
12053
12054Source1 and Source2 must each evaluate to an integer, a string, or a
12055buffer.
12056The data type of Source1 dictates the required type of Source2. Source2
12057is
12058implicitly converted if necessary to match the type of Source1.
12059
12060- Updated and corrected the behavior of the string conversion support.
12061The
12062rules concerning conversion of buffers to strings (according to the ACPI
12063specification) are as follows:
12064
12065ToDecimalString - explicit byte-wise conversion of buffer to string of
12066decimal values (0-255) separated by commas. ToHexString - explicit byte-
12067wise
12068conversion of buffer to string of hex values (0-FF) separated by commas.
12069ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
12070byte
12071copy with no transform except NULL terminated. Any other implicit buffer-
12072to-
12073string conversion - byte-wise conversion of buffer to string of hex
12074values
12075(0-FF) separated by spaces.
12076
12077- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
12078
12079- Fixed a problem in AcpiNsGetPathnameLength where the returned length
12080was
12081one byte too short in the case of a node in the root scope.  This could
12082cause a fault during debug output.
12083
12084- Code and Data Size: Current and previous core subsystem library sizes
12085are
12086shown below.  These are the code and data sizes for the acpica.lib
12087produced
12088by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12089any ACPI driver or OSPM code.  The debug version of the code includes the
12090debug output trace mechanism and has a much larger code and data size.
12091Note
12092that these values will vary depending on the efficiency of the compiler
12093and
12094the compiler options used during generation.
12095
12096  Previous Release:
12097    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
12098    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
12099  Current Release:
12100    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
12101    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12102
12103
121042) iASL Compiler/Disassembler:
12105
12106- Fixed a Linux generation error.
12107
12108
12109----------------------------------------
1211016 August 2004.  Summary of changes for version 20040816:
12111
121121) ACPI CA Core Subsystem:
12113
12114Designed and implemented support within the AML interpreter for the so-
12115called "implicit return".  This support returns the result of the last
12116ASL
12117operation within a control method, in the absence of an explicit Return()
12118operator.  A few machines depend on this behavior, even though it is not
12119explicitly supported by the ASL language.  It is optional support that
12120can
12121be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
12122
12123Removed support for the PCI_Config address space from the internal low
12124level
12125hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
12126support was not used internally, and would not work correctly anyway
12127because
12128the PCI bus number and segment number were not supported.  There are
12129separate interfaces for PCI configuration space access because of the
12130unique
12131interface.
12132
12133Code and Data Size: Current and previous core subsystem library sizes are
12134shown below.  These are the code and data sizes for the acpica.lib
12135produced
12136by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12137any ACPI driver or OSPM code.  The debug version of the code includes the
12138debug output trace mechanism and has a much larger code and data size.
12139Note
12140that these values will vary depending on the efficiency of the compiler
12141and
12142the compiler options used during generation.
12143
12144  Previous Release:
12145    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12146    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
12147  Current Release:
12148    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
12149    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
12150
12151
121522) iASL Compiler/Disassembler:
12153
12154Fixed a problem where constants in ASL expressions at the root level (not
12155within a control method) could be inadvertently truncated during code
12156generation.  This problem was introduced in the 20040715 release.
12157
12158
12159----------------------------------------
1216015 July 2004.  Summary of changes for version 20040715:
12161
121621) ACPI CA Core Subsystem:
12163
12164Restructured the internal HW GPE interfaces to pass/track the current
12165state
12166of interrupts (enabled/disabled) in order to avoid possible deadlock and
12167increase flexibility of the interfaces.
12168
12169Implemented a "lexicographical compare" for String and Buffer objects
12170within
12171the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
12172-
12173as per further clarification to the ACPI specification.  Behavior is
12174similar
12175to C library "strcmp".
12176
12177Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
12178external function.  In the 32-bit non-debug case, the stack use has been
12179reduced from 168 bytes to 32 bytes.
12180
12181Deployed a new run-time configuration flag,
12182AcpiGbl_EnableInterpreterSlack,
12183whose purpose is to allow the AML interpreter to forgive certain bad AML
12184constructs.  Default setting is FALSE.
12185
12186Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
12187IO
12188support code.  If enabled, it allows field access to go beyond the end of
12189a
12190region definition if the field is within the region length rounded up to
12191the
12192next access width boundary (a common coding error.)
12193
12194Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
12195ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
12196these
12197symbols are lowercased by the latest version of the AcpiSrc tool.
12198
12199The prototypes for the PCI interfaces in acpiosxf.h have been updated to
12200rename "Register" to simply "Reg" to prevent certain compilers from
12201complaining.
12202
12203Code and Data Size: Current and previous core subsystem library sizes are
12204shown below.  These are the code and data sizes for the acpica.lib
12205produced
12206by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12207any ACPI driver or OSPM code.  The debug version of the code includes the
12208debug output trace mechanism and has a much larger code and data size.
12209Note
12210that these values will vary depending on the efficiency of the compiler
12211and
12212the compiler options used during generation.
12213
12214  Previous Release:
12215    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12216    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
12217  Current Release:
12218    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12219    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
12220
12221
122222) iASL Compiler/Disassembler:
12223
12224Implemented full support for Package objects within the Case() operator.
12225Note: The Break() operator is currently not supported within Case blocks
12226(TermLists) as there is some question about backward compatibility with
12227ACPI
122281.0 interpreters.
12229
12230
12231Fixed a problem where complex terms were not supported properly within
12232the
12233Switch() operator.
12234
12235Eliminated extraneous warning for compiler-emitted reserved names of the
12236form "_T_x".  (Used in Switch/Case operators.)
12237
12238Eliminated optimization messages for "_T_x" objects and small constants
12239within the DefinitionBlock operator.
12240
12241
12242----------------------------------------
1224315 June 2004.  Summary of changes for version 20040615:
12244
122451) ACPI CA Core Subsystem:
12246
12247Implemented support for Buffer and String objects (as per ACPI 2.0) for
12248the
12249following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
12250LLessEqual.
12251
12252All directory names in the entire source package are lower case, as they
12253were in earlier releases.
12254
12255Implemented "Disassemble" command in the AML debugger that will
12256disassemble
12257a single control method.
12258
12259Code and Data Size: Current and previous core subsystem library sizes are
12260shown below.  These are the code and data sizes for the acpica.lib
12261produced
12262by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12263any ACPI driver or OSPM code.  The debug version of the code includes the
12264debug output trace mechanism and has a much larger code and data size.
12265Note
12266that these values will vary depending on the efficiency of the compiler
12267and
12268the compiler options used during generation.
12269
12270  Previous Release:
12271    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
12272    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
12273
12274  Current Release:
12275    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12276    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
12277
12278
122792) iASL Compiler/Disassembler:
12280
12281Implemented support for Buffer and String objects (as per ACPI 2.0) for
12282the
12283following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
12284LLessEqual.
12285
12286All directory names in the entire source package are lower case, as they
12287were in earlier releases.
12288
12289Fixed a fault when using the -g or -d<nofilename> options if the FADT was
12290not found.
12291
12292Fixed an issue with the Windows version of the compiler where later
12293versions
12294of Windows place the FADT in the registry under the name "FADT" and not
12295"FACP" as earlier versions did.  This applies when using the -g or -
12296d<nofilename> options.  The compiler now looks for both strings as
12297necessary.
12298
12299Fixed a problem with compiler namepath optimization where a namepath
12300within
12301the Scope() operator could not be optimized if the namepath was a subpath
12302of
12303the current scope path.
12304
12305----------------------------------------
1230627 May 2004.  Summary of changes for version 20040527:
12307
123081) ACPI CA Core Subsystem:
12309
12310Completed a new design and implementation for EBDA (Extended BIOS Data
12311Area)
12312support in the RSDP scan code.  The original code improperly scanned for
12313the
12314EBDA by simply scanning from memory location 0 to 0x400.  The correct
12315method
12316is to first obtain the EBDA pointer from within the BIOS data area, then
12317scan 1K of memory starting at the EBDA pointer.  There appear to be few
12318if
12319any machines that place the RSDP in the EBDA, however.
12320
12321Integrated a fix for a possible fault during evaluation of BufferField
12322arguments.  Obsolete code that was causing the problem was removed.
12323
12324Found and fixed a problem in the Field Support Code where data could be
12325corrupted on a bit field read that starts on an aligned boundary but does
12326not end on an aligned boundary.  Merged the read/write "datum length"
12327calculation code into a common procedure.
12328
12329Rolled in a couple of changes to the FreeBSD-specific header.
12330
12331
12332Code and Data Size: Current and previous core subsystem library sizes are
12333shown below.  These are the code and data sizes for the acpica.lib
12334produced
12335by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12336any ACPI driver or OSPM code.  The debug version of the code includes the
12337debug output trace mechanism and has a much larger code and data size.
12338Note
12339that these values will vary depending on the efficiency of the compiler
12340and
12341the compiler options used during generation.
12342
12343  Previous Release:
12344    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12345    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
12346  Current Release:
12347    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
12348    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
12349
12350
123512) iASL Compiler/Disassembler:
12352
12353Fixed a generation warning produced by some overly-verbose compilers for
12354a
1235564-bit constant.
12356
12357----------------------------------------
1235814 May 2004.  Summary of changes for version 20040514:
12359
123601) ACPI CA Core Subsystem:
12361
12362Fixed a problem where hardware GPE enable bits sometimes not set properly
12363during and after GPE method execution.  Result of 04/27 changes.
12364
12365Removed extra "clear all GPEs" when sleeping/waking.
12366
12367Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
12368AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
12369to
12370the new AcpiEv* calls as appropriate.
12371
12372ACPI_OS_NAME was removed from the OS-specific headers.  The default name
12373is
12374now "Microsoft Windows NT" for maximum compatibility.  However this can
12375be
12376changed by modifying the acconfig.h file.
12377
12378Allow a single invocation of AcpiInstallNotifyHandler for a handler that
12379traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
12380
12381Run _INI methods on ThermalZone objects.  This is against the ACPI
12382specification, but there is apparently ASL code in the field that has
12383these
12384_INI methods, and apparently "other" AML interpreters execute them.
12385
12386Performed a full 16/32/64 bit lint that resulted in some small changes.
12387
12388Added a sleep simulation command to the AML debugger to test sleep code.
12389
12390Code and Data Size: Current and previous core subsystem library sizes are
12391shown below.  These are the code and data sizes for the acpica.lib
12392produced
12393by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12394any ACPI driver or OSPM code.  The debug version of the code includes the
12395debug output trace mechanism and has a much larger code and data size.
12396Note
12397that these values will vary depending on the efficiency of the compiler
12398and
12399the compiler options used during generation.
12400
12401  Previous Release:
12402    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12403    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
12404  Current Release:
12405    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12406    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
12407
12408----------------------------------------
1240927 April 2004.  Summary of changes for version 20040427:
12410
124111) ACPI CA Core Subsystem:
12412
12413Completed a major overhaul of the GPE handling within ACPI CA.  There are
12414now three types of GPEs:  wake-only, runtime-only, and combination
12415wake/run.
12416The only GPEs allowed to be combination wake/run are for button-style
12417devices such as a control-method power button, control-method sleep
12418button,
12419or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
12420not
12421referenced by any _PRW methods are marked for "runtime" and hardware
12422enabled.  Any GPE that is referenced by a _PRW method is marked for
12423"wake"
12424(and disabled at runtime).  However, at sleep time, only those GPEs that
12425have been specifically enabled for wake via the AcpiEnableGpe interface
12426will
12427actually be hardware enabled.
12428
12429A new external interface has been added, AcpiSetGpeType(), that is meant
12430to
12431be used by device drivers to force a GPE to a particular type.  It will
12432be
12433especially useful for the drivers for the button devices mentioned above.
12434
12435Completed restructuring of the ACPI CA initialization sequence so that
12436default operation region handlers are installed before GPEs are
12437initialized
12438and the _PRW methods are executed.  This will prevent errors when the
12439_PRW
12440methods attempt to access system memory or I/O space.
12441
12442GPE enable/disable no longer reads the GPE enable register.  We now keep
12443the
12444enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
12445thus no longer depend on the hardware to maintain these bits.
12446
12447Always clear the wake status and fixed/GPE status bits before sleep, even
12448for state S5.
12449
12450Improved the AML debugger output for displaying the GPE blocks and their
12451current status.
12452
12453Added new strings for the _OSI method, of the form "Windows 2001 SPx"
12454where
12455x = 0,1,2,3,4.
12456
12457Fixed a problem where the physical address was incorrectly calculated
12458when
12459the Load() operator was used to directly load from an Operation Region
12460(vs.
12461loading from a Field object.)  Also added check for minimum table length
12462for
12463this case.
12464
12465Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
12466mutex release.
12467
12468Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
12469consistency with the other fields returned.
12470
12471Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
12472structure for each GPE in the system, so the size of this structure is
12473important.
12474
12475CPU stack requirement reduction:  Cleaned up the method execution and
12476object
12477evaluation paths so that now a parameter structure is passed, instead of
12478copying the various method parameters over and over again.
12479
12480In evregion.c:  Correctly exit and reenter the interpreter region if and
12481only if dispatching an operation region request to a user-installed
12482handler.
12483Do not exit/reenter when dispatching to a default handler (e.g., default
12484system memory or I/O handlers)
12485
12486
12487Notes for updating drivers for the new GPE support.  The following
12488changes
12489must be made to ACPI-related device drivers that are attached to one or
12490more
12491GPEs: (This information will be added to the ACPI CA Programmer
12492Reference.)
12493
124941) AcpiInstallGpeHandler no longer automatically enables the GPE, you
12495must
12496explicitly call AcpiEnableGpe.
124972) There is a new interface called AcpiSetGpeType. This should be called
12498before enabling the GPE.  Also, this interface will automatically disable
12499the GPE if it is currently enabled.
125003) AcpiEnableGpe no longer supports a GPE type flag.
12501
12502Specific drivers that must be changed:
125031) EC driver:
12504    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
12505AeGpeHandler, NULL);
12506    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
12507    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
12508
125092) Button Drivers (Power, Lid, Sleep):
12510Run _PRW method under parent device
12511If _PRW exists: /* This is a control-method button */
12512    Extract GPE number and possibly GpeDevice
12513    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
12514    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
12515
12516For all other devices that have _PRWs, we automatically set the GPE type
12517to
12518ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
12519This
12520must be done on a selective basis, usually requiring some kind of user
12521app
12522to allow the user to pick the wake devices.
12523
12524
12525Code and Data Size: Current and previous core subsystem library sizes are
12526shown below.  These are the code and data sizes for the acpica.lib
12527produced
12528by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12529any ACPI driver or OSPM code.  The debug version of the code includes the
12530debug output trace mechanism and has a much larger code and data size.
12531Note
12532that these values will vary depending on the efficiency of the compiler
12533and
12534the compiler options used during generation.
12535
12536  Previous Release:
12537    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12538    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12539  Current Release:
12540
12541    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12542    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
12543
12544
12545
12546----------------------------------------
1254702 April 2004.  Summary of changes for version 20040402:
12548
125491) ACPI CA Core Subsystem:
12550
12551Fixed an interpreter problem where an indirect store through an ArgX
12552parameter was incorrectly applying the "implicit conversion rules" during
12553the store.  From the ACPI specification: "If the target is a method local
12554or
12555argument (LocalX or ArgX), no conversion is performed and the result is
12556stored directly to the target".  The new behavior is to disable implicit
12557conversion during ALL stores to an ArgX.
12558
12559Changed the behavior of the _PRW method scan to ignore any and all errors
12560returned by a given _PRW.  This prevents the scan from aborting from the
12561failure of any single _PRW.
12562
12563Moved the runtime configuration parameters from the global init procedure
12564to
12565static variables in acglobal.h.  This will allow the host to override the
12566default values easily.
12567
12568Code and Data Size: Current and previous core subsystem library sizes are
12569shown below.  These are the code and data sizes for the acpica.lib
12570produced
12571by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12572any ACPI driver or OSPM code.  The debug version of the code includes the
12573debug output trace mechanism and has a much larger code and data size.
12574Note
12575that these values will vary depending on the efficiency of the compiler
12576and
12577the compiler options used during generation.
12578
12579  Previous Release:
12580    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
12581    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
12582  Current Release:
12583    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12584    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12585
12586
125872) iASL Compiler/Disassembler:
12588
12589iASL now fully disassembles SSDTs.  However, External() statements are
12590not
12591generated automatically for unresolved symbols at this time.  This is a
12592planned feature for future implementation.
12593
12594Fixed a scoping problem in the disassembler that occurs when the type of
12595the
12596target of a Scope() operator is overridden.  This problem caused an
12597incorrectly nested internal namespace to be constructed.
12598
12599Any warnings or errors that are emitted during disassembly are now
12600commented
12601out automatically so that the resulting file can be recompiled without
12602any
12603hand editing.
12604
12605----------------------------------------
1260626 March 2004.  Summary of changes for version 20040326:
12607
126081) ACPI CA Core Subsystem:
12609
12610Implemented support for "wake" GPEs via interaction between GPEs and the
12611_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
12612identified as a WAKE GPE and by default will no longer be enabled at
12613runtime.  Previously, we were blindly enabling all GPEs with a
12614corresponding
12615_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
12616We
12617believe this has been the cause of thousands of "spurious" GPEs on some
12618systems.
12619
12620This new GPE behavior is can be reverted to the original behavior (enable
12621ALL GPEs at runtime) via a runtime flag.
12622
12623Fixed a problem where aliased control methods could not access objects
12624properly.  The proper scope within the namespace was not initialized
12625(transferred to the target of the aliased method) before executing the
12626target method.
12627
12628Fixed a potential race condition on internal object deletion on the
12629return
12630object in AcpiEvaluateObject.
12631
12632Integrated a fix for resource descriptors where both _MEM and _MTP were
12633being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
12634wide, 0x0F instead of 0x03.)
12635
12636Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
12637preventing
12638a
12639fault in some cases.
12640
12641Updated Notify() values for debug statements in evmisc.c
12642
12643Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
12644
12645Code and Data Size: Current and previous core subsystem library sizes are
12646shown below.  These are the code and data sizes for the acpica.lib
12647produced
12648by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12649any ACPI driver or OSPM code.  The debug version of the code includes the
12650debug output trace mechanism and has a much larger code and data size.
12651Note
12652that these values will vary depending on the efficiency of the compiler
12653and
12654the compiler options used during generation.
12655
12656  Previous Release:
12657
12658    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
12659    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
12660  Current Release:
12661    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
12662    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
12663
12664----------------------------------------
1266511 March 2004.  Summary of changes for version 20040311:
12666
126671) ACPI CA Core Subsystem:
12668
12669Fixed a problem where errors occurring during the parse phase of control
12670method execution did not abort cleanly.  For example, objects created and
12671installed in the namespace were not deleted.  This caused all subsequent
12672invocations of the method to return the AE_ALREADY_EXISTS exception.
12673
12674Implemented a mechanism to force a control method to "Serialized"
12675execution
12676if the method attempts to create namespace objects. (The root of the
12677AE_ALREADY_EXISTS problem.)
12678
12679Implemented support for the predefined _OSI "internal" control method.
12680Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
12681and
12682"Windows 2001.1", and can be easily upgraded for new strings as
12683necessary.
12684This feature will allow "other" operating systems to execute the fully
12685tested, "Windows" code path through the ASL code
12686
12687Global Lock Support:  Now allows multiple acquires and releases with any
12688internal thread.  Removed concept of "owning thread" for this special
12689mutex.
12690
12691Fixed two functions that were inappropriately declaring large objects on
12692the
12693CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
12694during
12695method execution considerably.
12696
12697Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
12698S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
12699
12700Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
12701defined on the machine.
12702
12703Implemented two runtime options:  One to force all control method
12704execution
12705to "Serialized" to mimic Windows behavior, another to disable _OSI
12706support
12707if it causes problems on a given machine.
12708
12709Code and Data Size: Current and previous core subsystem library sizes are
12710shown below.  These are the code and data sizes for the acpica.lib
12711produced
12712by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12713any ACPI driver or OSPM code.  The debug version of the code includes the
12714debug output trace mechanism and has a much larger code and data size.
12715Note
12716that these values will vary depending on the efficiency of the compiler
12717and
12718the compiler options used during generation.
12719
12720  Previous Release:
12721    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
12722    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
12723  Current Release:
12724    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
12725    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
12726
127272) iASL Compiler/Disassembler:
12728
12729Fixed an array size problem for FreeBSD that would cause the compiler to
12730fault.
12731
12732----------------------------------------
1273320 February 2004.  Summary of changes for version 20040220:
12734
12735
127361) ACPI CA Core Subsystem:
12737
12738Implemented execution of _SxD methods for Device objects in the
12739GetObjectInfo interface.
12740
12741Fixed calls to _SST method to pass the correct arguments.
12742
12743Added a call to _SST on wake to restore to "working" state.
12744
12745Check for End-Of-Buffer failure case in the WalkResources interface.
12746
12747Integrated fix for 64-bit alignment issue in acglobal.h by moving two
12748structures to the beginning of the file.
12749
12750After wake, clear GPE status register(s) before enabling GPEs.
12751
12752After wake, clear/enable power button.  (Perhaps we should clear/enable
12753all
12754fixed events upon wake.)
12755
12756Fixed a couple of possible memory leaks in the Namespace manager.
12757
12758Integrated latest acnetbsd.h file.
12759
12760----------------------------------------
1276111 February 2004.  Summary of changes for version 20040211:
12762
12763
127641) ACPI CA Core Subsystem:
12765
12766Completed investigation and implementation of the call-by-reference
12767mechanism for control method arguments.
12768
12769Fixed a problem where a store of an object into an indexed package could
12770fail if the store occurs within a different method than the method that
12771created the package.
12772
12773Fixed a problem where the ToDecimal operator could return incorrect
12774results.
12775
12776Fixed a problem where the CopyObject operator could fail on some of the
12777more
12778obscure objects (e.g., Reference objects.)
12779
12780Improved the output of the Debug object to display buffer, package, and
12781index objects.
12782
12783Fixed a problem where constructs of the form "RefOf (ArgX)" did not
12784return
12785the expected result.
12786
12787Added permanent ACPI_REPORT_ERROR macros for all instances of the
12788ACPI_AML_INTERNAL exception.
12789
12790Integrated latest version of acfreebsd.h
12791
12792----------------------------------------
1279316 January 2004.  Summary of changes for version 20040116:
12794
12795The purpose of this release is primarily to update the copyright years in
12796each module, thus causing a huge number of diffs.  There are a few small
12797functional changes, however.
12798
127991) ACPI CA Core Subsystem:
12800
12801Improved error messages when there is a problem finding one or more of
12802the
12803required base ACPI tables
12804
12805Reintroduced the definition of APIC_HEADER in actbl.h
12806
12807Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
12808
12809Removed extraneous reference to NewObj in dsmthdat.c
12810
128112) iASL compiler
12812
12813Fixed a problem introduced in December that disabled the correct
12814disassembly
12815of Resource Templates
12816
12817
12818----------------------------------------
1281903 December 2003.  Summary of changes for version 20031203:
12820
128211) ACPI CA Core Subsystem:
12822
12823Changed the initialization of Operation Regions during subsystem
12824init to perform two entire walks of the ACPI namespace; The first
12825to initialize the regions themselves, the second to execute the
12826_REG methods.  This fixed some interdependencies across _REG
12827methods found on some machines.
12828
12829Fixed a problem where a Store(Local0, Local1) could simply update
12830the object reference count, and not create a new copy of the
12831object if the Local1 is uninitialized.
12832
12833Implemented support for the _SST reserved method during sleep
12834transitions.
12835
12836Implemented support to clear the SLP_TYP and SLP_EN bits when
12837waking up, this is apparently required by some machines.
12838
12839When sleeping, clear the wake status only if SleepState is not S5.
12840
12841Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
12842pointer arithmetic advanced a string pointer too far.
12843
12844Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
12845could be returned if the requested table has not been loaded.
12846
12847Within the support for IRQ resources, restructured the handling of
12848the active and edge/level bits.
12849
12850Fixed a few problems in AcpiPsxExecute() where memory could be
12851leaked under certain error conditions.
12852
12853Improved error messages for the cases where the ACPI mode could
12854not be entered.
12855
12856Code and Data Size: Current and previous core subsystem library
12857sizes are shown below.  These are the code and data sizes for the
12858acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12859these values do not include any ACPI driver or OSPM code.  The
12860debug version of the code includes the debug output trace
12861mechanism and has a much larger code and data size.  Note that
12862these values will vary depending on the efficiency of the compiler
12863and the compiler options used during generation.
12864
12865  Previous Release (20031029):
12866    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
12867    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
12868  Current Release:
12869    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
12870    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
12871
128722) iASL Compiler/Disassembler:
12873
12874Implemented a fix for the iASL disassembler where a bad index was
12875generated.  This was most noticeable on 64-bit platforms
12876
12877
12878----------------------------------------
1287929 October 2003.  Summary of changes for version 20031029:
12880
128811) ACPI CA Core Subsystem:
12882
12883
12884Fixed a problem where a level-triggered GPE with an associated
12885_Lxx control method was incorrectly cleared twice.
12886
12887Fixed a problem with the Field support code where an access can
12888occur beyond the end-of-region if the field is non-aligned but
12889extends to the very end of the parent region (resulted in an
12890AE_AML_REGION_LIMIT exception.)
12891
12892Fixed a problem with ACPI Fixed Events where an RT Clock handler
12893would not get invoked on an RTC event.  The RTC event bitmasks for
12894the PM1 registers were not being initialized properly.
12895
12896Implemented support for executing _STA and _INI methods for
12897Processor objects.  Although this is currently not part of the
12898ACPI specification, there is existing ASL code that depends on the
12899init-time execution of these methods.
12900
12901Implemented and deployed a GetDescriptorName function to decode
12902the various types of internal descriptors.  Guards against null
12903descriptors during debug output also.
12904
12905Implemented and deployed a GetNodeName function to extract the 4-
12906character namespace node name.  This function simplifies the debug
12907and error output, as well as guarding against null pointers during
12908output.
12909
12910Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
12911simplify the debug and error output of 64-bit integers.  This
12912macro replaces the HIDWORD and LODWORD macros for dumping these
12913integers.
12914
12915Updated the implementation of the Stall() operator to only call
12916AcpiOsStall(), and also return an error if the operand is larger
12917than 255.  This preserves the required behavior of not
12918relinquishing the processor, as would happen if AcpiOsSleep() was
12919called for "long stalls".
12920
12921Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
12922initialized are now treated as NOOPs.
12923
12924Cleaned up a handful of warnings during 64-bit generation.
12925
12926Fixed a reported error where and incorrect GPE number was passed
12927to the GPE dispatch handler.  This value is only used for error
12928output, however.  Used this opportunity to clean up and streamline
12929the GPE dispatch code.
12930
12931Code and Data Size: Current and previous core subsystem library
12932sizes are shown below.  These are the code and data sizes for the
12933acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12934these values do not include any ACPI driver or OSPM code.  The
12935
12936debug version of the code includes the debug output trace
12937mechanism and has a much larger code and data size.  Note that
12938these values will vary depending on the efficiency of the compiler
12939and the compiler options used during generation.
12940
12941  Previous Release (20031002):
12942    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
12943    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
12944  Current Release:
12945    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
12946    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
12947
12948
129492) iASL Compiler/Disassembler:
12950
12951Updated the iASL compiler to return an error if the operand to the
12952Stall() operator is larger than 255.
12953
12954
12955----------------------------------------
1295602 October 2003.  Summary of changes for version 20031002:
12957
12958
129591) ACPI CA Core Subsystem:
12960
12961Fixed a problem with Index Fields where the index was not
12962incremented for fields that require multiple writes to the
12963index/data registers (Fields that are wider than the data
12964register.)
12965
12966Fixed a problem with all Field objects where a write could go
12967beyond the end-of-field if the field was larger than the access
12968granularity and therefore required multiple writes to complete the
12969request.  An extra write beyond the end of the field could happen
12970inadvertently.
12971
12972Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
12973would incorrectly be returned if the width of the Data Register
12974was larger than the specified field access width.
12975
12976Completed fixes for LoadTable() and Unload() and verified their
12977operation.  Implemented full support for the "DdbHandle" object
12978throughout the ACPI CA subsystem.
12979
12980Implemented full support for the MADT and ECDT tables in the ACPI
12981CA header files.  Even though these tables are not directly
12982consumed by ACPI CA, the header definitions are useful for ACPI
12983device drivers.
12984
12985Integrated resource descriptor fixes posted to the Linux ACPI
12986list.  This included checks for minimum descriptor length, and
12987support for trailing NULL strings within descriptors that have
12988optional string elements.
12989
12990Code and Data Size: Current and previous core subsystem library
12991sizes are shown below.  These are the code and data sizes for the
12992acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12993these values do not include any ACPI driver or OSPM code.  The
12994debug version of the code includes the debug output trace
12995mechanism and has a much larger code and data size.  Note that
12996these values will vary depending on the efficiency of the compiler
12997and the compiler options used during generation.
12998
12999  Previous Release (20030918):
13000    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13001    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13002  Current Release:
13003    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
13004    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
13005
13006
130072) iASL Compiler:
13008
13009Implemented detection of non-ASCII characters within the input
13010source ASL file.  This catches attempts to compile binary (AML)
13011files early in the compile, with an informative error message.
13012
13013Fixed a problem where the disassembler would fault if the output
13014filename could not be generated or if the output file could not be
13015opened.
13016
13017----------------------------------------
1301818 September 2003.  Summary of changes for version 20030918:
13019
13020
130211) ACPI CA Core Subsystem:
13022
13023Found and fixed a longstanding problem with the late execution of
13024the various deferred AML opcodes (such as Operation Regions,
13025Buffer Fields, Buffers, and Packages).  If the name string
13026specified for the name of the new object placed the object in a
13027scope other than the current scope, the initialization/execution
13028of the opcode failed.  The solution to this problem was to
13029implement a mechanism where the late execution of such opcodes
13030does not attempt to lookup/create the name a second time in an
13031incorrect scope.  This fixes the "region size computed
13032incorrectly" problem.
13033
13034Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
13035Global Lock AE_BAD_PARAMETER error.
13036
13037Fixed several 64-bit issues with prototypes, casting and data
13038types.
13039
13040Removed duplicate prototype from acdisasm.h
13041
13042Fixed an issue involving EC Operation Region Detach (Shaohua Li)
13043
13044Code and Data Size: Current and previous core subsystem library
13045sizes are shown below.  These are the code and data sizes for the
13046acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13047these values do not include any ACPI driver or OSPM code.  The
13048debug version of the code includes the debug output trace
13049mechanism and has a much larger code and data size.  Note that
13050these values will vary depending on the efficiency of the compiler
13051and the compiler options used during generation.
13052
13053  Previous Release:
13054
13055    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
13056    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
13057  Current Release:
13058    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13059    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13060
13061
130622) Linux:
13063
13064Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
13065correct sleep time in seconds.
13066
13067----------------------------------------
1306814 July 2003.  Summary of changes for version 20030619:
13069
130701) ACPI CA Core Subsystem:
13071
13072Parse SSDTs in order discovered, as opposed to reverse order
13073(Hrvoje Habjanic)
13074
13075Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
13076Klausner,
13077   Nate Lawson)
13078
13079
130802) Linux:
13081
13082Dynamically allocate SDT list (suggested by Andi Kleen)
13083
13084proc function return value cleanups (Andi Kleen)
13085
13086Correctly handle NMI watchdog during long stalls (Andrew Morton)
13087
13088Make it so acpismp=force works (reported by Andrew Morton)
13089
13090
13091----------------------------------------
1309219 June 2003.  Summary of changes for version 20030619:
13093
130941) ACPI CA Core Subsystem:
13095
13096Fix To/FromBCD, eliminating the need for an arch-specific #define.
13097
13098Do not acquire a semaphore in the S5 shutdown path.
13099
13100Fix ex_digits_needed for 0. (Takayoshi Kochi)
13101
13102Fix sleep/stall code reversal. (Andi Kleen)
13103
13104Revert a change having to do with control method calling
13105semantics.
13106
131072) Linux:
13108
13109acpiphp update (Takayoshi Kochi)
13110
13111Export acpi_disabled for sonypi (Stelian Pop)
13112
13113Mention acpismp=force in config help
13114
13115Re-add acpitable.c and acpismp=force. This improves backwards
13116
13117compatibility and also cleans up the code to a significant degree.
13118
13119Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
13120
13121----------------------------------------
1312222 May 2003.  Summary of changes for version 20030522:
13123
131241) ACPI CA Core Subsystem:
13125
13126Found and fixed a reported problem where an AE_NOT_FOUND error
13127occurred occasionally during _BST evaluation.  This turned out to
13128be an Owner ID allocation issue where a called method did not get
13129a new ID assigned to it.  Eventually, (after 64k calls), the Owner
13130ID UINT16 would wraparound so that the ID would be the same as the
13131caller's and the called method would delete the caller's
13132namespace.
13133
13134Implemented extended error reporting for control methods that are
13135aborted due to a run-time exception.  Output includes the exact
13136AML instruction that caused the method abort, a dump of the method
13137locals and arguments at the time of the abort, and a trace of all
13138nested control method calls.
13139
13140Modified the interpreter to allow the creation of buffers of zero
13141length from the AML code. Implemented new code to ensure that no
13142attempt is made to actually allocate a memory buffer (of length
13143zero) - instead, a simple buffer object with a NULL buffer pointer
13144and length zero is created.  A warning is no longer issued when
13145the AML attempts to create a zero-length buffer.
13146
13147Implemented a workaround for the "leading asterisk issue" in
13148_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
13149asterisk is automatically removed if present in any HID, UID, or
13150CID strings.  The iASL compiler will still flag this asterisk as
13151an error, however.
13152
13153Implemented full support for _CID methods that return a package of
13154multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
13155now additionally returns a device _CID list if present.  This
13156required a change to the external interface in order to pass an
13157ACPI_BUFFER object as a parameter since the _CID list is of
13158variable length.
13159
13160Fixed a problem with the new AE_SAME_HANDLER exception where
13161handler initialization code did not know about this exception.
13162
13163Code and Data Size: Current and previous core subsystem library
13164sizes are shown below.  These are the code and data sizes for the
13165acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13166these values do not include any ACPI driver or OSPM code.  The
13167debug version of the code includes the debug output trace
13168mechanism and has a much larger code and data size.  Note that
13169these values will vary depending on the efficiency of the compiler
13170and the compiler options used during generation.
13171
13172  Previous Release (20030509):
13173    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
13174    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
13175  Current Release:
13176    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
13177    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
13178
13179
131802) Linux:
13181
13182Fixed a bug in which we would reinitialize the ACPI interrupt
13183after it was already working, thus disabling all ACPI and the IRQs
13184for any other device sharing the interrupt. (Thanks to Stian
13185Jordet)
13186
13187Toshiba driver update (John Belmonte)
13188
13189Return only 0 or 1 for our interrupt handler status (Andrew
13190Morton)
13191
13192
131933) iASL Compiler:
13194
13195Fixed a reported problem where multiple (nested) ElseIf()
13196statements were not handled correctly by the compiler, resulting
13197in incorrect warnings and incorrect AML code.  This was a problem
13198in both the ASL parser and the code generator.
13199
13200
132014) Documentation:
13202
13203Added changes to existing interfaces, new exception codes, and new
13204text concerning reference count object management versus garbage
13205collection.
13206
13207----------------------------------------
1320809 May 2003.  Summary of changes for version 20030509.
13209
13210
132111) ACPI CA Core Subsystem:
13212
13213Changed the subsystem initialization sequence to hold off
13214installation of address space handlers until the hardware has been
13215initialized and the system has entered ACPI mode.  This is because
13216the installation of space handlers can cause _REG methods to be
13217run.  Previously, the _REG methods could potentially be run before
13218ACPI mode was enabled.
13219
13220Fixed some memory leak issues related to address space handler and
13221notify handler installation.  There were some problems with the
13222reference count mechanism caused by the fact that the handler
13223objects are shared across several namespace objects.
13224
13225Fixed a reported problem where reference counts within the
13226namespace were not properly updated when named objects created by
13227method execution were deleted.
13228
13229Fixed a reported problem where multiple SSDTs caused a deletion
13230issue during subsystem termination.  Restructured the table data
13231structures to simplify the linked lists and the related code.
13232
13233Fixed a problem where the table ID associated with secondary
13234tables (SSDTs) was not being propagated into the namespace objects
13235created by those tables.  This would only present a problem for
13236tables that are unloaded at run-time, however.
13237
13238Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
13239type as the length parameter (instead of UINT32).
13240
13241Solved a long-standing problem where an ALREADY_EXISTS error
13242appears on various systems.  This problem could happen when there
13243are multiple PCI_Config operation regions under a single PCI root
13244bus.  This doesn't happen very frequently, but there are some
13245systems that do this in the ASL.
13246
13247Fixed a reported problem where the internal DeleteNode function
13248was incorrectly handling the case where a namespace node was the
13249first in the parent's child list, and had additional peers (not
13250the only child, but first in the list of children.)
13251
13252Code and Data Size: Current core subsystem library sizes are shown
13253below.  These are the code and data sizes for the acpica.lib
13254produced by the Microsoft Visual C++ 6.0 compiler, and these
13255values do not include any ACPI driver or OSPM code.  The debug
13256version of the code includes the debug output trace mechanism and
13257has a much larger code and data size.  Note that these values will
13258vary depending on the efficiency of the compiler and the compiler
13259options used during generation.
13260
13261  Previous Release
13262    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
13263    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
13264  Current Release:
13265    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
13266    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
13267
13268
132692) Linux:
13270
13271Allow ":" in OS override string (Ducrot Bruno)
13272
13273Kobject fix (Greg KH)
13274
13275
132763 iASL Compiler/Disassembler:
13277
13278Fixed a problem in the generation of the C source code files (AML
13279is emitted in C source statements for BIOS inclusion) where the
13280Ascii dump that appears within a C comment at the end of each line
13281could cause a compile time error if the AML sequence happens to
13282have an open comment or close comment sequence embedded.
13283
13284
13285----------------------------------------
1328624 April 2003.  Summary of changes for version 20030424.
13287
13288
132891) ACPI CA Core Subsystem:
13290
13291Support for big-endian systems has been implemented.  Most of the
13292support has been invisibly added behind big-endian versions of the
13293ACPI_MOVE_* macros.
13294
13295Fixed a problem in AcpiHwDisableGpeBlock() and
13296AcpiHwClearGpeBlock() where an incorrect offset was passed to the
13297low level hardware write routine.  The offset parameter was
13298actually eliminated from the low level read/write routines because
13299they had become obsolete.
13300
13301Fixed a problem where a handler object was deleted twice during
13302the removal of a fixed event handler.
13303
13304
133052) Linux:
13306
13307A fix for SMP systems with link devices was contributed by
13308
13309Compaq's Dan Zink.
13310
13311(2.5) Return whether we handled the interrupt in our IRQ handler.
13312(Linux ISRs no longer return void, so we can propagate the handler
13313return value from the ACPI CA core back to the OS.)
13314
13315
13316
133173) Documentation:
13318
13319The ACPI CA Programmer Reference has been updated to reflect new
13320interfaces and changes to existing interfaces.
13321
13322----------------------------------------
1332328 March 2003.  Summary of changes for version 20030328.
13324
133251) ACPI CA Core Subsystem:
13326
13327The GPE Block Device support has been completed.  New interfaces
13328are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
13329interfaces (enable, disable, clear, getstatus) have been split
13330into separate interfaces for Fixed Events and General Purpose
13331Events (GPEs) in order to support GPE Block Devices properly.
13332
13333Fixed a problem where the error message "Failed to acquire
13334semaphore" would appear during operations on the embedded
13335controller (EC).
13336
13337Code and Data Size: Current core subsystem library sizes are shown
13338below.  These are the code and data sizes for the acpica.lib
13339produced by the Microsoft Visual C++ 6.0 compiler, and these
13340values do not include any ACPI driver or OSPM code.  The debug
13341version of the code includes the debug output trace mechanism and
13342has a much larger code and data size.  Note that these values will
13343vary depending on the efficiency of the compiler and the compiler
13344options used during generation.
13345
13346  Previous Release
13347    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
13348    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
13349  Current Release:
13350    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
13351    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
13352
13353
13354----------------------------------------
1335528 February 2003.  Summary of changes for version 20030228.
13356
13357
133581) ACPI CA Core Subsystem:
13359
13360The GPE handling and dispatch code has been completely overhauled
13361in preparation for support of GPE Block Devices (ID ACPI0006).
13362This affects internal data structures and code only; there should
13363be no differences visible externally.  One new file has been
13364added, evgpeblk.c
13365
13366The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
13367fields that are used to determine the GPE block lengths.  The
13368REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
13369structures are ignored.  This is per the ACPI specification but it
13370isn't very clear.  The full 256 Block 0/1 GPEs are now supported
13371(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
13372
13373In the SCI interrupt handler, removed the read of the PM1_CONTROL
13374register to look at the SCI_EN bit.  On some machines, this read
13375causes an SMI event and greatly slows down SCI events.  (This may
13376in fact be the cause of slow battery status response on some
13377systems.)
13378
13379Fixed a problem where a store of a NULL string to a package object
13380could cause the premature deletion of the object.  This was seen
13381during execution of the battery _BIF method on some systems,
13382resulting in no battery data being returned.
13383
13384Added AcpiWalkResources interface to simplify parsing of resource
13385lists.
13386
13387Code and Data Size: Current core subsystem library sizes are shown
13388below.  These are the code and data sizes for the acpica.lib
13389produced by the Microsoft Visual C++ 6.0 compiler, and these
13390values do not include any ACPI driver or OSPM code.  The debug
13391version of the code includes the debug output trace mechanism and
13392has a much larger code and data size.  Note that these values will
13393vary depending on the efficiency of the compiler and the compiler
13394options used during generation.
13395
13396  Previous Release
13397    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13398    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13399  Current Release:
13400    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
13401    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
13402
13403
134042) Linux
13405
13406S3 fixes (Ole Rohne)
13407
13408Update ACPI PHP driver with to use new acpi_walk_resource API
13409(Bjorn Helgaas)
13410
13411Add S4BIOS support (Pavel Machek)
13412
13413Map in entire table before performing checksum (John Stultz)
13414
13415Expand the mem= cmdline to allow the specification of reserved and
13416ACPI DATA blocks (Pavel Machek)
13417
13418Never use ACPI on VISWS
13419
13420Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
13421
13422Revert a change that allowed P_BLK lengths to be 4 or 5. This is
13423causing us to think that some systems support C2 when they really
13424don't.
13425
13426Do not count processor objects for non-present CPUs (Thanks to
13427Dominik Brodowski)
13428
13429
134303) iASL Compiler:
13431
13432Fixed a problem where ASL include files could not be found and
13433opened.
13434
13435Added support for the _PDC reserved name.
13436
13437
13438----------------------------------------
1343922 January 2003.  Summary of changes for version 20030122.
13440
13441
134421) ACPI CA Core Subsystem:
13443
13444Added a check for constructs of the form:  Store (Local0, Local0)
13445where Local0 is not initialized.  Apparently, some BIOS
13446programmers believe that this is a NOOP.  Since this store doesn't
13447do anything anyway, the new prototype behavior will ignore this
13448error.  This is a case where we can relax the strict checking in
13449the interpreter in the name of compatibility.
13450
13451
134522) Linux
13453
13454The AcpiSrc Source Conversion Utility has been released with the
13455Linux package for the first time.  This is the utility that is
13456used to convert the ACPI CA base source code to the Linux version.
13457
13458(Both) Handle P_BLK lengths shorter than 6 more gracefully
13459
13460(Both) Move more headers to include/acpi, and delete an unused
13461header.
13462
13463(Both) Move drivers/acpi/include directory to include/acpi
13464
13465(Both) Boot functions don't use cmdline, so don't pass it around
13466
13467(Both) Remove include of unused header (Adrian Bunk)
13468
13469(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
13470the
13471former now also includes the latter, acpiphp.h only needs the one,
13472now.
13473
13474(2.5) Make it possible to select method of bios restoring after S3
13475resume. [=> no more ugly ifdefs] (Pavel Machek)
13476
13477(2.5) Make proc write interfaces work (Pavel Machek)
13478
13479(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
13480
13481(2.5) Break out ACPI Perf code into its own module, under cpufreq
13482(Dominik Brodowski)
13483
13484(2.4) S4BIOS support (Ducrot Bruno)
13485
13486(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
13487Visinoni)
13488
13489
134903) iASL Compiler:
13491
13492Added support to disassemble SSDT and PSDTs.
13493
13494Implemented support to obtain SSDTs from the Windows registry if
13495available.
13496
13497
13498----------------------------------------
1349909 January 2003.  Summary of changes for version 20030109.
13500
135011) ACPI CA Core Subsystem:
13502
13503Changed the behavior of the internal Buffer-to-String conversion
13504function.  The current ACPI specification states that the contents
13505of the buffer are "converted to a string of two-character
13506hexadecimal numbers, each separated by a space".  Unfortunately,
13507this definition is not backwards compatible with existing ACPI 1.0
13508implementations (although the behavior was not defined in the ACPI
135091.0 specification).  The new behavior simply copies data from the
13510buffer to the string until a null character is found or the end of
13511the buffer is reached.  The new String object is always null
13512terminated.  This problem was seen during the generation of _BIF
13513battery data where incorrect strings were returned for battery
13514type, etc.  This will also require an errata to the ACPI
13515specification.
13516
13517Renamed all instances of NATIVE_UINT and NATIVE_INT to
13518ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
13519
13520Copyright in all module headers (both Linux and non-Linux) has be
13521updated to 2003.
13522
13523Code and Data Size: Current core subsystem library sizes are shown
13524below.  These are the code and data sizes for the acpica.lib
13525produced by the Microsoft Visual C++ 6.0 compiler, and these
13526values do not include any ACPI driver or OSPM code.  The debug
13527version of the code includes the debug output trace mechanism and
13528has a much larger code and data size.  Note that these values will
13529vary depending on the efficiency of the compiler and the compiler
13530options used during generation.
13531
13532  Previous Release
13533    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13534    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13535  Current Release:
13536    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13537    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13538
13539
135402) Linux
13541
13542Fixed an oops on module insertion/removal (Matthew Tippett)
13543
13544(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
13545
13546(2.5) Replace pr_debug (Randy Dunlap)
13547
13548(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
13549
13550(Both) Eliminate spawning of thread from timer callback, in favor
13551of schedule_work()
13552
13553(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
13554
13555(Both) Added define for Fixed Function HW region (Matthew Wilcox)
13556
13557(Both) Add missing statics to button.c (Pavel Machek)
13558
13559Several changes have been made to the source code translation
13560utility that generates the Linux Code in order to make the code
13561more "Linux-like":
13562
13563All typedefs on structs and unions have been removed in keeping
13564with the Linux coding style.
13565
13566Removed the non-Linux SourceSafe module revision number from each
13567module header.
13568
13569Completed major overhaul of symbols to be lowercased for linux.
13570Doubled the number of symbols that are lowercased.
13571
13572Fixed a problem where identifiers within procedure headers and
13573within quotes were not fully lower cased (they were left with a
13574starting capital.)
13575
13576Some C macros whose only purpose is to allow the generation of 16-
13577bit code are now completely removed in the Linux code, increasing
13578readability and maintainability.
13579
13580----------------------------------------
13581
1358212 December 2002.  Summary of changes for version 20021212.
13583
13584
135851) ACPI CA Core Subsystem:
13586
13587Fixed a problem where the creation of a zero-length AML Buffer
13588would cause a fault.
13589
13590Fixed a problem where a Buffer object that pointed to a static AML
13591buffer (in an ACPI table) could inadvertently be deleted, causing
13592memory corruption.
13593
13594Fixed a problem where a user buffer (passed in to the external
13595ACPI CA interfaces) could be overwritten if the buffer was too
13596small to complete the operation, causing memory corruption.
13597
13598Fixed a problem in the Buffer-to-String conversion code where a
13599string of length one was always returned, regardless of the size
13600of the input Buffer object.
13601
13602Removed the NATIVE_CHAR data type across the entire source due to
13603lack of need and lack of consistent use.
13604
13605Code and Data Size: Current core subsystem library sizes are shown
13606below.  These are the code and data sizes for the acpica.lib
13607produced by the Microsoft Visual C++ 6.0 compiler, and these
13608values do not include any ACPI driver or OSPM code.  The debug
13609version of the code includes the debug output trace mechanism and
13610has a much larger code and data size.  Note that these values will
13611vary depending on the efficiency of the compiler and the compiler
13612options used during generation.
13613
13614  Previous Release
13615    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
13616    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
13617  Current Release:
13618    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13619    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13620
13621
13622----------------------------------------
1362305 December 2002.  Summary of changes for version 20021205.
13624
136251) ACPI CA Core Subsystem:
13626
13627Fixed a problem where a store to a String or Buffer object could
13628cause corruption of the DSDT if the object type being stored was
13629the same as the target object type and the length of the object
13630being stored was equal to or smaller than the original (existing)
13631target object.  This was seen to cause corruption of battery _BIF
13632buffers if the _BIF method modified the buffer on the fly.
13633
13634Fixed a problem where an internal error was generated if a control
13635method invocation was used in an OperationRegion, Buffer, or
13636Package declaration.  This was caused by the deferred parsing of
13637the control method and thus the deferred creation of the internal
13638method object.  The solution to this problem was to create the
13639internal method object at the moment the method is encountered in
13640the first pass - so that subsequent references to the method will
13641able to obtain the required parameter count and thus properly
13642parse the method invocation.  This problem presented itself as an
13643AE_AML_INTERNAL during the pass 1 parse phase during table load.
13644
13645Fixed a problem where the internal String object copy routine did
13646not always allocate sufficient memory for the target String object
13647and caused memory corruption.  This problem was seen to cause
13648"Allocation already present in list!" errors as memory allocation
13649became corrupted.
13650
13651Implemented a new function for the evaluation of namespace objects
13652that allows the specification of the allowable return object
13653types.  This simplifies a lot of code that checks for a return
13654object of one or more specific objects returned from the
13655evaluation (such as _STA, etc.)  This may become and external
13656function if it would be useful to ACPI-related drivers.
13657
13658Completed another round of prefixing #defines with "ACPI_" for
13659clarity.
13660
13661Completed additional code restructuring to allow more modular
13662linking for iASL compiler and AcpiExec.  Several files were split
13663creating new files.  New files:  nsparse.c dsinit.c evgpe.c
13664
13665Implemented an abort mechanism to terminate an executing control
13666method via the AML debugger.  This feature is useful for debugging
13667control methods that depend (wait) for specific hardware
13668responses.
13669
13670Code and Data Size: Current core subsystem library sizes are shown
13671below.  These are the code and data sizes for the acpica.lib
13672produced by the Microsoft Visual C++ 6.0 compiler, and these
13673values do not include any ACPI driver or OSPM code.  The debug
13674version of the code includes the debug output trace mechanism and
13675has a much larger code and data size.  Note that these values will
13676vary depending on the efficiency of the compiler and the compiler
13677options used during generation.
13678
13679  Previous Release
13680    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13681    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
13682  Current Release:
13683    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
13684    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
13685
13686
136872) iASL Compiler/Disassembler
13688
13689Fixed a compiler code generation problem for "Interrupt" Resource
13690Descriptors.  If specified in the ASL, the optional "Resource
13691Source Index" and "Resource Source" fields were not inserted into
13692the correct location within the AML resource descriptor, creating
13693an invalid descriptor.
13694
13695Fixed a disassembler problem for "Interrupt" resource descriptors.
13696The optional "Resource Source Index" and "Resource Source" fields
13697were ignored.
13698
13699
13700----------------------------------------
1370122 November 2002.  Summary of changes for version 20021122.
13702
13703
137041) ACPI CA Core Subsystem:
13705
13706Fixed a reported problem where an object stored to a Method Local
13707or Arg was not copied to a new object during the store - the
13708object pointer was simply copied to the Local/Arg.  This caused
13709all subsequent operations on the Local/Arg to also affect the
13710original source of the store operation.
13711
13712Fixed a problem where a store operation to a Method Local or Arg
13713was not completed properly if the Local/Arg contained a reference
13714(from RefOf) to a named field.  The general-purpose store-to-
13715namespace-node code is now used so that this case is handled
13716automatically.
13717
13718Fixed a problem where the internal object copy routine would cause
13719a protection fault if the object being copied was a Package and
13720contained either 1) a NULL package element or 2) a nested sub-
13721package.
13722
13723Fixed a problem with the GPE initialization that resulted from an
13724ambiguity in the ACPI specification.  One section of the
13725specification states that both the address and length of the GPE
13726block must be zero if the block is not supported.  Another section
13727implies that only the address need be zero if the block is not
13728supported.  The code has been changed so that both the address and
13729the length must be non-zero to indicate a valid GPE block (i.e.,
13730if either the address or the length is zero, the GPE block is
13731invalid.)
13732
13733Code and Data Size: Current core subsystem library sizes are shown
13734below.  These are the code and data sizes for the acpica.lib
13735produced by the Microsoft Visual C++ 6.0 compiler, and these
13736values do not include any ACPI driver or OSPM code.  The debug
13737version of the code includes the debug output trace mechanism and
13738has a much larger code and data size.  Note that these values will
13739vary depending on the efficiency of the compiler and the compiler
13740options used during generation.
13741
13742  Previous Release
13743    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
13744    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
13745  Current Release:
13746    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13747    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
13748
13749
137502) Linux
13751
13752Cleaned up EC driver. Exported an external EC read/write
13753interface. By going through this, other drivers (most notably
13754sonypi) will be able to serialize access to the EC.
13755
13756
137573) iASL Compiler/Disassembler
13758
13759Implemented support to optionally generate include files for both
13760ASM and C (the -i switch).  This simplifies BIOS development by
13761automatically creating include files that contain external
13762declarations for the symbols that are created within the
13763
13764(optionally generated) ASM and C AML source files.
13765
13766
13767----------------------------------------
1376815 November 2002.  Summary of changes for version 20021115.
13769
137701) ACPI CA Core Subsystem:
13771
13772Fixed a memory leak problem where an error during resolution of
13773
13774method arguments during a method invocation from another method
13775failed to cleanup properly by deleting all successfully resolved
13776argument objects.
13777
13778Fixed a problem where the target of the Index() operator was not
13779correctly constructed if the source object was a package.  This
13780problem has not been detected because the use of a target operand
13781with Index() is very rare.
13782
13783Fixed a problem with the Index() operator where an attempt was
13784made to delete the operand objects twice.
13785
13786Fixed a problem where an attempt was made to delete an operand
13787twice during execution of the CondRefOf() operator if the target
13788did not exist.
13789
13790Implemented the first of perhaps several internal create object
13791functions that create and initialize a specific object type.  This
13792consolidates duplicated code wherever the object is created, thus
13793shrinking the size of the subsystem.
13794
13795Implemented improved debug/error messages for errors that occur
13796during nested method invocations.  All executing method pathnames
13797are displayed (with the error) as the call stack is unwound - thus
13798simplifying debug.
13799
13800Fixed a problem introduced in the 10/02 release that caused
13801premature deletion of a buffer object if a buffer was used as an
13802ASL operand where an integer operand is required (Thus causing an
13803implicit object conversion from Buffer to Integer.)  The change in
13804the 10/02 release was attempting to fix a memory leak (albeit
13805incorrectly.)
13806
13807Code and Data Size: Current core subsystem library sizes are shown
13808below.  These are the code and data sizes for the acpica.lib
13809produced by the Microsoft Visual C++ 6.0 compiler, and these
13810values do not include any ACPI driver or OSPM code.  The debug
13811version of the code includes the debug output trace mechanism and
13812has a much larger code and data size.  Note that these values will
13813vary depending on the efficiency of the compiler and the compiler
13814options used during generation.
13815
13816  Previous Release
13817    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
13818    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
13819  Current Release:
13820    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
13821    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
13822
13823
138242) Linux
13825
13826Changed the implementation of the ACPI semaphores to use down()
13827instead of down_interruptable().  It is important that the
13828execution of ACPI control methods not be interrupted by signals.
13829Methods must run to completion, or the system may be left in an
13830unknown/unstable state.
13831
13832Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
13833(Shawn Starr)
13834
13835
138363) iASL Compiler/Disassembler
13837
13838
13839Changed the default location of output files.  All output files
13840are now placed in the current directory by default instead of in
13841the directory of the source file.  This change may affect some
13842existing makefiles, but it brings the behavior of the compiler in
13843line with other similar tools.  The location of the output files
13844can be overridden with the -p command line switch.
13845
13846
13847----------------------------------------
1384811 November 2002.  Summary of changes for version 20021111.
13849
13850
138510) ACPI Specification 2.0B is released and is now available at:
13852http://www.acpi.info/index.html
13853
13854
138551) ACPI CA Core Subsystem:
13856
13857Implemented support for the ACPI 2.0 SMBus Operation Regions.
13858This includes the early detection and handoff of the request to
13859the SMBus region handler (avoiding all of the complex field
13860support code), and support for the bidirectional return packet
13861from an SMBus write operation.  This paves the way for the
13862development of SMBus drivers in each host operating system.
13863
13864Fixed a problem where the semaphore WAIT_FOREVER constant was
13865defined as 32 bits, but must be 16 bits according to the ACPI
13866specification.  This had the side effect of causing ASL
13867Mutex/Event timeouts even though the ASL code requested a wait
13868forever.  Changed all internal references to the ACPI timeout
13869parameter to 16 bits to prevent future problems.  Changed the name
13870of WAIT_FOREVER to ACPI_WAIT_FOREVER.
13871
13872Code and Data Size: Current core subsystem library sizes are shown
13873below.  These are the code and data sizes for the acpica.lib
13874produced by the Microsoft Visual C++ 6.0 compiler, and these
13875values do not include any ACPI driver or OSPM code.  The debug
13876version of the code includes the debug output trace mechanism and
13877has a much larger code and data size.  Note that these values will
13878vary depending on the efficiency of the compiler and the compiler
13879options used during generation.
13880
13881  Previous Release
13882    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13883    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
13884  Current Release:
13885    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
13886    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
13887
13888
138892) Linux
13890
13891Module loading/unloading fixes (John Cagle)
13892
13893
138943) iASL Compiler/Disassembler
13895
13896Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
13897
13898Implemented support for the disassembly of all SMBus protocol
13899keywords (SMBQuick, SMBWord, etc.)
13900
13901----------------------------------------
1390201 November 2002.  Summary of changes for version 20021101.
13903
13904
139051) ACPI CA Core Subsystem:
13906
13907Fixed a problem where platforms that have a GPE1 block but no GPE0
13908block were not handled correctly.  This resulted in a "GPE
13909overlap" error message.  GPE0 is no longer required.
13910
13911Removed code added in the previous release that inserted nodes
13912into the namespace in alphabetical order.  This caused some side-
13913effects on various machines.  The root cause of the problem is
13914still under investigation since in theory, the internal ordering
13915of the namespace nodes should not matter.
13916
13917
13918Enhanced error reporting for the case where a named object is not
13919found during control method execution.  The full ACPI namepath
13920(name reference) of the object that was not found is displayed in
13921this case.
13922
13923Note: as a result of the overhaul of the namespace object types in
13924the previous release, the namespace nodes for the predefined
13925scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
13926instead of ACPI_TYPE_ANY.  This simplifies the namespace
13927management code but may affect code that walks the namespace tree
13928looking for specific object types.
13929
13930Code and Data Size: Current core subsystem library sizes are shown
13931below.  These are the code and data sizes for the acpica.lib
13932produced by the Microsoft Visual C++ 6.0 compiler, and these
13933values do not include any ACPI driver or OSPM code.  The debug
13934version of the code includes the debug output trace mechanism and
13935has a much larger code and data size.  Note that these values will
13936vary depending on the efficiency of the compiler and the compiler
13937options used during generation.
13938
13939  Previous Release
13940    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
13941    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
13942  Current Release:
13943    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13944    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
13945
13946
139472) Linux
13948
13949Fixed a problem introduced in the previous release where the
13950Processor and Thermal objects were not recognized and installed in
13951/proc.  This was related to the scope type change described above.
13952
13953
139543) iASL Compiler/Disassembler
13955
13956Implemented the -g option to get all of the required ACPI tables
13957from the registry and save them to files (Windows version of the
13958compiler only.)  The required tables are the FADT, FACS, and DSDT.
13959
13960Added ACPI table checksum validation during table disassembly in
13961order to catch corrupted tables.
13962
13963
13964----------------------------------------
1396522 October 2002.  Summary of changes for version 20021022.
13966
139671) ACPI CA Core Subsystem:
13968
13969Implemented a restriction on the Scope operator that the target
13970must already exist in the namespace at the time the operator is
13971encountered (during table load or method execution).  In other
13972words, forward references are not allowed and Scope() cannot
13973create a new object. This changes the previous behavior where the
13974interpreter would create the name if not found.  This new behavior
13975correctly enables the search-to-root algorithm during namespace
13976lookup of the target name.  Because of this upsearch, this fixes
13977the known Compaq _SB_.OKEC problem and makes both the AML
13978interpreter and iASL compiler compatible with other ACPI
13979implementations.
13980
13981Completed a major overhaul of the internal ACPI object types for
13982the ACPI Namespace and the associated operand objects.  Many of
13983these types had become obsolete with the introduction of the two-
13984pass namespace load.  This cleanup simplifies the code and makes
13985the entire namespace load mechanism much clearer and easier to
13986understand.
13987
13988Improved debug output for tracking scope opening/closing to help
13989diagnose scoping issues.  The old scope name as well as the new
13990scope name are displayed.  Also improved error messages for
13991problems with ASL Mutex objects and error messages for GPE
13992problems.
13993
13994Cleaned up the namespace dump code, removed obsolete code.
13995
13996All string output (for all namespace/object dumps) now uses the
13997common ACPI string output procedure which handles escapes properly
13998and does not emit non-printable characters.
13999
14000Fixed some issues with constants in the 64-bit version of the
14001local C library (utclib.c)
14002
14003
140042) Linux
14005
14006EC Driver:  No longer attempts to acquire the Global Lock at
14007interrupt level.
14008
14009
140103) iASL Compiler/Disassembler
14011
14012Implemented ACPI 2.0B grammar change that disallows all Type 1 and
140132 opcodes outside of a control method.  This means that the
14014"executable" operators (versus the "namespace" operators) cannot
14015be used at the table level; they can only be used within a control
14016method.
14017
14018Implemented the restriction on the Scope() operator where the
14019target must already exist in the namespace at the time the
14020operator is encountered (during ASL compilation). In other words,
14021forward references are not allowed and Scope() cannot create a new
14022object.  This makes the iASL compiler compatible with other ACPI
14023implementations and makes the Scope() implementation adhere to the
14024ACPI specification.
14025
14026Fixed a problem where namepath optimization for the Alias operator
14027was optimizing the wrong path (of the two namepaths.)  This caused
14028a "Missing alias link" error message.
14029
14030Fixed a problem where an "unknown reserved name" warning could be
14031incorrectly generated for names like "_SB" when the trailing
14032underscore is not used in the original ASL.
14033
14034Fixed a problem where the reserved name check did not handle
14035NamePaths with multiple NameSegs correctly.  The first nameseg of
14036the NamePath was examined instead of the last NameSeg.
14037
14038
14039----------------------------------------
14040
1404102 October 2002.  Summary of changes for this release.
14042
14043
140441) ACPI CA Core Subsystem version 20021002:
14045
14046Fixed a problem where a store/copy of a string to an existing
14047string did not always set the string length properly in the String
14048object.
14049
14050Fixed a reported problem with the ToString operator where the
14051behavior was identical to the ToHexString operator instead of just
14052simply converting a raw buffer to a string data type.
14053
14054Fixed a problem where CopyObject and the other "explicit"
14055conversion operators were not updating the internal namespace node
14056type as part of the store operation.
14057
14058Fixed a memory leak during implicit source operand conversion
14059where the original object was not deleted if it was converted to a
14060new object of a different type.
14061
14062Enhanced error messages for all problems associated with namespace
14063lookups.  Common procedure generates and prints the lookup name as
14064well as the formatted status.
14065
14066Completed implementation of a new design for the Alias support
14067within the namespace.  The existing design did not handle the case
14068where a new object was assigned to one of the two names due to the
14069use of an explicit conversion operator, resulting in the two names
14070pointing to two different objects.  The new design simply points
14071the Alias name to the original name node - not to the object.
14072This results in a level of indirection that must be handled in the
14073name resolution mechanism.
14074
14075Code and Data Size: Current core subsystem library sizes are shown
14076below.  These are the code and data sizes for the acpica.lib
14077produced by the Microsoft Visual C++ 6.0 compiler, and these
14078values do not include any ACPI driver or OSPM code.  The debug
14079version of the code includes the debug output trace mechanism and
14080has a larger code and data size.  Note that these values will vary
14081depending on the efficiency of the compiler and the compiler
14082options used during generation.
14083
14084  Previous Release
14085    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
14086    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
14087  Current Release:
14088    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
14089    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
14090
14091
140922) Linux
14093
14094Initialize thermal driver's timer before it is used. (Knut
14095Neumann)
14096
14097Allow handling negative celsius values. (Kochi Takayoshi)
14098
14099Fix thermal management and make trip points. R/W (Pavel Machek)
14100
14101Fix /proc/acpi/sleep. (P. Christeas)
14102
14103IA64 fixes. (David Mosberger)
14104
14105Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
14106
14107Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
14108Brodowski)
14109
14110
141113) iASL Compiler/Disassembler
14112
14113Clarified some warning/error messages.
14114
14115
14116----------------------------------------
1411718 September 2002.  Summary of changes for this release.
14118
14119
141201) ACPI CA Core Subsystem version 20020918:
14121
14122Fixed a reported problem with reference chaining (via the Index()
14123and RefOf() operators) in the ObjectType() and SizeOf() operators.
14124The definition of these operators includes the dereferencing of
14125all chained references to return information on the base object.
14126
14127Fixed a problem with stores to indexed package elements - the
14128existing code would not complete the store if an "implicit
14129conversion" was not performed.  In other words, if the existing
14130object (package element) was to be replaced completely, the code
14131didn't handle this case.
14132
14133Relaxed typechecking on the ASL "Scope" operator to allow the
14134target name to refer to an object of type Integer, String, or
14135Buffer, in addition to the scoping object types (Device,
14136predefined Scopes, Processor, PowerResource, and ThermalZone.)
14137This allows existing AML code that has workarounds for a bug in
14138Windows to function properly.  A warning is issued, however.  This
14139affects both the AML interpreter and the iASL compiler. Below is
14140an example of this type of ASL code:
14141
14142      Name(DEB,0x00)
14143      Scope(DEB)
14144      {
14145
14146Fixed some reported problems with 64-bit integer support in the
14147local implementation of C library functions (clib.c)
14148
14149
141502) Linux
14151
14152Use ACPI fix map region instead of IOAPIC region, since it is
14153undefined in non-SMP.
14154
14155Ensure that the SCI has the proper polarity and trigger, even on
14156systems that do not have an interrupt override entry in the MADT.
14157
141582.5 big driver reorganization (Pat Mochel)
14159
14160Use early table mapping code from acpitable.c (Andi Kleen)
14161
14162New blacklist entries (Andi Kleen)
14163
14164Blacklist improvements. Split blacklist code out into a separate
14165file. Move checking the blacklist to very early. Previously, we
14166would use ACPI tables, and then halfway through init, check the
14167blacklist -- too late. Now, it's early enough to completely fall-
14168back to non-ACPI.
14169
14170
141713) iASL Compiler/Disassembler version 20020918:
14172
14173Fixed a problem where the typechecking code didn't know that an
14174alias could point to a method.  In other words, aliases were not
14175being dereferenced during typechecking.
14176
14177
14178----------------------------------------
1417929 August 2002.  Summary of changes for this release.
14180
141811) ACPI CA Core Subsystem Version 20020829:
14182
14183If the target of a Scope() operator already exists, it must be an
14184object type that actually opens a scope -- such as a Device,
14185Method, Scope, etc.  This is a fatal runtime error.  Similar error
14186check has been added to the iASL compiler also.
14187
14188Tightened up the namespace load to disallow multiple names in the
14189same scope.  This previously was allowed if both objects were of
14190the same type.  (i.e., a lookup was the same as entering a new
14191name).
14192
14193
141942) Linux
14195
14196Ensure that the ACPI interrupt has the proper trigger and
14197polarity.
14198
14199local_irq_disable is extraneous. (Matthew Wilcox)
14200
14201Make "acpi=off" actually do what it says, and not use the ACPI
14202interpreter *or* the tables.
14203
14204Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
14205Takayoshi)
14206
14207
142083) iASL Compiler/Disassembler  Version 20020829:
14209
14210Implemented namepath optimization for name declarations.  For
14211example, a declaration like "Method (\_SB_.ABCD)" would get
14212optimized to "Method (ABCD)" if the declaration is within the
14213\_SB_ scope.  This optimization is in addition to the named
14214reference path optimization first released in the previous
14215version. This would seem to complete all possible optimizations
14216for namepaths within the ASL/AML.
14217
14218If the target of a Scope() operator already exists, it must be an
14219object type that actually opens a scope -- such as a Device,
14220Method, Scope, etc.
14221
14222Implemented a check and warning for unreachable code in the same
14223block below a Return() statement.
14224
14225Fixed a problem where the listing file was not generated if the
14226compiler aborted if the maximum error count was exceeded (200).
14227
14228Fixed a problem where the typechecking of method return values was
14229broken.  This includes the check for a return value when the
14230method is invoked as a TermArg (a return value is expected.)
14231
14232Fixed a reported problem where EOF conditions during a quoted
14233string or comment caused a fault.
14234
14235
14236----------------------------------------
1423715 August 2002.  Summary of changes for this release.
14238
142391) ACPI CA Core Subsystem Version 20020815:
14240
14241Fixed a reported problem where a Store to a method argument that
14242contains a reference did not perform the indirect store correctly.
14243This problem was created during the conversion to the new
14244reference object model - the indirect store to a method argument
14245code was not updated to reflect the new model.
14246
14247Reworked the ACPI mode change code to better conform to ACPI 2.0,
14248handle corner cases, and improve code legibility (Kochi Takayoshi)
14249
14250Fixed a problem with the pathname parsing for the carat (^)
14251prefix.  The heavy use of the carat operator by the new namepath
14252optimization in the iASL compiler uncovered a problem with the AML
14253interpreter handling of this prefix.  In the case where one or
14254more carats precede a single nameseg, the nameseg was treated as
14255standalone and the search rule (to root) was inadvertently
14256applied.  This could cause both the iASL compiler and the
14257interpreter to find the wrong object or to miss the error that
14258should occur if the object does not exist at that exact pathname.
14259
14260Found and fixed the problem where the HP Pavilion DSDT would not
14261load.  This was a relatively minor tweak to the table loading code
14262(a problem caused by the unexpected encounter with a method
14263invocation not within a control method), but it does not solve the
14264overall issue of the execution of AML code at the table level.
14265This investigation is still ongoing.
14266
14267Code and Data Size: Current core subsystem library sizes are shown
14268below.  These are the code and data sizes for the acpica.lib
14269produced by the Microsoft Visual C++ 6.0 compiler, and these
14270values do not include any ACPI driver or OSPM code.  The debug
14271version of the code includes the debug output trace mechanism and
14272has a larger code and data size.  Note that these values will vary
14273depending on the efficiency of the compiler and the compiler
14274options used during generation.
14275
14276  Previous Release
14277    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
14278    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
14279  Current Release:
14280    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
14281    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
14282
14283
142842) Linux
14285
14286Remove redundant slab.h include (Brad Hards)
14287
14288Fix several bugs in thermal.c (Herbert Nachtnebel)
14289
14290Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
14291
14292Change acpi_system_suspend to use updated irq functions (Pavel
14293Machek)
14294
14295Export acpi_get_firmware_table (Matthew Wilcox)
14296
14297Use proper root proc entry for ACPI (Kochi Takayoshi)
14298
14299Fix early-boot table parsing (Bjorn Helgaas)
14300
14301
143023) iASL Compiler/Disassembler
14303
14304Reworked the compiler options to make them more consistent and to
14305use two-letter options where appropriate.  We were running out of
14306sensible letters.   This may break some makefiles, so check the
14307current options list by invoking the compiler with no parameters.
14308
14309Completed the design and implementation of the ASL namepath
14310optimization option for the compiler.  This option optimizes all
14311references to named objects to the shortest possible path.  The
14312first attempt tries to utilize a single nameseg (4 characters) and
14313the "search-to-root" algorithm used by the interpreter.  If that
14314cannot be used (because either the name is not in the search path
14315or there is a conflict with another object with the same name),
14316the pathname is optimized using the carat prefix (usually a
14317shorter string than specifying the entire path from the root.)
14318
14319Implemented support to obtain the DSDT from the Windows registry
14320(when the disassembly option is specified with no input file).
14321Added this code as the implementation for AcpiOsTableOverride in
14322the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
14323utility) to scan memory for the DSDT to the AcpiOsTableOverride
14324function in the DOS OSL to make the disassembler truly OS
14325independent.
14326
14327Implemented a new option to disassemble and compile in one step.
14328When used without an input filename, this option will grab the
14329DSDT from the local machine, disassemble it, and compile it in one
14330step.
14331
14332Added a warning message for invalid escapes (a backslash followed
14333by any character other than the allowable escapes).  This catches
14334the quoted string error "\_SB_" (which should be "\\_SB_" ).
14335
14336Also, there are numerous instances in the ACPI specification where
14337this error occurs.
14338
14339Added a compiler option to disable all optimizations.  This is
14340basically the "compatibility mode" because by using this option,
14341the AML code will come out exactly the same as other ASL
14342compilers.
14343
14344Added error messages for incorrectly ordered dependent resource
14345functions.  This includes: missing EndDependentFn macro at end of
14346dependent resource list, nested dependent function macros (both
14347start and end), and missing StartDependentFn macro.  These are
14348common errors that should be caught at compile time.
14349
14350Implemented _OSI support for the disassembler and compiler.  _OSI
14351must be included in the namespace for proper disassembly (because
14352the disassembler must know the number of arguments.)
14353
14354Added an "optimization" message type that is optional (off by
14355default).  This message is used for all optimizations - including
14356constant folding, integer optimization, and namepath optimization.
14357
14358----------------------------------------
1435925 July 2002.  Summary of changes for this release.
14360
14361
143621) ACPI CA Core Subsystem Version 20020725:
14363
14364The AML Disassembler has been enhanced to produce compilable ASL
14365code and has been integrated into the iASL compiler (see below) as
14366well as the single-step disassembly for the AML debugger and the
14367disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
14368resource templates and macros are fully supported.  The
14369disassembler has been tested on over 30 different AML files,
14370producing identical AML when the resulting disassembled ASL file
14371is recompiled with the same ASL compiler.
14372
14373Modified the Resource Manager to allow zero interrupts and zero
14374dma channels during the GetCurrentResources call.  This was
14375causing problems on some platforms.
14376
14377Added the AcpiOsRedirectOutput interface to the OSL to simplify
14378output redirection for the AcpiOsPrintf and AcpiOsVprintf
14379interfaces.
14380
14381Code and Data Size: Current core subsystem library sizes are shown
14382below.  These are the code and data sizes for the acpica.lib
14383produced by the Microsoft Visual C++ 6.0 compiler, and these
14384values do not include any ACPI driver or OSPM code.  The debug
14385version of the code includes the debug output trace mechanism and
14386has a larger code and data size.  Note that these values will vary
14387depending on the efficiency of the compiler and the compiler
14388options used during generation.
14389
14390  Previous Release
14391    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
14392    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
14393  Current Release:
14394    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
14395    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
14396
14397
143982) Linux
14399
14400Fixed a panic in the EC driver (Dominik Brodowski)
14401
14402Implemented checksum of the R/XSDT itself during Linux table scan
14403(Richard Schaal)
14404
14405
144063) iASL compiler
14407
14408The AML disassembler is integrated into the compiler.  The "-d"
14409option invokes the disassembler  to completely disassemble an
14410input AML file, producing as output a text ASL file with the
14411extension ".dsl" (to avoid name collisions with existing .asl
14412source files.)  A future enhancement will allow the disassembler
14413to obtain the BIOS DSDT from the registry under Windows.
14414
14415Fixed a problem with the VendorShort and VendorLong resource
14416descriptors where an invalid AML sequence was created.
14417
14418Implemented a fix for BufferData term in the ASL parser.  It was
14419inadvertently defined twice, allowing invalid syntax to pass and
14420causing reduction conflicts.
14421
14422Fixed a problem where the Ones opcode could get converted to a
14423value of zero if "Ones" was used where a byte, word or dword value
14424was expected.  The 64-bit value is now truncated to the correct
14425size with the correct value.
14426
14427
14428
14429----------------------------------------
1443002 July 2002.  Summary of changes for this release.
14431
14432
144331) ACPI CA Core Subsystem Version 20020702:
14434
14435The Table Manager code has been restructured to add several new
14436features.  Tables that are not required by the core subsystem
14437(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
14438validated in any way and are returned from AcpiGetFirmwareTable if
14439requested.  The AcpiOsTableOverride interface is now called for
14440each table that is loaded by the subsystem in order to allow the
14441host to override any table it chooses.  Previously, only the DSDT
14442could be overridden.  Added one new files, tbrsdt.c and
14443tbgetall.c.
14444
14445Fixed a problem with the conversion of internal package objects to
14446external objects (when a package is returned from a control
14447method.)  The return buffer length was set to zero instead of the
14448proper length of the package object.
14449
14450Fixed a reported problem with the use of the RefOf and DeRefOf
14451operators when passing reference arguments to control methods.  A
14452new type of Reference object is used internally for references
14453produced by the RefOf operator.
14454
14455Added additional error messages in the Resource Manager to explain
14456AE_BAD_DATA errors when they occur during resource parsing.
14457
14458Split the AcpiEnableSubsystem into two primitives to enable a
14459finer granularity initialization sequence.  These two calls should
14460be called in this order: AcpiEnableSubsystem (flags),
14461AcpiInitializeObjects (flags).  The flags parameter remains the
14462same.
14463
14464
144652) Linux
14466
14467Updated the ACPI utilities module to understand the new style of
14468fully resolved package objects that are now returned from the core
14469subsystem.  This eliminates errors of the form:
14470
14471    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
14472    acpi_utils-0430 [145] acpi_evaluate_reference:
14473        Invalid element in package (not a device reference)
14474
14475The method evaluation utility uses the new buffer allocation
14476scheme instead of calling AcpiEvaluate Object twice.
14477
14478Added support for ECDT. This allows the use of the Embedded
14479
14480Controller before the namespace has been fully initialized, which
14481is necessary for ACPI 2.0 support, and for some laptops to
14482initialize properly. (Laptops using ECDT are still rare, so only
14483limited testing was performed of the added functionality.)
14484
14485Fixed memory leaks in the EC driver.
14486
14487Eliminated a brittle code structure in acpi_bus_init().
14488
14489Eliminated the acpi_evaluate() helper function in utils.c. It is
14490no longer needed since acpi_evaluate_object can optionally
14491allocate memory for the return object.
14492
14493Implemented fix for keyboard hang when getting battery readings on
14494some systems (Stephen White)
14495
14496PCI IRQ routing update (Dominik Brodowski)
14497
14498Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
14499support
14500
14501----------------------------------------
1450211 June 2002.  Summary of changes for this release.
14503
14504
145051) ACPI CA Core Subsystem Version 20020611:
14506
14507Fixed a reported problem where constants such as Zero and One
14508appearing within _PRT packages were not handled correctly within
14509the resource manager code.  Originally reported against the ASL
14510compiler because the code generator now optimizes integers to
14511their minimal AML representation (i.e. AML constants if possible.)
14512The _PRT code now handles all AML constant opcodes correctly
14513(Zero, One, Ones, Revision).
14514
14515Fixed a problem with the Concatenate operator in the AML
14516interpreter where a buffer result object was incorrectly marked as
14517not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
14518
14519All package sub-objects are now fully resolved before they are
14520returned from the external ACPI interfaces.  This means that name
14521strings are resolved to object handles, and constant operators
14522(Zero, One, Ones, Revision) are resolved to Integers.
14523
14524Implemented immediate resolution of the AML Constant opcodes
14525(Zero, One, Ones, Revision) to Integer objects upon detection
14526within the AML stream. This has simplified and reduced the
14527generated code size of the subsystem by eliminating about 10
14528switch statements for these constants (which previously were
14529contained in Reference objects.)  The complicating issues are that
14530the Zero opcode is used as a "placeholder" for unspecified
14531optional target operands and stores to constants are defined to be
14532no-ops.
14533
14534Code and Data Size: Current core subsystem library sizes are shown
14535below. These are the code and data sizes for the acpica.lib
14536produced by the Microsoft Visual C++ 6.0 compiler, and these
14537values do not include any ACPI driver or OSPM code.  The debug
14538version of the code includes the debug output trace mechanism and
14539has a larger code and data size.  Note that these values will vary
14540depending on the efficiency of the compiler and the compiler
14541options used during generation.
14542
14543  Previous Release
14544    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14545    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14546  Current Release:
14547    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
14548    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
14549
14550
145512) Linux
14552
14553
14554Added preliminary support for obtaining _TRA data for PCI root
14555bridges (Bjorn Helgaas).
14556
14557
145583) iASL Compiler Version X2046:
14559
14560Fixed a problem where the "_DDN" reserved name was defined to be a
14561control method with one argument.  There are no arguments, and
14562_DDN does not have to be a control method.
14563
14564Fixed a problem with the Linux version of the compiler where the
14565source lines printed with error messages were the wrong lines.
14566This turned out to be the "LF versus CR/LF" difference between
14567Windows and Unix.  This appears to be the longstanding issue
14568concerning listing output and error messages.
14569
14570Fixed a problem with the Linux version of compiler where opcode
14571names within error messages were wrong.  This was caused by a
14572slight difference in the output of the Flex tool on Linux versus
14573Windows.
14574
14575Fixed a problem with the Linux compiler where the hex output files
14576contained some garbage data caused by an internal buffer overrun.
14577
14578
14579----------------------------------------
1458017 May 2002.  Summary of changes for this release.
14581
14582
145831) ACPI CA Core Subsystem Version 20020517:
14584
14585Implemented a workaround to an BIOS bug discovered on the HP
14586OmniBook where the FADT revision number and the table size are
14587inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
14588behavior is to fallback to using only the ACPI 1.0 fields of the
14589FADT if the table is too small to be a ACPI 2.0 table as claimed
14590by the revision number.  Although this is a BIOS bug, this is a
14591case where the workaround is simple enough and with no side
14592effects, so it seemed prudent to add it.  A warning message is
14593issued, however.
14594
14595Implemented minimum size checks for the fixed-length ACPI tables -
14596- the FADT and FACS, as well as consistency checks between the
14597revision number and the table size.
14598
14599Fixed a reported problem in the table override support where the
14600new table pointer was incorrectly treated as a physical address
14601instead of a logical address.
14602
14603Eliminated the use of the AE_AML_ERROR exception and replaced it
14604with more descriptive codes.
14605
14606Fixed a problem where an exception would occur if an ASL Field was
14607defined with no named Field Units underneath it (used by some
14608index fields).
14609
14610Code and Data Size: Current core subsystem library sizes are shown
14611below.  These are the code and data sizes for the acpica.lib
14612produced by the Microsoft Visual C++ 6.0 compiler, and these
14613values do not include any ACPI driver or OSPM code.  The debug
14614version of the code includes the debug output trace mechanism and
14615has a larger code and data size.  Note that these values will vary
14616depending on the efficiency of the compiler and the compiler
14617options used during generation.
14618
14619  Previous Release
14620    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
14621    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
14622  Current Release:
14623    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14624    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14625
14626
14627
146282) Linux
14629
14630Much work done on ACPI init (MADT and PCI IRQ routing support).
14631(Paul D. and Dominik Brodowski)
14632
14633Fix PCI IRQ-related panic on boot (Sam Revitch)
14634
14635Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
14636
14637Fix "MHz" typo (Dominik Brodowski)
14638
14639Fix RTC year 2000 issue (Dominik Brodowski)
14640
14641Preclude multiple button proc entries (Eric Brunet)
14642
14643Moved arch-specific code out of include/platform/aclinux.h
14644
146453) iASL Compiler Version X2044:
14646
14647Implemented error checking for the string used in the EISAID macro
14648(Usually used in the definition of the _HID object.)  The code now
14649strictly enforces the PnP format - exactly 7 characters, 3
14650uppercase letters and 4 hex digits.
14651
14652If a raw string is used in the definition of the _HID object
14653(instead of the EISAID macro), the string must contain all
14654alphanumeric characters (e.g., "*PNP0011" is not allowed because
14655of the asterisk.)
14656
14657Implemented checking for invalid use of ACPI reserved names for
14658most of the name creation operators (Name, Device, Event, Mutex,
14659OperationRegion, PowerResource, Processor, and ThermalZone.)
14660Previously, this check was only performed for control methods.
14661
14662Implemented an additional check on the Name operator to emit an
14663error if a reserved name that must be implemented in ASL as a
14664control method is used.  We know that a reserved name must be a
14665method if it is defined with input arguments.
14666
14667The warning emitted when a namespace object reference is not found
14668during the cross reference phase has been changed into an error.
14669The "External" directive should be used for names defined in other
14670modules.
14671
14672
146734) Tools and Utilities
14674
14675The 16-bit tools (adump16 and aexec16) have been regenerated and
14676tested.
14677
14678Fixed a problem with the output of both acpidump and adump16 where
14679the indentation of closing parentheses and brackets was not
14680
14681aligned properly with the parent block.
14682
14683
14684----------------------------------------
1468503 May 2002.  Summary of changes for this release.
14686
14687
146881) ACPI CA Core Subsystem Version 20020503:
14689
14690Added support a new OSL interface that allows the host operating
14691
14692system software to override the DSDT found in the firmware -
14693AcpiOsTableOverride.  With this interface, the OSL can examine the
14694version of the firmware DSDT and replace it with a different one
14695if desired.
14696
14697Added new external interfaces for accessing ACPI registers from
14698device drivers and other system software - AcpiGetRegister and
14699AcpiSetRegister.  This was simply an externalization of the
14700existing AcpiHwBitRegister interfaces.
14701
14702Fixed a regression introduced in the previous build where the
14703ASL/AML CreateField operator always returned an error,
14704"destination must be a NS Node".
14705
14706Extended the maximum time (before failure) to successfully enable
14707ACPI mode to 3 seconds.
14708
14709Code and Data Size: Current core subsystem library sizes are shown
14710below.  These are the code and data sizes for the acpica.lib
14711produced by the Microsoft Visual C++ 6.0 compiler, and these
14712values do not include any ACPI driver or OSPM code.  The debug
14713version of the code includes the debug output trace mechanism and
14714has a larger code and data size.  Note that these values will vary
14715depending on the efficiency of the compiler and the compiler
14716options used during generation.
14717
14718  Previous Release
14719    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
14720    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
14721  Current Release:
14722    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
14723    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
14724
14725
147262) Linux
14727
14728Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
14729free. While 3 out of 4 of our in-house systems work fine, the last
14730one still hangs when testing the LAPIC timer.
14731
14732Renamed many files in 2.5 kernel release to omit "acpi_" from the
14733name.
14734
14735Added warning on boot for Presario 711FR.
14736
14737Sleep improvements (Pavel Machek)
14738
14739ACPI can now be built without CONFIG_PCI enabled.
14740
14741IA64: Fixed memory map functions (JI Lee)
14742
14743
147443) iASL Compiler Version X2043:
14745
14746Added support to allow the compiler to be integrated into the MS
14747VC++ development environment for one-button compilation of single
14748files or entire projects -- with error-to-source-line mapping.
14749
14750Implemented support for compile-time constant folding for the
14751Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
14752specification.  This allows the ASL writer to use expressions
14753instead of Integer/Buffer/String constants in terms that must
14754evaluate to constants at compile time and will also simplify the
14755emitted AML in any such sub-expressions that can be folded
14756(evaluated at compile-time.)  This increases the size of the
14757compiler significantly because a portion of the ACPI CA AML
14758interpreter is included within the compiler in order to pre-
14759evaluate constant expressions.
14760
14761
14762Fixed a problem with the "Unicode" ASL macro that caused the
14763compiler to fault.  (This macro is used in conjunction with the
14764_STR reserved name.)
14765
14766Implemented an AML opcode optimization to use the Zero, One, and
14767Ones opcodes where possible to further reduce the size of integer
14768constants and thus reduce the overall size of the generated AML
14769code.
14770
14771Implemented error checking for new reserved terms for ACPI version
147722.0A.
14773
14774Implemented the -qr option to display the current list of ACPI
14775reserved names known to the compiler.
14776
14777Implemented the -qc option to display the current list of ASL
14778operators that are allowed within constant expressions and can
14779therefore be folded at compile time if the operands are constants.
14780
14781
147824) Documentation
14783
14784Updated the Programmer's Reference for new interfaces, data types,
14785and memory allocation model options.
14786
14787Updated the iASL Compiler User Reference to apply new format and
14788add information about new features and options.
14789
14790----------------------------------------
1479119 April 2002.  Summary of changes for this release.
14792
147931) ACPI CA Core Subsystem Version 20020419:
14794
14795The source code base for the Core Subsystem has been completely
14796cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
14797versions.  The Lint option files used are included in the
14798/acpi/generate/lint directory.
14799
14800Implemented enhanced status/error checking across the entire
14801Hardware manager subsystem.  Any hardware errors (reported from
14802the OSL) are now bubbled up and will abort a running control
14803method.
14804
14805
14806Fixed a problem where the per-ACPI-table integer width (32 or 64)
14807was stored only with control method nodes, causing a fault when
14808non-control method code was executed during table loading.  The
14809solution implemented uses a global variable to indicate table
14810width across the entire ACPI subsystem.  Therefore, ACPI CA does
14811not support mixed integer widths across different ACPI tables
14812(DSDT, SSDT).
14813
14814Fixed a problem where NULL extended fields (X fields) in an ACPI
148152.0 ACPI FADT caused the table load to fail.  Although the
14816existing ACPI specification is a bit fuzzy on this topic, the new
14817behavior is to fall back on a ACPI 1.0 field if the corresponding
14818ACPI 2.0 X field is zero (even though the table revision indicates
14819a full ACPI 2.0 table.)  The ACPI specification will be updated to
14820clarify this issue.
14821
14822Fixed a problem with the SystemMemory operation region handler
14823where memory was always accessed byte-wise even if the AML-
14824specified access width was larger than a byte.  This caused
14825problems on systems with memory-mapped I/O.  Memory is now
14826accessed with the width specified.  On systems that do not support
14827non-aligned transfers, a check is made to guarantee proper address
14828alignment before proceeding in order to avoid an AML-caused
14829alignment fault within the kernel.
14830
14831
14832Fixed a problem with the ExtendedIrq resource where only one byte
14833of the 4-byte Irq field was extracted.
14834
14835Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
14836function was out of date and required a rewrite.
14837
14838Code and Data Size: Current core subsystem library sizes are shown
14839below.  These are the code and data sizes for the acpica.lib
14840produced by the Microsoft Visual C++ 6.0 compiler, and these
14841values do not include any ACPI driver or OSPM code.  The debug
14842version of the code includes the debug output trace mechanism and
14843has a larger code and data size.  Note that these values will vary
14844depending on the efficiency of the compiler and the compiler
14845options used during generation.
14846
14847  Previous Release
14848    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
14849    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
14850  Current Release:
14851    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
14852    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
14853
14854
148552) Linux
14856
14857PCI IRQ routing fixes (Dominik Brodowski)
14858
14859
148603) iASL Compiler Version X2042:
14861
14862Implemented an additional compile-time error check for a field
14863unit whose size + minimum access width would cause a run-time
14864access beyond the end-of-region.  Previously, only the field size
14865itself was checked.
14866
14867The Core subsystem and iASL compiler now share a common parse
14868object in preparation for compile-time evaluation of the type
148693/4/5 ASL operators.
14870
14871
14872----------------------------------------
14873Summary of changes for this release: 03_29_02
14874
148751) ACPI CA Core Subsystem Version 20020329:
14876
14877Implemented support for late evaluation of TermArg operands to
14878Buffer and Package objects.  This allows complex expressions to be
14879used in the declarations of these object types.
14880
14881Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
148821.0, if the field was larger than 32 bits, it was returned as a
14883buffer - otherwise it was returned as an integer.  In ACPI 2.0,
14884the field is returned as a buffer only if the field is larger than
1488564 bits.  The TableRevision is now considered when making this
14886conversion to avoid incompatibility with existing ASL code.
14887
14888Implemented logical addressing for AcpiOsGetRootPointer.  This
14889allows an RSDP with either a logical or physical address.  With
14890this support, the host OS can now override all ACPI tables with
14891one logical RSDP.  Includes implementation of  "typed" pointer
14892support to allow a common data type for both physical and logical
14893pointers internally.  This required a change to the
14894AcpiOsGetRootPointer interface.
14895
14896Implemented the use of ACPI 2.0 Generic Address Structures for all
14897GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
14898mapped I/O for these ACPI features.
14899
14900Initialization now ignores not only non-required tables (All
14901tables other than the FADT, FACS, DSDT, and SSDTs), but also does
14902not validate the table headers of unrecognized tables.
14903
14904Fixed a problem where a notify handler could only be
14905installed/removed on an object of type Device.  All "notify"
14906
14907objects are now supported -- Devices, Processor, Power, and
14908Thermal.
14909
14910Removed most verbosity from the ACPI_DB_INFO debug level.  Only
14911critical information is returned when this debug level is enabled.
14912
14913Code and Data Size: Current core subsystem library sizes are shown
14914below.  These are the code and data sizes for the acpica.lib
14915produced by the Microsoft Visual C++ 6.0 compiler, and these
14916values do not include any ACPI driver or OSPM code.  The debug
14917version of the code includes the debug output trace mechanism and
14918has a larger code and data size.  Note that these values will vary
14919depending on the efficiency of the compiler and the compiler
14920options used during generation.
14921
14922  Previous Release
14923    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
14924    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
14925  Current Release:
14926    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
14927    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
14928
14929
149302) Linux:
14931
14932The processor driver (acpi_processor.c) now fully supports ACPI
149332.0-based processor performance control (e.g. Intel(R)
14934SpeedStep(TM) technology) Note that older laptops that only have
14935the Intel "applet" interface are not supported through this.  The
14936'limit' and 'performance' interface (/proc) are fully functional.
14937[Note that basic policy for controlling performance state
14938transitions will be included in the next version of ospmd.]  The
14939idle handler was modified to more aggressively use C2, and PIIX4
14940errata handling underwent a complete overhaul (big thanks to
14941Dominik Brodowski).
14942
14943Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
14944based devices in the ACPI namespace are now dynamically bound
14945(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
14946This allows, among other things, ACPI to resolve bus numbers for
14947subordinate PCI bridges.
14948
14949Enhanced PCI IRQ routing to get the proper bus number for _PRT
14950entries defined underneath PCI bridges.
14951
14952Added IBM 600E to bad bios list due to invalid _ADR value for
14953PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
14954
14955In the process of adding full MADT support (e.g. IOAPIC) for IA32
14956(acpi.c, mpparse.c) -- stay tuned.
14957
14958Added back visual differentiation between fixed-feature and
14959control-method buttons in dmesg.  Buttons are also subtyped (e.g.
14960button/power/PWRF) to simplify button identification.
14961
14962We no longer use -Wno-unused when compiling debug. Please ignore
14963any "_THIS_MODULE defined but not used" messages.
14964
14965Can now shut down the system using "magic sysrq" key.
14966
14967
149683) iASL Compiler version 2041:
14969
14970Fixed a problem where conversion errors for hex/octal/decimal
14971constants were not reported.
14972
14973Implemented a fix for the General Register template Address field.
14974This field was 8 bits when it should be 64.
14975
14976Fixed a problem where errors/warnings were no longer being emitted
14977within the listing output file.
14978
14979Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
14980exactly 4 characters, alphanumeric only.
14981
14982
14983
14984
14985----------------------------------------
14986Summary of changes for this release: 03_08_02
14987
14988
149891) ACPI CA Core Subsystem Version 20020308:
14990
14991Fixed a problem with AML Fields where the use of the "AccessAny"
14992keyword could cause an interpreter error due to attempting to read
14993or write beyond the end of the parent Operation Region.
14994
14995Fixed a problem in the SystemMemory Operation Region handler where
14996an attempt was made to map memory beyond the end of the region.
14997This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
14998errors on some Linux systems.
14999
15000Fixed a problem where the interpreter/namespace "search to root"
15001algorithm was not functioning for some object types.  Relaxed the
15002internal restriction on the search to allow upsearches for all
15003external object types as well as most internal types.
15004
15005
150062) Linux:
15007
15008We now use safe_halt() macro versus individual calls to sti | hlt.
15009
15010Writing to the processor limit interface should now work. "echo 1"
15011will increase the limit, 2 will decrease, and 0 will reset to the
15012
15013default.
15014
15015
150163) ASL compiler:
15017
15018Fixed segfault on Linux version.
15019
15020
15021----------------------------------------
15022Summary of changes for this release: 02_25_02
15023
150241) ACPI CA Core Subsystem:
15025
15026
15027Fixed a problem where the GPE bit masks were not initialized
15028properly, causing erratic GPE behavior.
15029
15030Implemented limited support for multiple calling conventions.  The
15031code can be generated with either the VPL (variable parameter
15032list, or "C") convention, or the FPL (fixed parameter list, or
15033"Pascal") convention.  The core subsystem is about 3.4% smaller
15034when generated with FPL.
15035
15036
150372) Linux
15038
15039Re-add some /proc/acpi/event functionality that was lost during
15040the rewrite
15041
15042Resolved issue with /proc events for fixed-feature buttons showing
15043up as the system device.
15044
15045Fixed checks on C2/C3 latencies to be inclusive of maximum values.
15046
15047Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
15048
15049Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
15050
15051Fixed limit interface & usage to fix bugs with passive cooling
15052hysterisis.
15053
15054Restructured PRT support.
15055
15056
15057----------------------------------------
15058Summary of changes for this label: 02_14_02
15059
15060
150611) ACPI CA Core Subsystem:
15062
15063Implemented support in AcpiLoadTable to allow loading of FACS and
15064FADT tables.
15065
15066Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
15067been removed.  All 64-bit platforms should be migrated to the ACPI
150682.0 tables.  The actbl71.h header has been removed from the source
15069tree.
15070
15071All C macros defined within the subsystem have been prefixed with
15072"ACPI_" to avoid collision with other system include files.
15073
15074Removed the return value for the two AcpiOsPrint interfaces, since
15075it is never used and causes lint warnings for ignoring the return
15076value.
15077
15078Added error checking to all internal mutex acquire and release
15079calls.  Although a failure from one of these interfaces is
15080probably a fatal system error, these checks will cause the
15081immediate abort of the currently executing method or interface.
15082
15083Fixed a problem where the AcpiSetCurrentResources interface could
15084fault.  This was a side effect of the deployment of the new memory
15085allocation model.
15086
15087Fixed a couple of problems with the Global Lock support introduced
15088in the last major build.  The "common" (1.0/2.0) internal FACS was
15089being overwritten with the FACS signature and clobbering the
15090Global Lock pointer.  Also, the actual firmware FACS was being
15091unmapped after construction of the "common" FACS, preventing
15092access to the actual Global Lock field within it.  The "common"
15093internal FACS is no longer installed as an actual ACPI table; it
15094is used simply as a global.
15095
15096Code and Data Size: Current core subsystem library sizes are shown
15097below.  These are the code and data sizes for the acpica.lib
15098produced by the Microsoft Visual C++ 6.0 compiler, and these
15099values do not include any ACPI driver or OSPM code.  The debug
15100version of the code includes the debug output trace mechanism and
15101has a larger code and data size.  Note that these values will vary
15102depending on the efficiency of the compiler and the compiler
15103options used during generation.
15104
15105  Previous Release (02_07_01)
15106    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
15107    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
15108  Current Release:
15109    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
15110    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
15111
15112
151132) Linux
15114
15115Updated Linux-specific code for core macro and OSL interface
15116changes described above.
15117
15118Improved /proc/acpi/event. It now can be opened only once and has
15119proper poll functionality.
15120
15121Fixed and restructured power management (acpi_bus).
15122
15123Only create /proc "view by type" when devices of that class exist.
15124
15125Fixed "charging/discharging" bug (and others) in acpi_battery.
15126
15127Improved thermal zone code.
15128
15129
151303) ASL Compiler, version X2039:
15131
15132
15133Implemented the new compiler restriction on ASL String hex/octal
15134escapes to non-null, ASCII values.  An error results if an invalid
15135value is used.  (This will require an ACPI 2.0 specification
15136change.)
15137
15138AML object labels that are output to the optional C and ASM source
15139are now prefixed with both the ACPI table signature and table ID
15140to help guarantee uniqueness within a large BIOS project.
15141
15142
15143----------------------------------------
15144Summary of changes for this label: 02_01_02
15145
151461) ACPI CA Core Subsystem:
15147
15148ACPI 2.0 support is complete in the entire Core Subsystem and the
15149ASL compiler. All new ACPI 2.0 operators are implemented and all
15150other changes for ACPI 2.0 support are complete.  With
15151simultaneous code and data optimizations throughout the subsystem,
15152ACPI 2.0 support has been implemented with almost no additional
15153cost in terms of code and data size.
15154
15155Implemented a new mechanism for allocation of return buffers.  If
15156the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
15157be allocated on behalf of the caller.  Consolidated all return
15158buffer validation and allocation to a common procedure.  Return
15159buffers will be allocated via the primary OSL allocation interface
15160since it appears that a separate pool is not needed by most users.
15161If a separate pool is required for these buffers, the caller can
15162still use the original mechanism and pre-allocate the buffer(s).
15163
15164Implemented support for string operands within the DerefOf
15165operator.
15166
15167Restructured the Hardware and Event managers to be table driven,
15168simplifying the source code and reducing the amount of generated
15169code.
15170
15171Split the common read/write low-level ACPI register bitfield
15172procedure into a separate read and write, simplifying the code
15173considerably.
15174
15175Obsoleted the AcpiOsCallocate OSL interface.  This interface was
15176used only a handful of times and didn't have enough critical mass
15177for a separate interface.  Replaced with a common calloc procedure
15178in the core.
15179
15180Fixed a reported problem with the GPE number mapping mechanism
15181that allows GPE1 numbers to be non-contiguous with GPE0.
15182Reorganized the GPE information and shrunk a large array that was
15183originally large enough to hold info for all possible GPEs (256)
15184to simply large enough to hold all GPEs up to the largest GPE
15185number on the machine.
15186
15187Fixed a reported problem with resource structure alignment on 64-
15188bit platforms.
15189
15190Changed the AcpiEnableEvent and AcpiDisableEvent external
15191interfaces to not require any flags for the common case of
15192enabling/disabling a GPE.
15193
15194Implemented support to allow a "Notify" on a Processor object.
15195
15196Most TBDs in comments within the source code have been resolved
15197and eliminated.
15198
15199
15200Fixed a problem in the interpreter where a standalone parent
15201prefix (^) was not handled correctly in the interpreter and
15202debugger.
15203
15204Removed obsolete and unnecessary GPE save/restore code.
15205
15206Implemented Field support in the ASL Load operator.  This allows a
15207table to be loaded from a named field, in addition to loading a
15208table directly from an Operation Region.
15209
15210Implemented timeout and handle support in the external Global Lock
15211interfaces.
15212
15213Fixed a problem in the AcpiDump utility where pathnames were no
15214longer being generated correctly during the dump of named objects.
15215
15216Modified the AML debugger to give a full display of if/while
15217predicates instead of just one AML opcode at a time.  (The
15218predicate can have several nested ASL statements.)  The old method
15219was confusing during single stepping.
15220
15221Code and Data Size: Current core subsystem library sizes are shown
15222below. These are the code and data sizes for the acpica.lib
15223produced by the Microsoft Visual C++ 6.0 compiler, and these
15224values do not include any ACPI driver or OSPM code.  The debug
15225version of the code includes the debug output trace mechanism and
15226has a larger code and data size.  Note that these values will vary
15227depending on the efficiency of the compiler and the compiler
15228options used during generation.
15229
15230  Previous Release (12_18_01)
15231     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
15232     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
15233   Current Release:
15234     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
15235     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
15236
152372) Linux
15238
15239 Implemented fix for PIIX reverse throttling errata (Processor
15240driver)
15241
15242Added new Limit interface (Processor and Thermal drivers)
15243
15244New thermal policy (Thermal driver)
15245
15246Many updates to /proc
15247
15248Battery "low" event support (Battery driver)
15249
15250Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
15251
15252IA32 - IA64 initialization unification, no longer experimental
15253
15254Menuconfig options redesigned
15255
152563) ASL Compiler, version X2037:
15257
15258Implemented several new output features to simplify integration of
15259AML code into  firmware: 1) Output the AML in C source code with
15260labels for each named ASL object.  The    original ASL source code
15261is interleaved as C comments. 2) Output the AML in ASM source code
15262with labels and interleaved ASL    source. 3) Output the AML in
15263raw hex table form, in either C or ASM.
15264
15265Implemented support for optional string parameters to the
15266LoadTable operator.
15267
15268Completed support for embedded escape sequences within string
15269literals.  The compiler now supports all single character escapes
15270as well as the Octal and Hex escapes.  Note: the insertion of a
15271null byte into a string literal (via the hex/octal escape) causes
15272the string to be immediately terminated.  A warning is issued.
15273
15274Fixed a problem where incorrect AML was generated for the case
15275where an ASL namepath consists of a single parent prefix (
15276
15277) with no trailing name segments.
15278
15279The compiler has been successfully generated with a 64-bit C
15280compiler.
15281
15282
15283
15284
15285----------------------------------------
15286Summary of changes for this label: 12_18_01
15287
152881) Linux
15289
15290Enhanced blacklist with reason and severity fields. Any table's
15291signature may now be used to identify a blacklisted system.
15292
15293Call _PIC control method to inform the firmware which interrupt
15294model the OS is using. Turn on any disabled link devices.
15295
15296Cleaned up busmgr /proc error handling (Andreas Dilger)
15297
15298 2) ACPI CA Core Subsystem:
15299
15300Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
15301while loop)
15302
15303Completed implementation of the ACPI 2.0 "Continue",
15304"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
15305operators.  All new ACPI 2.0 operators are now implemented in both
15306the ASL compiler and the AML interpreter.  The only remaining ACPI
153072.0 task is support for the String data type in the DerefOf
15308operator.  Fixed a problem with AcquireMutex where the status code
15309was lost if the caller had to actually wait for the mutex.
15310
15311Increased the maximum ASL Field size from 64K bits to 4G bits.
15312
15313Completed implementation of the external Global Lock interfaces --
15314AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
15315Handler parameters were added.
15316
15317Completed another pass at removing warnings and issues when
15318compiling with 64-bit compilers.  The code now compiles cleanly
15319with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
15320add and subtract (diff) macros have changed considerably.
15321
15322
15323Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1532464-bit platforms, 32-bits on all others.  This type is used
15325wherever memory allocation and/or the C sizeof() operator is used,
15326and affects the OSL memory allocation interfaces AcpiOsAllocate
15327and AcpiOsCallocate.
15328
15329Implemented sticky user breakpoints in the AML debugger.
15330
15331Code and Data Size: Current core subsystem library sizes are shown
15332below. These are the code and data sizes for the acpica.lib
15333produced by the Microsoft Visual C++ 6.0 compiler, and these
15334values do not include any ACPI driver or OSPM code.  The debug
15335version of the code includes the debug output trace mechanism and
15336has a larger code and data size. Note that these values will vary
15337depending on the efficiency of the compiler and the compiler
15338options used during generation.
15339
15340  Previous Release (12_05_01)
15341     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
15342     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
15343   Current Release:
15344     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
15345     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
15346
15347 3) ASL Compiler, version X2034:
15348
15349Now checks for (and generates an error if detected) the use of a
15350Break or Continue statement without an enclosing While statement.
15351
15352
15353Successfully generated the compiler with the Intel 64-bit C
15354compiler.
15355
15356 ----------------------------------------
15357Summary of changes for this label: 12_05_01
15358
15359 1) ACPI CA Core Subsystem:
15360
15361The ACPI 2.0 CopyObject operator is fully implemented.  This
15362operator creates a new copy of an object (and is also used to
15363bypass the "implicit conversion" mechanism of the Store operator.)
15364
15365The ACPI 2.0 semantics for the SizeOf operator are fully
15366implemented.  The change is that performing a SizeOf on a
15367reference object causes an automatic dereference of the object to
15368tha actual value before the size is evaluated. This behavior was
15369undefined in ACPI 1.0.
15370
15371The ACPI 2.0 semantics for the Extended IRQ resource descriptor
15372have been implemented.  The interrupt polarity and mode are now
15373independently set.
15374
15375Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
15376appearing in Package objects were not properly converted to
15377integers when the internal Package was converted to an external
15378object (via the AcpiEvaluateObject interface.)
15379
15380Fixed a problem with the namespace object deletion mechanism for
15381objects created by control methods.  There were two parts to this
15382problem: 1) Objects created during the initialization phase method
15383parse were not being deleted, and 2) The object owner ID mechanism
15384to track objects was broken.
15385
15386Fixed a problem where the use of the ASL Scope operator within a
15387control method would result in an invalid opcode exception.
15388
15389Fixed a problem introduced in the previous label where the buffer
15390length required for the _PRT structure was not being returned
15391correctly.
15392
15393Code and Data Size: Current core subsystem library sizes are shown
15394below. These are the code and data sizes for the acpica.lib
15395produced by the Microsoft Visual C++ 6.0 compiler, and these
15396values do not include any ACPI driver or OSPM code.  The debug
15397version of the code includes the debug output trace mechanism and
15398has a larger code and data size.  Note that these values will vary
15399depending on the efficiency of the compiler and the compiler
15400options used during generation.
15401
15402  Previous Release (11_20_01)
15403     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
15404     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
15405
15406  Current Release:
15407     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
15408     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
15409
15410 2) Linux:
15411
15412Updated all files to apply cleanly against 2.4.16.
15413
15414Added basic PCI Interrupt Routing Table (PRT) support for IA32
15415(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
15416version supports both static and dyanmic PRT entries, but dynamic
15417entries are treated as if they were static (not yet
15418reconfigurable).  Architecture- specific code to use this data is
15419absent on IA32 but should be available shortly.
15420
15421Changed the initialization sequence to start the ACPI interpreter
15422(acpi_init) prior to initialization of the PCI driver (pci_init)
15423in init/main.c.  This ordering is required to support PRT and
15424facilitate other (future) enhancement.  A side effect is that the
15425ACPI bus driver and certain device drivers can no longer be loaded
15426as modules.
15427
15428Modified the 'make menuconfig' options to allow PCI Interrupt
15429Routing support to be included without the ACPI Bus and other
15430device drivers.
15431
15432 3) ASL Compiler, version X2033:
15433
15434Fixed some issues with the use of the new CopyObject and
15435DataTableRegion operators.  Both are fully functional.
15436
15437 ----------------------------------------
15438Summary of changes for this label: 11_20_01
15439
15440 20 November 2001.  Summary of changes for this release.
15441
15442 1) ACPI CA Core Subsystem:
15443
15444Updated Index support to match ACPI 2.0 semantics.  Storing a
15445Integer, String, or Buffer to an Index of a Buffer will store only
15446the least-significant byte of the source to the Indexed buffer
15447byte.  Multiple writes are not performed.
15448
15449Fixed a problem where the access type used in an AccessAs ASL
15450operator was not recorded correctly into the field object.
15451
15452Fixed a problem where ASL Event objects were created in a
15453signalled state. Events are now created in an unsignalled state.
15454
15455The internal object cache is now purged after table loading and
15456initialization to reduce the use of dynamic kernel memory -- on
15457the assumption that object use is greatest during the parse phase
15458of the entire table (versus the run-time use of individual control
15459methods.)
15460
15461ACPI 2.0 variable-length packages are now fully operational.
15462
15463Code and Data Size: Code and Data optimizations have permitted new
15464feature development with an actual reduction in the library size.
15465Current core subsystem library sizes are shown below.  These are
15466the code and data sizes for the acpica.lib produced by the
15467Microsoft Visual C++ 6.0 compiler, and these values do not include
15468any ACPI driver or OSPM code.  The debug version of the code
15469includes the debug output trace mechanism and has a larger code
15470and data size.  Note that these values will vary depending on the
15471efficiency of the compiler and the compiler options used during
15472generation.
15473
15474  Previous Release (11_09_01):
15475     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
15476     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
15477
15478  Current Release:
15479     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
15480     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
15481
15482 2) Linux:
15483
15484Enhanced the ACPI boot-time initialization code to allow the use
15485of Local APIC tables for processor enumeration on IA-32, and to
15486pave the way for a fully MPS-free boot (on SMP systems) in the
15487near future.  This functionality replaces
15488arch/i386/kernel/acpitables.c, which was introduced in an earlier
154892.4.15-preX release.  To enable this feature you must add
15490"acpi_boot=on" to the kernel command line -- see the help entry
15491for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
15492the works...
15493
15494Restructured the configuration options to allow boot-time table
15495parsing support without inclusion of the ACPI Interpreter (and
15496other) code.
15497
15498NOTE: This release does not include fixes for the reported events,
15499power-down, and thermal passive cooling issues (coming soon).
15500
15501 3) ASL Compiler:
15502
15503Added additional typechecking for Fields within restricted access
15504Operation Regions.  All fields within EC and CMOS regions must be
15505declared with ByteAcc. All fields withing SMBus regions must be
15506declared with the BufferAcc access type.
15507
15508Fixed a problem where the listing file output of control methods
15509no longer interleaved the actual AML code with the ASL source
15510code.
15511
15512
15513
15514
15515----------------------------------------
15516Summary of changes for this label: 11_09_01
15517
155181) ACPI CA Core Subsystem:
15519
15520Implemented ACPI 2.0-defined support for writes to fields with a
15521Buffer, String, or Integer source operand that is smaller than the
15522target field. In these cases, the source operand is zero-extended
15523to fill the target field.
15524
15525Fixed a problem where a Field starting bit offset (within the
15526parent operation region) was calculated incorrectly if the
15527
15528alignment of the field differed from the access width.  This
15529affected CreateWordField, CreateDwordField, CreateQwordField, and
15530possibly other fields that use the "AccessAny" keyword.
15531
15532Fixed a problem introduced in the 11_02_01 release where indirect
15533stores through method arguments did not operate correctly.
15534
155352) Linux:
15536
15537Implemented boot-time ACPI table parsing support
15538(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
15539facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
15540legacy BIOS interfaces (e.g. MPS) for the configuration of system
15541processors, memory, and interrupts during setup_arch().  Note that
15542this patch does not include the required architecture-specific
15543changes required to apply this information -- subsequent patches
15544will be posted for both IA32 and IA64 to achieve this.
15545
15546Added low-level sleep support for IA32 platforms, courtesy of Pat
15547Mochel. This allows IA32 systems to transition to/from various
15548sleeping states (e.g. S1, S3), although the lack of a centralized
15549driver model and power-manageable drivers will prevent its
15550(successful) use on most systems.
15551
15552Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
15553submenu, unified IA32 and IA64 options, added new "Boot using ACPI
15554tables" option, etc.
15555
15556Increased the default timeout for the EC driver from 1ms to 10ms
15557(1000 cycles of 10us) to try to address AE_TIME errors during EC
15558transactions.
15559
15560 ----------------------------------------
15561Summary of changes for this label: 11_02_01
15562
155631) ACPI CA Core Subsystem:
15564
15565ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
15566(QWordAcc keyword). All ACPI 2.0 64-bit support is now
15567implemented.
15568
15569OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
15570changes to support ACPI 2.0 Qword field access.  Read/Write
15571PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
15572accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
15573the value parameter for the address space handler interface is now
15574an ACPI_INTEGER.  OSL implementations of these interfaces must now
15575handle the case where the Width parameter is 64.
15576
15577Index Fields: Fixed a problem where unaligned bit assembly and
15578disassembly for IndexFields was not supported correctly.
15579
15580Index and Bank Fields:  Nested Index and Bank Fields are now
15581supported. During field access, a check is performed to ensure
15582that the value written to an Index or Bank register is not out of
15583the range of the register.  The Index (or Bank) register is
15584written before each access to the field data. Future support will
15585include allowing individual IndexFields to be wider than the
15586DataRegister width.
15587
15588Fields: Fixed a problem where the AML interpreter was incorrectly
15589attempting to write beyond the end of a Field/OpRegion.  This was
15590a boundary case that occurred when a DWORD field was written to a
15591BYTE access OpRegion, forcing multiple writes and causing the
15592interpreter to write one datum too many.
15593
15594Fields: Fixed a problem with Field/OpRegion access where the
15595starting bit address of a field was incorrectly calculated if the
15596current access type was wider than a byte (WordAcc, DwordAcc, or
15597QwordAcc).
15598
15599Fields: Fixed a problem where forward references to individual
15600FieldUnits (individual Field names within a Field definition) were
15601not resolved during the AML table load.
15602
15603Fields: Fixed a problem where forward references from a Field
15604definition to the parent Operation Region definition were not
15605resolved during the AML table load.
15606
15607Fields: Duplicate FieldUnit names within a scope are now detected
15608during AML table load.
15609
15610Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
15611returned an incorrect name for the root node.
15612
15613Code and Data Size: Code and Data optimizations have permitted new
15614feature development with an actual reduction in the library size.
15615Current core subsystem library sizes are shown below.  These are
15616the code and data sizes for the acpica.lib produced by the
15617Microsoft Visual C++ 6.0 compiler, and these values do not include
15618any ACPI driver or OSPM code.  The debug version of the code
15619includes the debug output trace mechanism and has a larger code
15620and data size.  Note that these values will vary depending on the
15621efficiency of the compiler and the compiler options used during
15622generation.
15623
15624  Previous Release (10_18_01):
15625     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
15626     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
15627
15628  Current Release:
15629     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
15630     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
15631
15632 2) Linux:
15633
15634Improved /proc processor output (Pavel Machek) Re-added
15635MODULE_LICENSE("GPL") to all modules.
15636
15637 3) ASL Compiler version X2030:
15638
15639Duplicate FieldUnit names within a scope are now detected and
15640flagged as errors.
15641
15642 4) Documentation:
15643
15644Programmer Reference updated to reflect OSL and address space
15645handler interface changes described above.
15646
15647----------------------------------------
15648Summary of changes for this label: 10_18_01
15649
15650ACPI CA Core Subsystem:
15651
15652Fixed a problem with the internal object reference count mechanism
15653that occasionally caused premature object deletion. This resolves
15654all of the outstanding problem reports where an object is deleted
15655in the middle of an interpreter evaluation.  Although this problem
15656only showed up in rather obscure cases, the solution to the
15657problem involved an adjustment of all reference counts involving
15658objects attached to namespace nodes.
15659
15660Fixed a problem with Field support in the interpreter where
15661writing to an aligned field whose length is an exact multiple (2
15662or greater) of the field access granularity would cause an attempt
15663to write beyond the end of the field.
15664
15665The top level AML opcode execution functions within the
15666interpreter have been renamed with a more meaningful and
15667consistent naming convention.  The modules exmonad.c and
15668exdyadic.c were eliminated.  New modules are exoparg1.c,
15669exoparg2.c, exoparg3.c, and exoparg6.c.
15670
15671Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
15672
15673Fixed a problem where the AML debugger was causing some internal
15674objects to not be deleted during subsystem termination.
15675
15676Fixed a problem with the external AcpiEvaluateObject interface
15677where the subsystem would fault if the named object to be
15678evaluated refered to a constant such as Zero, Ones, etc.
15679
15680Fixed a problem with IndexFields and BankFields where the
15681subsystem would fault if the index, data, or bank registers were
15682not defined in the same scope as the field itself.
15683
15684Added printf format string checking for compilers that support
15685this feature.  Corrected more than 50 instances of issues with
15686format specifiers within invocations of ACPI_DEBUG_PRINT
15687throughout the core subsystem code.
15688
15689The ASL "Revision" operator now returns the ACPI support level
15690implemented in the core - the value "2" since the ACPI 2.0 support
15691is more than 50% implemented.
15692
15693Enhanced the output of the AML debugger "dump namespace" command
15694to output in a more human-readable form.
15695
15696Current core subsystem library code sizes are shown below.  These
15697
15698are the code and data sizes for the acpica.lib produced by the
15699Microsoft Visual C++ 6.0 compiler, and these values do not include
15700any ACPI driver or OSPM code.  The debug version of the code
15701includes the full debug trace mechanism -- leading to a much
15702
15703larger code and data size.  Note that these values will vary
15704depending on the efficiency of the compiler and the compiler
15705options used during generation.
15706
15707     Previous Label (09_20_01):
15708     Non-Debug Version:    65K Code,     5K Data,     70K Total
15709     Debug Version:       138K Code,    58K Data,    196K Total
15710
15711     This Label:
15712
15713     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
15714     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
15715
15716Linux:
15717
15718Implemented a "Bad BIOS Blacklist" to track machines that have
15719known ASL/AML problems.
15720
15721Enhanced the /proc interface for the thermal zone driver and added
15722support for _HOT (the critical suspend trip point).  The 'info'
15723file now includes threshold/policy information, and allows setting
15724of _SCP (cooling preference) and _TZP (polling frequency) values
15725to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
15726frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
15727preference to the passive/quiet mode (if supported by the ASL).
15728
15729Implemented a workaround for a gcc bug that resuted in an OOPs
15730when loading the control method battery driver.
15731
15732 ----------------------------------------
15733Summary of changes for this label: 09_20_01
15734
15735 ACPI CA Core Subsystem:
15736
15737The AcpiEnableEvent and AcpiDisableEvent interfaces have been
15738modified to allow individual GPE levels to be flagged as wake-
15739enabled (i.e., these GPEs are to remain enabled when the platform
15740sleeps.)
15741
15742The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
15743support wake-enabled GPEs.  This means that upon entering the
15744sleep state, all GPEs that are not wake-enabled are disabled.
15745When leaving the sleep state, these GPEs are reenabled.
15746
15747A local double-precision divide/modulo module has been added to
15748enhance portability to OS kernels where a 64-bit math library is
15749not available.  The new module is "utmath.c".
15750
15751Several optimizations have been made to reduce the use of CPU
15752stack.  Originally over 2K, the maximum stack usage is now below
157532K at 1860  bytes (1.82k)
15754
15755Fixed a problem with the AcpiGetFirmwareTable interface where the
15756root table pointer was not mapped into a logical address properly.
15757
15758Fixed a problem where a NULL pointer was being dereferenced in the
15759interpreter code for the ASL Notify operator.
15760
15761Fixed a problem where the use of the ASL Revision operator
15762returned an error. This operator now returns the current version
15763of the ACPI CA core subsystem.
15764
15765Fixed a problem where objects passed as control method parameters
15766to AcpiEvaluateObject were always deleted at method termination.
15767However, these objects may end up being stored into the namespace
15768by the called method.  The object reference count mechanism was
15769applied to these objects instead of a force delete.
15770
15771Fixed a problem where static strings or buffers (contained in the
15772AML code) that are declared as package elements within the ASL
15773code could cause a fault because the interpreter would attempt to
15774delete them.  These objects are now marked with the "static
15775object" flag to prevent any attempt to delete them.
15776
15777Implemented an interpreter optimization to use operands directly
15778from the state object instead of extracting the operands to local
15779variables.  This reduces stack use and code size, and improves
15780performance.
15781
15782The module exxface.c was eliminated as it was an unnecessary extra
15783layer of code.
15784
15785Current core subsystem library code sizes are shown below.  These
15786are the code and data sizes for the acpica.lib produced by the
15787Microsoft Visual C++ 6.0 compiler, and these values do not include
15788any ACPI driver or OSPM code.  The debug version of the code
15789includes the full debug trace mechanism -- leading to a much
15790larger code and data size.  Note that these values will vary
15791depending on the efficiency of the compiler and the compiler
15792options used during generation.
15793
15794  Non-Debug Version:  65K Code,   5K Data,   70K Total
15795(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
15796Total  (Previously 195K)
15797
15798Linux:
15799
15800Support for ACPI 2.0 64-bit integers has been added.   All ACPI
15801Integer objects are now 64 bits wide
15802
15803All Acpi data types and structures are now in lower case.  Only
15804Acpi macros are upper case for differentiation.
15805
15806 Documentation:
15807
15808Changes to the external interfaces as described above.
15809
15810 ----------------------------------------
15811Summary of changes for this label: 08_31_01
15812
15813 ACPI CA Core Subsystem:
15814
15815A bug with interpreter implementation of the ASL Divide operator
15816was found and fixed.  The implicit function return value (not the
15817explicit store operands) was returning the remainder instead of
15818the quotient.  This was a longstanding bug and it fixes several
15819known outstanding issues on various platforms.
15820
15821The ACPI_DEBUG_PRINT and function trace entry/exit macros have
15822been further optimized for size.  There are 700 invocations of the
15823DEBUG_PRINT macro alone, so each optimization reduces the size of
15824the debug version of the subsystem significantly.
15825
15826A stack trace mechanism has been implemented.  The maximum stack
15827usage is about 2K on 32-bit platforms.  The debugger command "stat
15828stack" will display the current maximum stack usage.
15829
15830All public symbols and global variables within the subsystem are
15831now prefixed with the string "Acpi".  This keeps all of the
15832symbols grouped together in a kernel map, and avoids conflicts
15833with other kernel subsystems.
15834
15835Most of the internal fixed lookup tables have been moved into the
15836code segment via the const operator.
15837
15838Several enhancements have been made to the interpreter to both
15839reduce the code size and improve performance.
15840
15841Current core subsystem library code sizes are shown below.  These
15842are the code and data sizes for the acpica.lib produced by the
15843Microsoft Visual C++ 6.0 compiler, and these values do not include
15844any ACPI driver or OSPM code.  The debug version of the code
15845includes the full debug trace mechanism which contains over 700
15846invocations of the DEBUG_PRINT macro, 500 function entry macro
15847invocations, and over 900 function exit macro invocations --
15848leading to a much larger code and data size.  Note that these
15849values will vary depending on the efficiency of the compiler and
15850the compiler options used during generation.
15851
15852        Non-Debug Version:  64K Code,   5K Data,   69K Total
15853Debug Version:     137K Code,  58K Data,  195K Total
15854
15855 Linux:
15856
15857Implemented wbinvd() macro, pending a kernel-wide definition.
15858
15859Fixed /proc/acpi/event to handle poll() and short reads.
15860
15861 ASL Compiler, version X2026:
15862
15863Fixed a problem introduced in the previous label where the AML
15864
15865code emitted for package objects produced packages with zero
15866length.
15867
15868 ----------------------------------------
15869Summary of changes for this label: 08_16_01
15870
15871ACPI CA Core Subsystem:
15872
15873The following ACPI 2.0 ASL operators have been implemented in the
15874AML interpreter (These are already supported by the Intel ASL
15875compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
15876ToBuffer.  Support for 64-bit AML constants is implemented in the
15877AML parser, debugger, and disassembler.
15878
15879The internal memory tracking mechanism (leak detection code) has
15880been upgraded to reduce the memory overhead (a separate tracking
15881block is no longer allocated for each memory allocation), and now
15882supports all of the internal object caches.
15883
15884The data structures and code for the internal object caches have
15885been coelesced and optimized so that there is a single cache and
15886memory list data structure and a single group of functions that
15887implement generic cache management.  This has reduced the code
15888size in both the debug and release versions of the subsystem.
15889
15890The DEBUG_PRINT macro(s) have been optimized for size and replaced
15891by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
15892different, because it generates a single call to an internal
15893function.  This results in a savings of about 90 bytes per
15894invocation, resulting in an overall code and data savings of about
1589516% in the debug version of the subsystem.
15896
15897 Linux:
15898
15899Fixed C3 disk corruption problems and re-enabled C3 on supporting
15900machines.
15901
15902Integrated low-level sleep code by Patrick Mochel.
15903
15904Further tweaked source code Linuxization.
15905
15906Other minor fixes.
15907
15908 ASL Compiler:
15909
15910Support for ACPI 2.0 variable length packages is fixed/completed.
15911
15912Fixed a problem where the optional length parameter for the ACPI
159132.0 ToString operator.
15914
15915Fixed multiple extraneous error messages when a syntax error is
15916detected within the declaration line of a control method.
15917
15918 ----------------------------------------
15919Summary of changes for this label: 07_17_01
15920
15921ACPI CA Core Subsystem:
15922
15923Added a new interface named AcpiGetFirmwareTable to obtain any
15924ACPI table via the ACPI signature.  The interface can be called at
15925any time during kernel initialization, even before the kernel
15926virtual memory manager is initialized and paging is enabled.  This
15927allows kernel subsystems to obtain ACPI tables very early, even
15928before the ACPI CA subsystem is initialized.
15929
15930Fixed a problem where Fields defined with the AnyAcc attribute
15931could be resolved to the incorrect address under the following
15932conditions: 1) the field width is larger than 8 bits and 2) the
15933parent operation region is not defined on a DWORD boundary.
15934
15935Fixed a problem where the interpreter is not being locked during
15936namespace initialization (during execution of the _INI control
15937methods), causing an error when an attempt is made to release it
15938later.
15939
15940ACPI 2.0 support in the AML Interpreter has begun and will be
15941ongoing throughout the rest of this year.  In this label, The Mod
15942operator is implemented.
15943
15944Added a new data type to contain full PCI addresses named
15945ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
15946and Function values.
15947
15948 Linux:
15949
15950Enhanced the Linux version of the source code to change most
15951capitalized ACPI type names to lowercase. For example, all
15952instances of ACPI_STATUS are changed to acpi_status.  This will
15953result in a large diff, but the change is strictly cosmetic and
15954aligns the CA code closer to the Linux coding standard.
15955
15956OSL Interfaces:
15957
15958The interfaces to the PCI configuration space have been changed to
15959add the PCI Segment number and to split the single 32-bit combined
15960DeviceFunction field into two 16-bit fields.  This was
15961accomplished by moving the four values that define an address in
15962PCI configuration space (segment, bus, device, and function) to
15963the new ACPI_PCI_ID structure.
15964
15965The changes to the PCI configuration space interfaces led to a
15966reexamination of the complete set of address space access
15967interfaces for PCI, I/O, and Memory.  The previously existing 18
15968interfaces have proven difficult to maintain (any small change
15969must be propagated across at least 6 interfaces) and do not easily
15970allow for future expansion to 64 bits if necessary.  Also, on some
15971systems, it would not be appropriate to demultiplex the access
15972width (8, 16, 32,or 64) before calling the OSL if the
15973corresponding native OS interfaces contain a similar access width
15974parameter.  For these reasons, the 18 address space interfaces
15975have been replaced by these 6 new ones:
15976
15977AcpiOsReadPciConfiguration
15978AcpiOsWritePciConfiguration
15979AcpiOsReadMemory
15980AcpiOsWriteMemory
15981AcpiOsReadPort
15982AcpiOsWritePort
15983
15984Added a new interface named AcpiOsGetRootPointer to allow the OSL
15985to perform the platform and/or OS-specific actions necessary to
15986obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
15987interface will simply call down to the CA core to perform the low-
15988memory search for the table.  On IA-64, the RSDP is obtained from
15989EFI.  Migrating this interface to the OSL allows the CA core to
15990
15991remain OS and platform independent.
15992
15993Added a new interface named AcpiOsSignal to provide a generic
15994"function code and pointer" interface for various miscellaneous
15995signals and notifications that must be made to the host OS.   The
15996first such signals are intended to support the ASL Fatal and
15997Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
15998interface has been obsoleted.
15999
16000The definition of the AcpiFormatException interface has been
16001changed to simplify its use.  The caller no longer must supply a
16002buffer to the call; A pointer to a const string is now returned
16003directly.  This allows the call to be easily used in printf
16004statements, etc. since the caller does not have to manage a local
16005buffer.
16006
16007
16008 ASL Compiler, Version X2025:
16009
16010The ACPI 2.0 Switch/Case/Default operators have been implemented
16011and are fully functional.  They will work with all ACPI 1.0
16012interpreters, since the operators are simply translated to If/Else
16013pairs.
16014
16015The ACPI 2.0 ElseIf operator is implemented and will also work
16016with 1.0 interpreters, for the same reason.
16017
16018Implemented support for ACPI 2.0 variable-length packages.  These
16019packages have a separate opcode, and their size is determined by
16020the interpreter at run-time.
16021
16022Documentation The ACPI CA Programmer Reference has been updated to
16023reflect the new interfaces and changes to existing interfaces.
16024
16025 ------------------------------------------
16026Summary of changes for this label: 06_15_01
16027
16028 ACPI CA Core Subsystem:
16029
16030Fixed a problem where a DWORD-accessed field within a Buffer
16031object would get its byte address inadvertently rounded down to
16032the nearest DWORD.  Buffers are always Byte-accessible.
16033
16034 ASL Compiler, version X2024:
16035
16036Fixed a problem where the Switch() operator would either fault or
16037hang the compiler.  Note however, that the AML code for this ACPI
160382.0 operator is not yet implemented.
16039
16040Compiler uses the new AcpiOsGetTimer interface to obtain compile
16041timings.
16042
16043Implementation of the CreateField operator automatically converts
16044a reference to a named field within a resource descriptor from a
16045byte offset to a bit offset if required.
16046
16047Added some missing named fields from the resource descriptor
16048support. These are the names that are automatically created by the
16049compiler to reference fields within a descriptor.  They are only
16050valid at compile time and are not passed through to the AML
16051interpreter.
16052
16053Resource descriptor named fields are now typed as Integers and
16054subject to compile-time typechecking when used in expressions.
16055
16056 ------------------------------------------
16057Summary of changes for this label: 05_18_01
16058
16059 ACPI CA Core Subsystem:
16060
16061Fixed a couple of problems in the Field support code where bits
16062from adjacent fields could be returned along with the proper field
16063bits. Restructured the field support code to improve performance,
16064readability and maintainability.
16065
16066New DEBUG_PRINTP macro automatically inserts the procedure name
16067into the output, saving hundreds of copies of procedure name
16068strings within the source, shrinking the memory footprint of the
16069debug version of the core subsystem.
16070
16071 Source Code Structure:
16072
16073The source code directory tree was restructured to reflect the
16074current organization of the component architecture.  Some files
16075and directories have been moved and/or renamed.
16076
16077 Linux:
16078
16079Fixed leaking kacpidpc processes.
16080
16081Fixed queueing event data even when /proc/acpi/event is not
16082opened.
16083
16084 ASL Compiler, version X2020:
16085
16086Memory allocation performance enhancement - over 24X compile time
16087improvement on large ASL files.  Parse nodes and namestring
16088buffers are now allocated from a large internal compiler buffer.
16089
16090The temporary .SRC file is deleted unless the "-s" option is
16091specified
16092
16093The "-d" debug output option now sends all output to the .DBG file
16094instead of the console.
16095
16096"External" second parameter is now optional
16097
16098"ElseIf" syntax now properly allows the predicate
16099
16100Last operand to "Load" now recognized as a Target operand
16101
16102Debug object can now be used anywhere as a normal object.
16103
16104ResourceTemplate now returns an object of type BUFFER
16105
16106EISAID now returns an object of type INTEGER
16107
16108"Index" now works with a STRING operand
16109
16110"LoadTable" now accepts optional parameters
16111
16112"ToString" length parameter is now optional
16113
16114"Interrupt (ResourceType," parse error fixed.
16115
16116"Register" with a user-defined region space parse error fixed
16117
16118Escaped backslash at the end of a string ("\\") scan/parse error
16119fixed
16120
16121"Revision" is now an object of type INTEGER.
16122
16123
16124
16125------------------------------------------
16126Summary of changes for this label: 05_02_01
16127
16128Linux:
16129
16130/proc/acpi/event now blocks properly.
16131
16132Removed /proc/sys/acpi. You can still dump your DSDT from
16133/proc/acpi/dsdt.
16134
16135 ACPI CA Core Subsystem:
16136
16137Fixed a problem introduced in the previous label where some of the
16138"small" resource descriptor types were not recognized.
16139
16140Improved error messages for the case where an ASL Field is outside
16141the range of the parent operation region.
16142
16143 ASL Compiler, version X2018:
16144
16145
16146Added error detection for ASL Fields that extend beyond the length
16147of the parent operation region (only if the length of the region
16148is known at compile time.)  This includes fields that have a
16149minimum access width that is smaller than the parent region, and
16150individual field units that are partially or entirely beyond the
16151extent of the parent.
16152
16153
16154
16155------------------------------------------
16156Summary of changes for this label: 04_27_01
16157
16158 ACPI CA Core Subsystem:
16159
16160Fixed a problem where the namespace mutex could be released at the
16161wrong time during execution of AcpiRemoveAddressSpaceHandler.
16162
16163Added optional thread ID output for debug traces, to simplify
16164debugging of multiple threads.  Added context switch notification
16165when the debug code realizes that a different thread is now
16166executing ACPI code.
16167
16168Some additional external data types have been prefixed with the
16169string "ACPI_" for consistency.  This may effect existing code.
16170The data types affected are the external callback typedefs - e.g.,
16171
16172WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
16173
16174 Linux:
16175
16176Fixed an issue with the OSL semaphore implementation where a
16177thread was waking up with an error from receiving a SIGCHLD
16178signal.
16179
16180Linux version of ACPI CA now uses the system C library for string
16181manipulation routines instead of a local implementation.
16182
16183Cleaned up comments and removed TBDs.
16184
16185 ASL Compiler, version X2017:
16186
16187Enhanced error detection and reporting for all file I/O
16188operations.
16189
16190 Documentation:
16191
16192Programmer Reference updated to version 1.06.
16193
16194
16195
16196------------------------------------------
16197Summary of changes for this label: 04_13_01
16198
16199 ACPI CA Core Subsystem:
16200
16201Restructured support for BufferFields and RegionFields.
16202BankFields support is now fully operational.  All known 32-bit
16203limitations on field sizes have been removed.  Both BufferFields
16204and (Operation) RegionFields are now supported by the same field
16205management code.
16206
16207Resource support now supports QWORD address and IO resources. The
1620816/32/64 bit address structures and the Extended IRQ structure
16209have been changed to properly handle Source Resource strings.
16210
16211A ThreadId of -1 is now used to indicate a "mutex not acquired"
16212condition internally and must never be returned by AcpiOsThreadId.
16213This reserved value was changed from 0 since Unix systems allow a
16214thread ID of 0.
16215
16216Linux:
16217
16218Driver code reorganized to enhance portability
16219
16220Added a kernel configuration option to control ACPI_DEBUG
16221
16222Fixed the EC driver to honor _GLK.
16223
16224ASL Compiler, version X2016:
16225
16226Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
16227address space was set to 0, not 0x7f as it should be.
16228
16229 ------------------------------------------
16230Summary of changes for this label: 03_13_01
16231
16232 ACPI CA Core Subsystem:
16233
16234During ACPI initialization, the _SB_._INI method is now run if
16235present.
16236
16237Notify handler fix - notifies are deferred until the parent method
16238completes execution.  This fixes the "mutex already acquired"
16239issue seen occasionally.
16240
16241Part of the "implicit conversion" rules in ACPI 2.0 have been
16242found to cause compatibility problems with existing ASL/AML.  The
16243convert "result-to-target-type" implementation has been removed
16244for stores to method Args and Locals.  Source operand conversion
16245is still fully implemented.  Possible changes to ACPI 2.0
16246specification pending.
16247
16248Fix to AcpiRsCalculatePciRoutingTableLength to return correct
16249length.
16250
16251Fix for compiler warnings for 64-bit compiles.
16252
16253 Linux:
16254
16255/proc output aligned for easier parsing.
16256
16257Release-version compile problem fixed.
16258
16259New kernel configuration options documented in Configure.help.
16260
16261IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
16262context" message.
16263
16264 OSPM:
16265
16266Power resource driver integrated with bus manager.
16267
16268Fixed kernel fault during active cooling for thermal zones.
16269
16270Source Code:
16271
16272The source code tree has been restructured.
16273
16274
16275
16276------------------------------------------
16277Summary of changes for this label: 03_02_01
16278
16279 Linux OS Services Layer (OSL):
16280
16281Major revision of all Linux-specific code.
16282
16283Modularized all ACPI-specific drivers.
16284
16285Added new thermal zone and power resource drivers.
16286
16287Revamped /proc interface (new functionality is under /proc/acpi).
16288
16289New kernel configuration options.
16290
16291 Linux known issues:
16292
16293New kernel configuration options not documented in Configure.help
16294yet.
16295
16296
16297Module dependencies not currently implemented. If used, they
16298should be loaded in this order: busmgr, power, ec, system,
16299processor, battery, ac_adapter, button, thermal.
16300
16301Modules will not load if CONFIG_MODVERSION is set.
16302
16303IBM 600E - entering S5 may reboot instead of shutting down.
16304
16305IBM 600E - Sleep button may generate "Invalid <NULL> context"
16306message.
16307
16308Some systems may fail with "execution mutex already acquired"
16309message.
16310
16311 ACPI CA Core Subsystem:
16312
16313Added a new OSL Interface, AcpiOsGetThreadId.  This was required
16314for the  deadlock detection code. Defined to return a non-zero, 32-
16315bit thread ID for the currently executing thread.  May be a non-
16316zero constant integer on single-thread systems.
16317
16318Implemented deadlock detection for internal subsystem mutexes.  We
16319may add conditional compilation for this code (debug only) later.
16320
16321ASL/AML Mutex object semantics are now fully supported.  This
16322includes multiple acquires/releases by owner and support for the
16323
16324Mutex SyncLevel parameter.
16325
16326A new "Force Release" mechanism automatically frees all ASL
16327Mutexes that have been acquired but not released when a thread
16328exits the interpreter.  This forces conformance to the ACPI spec
16329("All mutexes must be released when an invocation exits") and
16330prevents deadlocked ASL threads.  This mechanism can be expanded
16331(later) to monitor other resource acquisitions if OEM ASL code
16332continues to misbehave (which it will).
16333
16334Several new ACPI exception codes have been added for the Mutex
16335support.
16336
16337Recursive method calls are now allowed and supported (the ACPI
16338spec does in fact allow recursive method calls.)  The number of
16339recursive calls is subject to the restrictions imposed by the
16340SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
16341parameter.
16342
16343Implemented support for the SyncLevel parameter for control
16344methods (ACPI 2.0 feature)
16345
16346Fixed a deadlock problem when multiple threads attempted to use
16347the interpreter.
16348
16349Fixed a problem where the string length of a String package
16350element was not always set in a package returned from
16351AcpiEvaluateObject.
16352
16353Fixed a problem where the length of a String package element was
16354not always included in the length of the overall package returned
16355from AcpiEvaluateObject.
16356
16357Added external interfaces (Acpi*) to the ACPI debug memory
16358manager.  This manager keeps a list of all outstanding
16359allocations, and can therefore detect memory leaks and attempts to
16360free memory blocks more than once. Useful for code such as the
16361power manager, etc.  May not be appropriate for device drivers.
16362Performance with the debug code enabled is slow.
16363
16364The ACPI Global Lock is now an optional hardware element.
16365
16366 ASL Compiler Version X2015:
16367
16368Integrated changes to allow the compiler to be generated on
16369multiple platforms.
16370
16371Linux makefile added to generate the compiler on Linux
16372
16373 Source Code:
16374
16375All platform-specific headers have been moved to their own
16376subdirectory, Include/Platform.
16377
16378New source file added, Interpreter/ammutex.c
16379
16380New header file, Include/acstruct.h
16381
16382 Documentation:
16383
16384The programmer reference has been updated for the following new
16385interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
16386
16387 ------------------------------------------
16388Summary of changes for this label: 02_08_01
16389
16390Core ACPI CA Subsystem: Fixed a problem where an error was
16391incorrectly returned if the return resource buffer was larger than
16392the actual data (in the resource interfaces).
16393
16394References to named objects within packages are resolved to the
16395
16396full pathname string before packages are returned directly (via
16397the AcpiEvaluateObject interface) or indirectly via the resource
16398interfaces.
16399
16400Linux OS Services Layer (OSL):
16401
16402Improved /proc battery interface.
16403
16404
16405Added C-state debugging output and other miscellaneous fixes.
16406
16407ASL Compiler Version X2014:
16408
16409All defined method arguments can now be used as local variables,
16410including the ones that are not actually passed in as parameters.
16411The compiler tracks initialization of the arguments and issues an
16412exception if they are used without prior assignment (just like
16413locals).
16414
16415The -o option now specifies a filename prefix that is used for all
16416output files, including the AML output file.  Otherwise, the
16417default behavior is as follows:  1) the AML goes to the file
16418specified in the DSDT.  2) all other output files use the input
16419source filename as the base.
16420
16421 ------------------------------------------
16422Summary of changes for this label: 01_25_01
16423
16424Core ACPI CA Subsystem: Restructured the implementation of object
16425store support within the  interpreter.  This includes support for
16426the Store operator as well  as any ASL operators that include a
16427target operand.
16428
16429Partially implemented support for Implicit Result-to-Target
16430conversion. This is when a result object is converted on the fly
16431to the type of  an existing target object.  Completion of this
16432support is pending  further analysis of the ACPI specification
16433concerning this matter.
16434
16435CPU-specific code has been removed from the subsystem (hardware
16436directory).
16437
16438New Power Management Timer functions added
16439
16440Linux OS Services Layer (OSL): Moved system state transition code
16441to the core, fixed it, and modified  Linux OSL accordingly.
16442
16443Fixed C2 and C3 latency calculations.
16444
16445
16446We no longer use the compilation date for the version message on
16447initialization, but retrieve the version from AcpiGetSystemInfo().
16448
16449Incorporated for fix Sony VAIO machines.
16450
16451Documentation:  The Programmer Reference has been updated and
16452reformatted.
16453
16454
16455ASL Compiler:  Version X2013: Fixed a problem where the line
16456numbering and error reporting could get out  of sync in the
16457presence of multiple include files.
16458
16459 ------------------------------------------
16460Summary of changes for this label: 01_15_01
16461
16462Core ACPI CA Subsystem:
16463
16464Implemented support for type conversions in the execution of the
16465ASL  Concatenate operator (The second operand is converted to
16466match the type  of the first operand before concatenation.)
16467
16468Support for implicit source operand conversion is partially
16469implemented.   The ASL source operand types Integer, Buffer, and
16470String are freely  interchangeable for most ASL operators and are
16471converted by the interpreter  on the fly as required.  Implicit
16472Target operand conversion (where the  result is converted to the
16473target type before storing) is not yet implemented.
16474
16475Support for 32-bit and 64-bit BCD integers is implemented.
16476
16477Problem fixed where a field read on an aligned field could cause a
16478read  past the end of the field.
16479
16480New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
16481does not return a value, but the caller expects one.  (The ASL
16482compiler flags this as a warning.)
16483
16484ASL Compiler:
16485
16486Version X2011:
164871. Static typechecking of all operands is implemented. This
16488prevents the use of invalid objects (such as using a Package where
16489an Integer is required) at compile time instead of at interpreter
16490run-time.
164912. The ASL source line is printed with ALL errors and warnings.
164923. Bug fix for source EOF without final linefeed.
164934. Debug option is split into a parse trace and a namespace trace.
164945. Namespace output option (-n) includes initial values for
16495integers and strings.
164966. Parse-only option added for quick syntax checking.
164977. Compiler checks for duplicate ACPI name declarations
16498
16499Version X2012:
165001. Relaxed typechecking to allow interchangeability between
16501strings, integers, and buffers.  These types are now converted by
16502the interpreter at runtime.
165032. Compiler reports time taken by each internal subsystem in the
16504debug         output file.
16505
16506
16507 ------------------------------------------
16508Summary of changes for this label: 12_14_00
16509
16510ASL Compiler:
16511
16512This is the first official release of the compiler. Since the
16513compiler requires elements of the Core Subsystem, this label
16514synchronizes everything.
16515
16516------------------------------------------
16517Summary of changes for this label: 12_08_00
16518
16519
16520Fixed a problem where named references within the ASL definition
16521of both OperationRegions and CreateXXXFields did not work
16522properly.  The symptom was an AE_AML_OPERAND_TYPE during
16523initialization of the region/field. This is similar (but not
16524related internally) to the problem that was fixed in the last
16525label.
16526
16527Implemented both 32-bit and 64-bit support for the BCD ASL
16528functions ToBCD and FromBCD.
16529
16530Updated all legal headers to include "2000" in the copyright
16531years.
16532
16533 ------------------------------------------
16534Summary of changes for this label: 12_01_00
16535
16536Fixed a problem where method invocations within the ASL definition
16537of both OperationRegions and CreateXXXFields did not work
16538properly.  The symptom was an AE_AML_OPERAND_TYPE during
16539initialization of the region/field:
16540
16541  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
16542[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
16543(0x3005)
16544
16545Fixed a problem where operators with more than one nested
16546subexpression would fail.  The symptoms were varied, by mostly
16547AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
16548problem that has gone unnoticed until now.
16549
16550  Subtract (Add (1,2), Multiply (3,4))
16551
16552Fixed a problem where AcpiGetHandle didn't quite get fixed in the
16553previous build (The prefix part of a relative path was handled
16554incorrectly).
16555
16556Fixed a problem where Operation Region initialization failed if
16557the operation region name was a "namepath" instead of a simple
16558"nameseg". Symptom was an AE_NO_OPERAND error.
16559
16560Fixed a problem where an assignment to a local variable via the
16561indirect RefOf mechanism only worked for the first such
16562assignment.  Subsequent assignments were ignored.
16563
16564 ------------------------------------------
16565Summary of changes for this label: 11_15_00
16566
16567ACPI 2.0 table support with backwards support for ACPI 1.0 and the
165680.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
16569the AML  interpreter does NOT have support for the new 2.0 ASL
16570grammar terms at this time.
16571
16572All ACPI hardware access is via the GAS structures in the ACPI 2.0
16573FADT.
16574
16575All physical memory addresses across all platforms are now 64 bits
16576wide. Logical address width remains dependent on the platform
16577(i.e., "void *").
16578
16579AcpiOsMapMemory interface changed to a 64-bit physical address.
16580
16581The AML interpreter integer size is now 64 bits, as per the ACPI
165822.0 specification.
16583
16584For backwards compatibility with ACPI 1.0, ACPI tables with a
16585revision number less than 2 use 32-bit integers only.
16586
16587Fixed a problem where the evaluation of OpRegion operands did not
16588always resolve them to numbers properly.
16589
16590------------------------------------------
16591Summary of changes for this label: 10_20_00
16592
16593Fix for CBN_._STA issue.  This fix will allow correct access to
16594CBN_ OpRegions when the _STA returns 0x8.
16595
16596Support to convert ACPI constants (Ones, Zeros, One) to actual
16597values before a package object is returned
16598
16599Fix for method call as predicate to if/while construct causing
16600incorrect if/while behavior
16601
16602Fix for Else block package lengths sometimes calculated wrong (if
16603block > 63 bytes)
16604
16605Fix for Processor object length field, was always zero
16606
16607Table load abort if FACP sanity check fails
16608
16609Fix for problem with Scope(name) if name already exists
16610
16611Warning emitted if a named object referenced cannot be found
16612(resolved) during method execution.
16613
16614
16615
16616
16617
16618------------------------------------------
16619Summary of changes for this label: 9_29_00
16620
16621New table initialization interfaces: AcpiInitializeSubsystem no
16622longer has any parameters AcpiFindRootPointer - Find the RSDP (if
16623necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
16624>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
16625AcpiLoadTables
16626
16627Note: These interface changes require changes to all existing OSDs
16628
16629The PCI_Config default address space handler is always installed
16630at the root namespace object.
16631
16632-------------------------------------------
16633Summary of changes for this label: 09_15_00
16634
16635The new initialization architecture is implemented.  New
16636interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
16637AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
16638
16639(Namespace is automatically loaded when a table is loaded)
16640
16641The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1664252 bytes to 32 bytes.  There is usually one of these for every
16643namespace object, so the memory savings is significant.
16644
16645Implemented just-in-time evaluation of the CreateField operators.
16646
16647Bug fixes for IA-64 support have been integrated.
16648
16649Additional code review comments have been implemented
16650
16651The so-called "third pass parse" has been replaced by a final walk
16652through the namespace to initialize all operation regions (address
16653spaces) and fields that have not yet been initialized during the
16654execution of the various _INI and REG methods.
16655
16656New file - namespace/nsinit.c
16657
16658-------------------------------------------
16659Summary of changes for this label: 09_01_00
16660
16661Namespace manager data structures have been reworked to change the
16662primary  object from a table to a single object.  This has
16663resulted in dynamic memory  savings of 3X within the namespace and
166642X overall in the ACPI CA subsystem.
16665
16666Fixed problem where the call to AcpiEvFindPciRootBuses was
16667inadvertently left  commented out.
16668
16669Reduced the warning count when generating the source with the GCC
16670compiler.
16671
16672Revision numbers added to each module header showing the
16673SourceSafe version of the file.  Please refer to this version
16674number when giving us feedback or comments on individual modules.
16675
16676The main object types within the subsystem have been renamed to
16677clarify their  purpose:
16678
16679ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
16680ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
16681ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
16682
16683NOTE: no changes to the initialization sequence are included in
16684this label.
16685
16686-------------------------------------------
16687Summary of changes for this label: 08_23_00
16688
16689Fixed problem where TerminateControlMethod was being called
16690multiple times per  method
16691
16692Fixed debugger problem where single stepping caused a semaphore to
16693be  oversignalled
16694
16695Improved performance through additional parse object caching -
16696added  ACPI_EXTENDED_OP type
16697
16698-------------------------------------------
16699Summary of changes for this label: 08_10_00
16700
16701Parser/Interpreter integration:  Eliminated the creation of
16702complete parse trees  for ACPI tables and control methods.
16703Instead, parse subtrees are created and  then deleted as soon as
16704they are processed (Either entered into the namespace or  executed
16705by the interpreter).  This reduces the use of dynamic kernel
16706memory  significantly. (about 10X)
16707
16708Exception codes broken into classes and renumbered.  Be sure to
16709recompile all  code that includes acexcep.h.  Hopefully we won't
16710have to renumber the codes  again now that they are split into
16711classes (environment, programmer, AML code,  ACPI table, and
16712internal).
16713
16714Fixed some additional alignment issues in the Resource Manager
16715subcomponent
16716
16717Implemented semaphore tracking in the AcpiExec utility, and fixed
16718several places  where mutexes/semaphores were being unlocked
16719without a corresponding lock  operation.  There are no known
16720semaphore or mutex "leaks" at this time.
16721
16722Fixed the case where an ASL Return operator is used to return an
16723unnamed  package.
16724
16725-------------------------------------------
16726Summary of changes for this label: 07_28_00
16727
16728Fixed a problem with the way addresses were calculated in
16729AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
16730manifested itself when a Field was  created with WordAccess or
16731DwordAccess, but the field unit defined within the  Field was less
16732
16733than a Word or Dword.
16734
16735Fixed a problem in AmlDumpOperands() module's loop to pull
16736operands off of the  operand stack to display information. The
16737problem manifested itself as a TLB  error on 64-bit systems when
16738accessing an operand stack with two or more  operands.
16739
16740Fixed a problem with the PCI configuration space handlers where
16741context was  getting confused between accesses. This required a
16742change to the generic address  space handler and address space
16743setup definitions. Handlers now get both a  global handler context
16744(this is the one passed in by the user when executing
16745AcpiInstallAddressSpaceHandler() and a specific region context
16746that is unique to  each region (For example, the _ADR, _SEG and
16747_BBN values associated with a  specific region). The generic
16748function definitions have changed to the  following:
16749
16750typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
16751UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
16752*HandlerContext, // This used to be void *Context void
16753*RegionContext); // This is an additional parameter
16754
16755typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
16756RegionHandle, UINT32 Function, void *HandlerContext,  void
16757**RegionContext); // This used to be **ReturnContext
16758
16759-------------------------------------------
16760Summary of changes for this label: 07_21_00
16761
16762Major file consolidation and rename.  All files within the
16763interpreter have been  renamed as well as most header files.  This
16764was done to prevent collisions with  existing files in the host
16765OSs -- filenames such as "config.h" and "global.h"  seem to be
16766quite common.  The VC project files have been updated.  All
16767makefiles  will require modification.
16768
16769The parser/interpreter integration continues in Phase 5 with the
16770implementation  of a complete 2-pass parse (the AML is parsed
16771twice) for each table;  This  avoids the construction of a huge
16772parse tree and therefore reduces the amount of  dynamic memory
16773required by the subsystem.  Greater use of the parse object cache
16774means that performance is unaffected.
16775
16776Many comments from the two code reviews have been rolled in.
16777
16778The 64-bit alignment support is complete.
16779
16780-------------------------------------------
16781Summary of changes for this label: 06_30_00
16782
16783With a nod and a tip of the hat to the technology of yesteryear,
16784we've added  support in the source code for 80 column output
16785devices.  The code is now mostly  constrained to 80 columns or
16786less to support environments and editors that 1)  cannot display
16787or print more than 80 characters on a single line, and 2) cannot
16788disable line wrapping.
16789
16790A major restructuring of the namespace data structure has been
16791completed.  The  result is 1) cleaner and more
16792understandable/maintainable code, and 2) a  significant reduction
16793in the dynamic memory requirement for each named ACPI  object
16794(almost half).
16795
16796-------------------------------------------
16797Summary of changes for this label: 06_23_00
16798
16799Linux support has been added.  In order to obtain approval to get
16800the ACPI CA  subsystem into the Linux kernel, we've had to make
16801quite a few changes to the  base subsystem that will affect all
16802users (all the changes are generic and OS- independent).  The
16803effects of these global changes have been somewhat far  reaching.
16804Files have been merged and/or renamed and interfaces have been
16805renamed.   The major changes are described below.
16806
16807Osd* interfaces renamed to AcpiOs* to eliminate namespace
16808pollution/confusion  within our target kernels.  All OSD
16809interfaces must be modified to match the new  naming convention.
16810
16811Files merged across the subsystem.  A number of the smaller source
16812and header  files have been merged to reduce the file count and
16813increase the density of the  existing files.  There are too many
16814to list here.  In general, makefiles that  call out individual
16815files will require rebuilding.
16816
16817Interpreter files renamed.  All interpreter files now have the
16818prefix am*  instead of ie* and is*.
16819
16820Header files renamed:  The acapi.h file is now acpixf.h.  The
16821acpiosd.h file is  now acpiosxf.h.  We are removing references to
16822the acronym "API" since it is  somewhat windowsy. The new name is
16823"external interface" or xface or xf in the  filenames.j
16824
16825
16826All manifest constants have been forced to upper case (some were
16827mixed case.)   Also, the string "ACPI_" has been prepended to many
16828(not all) of the constants,  typedefs, and structs.
16829
16830The globals "DebugLevel" and "DebugLayer" have been renamed
16831"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
16832
16833All other globals within the subsystem are now prefixed with
16834"AcpiGbl_" Internal procedures within the subsystem are now
16835prefixed with "Acpi" (with only  a few exceptions).  The original
16836two-letter abbreviation for the subcomponent  remains after "Acpi"
16837- for example, CmCallocate became AcpiCmCallocate.
16838
16839Added a source code translation/conversion utility.  Used to
16840generate the Linux  source code, it can be modified to generate
16841other types of source as well. Can  also be used to cleanup
16842existing source by removing extraneous spaces and blank  lines.
16843Found in tools/acpisrc/*
16844
16845OsdUnMapMemory was renamed to OsdUnmapMemory and then
16846AcpiOsUnmapMemory.  (UnMap  became Unmap).
16847
16848A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
16849When set to  one, this indicates that the caller wants to use the
16850
16851semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
16852both types.  However, implementers of this  call may want to use
16853different OS primitives depending on the type of semaphore
16854requested.  For example, some operating systems provide separate
16855
16856"mutex" and  "semaphore" interfaces - where the mutex interface is
16857much faster because it  doesn't have all the overhead of a full
16858semaphore implementation.
16859
16860Fixed a deadlock problem where a method that accesses the PCI
16861address space can  block forever if it is the first access to the
16862space.
16863
16864-------------------------------------------
16865Summary of changes for this label: 06_02_00
16866
16867Support for environments that cannot handle unaligned data
16868accesses (e.g.  firmware and OS environments devoid of alignment
16869handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
16870been added (via configurable macros) in  these three areas: -
16871Transfer of data from the raw AML byte stream is done via byte
16872moves instead of    word/dword/qword moves. - External objects are
16873aligned within the user buffer, including package   elements (sub-
16874objects). - Conversion of name strings to UINT32 Acpi Names is now
16875done byte-wise.
16876
16877The Store operator was modified to mimic Microsoft's
16878implementation when storing  to a Buffer Field.
16879
16880Added a check of the BM_STS bit before entering C3.
16881
16882The methods subdirectory has been obsoleted and removed.  A new
16883file, cmeval.c  subsumes the functionality.
16884
16885A 16-bit (DOS) version of AcpiExec has been developed.  The
16886makefile is under  the acpiexec directory.
16887