xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision cb740add)
1----------------------------------------
219 January 2017. Summary of changes for version 20170119:
3
4This release is available at https://acpica.org/downloads
5
61) General ACPICA software:
7
8Entire source code base: Added the 2017 copyright to all source code
9legal/licensing module headers and utility/tool signons. This includes
10the standard Linux dual-license header. This affects virtually every file
11in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
12the ACPICA test suite.
13
14
152) iASL Compiler/Disassembler and Tools:
16
17iASL: Removed/fixed an inadvertent remark when a method argument
18containing a reference is used as a target operand within the method (and
19never used as a simple argument), as in the example below. Jeffrey Hugo.
20
21    dsdt.asl   1507:    Store(0x1, Arg0)
22    Remark   2146 -                ^ Method Argument is never used (Arg0)
23
24All tools: Removed the bit width of the compiler that generated the tool
25from the common signon for all user space tools. This proved to be
26confusing and unnecessary. This includes similar removal of HARDWARE_NAME
27from the generic makefiles (Thomas Petazzoni). Example below.
28
29    Old:
30    ASL+ Optimizing Compiler version 20170119-32
31    ASL+ Optimizing Compiler version 20170119-64
32
33    New:
34    ASL+ Optimizing Compiler version 20170119
35
36----------------------------------------
3722 December 2016. Summary of changes for version 20161222:
38
39
401) ACPICA kernel-resident subsystem:
41
42AML Debugger: Implemented a new mechanism to simplify and enhance
43debugger integration into all environments, including kernel debuggers
44and user-space utilities, as well as remote debug services. This
45mechanism essentially consists of new OSL interfaces to support debugger
46initialization/termination, as well as wait/notify interfaces to perform
47the debugger handshake with the host. Lv Zheng.
48
49    New OSL interfaces:
50        AcpiOsInitializeDebugger (void)
51        AcpiOsTerminateDebugger (void)
52        AcpiOsWaitCommandReady (void)
53        AcpiOsNotifyCommandComplete (void)
54
55    New OS services layer:
56        osgendbg.c -- Example implementation, and used for AcpiExec
57
58Update for Generic Address Space (GAS) support: Although the AccessWidth
59and/or BitOffset fields of the GAS are not often used, this change now
60fully supports these fields. This affects the internal support for FADT
61registers, registers in other ACPI data tables, and the AcpiRead and
62AcpiWrite public interfaces. Lv Zheng.
63
64Sleep support: In order to simplify integration of ACPI sleep for the
65various host operating systems, a new OSL interface has been introduced.
66AcpiOsEnterSleep allows the host to perform any required operations
67before the final write to the sleep control register(s) is performed by
68ACPICA. Lv Zheng.
69
70    New OSL interface:
71        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
72
73    Called from these internal interfaces:
74        AcpiHwLegacySleep
75        AcpiHwExtendedSleep
76
77EFI support: Added a very small EFI/ACPICA example application. Provides
78a simple demo for EFI integration, as well as assisting with resolution
79of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
80
81    source/tools/efihello/efihello.c
82
83Local C library: Implemented several new functions to enhance ACPICA
84portability, for environments where these clib functions are not
85available (such as EFI). Lv Zheng:
86    putchar
87    getchar
88    strpbrk
89    strtok
90    memmove
91
92Fixed a regression where occasionally a valid resource descriptor was
93incorrectly detected as invalid at runtime, and a
94AE_AML_NO_RESOURCE_END_TAG was returned.
95
96Fixed a problem with the recently implemented support that enables
97control method invocations as Target operands to many ASL operators.
98Warnings of this form: "Needed type [Reference], found [Processor]" were
99seen at runtime for some method invocations.
100
101Example Code and Data Size: These are the sizes for the OS-independent
102acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
103debug version of the code includes the debug output trace mechanism and
104has a much larger code and data size.
105
106  Current Release:
107    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
108    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
109  Previous Release:
110    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
111    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
112
113
1142) iASL Compiler/Disassembler and Tools:
115
116Disassembler: Enhanced output by adding the capability to detect and
117disassemble ASL Switch/Case statements back to the original ASL source
118code instead of if/else blocks. David Box.
119
120AcpiHelp: Split a large file into separate files based upon
121functionality/purpose. New files are:
122    ahaml.c
123    ahasl.c
124
125----------------------------------------
12617 November 2016. Summary of changes for version 20161117:
127
128
1291) ACPICA kernel-resident subsystem:
130
131Table Manager: Fixed a regression introduced in 20160729, "FADT support
132cleanup". This was an attempt to remove all references in the source to
133the FADT version 2, which never was a legal version number. It was
134skipped because it was an early version of 64-bit support that was
135eventually abandoned for the current 64-bit support.
136
137Interpreter: Fixed a problem where runtime implicit conversion was
138incorrectly disabled for the ASL operators below. This brings the
139behavior into compliance with the ACPI specification:
140    FromBCD
141    ToBCD
142    ToDecimalString
143    ToHexString
144    ToInteger
145    ToBuffer
146
147Table Manager: Added a new public interface, AcpiPutTable, used to
148release and free an ACPI table returned by AcpiGetTable and related
149interfaces. Lv Zheng.
150
151Example Code and Data Size: These are the sizes for the OS-independent
152acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
153debug version of the code includes the debug output trace mechanism and
154has a much larger code and data size.
155
156  Current Release:
157    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
158    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
159  Previous Release:
160    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
161    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
162
163
1642) iASL Compiler/Disassembler and Tools:
165
166Disassembler: Fixed a regression for disassembly of Resource Template.
167Detection of templates in the AML stream missed some types of templates.
168
169iASL: Fixed a problem where an Access Size error was returned for the PCC
170address space when the AccessSize of the GAS register is greater than a
171DWORD. Hoan Tran.
172
173iASL: Implemented several grammar changes for the operators below. These
174changes are slated for the next version of the ACPI specification:
175    RefOf        - Disallow method invocation as an operand
176    CondRefOf    - Disallow method invocation as an operand
177    DerefOf      - Disallow operands that use the result from operators
178that
179                   do not return a reference (Changed TermArg to
180SuperName).
181
182iASL: Control method invocations are now allowed for Target operands, as
183per the ACPI specification. Removed error for using a control method
184invocation as a Target operand.
185
186Disassembler: Improved detection of Resource Templates, Unicode, and
187Strings within Buffer objects. These subtypes do not contain a specific
188opcode to indicate the originating ASL code, and they must be detected by
189other means within the disassembler.
190
191iASL: Implemented an optimization improvement for 32-bit ACPI tables
192(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
193only after 64-bit to 32-bit truncation. A truncation warning message is
194still emitted, however.
195
196AcpiXtract: Implemented handling for both types of line terminators (LF
197or CR/LF) so that it can accept AcpiDump output files from any system.
198Peter Wu.
199
200AcpiBin: Added two new options for comparing AML files:
201    -a: compare and display ALL mismatches
202    -o: start compare at this offset into the second file
203
204----------------------------------------
20530 September 2016. Summary of changes for version 20160930:
206
207
2081) ACPICA kernel-resident subsystem:
209
210Fixed a regression in the internal AcpiTbFindTable function where a non
211AE_OK exception could inadvertently be returned even if the function did
212not fail. This problem affects the following operators:
213    DataTableRegion
214    LoadTable
215
216Fixed a regression in the LoadTable operator where a load to any
217namespace location other than the root no longer worked properly.
218
219Increased the maximum loop count value that will result in the
220AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
221prevent infinite loops within the AML interpreter and thus the host OS
222kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
2231,048,575).
224
225Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
226acpixf.h file. This allows hosts to easily configure the maximum loop
227count at runtime.
228
229Removed an illegal character in the strtoul64.c file. This character
230caused errors with some C compilers.
231
232Example Code and Data Size: These are the sizes for the OS-independent
233acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
234debug version of the code includes the debug output trace mechanism and
235has a much larger code and data size.
236
237  Current Release:
238    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
239    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
240  Previous Release:
241    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
242    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
243
244
2452) iASL Compiler/Disassembler and Tools:
246
247Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
248the simpler ASL ElseIf keyword. During the conversion, a trailing If
249block could be lost and missing from the disassembled output.
250
251iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
252the missing rule caused a parse error when using the Index operator as an
253operand to ObjectType. This construct now compiles properly. Example:
254    ObjectType(PKG1[4]).
255
256iASL: Correctly handle unresolved symbols in the hardware map file (-lm
257option). Previously, unresolved symbols could cause a protection fault.
258Such symbols are now marked as unresolved in the map file.
259
260iASL: Implemented support to allow control method invocations as an
261operand to the ASL DeRefOf operator. Example:
262    DeRefOf(MTH1(Local0))
263
264Disassembler: Improved support for the ToPLD ASL macro. Detection of a
265possible _PLD buffer now includes examination of both the normal buffer
266length (16 or 20) as well as the surrounding AML package length.
267
268Disassembler: Fixed a problem with the decoding of complex expressions
269within the Divide operator for ASL+. For the case where both the quotient
270and remainder targets are specified, the entire statement cannot be
271disassembled. Previously, the output incorrectly contained a mix of ASL-
272and ASL+ operators. This mixed statement causes a syntax error when
273compiled. Example:
274    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
275disassembled to:
276    Divide (INT1 + 6, 128, RSLT, QUOT)
277
278iASL/Tools: Added support to process AML and non-AML ACPI tables
279consistently. For the disassembler and AcpiExec, allow all types of ACPI
280tables (AML and data tables). For the iASL -e option, allow only AML
281tables (DSDT/SSDT).
282
283----------------------------------------
28431 August 2016. Summary of changes for version 20160831:
285
286
2871) ACPICA kernel-resident subsystem:
288
289Improve support for the so-called "module-level code", which is defined
290to be math, logical and control AML opcodes that appear outside of any
291control method. This change improves the support by adding more opcodes
292that can be executed in the manner. Some other issues have been solved,
293and the ASL grammar changes to support such code under all scope
294operators (Device, etc.) are complete. Lv Zheng.
295
296UEFI support: these OSL functions have been implemented. This is an
297additional step toward supporting the AcpiExec utility natively (with
298full hardware access) under UEFI. Marcelo Ferreira.
299    AcpiOsReadPciConfiguration
300    AcpiOsWritePciConfiguration
301
302Fixed a possible mutex error during control method auto-serialization. Lv
303Zheng.
304
305Updated support for the Generic Address Structure by fully implementing
306all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
307Zheng.
308
309Updated the return value for the internal _OSI method. Instead of
3100xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
311for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
312implementations, and will be reflected and clarified in the next version
313of the ACPI specification.
314
315Implemented two new table events that can be passed to an ACPICA table
316handler. These events are used to indicate a table installation or
317uninstallation. These events are used in addition to existed table load
318and unload events. Lv Zheng.
319
320Implemented a cleanup for all internal string-to-integer conversions.
321Consolidate multiple versions of this functionality and limit possible
322bases to either 10 or 16 to simplify the code. Adds a new file,
323utstrtoul64.
324
325Cleanup the inclusion order of the various compiler-specific headers.
326This simplifies build configuration management. The compiler-specific
327headers are now split out from the host-specific headers. Lv Zheng.
328
329Example Code and Data Size: These are the sizes for the OS-independent
330acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
331debug version of the code includes the debug output trace mechanism and
332has a much larger code and data size.
333
334  Current Release:
335    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
336    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
337
338
3392) iASL Compiler/Disassembler and Tools:
340
341iASL/AcpiExec: Added a command line option to display the build date/time
342of the tool (-vd). This can be useful to verify that the correct version
343of the tools are being used.
344
345AML Debugger: Implemented a new subcommand ("execute predef") to execute
346all predefined control methods and names within the current namespace.
347This can be useful for debugging problems with ACPI tables and the ACPI
348namespace.
349
350----------------------------------------
35129 July 2016. Summary of changes for version 20160729:
352
353
3541) ACPICA kernel-resident subsystem:
355
356Implemented basic UEFI support for the various ACPICA tools. This
357includes:
3581) An OSL to implement the various AcpiOs* interfaces on UEFI.
3592) Support to obtain the ACPI tables on UEFI.
3603) Local implementation of required C library functions not available on
361UEFI.
3624) A front-end (main) function for the tools for UEFI-related
363initialization.
364
365The initial deployment of this support is the AcpiDump utility executing
366as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
367Current environments supported are Linux/Unix. MSVC generation is not
368supported at this time. See the generate/efi/README file for build
369instructions. Lv Zheng.
370
371Future plans include porting the AcpiExec utility to execute natively on
372the platform with I/O and memory access. This will allow viewing/dump of
373the platform namespace and native execution of ACPI control methods that
374access the actual hardware. To fully implement this support, the OSL
375functions below must be implemented with UEFI interfaces. Any community
376help in the implementation of these functions would be appreciated:
377    AcpiOsReadPort
378    AcpiOsWritePort
379    AcpiOsReadMemory
380    AcpiOsWriteMemory
381    AcpiOsReadPciConfiguration
382    AcpiOsWritePciConfiguration
383
384Restructured and standardized the C library configuration for ACPICA,
385resulting in the various configuration options below. This includes a
386global restructuring of the compiler-dependent and platform-dependent
387include files. These changes may affect the existing platform-dependent
388configuration files on some hosts. Lv Zheng.
389
390The current C library configuration options appear below. For any issues,
391it may be helpful to examine the existing compiler-dependent and
392platform-dependent files as examples. Lv Zheng.
393
3941) Linux kernel:
395    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
396library.
397    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
3982) Unix/Windows/BSD applications:
399    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
400library.
401    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
4023) UEFI applications:
403    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
404library.
405    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
4064) UEFI applications (EDK2/StdLib):
407    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
408    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
409
410
411AML interpreter: "module-level code" support. Allows for execution of so-
412called "executable" AML code (math/logical operations, etc.) outside of
413control methods not just at the module level (top level) but also within
414any scope declared outside of a control method - Scope{}, Device{},
415Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
416
417Simplified the configuration of the "maximum AML loops" global option by
418adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
419modified at runtime.
420
421
422Example Code and Data Size: These are the sizes for the OS-independent
423acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
424debug version of the code includes the debug output trace mechanism and
425has a much larger code and data size.
426
427  Current Release:
428    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
429    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
430
431
4322) iASL Compiler/Disassembler and Tools:
433
434iASL: Add full support for the RASF ACPI table (RAS Features Table).
435Includes disassembler, data table compiler, and header support.
436
437iASL Expand "module-level code" support. Allows for
438compilation/disassembly of so-called "executable" AML code (math/logical
439operations, etc.) outside of control methods not just at the module level
440(top level) but also within any scope declared outside of a control
441method - Scope{}, Device{}, Processor{}, PowerResource{}, and
442ThermalZone{}.
443
444AcpiDump: Added support for dumping all SSDTs on newer versions of
445Windows. These tables are now easily available -- SSDTs are not available
446through the registry on older versions.
447
448----------------------------------------
44927 May 2016. Summary of changes for version 20160527:
450
451
4521) ACPICA kernel-resident subsystem:
453
454Temporarily reverted the new arbitrary bit length/alignment support in
455AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
456a number of regressions with the new code that need to be fully resolved
457and tested before this support can be finally integrated into ACPICA.
458Apologies for any inconveniences these issues may have caused.
459
460The ACPI message macros are not configurable (ACPI_MSG_ERROR,
461ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
462and ACPI_MSG_BIOS_WARNING). Lv Zheng.
463
464Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
465option. Adds a new return macro, return_STR. Junk-uk Kim.
466
467Example Code and Data Size: These are the sizes for the OS-independent
468acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
469debug version of the code includes the debug output trace mechanism and
470has a much larger code and data size.
471
472  Current Release:
473    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
474    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
475  Previous Release:
476    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
477    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
478
479----------------------------------------
48022 April 2016. Summary of changes for version 20160422:
481
4821) ACPICA kernel-resident subsystem:
483
484Fixed a regression in the GAS (generic address structure) arbitrary bit
485support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
486and incorrect return values. Lv Zheng. ACPICA BZ 1270.
487
488ACPI 6.0: Added support for new/renamed resource macros. One new argument
489was added to each of these macros, and the original name has been
490deprecated. The AML disassembler will always disassemble to the new
491names. Support for the new macros was added to iASL, disassembler,
492resource manager, and the acpihelp utility. ACPICA BZ 1274.
493
494    I2cSerialBus  -> I2cSerialBusV2
495    SpiSerialBus  -> SpiSerialBusV2
496    UartSerialBus -> UartSerialBusV2
497
498ACPI 6.0: Added support for a new integer field that was appended to the
499package object returned by the _BIX method. This adds iASL compile-time
500and AML runtime error checking. ACPICA BZ 1273.
501
502ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
503Subspace Type2" (Headers, Disassembler, and data table compiler).
504
505Example Code and Data Size: These are the sizes for the OS-independent
506acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
507debug version of the code includes the debug output trace mechanism and
508has a much larger code and data size.
509
510  Current Release:
511    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
512    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
513  Previous Release:
514    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
515    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
516
517
5182) iASL Compiler/Disassembler and Tools:
519
520iASL: Implemented an ASL grammar extension to allow/enable executable
521"module-level code" to be created and executed under the various
522operators that create new scopes. This type of AML code is already
523supported in all known AML interpreters, and the grammar change will
524appear in the next version of the ACPI specification. Simplifies the
525conditional runtime creation of named objects under these object types:
526
527    Device
528    PowerResource
529    Processor
530    Scope
531    ThermalZone
532
533iASL: Implemented a new ASL extension, a "For" loop macro to add greater
534ease-of-use to the ASL language. The syntax is similar to the
535corresponding C operator, and is implemented with the existing AML While
536opcode -- thus requiring no changes to existing AML interpreters.
537
538    For (Initialize, Predicate, Update) {TermList}
539
540Grammar:
541    ForTerm :=
542        For (
543            Initializer    // Nothing | TermArg => ComputationalData
544            Predicate      // Nothing | TermArg => ComputationalData
545            Update         // Nothing | TermArg => ComputationalData
546        ) {TermList}
547
548
549iASL: The _HID/_ADR detection and validation has been enhanced to search
550under conditionals in order to allow these objects to be conditionally
551created at runtime.
552
553iASL: Fixed several issues with the constant folding feature. The
554improvement allows better detection and resolution of statements that can
555be folded at compile time. ACPICA BZ 1266.
556
557iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
558conversion to the ASL ElseIf operator where incorrect ASL code could be
559generated.
560
561iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
562sometimes an extra (and extraneous) set of parentheses were emitted for
563some combinations of operators. Although this did not cause any problems
564with recompilation of the disassembled code, it made the code more
565difficult to read. David Box. ACPICA BZ 1231.
566
567iASL: Changed to ignore the unreferenced detection for predefined names
568of resource descriptor elements, when the resource descriptor is
569created/defined within a control method.
570
571iASL: Disassembler: Fix a possible fault with externally declared Buffer
572objects.
573
574----------------------------------------
57518 March 2016. Summary of changes for version 20160318:
576
5771) ACPICA kernel-resident subsystem:
578
579Added support for arbitrary bit lengths and bit offsets for registers
580defined by the Generic Address Structure. Previously, only aligned bit
581lengths of 8/16/32/64 were supported. This was sufficient for many years,
582but recently some machines have been seen that require arbitrary bit-
583level support. ACPICA BZ 1240. Lv Zheng.
584
585Fixed an issue where the \_SB._INI method sometimes must be evaluated
586before any _REG methods are evaluated. Lv Zheng.
587
588Implemented several changes related to ACPI table support
589(Headers/Disassembler/TableCompiler):
590NFIT: For ACPI 6.1, updated to add some additional new fields and
591constants.
592FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
5936).
594DMAR: Added new constants per the 10/2014 DMAR spec.
595IORT: Added new subtable per the 10/2015 IORT spec.
596HEST: For ACPI 6.1, added new constants and new subtable.
597DBG2: Added new constants per the 12/2015 DBG2 spec.
598FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
599ACPICA BZ 1249.
600ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
601
602Updated header support for the DMAR table to match the current version of
603the related spec.
604
605Added extensions to the ASL Concatenate operator to allow any ACPI object
606to be passed as an operand. Any object other than Integer/String/Buffer
607simply returns a string containing the object type. This extends the
608usefulness of the Printf macros. Previously, Concatenate would abort the
609control method if a non-data object was encountered.
610
611ACPICA source code: Deployed the C "const" keyword across the source code
612where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
613
614Example Code and Data Size: These are the sizes for the OS-independent
615acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
616debug version of the code includes the debug output trace mechanism and
617has a much larger code and data size.
618
619  Current Release:
620    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
621    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
622  Previous Release:
623    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
624    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
625
626
6272) iASL Compiler/Disassembler and Tools:
628
629iASL/Disassembler: Improved the heuristic used to determine the number of
630arguments for an externally defined control method (a method in another
631table). Although this is an improvement, there is no deterministic way to
632"guess" the number of method arguments. Only the ACPI 6.0 External opcode
633will completely solve this problem as it is deployed (automatically) in
634newer BIOS code.
635
636iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
637statements that could cause errors when the disassembled file is
638compiled. ACPICA BZ 1243. David Box.
639
640iASL: Fixed a regression caused by the merger of the two versions of the
641local strtoul64. Because of a dependency on a global variable, strtoul64
642could return an error for integers greater than a 32-bit value. ACPICA BZ
6431260.
644
645iASL: Fixed a regression where a fault could occur for an ASL Return
646statement if it invokes a control method that is not resolved. ACPICA BZ
6471264.
648
649AcpiXtract: Improved input file validation: detection of binary files and
650non-acpidump text files.
651
652----------------------------------------
65312 February 2016. Summary of changes for version 20160212:
654
6551) ACPICA kernel-resident subsystem:
656
657Implemented full support for the ACPI 6.1 specification (released in
658January). This version of the specification is available at:
659http://www.uefi.org/specifications
660
661Only a relatively small number of changes were required in ACPICA to
662support ACPI 6.1, in these areas:
663- New predefined names
664- New _HID values
665- A new subtable for HEST
666- A few other header changes for new values
667
668Ensure \_SB_._INI is executed before any _REG methods are executed. There
669appears to be existing BIOS code that relies on this behavior. Lv Zheng.
670
671Reverted a change made in version 20151218 which enabled method
672invocations to be targets of various ASL operators (SuperName and Target
673grammar elements). While the new behavior is supported by the ACPI
674specification, other AML interpreters do not support this behavior and
675never will. The ACPI specification will be updated for ACPI 6.2 to remove
676this support. Therefore, the change was reverted to the original ACPICA
677behavior.
678
679ACPICA now supports the GCC 6 compiler.
680
681Current Release: (Note: build changes increased sizes)
682    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
683    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
684Previous Release:
685    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
686    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
687
688
6892) iASL Compiler/Disassembler and Tools:
690
691Completed full support for the ACPI 6.0 External() AML opcode. The
692compiler emits an external AML opcode for each ASL External statement.
693This opcode is used by the disassembler to assist with the disassembly of
694external control methods by specifying the required number of arguments
695for the method. AML interpreters do not use this opcode. To ensure that
696interpreters do not even see the opcode, a block of one or more external
697opcodes is surrounded by an "If(0)" construct. As this feature becomes
698commonly deployed in BIOS code, the ability of disassemblers to correctly
699disassemble AML code will be greatly improved. David Box.
700
701iASL: Implemented support for an optional cross-reference output file.
702The -lx option will create a the cross-reference file with the suffix
703"xrf". Three different types of cross-reference are created in this file:
704- List of object references made from within each control method
705- Invocation (caller) list for each user-defined control method
706- List of references to each non-method object in the namespace
707
708iASL: Method invocations as ASL Target operands are now disallowed and
709flagged as errors in preparation for ACPI 6.2 (see the description of the
710problem above).
711
712----------------------------------------
7138 January 2016. Summary of changes for version 20160108:
714
7151) ACPICA kernel-resident subsystem:
716
717Updated all ACPICA copyrights and signons to 2016: Added the 2016
718copyright to all source code module headers and utility/tool signons.
719This includes the standard Linux dual-license header. This affects
720virtually every file in the ACPICA core subsystem, iASL compiler, all
721ACPICA utilities, and the ACPICA test suite.
722
723Fixed a regression introduced in version 20151218 concerning the
724execution of so-called module-level ASL/AML code. Namespace objects
725created under a module-level If() construct were not properly/fully
726entered into the namespace and could cause an interpreter fault when
727accessed.
728
729Example Code and Data Size: These are the sizes for the OS-independent
730acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
731debug version of the code includes the debug output trace mechanism and
732has a much larger code and data size.
733
734Current Release:
735    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
736    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
737  Previous Release:
738    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
739    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
740
741
7422) iASL Compiler/Disassembler and Tools:
743
744Fixed a problem with the compilation of the GpioIo and GpioInt resource
745descriptors. The _PIN field name was incorrectly defined to be an array
746of 32-bit values, but the _PIN values are in fact 16 bits each. This
747would cause incorrect bit width warnings when using Word (16-bit) fields
748to access the descriptors.
749
750
751----------------------------------------
75218 December 2015. Summary of changes for version 20151218:
753
7541) ACPICA kernel-resident subsystem:
755
756Implemented per-AML-table execution of "module-level code" as individual
757ACPI tables are loaded into the namespace during ACPICA initialization.
758In other words, any module-level code within an AML table is executed
759immediately after the table is loaded, instead of batched and executed
760after all of the tables have been loaded. This provides compatibility
761with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
762David Box.
763
764To fully support the feature above, the default operation region handlers
765for the SystemMemory, SystemIO, and PCI_Config address spaces are now
766installed before any ACPI tables are loaded. This enables module-level
767code to access these address spaces during the table load and module-
768level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
769Box.
770
771Implemented several changes to the internal _REG support in conjunction
772with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
773utilities for the changes above. Although these tools were changed, host
774operating systems that simply use the default handlers for SystemMemory,
775SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
776
777For example, in the code below, DEV1 is conditionally added to the
778namespace by the DSDT via module-level code that accesses an operation
779region. The SSDT references DEV1 via the Scope operator. DEV1 must be
780created immediately after the DSDT is loaded in order for the SSDT to
781successfully reference DEV1. Previously, this code would cause an
782AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
783fully supported by ACPICA.
784
785    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
786    {
787        OperationRegion (OPR1, SystemMemory, 0x400, 32)
788        Field (OPR1, AnyAcc, NoLock, Preserve)
789        {
790            FLD1, 1
791        }
792        If (FLD1)
793        {
794            Device (\DEV1)
795            {
796            }
797        }
798    }
799    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
800    {
801        External (\DEV1, DeviceObj)
802        Scope (\DEV1)
803        {
804        }
805    }
806
807Fixed an AML interpreter problem where control method invocations were
808not handled correctly when the invocation was itself a SuperName argument
809to another ASL operator. In these cases, the method was not invoked.
810ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
811argument:
812    Store
813    Acquire, Wait
814    CondRefOf, RefOf
815    Decrement, Increment
816    Load, Unload
817    Notify
818    Signal, Release, Reset
819    SizeOf
820
821Implemented automatic String-to-ObjectReference conversion support for
822packages returned by predefined names (such as _DEP). A common BIOS error
823is to add double quotes around an ObjectReference namepath, which turns
824the reference into an unexpected string object. This support detects the
825problem and corrects it before the package is returned to the caller that
826invoked the method. Lv Zheng.
827
828Implemented extensions to the Concatenate operator. Concatenate now
829accepts any type of object, it is not restricted to simply
830Integer/String/Buffer. For objects other than these 3 basic data types,
831the argument is treated as a string containing the name of the object
832type. This expands the utility of Concatenate and the Printf/Fprintf
833macros. ACPICA BZ 1222.
834
835Cleaned up the output of the ASL Debug object. The timer() value is now
836optional and no longer emitted by default. Also, the basic data types of
837Integer/String/Buffer are simply emitted as their values, without a data
838type string -- since the data type is obvious from the output. ACPICA BZ
8391221.
840
841Example Code and Data Size: These are the sizes for the OS-independent
842acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
843debug version of the code includes the debug output trace mechanism and
844has a much larger code and data size.
845
846  Current Release:
847    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
848    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
849  Previous Release:
850    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
851    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
852
853
8542) iASL Compiler/Disassembler and Tools:
855
856iASL: Fixed some issues with the ASL Include() operator. This operator
857was incorrectly defined in the iASL parser rules, causing a new scope to
858be opened for the code within the include file. This could lead to
859several issues, including allowing ASL code that is technically illegal
860and not supported by AML interpreters. Note, this does not affect the
861related #include preprocessor operator. ACPICA BZ 1212.
862
863iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
864operator is essentially an ASL macro since there is no AML opcode
865associated with it. The code emitted by the iASL compiler for ElseIf is
866an Else opcode followed immediately by an If opcode. The disassembler
867will now emit an ElseIf if it finds an Else immediately followed by an
868If. This simplifies the decoded ASL, especially for deeply nested
869If..Else and large Switch constructs. Thus, the disassembled code more
870closely follows the original source ASL. ACPICA BZ 1211. Example:
871
872    Old disassembly:
873        Else
874        {
875            If (Arg0 == 0x02)
876            {
877                Local0 = 0x05
878            }
879        }
880
881    New disassembly:
882        ElseIf (Arg0 == 0x02)
883        {
884            Local0 = 0x05
885        }
886
887AcpiExec: Added support for the new module level code behavior and the
888early region installation. This required a small change to the
889initialization, since AcpiExec must install its own operation region
890handlers.
891
892AcpiExec: Added support to make the debug object timer optional. Default
893is timer disabled. This cleans up the debug object output -- the timer
894data is rarely used.
895
896AcpiExec: Multiple ACPI tables are now loaded in the order that they
897appear on the command line. This can be important when there are
898interdependencies/references between the tables.
899
900iASL/Templates. Add support to generate template files with multiple
901SSDTs within a single output file. Also added ommand line support to
902specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
9031223, 1225.
904
905
906----------------------------------------
90724 November 2015. Summary of changes for version 20151124:
908
9091) ACPICA kernel-resident subsystem:
910
911Fixed a possible regression for a previous update to FADT handling. The
912FADT no longer has a fixed table ID, causing some issues with code that
913was hardwired to a specific ID. Lv Zheng.
914
915Fixed a problem where the method auto-serialization could interfere with
916the current SyncLevel. This change makes the auto-serialization support
917transparent to the SyncLevel support and management.
918
919Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
920interface is intended for early access to the namespace during the
921initial namespace device discovery walk. The _SUB method has been seen to
922access operation regions in some cases, causing errors because the
923operation regions are not fully initialized.
924
925AML Debugger: Fixed some issues with the terminate/quit/exit commands
926that can cause faults. Lv Zheng.
927
928AML Debugger: Add thread ID support so that single-step mode only applies
929to the AML Debugger thread. This prevents runtime errors within some
930kernels. Lv Zheng.
931
932Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
933methods that are invoked by this interface are optional, removed warnings
934emitted for the case where one or more of these methods do not exist.
935ACPICA BZ 1208, original change by Prarit Bhargava.
936
937Made a major pass through the entire ACPICA source code base to
938standardize formatting that has diverged a bit over time. There are no
939functional changes, but this will of course cause quite a few code
940differences from the previous ACPICA release.
941
942Example Code and Data Size: These are the sizes for the OS-independent
943acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
944debug version of the code includes the debug output trace mechanism and
945has a much larger code and data size.
946
947  Current Release:
948    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
949    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
950  Previous Release:
951    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
952    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
953
954
9552) iASL Compiler/Disassembler and Tools:
956
957iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
958definition blocks within a single ASL file and the resulting AML file.
959Support for this type of file was also added to the various tools that
960use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
961example code below shows two definition blocks within the same file:
962
963    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
9640x12345678)
965    {
966    }
967    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
968    {
969    }
970
971iASL: Enhanced typechecking for the Name() operator. All expressions for
972the value of the named object must be reduced/folded to a single constant
973at compile time, as per the ACPI specification (the AML definition of
974Name()).
975
976iASL: Fixed some code indentation issues for the -ic and -ia options (C
977and assembly headers). Now all emitted code correctly begins in column 1.
978
979iASL: Added an error message for an attempt to open a Scope() on an
980object defined in an SSDT. The DSDT is always loaded into the namespace
981first, so any attempt to open a Scope on an SSDT object will fail at
982runtime.
983
984
985----------------------------------------
98630 September 2015. Summary of changes for version 20150930:
987
9881) ACPICA kernel-resident subsystem:
989
990Debugger: Implemented several changes and bug fixes to assist support for
991the in-kernel version of the AML debugger. Lv Zheng.
992- Fix the "predefined" command for in-kernel debugger.
993- Do not enter debug command loop for the help and version commands.
994- Disallow "execute" command during execution/single-step of a method.
995
996Interpreter: Updated runtime typechecking for all operators that have
997target operands. The operand is resolved and validated that it is legal.
998For example, the target cannot be a non-data object such as a Device,
999Mutex, ThermalZone, etc., as per the ACPI specification.
1000
1001Debugger: Fixed the double-mutex user I/O handshake to work when local
1002deadlock detection is enabled.
1003
1004Debugger: limited display of method locals and arguments (LocalX and
1005ArgX) to only those that have actually been initialized. This prevents
1006lines of extraneous output.
1007
1008Updated the definition of the NFIT table to correct the bit polarity of
1009one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
1010
1011Example Code and Data Size: These are the sizes for the OS-independent
1012acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1013debug version of the code includes the debug output trace mechanism and
1014has a much larger code and data size.
1015
1016  Current Release:
1017    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1018    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
1019  Previous Release:
1020    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1021    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
1022
1023
10242) iASL Compiler/Disassembler and Tools:
1025
1026iASL: Improved the compile-time typechecking for operands of many of the
1027ASL operators:
1028
1029-- Added an option to disable compiler operand/operator typechecking (-
1030ot).
1031
1032-- For the following operators, the TermArg operands are now validated
1033when possible to be Integer data objects: BankField, OperationRegion,
1034DataTableRegion, Buffer, and Package.
1035
1036-- Store (Source, Target): Both the source and target operands are
1037resolved and checked that the operands are both legal. For example,
1038neither operand can be a non-data object such as a Device, Mutex,
1039ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
1040operator can be used to store an object to any type of target object.
1041
1042-- Store (Source, Target): If the source is a Package object, the target
1043must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
1044is a Package, the source must also be a Package.
1045
1046-- Store (Source, Target): A warning is issued if the source and target
1047resolve to the identical named object.
1048
1049-- Store (Source, <method invocation>): An error is generated for the
1050target method invocation, as this construct is not supported by the AML
1051interpreter.
1052
1053-- For all ASL math and logic operators, the target operand must be a
1054data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
1055includes the function return value also.
1056
1057-- External declarations are also included in the typechecking where
1058possible. External objects defined using the UnknownObj keyword cannot be
1059typechecked, however.
1060
1061iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
1062operator:
1063- Legacy code: Index(PKG1, 3)
1064- New ASL+ code: PKG1[3]
1065This completes the ACPI 6.0 ASL+ support as it was the only operator not
1066supported.
1067
1068iASL: Fixed the file suffix for the preprocessor output file (.i). Two
1069spaces were inadvertently appended to the filename, causing file access
1070and deletion problems on some systems.
1071
1072ASL Test Suite (ASLTS): Updated the master makefile to generate all
1073possible compiler output files when building the test suite -- thus
1074exercising these features of the compiler. These files are automatically
1075deleted when the test suite exits.
1076
1077
1078----------------------------------------
107918 August 2015. Summary of changes for version 20150818:
1080
10811) ACPICA kernel-resident subsystem:
1082
1083Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
1084Zheng. ACPICA BZ 1186.
1085
1086Completed development to ensure that the ACPICA Disassembler and Debugger
1087are fully standalone components of ACPICA. Removed cross-component
1088dependences. Lv Zheng.
1089
1090The max-number-of-AML-loops is now runtime configurable (previously was
1091compile-time only). This is essentially a loop timeout to force-abort
1092infinite AML loops. ACPCIA BZ 1192.
1093
1094Debugger: Cleanup output to dump ACPI names and namepaths without any
1095trailing underscores. Lv Zheng. ACPICA BZ 1135.
1096
1097Removed unnecessary conditional compilations across the Debugger and
1098Disassembler components where entire modules could be left uncompiled.
1099
1100The aapits test is deprecated and has been removed from the ACPICA git
1101tree. The test has never been completed and has not been maintained, thus
1102becoming rather useless. ACPICA BZ 1015, 794.
1103
1104A batch of small changes to close bugzilla and other reports:
1105- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
1106- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
1107- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
1108- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
1109Moore.
1110- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
1111ACPICA BZ 1184.
1112- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
1113operators.
1114- Debugger: Split debugger initialization/termination interfaces. Lv
1115Zheng.
1116- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
1117identification.
1118- AcpiExec: Add debug message during _REG method phase during table
1119load/init.
1120- AcpiNames: Fix a regression where some output was missing and no longer
1121emitted.
1122- Debugger: General cleanup and simplification. Lv Zheng.
1123- Disassembler: Cleanup use of several global option variables. Lv Zheng.
1124
1125Example Code and Data Size: These are the sizes for the OS-independent
1126acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1127debug version of the code includes the debug output trace mechanism and
1128has a much larger code and data size.
1129
1130  Current Release:
1131    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1132    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
1133  Previous Release:
1134    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1135    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1136
1137
11382) iASL Compiler/Disassembler and Tools:
1139
1140AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
1141were not handled properly and caused load errors. Now, properly invoke
1142and use the ACPICA auto-reallocate mechanism for ACPI table data
1143structures. ACPICA BZ 1188
1144
1145AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
1146BZ 1190.
1147
1148AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
1149AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
1150executed during initialization. ACPICA BZ 1187, 1189.
1151
1152iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
1153that corresponds to each disassembled ASL statement, to simplify
1154debugging. ACPICA BZ 1191.
1155
1156Debugger: Add option to the "objects" command to display a summary of the
1157current namespace objects (Object type and count). This is displayed if
1158the command is entered with no arguments.
1159
1160AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
1161
1162
1163----------------------------------------
116417 July 2015. Summary of changes for version 20150717:
1165
11661) ACPICA kernel-resident subsystem:
1167
1168Improved the partitioning between the Debugger and Disassembler
1169components. This allows the Debugger to be used standalone within kernel
1170code without the Disassembler (which is used for single stepping also).
1171This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
1172
1173Debugger: Implemented a new command to trace the execution of control
1174methods (Trace). This is especially useful for the in-kernel version of
1175the debugger when file I/O may not be available for method trace output.
1176See the ACPICA reference for more information. Lv Zheng.
1177
1178Moved all C library prototypes (used for the local versions of these
1179functions when requested) to a new header, acclib.h
1180Cleaned up the use of non-ANSI C library functions. These functions are
1181implemented locally in ACPICA. Moved all such functions to a common
1182source file, utnonansi.c
1183
1184Debugger: Fixed a problem with the "!!" command (get last command
1185executed) where the debugger could enter an infinite loop and eventually
1186crash.
1187
1188Removed the use of local macros that were used for some of the standard C
1189library functions to automatically cast input parameters. This mostly
1190affected the is* functions where the input parameter is defined to be an
1191int. This required a few modifications to the main ACPICA source code to
1192provide casting for these functions and eliminate possible compiler
1193warnings for these parameters.
1194
1195Across the source code, added additional status/error checking to resolve
1196issues discovered by static source code analysis tools such as Coverity.
1197
1198Example Code and Data Size: These are the sizes for the OS-independent
1199acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1200debug version of the code includes the debug output trace mechanism and
1201has a much larger code and data size.
1202
1203  Current Release:
1204    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1205    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1206  Previous Release:
1207    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
1208    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
1209
1210
12112) iASL Compiler/Disassembler and Tools:
1212
1213iASL: Fixed a regression where the device map file feature no longer
1214worked properly when used in conjunction with the disassembler. It only
1215worked properly with the compiler itself.
1216
1217iASL: Implemented a new warning for method LocalX variables that are set
1218but never used (similar to a C compiler such as gcc). This also applies
1219to ArgX variables that are not defined by the parent method, and are
1220instead (legally) used as local variables.
1221
1222iASL/Preprocessor: Finished the pass-through of line numbers from the
1223preprocessor to the compiler. This ensures that compiler errors/warnings
1224have the correct original line numbers and filenames, regardless of any
1225#include files.
1226
1227iASL/Preprocessor: Fixed a couple of issues with comment handling and the
1228pass-through of comments to the preprocessor output file (which becomes
1229the compiler input file). Also fixed a problem with // comments that
1230appear after a math expression.
1231
1232iASL: Added support for the TCPA server table to the table compiler and
1233template generator. (The client table was already previously supported)
1234
1235iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
1236identify the iASL compiler.
1237
1238Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
1239multiple times. The new names are ACPI_SIGN_NEGATIVE and
1240ACPI_SIGN_POSITIVE.
1241
1242AcpiHelp: Update to expand help messages for the iASL preprocessor
1243directives.
1244
1245
1246----------------------------------------
124719 June 2015. Summary of changes for version 20150619:
1248
1249Two regressions in version 20150616 have been addressed:
1250
1251Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
1252etc.) This update changes ACPICA to only use the standard headers for
1253functions, or the prototypes for the local versions of the C library
1254functions. Across the source code, this required some additional casts
1255for some Clib invocations for portability. Moved all local prototypes to
1256a new file, acclib.h
1257
1258Fixes several problems with recent changes to the handling of the FACS
1259table that could cause some systems not to boot.
1260
1261
1262----------------------------------------
126316 June 2015. Summary of changes for version 20150616:
1264
1265
12661) ACPICA kernel-resident subsystem:
1267
1268Across the entire ACPICA source code base, the various macros for the C
1269library functions (such as ACPI_STRLEN, etc.) have been removed and
1270replaced by the standard C library names (strlen, etc.) The original
1271purpose for these macros is no longer applicable. This simplification
1272reduces the number of macros used in the ACPICA source code
1273significantly, improving readability and maintainability.
1274
1275Implemented support for a new ACPI table, the OSDT. This table, the
1276"override" SDT, can be loaded directly by the host OS at boot time. It
1277enables the replacement of existing namespace objects that were installed
1278via the DSDT and/or SSDTs. The primary purpose for this is to replace
1279buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
1280for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
1281Moore.
1282
1283Added support for systems with (improperly) two FACS tables -- a "32-bit"
1284table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
1285X field). This change will support both automatically. There continues to
1286be systems found with this issue. This support requires a change to the
1287AcpiSetFirmwareWakingVector interface. Also, a public global variable has
1288been added to allow the host to select which FACS is desired
1289(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
1290details Lv Zheng.
1291
1292Added a new feature to allow for systems that do not contain an FACS.
1293Although this is already supported on hardware-reduced platforms, the
1294feature has been extended for all platforms. The reasoning is that we do
1295not want to abort the entire ACPICA initialization just because the
1296system is seriously buggy and has no FACS.
1297
1298Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
1299not correctly transcribed from the ACPI specification in ACPICA version
130020150515.
1301
1302Implemented support for the _CLS object in the AcpiGetObjectInfo external
1303interface.
1304
1305Updated the definitions of the TCPA and TPM2 ACPI tables to the more
1306recent TCG ACPI Specification, December 14, 2014. Table disassembler and
1307compiler also updated. Note: The TCPA "server" table is not supported by
1308the disassembler/table-compiler at this time.
1309
1310ACPI 6.0: Added definitions for the new GIC version field in the MADT.
1311
1312Example Code and Data Size: These are the sizes for the OS-independent
1313acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1314debug version of the code includes the debug output trace mechanism and
1315has a much larger code and data size.
1316
1317  Current Release:
1318    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
1319    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
1320  Previous Release:
1321    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
1322    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
1323
1324
13252) iASL Compiler/Disassembler and Tools:
1326
1327Disassembler: Fixed a problem with the new symbolic operator disassembler
1328where incorrect ASL code could be emitted in some cases for the "non-
1329commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
1330ShiftRight. The actual problem cases seem to be rather unusual in common
1331ASL code, however. David Box.
1332
1333Modified the linux version of acpidump to obtain ACPI tables from not
1334just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
1335Zheng.
1336
1337iASL: Fixed a problem where the user preprocessor output file (.i)
1338contained extra data that was not expected. The compiler was using this
1339file as a temporary file and passed through #line directives in order to
1340keep compiler error messages in sync with the input file and line number
1341across multiple include files. The (.i) is no longer a temporary file as
1342the compiler uses a new, different file for the original purpose.
1343
1344iASL: Fixed a problem where comments within the original ASL source code
1345file were not passed through to the preprocessor output file, nor any
1346listing files.
1347
1348iASL: Fixed some issues for the handling of the "#include" preprocessor
1349directive and the similar (but not the same) "Include" ASL operator.
1350
1351iASL: Add support for the new OSDT in both the disassembler and compiler.
1352
1353iASL: Fixed a problem with the constant folding support where a Buffer
1354object could be incorrectly generated (incorrectly formed) during a
1355conversion to a Store() operator.
1356
1357AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
1358description text for the _REV predefined name. _REV now permanently
1359returns 2, as per the ACPI 6.0 specification.
1360
1361Debugger: Enhanced the output of the Debug ASL object for references
1362produced by the Index operator. For Buffers and strings, only output the
1363actual byte pointed to by the index. For packages, only print the single
1364package element decoded by the index. Previously, the entire
1365buffer/string/package was emitted.
1366
1367iASL/Table-compiler: Fixed a regression where the "generic" data types
1368were no longer recognized, causing errors.
1369
1370
1371----------------------------------------
137215 May 2015. Summary of changes for version 20150515:
1373
1374This release implements most of ACPI 6.0 as described below.
1375
13761) ACPICA kernel-resident subsystem:
1377
1378Implemented runtime argument checking and return value checking for all
1379new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
1380_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
1381
1382Example Code and Data Size: These are the sizes for the OS-independent
1383acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1384debug version of the code includes the debug output trace mechanism and
1385has a much larger code and data size.
1386
1387  Current Release:
1388    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
1389    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
1390  Previous Release:
1391    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
1392    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
1393
1394
13952) iASL Compiler/Disassembler and Tools:
1396
1397iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
1398names (argument count validation and return value typechecking.)
1399
1400iASL disassembler and table compiler: implemented support for all new
1401ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
1402
1403iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
1404tables: FADT, MADT.
1405
1406iASL preprocessor: Added a new directive to enable inclusion of binary
1407blobs into ASL code. The new directive is #includebuffer. It takes a
1408binary file as input and emits a named ascii buffer object into the ASL
1409code.
1410
1411AcpiHelp: Added support for all new ACPI 6.0 predefined names.
1412
1413AcpiHelp: Added a new option, -d, to display all iASL preprocessor
1414directives.
1415
1416AcpiHelp: Added a new option, -t, to display all known/supported ACPI
1417tables.
1418
1419
1420----------------------------------------
142110 April 2015. Summary of changes for version 20150410:
1422
1423Reverted a change introduced in version 20150408 that caused
1424a regression in the disassembler where incorrect operator
1425symbols could be emitted.
1426
1427
1428----------------------------------------
142908 April 2015. Summary of changes for version 20150408:
1430
1431
14321) ACPICA kernel-resident subsystem:
1433
1434Permanently set the return value for the _REV predefined name. It now
1435returns 2 (was 5). This matches other ACPI implementations. _REV will be
1436deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
1437for ACPI 2.0 and later. It should never be used to differentiate or
1438identify operating systems.
1439
1440Added the "Windows 2015" string to the _OSI support. ACPICA will now
1441return TRUE to a query with this string.
1442
1443Fixed several issues with the local version of the printf function.
1444
1445Added the C99 compiler option (-std=c99) to the Unix makefiles.
1446
1447  Current Release:
1448    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
1449    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
1450  Previous Release:
1451    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1452    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1453
1454
14552) iASL Compiler/Disassembler and Tools:
1456
1457iASL: Implemented an enhancement to the constant folding feature to
1458transform the parse tree to a simple Store operation whenever possible:
1459    Add (2, 3, X) ==> is converted to: Store (5, X)
1460    X = 2 + 3     ==> is converted to: Store (5, X)
1461
1462Updated support for the SLIC table (Software Licensing Description Table)
1463in both the Data Table compiler and the disassembler. The SLIC table
1464support now conforms to "Microsoft Software Licensing Tables (SLIC and
1465MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
1466following the ACPI header is now defined to be "Proprietary Data", and as
1467such, can only be entered or displayed as a hex data block.
1468
1469Implemented full support for the MSDM table as described in the document
1470above. Note: The format of MSDM is similar to SLIC. Any MSDM data
1471following the ACPI header is defined to be "Proprietary Data", and can
1472only be entered or displayed as a hex data block.
1473
1474Implemented the -Pn option for the iASL Table Compiler (was only
1475implemented for the ASL compiler). This option disables the iASL
1476preprocessor.
1477
1478Disassembler: For disassembly of Data Tables, added a comment field
1479around the Ascii equivalent data that is emitted as part of the "Raw
1480Table Data" block. This prevents the iASL Preprocessor from possible
1481confusion if/when the table is compiled.
1482
1483Disassembler: Added an option (-df) to force the disassembler to assume
1484that the table being disassembled contains valid AML. This feature is
1485useful for disassembling AML files that contain ACPI signatures other
1486than DSDT or SSDT (such as OEMx or other signatures).
1487
1488Changes for the EFI version of the tools:
14891) Fixed a build error/issue
14902) Fixed a cast warning
1491
1492iASL: Fixed a path issue with the __FILE__ operator by making the
1493directory prefix optional within the internal SplitInputFilename
1494function.
1495
1496Debugger: Removed some unused global variables.
1497
1498Tests: Updated the makefile for proper generation of the AAPITS suite.
1499
1500
1501----------------------------------------
150204 February 2015. Summary of changes for version 20150204:
1503
1504ACPICA kernel-resident subsystem:
1505
1506Updated all ACPICA copyrights and signons to 2014. Added the 2014
1507copyright to all module headers and signons, including the standard Linux
1508header. This affects virtually every file in the ACPICA core subsystem,
1509iASL compiler, all ACPICA utilities, and the test suites.
1510
1511Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
1512A raw gpe handling mechanism was created to allow better handling of GPE
1513storms that aren't easily managed by the normal handler. The raw handler
1514allows disabling/renabling of the the GPE so that interrupt storms can be
1515avoided in cases where events cannot be timely serviced. In this
1516scenario, handlers should use the AcpiSetGpe() API to disable/enable the
1517GPE. This API will leave the reference counts undisturbed, thereby
1518preventing unintentional clearing of the GPE when the intent in only to
1519temporarily disable it. Raw handlers allow enabling and disabling of a
1520GPE by removing GPE register locking. As such, raw handlers much provide
1521their own locks while using GPE API's to protect access to GPE data
1522structures.
1523Lv Zheng
1524
1525Events: Always modify GPE registers under the GPE lock.
1526Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
1527values. Reported as bug by joe.liu@apple.com.
1528
1529Unix makefiles: Separate option to disable optimizations and
1530_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
1531NOOPT disable option and creates a separate flag (NOFORTIFY) for this
1532purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
1533errors when building ACPICA. This allows disabling the option without
1534also having to disable optimazations.
1535David Box
1536
1537  Current Release:
1538    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1539    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
1540
1541--
1542--------------------------------------
154307 November 2014. Summary of changes for version 20141107:
1544
1545This release is available at https://acpica.org/downloads
1546
1547This release introduces and implements language extensions to ASL that
1548provide support for symbolic ("C-style") operators and expressions. These
1549language extensions are known collectively as ASL+.
1550
1551
15521) iASL Compiler/Disassembler and Tools:
1553
1554Disassembler: Fixed a problem with disassembly of the UartSerialBus
1555macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
1556Box.
1557
1558Disassembler: Fixed the Unicode macro support to add escape sequences.
1559All non-printable ASCII values are emitted as escape sequences, as well
1560as the standard escapes for quote and backslash. Ensures that the
1561disassembled macro can be correctly recompiled.
1562
1563iASL: Added Printf/Fprintf macros for formatted output. These macros are
1564translated to existing AML Concatenate and Store operations. Printf
1565writes to the ASL Debug object. Fprintf allows the specification of an
1566ASL name as the target. Only a single format specifier is required, %o,
1567since the AML interpreter dynamically converts objects to the required
1568type. David E. Box.
1569
1570    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
1571                 (Concatenate (Concatenate (Concatenate ("", Arg0),
1572                 ": Unexpected value for "), Arg1), ", "), Arg2),
1573                 " at line "), Arg3), Debug)
1574
1575    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
1576                 Arg0, Arg1, Arg2, Arg3)
1577
1578    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
1579                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
1580
1581    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
1582
1583iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
1584ASL parse tree before the AML code is generated. This allows blocks of
1585ASL code to be removed in order to help locate and identify problem
1586devices and/or code. David E. Box.
1587
1588AcpiExec: Added support (-fi) for an optional namespace object
1589initialization file. This file specifies initial values for namespace
1590objects as necessary for debugging and testing different ASL code paths
1591that may be taken as a result of BIOS options.
1592
1593
15942) Overview of symbolic operator support for ASL (ASL+)
1595-------------------------------------------------------
1596
1597As an extension to the ASL language, iASL implements support for symbolic
1598(C-style) operators for math and logical expressions. This can greatly
1599simplify ASL code as well as improve both readability and
1600maintainability. These language extensions can exist concurrently with
1601all legacy ASL code and expressions.
1602
1603The symbolic extensions are 100% compatible with existing AML
1604interpreters, since no new AML opcodes are created. To implement the
1605extensions, the iASL compiler transforms the symbolic expressions into
1606the legacy ASL/AML equivalents at compile time.
1607
1608Full symbolic expressions are supported, along with the standard C
1609precedence and associativity rules.
1610
1611Full disassembler support for the symbolic expressions is provided, and
1612creates an automatic migration path for existing ASL code to ASL+ code
1613via the disassembly process. By default, the disassembler now emits ASL+
1614code with symbolic expressions. An option (-dl) is provided to force the
1615disassembler to emit legacy ASL code if desired.
1616
1617Below is the complete list of the currently supported symbolic operators
1618with examples. See the iASL User Guide for additional information.
1619
1620
1621ASL+ Syntax      Legacy ASL Equivalent
1622-----------      ---------------------
1623
1624    // Math operators
1625
1626Z = X + Y        Add (X, Y, Z)
1627Z = X - Y        Subtract (X, Y, Z)
1628Z = X * Y        Multiply (X, Y, Z)
1629Z = X / Y        Divide (X, Y, , Z)
1630Z = X % Y        Mod (X, Y, Z)
1631Z = X << Y       ShiftLeft (X, Y, Z)
1632Z = X >> Y       ShiftRight (X, Y, Z)
1633Z = X & Y        And (X, Y, Z)
1634Z = X | Y        Or (X, Y, Z)
1635Z = X ^ Y        Xor (X, Y, Z)
1636Z = ~X           Not (X, Z)
1637X++              Increment (X)
1638X--              Decrement (X)
1639
1640    // Logical operators
1641
1642(X == Y)         LEqual (X, Y)
1643(X != Y)         LNotEqual (X, Y)
1644(X < Y)          LLess (X, Y)
1645(X > Y)          LGreater (X, Y)
1646(X <= Y)         LLessEqual (X, Y)
1647(X >= Y)         LGreaterEqual (X, Y)
1648(X && Y)         LAnd (X, Y)
1649(X || Y)         LOr (X, Y)
1650(!X)             LNot (X)
1651
1652    // Assignment and compound assignment operations
1653
1654X = Y           Store (Y, X)
1655X += Y          Add (X, Y, X)
1656X -= Y          Subtract (X, Y, X)
1657X *= Y          Multiply (X, Y, X)
1658X /= Y          Divide (X, Y, , X)
1659X %= Y          Mod (X, Y, X)
1660X <<= Y         ShiftLeft (X, Y, X)
1661X >>= Y         ShiftRight (X, Y, X)
1662X &= Y          And (X, Y, X)
1663X |= Y          Or (X, Y, X)
1664X ^= Y          Xor (X, Y, X)
1665
1666
16673) ASL+ Examples:
1668-----------------
1669
1670Legacy ASL:
1671        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
1672            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
16730x03FB),
1674            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
1675        {
1676            And (MEMB, 0xFFFFFFF0, SRMB)
1677            Store (MEMB, Local2)
1678            Store (PDBM, Local1)
1679            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
1680            Store (SRMB, MEMB)
1681            Or (PDBM, 0x02, PDBM)
1682        }
1683
1684ASL+ version:
1685        If (((R510 & 0x03FB) == 0x02E0) ||
1686            ((R520 & 0x03FB) == 0x02E0) ||
1687            ((R530 & 0x03FB) == 0x02E0) ||
1688            ((R540 & 0x03FB) == 0x02E0))
1689        {
1690            SRMB = (MEMB & 0xFFFFFFF0)
1691            Local2 = MEMB
1692            Local1 = PDBM
1693            PDBM &= 0xFFFFFFFFFFFFFFF9
1694            MEMB = SRMB
1695            PDBM |= 0x02
1696        }
1697
1698Legacy ASL:
1699        Store (0x1234, Local1)
1700        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
1701        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
1702        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
1703        Store (Index (PKG1, 0x03), Local6)
1704        Store (Add (Local3, Local2), Debug)
1705        Add (Local1, 0x0F, Local2)
1706        Add (Local1, Multiply (Local2, Local3), Local2)
1707        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
1708
1709ASL+ version:
1710        Local1 = 0x1234
1711        Local3 = (((Local1 + TEST) + 0x20) * Local2)
1712        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
1713        Local3 = (Local1 + (TEST + (0x20 * Local2)))
1714        Local6 = Index (PKG1, 0x03)
1715        Debug = (Local3 + Local2)
1716        Local2 = (Local1 + 0x0F)
1717        Local2 = (Local1 + (Local2 * Local3))
1718        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
1719
1720
1721----------------------------------------
172226 September 2014. Summary of changes for version 20140926:
1723
17241) ACPICA kernel-resident subsystem:
1725
1726Updated the GPIO operation region handler interface (GeneralPurposeIo).
1727In order to support GPIO Connection objects with multiple pins, along
1728with the related Field objects, the following changes to the interface
1729have been made: The Address is now defined to be the offset in bits of
1730the field unit from the previous invocation of a Connection. It can be
1731viewed as a "Pin Number Index" into the connection resource descriptor.
1732The BitWidth is the exact bit width of the field. It is usually one bit,
1733but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
1734additional information and examples.
1735
1736GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
1737corresponding _Lxx/_Exx methods are disabled (they may have been enabled
1738by the firmware), so that they cannot fire until they are enabled via
1739AcpiUpdateAllGpes. Rafael J. Wysocki.
1740
1741Added a new return flag for the Event/GPE status interfaces --
1742AcpiGetEventStatus and AcpiGetGpeStatus. The new
1743ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
1744GPE currently has a handler associated with it, and can thus actually
1745affect the system. Lv Zheng.
1746
1747Example Code and Data Size: These are the sizes for the OS-independent
1748acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1749debug version of the code includes the debug output trace mechanism and
1750has a much larger code and data size.
1751
1752  Current Release:
1753    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
1754    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
1755  Previous Release:
1756    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1757    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1758
17592) iASL Compiler/Disassembler and Tools:
1760
1761iASL: Fixed a memory allocation/free regression introduced in 20140828
1762that could cause the compiler to crash. This was introduced inadvertently
1763during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
17641113.
1765
1766iASL: Removed two error messages that have been found to create false
1767positives, until they can be fixed and fully validated (ACPICA BZ 1112):
17681) Illegal forward reference within a method
17692) Illegal reference across two methods
1770
1771iASL: Implemented a new option (-lm) to create a hardware mapping file
1772that summarizes all GPIO, I2C, SPI, and UART connections. This option
1773works for both the compiler and disassembler. See the iASL compiler user
1774guide for additional information and examples (section 6.4.6).
1775
1776AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
1777version 2. This corrects the AE_BAD_HEADER exception seen on systems with
1778a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
1779
1780AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
1781unless STDIN is actually a terminal. Assists with batch-mode processing.
1782ACPICA BZ 1114.
1783
1784Disassembler/AcpiHelp: Added another large group of recognized _HID
1785values.
1786
1787
1788----------------------------------------
178928 August 2014. Summary of changes for version 20140828:
1790
17911) ACPICA kernel-resident subsystem:
1792
1793Fixed a problem related to the internal use of the Timer() operator where
1794a 64-bit divide could cause an attempted link to a double-precision math
1795library. This divide is not actually necessary, so the code was
1796restructured to eliminate it. Lv Zheng.
1797
1798ACPI 5.1: Added support for the runtime validation of the _DSD package
1799(similar to the iASL support).
1800
1801ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
1802SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
1803
1804Example Code and Data Size: These are the sizes for the OS-independent
1805acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1806debug version of the code includes the debug output trace mechanism and
1807has a much larger code and data size.
1808
1809  Current Release:
1810    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1811    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1812  Previous Release:
1813    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
1814    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
1815
18162) iASL Compiler/Disassembler and Tools:
1817
1818AcpiExec: Fixed a problem on unix systems where the original terminal
1819state was not always properly restored upon exit. Seen when using the -v
1820option. ACPICA BZ 1104.
1821
1822iASL: Fixed a problem with the validation of the ranges/length within the
1823Memory24 resource descriptor. There was a boundary condition when the
1824range was equal to the (length -1) caused by the fact that these values
1825are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
1826
1827Disassembler: Fixed a problem with the GpioInt descriptor interrupt
1828polarity
1829flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
1830is
1831now supported properly.
1832
1833ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
1834in the disassembler, data table compiler, and table template generator.
1835
1836iASL: Added a requirement for Device() objects that one of either a _HID
1837or _ADR must exist within the scope of a Device, as per the ACPI
1838specification. Remove a similar requirement that was incorrectly in place
1839for the _DSD object.
1840
1841iASL: Added error detection for illegal named references within control
1842methods that would cause runtime failures. Now trapped as errors are: 1)
1843References to objects within a non-parent control method. 2) Forward
1844references (within a method) -- for control methods, AML interpreters use
1845a one-pass parse of control methods. ACPICA BZ 1008.
1846
1847iASL: Added error checking for dependencies related to the _PSx power
1848methods. ACPICA BZ 1029.
18491) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
1850_PS3.
18512) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
1852scope.
1853
1854iASL and table compiler: Cleanup miscellaneous memory leaks by fully
1855deploying the existing object and string caches and adding new caches for
1856the table compiler.
1857
1858iASL: Split the huge parser source file into multiple subfiles to improve
1859manageability. Generation now requires the M4 macro preprocessor, which
1860is part of the Bison distribution on both unix and windows platforms.
1861
1862AcpiSrc: Fixed and removed all extraneous warnings generated during
1863entire ACPICA source code scan and/or conversion.
1864
1865
1866----------------------------------------
1867
186824 July 2014. Summary of changes for version 20140724:
1869
1870The ACPI 5.1 specification has been released and is available at:
1871http://uefi.org/specs/access
1872
1873
18740) ACPI 5.1 support in ACPICA:
1875
1876ACPI 5.1 is fully supported in ACPICA as of this release.
1877
1878New predefined names. Support includes iASL and runtime ACPICA
1879validation.
1880    _CCA (Cache Coherency Attribute).
1881    _DSD (Device-Specific Data). David Box.
1882
1883Modifications to existing ACPI tables. Support includes headers, iASL
1884Data Table compiler, disassembler, and the template generator.
1885    FADT - New fields and flags. Graeme Gregory.
1886    GTDT - One new subtable and new fields. Tomasz Nowicki.
1887    MADT - Two new subtables. Tomasz Nowicki.
1888    PCCT - One new subtable.
1889
1890Miscellaneous.
1891    New notification type for System Resource Affinity change events.
1892
1893
18941) ACPICA kernel-resident subsystem:
1895
1896Fixed a regression introduced in 20140627 where a fault can happen during
1897the deletion of Alias AML namespace objects. The problem affected both
1898the core ACPICA and the ACPICA tools including iASL and AcpiExec.
1899
1900Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
1901simple mechanism to enable wake GPEs that have no associated handler or
1902control method. Rafael Wysocki.
1903
1904Updated the AcpiEnableGpe interface to disallow the enable if there is no
1905handler or control method associated with the particular GPE. This will
1906help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
1907
1908Updated GPE handling and dispatch by disabling the GPE before clearing
1909the status bit for edge-triggered GPEs. Lv Zheng.
1910
1911Added Timer() support to the AML Debug object. The current timer value is
1912now displayed with each invocation of (Store to) the debug object to
1913enable simple generation of execution times for AML code (method
1914execution for example.) ACPICA BZ 1093.
1915
1916Example Code and Data Size: These are the sizes for the OS-independent
1917acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1918debug version of the code includes the debug output trace mechanism and
1919has a much larger code and data size.
1920
1921  Current Release:
1922    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
1923    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
1924  Previous Release:
1925    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
1926    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
1927
1928
19292) iASL Compiler/Disassembler and Tools:
1930
1931Fixed an issue with the recently added local printf implementation,
1932concerning width/precision specifiers that could cause incorrect output.
1933Lv Zheng. ACPICA BZ 1094.
1934
1935Disassembler: Added support to detect buffers that contain UUIDs and
1936disassemble them to an invocation of the ToUUID operator. Also emit
1937commented descriptions of known ACPI-related UUIDs.
1938
1939AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
1940-u. Adds three new files.
1941
1942iASL: Update table compiler and disassembler for DMAR table changes that
1943were introduced in September 2013. With assistance by David Woodhouse.
1944
1945----------------------------------------
194627 June 2014. Summary of changes for version 20140627:
1947
19481) ACPICA kernel-resident subsystem:
1949
1950Formatted Output: Implemented local versions of standard formatted output
1951utilities such as printf, etc. Over time, it has been discovered that
1952there are in fact many portability issues with printf, and the addition
1953of this feature will fix/prevent these issues once and for all. Some
1954known issues are summarized below:
1955
19561) Output of 64-bit values is not portable. For example, UINT64 is %ull
1957for the Linux kernel and is %uI64 for some MSVC versions.
19582) Invoking printf consistently in a manner that is portable across both
195932-bit and 64-bit platforms is difficult at best in many situations.
19603) The output format for pointers varies from system to system (leading
1961zeros especially), and leads to inconsistent output from ACPICA across
1962platforms.
19634) Certain platform-specific printf formats may conflict with ACPICA use.
19645) If there is no local C library available, ACPICA now has local support
1965for printf.
1966
1967-- To address these printf issues in a complete manner, ACPICA now
1968directly implements a small subset of printf format specifiers, only
1969those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
1970
1971Implemented support for ACPICA generation within the EFI environment.
1972Initially, the AcpiDump utility is supported in the UEFI shell
1973environment. Lv Zheng.
1974
1975Added a new external interface, AcpiLogError, to improve ACPICA
1976portability. This allows the host to redirect error messages from the
1977ACPICA utilities. Lv Zheng.
1978
1979Added and deployed new OSL file I/O interfaces to improve ACPICA
1980portability:
1981  AcpiOsOpenFile
1982  AcpiOsCloseFile
1983  AcpiOsReadFile
1984  AcpiOsWriteFile
1985  AcpiOsGetFileOffset
1986  AcpiOsSetFileOffset
1987There are C library implementations of these functions in the new file
1988service_layers/oslibcfs.c -- however, the functions can be implemented by
1989the local host in any way necessary. Lv Zheng.
1990
1991Implemented a mechanism to disable/enable ACPI table checksum validation
1992at runtime. This can be useful when loading tables very early during OS
1993initialization when it may not be possible to map the entire table in
1994order to compute the checksum. Lv Zheng.
1995
1996Fixed a buffer allocation issue for the Generic Serial Bus support.
1997Originally, a fixed buffer length was used. This change allows for
1998variable-length buffers based upon the protocol indicated by the field
1999access attributes. Reported by Lan Tianyu. Lv Zheng.
2000
2001Fixed a problem where an object detached from a namespace node was not
2002properly terminated/cleared and could cause a circular list problem if
2003reattached. ACPICA BZ 1063. David Box.
2004
2005Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
2006
2007Fixed a possible memory leak in an error return path within the function
2008AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
2009
2010Example Code and Data Size: These are the sizes for the OS-independent
2011acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2012debug version of the code includes the debug output trace mechanism and
2013has a much larger code and data size.
2014
2015  Current Release:
2016    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
2017    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
2018  Previous Release:
2019    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
2020    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
2021
2022
20232) iASL Compiler/Disassembler and Tools:
2024
2025Disassembler: Add dump of ASCII equivalent text within a comment at the
2026end of each line of the output for the Buffer() ASL operator.
2027
2028AcpiDump: Miscellaneous changes:
2029  Fixed repetitive table dump in -n mode.
2030  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
2031the ACPI 2.0 GUID fails.
2032
2033iASL: Fixed a problem where the compiler could fault if incorrectly given
2034an acpidump output file as input. ACPICA BZ 1088. David Box.
2035
2036AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
2037they are invoked without any arguments.
2038
2039Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
20401086. Colin Ian King.
2041
2042Disassembler: Cleaned up a block of code that extracts a parent Op
2043object. Added a comment that explains that the parent is guaranteed to be
2044valid in this case. ACPICA BZ 1069.
2045
2046
2047----------------------------------------
204824 April 2014. Summary of changes for version 20140424:
2049
20501) ACPICA kernel-resident subsystem:
2051
2052Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
2053Some of these tables are known to contain a trailing NULL entry. Lv
2054Zheng.
2055
2056Removed an extraneous error message for the case where there are a large
2057number of system GPEs (> 124). This was the "32-bit FADT register is too
2058long to convert to GAS struct" message, which is irrelevant for GPEs
2059since the GPEx_BLK_LEN fields of the FADT are always used instead of the
2060(limited capacity) GAS bit length. Also, several changes to ensure proper
2061support for GPE numbers > 255, where some "GPE number" fields were 8-bits
2062internally.
2063
2064Implemented and deployed additional configuration support for the public
2065ACPICA external interfaces. Entire classes of interfaces can now be
2066easily modified or configured out, replaced by stubbed inline functions
2067by default. Lv Zheng.
2068
2069Moved all public ACPICA runtime configuration globals to the public
2070ACPICA external interface file for convenience. Also, removed some
2071obsolete/unused globals. See the file acpixf.h. Lv Zheng.
2072
2073Documentation: Added a new section to the ACPICA reference describing the
2074maximum number of GPEs that can be supported by the FADT-defined GPEs in
2075block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
2076reference.
2077
2078Example Code and Data Size: These are the sizes for the OS-independent
2079acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2080debug version of the code includes the debug output trace mechanism and
2081has a much larger code and data size.
2082
2083  Current Release:
2084    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
2085    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
2086  Previous Release:
2087    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
2088    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
2089
2090
20912) iASL Compiler/Disassembler and Tools:
2092
2093iASL and disassembler: Add full support for the LPIT table (Low Power
2094Idle Table). Includes support in the disassembler, data table compiler,
2095and template generator.
2096
2097AcpiDump utility:
20981) Add option to force the use of the RSDT (over the XSDT).
20992) Improve validation of the RSDP signature (use 8 chars instead of 4).
2100
2101iASL: Add check for predefined packages that are too large.  For
2102predefined names that contain subpackages, check if each subpackage is
2103too large. (Check for too small already exists.)
2104
2105Debugger: Updated the GPE command (which simulates a GPE by executing the
2106GPE code paths in ACPICA). The GPE device is now optional, and defaults
2107to the GPE 0/1 FADT-defined blocks.
2108
2109Unix application OSL: Update line-editing support. Add additional error
2110checking and take care not to reset terminal attributes on exit if they
2111were never set. This should help guarantee that the terminal is always
2112left in the previous state on program exit.
2113
2114
2115----------------------------------------
211625 March 2014. Summary of changes for version 20140325:
2117
21181) ACPICA kernel-resident subsystem:
2119
2120Updated the auto-serialize feature for control methods. This feature
2121automatically serializes all methods that create named objects in order
2122to prevent runtime errors. The update adds support to ignore the
2123currently executing AML SyncLevel when invoking such a method, in order
2124to prevent disruption of any existing SyncLevel priorities that may exist
2125in the AML code. Although the use of SyncLevels is relatively rare, this
2126change fixes a regression where an AE_AML_MUTEX_ORDER exception can
2127appear on some machines starting with the 20140214 release.
2128
2129Added a new external interface to allow the host to install ACPI tables
2130very early, before the namespace is even created. AcpiInstallTable gives
2131the host additional flexibility for ACPI table management. Tables can be
2132installed directly by the host as if they had originally appeared in the
2133XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
2134(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
2135with additional internal restructuring and cleanup. See the ACPICA
2136Reference for interface details. Lv Zheng.
2137
2138Added validation of the checksum for all incoming dynamically loaded
2139tables (via external interfaces or via AML Load/LoadTable operators). Lv
2140Zheng.
2141
2142Updated the use of the AcpiOsWaitEventsComplete interface during Notify
2143and GPE handler removal. Restructured calls to eliminate possible race
2144conditions. Lv Zheng.
2145
2146Added a warning for the use/execution of the ASL/AML Unload (table)
2147operator. This will help detect and identify machines that use this
2148operator if and when it is ever used. This operator has never been seen
2149in the field and the usage model and possible side-effects of the drastic
2150runtime action of a full table removal are unknown.
2151
2152Reverted the use of #pragma push/pop which was introduced in the 20140214
2153release. It appears that push and pop are not implemented by enough
2154compilers to make the use of this feature feasible for ACPICA at this
2155time. However, these operators may be deployed in a future ACPICA
2156release.
2157
2158Added the missing EXPORT_SYMBOL macros for the install and remove SCI
2159handler interfaces.
2160
2161Source code generation:
21621) Disabled the use of the "strchr" macro for the gcc-specific
2163generation. For some versions of gcc, this macro can periodically expose
2164a compiler bug which in turn causes compile-time error(s).
21652) Added support for PPC64 compilation. Colin Ian King.
2166
2167Example Code and Data Size: These are the sizes for the OS-independent
2168acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2169debug version of the code includes the debug output trace mechanism and
2170has a much larger code and data size.
2171
2172  Current Release:
2173    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
2174    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
2175  Previous Release:
2176    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
2177    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
2178
2179
21802) iASL Compiler/Disassembler and Tools:
2181
2182Disassembler: Added several new features to improve the readability of
2183the resulting ASL code. Extra information is emitted within comment
2184fields in the ASL code:
21851) Known _HID/_CID values are decoded to descriptive text.
21862) Standard values for the Notify() operator are decoded to descriptive
2187text.
21883) Target operands are expanded to full pathnames (in a comment) when
2189possible.
2190
2191Disassembler: Miscellaneous updates for extern() handling:
21921) Abort compiler if file specified by -fe option does not exist.
21932) Silence unnecessary warnings about argument count mismatches.
21943) Update warning messages concerning unresolved method externals.
21954) Emit "UnknownObj" keyword for externals whose type cannot be
2196determined.
2197
2198AcpiHelp utility:
21991) Added the -a option to display both the ASL syntax and the AML
2200encoding for an input ASL operator. This effectively displays all known
2201information about an ASL operator with one AcpiHelp invocation.
22022) Added substring match support (similar to a wildcard) for the -i
2203(_HID/PNP IDs) option.
2204
2205iASL/Disassembler: Since this tool does not yet support execution on big-
2206endian machines, added detection of endianness and an error message if
2207execution is attempted on big-endian. Support for big-endian within iASL
2208is a feature that is on the ACPICA to-be-done list.
2209
2210AcpiBin utility:
22111) Remove option to extract binary files from an acpidump; this function
2212is made obsolete by the AcpiXtract utility.
22132) General cleanup of open files and allocated buffers.
2214
2215
2216----------------------------------------
221714 February 2014. Summary of changes for version 20140214:
2218
22191) ACPICA kernel-resident subsystem:
2220
2221Implemented a new mechanism to proactively prevent problems with ill-
2222behaved reentrant control methods that create named ACPI objects. This
2223behavior is illegal as per the ACPI specification, but is nonetheless
2224frequently seen in the field. Previously, this could lead to an
2225AE_ALREADY_EXISTS exception if the method was actually entered by more
2226than one thread. This new mechanism detects such methods at table load
2227time and marks them "serialized" to prevent reentrancy. A new global
2228option, AcpiGbl_AutoSerializeMethods, has been added to disable this
2229feature if desired. This mechanism and global option obsoletes and
2230supersedes the previous AcpiGbl_SerializeAllMethods option.
2231
2232Added the "Windows 2013" string to the _OSI support. ACPICA will now
2233respond TRUE to _OSI queries with this string. It is the stated policy of
2234ACPICA to add new strings to the _OSI support as soon as possible after
2235they are defined. See the full ACPICA _OSI policy which has been added to
2236the utilities/utosi.c file.
2237
2238Hardened/updated the _PRT return value auto-repair code:
22391) Do not abort the repair on a single subpackage failure, continue to
2240check all subpackages.
22412) Add check for the minimum subpackage length (4).
22423) Properly handle extraneous NULL package elements.
2243
2244Added support to avoid the possibility of infinite loops when traversing
2245object linked lists. Never allow an infinite loop, even in the face of
2246corrupted object lists.
2247
2248ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
2249pack(pop) directives to ensure that the ACPICA headers are independent of
2250compiler settings or other host headers.
2251
2252Example Code and Data Size: These are the sizes for the OS-independent
2253acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2254debug version of the code includes the debug output trace mechanism and
2255has a much larger code and data size.
2256
2257  Current Release:
2258    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
2259    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
2260  Previous Release:
2261    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
2262    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
2263
2264
22652) iASL Compiler/Disassembler and Tools:
2266
2267iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
2268first reserved field was incorrectly forced to have a value of zero. This
2269change correctly forces the field to have a value of one. ACPICA BZ 1081.
2270
2271Debugger: Added missing support for the "Extra" and "Data" subobjects
2272when displaying object data.
2273
2274Debugger: Added support to display entire object linked lists when
2275displaying object data.
2276
2277iASL: Removed the obsolete -g option to obtain ACPI tables from the
2278Windows registry. This feature has been superseded by the acpidump
2279utility.
2280
2281
2282----------------------------------------
228314 January 2014. Summary of changes for version 20140114:
2284
22851) ACPICA kernel-resident subsystem:
2286
2287Updated all ACPICA copyrights and signons to 2014. Added the 2014
2288copyright to all module headers and signons, including the standard Linux
2289header. This affects virtually every file in the ACPICA core subsystem,
2290iASL compiler, all ACPICA utilities, and the test suites.
2291
2292Improved parameter validation for AcpiInstallGpeBlock. Added the
2293following checks:
22941) The incoming device handle refers to type ACPI_TYPE_DEVICE.
22952) There is not already a GPE block attached to the device.
2296Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
2297device.
2298
2299Correctly support "references" in the ACPI_OBJECT. This change fixes the
2300support to allow references (namespace nodes) to be passed as arguments
2301to control methods via the evaluate object interface. This is probably
2302most useful for testing purposes, however.
2303
2304Improved support for 32/64 bit physical addresses in printf()-like
2305output. This change improves the support for physical addresses in printf
2306debug statements and other output on both 32-bit and 64-bit hosts. It
2307consistently outputs the appropriate number of bytes for each host. The
2308%p specifier is unsatisfactory since it does not emit uniform output on
2309all hosts/clib implementations (on some, leading zeros are not supported,
2310leading to difficult-to-read output).
2311
2312Example Code and Data Size: These are the sizes for the OS-independent
2313acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2314debug version of the code includes the debug output trace mechanism and
2315has a much larger code and data size.
2316
2317  Current Release:
2318    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
2319    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
2320  Previous Release:
2321    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
2322    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
2323
2324
23252) iASL Compiler/Disassembler and Tools:
2326
2327iASL: Fix a possible fault when using the Connection() operator. Fixes a
2328problem if the parent Field definition for the Connection operator refers
2329to an operation region that does not exist. ACPICA BZ 1064.
2330
2331AcpiExec: Load of local test tables is now optional. The utility has the
2332capability to load some various tables to test features of ACPICA.
2333However, there are enough of them that the output of the utility became
2334confusing. With this change, only the required local tables are displayed
2335(RSDP, XSDT, etc.) along with the actual tables loaded via the command
2336line specification. This makes the default output simler and easier to
2337understand. The -el command line option restores the original behavior
2338for testing purposes.
2339
2340AcpiExec: Added support for overlapping operation regions. This change
2341expands the simulation of operation regions by supporting regions that
2342overlap within the given address space. Supports SystemMemory and
2343SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
2344
2345AcpiExec: Added region handler support for PCI_Config and EC spaces. This
2346allows AcpiExec to simulate these address spaces, similar to the current
2347support for SystemMemory and SystemIO.
2348
2349Debugger: Added new command to read/write/compare all namespace objects.
2350The command "test objects" will exercise the entire namespace by writing
2351new values to each data object, and ensuring that the write was
2352successful. The original value is then restored and verified.
2353
2354Debugger: Added the "test predefined" command. This change makes this
2355test public and puts it under the new "test" command. The test executes
2356each and every predefined name within the current namespace.
2357
2358
2359----------------------------------------
236018 December 2013. Summary of changes for version 20131218:
2361
2362Global note: The ACPI 5.0A specification was released this month. There
2363are no changes needed for ACPICA since this release of ACPI is an
2364errata/clarification release. The specification is available at
2365acpi.info.
2366
2367
23681) ACPICA kernel-resident subsystem:
2369
2370Added validation of the XSDT root table if it is present. Some older
2371platforms contain an XSDT that is ill-formed or otherwise invalid (such
2372as containing some or all entries that are NULL pointers). This change
2373adds a new function to validate the XSDT before actually using it. If the
2374XSDT is found to be invalid, ACPICA will now automatically fall back to
2375using the RSDT instead. Original implementation by Zhao Yakui. Ported to
2376ACPICA and enhanced by Lv Zheng and Bob Moore.
2377
2378Added a runtime option to ignore the XSDT and force the use of the RSDT.
2379This change adds a runtime option that will force ACPICA to use the RSDT
2380instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
2381requires that an XSDT be used instead of the RSDT, the XSDT has been
2382found to be corrupt or ill-formed on some machines. Lv Zheng.
2383
2384Added a runtime option to favor 32-bit FADT register addresses over the
238564-bit addresses. This change adds an option to favor 32-bit FADT
2386addresses when there is a conflict between the 32-bit and 64-bit versions
2387of the same register. The default behavior is to use the 64-bit version
2388in accordance with the ACPI specification. This can now be overridden via
2389the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
2390
2391During the change above, the internal "Convert FADT" and "Verify FADT"
2392functions have been merged to simplify the code, making it easier to
2393understand and maintain. ACPICA BZ 933.
2394
2395Improve exception reporting and handling for GPE block installation.
2396Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
2397status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
2398
2399Added helper macros to extract bus/segment numbers from the HEST table.
2400This change adds two macros to extract the encoded bus and segment
2401numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
2402Betty Dall <betty.dall@hp.com>
2403
2404Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
2405by ACPICA. It is not a public macro, so it should have no effect on
2406existing OSV code. Lv Zheng.
2407
2408Example Code and Data Size: These are the sizes for the OS-independent
2409acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2410debug version of the code includes the debug output trace mechanism and
2411has a much larger code and data size.
2412
2413  Current Release:
2414    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
2415    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
2416  Previous Release:
2417    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
2418    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
2419
2420
24212) iASL Compiler/Disassembler and Tools:
2422
2423Disassembler: Improved pathname support for emitted External()
2424statements. This change adds full pathname support for external names
2425that have been resolved internally by the inclusion of additional ACPI
2426tables (via the iASL -e option). Without this change, the disassembler
2427can emit multiple externals for the same object, or it become confused
2428when the Scope() operator is used on an external object. Overall, greatly
2429improves the ability to actually recompile the emitted ASL code when
2430objects a referenced across multiple ACPI tables. Reported by Michael
2431Tsirkin (mst@redhat.com).
2432
2433Tests/ASLTS: Updated functional control suite to execute with no errors.
2434David Box. Fixed several errors related to the testing of the interpreter
2435slack mode. Lv Zheng.
2436
2437iASL: Added support to detect names that are declared within a control
2438method, but are unused (these are temporary names that are only valid
2439during the time the method is executing). A remark is issued for these
2440cases. ACPICA BZ 1022.
2441
2442iASL: Added full support for the DBG2 table. Adds full disassembler,
2443table compiler, and template generator support for the DBG2 table (Debug
2444Port 2 table).
2445
2446iASL: Added full support for the PCCT table, update the table definition.
2447Updates the PCCT table definition in the actbl3.h header and adds table
2448compiler and template generator support.
2449
2450iASL: Added an option to emit only error messages (no warnings/remarks).
2451The -ve option will enable only error messages, warnings and remarks are
2452suppressed. This can simplify debugging when only the errors are
2453important, such as when an ACPI table is disassembled and there are many
2454warnings and remarks -- but only the actual errors are of real interest.
2455
2456Example ACPICA code (source/tools/examples): Updated the example code so
2457that it builds to an actual working program, not just example code. Added
2458ACPI tables and execution of an example control method in the DSDT. Added
2459makefile support for Unix generation.
2460
2461
2462----------------------------------------
246315 November 2013. Summary of changes for version 20131115:
2464
2465This release is available at https://acpica.org/downloads
2466
2467
24681) ACPICA kernel-resident subsystem:
2469
2470Resource Manager: Fixed loop termination for the "get AML length"
2471function. The loop previously had an error termination on a NULL resource
2472pointer, which can never happen since the loop simply increments a valid
2473resource pointer. This fix changes the loop to terminate with an error on
2474an invalid end-of-buffer condition. The problem can be seen as an
2475infinite loop by callers to AcpiSetCurrentResources with an invalid or
2476corrupted resource descriptor, or a resource descriptor that is missing
2477an END_TAG descriptor. Reported by Dan Carpenter
2478<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
2479
2480Table unload and ACPICA termination: Delete all attached data objects
2481during namespace node deletion. This fix updates namespace node deletion
2482to delete the entire list of attached objects (attached via
2483AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
24841024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
2485
2486ACPICA termination: Added support to delete all objects attached to the
2487root namespace node. This fix deletes any and all objects that have been
2488attached to the root node via AcpiAttachData. Previously, none of these
2489objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
2490
2491Debug output: Do not emit the function nesting level for the in-kernel
2492build. The nesting level is really only useful during a single-thread
2493execution. Therefore, only enable this output for the AcpiExec utility.
2494Also, only emit the thread ID when executing under AcpiExec (Context
2495switches are still always detected and a message is emitted). ACPICA BZ
2496972.
2497
2498Example Code and Data Size: These are the sizes for the OS-independent
2499acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2500debug version of the code includes the debug output trace mechanism and
2501has a much larger code and data size.
2502
2503  Current Release:
2504    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
2505    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
2506  Previous Release:
2507    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
2508    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
2509
2510
25112) iASL Compiler/Disassembler and Tools:
2512
2513AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
2514correct portable POSIX header for terminal control functions.
2515
2516Disassembler: Fixed control method invocation issues related to the use
2517of the CondRefOf() operator. The problem is seen in the disassembly where
2518control method invocations may not be disassembled properly if the
2519control method name has been used previously as an argument to CondRefOf.
2520The solution is to not attempt to emit an external declaration for the
2521CondRefOf target (it is not necessary in the first place). This prevents
2522disassembler object type confusion. ACPICA BZ 988.
2523
2524Unix Makefiles: Added an option to disable compiler optimizations and the
2525_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
2526with optimizations (reportedly, gcc 4.4 for example). This change adds a
2527command line option for make (NOOPT) that disables all compiler
2528optimizations and the _FORTIFY_SOURCE compiler flag. The default
2529optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
25301034. Lv Zheng, Bob Moore.
2531
2532Tests/ASLTS: Added options to specify individual test cases and modes.
2533This allows testers running aslts.sh to optionally specify individual
2534test modes and test cases. Also added an option to disable the forced
2535generation of the ACPICA tools from source if desired. Lv Zheng.
2536
2537----------------------------------------
253827 September 2013. Summary of changes for version 20130927:
2539
2540This release is available at https://acpica.org/downloads
2541
2542
25431) ACPICA kernel-resident subsystem:
2544
2545Fixed a problem with store operations to reference objects. This change
2546fixes a problem where a Store operation to an ArgX object that contained
2547a
2548reference to a field object did not complete the automatic dereference
2549and
2550then write to the actual field object. Instead, the object type of the
2551field object was inadvertently changed to match the type of the source
2552operand. The new behavior will actually write to the field object (buffer
2553field or field unit), thus matching the correct ACPI-defined behavior.
2554
2555Implemented support to allow the host to redefine individual OSL
2556prototypes. This change enables the host to redefine OSL prototypes found
2557in the acpiosxf.h file. This allows the host to implement OSL interfaces
2558with a macro or inlined function. Further, it allows the host to add any
2559additional required modifiers such as __iomem, __init, __exit, etc., as
2560necessary on a per-interface basis. Enables maximum flexibility for the
2561OSL interfaces. Lv Zheng.
2562
2563Hardcoded the access width for the FADT-defined reset register. The ACPI
2564specification requires the reset register width to be 8 bits. ACPICA now
2565hardcodes the width to 8 and ignores the FADT width value. This provides
2566compatibility with other ACPI implementations that have allowed BIOS code
2567with bad register width values to go unnoticed. Matthew Garett, Bob
2568Moore,
2569Lv Zheng.
2570
2571Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
2572used
2573in the OSL header (acpiosxf). The change modifies the position of this
2574macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
2575build issues if the OSL defines the implementation of the interface to be
2576an inline stub function. Lv Zheng.
2577
2578Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
2579initialization interfaces. This change adds a new macro for the main init
2580and terminate external interfaces in order to support hosts that require
2581additional or different processing for these functions. Changed from
2582ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
2583Zheng, Bob Moore.
2584
2585Cleaned up the memory allocation macros for configurability. In the
2586common
2587case, the ACPI_ALLOCATE and related macros now resolve directly to their
2588respective AcpiOs* OSL interfaces. Two options:
25891) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
2590default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
25912) For AcpiExec (and for debugging), the macros can optionally be
2592resolved
2593to the local ACPICA interfaces that track each allocation (local tracking
2594is used to immediately detect memory leaks).
2595Lv Zheng.
2596
2597Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
2598to predefine this macro to either TRUE or FALSE during the system build.
2599
2600Replaced __FUNCTION_ with __func__ in the gcc-specific header.
2601
2602Example Code and Data Size: These are the sizes for the OS-independent
2603acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2604debug version of the code includes the debug output trace mechanism and
2605has a much larger code and data size.
2606
2607  Current Release:
2608    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
2609    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
2610  Previous Release:
2611    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
2612    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2613
2614
26152) iASL Compiler/Disassembler and Tools:
2616
2617iASL: Implemented wildcard support for the -e option. This simplifies use
2618when there are many SSDTs that must be included to resolve external
2619method
2620declarations. ACPICA BZ 1041. Example:
2621    iasl -e ssdt*.dat -d dsdt.dat
2622
2623AcpiExec: Add history/line-editing for Unix/Linux systems. This change
2624adds a portable module that implements full history and limited line
2625editing for Unix and Linux systems. It does not use readline() due to
2626portability issues. Instead it uses the POSIX termio interface to put the
2627terminal in raw input mode so that the various special keys can be
2628trapped
2629(such as up/down-arrow for history support and left/right-arrow for line
2630editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
2631
2632AcpiXtract: Add support to handle (ignore) "empty" lines containing only
2633one or more spaces. This provides compatible with early or different
2634versions of the AcpiDump utility. ACPICA BZ 1044.
2635
2636AcpiDump: Do not ignore tables that contain only an ACPI table header.
2637Apparently, some BIOSs create SSDTs that contain an ACPI table header but
2638no other data. This change adds support to dump these tables. Any tables
2639shorter than the length of an ACPI table header remain in error (an error
2640message is emitted). Reported by Yi Li.
2641
2642Debugger: Echo actual command along with the "unknown command" message.
2643
2644----------------------------------------
264523 August 2013. Summary of changes for version 20130823:
2646
26471) ACPICA kernel-resident subsystem:
2648
2649Implemented support for host-installed System Control Interrupt (SCI)
2650handlers. Certain ACPI functionality requires the host to handle raw
2651SCIs. For example, the "SCI Doorbell" that is defined for memory power
2652state support requires the host device driver to handle SCIs to examine
2653if the doorbell has been activated. Multiple SCI handlers can be
2654installed to allow for future expansion. New external interfaces are
2655AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
2656details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
2657
2658Operation region support: Never locally free the handler "context"
2659pointer. This change removes some dangerous code that attempts to free
2660the handler context pointer in some (rare) circumstances. The owner of
2661the handler owns this pointer and the ACPICA code should never touch it.
2662Although not seen to be an issue in any kernel, it did show up as a
2663problem (fault) under AcpiExec. Also, set the internal storage field for
2664the context pointer to zero when the region is deactivated, simply for
2665sanity. David Box. ACPICA BZ 1039.
2666
2667AcpiRead: On error, do not modify the return value target location. If an
2668error happens in the middle of a split 32/32 64-bit I/O operation, do not
2669modify the target of the return value pointer. Makes the code consistent
2670with the rest of ACPICA. Bjorn Helgaas.
2671
2672Example Code and Data Size: These are the sizes for the OS-independent
2673acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2674debug version of the code includes the debug output trace mechanism and
2675has a much larger code and data size.
2676
2677  Current Release:
2678    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
2679    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2680  Previous Release:
2681    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
2682    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
2683
2684
26852) iASL Compiler/Disassembler and Tools:
2686
2687AcpiDump: Implemented several new features and fixed some problems:
26881) Added support to dump the RSDP, RSDT, and XSDT tables.
26892) Added support for multiple table instances (SSDT, UEFI).
26903) Added option to dump "customized" (overridden) tables (-c).
26914) Fixed a problem where some table filenames were improperly
2692constructed.
26935) Improved some error messages, removed some unnecessary messages.
2694
2695iASL: Implemented additional support for disassembly of ACPI tables that
2696contain invocations of external control methods. The -fe<file> option
2697allows the import of a file that specifies the external methods along
2698with the required number of arguments for each -- allowing for the
2699correct disassembly of the table. This is a workaround for a limitation
2700of AML code where the disassembler often cannot determine the number of
2701arguments required for an external control method and generates incorrect
2702ASL code. See the iASL reference for details. ACPICA BZ 1030.
2703
2704Debugger: Implemented a new command (paths) that displays the full
2705pathnames (namepaths) and object types of all objects in the namespace.
2706This is an alternative to the namespace command.
2707
2708Debugger: Implemented a new command (sci) that invokes the SCI dispatch
2709mechanism and any installed handlers.
2710
2711iASL: Fixed a possible segfault for "too many parent prefixes" condition.
2712This can occur if there are too many parent prefixes in a namepath (for
2713example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
2714
2715Application OSLs: Set the return value for the PCI read functions. These
2716functions simply return AE_OK, but should set the return value to zero
2717also. This change implements this. ACPICA BZ 1038.
2718
2719Debugger: Prevent possible command line buffer overflow. Increase the
2720size of a couple of the debugger line buffers, and ensure that overflow
2721cannot happen. ACPICA BZ 1037.
2722
2723iASL: Changed to abort immediately on serious errors during the parsing
2724phase. Due to the nature of ASL, there is no point in attempting to
2725compile these types of errors, and they typically end up causing a
2726cascade of hundreds of errors which obscure the original problem.
2727
2728----------------------------------------
272925 July 2013. Summary of changes for version 20130725:
2730
27311) ACPICA kernel-resident subsystem:
2732
2733Fixed a problem with the DerefOf operator where references to FieldUnits
2734and BufferFields incorrectly returned the parent object, not the actual
2735value of the object. After this change, a dereference of a FieldUnit
2736reference results in a read operation on the field to get the value, and
2737likewise, the appropriate BufferField value is extracted from the target
2738buffer.
2739
2740Fixed a problem where the _WAK method could cause a fault under these
2741circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
2742method returned no value. The problem is rarely seen because most kernels
2743run ACPICA in slack mode.
2744
2745For the DerefOf operator, a fatal error now results if an attempt is made
2746to dereference a reference (created by the Index operator) to a NULL
2747package element. Provides compatibility with other ACPI implementations,
2748and this behavior will be added to a future version of the ACPI
2749specification.
2750
2751The ACPI Power Management Timer (defined in the FADT) is now optional.
2752This provides compatibility with other ACPI implementations and will
2753appear in the next version of the ACPI specification. If there is no PM
2754Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
2755zero in the FADT indicates no PM timer.
2756
2757Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
2758allows the host to globally enable/disable all vendor strings, all
2759feature strings, or both. Intended to be primarily used for debugging
2760purposes only. Lv Zheng.
2761
2762Expose the collected _OSI data to the host via a global variable. This
2763data tracks the highest level vendor ID that has been invoked by the BIOS
2764so that the host (and potentially ACPICA itself) can change behaviors
2765based upon the age of the BIOS.
2766
2767Example Code and Data Size: These are the sizes for the OS-independent
2768acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2769debug version of the code includes the debug output trace mechanism and
2770has a much larger code and data size.
2771
2772  Current Release:
2773    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
2774    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2775  Previous Release:
2776    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
2777    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
2778
2779
27802) iASL Compiler/Disassembler and Tools:
2781
2782iASL: Created the following enhancements for the -so option (create
2783offset table):
27841)Add offsets for the last nameseg in each namepath for every supported
2785object type
27862)Add support for Processor, Device, Thermal Zone, and Scope objects
27873)Add the actual AML opcode for the parent object of every supported
2788object type
27894)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
2790
2791Disassembler: Emit all unresolved external symbols in a single block.
2792These are external references to control methods that could not be
2793resolved, and thus, the disassembler had to make a guess at the number of
2794arguments to parse.
2795
2796iASL: The argument to the -T option (create table template) is now
2797optional. If not specified, the default table is a DSDT, typically the
2798most common case.
2799
2800----------------------------------------
280126 June 2013. Summary of changes for version 20130626:
2802
28031) ACPICA kernel-resident subsystem:
2804
2805Fixed an issue with runtime repair of the _CST object. Null or invalid
2806elements were not always removed properly. Lv Zheng.
2807
2808Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
2809FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
2810the maximum number of GPEs is 1016. Use of multiple GPE block devices
2811makes the system-wide number of GPEs essentially unlimited.
2812
2813Example Code and Data Size: These are the sizes for the OS-independent
2814acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2815debug version of the code includes the debug output trace mechanism and
2816has a much larger code and data size.
2817
2818  Current Release:
2819    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
2820    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
2821  Previous Release:
2822    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
2823    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
2824
2825
28262) iASL Compiler/Disassembler and Tools:
2827
2828Portable AcpiDump: Implemented full support for the Linux and FreeBSD
2829hosts. Now supports Linux, FreeBSD, and Windows.
2830
2831Disassembler: Added some missing types for the HEST and EINJ tables: "Set
2832Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
2833
2834iASL/Preprocessor: Implemented full support for nested
2835#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
2836
2837Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
2838max. The original purpose of this constraint was to limit the amount of
2839debug output. However, the string function in question (UtPrintString) is
2840now used for the disassembler also, where 256 bytes is insufficient.
2841Reported by RehabMan@GitHub.
2842
2843iASL/DataTables: Fixed some problems and issues with compilation of DMAR
2844tables. ACPICA BZ 999. Lv Zheng.
2845
2846iASL: Fixed a couple of error exit issues that could result in a "Could
2847not delete <file>" message during ASL compilation.
2848
2849AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
2850the actual signatures for these tables are "FACP" and "APIC",
2851respectively.
2852
2853AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
2854tables are allowed to have multiple instances.
2855
2856----------------------------------------
285717 May 2013. Summary of changes for version 20130517:
2858
28591) ACPICA kernel-resident subsystem:
2860
2861Fixed a regression introduced in version 20130328 for _INI methods. This
2862change fixes a problem introduced in 20130328 where _INI methods are no
2863longer executed properly because of a memory block that was not
2864initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
2865<tomasz.nowicki@linaro.org>.
2866
2867Fixed a possible problem with the new extended sleep registers in the
2868ACPI
28695.0 FADT. Do not use these registers (even if populated) unless the HW-
2870reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
28711020. Lv Zheng.
2872
2873Implemented return value repair code for _CST predefined objects: Sort
2874the
2875list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
2876
2877Implemented a debug-only option to disable loading of SSDTs from the
2878RSDT/XSDT during ACPICA initialization. This can be useful for debugging
2879ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
2880acglobal.h - ACPICA BZ 1005. Lv Zheng.
2881
2882Fixed some issues in the ACPICA initialization and termination code:
2883Tomasz Nowicki <tomasz.nowicki@linaro.org>
28841) Clear events initialized flag upon event component termination. ACPICA
2885BZ 1013.
28862) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
28873) Delete global lock pending lock during termination. ACPICA BZ 1012.
28884) Clear debug buffer global on termination to prevent possible multiple
2889delete. ACPICA BZ 1010.
2890
2891Standardized all switch() blocks across the entire source base. After
2892many
2893years, different formatting for switch() had crept in. This change makes
2894the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
2895
2896Split some files to enhance ACPICA modularity and configurability:
28971) Split buffer dump routines into utilities/utbuffer.c
28982) Split internal error message routines into utilities/uterror.c
28993) Split table print utilities into tables/tbprint.c
29004) Split iASL command-line option processing into asloptions.c
2901
2902Makefile enhancements:
29031) Support for all new files above.
29042) Abort make on errors from any subcomponent. Chao Guan.
29053) Add build support for Apple Mac OS X. Liang Qi.
2906
2907Example Code and Data Size: These are the sizes for the OS-independent
2908acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2909debug version of the code includes the debug output trace mechanism and
2910has a much larger code and data size.
2911
2912  Current Release:
2913    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
2914    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
2915  Previous Release:
2916    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
2917    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
2918
2919
29202) iASL Compiler/Disassembler and Tools:
2921
2922New utility: Implemented an easily portable version of the acpidump
2923utility to extract ACPI tables from the system (or a file) in an ASCII
2924hex
2925dump format. The top-level code implements the various command line
2926options, file I/O, and table dump routines. To port to a new host, only
2927three functions need to be implemented to get tables -- since this
2928functionality is OS-dependent. See the tools/acpidump/apmain.c module and
2929the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
29301) The Windows version obtains the ACPI tables from the Registry.
29312) The Linux version is under development.
29323) Other hosts - If an OS-dependent module is submitted, it will be
2933distributed with ACPICA.
2934
2935iASL: Fixed a regression for -D preprocessor option (define symbol). A
2936restructuring/change to the initialization sequence caused this option to
2937no longer work properly.
2938
2939iASL: Implemented a mechanism to disable specific warnings and remarks.
2940Adds a new command line option, "-vw <messageid> as well as "#pragma
2941disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
2942
2943iASL: Fix for too-strict package object validation. The package object
2944validation for return values from the predefined names is a bit too
2945strict, it does not allow names references within the package (which will
2946be resolved at runtime.) These types of references cannot be validated at
2947compile time. This change ignores named references within package objects
2948for names that return or define static packages.
2949
2950Debugger: Fixed the 80-character command line limitation for the History
2951command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
2952
2953iASL: Added control method and package support for the -so option
2954(generates AML offset table for BIOS support.)
2955
2956iASL: issue a remark if a non-serialized method creates named objects. If
2957a thread blocks within the method for any reason, and another thread
2958enters the method, the method will fail because an attempt will be made
2959to
2960create the same (named) object twice. In this case, issue a remark that
2961the method should be marked serialized. NOTE: may become a warning later.
2962ACPICA BZ 909.
2963
2964----------------------------------------
296518 April 2013. Summary of changes for version 20130418:
2966
29671) ACPICA kernel-resident subsystem:
2968
2969Fixed a possible buffer overrun during some rare but specific field unit
2970read operations. This overrun can only happen if the DSDT version is 1 --
2971meaning that all AML integers are 32 bits -- and the field length is
2972between 33 and 55 bits long. During the read, an internal buffer object
2973is
2974created for the field unit because the field is larger than an integer
2975(32
2976bits). However, in this case, the buffer will be incorrectly written
2977beyond the end because the buffer length is less than the internal
2978minimum
2979of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
2980long, but a full 8 bytes will be written.
2981
2982Updated the Embedded Controller "orphan" _REG method support. This refers
2983to _REG methods under the EC device that have no corresponding operation
2984region. This is allowed by the ACPI specification. This update removes a
2985dependency on the existence an ECDT table. It will execute an orphan _REG
2986method as long as the operation region handler for the EC is installed at
2987the EC device node and not the namespace root. Rui Zhang (original
2988update), Bob Moore (update/integrate).
2989
2990Implemented run-time argument typechecking for all predefined ACPI names
2991(_STA, _BIF, etc.) This change performs object typechecking on all
2992incoming arguments for all predefined names executed via
2993AcpiEvaluateObject. This ensures that ACPI-related device drivers are
2994passing correct object types as well as the correct number of arguments
2995(therefore identifying any issues immediately). Also, the ASL/namespace
2996definition of the predefined name is checked against the ACPI
2997specification for the proper argument count. Adds one new file,
2998nsarguments.c
2999
3000Changed an exception code for the ASL UnLoad() operator. Changed the
3001exception code for the case where the input DdbHandle is invalid, from
3002AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
3003
3004Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
3005global makefile. The use of this flag causes compiler errors on earlier
3006versions of GCC, so it has been removed for compatibility.
3007
3008Miscellaneous cleanup:
30091) Removed some unused/obsolete macros
30102) Fixed a possible memory leak in the _OSI support
30113) Removed an unused variable in the predefined name support
30124) Windows OSL: remove obsolete reference to a memory list field
3013
3014Example Code and Data Size: These are the sizes for the OS-independent
3015acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3016debug version of the code includes the debug output trace mechanism and
3017has a much larger code and data size.
3018
3019  Current Release:
3020    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
3021    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
3022  Previous Release:
3023    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
3024    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
3025
3026
30272) iASL Compiler/Disassembler and Tools:
3028
3029AcpiExec: Added installation of a handler for the SystemCMOS address
3030space. This prevents control method abort if a method accesses this
3031space.
3032
3033AcpiExec: Added support for multiple EC devices, and now install EC
3034operation region handler(s) at the actual EC device instead of the
3035namespace root. This reflects the typical behavior of host operating
3036systems.
3037
3038AcpiExec: Updated to ensure that all operation region handlers are
3039installed before the _REG methods are executed. This prevents a _REG
3040method from aborting if it accesses an address space has no handler.
3041AcpiExec installs a handler for every possible address space.
3042
3043Debugger: Enhanced the "handlers" command to display non-root handlers.
3044This change enhances the handlers command to display handlers associated
3045with individual devices throughout the namespace, in addition to the
3046currently supported display of handlers associated with the root
3047namespace
3048node.
3049
3050ASL Test Suite: Several test suite errors have been identified and
3051resolved, reducing the total error count during execution. Chao Guan.
3052
3053----------------------------------------
305428 March 2013. Summary of changes for version 20130328:
3055
30561) ACPICA kernel-resident subsystem:
3057
3058Fixed several possible race conditions with the internal object reference
3059counting mechanism. Some of the external ACPICA interfaces update object
3060reference counts without holding the interpreter or namespace lock. This
3061change adds a spinlock to protect reference count updates on the internal
3062ACPICA objects. Reported by and with assistance from Andriy Gapon
3063(avg@FreeBSD.org).
3064
3065FADT support: Removed an extraneous warning for very large GPE register
3066sets. This change removes a size mismatch warning if the legacy length
3067field for a GPE register set is larger than the 64-bit GAS structure can
3068accommodate. GPE register sets can be larger than the 255-bit width
3069limitation of the GAS structure. Linn Crosetto (linn@hp.com).
3070
3071_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
3072return from this interface. Handles a possible timeout case if
3073ACPI_WAIT_FOREVER is modified by the host to be a value less than
3074"forever". Jung-uk Kim.
3075
3076Predefined name support: Add allowed/required argument type information
3077to
3078the master predefined info table. This change adds the infrastructure to
3079enable typechecking on incoming arguments for all predefined
3080methods/objects. It does not actually contain the code that will fully
3081utilize this information, this is still under development. Also condenses
3082some duplicate code for the predefined names into a new module,
3083utilities/utpredef.c
3084
3085Example Code and Data Size: These are the sizes for the OS-independent
3086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3087debug version of the code includes the debug output trace mechanism and
3088has a much larger code and data size.
3089
3090  Previous Release:
3091    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
3092    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
3093  Current Release:
3094    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
3095    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
3096
3097
30982) iASL Compiler/Disassembler and Tools:
3099
3100iASL: Implemented a new option to simplify the development of ACPI-
3101related
3102BIOS code. Adds support for a new "offset table" output file. The -so
3103option will create a C table containing the AML table offsets of various
3104named objects in the namespace so that BIOS code can modify them easily
3105at
3106boot time. This can simplify BIOS runtime code by eliminating expensive
3107searches for "magic values", enhancing boot times and adding greater
3108reliability. With assistance from Lee Hamel.
3109
3110iASL: Allow additional predefined names to return zero-length packages.
3111Now, all predefined names that are defined by the ACPI specification to
3112return a "variable-length package of packages" are allowed to return a
3113zero length top-level package. This allows the BIOS to tell the host that
3114the requested feature is not supported, and supports existing BIOS/ASL
3115code and practices.
3116
3117iASL: Changed the "result not used" warning to an error. This is the case
3118where an ASL operator is effectively a NOOP because the result of the
3119operation is not stored anywhere. For example:
3120    Add (4, Local0)
3121There is no target (missing 3rd argument), nor is the function return
3122value used. This is potentially a very serious problem -- since the code
3123was probably intended to do something, but for whatever reason, the value
3124was not stored. Therefore, this issue has been upgraded from a warning to
3125an error.
3126
3127AcpiHelp: Added allowable/required argument types to the predefined names
3128info display. This feature utilizes the recent update to the predefined
3129names table (above).
3130
3131----------------------------------------
313214 February 2013. Summary of changes for version 20130214:
3133
31341) ACPICA Kernel-resident Subsystem:
3135
3136Fixed a possible regression on some hosts: Reinstated the safe return
3137macros (return_ACPI_STATUS, etc.) that ensure that the argument is
3138evaluated only once. Although these macros are not needed for the ACPICA
3139code itself, they are often used by ACPI-related host device drivers
3140where
3141the safe feature may be necessary.
3142
3143Fixed several issues related to the ACPI 5.0 reduced hardware support
3144(SOC): Now ensure that if the platform declares itself as hardware-
3145reduced
3146via the FADT, the following functions become NOOPs (and always return
3147AE_OK) because ACPI is always enabled by definition on these machines:
3148  AcpiEnable
3149  AcpiDisable
3150  AcpiHwGetMode
3151  AcpiHwSetMode
3152
3153Dynamic Object Repair: Implemented additional runtime repairs for
3154predefined name return values. Both of these repairs can simplify code in
3155the related device drivers that invoke these methods:
31561) For the _STR and _MLS names, automatically repair/convert an ASCII
3157string to a Unicode buffer.
31582) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
3159a
3160lone end tag descriptor in the following cases: A Return(0) was executed,
3161a null buffer was returned, or no object at all was returned (non-slack
3162mode only). Adds a new file, nsconvert.c
3163ACPICA BZ 998. Bob Moore, Lv Zheng.
3164
3165Resource Manager: Added additional code to prevent possible infinite
3166loops
3167while traversing corrupted or ill-formed resource template buffers. Check
3168for zero-length resource descriptors in all code that loops through
3169resource templates (the length field is used to index through the
3170template). This change also hardens the external AcpiWalkResources and
3171AcpiWalkResourceBuffer interfaces.
3172
3173Local Cache Manager: Enhanced the main data structure to eliminate an
3174unnecessary mechanism to access the next object in the list. Actually
3175provides a small performance enhancement for hosts that use the local
3176ACPICA cache manager. Jung-uk Kim.
3177
3178Example Code and Data Size: These are the sizes for the OS-independent
3179acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3180debug version of the code includes the debug output trace mechanism and
3181has a much larger code and data size.
3182
3183  Previous Release:
3184    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
3185    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
3186  Current Release:
3187    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
3188    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
3189
3190
31912) iASL Compiler/Disassembler and Tools:
3192
3193iASL/Disassembler: Fixed several issues with the definition of the ACPI
31945.0 RASF table (RAS Feature Table). This change incorporates late changes
3195that were made to the ACPI 5.0 specification.
3196
3197iASL/Disassembler: Added full support for the following new ACPI tables:
3198  1) The MTMR table (MID Timer Table)
3199  2) The VRTC table (Virtual Real Time Clock Table).
3200Includes header file, disassembler, table compiler, and template support
3201for both tables.
3202
3203iASL: Implemented compile-time validation of package objects returned by
3204predefined names. This new feature validates static package objects
3205returned by the various predefined names defined to return packages. Both
3206object types and package lengths are validated, for both parent packages
3207and sub-packages, if any. The code is similar in structure and behavior
3208to
3209the runtime repair mechanism within the AML interpreter and uses the
3210existing predefined name information table. Adds a new file, aslprepkg.c.
3211ACPICA BZ 938.
3212
3213iASL: Implemented auto-detection of binary ACPI tables for disassembly.
3214This feature detects a binary file with a valid ACPI table header and
3215invokes the disassembler automatically. Eliminates the need to
3216specifically invoke the disassembler with the -d option. ACPICA BZ 862.
3217
3218iASL/Disassembler: Added several warnings for the case where there are
3219unresolved control methods during the disassembly. This can potentially
3220cause errors when the output file is compiled, because the disassembler
3221assumes zero method arguments in these cases (it cannot determine the
3222actual number of arguments without resolution/definition of the method).
3223
3224Debugger: Added support to display all resources with a single command.
3225Invocation of the resources command with no arguments will now display
3226all
3227resources within the current namespace.
3228
3229AcpiHelp: Added descriptive text for each ACPICA exception code displayed
3230via the -e option.
3231
3232----------------------------------------
323317 January 2013. Summary of changes for version 20130117:
3234
32351) ACPICA Kernel-resident Subsystem:
3236
3237Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
3238return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
3239objects to return a package containing one integer, most BIOS code
3240returns
3241two integers and the previous code reflects that. However, we also need
3242to
3243support BIOS code that actually implements to the ACPI spec, and this
3244change reflects this.
3245
3246Fixed two issues with the ACPI_DEBUG_PRINT macros:
32471) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
3248C compilers that require this support.
32492) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
3250ACPI_DEBUG is already used by many of the various hosts.
3251
3252Updated all ACPICA copyrights and signons to 2013. Added the 2013
3253copyright to all module headers and signons, including the standard Linux
3254header. This affects virtually every file in the ACPICA core subsystem,
3255iASL compiler, all ACPICA utilities, and the test suites.
3256
3257Example Code and Data Size: These are the sizes for the OS-independent
3258acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3259debug version of the code includes the debug output trace mechanism and
3260has a much larger code and data size.
3261
3262  Previous Release:
3263    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
3264    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
3265  Current Release:
3266    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
3267    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
3268
3269
32702) iASL Compiler/Disassembler and Tools:
3271
3272Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
3273prevent a possible fault on some hosts. Some C libraries modify the arg
3274pointer parameter to vfprintf making it difficult to call it twice in the
3275AcpiOsVprintf function. Use a local buffer to workaround this issue. This
3276does not affect the Windows OSL since the Win C library does not modify
3277the arg pointer. Chao Guan, Bob Moore.
3278
3279iASL: Fixed a possible infinite loop when the maximum error count is
3280reached. If an output file other than the .AML file is specified (such as
3281a listing file), and the maximum number of errors is reached, do not
3282attempt to flush data to the output file(s) as the compiler is aborting.
3283This can cause an infinite loop as the max error count code essentially
3284keeps calling itself.
3285
3286iASL/Disassembler: Added an option (-in) to ignore NOOP
3287opcodes/operators.
3288Implemented for both the compiler and the disassembler. Often, the NOOP
3289opcode is used as padding for packages that are changed dynamically by
3290the
3291BIOS. When disassembled and recompiled, these NOOPs will cause syntax
3292errors. This option causes the disassembler to ignore all NOOP opcodes
3293(0xA3), and it also causes the compiler to ignore all ASL source code
3294NOOP
3295statements as well.
3296
3297Debugger: Enhanced the Sleep command to execute all sleep states. This
3298change allows Sleep to be invoked with no arguments and causes the
3299debugger to execute all of the sleep states, 0-5, automatically.
3300
3301----------------------------------------
330220 December 2012. Summary of changes for version 20121220:
3303
33041) ACPICA Kernel-resident Subsystem:
3305
3306Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
3307alternate entry point for AcpiWalkResources and improves the usability of
3308the resource manager by accepting as input a buffer containing the output
3309of either a _CRS, _PRS, or _AEI method. The key functionality is that the
3310input buffer is not deleted by this interface so that it can be used by
3311the host later. See the ACPICA reference for details.
3312
3313Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
3314(DSDT version < 2). The constant will be truncated and this warning
3315reflects that behavior.
3316
3317Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
3318ExtendedInterrupt, and GpioInt descriptors. This change adds support to
3319both get and set the new wake bit in these descriptors, separately from
3320the existing share bit. Reported by Aaron Lu.
3321
3322Interpreter: Fix Store() when an implicit conversion is not possible. For
3323example, in the cases such as a store of a string to an existing package
3324object, implement the store as a CopyObject(). This is a small departure
3325from the ACPI specification which states that the control method should
3326be
3327aborted in this case. However, the ASLTS suite depends on this behavior.
3328
3329Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
3330macros: check if debug output is currently enabled as soon as possible to
3331minimize performance impact if debug is in fact not enabled.
3332
3333Source code restructuring: Cleanup to improve modularity. The following
3334new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
3335psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
3336Associated makefiles and project files have been updated.
3337
3338Changed an exception code for LoadTable operator. For the case where one
3339of the input strings is too long, change the returned exception code from
3340AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
3341
3342Fixed a possible memory leak in dispatcher error path. On error, delete
3343the mutex object created during method mutex creation. Reported by
3344tim.gardner@canonical.com.
3345
3346Example Code and Data Size: These are the sizes for the OS-independent
3347acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3348debug version of the code includes the debug output trace mechanism and
3349has a much larger code and data size.
3350
3351  Previous Release:
3352    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
3353    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3354  Current Release:
3355    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
3356    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
3357
3358
33592) iASL Compiler/Disassembler and Tools:
3360
3361iASL: Disallow a method call as argument to the ObjectType ASL operator.
3362This change tracks an errata to the ACPI 5.0 document. The AML grammar
3363will not allow the interpreter to differentiate between a method and a
3364method invocation when these are used as an argument to the ObjectType
3365operator. The ACPI specification change is to disallow a method
3366invocation
3367(UserTerm) for the ObjectType operator.
3368
3369Finish support for the TPM2 and CSRT tables in the headers, table
3370compiler, and disassembler.
3371
3372Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
3373always expires immediately if the semaphore is not available. The
3374original
3375code was using a relative-time timeout, but sem_timedwait requires the
3376use
3377of an absolute time.
3378
3379iASL: Added a remark if the Timer() operator is used within a 32-bit
3380table. This operator returns a 64-bit time value that will be truncated
3381within a 32-bit table.
3382
3383iASL Source code restructuring: Cleanup to improve modularity. The
3384following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
3385aslmethod.c, and aslfileio.c. Associated makefiles and project files have
3386been updated.
3387
3388
3389----------------------------------------
339014 November 2012. Summary of changes for version 20121114:
3391
33921) ACPICA Kernel-resident Subsystem:
3393
3394Implemented a performance enhancement for ACPI/AML Package objects. This
3395change greatly increases the performance of Package objects within the
3396interpreter. It changes the processing of reference counts for packages
3397by
3398optimizing for the most common case where the package sub-objects are
3399either Integers, Strings, or Buffers. Increases the overall performance
3400of
3401the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
34022X.)
3403Chao Guan. ACPICA BZ 943.
3404
3405Implemented and deployed common macros to extract flag bits from resource
3406descriptors. Improves readability and maintainability of the code. Fixes
3407a
3408problem with the UART serial bus descriptor for the number of data bits
3409flags (was incorrectly 2 bits, should be 3).
3410
3411Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
3412of the macros and changed the SETx macros to the style of (destination,
3413source). Also added ACPI_CASTx companion macros. Lv Zheng.
3414
3415Example Code and Data Size: These are the sizes for the OS-independent
3416acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3417debug version of the code includes the debug output trace mechanism and
3418has a much larger code and data size.
3419
3420  Previous Release:
3421    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
3422    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3423  Current Release:
3424    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
3425    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3426
3427
34282) iASL Compiler/Disassembler and Tools:
3429
3430Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
3431adds the ShareAndWake and ExclusiveAndWake flags which were added to the
3432Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
3433
3434Disassembler: Fixed a problem with external declaration generation. Fixes
3435a problem where an incorrect pathname could be generated for an external
3436declaration if the original reference to the object includes leading
3437carats (^). ACPICA BZ 984.
3438
3439Debugger: Completed a major update for the Disassemble<method> command.
3440This command was out-of-date and did not properly disassemble control
3441methods that had any reasonable complexity. This fix brings the command
3442up
3443to the same level as the rest of the disassembler. Adds one new file,
3444dmdeferred.c, which is existing code that is now common with the main
3445disassembler and the debugger disassemble command. ACPICA MZ 978.
3446
3447iASL: Moved the parser entry prototype to avoid a duplicate declaration.
3448Newer versions of Bison emit this prototype, so moved the prototype out
3449of
3450the iASL header to where it is actually used in order to avoid a
3451duplicate
3452declaration.
3453
3454iASL/Tools: Standardized use of the stream I/O functions:
3455  1) Ensure check for I/O error after every fopen/fread/fwrite
3456  2) Ensure proper order of size/count arguments for fread/fwrite
3457  3) Use test of (Actual != Requested) after all fwrite, and most fread
3458  4) Standardize I/O error messages
3459Improves reliability and maintainability of the code. Bob Moore, Lv
3460Zheng.
3461ACPICA BZ 981.
3462
3463Disassembler: Prevent duplicate External() statements. During generation
3464of external statements, detect similar pathnames that are actually
3465duplicates such as these:
3466  External (\ABCD)
3467  External (ABCD)
3468Remove all leading '\' characters from pathnames during the external
3469statement generation so that duplicates will be detected and tossed.
3470ACPICA BZ 985.
3471
3472Tools: Replace low-level I/O with stream I/O functions. Replace
3473open/read/write/close with the stream I/O equivalents
3474fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
3475Moore.
3476
3477AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
3478name header so that AcpiXtract recognizes the output file/table.
3479
3480iASL: Remove obsolete -2 option flag. Originally intended to force the
3481compiler/disassembler into an ACPI 2.0 mode, this was never implemented
3482and the entire concept is now obsolete.
3483
3484----------------------------------------
348518 October 2012. Summary of changes for version 20121018:
3486
3487
34881) ACPICA Kernel-resident Subsystem:
3489
3490Updated support for the ACPI 5.0 MPST table. Fixes some problems
3491introduced by late changes to the table as it was added to the ACPI 5.0
3492specification. Includes header, disassembler, and data table compiler
3493support as well as a new version of the MPST template.
3494
3495AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
34965.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
3497methods: _HID, _CID, and _UID.
3498
3499Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
3500ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
3501name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
3502names for their various drivers. Affects the AcpiGetObjectInfo external
3503interface, and other internal interfaces as well.
3504
3505Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
3506This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
3507on machines that support non-aligned transfers. Optimizes for this case
3508rather than using a strncpy. With assistance from Zheng Lv.
3509
3510Resource Manager: Small fix for buffer size calculation. Fixed a one byte
3511error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
3512
3513Added a new debug print message for AML mutex objects that are force-
3514released. At control method termination, any currently acquired mutex
3515objects are force-released. Adds a new debug-only message for each one
3516that is released.
3517
3518Audited/updated all ACPICA return macros and the function debug depth
3519counter: 1) Ensure that all functions that use the various TRACE macros
3520also use the appropriate ACPICA return macros. 2) Ensure that all normal
3521return statements surround the return expression (value) with parens to
3522ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
3523Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
3524
3525Global source code changes/maintenance: All extra lines at the start and
3526end of each source file have been removed for consistency. Also, within
3527comments, all new sentences start with a single space instead of a double
3528space, again for consistency across the code base.
3529
3530Example Code and Data Size: These are the sizes for the OS-independent
3531acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3532debug version of the code includes the debug output trace mechanism and
3533has a much larger code and data size.
3534
3535  Previous Release:
3536    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
3537    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
3538  Current Release:
3539    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
3540    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3541
3542
35432) iASL Compiler/Disassembler and Tools:
3544
3545AcpiExec: Improved the algorithm used for memory leak/corruption
3546detection. Added some intelligence to the code that maintains the global
3547list of allocated memory. The list is now ordered by allocated memory
3548address, significantly improving performance. When running AcpiExec on
3549the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
3550on the platform and/or the environment. Note, this performance
3551enhancement affects the AcpiExec utility only, not the kernel-resident
3552ACPICA code.
3553
3554Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
3555the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
3556incorrect table offset reported for invalid opcodes. Report the original
355732-bit value for bad ACPI_NAMEs (as well as the repaired name.)
3558
3559Disassembler: Enhanced the -vt option to emit the binary table data in
3560hex format to assist with debugging.
3561
3562Fixed a potential filename buffer overflow in osunixdir.c. Increased the
3563size of file structure. Colin Ian King.
3564
3565----------------------------------------
356613 September 2012. Summary of changes for version 20120913:
3567
3568
35691) ACPICA Kernel-resident Subsystem:
3570
3571ACPI 5.0: Added two new notify types for the Hardware Error Notification
3572Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
3573and
3574MCE(6).
3575
3576Table Manager: Merged/removed duplicate code in the root table resize
3577functions. One function is external, the other is internal. Lv Zheng,
3578ACPICA
3579BZ 846.
3580
3581Makefiles: Completely removed the obsolete "Linux" makefiles under
3582acpica/generate/linux. These makefiles are obsolete and have been
3583replaced
3584by
3585the generic unix makefiles under acpica/generate/unix.
3586
3587Makefiles: Ensure that binary files always copied properly. Minor rule
3588change
3589to ensure that the final binary output files are always copied up to the
3590appropriate binary directory (bin32 or bin64.)
3591
3592Example Code and Data Size: These are the sizes for the OS-independent
3593acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3594debug
3595version of the code includes the debug output trace mechanism and has a
3596much
3597larger code and data size.
3598
3599  Previous Release:
3600    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
3601    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
3602  Current Release:
3603    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
3604    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
3605
3606
36072) iASL Compiler/Disassembler and Tools:
3608
3609Disassembler: Fixed a possible fault during the disassembly of resource
3610descriptors when a second parse is required because of the invocation of
3611external control methods within the table. With assistance from
3612adq@lidskialf.net. ACPICA BZ 976.
3613
3614iASL: Fixed a namepath optimization problem. An error can occur if the
3615parse
3616node that contains the namepath to be optimized does not have a parent
3617node
3618that is a named object. This change fixes the problem.
3619
3620iASL: Fixed a regression where the AML file is not deleted on errors. The
3621AML
3622output file should be deleted if there are any errors during the
3623compiler.
3624The
3625only exception is if the -f (force output) option is used. ACPICA BZ 974.
3626
3627iASL: Added a feature to automatically increase internal line buffer
3628sizes.
3629Via realloc(), automatically increase the internal line buffer sizes as
3630necessary to support very long source code lines. The current version of
3631the
3632preprocessor requires a buffer long enough to contain full source code
3633lines.
3634This change increases the line buffer(s) if the input lines go beyond the
3635current buffer size. This eliminates errors that occurred when a source
3636code
3637line was longer than the buffer.
3638
3639iASL: Fixed a problem with constant folding in method declarations. The
3640SyncLevel term is a ByteConstExpr, and incorrect code would be generated
3641if a
3642Type3 opcode was used.
3643
3644Debugger: Improved command help support. For incorrect argument count,
3645display
3646full help for the command. For help command itself, allow an argument to
3647specify a command.
3648
3649Test Suites: Several bug fixes for the ASLTS suite reduces the number of
3650errors during execution of the suite. Guan Chao.
3651
3652----------------------------------------
365316 August 2012. Summary of changes for version 20120816:
3654
3655
36561) ACPICA Kernel-resident Subsystem:
3657
3658Removed all use of the deprecated _GTS and _BFS predefined methods. The
3659_GTS
3660(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
3661deprecated and will probably be removed from the ACPI specification.
3662Windows
3663does not invoke them, and reportedly never will. The final nail in the
3664coffin
3665is that the ACPI specification states that these methods must be run with
3666interrupts off, which is not going to happen in a kernel interpreter.
3667Note:
3668Linux has removed all use of the methods also. It was discovered that
3669invoking these functions caused failures on some machines, probably
3670because
3671they were never tested since Windows does not call them. Affects two
3672external
3673interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
3674ACPICA BZ 969.
3675
3676Implemented support for complex bit-packed buffers returned from the _PLD
3677(Physical Location of Device) predefined method. Adds a new external
3678interface, AcpiDecodePldBuffer that parses the buffer into a more usable
3679C
3680structure. Note: C Bitfields cannot be used for this type of predefined
3681structure since the memory layout of individual bitfields is not defined
3682by
3683the C language. In addition, there are endian concerns where a compiler
3684will
3685change the bitfield ordering based on the machine type. The new ACPICA
3686interface eliminates these issues, and should be called after _PLD is
3687executed. ACPICA BZ 954.
3688
3689Implemented a change to allow a scope change to root (via "Scope (\)")
3690during
3691execution of module-level ASL code (code that is executed at table load
3692time.) Lin Ming.
3693
3694Added the Windows8/Server2012 string for the _OSI method. This change
3695adds
3696a
3697new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
36982012.
3699
3700Added header support for the new ACPI tables DBG2 (Debug Port Table Type
37012)
3702and CSRT (Core System Resource Table).
3703
3704Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
3705names. This simplifies access to the buffers returned by these predefined
3706names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
3707
3708GPE support: Removed an extraneous parameter from the various low-level
3709internal GPE functions. Tang Feng.
3710
3711Removed the linux makefiles from the unix packages. The generate/linux
3712makefiles are obsolete and have been removed from the unix tarball
3713release
3714packages. The replacement makefiles are under generate/unix, and there is
3715a
3716top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
3717
3718Updates for Unix makefiles:
37191) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
37202) Update linker flags (move to end of command line) for AcpiExec
3721utility.
3722Guan Chao.
3723
3724Split ACPICA initialization functions to new file, utxfinit.c. Split from
3725utxface.c to improve modularity and reduce file size.
3726
3727Example Code and Data Size: These are the sizes for the OS-independent
3728acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3729debug version of the code includes the debug output trace mechanism and
3730has a
3731much larger code and data size.
3732
3733  Previous Release:
3734    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
3735    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
3736  Current Release:
3737    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
3738    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
3739
3740
37412) iASL Compiler/Disassembler and Tools:
3742
3743iASL: Fixed a problem with constant folding for fixed-length constant
3744expressions. The constant-folding code was not being invoked for constant
3745expressions that allow the use of type 3/4/5 opcodes to generate
3746constants
3747for expressions such as ByteConstExpr, WordConstExpr, etc. This could
3748result
3749in the generation of invalid AML bytecode. ACPICA BZ 970.
3750
3751iASL: Fixed a generation issue on newer versions of Bison. Newer versions
3752apparently automatically emit some of the necessary externals. This
3753change
3754handles these versions in order to eliminate generation warnings.
3755
3756Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
3757
3758Disassembler: Add support to decode _PLD buffers. The decoded buffer
3759appears
3760within comments in the output file.
3761
3762Debugger: Fixed a regression with the "Threads" command where
3763AE_BAD_PARAMETER was always returned.
3764
3765----------------------------------------
376611 July 2012. Summary of changes for version 20120711:
3767
37681) ACPICA Kernel-resident Subsystem:
3769
3770Fixed a possible fault in the return package object repair code. Fixes a
3771problem that can occur when a lone package object is wrapped with an
3772outer
3773package object in order to force conformance to the ACPI specification.
3774Can
3775affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
3776_DLM,
3777_CSD, _PSD, _TSD.
3778
3779Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
3780PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
3781ARB_DIS bit must be implemented in the host-dependent C3 processor power
3782state
3783support. Note, ARB_DIS is obsolete and only applies to older chipsets,
3784both
3785Intel and other vendors. (for Intel: ICH4-M and earlier)
3786
3787This change removes the code to disable/enable bus master arbitration
3788during
3789suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
3790causes
3791resume problems on some machines. The change has been in use for over
3792seven
3793years within Linux.
3794
3795Implemented two new external interfaces to support host-directed dynamic
3796ACPI
3797table load and unload. They are intended to simplify the host
3798implementation
3799of hot-plug support:
3800  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
3801  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
3802table.
3803See the ACPICA reference for additional details. Adds one new file,
3804components/tables/tbxfload.c
3805
3806Implemented and deployed two new interfaces for errors and warnings that
3807are
3808known to be caused by BIOS/firmware issues:
3809  AcpiBiosError: Prints "ACPI Firmware Error" message.
3810  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
3811Deployed these new interfaces in the ACPICA Table Manager code for ACPI
3812table
3813and FADT errors. Additional deployment to be completed as appropriate in
3814the
3815future. The associated conditional macros are ACPI_BIOS_ERROR and
3816ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
3817ACPICA
3818BZ
3819843.
3820
3821Implicit notify support: ensure that no memory allocation occurs within a
3822critical region. This fix moves a memory allocation outside of the time
3823that a
3824spinlock is held. Fixes issues on systems that do not allow this
3825behavior.
3826Jung-uk Kim.
3827
3828Split exception code utilities and tables into a new file,
3829utilities/utexcep.c
3830
3831Example Code and Data Size: These are the sizes for the OS-independent
3832acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3833debug
3834version of the code includes the debug output trace mechanism and has a
3835much
3836larger code and data size.
3837
3838  Previous Release:
3839    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
3840    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
3841  Current Release:
3842    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
3843    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
3844
3845
38462) iASL Compiler/Disassembler and Tools:
3847
3848iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
3849of
38500. Jung-uk Kim.
3851
3852Debugger: Enhanced the "tables" command to emit additional information
3853about
3854the current set of ACPI tables, including the owner ID and flags decode.
3855
3856Debugger: Reimplemented the "unload" command to use the new
3857AcpiUnloadParentTable external interface. This command was disable
3858previously
3859due to need for an unload interface.
3860
3861AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
3862option
3863will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
3864
3865----------------------------------------
386620 June 2012. Summary of changes for version 20120620:
3867
3868
38691) ACPICA Kernel-resident Subsystem:
3870
3871Implemented support to expand the "implicit notify" feature to allow
3872multiple
3873devices to be notified by a single GPE. This feature automatically
3874generates a
3875runtime device notification in the absence of a BIOS-provided GPE control
3876method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
3877notify is
3878provided by ACPICA for Windows compatibility, and is a workaround for
3879BIOS
3880AML
3881code errors. See the description of the AcpiSetupGpeForWake interface in
3882the
3883APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
3884
3885Changed some comments and internal function names to simplify and ensure
3886correctness of the Linux code translation. No functional changes.
3887
3888Example Code and Data Size: These are the sizes for the OS-independent
3889acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3890debug
3891version of the code includes the debug output trace mechanism and has a
3892much
3893larger code and data size.
3894
3895  Previous Release:
3896    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
3897    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
3898  Current Release:
3899    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
3900    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
3901
3902
39032) iASL Compiler/Disassembler and Tools:
3904
3905Disassembler: Added support to emit short, commented descriptions for the
3906ACPI
3907predefined names in order to improve the readability of the disassembled
3908output. ACPICA BZ 959. Changes include:
3909  1) Emit descriptions for all standard predefined names (_INI, _STA,
3910_PRW,
3911etc.)
3912  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
3913  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
3914etc.)
3915
3916AcpiSrc: Fixed several long-standing Linux code translation issues.
3917Argument
3918descriptions in function headers are now translated properly to lower
3919case
3920and
3921underscores. ACPICA BZ 961. Also fixes translation problems such as
3922these:
3923(old -> new)
3924  i_aSL -> iASL
3925  00-7_f -> 00-7F
3926  16_k -> 16K
3927  local_fADT -> local_FADT
3928  execute_oSI -> execute_OSI
3929
3930iASL: Fixed a problem where null bytes were inadvertently emitted into
3931some
3932listing files.
3933
3934iASL: Added the existing debug options to the standard help screen. There
3935are
3936no longer two different help screens. ACPICA BZ 957.
3937
3938AcpiHelp: Fixed some typos in the various predefined name descriptions.
3939Also
3940expand some of the descriptions where appropriate.
3941
3942iASL: Fixed the -ot option (display compile times/statistics). Was not
3943working
3944properly for standard output; only worked for the debug file case.
3945
3946----------------------------------------
394718 May 2012. Summary of changes for version 20120518:
3948
3949
39501) ACPICA Core Subsystem:
3951
3952Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
3953defined
3954to block until asynchronous events such as notifies and GPEs have
3955completed.
3956Within ACPICA, it is only called before a notify or GPE handler is
3957removed/uninstalled. It also may be useful for the host OS within related
3958drivers such as the Embedded Controller driver. See the ACPICA reference
3959for
3960additional information. ACPICA BZ 868.
3961
3962ACPI Tables: Added a new error message for a possible overflow failure
3963during
3964the conversion of FADT 32-bit legacy register addresses to internal
3965common
396664-
3967bit GAS structure representation. The GAS has a one-byte "bit length"
3968field,
3969thus limiting the register length to 255 bits. ACPICA BZ 953.
3970
3971Example Code and Data Size: These are the sizes for the OS-independent
3972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3973debug
3974version of the code includes the debug output trace mechanism and has a
3975much
3976larger code and data size.
3977
3978  Previous Release:
3979    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3980    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
3981  Current Release:
3982    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
3983    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
3984
3985
39862) iASL Compiler/Disassembler and Tools:
3987
3988iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
3989macro.
3990This keyword was added late in the ACPI 5.0 release cycle and was not
3991implemented until now.
3992
3993Disassembler: Added support for Operation Region externals. Adds missing
3994support for operation regions that are defined in another table, and
3995referenced locally via a Field or BankField ASL operator. Now generates
3996the
3997correct External statement.
3998
3999Disassembler: Several additional fixes for the External() statement
4000generation
4001related to some ASL operators. Also, order the External() statements
4002alphabetically in the disassembler output. Fixes the External()
4003generation
4004for
4005the Create* field, Alias, and Scope operators:
4006 1) Create* buffer field operators - fix type mismatch warning on
4007disassembly
4008 2) Alias - implement missing External support
4009 3) Scope - fix to make sure all necessary externals are emitted.
4010
4011iASL: Improved pathname support. For include files, merge the prefix
4012pathname
4013with the file pathname and eliminate unnecessary components. Convert
4014backslashes in all pathnames to forward slashes, for readability. Include
4015file
4016pathname changes affect both #include and Include() type operators.
4017
4018iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
4019end
4020of a valid line by inserting a newline and then returning the EOF during
4021the
4022next call to GetNextLine. Prevents the line from being ignored due to EOF
4023condition.
4024
4025iASL: Implemented some changes to enhance the IDE support (-vi option.)
4026Error
4027and Warning messages are now correctly recognized for both the source
4028code
4029browser and the global error and warning counts.
4030
4031----------------------------------------
403220 April 2012. Summary of changes for version 20120420:
4033
4034
40351) ACPICA Core Subsystem:
4036
4037Implemented support for multiple notify handlers. This change adds
4038support
4039to
4040allow multiple system and device notify handlers on Device, Thermal Zone,
4041and
4042Processor objects. This can simplify the host OS notification
4043implementation.
4044Also re-worked and restructured the entire notify support code to
4045simplify
4046handler installation, handler removal, notify event queuing, and notify
4047dispatch to handler(s). Note: there can still only be two global notify
4048handlers - one for system notifies and one for device notifies. There are
4049no
4050changes to the existing handler install/remove interfaces. Lin Ming, Bob
4051Moore, Rafael Wysocki.
4052
4053Fixed a regression in the package repair code where the object reference
4054count was calculated incorrectly. Regression was introduced in the commit
4055"Support to add Package wrappers".
4056
4057Fixed a couple possible memory leaks in the AML parser, in the error
4058recovery
4059path. Jesper Juhl, Lin Ming.
4060
4061Example Code and Data Size: These are the sizes for the OS-independent
4062acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4063debug version of the code includes the debug output trace mechanism and
4064has a
4065much larger code and data size.
4066
4067  Previous Release:
4068    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4069    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4070  Current Release:
4071    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4072    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
4073
4074
40752) iASL Compiler/Disassembler and Tools:
4076
4077iASL: Fixed a problem with the resource descriptor support where the
4078length
4079of the StartDependentFn and StartDependentFnNoPrio descriptors were not
4080included in cumulative descriptor offset, resulting in incorrect values
4081for
4082resource tags within resource descriptors appearing after a
4083StartDependent*
4084descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
4085
4086iASL and Preprocessor: Implemented full support for the #line directive
4087to
4088correctly track original source file line numbers through the .i
4089preprocessor
4090output file - for error and warning messages.
4091
4092iASL: Expand the allowable byte constants for address space IDs.
4093Previously,
4094the allowable range was 0x80-0xFF (user-defined spaces), now the range is
40950x0A-0xFF to allow for custom and new IDs without changing the compiler.
4096
4097iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
4098
4099iASL: Add option to completely disable the preprocessor (-Pn).
4100
4101iASL: Now emit all error/warning messages to standard error (stderr) by
4102default (instead of the previous stdout).
4103
4104ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
4105Update
4106for resource descriptor offset fix above. Update/cleanup error output
4107routines. Enable and send iASL errors/warnings to an error logfile
4108(error.txt). Send all other iASL output to a logfile (compiler.txt).
4109Fixed
4110several extraneous "unrecognized operator" messages.
4111
4112----------------------------------------
411320 March 2012. Summary of changes for version 20120320:
4114
4115
41161) ACPICA Core Subsystem:
4117
4118Enhanced the sleep/wake interfaces to optionally execute the _GTS method
4119(Going To Sleep) and the _BFS method (Back From Sleep). Windows
4120apparently
4121does not execute these methods, and therefore these methods are often
4122untested. It has been seen on some systems where the execution of these
4123methods causes errors and also prevents the machine from entering S5. It
4124is
4125therefore suggested that host operating systems do not execute these
4126methods
4127by default. In the future, perhaps these methods can be optionally
4128executed
4129based on the age of the system and/or what is the newest version of
4130Windows
4131that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
4132and
4133AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
4134Ming.
4135
4136Fixed a problem where the length of the local/common FADT was set too
4137early.
4138The local FADT table length cannot be set to the common length until the
4139original length has been examined. There is code that checks the table
4140length
4141and sets various fields appropriately. This can affect older machines
4142with
4143early FADT versions. For example, this can cause inadvertent writes to
4144the
4145CST_CNT register. Julian Anastasov.
4146
4147Fixed a mapping issue related to a physical table override. Use the
4148deferred
4149mapping mechanism for tables loaded via the physical override OSL
4150interface.
4151This allows for early mapping before the virtual memory manager is
4152available.
4153Thomas Renninger, Bob Moore.
4154
4155Enhanced the automatic return-object repair code: Repair a common problem
4156with
4157predefined methods that are defined to return a variable-length Package
4158of
4159sub-objects. If there is only one sub-object, some BIOS ASL code
4160mistakenly
4161simply returns the single object instead of a Package with one sub-
4162object.
4163This new support will repair this error by wrapping a Package object
4164around
4165the original object, creating the correct and expected Package with one
4166sub-
4167object. Names that can be repaired in this manner include: _ALR, _CSD,
4168_HPX,
4169_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
4170939.
4171
4172Changed the exception code returned for invalid ACPI paths passed as
4173parameters to external interfaces such as AcpiEvaluateObject. Was
4174AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
4175
4176Example Code and Data Size: These are the sizes for the OS-independent
4177acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4178debug
4179version of the code includes the debug output trace mechanism and has a
4180much
4181larger code and data size.
4182
4183  Previous Release:
4184    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
4185    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4186  Current Release:
4187    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4188    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4189
4190
41912) iASL Compiler/Disassembler and Tools:
4192
4193iASL: Added the infrastructure and initial implementation of a integrated
4194C-
4195like preprocessor. This will simplify BIOS development process by
4196eliminating
4197the need for a separate preprocessing step during builds. On Windows, it
4198also
4199eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
4200features including full #define() macro support are still under
4201development.
4202These preprocessor directives are supported:
4203    #define
4204    #elif
4205    #else
4206    #endif
4207    #error
4208    #if
4209    #ifdef
4210    #ifndef
4211    #include
4212    #pragma message
4213    #undef
4214    #warning
4215In addition, these new command line options are supported:
4216    -D <symbol> Define symbol for preprocessor use
4217    -li         Create preprocessed output file (*.i)
4218    -P          Preprocess only and create preprocessor output file (*.i)
4219
4220Table Compiler: Fixed a problem where the equals operator within an
4221expression
4222did not work properly.
4223
4224Updated iASL to use the current versions of Bison/Flex. Updated the
4225Windows
4226project file to invoke these tools from the standard location. ACPICA BZ
4227904.
4228Versions supported:
4229    Flex for Windows:  V2.5.4
4230    Bison for Windows: V2.4.1
4231
4232----------------------------------------
423315 February 2012. Summary of changes for version 20120215:
4234
4235
42361) ACPICA Core Subsystem:
4237
4238There have been some major changes to the sleep/wake support code, as
4239described below (a - e).
4240
4241a) The AcpiLeaveSleepState has been split into two interfaces, similar to
4242AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
4243AcpiLeaveSleepStatePrep. This allows the host to perform actions between
4244the
4245time the _BFS method is called and the _WAK method is called. NOTE: all
4246hosts
4247must update their wake/resume code or else sleep/wake will not work
4248properly.
4249Rafael Wysocki.
4250
4251b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
4252_WAK
4253method. Some machines require that the GPEs are enabled before the _WAK
4254method
4255is executed. Thomas Renninger.
4256
4257c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
4258bit.
4259Some BIOS code assumes that WAK_STS will be cleared on resume and use it
4260to
4261determine whether the system is rebooting or resuming. Matthew Garrett.
4262
4263d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
4264Sleep) to
4265match the ACPI specification requirement. Rafael Wysocki.
4266
4267e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
4268registers within the V5 FADT. This support adds two new files:
4269hardware/hwesleep.c implements the support for the new registers. Moved
4270all
4271sleep/wake external interfaces to hardware/hwxfsleep.c.
4272
4273
4274Added a new OSL interface for ACPI table overrides,
4275AcpiOsPhysicalTableOverride. This interface allows the host to override a
4276table via a physical address, instead of the logical address required by
4277AcpiOsTableOverride. This simplifies the host implementation. Initial
4278implementation by Thomas Renninger. The ACPICA implementation creates a
4279single
4280shared function for table overrides that attempts both a logical and a
4281physical override.
4282
4283Expanded the OSL memory read/write interfaces to 64-bit data
4284(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
4285transfer support for GAS register structures passed to AcpiRead and
4286AcpiWrite.
4287
4288Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
4289custom
4290build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
4291model.
4292See the ACPICA reference for details. ACPICA BZ 942. This option removes
4293about
429410% of the code and 5% of the static data, and the following hardware
4295ACPI
4296features become unavailable:
4297    PM Event and Control registers
4298    SCI interrupt (and handler)
4299    Fixed Events
4300    General Purpose Events (GPEs)
4301    Global Lock
4302    ACPI PM timer
4303    FACS table (Waking vectors and Global Lock)
4304
4305Updated the unix tarball directory structure to match the ACPICA git
4306source
4307tree. This ensures that the generic unix makefiles work properly (in
4308generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
4309867.
4310
4311Updated the return value of the _REV predefined method to integer value 5
4312to
4313reflect ACPI 5.0 support.
4314
4315Moved the external ACPI PM timer interface prototypes to the public
4316acpixf.h
4317file where they belong.
4318
4319Example Code and Data Size: These are the sizes for the OS-independent
4320acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4321debug
4322version of the code includes the debug output trace mechanism and has a
4323much
4324larger code and data size.
4325
4326  Previous Release:
4327    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
4328    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
4329  Current Release:
4330    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
4331    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4332
4333
43342) iASL Compiler/Disassembler and Tools:
4335
4336Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
4337descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
4338incorrectly displayed.
4339
4340AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
4341specification.
4342
4343----------------------------------------
434411 January 2012. Summary of changes for version 20120111:
4345
4346
43471) ACPICA Core Subsystem:
4348
4349Implemented a new mechanism to allow host device drivers to check for
4350address
4351range conflicts with ACPI Operation Regions. Both SystemMemory and
4352SystemIO
4353address spaces are supported. A new external interface,
4354AcpiCheckAddressRange,
4355allows drivers to check an address range against the ACPI namespace. See
4356the
4357ACPICA reference for additional details. Adds one new file,
4358utilities/utaddress.c. Lin Ming, Bob Moore.
4359
4360Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
4361Control
4362and
4363Status registers, update the ACPI 5.0 flags, and update internal data
4364structures to handle an FADT larger than 256 bytes. The size of the ACPI
43655.0
4366FADT is 268 bytes.
4367
4368Updated all ACPICA copyrights and signons to 2012. Added the 2012
4369copyright to
4370all module headers and signons, including the standard Linux header. This
4371affects virtually every file in the ACPICA core subsystem, iASL compiler,
4372and
4373all ACPICA utilities.
4374
4375Example Code and Data Size: These are the sizes for the OS-independent
4376acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4377debug
4378version of the code includes the debug output trace mechanism and has a
4379much
4380larger code and data size.
4381
4382  Previous Release:
4383    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
4384    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
4385  Current Release:
4386    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
4387    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
4388
4389
43902) iASL Compiler/Disassembler and Tools:
4391
4392Disassembler: fixed a problem with the automatic resource tag generation
4393support. Fixes a problem where the resource tags are inadvertently not
4394constructed if the table being disassembled contains external references
4395to
4396control methods. Moved the actual construction of the tags to after the
4397final
4398namespace is constructed (after 2nd parse is invoked due to external
4399control
4400method references.) ACPICA BZ 941.
4401
4402Table Compiler: Make all "generic" operators caseless. These are the
4403operators
4404like UINT8, String, etc. Making these caseless improves ease-of-use.
4405ACPICA BZ
4406934.
4407
4408----------------------------------------
440923 November 2011. Summary of changes for version 20111123:
4410
44110) ACPI 5.0 Support:
4412
4413This release contains full support for the ACPI 5.0 specification, as
4414summarized below.
4415
4416Reduced Hardware Support:
4417-------------------------
4418
4419This support allows for ACPI systems without the usual ACPI hardware.
4420This
4421support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
4422will
4423not attempt to initialize or use any of the usual ACPI hardware. Note,
4424when
4425this flag is set, all of the following ACPI hardware is assumed to be not
4426present and is not initialized or accessed:
4427
4428    General Purpose Events (GPEs)
4429    Fixed Events (PM1a/PM1b and PM Control)
4430    Power Management Timer and Console Buttons (power/sleep)
4431    Real-time Clock Alarm
4432    Global Lock
4433    System Control Interrupt (SCI)
4434    The FACS is assumed to be non-existent
4435
4436ACPI Tables:
4437------------
4438
4439All new tables and updates to existing tables are fully supported in the
4440ACPICA headers (for use by device drivers), the disassembler, and the
4441iASL
4442Data Table Compiler. ACPI 5.0 defines these new tables:
4443
4444    BGRT        /* Boot Graphics Resource Table */
4445    DRTM        /* Dynamic Root of Trust for Measurement table */
4446    FPDT        /* Firmware Performance Data Table */
4447    GTDT        /* Generic Timer Description Table */
4448    MPST        /* Memory Power State Table */
4449    PCCT        /* Platform Communications Channel Table */
4450    PMTT        /* Platform Memory Topology Table */
4451    RASF        /* RAS Feature table */
4452
4453Operation Regions/SpaceIDs:
4454---------------------------
4455
4456All new operation regions are fully supported by the iASL compiler, the
4457disassembler, and the ACPICA runtime code (for dispatch to region
4458handlers.)
4459The new operation region Space IDs are:
4460
4461    GeneralPurposeIo
4462    GenericSerialBus
4463
4464Resource Descriptors:
4465---------------------
4466
4467All new ASL resource descriptors are fully supported by the iASL
4468compiler,
4469the
4470ASL/AML disassembler, and the ACPICA runtime Resource Manager code
4471(including
4472all new predefined resource tags). New descriptors are:
4473
4474    FixedDma
4475    GpioIo
4476    GpioInt
4477    I2cSerialBus
4478    SpiSerialBus
4479    UartSerialBus
4480
4481ASL/AML Operators, New and Modified:
4482------------------------------------
4483
4484One new operator is added, the Connection operator, which is used to
4485associate
4486a GeneralPurposeIo or GenericSerialBus resource descriptor with
4487individual
4488field objects within an operation region. Several new protocols are
4489associated
4490with the AccessAs operator. All are fully supported by the iASL compiler,
4491disassembler, and runtime ACPICA AML interpreter:
4492
4493    Connection                      // Declare Field Connection
4494attributes
4495    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
4496    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
4497Protocol
4498    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
4499    RawDataBuffer                       // Data type for Vendor Data
4500fields
4501
4502Predefined ASL/AML Objects:
4503---------------------------
4504
4505All new predefined objects/control-methods are supported by the iASL
4506compiler
4507and the ACPICA runtime validation/repair (arguments and return values.)
4508New
4509predefined names include the following:
4510
4511Standard Predefined Names (Objects or Control Methods):
4512    _AEI, _CLS, _CPC, _CWS, _DEP,
4513    _DLM, _EVT, _GCP, _CRT, _GWS,
4514    _HRV, _PRE, _PSE, _SRT, _SUB.
4515
4516Resource Tags (Names used to access individual fields within resource
4517descriptors):
4518    _DBT, _DPL, _DRS, _END, _FLC,
4519    _IOR, _LIN, _MOD, _PAR, _PHA,
4520    _PIN, _PPI, _POL, _RXL, _SLV,
4521    _SPE, _STB, _TXL, _VEN.
4522
4523ACPICA External Interfaces:
4524---------------------------
4525
4526Several new interfaces have been defined for use by ACPI-related device
4527drivers and other host OS services:
4528
4529AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
4530to
4531acquire and release AML mutexes that are defined in the DSDT/SSDT tables
4532provided by the BIOS. They are intended to be used in conjunction with
4533the
4534ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
4535mutual exclusion with the AML code/interpreter.
4536
4537AcpiGetEventResources: Returns the (formatted) resource descriptors as
4538defined
4539by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
4540provides
4541resource descriptors associated with hardware-reduced platform events,
4542similar
4543to the AcpiGetCurrentResources interface.
4544
4545Operation Region Handlers: For General Purpose IO and Generic Serial Bus
4546operation regions, information about the Connection() object and any
4547optional
4548length information is passed to the region handler within the Context
4549parameter.
4550
4551AcpiBufferToResource: This interface converts a raw AML buffer containing
4552a
4553resource template or resource descriptor to the ACPI_RESOURCE internal
4554format
4555suitable for use by device drivers. Can be used by an operation region
4556handler
4557to convert the Connection() buffer object into a ACPI_RESOURCE.
4558
4559Miscellaneous/Tools/TestSuites:
4560-------------------------------
4561
4562Support for extended _HID names (Four alpha characters instead of three).
4563Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
4564Support for ACPI 5.0 features in the ASLTS test suite.
4565Fully updated documentation (ACPICA and iASL reference documents.)
4566
4567ACPI Table Definition Language:
4568-------------------------------
4569
4570Support for this language was implemented and released as a subsystem of
4571the
4572iASL compiler in 2010. (See the iASL compiler User Guide.)
4573
4574
4575Non-ACPI 5.0 changes for this release:
4576--------------------------------------
4577
45781) ACPICA Core Subsystem:
4579
4580Fix a problem with operation region declarations where a failure can
4581occur
4582if
4583the region name and an argument that evaluates to an object (such as the
4584region address) are in different namespace scopes. Lin Ming, ACPICA BZ
4585937.
4586
4587Do not abort an ACPI table load if an invalid space ID is found within.
4588This
4589will be caught later if the offending method is executed. ACPICA BZ 925.
4590
4591Fixed an issue with the FFixedHW space ID where the ID was not always
4592recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
4593
4594Fixed a problem with the 32-bit generation of the unix-specific OSL
4595(osunixxf.c). Lin Ming, ACPICA BZ 936.
4596
4597Several changes made to enable generation with the GCC 4.6 compiler.
4598ACPICA BZ
4599935.
4600
4601New error messages: Unsupported I/O requests (not 8/16/32 bit), and
4602Index/Bank
4603field registers out-of-range.
4604
46052) iASL Compiler/Disassembler and Tools:
4606
4607iASL: Implemented the __PATH__ operator, which returns the full pathname
4608of
4609the current source file.
4610
4611AcpiHelp: Automatically display expanded keyword information for all ASL
4612operators.
4613
4614Debugger: Add "Template" command to disassemble/dump resource template
4615buffers.
4616
4617Added a new master script to generate and execute the ASLTS test suite.
4618Automatically handles 32- and 64-bit generation. See tests/aslts.sh
4619
4620iASL: Fix problem with listing generation during processing of the
4621Switch()
4622operator where AML listing was disabled until the entire Switch block was
4623completed.
4624
4625iASL: Improve support for semicolon statement terminators. Fix "invalid
4626character" message for some cases when the semicolon is used. Semicolons
4627are
4628now allowed after every <Term> grammar element. ACPICA BZ 927.
4629
4630iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
4631923.
4632
4633Disassembler: Fix problem with disassembly of the DataTableRegion
4634operator
4635where an inadvertent "Unhandled deferred opcode" message could be
4636generated.
4637
46383) Example Code and Data Size
4639
4640These are the sizes for the OS-independent acpica.lib produced by the
4641Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
4642includes the debug output trace mechanism and has a much larger code and
4643data
4644size.
4645
4646  Previous Release:
4647    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4648    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4649  Current Release:
4650    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
4651    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
4652
4653----------------------------------------
465422 September 2011. Summary of changes for version 20110922:
4655
46560) ACPI 5.0 News:
4657
4658Support for ACPI 5.0 in ACPICA has been underway for several months and
4659will
4660be released at the same time that ACPI 5.0 is officially released.
4661
4662The ACPI 5.0 specification is on track for release in the next few
4663months.
4664
46651) ACPICA Core Subsystem:
4666
4667Fixed a problem where the maximum sleep time for the Sleep() operator was
4668intended to be limited to two seconds, but was inadvertently limited to
466920
4670seconds instead.
4671
4672Linux and Unix makefiles: Added header file dependencies to ensure
4673correct
4674generation of ACPICA core code and utilities. Also simplified the
4675makefiles
4676considerably through the use of the vpath variable to specify search
4677paths.
4678ACPICA BZ 924.
4679
46802) iASL Compiler/Disassembler and Tools:
4681
4682iASL: Implemented support to check the access length for all fields
4683created to
4684access named Resource Descriptor fields. For example, if a resource field
4685is
4686defined to be two bits, a warning is issued if a CreateXxxxField() is
4687used
4688with an incorrect bit length. This is implemented for all current
4689resource
4690descriptor names. ACPICA BZ 930.
4691
4692Disassembler: Fixed a byte ordering problem with the output of 24-bit and
469356-
4694bit integers.
4695
4696iASL: Fixed a couple of issues associated with variable-length package
4697objects. 1) properly handle constants like One, Ones, Zero -- do not make
4698a
4699VAR_PACKAGE when these are used as a package length. 2) Allow the
4700VAR_PACKAGE
4701opcode (in addition to PACKAGE) when validating object types for
4702predefined
4703names.
4704
4705iASL: Emit statistics for all output files (instead of just the ASL input
4706and
4707AML output). Includes listings, hex files, etc.
4708
4709iASL: Added -G option to the table compiler to allow the compilation of
4710custom
4711ACPI tables. The only part of a table that is required is the standard
471236-
4713byte
4714ACPI header.
4715
4716AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
4717headers),
4718which also adds correct 64-bit support. Also, now all output filenames
4719are
4720completely lower case.
4721
4722AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
4723loading table files. A warning is issued for any such tables. The only
4724exception is an FADT. This also fixes a possible fault when attempting to
4725load
4726non-AML tables. ACPICA BZ 932.
4727
4728AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
4729a
4730missing table terminator could cause a fault when using the -p option.
4731
4732AcpiSrc: Fixed a possible divide-by-zero fault when generating file
4733statistics.
4734
47353) Example Code and Data Size
4736
4737These are the sizes for the OS-independent acpica.lib produced by the
4738Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
4739includes the debug output trace mechanism and has a much larger code and
4740data
4741size.
4742
4743  Previous Release (VC 9.0):
4744    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4745    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4746  Current Release (VC 9.0):
4747    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4748    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4749
4750
4751----------------------------------------
475223 June 2011. Summary of changes for version 20110623:
4753
47541) ACPI CA Core Subsystem:
4755
4756Updated the predefined name repair mechanism to not attempt repair of a
4757_TSS
4758return object if a _PSS object is present. We can only sort the _TSS
4759return
4760package if there is no _PSS within the same scope. This is because if
4761_PSS
4762is
4763present, the ACPI specification dictates that the _TSS Power Dissipation
4764field
4765is to be ignored, and therefore some BIOSs leave garbage values in the
4766_TSS
4767Power field(s). In this case, it is best to just return the _TSS package
4768as-
4769is. Reported by, and fixed with assistance from Fenghua Yu.
4770
4771Added an option to globally disable the control method return value
4772validation
4773and repair. This runtime option can be used to disable return value
4774repair
4775if
4776this is causing a problem on a particular machine. Also added an option
4777to
4778AcpiExec (-dr) to set this disable flag.
4779
4780All makefiles and project files: Major changes to improve generation of
4781ACPICA
4782tools. ACPICA BZ 912:
4783    Reduce default optimization levels to improve compatibility
4784    For Linux, add strict-aliasing=0 for gcc 4
4785    Cleanup and simplify use of command line defines
4786    Cleanup multithread library support
4787    Improve usage messages
4788
4789Linux-specific header: update handling of THREAD_ID and pthread. For the
479032-
4791bit case, improve casting to eliminate possible warnings, especially with
4792the
4793acpica tools.
4794
4795Example Code and Data Size: These are the sizes for the OS-independent
4796acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4797debug
4798version of the code includes the debug output trace mechanism and has a
4799much
4800larger code and data size.
4801
4802  Previous Release (VC 9.0):
4803    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
4804    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4805  Current Release (VC 9.0):
4806    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4807    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4808
48092) iASL Compiler/Disassembler and Tools:
4810
4811With this release, a new utility named "acpihelp" has been added to the
4812ACPICA
4813package. This utility summarizes the ACPI specification chapters for the
4814ASL
4815and AML languages. It generates under Linux/Unix as well as Windows, and
4816provides the following functionality:
4817    Find/display ASL operator(s) -- with description and syntax.
4818    Find/display ASL keyword(s) -- with exact spelling and descriptions.
4819    Find/display ACPI predefined name(s) -- with description, number
4820        of arguments, and the return value data type.
4821    Find/display AML opcode name(s) -- with opcode, arguments, and
4822grammar.
4823    Decode/display AML opcode -- with opcode name, arguments, and
4824grammar.
4825
4826Service Layers: Make multi-thread support configurable. Conditionally
4827compile
4828the multi-thread support so that threading libraries will not be linked
4829if
4830not
4831necessary. The only tool that requires multi-thread support is AcpiExec.
4832
4833iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
4834of
4835Bison appear to want the interface to yyerror to be a const char * (or at
4836least this is a problem when generating iASL on some systems.) ACPICA BZ
4837923
4838Pierre Lejeune.
4839
4840Tools: Fix for systems where O_BINARY is not defined. Only used for
4841Windows
4842versions of the tools.
4843
4844----------------------------------------
484527 May 2011. Summary of changes for version 20110527:
4846
48471) ACPI CA Core Subsystem:
4848
4849ASL Load() operator: Reinstate most restrictions on the incoming ACPI
4850table
4851signature. Now, only allow SSDT, OEMx, and a null signature. History:
4852    1) Originally, we checked the table signature for "SSDT" or "PSDT".
4853       (PSDT is now obsolete.)
4854    2) We added support for OEMx tables, signature "OEM" plus a fourth
4855       "don't care" character.
4856    3) Valid tables were encountered with a null signature, so we just
4857       gave up on validating the signature, (05/2008).
4858    4) We encountered non-AML tables such as the MADT, which caused
4859       interpreter errors and kernel faults. So now, we once again allow
4860       only SSDT, OEMx, and now, also a null signature. (05/2011).
4861
4862Added the missing _TDL predefined name to the global name list in order
4863to
4864enable validation. Affects both the core ACPICA code and the iASL
4865compiler.
4866
4867Example Code and Data Size: These are the sizes for the OS-independent
4868acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4869debug
4870version of the code includes the debug output trace mechanism and has a
4871much
4872larger code and data size.
4873
4874  Previous Release (VC 9.0):
4875    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
4876    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
4877  Current Release (VC 9.0):
4878    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
4879    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4880
48812) iASL Compiler/Disassembler and Tools:
4882
4883Debugger/AcpiExec: Implemented support for "complex" method arguments on
4884the
4885debugger command line. This adds support beyond simple integers --
4886including
4887Strings, Buffers, and Packages. Includes support for nested packages.
4888Increased the default command line buffer size to accommodate these
4889arguments.
4890See the ACPICA reference for details and syntax. ACPICA BZ 917.
4891
4892Debugger/AcpiExec: Implemented support for "default" method arguments for
4893the
4894Execute/Debug command. Now, the debugger will always invoke a control
4895method
4896with the required number of arguments -- even if the command line
4897specifies
4898none or insufficient arguments. It uses default integer values for any
4899missing
4900arguments. Also fixes a bug where only six method arguments maximum were
4901supported instead of the required seven.
4902
4903Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
4904and
4905also return status in order to prevent buffer overruns. See the ACPICA
4906reference for details and syntax. ACPICA BZ 921
4907
4908iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
4909makefiles to simplify support for the two different but similar parser
4910generators, bison and yacc.
4911
4912Updated the generic unix makefile for gcc 4. The default gcc version is
4913now
4914expected to be 4 or greater, since options specific to gcc 4 are used.
4915
4916----------------------------------------
491713 April 2011. Summary of changes for version 20110413:
4918
49191) ACPI CA Core Subsystem:
4920
4921Implemented support to execute a so-called "orphan" _REG method under the
4922EC
4923device. This change will force the execution of a _REG method underneath
4924the
4925EC
4926device even if there is no corresponding operation region of type
4927EmbeddedControl. Fixes a problem seen on some machines and apparently is
4928compatible with Windows behavior. ACPICA BZ 875.
4929
4930Added more predefined methods that are eligible for automatic NULL
4931package
4932element removal. This change adds another group of predefined names to
4933the
4934list
4935of names that can be repaired by having NULL package elements dynamically
4936removed. This group are those methods that return a single variable-
4937length
4938package containing simple data types such as integers, buffers, strings.
4939This
4940includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
4941_PSL,
4942_Sx,
4943and _TZD. ACPICA BZ 914.
4944
4945Split and segregated all internal global lock functions to a new file,
4946evglock.c.
4947
4948Updated internal address SpaceID for DataTable regions. Moved this
4949internal
4950space
4951id in preparation for ACPI 5.0 changes that will include some new space
4952IDs.
4953This
4954change should not affect user/host code.
4955
4956Example Code and Data Size: These are the sizes for the OS-independent
4957acpica.lib
4958produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
4959version of
4960the code includes the debug output trace mechanism and has a much larger
4961code
4962and
4963data size.
4964
4965  Previous Release (VC 9.0):
4966    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
4967    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
4968  Current Release (VC 9.0):
4969    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
4970    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
4971
49722) iASL Compiler/Disassembler and Tools:
4973
4974iASL/DTC: Major update for new grammar features. Allow generic data types
4975in
4976custom ACPI tables. Field names are now optional. Any line can be split
4977to
4978multiple lines using the continuation char (\). Large buffers now use
4979line-
4980continuation character(s) and no colon on the continuation lines. See the
4981grammar
4982update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
4983Moore.
4984
4985iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
4986statements.
4987Since the parser stuffs a "zero" as the return value for these statements
4988(due
4989to
4990the underlying AML grammar), they were seen as "return with value" by the
4991iASL
4992semantic checking. They are now seen correctly as "null" return
4993statements.
4994
4995iASL: Check if a_REG declaration has a corresponding Operation Region.
4996Adds a
4997check for each _REG to ensure that there is in fact a corresponding
4998operation
4999region declaration in the same scope. If not, the _REG method is not very
5000useful
5001since it probably won't be executed. ACPICA BZ 915.
5002
5003iASL/DTC: Finish support for expression evaluation. Added a new
5004expression
5005parser
5006that implements c-style operator precedence and parenthesization. ACPICA
5007bugzilla
5008908.
5009
5010Disassembler/DTC: Remove support for () and <> style comments in data
5011tables.
5012Now
5013that DTC has full expression support, we don't want to have comment
5014strings
5015that
5016start with a parentheses or a less-than symbol. Now, only the standard /*
5017and
5018//
5019comments are supported, as well as the bracket [] comments.
5020
5021AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
5022"unusual"
5023headers in the acpidump file. Update the header validation to support
5024these
5025tables. Problem introduced in previous AcpiXtract version in the change
5026to
5027support "wrong checksum" error messages emitted by acpidump utility.
5028
5029iASL: Add a * option to generate all template files (as a synonym for
5030ALL)
5031as
5032in
5033"iasl -T *" or "iasl -T ALL".
5034
5035iASL/DTC: Do not abort compiler on fatal errors. We do not want to
5036completely
5037abort the compiler on "fatal" errors, simply should abort the current
5038compile.
5039This allows multiple compiles with a single (possibly wildcard) compiler
5040invocation.
5041
5042----------------------------------------
504316 March 2011. Summary of changes for version 20110316:
5044
50451) ACPI CA Core Subsystem:
5046
5047Fixed a problem caused by a _PRW method appearing at the namespace root
5048scope
5049during the setup of wake GPEs. A fault could occur if a _PRW directly
5050under
5051the
5052root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
5053
5054Implemented support for "spurious" Global Lock interrupts. On some
5055systems, a
5056global lock interrupt can occur without the pending flag being set. Upon
5057a
5058GL
5059interrupt, we now ensure that a thread is actually waiting for the lock
5060before
5061signaling GL availability. Rafael Wysocki, Bob Moore.
5062
5063Example Code and Data Size: These are the sizes for the OS-independent
5064acpica.lib
5065produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
5066version of
5067the code includes the debug output trace mechanism and has a much larger
5068code
5069and
5070data size.
5071
5072  Previous Release (VC 9.0):
5073    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5074    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5075  Current Release (VC 9.0):
5076    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
5077    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
5078
50792) iASL Compiler/Disassembler and Tools:
5080
5081Implemented full support for the "SLIC" ACPI table. Includes support in
5082the
5083header files, disassembler, table compiler, and template generator. Bob
5084Moore,
5085Lin Ming.
5086
5087AcpiXtract: Correctly handle embedded comments and messages from
5088AcpiDump.
5089Apparently some or all versions of acpidump will occasionally emit a
5090comment
5091like
5092"Wrong checksum", etc., into the dump file. This was causing problems for
5093AcpiXtract. ACPICA BZ 905.
5094
5095iASL: Fix the Linux makefile by removing an inadvertent double file
5096inclusion.
5097ACPICA BZ 913.
5098
5099AcpiExec: Update installation of operation region handlers. Install one
5100handler
5101for a user-defined address space. This is used by the ASL test suite
5102(ASLTS).
5103
5104----------------------------------------
510511 February 2011. Summary of changes for version 20110211:
5106
51071) ACPI CA Core Subsystem:
5108
5109Added a mechanism to defer _REG methods for some early-installed
5110handlers.
5111Most user handlers should be installed before call to
5112AcpiEnableSubsystem.
5113However, Event handlers and region handlers should be installed after
5114AcpiInitializeObjects. Override handlers for the "default" regions should
5115be
5116installed early, however. This change executes all _REG methods for the
5117default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
5118chicken/egg issues between them. ACPICA BZ 848.
5119
5120Implemented an optimization for GPE detection. This optimization will
5121simply
5122ignore GPE registers that contain no enabled GPEs -- there is no need to
5123read the register since this information is available internally. This
5124becomes more important on machines with a large GPE space. ACPICA
5125bugzilla
5126884. Lin Ming. Suggestion from Joe Liu.
5127
5128Removed all use of the highly unreliable FADT revision field. The
5129revision
5130number in the FADT has been found to be completely unreliable and cannot
5131be
5132trusted. Only the actual table length can be used to infer the version.
5133This
5134change updates the ACPICA core and the disassembler so that both no
5135longer
5136even look at the FADT version and instead depend solely upon the FADT
5137length.
5138
5139Fix an unresolved name issue for the no-debug and no-error-message source
5140generation cases. The _AcpiModuleName was left undefined in these cases,
5141but
5142it is actually needed as a parameter to some interfaces. Define
5143_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
5144
5145Split several large files (makefiles and project files updated)
5146  utglobal.c   -> utdecode.c
5147  dbcomds.c    -> dbmethod.c dbnames.c
5148  dsopcode.c   -> dsargs.c dscontrol.c
5149  dsload.c     -> dsload2.c
5150  aslanalyze.c -> aslbtypes.c aslwalks.c
5151
5152Example Code and Data Size: These are the sizes for the OS-independent
5153acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5154debug version of the code includes the debug output trace mechanism and
5155has
5156a much larger code and data size.
5157
5158  Previous Release (VC 9.0):
5159    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5160    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5161  Current Release (VC 9.0):
5162    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5163    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5164
51652) iASL Compiler/Disassembler and Tools:
5166
5167iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
5168These are useful C-style macros with the standard definitions. ACPICA
5169bugzilla 898.
5170
5171iASL/DTC: Added support for integer expressions and labels. Support for
5172full
5173expressions for all integer fields in all ACPI tables. Support for labels
5174in
5175"generic" portions of tables such as UEFI. See the iASL reference manual.
5176
5177Debugger: Added a command to display the status of global handlers. The
5178"handlers" command will display op region, fixed event, and miscellaneous
5179global handlers. installation status -- and for op regions, whether
5180default
5181or user-installed handler will be used.
5182
5183iASL: Warn if reserved method incorrectly returns a value. Many
5184predefined
5185names are defined such that they do not return a value. If implemented as
5186a
5187method, issue a warning if such a name explicitly returns a value. ACPICA
5188Bugzilla 855.
5189
5190iASL: Added detection of GPE method name conflicts. Detects a conflict
5191where
5192there are two GPE methods of the form _Lxy and _Exy in the same scope.
5193(For
5194example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
5195
5196iASL/DTC: Fixed a couple input scanner issues with comments and line
5197numbers. Comment remover could get confused and miss a comment ending.
5198Fixed
5199a problem with line counter maintenance.
5200
5201iASL/DTC: Reduced the severity of some errors from fatal to error. There
5202is
5203no need to abort on simple errors within a field definition.
5204
5205Debugger: Simplified the output of the help command. All help output now
5206in
5207a single screen, instead of help subcommands. ACPICA Bugzilla 897.
5208
5209----------------------------------------
521012 January 2011. Summary of changes for version 20110112:
5211
52121) ACPI CA Core Subsystem:
5213
5214Fixed a race condition between method execution and namespace walks that
5215can
5216possibly cause a fault. The problem was apparently introduced in version
521720100528 as a result of a performance optimization that reduces the
5218number
5219of
5220namespace walks upon method exit by using the delete_namespace_subtree
5221function instead of the delete_namespace_by_owner function used
5222previously.
5223Bug is a missing namespace lock in the delete_namespace_subtree function.
5224dana.myers@oracle.com
5225
5226Fixed several issues and a possible fault with the automatic "serialized"
5227method support. History: This support changes a method to "serialized" on
5228the
5229fly if the method generates an AE_ALREADY_EXISTS error, indicating the
5230possibility that it cannot handle reentrancy. This fix repairs a couple
5231of
5232issues seen in the field, especially on machines with many cores:
5233
5234    1) Delete method children only upon the exit of the last thread,
5235       so as to not delete objects out from under other running threads
5236      (and possibly causing a fault.)
5237    2) Set the "serialized" bit for the method only upon the exit of the
5238       Last thread, so as to not cause deadlock when running threads
5239       attempt to exit.
5240    3) Cleanup the use of the AML "MethodFlags" and internal method flags
5241       so that there is no longer any confusion between the two.
5242
5243    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
5244
5245Debugger: Now lock the namespace for duration of a namespace dump.
5246Prevents
5247issues if the namespace is changing dynamically underneath the debugger.
5248Especially affects temporary namespace nodes, since the debugger displays
5249these also.
5250
5251Updated the ordering of include files. The ACPICA headers should appear
5252before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
5253set
5254any necessary compiler-specific defines, etc. Affects the ACPI-related
5255tools
5256and utilities.
5257
5258Updated all ACPICA copyrights and signons to 2011. Added the 2011
5259copyright
5260to all module headers and signons, including the Linux header. This
5261affects
5262virtually every file in the ACPICA core subsystem, iASL compiler, and all
5263utilities.
5264
5265Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
5266project files for VC++ 6.0 are now obsolete. New project files can be
5267found
5268under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
5269details.
5270
5271Example Code and Data Size: These are the sizes for the OS-independent
5272acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5273debug version of the code includes the debug output trace mechanism and
5274has a
5275much larger code and data size.
5276
5277  Previous Release (VC 6.0):
5278    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
5279    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
5280  Current Release (VC 9.0):
5281    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5282    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5283
52842) iASL Compiler/Disassembler and Tools:
5285
5286iASL: Added generic data types to the Data Table compiler. Add "generic"
5287data
5288types such as UINT32, String, Unicode, etc., to simplify the generation
5289of
5290platform-defined tables such as UEFI. Lin Ming.
5291
5292iASL: Added listing support for the Data Table Compiler. Adds listing
5293support
5294(-l) to display actual binary output for each line of input code.
5295
5296----------------------------------------
529709 December 2010. Summary of changes for version 20101209:
5298
52991) ACPI CA Core Subsystem:
5300
5301Completed the major overhaul of the GPE support code that was begun in
5302July
53032010. Major features include: removal of _PRW execution in ACPICA (host
5304executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
5305changes to existing interfaces, simplification of GPE handler operation,
5306and
5307a handful of new interfaces:
5308
5309    AcpiUpdateAllGpes
5310    AcpiFinishGpe
5311    AcpiSetupGpeForWake
5312    AcpiSetGpeWakeMask
5313    One new file, evxfgpe.c to consolidate all external GPE interfaces.
5314
5315See the ACPICA Programmer Reference for full details and programming
5316information. See the new section 4.4 "General Purpose Event (GPE)
5317Support"
5318for a full overview, and section 8.7 "ACPI General Purpose Event
5319Management"
5320for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
5321Ming,
5322Bob Moore, Rafael Wysocki.
5323
5324Implemented a new GPE feature for Windows compatibility, the "Implicit
5325Wake
5326GPE Notify". This feature will automatically issue a Notify(2) on a
5327device
5328when a Wake GPE is received if there is no corresponding GPE method or
5329handler. ACPICA BZ 870.
5330
5331Fixed a problem with the Scope() operator during table parse and load
5332phase.
5333During load phase (table load or method execution), the scope operator
5334should
5335not enter the target into the namespace. Instead, it should open a new
5336scope
5337at the target location. Linux BZ 19462, ACPICA BZ 882.
5338
5339Example Code and Data Size: These are the sizes for the OS-independent
5340acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5341debug version of the code includes the debug output trace mechanism and
5342has a
5343much larger code and data size.
5344
5345  Previous Release:
5346    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
5347    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
5348  Current Release:
5349    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5350    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5351
53522) iASL Compiler/Disassembler and Tools:
5353
5354iASL: Relax the alphanumeric restriction on _CID strings. These strings
5355are
5356"bus-specific" per the ACPI specification, and therefore any characters
5357are
5358acceptable. The only checks that can be performed are for a null string
5359and
5360perhaps for a leading asterisk. ACPICA BZ 886.
5361
5362iASL: Fixed a problem where a syntax error that caused a premature EOF
5363condition on the source file emitted a very confusing error message. The
5364premature EOF is now detected correctly. ACPICA BZ 891.
5365
5366Disassembler: Decode the AccessSize within a Generic Address Structure
5367(byte
5368access, word access, etc.) Note, this field does not allow arbitrary bit
5369access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
5370
5371New: AcpiNames utility - Example namespace dump utility. Shows an example
5372of
5373ACPICA configuration for a minimal namespace dump utility. Uses table and
5374namespace managers, but no AML interpreter. Does not add any
5375functionality
5376over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
5377partition and configure ACPICA. ACPICA BZ 883.
5378
5379AML Debugger: Increased the debugger buffer size for method return
5380objects.
5381Was 4K, increased to 16K. Also enhanced error messages for debugger
5382method
5383execution, including the buffer overflow case.
5384
5385----------------------------------------
538613 October 2010. Summary of changes for version 20101013:
5387
53881) ACPI CA Core Subsystem:
5389
5390Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
5391now
5392clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
5393HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
5394
5395Changed the type of the predefined namespace object _TZ from ThermalZone
5396to
5397Device. This was found to be confusing to the host software that
5398processes
5399the various thermal zones, since _TZ is not really a ThermalZone.
5400However,
5401a
5402Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
5403Zhang.
5404
5405Added Windows Vista SP2 to the list of supported _OSI strings. The actual
5406string is "Windows 2006 SP2".
5407
5408Eliminated duplicate code in AcpiUtExecute* functions. Now that the
5409nsrepair
5410code automatically repairs _HID-related strings, this type of code is no
5411longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
5412878.
5413
5414Example Code and Data Size: These are the sizes for the OS-independent
5415acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5416debug version of the code includes the debug output trace mechanism and
5417has a
5418much larger code and data size.
5419
5420  Previous Release:
5421    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5422    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5423  Current Release:
5424    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5425    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5426
54272) iASL Compiler/Disassembler and Tools:
5428
5429iASL: Implemented additional compile-time validation for _HID strings.
5430The
5431non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
5432length
5433of
5434the string must be exactly seven or eight characters. For both _HID and
5435_CID
5436strings, all characters must be alphanumeric. ACPICA BZ 874.
5437
5438iASL: Allow certain "null" resource descriptors. Some BIOS code creates
5439descriptors that are mostly or all zeros, with the expectation that they
5440will
5441be filled in at runtime. iASL now allows this as long as there is a
5442"resource
5443tag" (name) associated with the descriptor, which gives the ASL a handle
5444needed to modify the descriptor. ACPICA BZ 873.
5445
5446Added single-thread support to the generic Unix application OSL.
5447Primarily
5448for iASL support, this change removes the use of semaphores in the
5449single-
5450threaded ACPICA tools/applications - increasing performance. The
5451_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
5452option. ACPICA BZ 879.
5453
5454AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
5455support
5456for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
5457
5458iASL: Moved all compiler messages to a new file, aslmessages.h.
5459
5460----------------------------------------
546115 September 2010. Summary of changes for version 20100915:
5462
54631) ACPI CA Core Subsystem:
5464
5465Removed the AcpiOsDerivePciId OSL interface. The various host
5466implementations
5467of this function were not OS-dependent and are now obsolete and can be
5468removed from all host OSLs. This function has been replaced by
5469AcpiHwDerivePciId, which is now part of the ACPICA core code.
5470AcpiHwDerivePciId has been implemented without recursion. Adds one new
5471module, hwpci.c. ACPICA BZ 857.
5472
5473Implemented a dynamic repair for _HID and _CID strings. The following
5474problems are now repaired at runtime: 1) Remove a leading asterisk in the
5475string, and 2) the entire string is uppercased. Both repairs are in
5476accordance with the ACPI specification and will simplify host driver
5477code.
5478ACPICA BZ 871.
5479
5480The ACPI_THREAD_ID type is no longer configurable, internally it is now
5481always UINT64. This simplifies the ACPICA code, especially any printf
5482output.
5483UINT64 is the only common data type for all thread_id types across all
5484operating systems. It is now up to the host OSL to cast the native
5485thread_id
5486type to UINT64 before returning the value to ACPICA (via
5487AcpiOsGetThreadId).
5488Lin Ming, Bob Moore.
5489
5490Added the ACPI_INLINE type to enhance the ACPICA configuration. The
5491"inline"
5492keyword is not standard across compilers, and this type allows inline to
5493be
5494configured on a per-compiler basis. Lin Ming.
5495
5496Made the system global AcpiGbl_SystemAwakeAndRunning publically
5497available.
5498Added an extern for this boolean in acpixf.h. Some hosts utilize this
5499value
5500during suspend/restore operations. ACPICA BZ 869.
5501
5502All code that implements error/warning messages with the "ACPI:" prefix
5503has
5504been moved to a new module, utxferror.c.
5505
5506The UINT64_OVERLAY was moved to utmath.c, which is the only module where
5507it
5508is used. ACPICA BZ 829. Lin Ming, Bob Moore.
5509
5510Example Code and Data Size: These are the sizes for the OS-independent
5511acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5512debug version of the code includes the debug output trace mechanism and
5513has a
5514much larger code and data size.
5515
5516  Previous Release:
5517    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
5518    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
5519  Current Release:
5520    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5521    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5522
55232) iASL Compiler/Disassembler and Tools:
5524
5525iASL/Disassembler: Write ACPI errors to stderr instead of the output
5526file.
5527This keeps the output files free of random error messages that may
5528originate
5529from within the namespace/interpreter code. Used this opportunity to
5530merge
5531all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
5532866. Lin Ming, Bob Moore.
5533
5534Tools: update some printfs for ansi warnings on size_t. Handle width
5535change
5536of size_t on 32-bit versus 64-bit generations. Lin Ming.
5537
5538----------------------------------------
553906 August 2010. Summary of changes for version 20100806:
5540
55411) ACPI CA Core Subsystem:
5542
5543Designed and implemented a new host interface to the _OSI support code.
5544This
5545will allow the host to dynamically add or remove multiple _OSI strings,
5546as
5547well as install an optional handler that is called for each _OSI
5548invocation.
5549Also added a new AML debugger command, 'osi' to display and modify the
5550global
5551_OSI string table, and test support in the AcpiExec utility. See the
5552ACPICA
5553reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
5554New Functions:
5555    AcpiInstallInterface - Add an _OSI string.
5556    AcpiRemoveInterface - Delete an _OSI string.
5557    AcpiInstallInterfaceHandler - Install optional _OSI handler.
5558Obsolete Functions:
5559    AcpiOsValidateInterface - no longer used.
5560New Files:
5561    source/components/utilities/utosi.c
5562
5563Re-introduced the support to enable multi-byte transfers for Embedded
5564Controller (EC) operation regions. A reported problem was found to be a
5565bug
5566in the host OS, not in the multi-byte support. Previously, the maximum
5567data
5568size passed to the EC operation region handler was a single byte. There
5569are
5570often EC Fields larger than one byte that need to be transferred, and it
5571is
5572useful for the EC driver to lock these as a single transaction. This
5573change
5574enables single transfers larger than 8 bits. This effectively changes the
5575access to the EC space from ByteAcc to AnyAcc, and will probably require
5576changes to the host OS Embedded Controller driver to enable 16/32/64/256-
5577bit
5578transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
5579
5580Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
5581prototype in acpiosxf.h had the output value pointer as a (void *).
5582It should be a (UINT64 *). This may affect some host OSL code.
5583
5584Fixed a couple problems with the recently modified Linux makefiles for
5585iASL
5586and AcpiExec. These new makefiles place the generated object files in the
5587local directory so that there can be no collisions between the files that
5588are
5589shared between them that are compiled with different options.
5590
5591Example Code and Data Size: These are the sizes for the OS-independent
5592acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5593debug version of the code includes the debug output trace mechanism and
5594has a
5595much larger code and data size.
5596
5597  Previous Release:
5598    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5599    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
5600  Current Release:
5601    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
5602    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
5603
56042) iASL Compiler/Disassembler and Tools:
5605
5606iASL/Disassembler: Added a new option (-da, "disassemble all") to load
5607the
5608namespace from and disassemble an entire group of AML files. Useful for
5609loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
5610and
5611disassembling with one simple command. ACPICA BZ 865. Lin Ming.
5612
5613iASL: Allow multiple invocations of -e option. This change allows
5614multiple
5615uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
5616834.
5617Lin Ming.
5618
5619----------------------------------------
562002 July 2010. Summary of changes for version 20100702:
5621
56221) ACPI CA Core Subsystem:
5623
5624Implemented several updates to the recently added GPE reference count
5625support. The model for "wake" GPEs is changing to give the host OS
5626complete
5627control of these GPEs. Eventually, the ACPICA core will not execute any
5628_PRW
5629methods, since the host already must execute them. Also, additional
5630changes
5631were made to help ensure that the reference counts are kept in proper
5632synchronization with reality. Rafael J. Wysocki.
5633
56341) Ensure that GPEs are not enabled twice during initialization.
56352) Ensure that GPE enable masks stay in sync with the reference count.
56363) Do not inadvertently enable GPEs when writing GPE registers.
56374) Remove the internal wake reference counter and add new AcpiGpeWakeup
5638interface. This interface will set or clear individual GPEs for wakeup.
56395) Remove GpeType argument from AcpiEnable and AcpiDisable. These
5640interfaces
5641are now used for "runtime" GPEs only.
5642
5643Changed the behavior of the GPE install/remove handler interfaces. The
5644GPE
5645is
5646no longer disabled during this process, as it was found to cause problems
5647on
5648some machines. Rafael J. Wysocki.
5649
5650Reverted a change introduced in version 20100528 to enable Embedded
5651Controller multi-byte transfers. This change was found to cause problems
5652with
5653Index Fields and possibly Bank Fields. It will be reintroduced when these
5654problems have been resolved.
5655
5656Fixed a problem with references to Alias objects within Package Objects.
5657A
5658reference to an Alias within the definition of a Package was not always
5659resolved properly. Aliases to objects like Processors, Thermal zones,
5660etc.
5661were resolved to the actual object instead of a reference to the object
5662as
5663it
5664should be. Package objects are only allowed to contain integer, string,
5665buffer, package, and reference objects. Redhat bugzilla 608648.
5666
5667Example Code and Data Size: These are the sizes for the OS-independent
5668acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5669debug version of the code includes the debug output trace mechanism and
5670has a
5671much larger code and data size.
5672
5673  Previous Release:
5674    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5675    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
5676  Current Release:
5677    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5678    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
5679
56802) iASL Compiler/Disassembler and Tools:
5681
5682iASL: Implemented a new compiler subsystem to allow definition and
5683compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
5684These
5685are called "ACPI Data Tables", and the new compiler is the "Data Table
5686Compiler". This compiler is intended to simplify the existing error-prone
5687process of creating these tables for the BIOS, as well as allowing the
5688disassembly, modification, recompilation, and override of existing ACPI
5689data
5690tables. See the iASL User Guide for detailed information.
5691
5692iASL: Implemented a new Template Generator option in support of the new
5693Data
5694Table Compiler. This option will create examples of all known ACPI tables
5695that can be used as the basis for table development. See the iASL
5696documentation and the -T option.
5697
5698Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
5699Descriptor Table).
5700
5701Updated the Linux makefiles for iASL and AcpiExec to place the generated
5702object files in the local directory so that there can be no collisions
5703between the shared files between them that are generated with different
5704options.
5705
5706Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
5707Use
5708the #define __APPLE__ to enable this support.
5709
5710----------------------------------------
571128 May 2010. Summary of changes for version 20100528:
5712
5713Note: The ACPI 4.0a specification was released on April 5, 2010 and is
5714available at www.acpi.info. This is primarily an errata release.
5715
57161) ACPI CA Core Subsystem:
5717
5718Undefined ACPI tables: We are looking for the definitions for the
5719following
5720ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
5721
5722Implemented support to enable multi-byte transfers for Embedded
5723Controller
5724(EC) operation regions. Previously, the maximum data size passed to the
5725EC
5726operation region handler was a single byte. There are often EC Fields
5727larger
5728than one byte that need to be transferred, and it is useful for the EC
5729driver
5730to lock these as a single transaction. This change enables single
5731transfers
5732larger than 8 bits. This effectively changes the access to the EC space
5733from
5734ByteAcc to AnyAcc, and will probably require changes to the host OS
5735Embedded
5736Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
5737bit
5738transfers. Alexey Starikovskiy, Lin Ming
5739
5740Implemented a performance enhancement for namespace search and access.
5741This
5742change enhances the performance of namespace searches and walks by adding
5743a
5744backpointer to the parent in each namespace node. On large namespaces,
5745this
5746change can improve overall ACPI performance by up to 9X. Adding a pointer
5747to
5748each namespace node increases the overall size of the internal namespace
5749by
5750about 5%, since each namespace entry usually consists of both a namespace
5751node and an ACPI operand object. However, this is the first growth of the
5752namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
5753
5754Implemented a performance optimization that reduces the number of
5755namespace
5756walks. On control method exit, only walk the namespace if the method is
5757known
5758to have created namespace objects outside of its local scope. Previously,
5759the
5760entire namespace was traversed on each control method exit. This change
5761can
5762improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
5763Moore.
5764
5765Added support to truncate I/O addresses to 16 bits for Windows
5766compatibility.
5767Some ASL code has been seen in the field that inadvertently has bits set
5768above bit 15. This feature is optional and is enabled if the BIOS
5769requests
5770any Windows OSI strings. It can also be enabled by the host OS. Matthew
5771Garrett, Bob Moore.
5772
5773Added support to limit the maximum time for the ASL Sleep() operator. To
5774prevent accidental deep sleeps, limit the maximum time that Sleep() will
5775actually sleep. Configurable, the default maximum is two seconds. ACPICA
5776bugzilla 854.
5777
5778Added run-time validation support for the _WDG and_WED Microsoft
5779predefined
5780methods. These objects are defined by "Windows Instrumentation", and are
5781not
5782part of the ACPI spec. ACPICA BZ 860.
5783
5784Expanded all statistic counters used during namespace and device
5785initialization from 16 to 32 bits in order to support very large
5786namespaces.
5787
5788Replaced all instances of %d in printf format specifiers with %u since
5789nearly
5790all integers in ACPICA are unsigned.
5791
5792Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
5793returned
5794as AE_NO_HANDLER.
5795
5796Example Code and Data Size: These are the sizes for the OS-independent
5797acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5798debug version of the code includes the debug output trace mechanism and
5799has a
5800much larger code and data size.
5801
5802  Previous Release:
5803    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
5804    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
5805  Current Release:
5806    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5807    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
5808
58092) iASL Compiler/Disassembler and Tools:
5810
5811iASL: Added compiler support for the _WDG and_WED Microsoft predefined
5812methods. These objects are defined by "Windows Instrumentation", and are
5813not
5814part of the ACPI spec. ACPICA BZ 860.
5815
5816AcpiExec: added option to disable the memory tracking mechanism. The -dt
5817option will disable the tracking mechanism, which improves performance
5818considerably.
5819
5820AcpiExec: Restructured the command line options into -d (disable) and -e
5821(enable) options.
5822
5823----------------------------------------
582428 April 2010. Summary of changes for version 20100428:
5825
58261) ACPI CA Core Subsystem:
5827
5828Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
5829including FADT-based and GPE Block Devices, execute any _PRW methods in
5830the
5831new table, and process any _Lxx/_Exx GPE methods in the new table. Any
5832runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
5833immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
5834Devices. Provides compatibility with other ACPI implementations. Two new
5835files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
5836Moore.
5837
5838Fixed a regression introduced in version 20100331 within the table
5839manager
5840where initial table loading could fail. This was introduced in the fix
5841for
5842AcpiReallocateRootTable. Also, renamed some of fields in the table
5843manager
5844data structures to clarify their meaning and use.
5845
5846Fixed a possible allocation overrun during internal object copy in
5847AcpiUtCopySimpleObject. The original code did not correctly handle the
5848case
5849where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
5850847.
5851
5852Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
5853possible access beyond end-of-allocation. Also, now fully validate
5854descriptor
5855(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
5856
5857Example Code and Data Size: These are the sizes for the OS-independent
5858acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5859debug version of the code includes the debug output trace mechanism and
5860has a
5861much larger code and data size.
5862
5863  Previous Release:
5864    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
5865    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
5866  Current Release:
5867    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
5868    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
5869
58702) iASL Compiler/Disassembler and Tools:
5871
5872iASL: Implemented Min/Max/Len/Gran validation for address resource
5873descriptors. This change implements validation for the address fields
5874that
5875are common to all address-type resource descriptors. These checks are
5876implemented: Checks for valid Min/Max, length within the Min/Max window,
5877valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
5878per
5879table 6-40 in the ACPI 4.0a specification. Also split the large
5880aslrestype1.c
5881and aslrestype2.c files into five new files. ACPICA BZ 840.
5882
5883iASL: Added support for the _Wxx predefined names. This support was
5884missing
5885and these names were not recognized by the compiler as valid predefined
5886names. ACPICA BZ 851.
5887
5888iASL: Added an error for all predefined names that are defined to return
5889no
5890value and thus must be implemented as Control Methods. These include all
5891of
5892the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
5893names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
5894
5895iASL: Implemented the -ts option to emit hex AML data in ASL format, as
5896an
5897ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
5898be
5899dynamically loaded via the Load() operator. Also cleaned up output for
5900the
5901-
5902ta and -tc options. ACPICA BZ 853.
5903
5904Tests: Added a new file with examples of extended iASL error checking.
5905Demonstrates the advanced error checking ability of the iASL compiler.
5906Available at tests/misc/badcode.asl.
5907
5908----------------------------------------
590931 March 2010. Summary of changes for version 20100331:
5910
59111) ACPI CA Core Subsystem:
5912
5913Completed a major update for the GPE support in order to improve support
5914for
5915shared GPEs and to simplify both host OS and ACPICA code. Added a
5916reference
5917count mechanism to support shared GPEs that require multiple device
5918drivers.
5919Several external interfaces have changed. One external interface has been
5920removed. One new external interface was added. Most of the GPE external
5921interfaces now use the GPE spinlock instead of the events mutex (and the
5922Flags parameter for many GPE interfaces has been removed.) See the
5923updated
5924ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
5925Rafael
5926Wysocki. ACPICA BZ 831.
5927
5928Changed:
5929    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
5930Removed:
5931    AcpiSetGpeType
5932New:
5933    AcpiSetGpe
5934
5935Implemented write support for DataTable operation regions. These regions
5936are
5937defined via the DataTableRegion() operator. Previously, only read support
5938was
5939implemented. The ACPI specification allows DataTableRegions to be
5940read/write,
5941however.
5942
5943Implemented a new subsystem option to force a copy of the DSDT to local
5944memory. Optionally copy the entire DSDT to local memory (instead of
5945simply
5946mapping it.) There are some (albeit very rare) BIOSs that corrupt or
5947replace
5948the original DSDT, creating the need for this option. Default is FALSE,
5949do
5950not copy the DSDT.
5951
5952Implemented detection of a corrupted or replaced DSDT. This change adds
5953support to detect a DSDT that has been corrupted and/or replaced from
5954outside
5955the OS (by firmware). This is typically catastrophic for the system, but
5956has
5957been seen on some machines. Once this problem has been detected, the DSDT
5958copy option can be enabled via system configuration. Lin Ming, Bob Moore.
5959
5960Fixed two problems with AcpiReallocateRootTable during the root table
5961copy.
5962When copying the root table to the new allocation, the length used was
5963incorrect. The new size was used instead of the current table size,
5964meaning
5965too much data was copied. Also, the count of available slots for ACPI
5966tables
5967was not set correctly. Alexey Starikovskiy, Bob Moore.
5968
5969Example Code and Data Size: These are the sizes for the OS-independent
5970acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5971debug version of the code includes the debug output trace mechanism and
5972has a
5973much larger code and data size.
5974
5975  Previous Release:
5976    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
5977    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
5978  Current Release:
5979    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
5980    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
5981
59822) iASL Compiler/Disassembler and Tools:
5983
5984iASL: Implement limited typechecking for values returned from predefined
5985control methods. The type of any returned static (unnamed) object is now
5986validated. For example, Return(1). ACPICA BZ 786.
5987
5988iASL: Fixed a predefined name object verification regression. Fixes a
5989problem
5990introduced in version 20100304. An error is incorrectly generated if a
5991predefined name is declared as a static named object with a value defined
5992using the keywords "Zero", "One", or "Ones". Lin Ming.
5993
5994iASL: Added Windows 7 support for the -g option (get local ACPI tables)
5995by
5996reducing the requested registry access rights. ACPICA BZ 842.
5997
5998Disassembler: fixed a possible fault when generating External()
5999statements.
6000Introduced in commit ae7d6fd: Properly handle externals with parent-
6001prefix
6002(carat). Fixes a string length allocation calculation. Lin Ming.
6003
6004----------------------------------------
600504 March 2010. Summary of changes for version 20100304:
6006
60071) ACPI CA Core Subsystem:
6008
6009Fixed a possible problem with the AML Mutex handling function
6010AcpiExReleaseMutex where the function could fault under the very rare
6011condition when the interpreter has blocked, the interpreter lock is
6012released,
6013the interpreter is then reentered via the same thread, and attempts to
6014acquire an AML mutex that was previously acquired. FreeBSD report 140979.
6015Lin
6016Ming.
6017
6018Implemented additional configuration support for the AML "Debug Object".
6019Output from the debug object can now be enabled via a global variable,
6020AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
6021debugging.
6022This debug output is now available in the release version of ACPICA
6023instead
6024of just the debug version. Also, the entire debug output module can now
6025be
6026configured out of the ACPICA build if desired. One new file added,
6027executer/exdebug.c. Lin Ming, Bob Moore.
6028
6029Added header support for the ACPI MCHI table (Management Controller Host
6030Interface Table). This table was added in ACPI 4.0, but the defining
6031document
6032has only recently become available.
6033
6034Standardized output of integer values for ACPICA warnings/errors. Always
6035use
60360x prefix for hex output, always use %u for unsigned integer decimal
6037output.
6038Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
6039400
6040invocations.) These invocations were converted from the original
6041ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
6042
6043Example Code and Data Size: These are the sizes for the OS-independent
6044acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6045debug version of the code includes the debug output trace mechanism and
6046has a
6047much larger code and data size.
6048
6049  Previous Release:
6050    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
6051    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
6052  Current Release:
6053    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
6054    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
6055
60562) iASL Compiler/Disassembler and Tools:
6057
6058iASL: Implemented typechecking support for static (non-control method)
6059predefined named objects that are declared with the Name() operator. For
6060example, the type of this object is now validated to be of type Integer:
6061Name(_BBN, 1). This change migrates the compiler to using the core
6062predefined
6063name table instead of maintaining a local version. Added a new file,
6064aslpredef.c. ACPICA BZ 832.
6065
6066Disassembler: Added support for the ACPI 4.0 MCHI table.
6067
6068----------------------------------------
606921 January 2010. Summary of changes for version 20100121:
6070
60711) ACPI CA Core Subsystem:
6072
6073Added the 2010 copyright to all module headers and signons. This affects
6074virtually every file in the ACPICA core subsystem, the iASL compiler, the
6075tools/utilities, and the test suites.
6076
6077Implemented a change to the AcpiGetDevices interface to eliminate
6078unnecessary
6079invocations of the _STA method. In the case where a specific _HID is
6080requested, do not run _STA until a _HID match is found. This eliminates
6081potentially dozens of _STA calls during a search for a particular
6082device/HID,
6083which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
6084
6085Implemented an additional repair for predefined method return values.
6086Attempt
6087to repair unexpected NULL elements within returned Package objects.
6088Create
6089an
6090Integer of value zero, a NULL String, or a zero-length Buffer as
6091appropriate.
6092ACPICA BZ 818. Lin Ming, Bob Moore.
6093
6094Removed the obsolete ACPI_INTEGER data type. This type was introduced as
6095the
6096code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
6097(with
609864-bit AML integers). It is now obsolete and this change removes it from
6099the
6100ACPICA code base, replaced by UINT64. The original typedef has been
6101retained
6102for now for compatibility with existing device driver code. ACPICA BZ
6103824.
6104
6105Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
6106in
6107the parse tree object.
6108
6109Added additional warning options for the gcc-4 generation. Updated the
6110source
6111accordingly. This includes some code restructuring to eliminate
6112unreachable
6113code, elimination of some gotos, elimination of unused return values,
6114some
6115additional casting, and removal of redundant declarations.
6116
6117Example Code and Data Size: These are the sizes for the OS-independent
6118acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6119debug version of the code includes the debug output trace mechanism and
6120has a
6121much larger code and data size.
6122
6123  Previous Release:
6124    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6125    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6126  Current Release:
6127    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
6128    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
6129
61302) iASL Compiler/Disassembler and Tools:
6131
6132No functional changes for this release.
6133
6134----------------------------------------
613514 December 2009. Summary of changes for version 20091214:
6136
61371) ACPI CA Core Subsystem:
6138
6139Enhanced automatic data type conversions for predefined name repairs.
6140This
6141change expands the automatic repairs/conversions for predefined name
6142return
6143values to make Integers, Strings, and Buffers fully interchangeable.
6144Also,
6145a
6146Buffer can be converted to a Package of Integers if necessary. The
6147nsrepair.c
6148module was completely restructured. Lin Ming, Bob Moore.
6149
6150Implemented automatic removal of null package elements during predefined
6151name
6152repairs. This change will automatically remove embedded and trailing NULL
6153package elements from returned package objects that are defined to
6154contain
6155a
6156variable number of sub-packages. The driver is then presented with a
6157package
6158with no null elements to deal with. ACPICA BZ 819.
6159
6160Implemented a repair for the predefined _FDE and _GTM names. The expected
6161return value for both names is a Buffer of 5 DWORDs. This repair fixes
6162two
6163possible problems (both seen in the field), where a package of integers
6164is
6165returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
6166Kim.
6167
6168Implemented additional module-level code support. This change will
6169properly
6170execute module-level code that is not at the root of the namespace (under
6171a
6172Device object, etc.). Now executes the code within the current scope
6173instead
6174of the root. ACPICA BZ 762. Lin Ming.
6175
6176Fixed possible mutex acquisition errors when running _REG methods. Fixes
6177a
6178problem where mutex errors can occur when running a _REG method that is
6179in
6180the same scope as a method-defined operation region or an operation
6181region
6182under a module-level IF block. This type of code is rare, so the problem
6183has
6184not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
6185
6186Fixed a possible memory leak during module-level code execution. An
6187object
6188could be leaked for each block of executed module-level code if the
6189interpreter slack mode is enabled This change deletes any implicitly
6190returned
6191object from the module-level code block. Lin Ming.
6192
6193Removed messages for successful predefined repair(s). The repair
6194mechanism
6195was considered too wordy. Now, messages are only unconditionally emitted
6196if
6197the return object cannot be repaired. Existing messages for successful
6198repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
6199827.
6200
6201Example Code and Data Size: These are the sizes for the OS-independent
6202acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6203debug version of the code includes the debug output trace mechanism and
6204has a
6205much larger code and data size.
6206
6207  Previous Release:
6208    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
6209    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
6210  Current Release:
6211    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6212    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6213
62142) iASL Compiler/Disassembler and Tools:
6215
6216iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
6217files
6218were no longer automatically removed at the termination of the compile.
6219
6220acpiexec: Implemented the -f option to specify default region fill value.
6221This option specifies the value used to initialize buffers that simulate
6222operation regions. Default value is zero. Useful for debugging problems
6223that
6224depend on a specific initial value for a region or field.
6225
6226----------------------------------------
622712 November 2009. Summary of changes for version 20091112:
6228
62291) ACPI CA Core Subsystem:
6230
6231Implemented a post-order callback to AcpiWalkNamespace. The existing
6232interface only has a pre-order callback. This change adds an additional
6233parameter for a post-order callback which will be more useful for bus
6234scans.
6235ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
6236
6237Modified the behavior of the operation region memory mapping cache for
6238SystemMemory. Ensure that the memory mappings created for operation
6239regions
6240do not cross 4K page boundaries. Crossing a page boundary while mapping
6241regions can cause kernel warnings on some hosts if the pages have
6242different
6243attributes. Such regions are probably BIOS bugs, and this is the
6244workaround.
6245Linux BZ 14445. Lin Ming.
6246
6247Implemented an automatic repair for predefined methods that must return
6248sorted lists. This change will repair (by sorting) packages returned by
6249_ALR,
6250_PSS, and _TSS. Drivers can now assume that the packages are correctly
6251sorted
6252and do not contain NULL package elements. Adds one new file,
6253namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
6254
6255Fixed a possible fault during predefined name validation if a return
6256Package
6257object contains NULL elements. Also adds a warning if a NULL element is
6258followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
6259may
6260include repair or removal of all such NULL elements where possible.
6261
6262Implemented additional module-level executable AML code support. This
6263change
6264will execute module-level code that is not at the root of the namespace
6265(under a Device object, etc.) at table load time. Module-level executable
6266AML
6267code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
6268
6269Implemented a new internal function to create Integer objects. This
6270function
6271simplifies miscellaneous object creation code. ACPICA BZ 823.
6272
6273Reduced the severity of predefined repair messages, Warning to Info.
6274Since
6275the object was successfully repaired, a warning is too severe. Reduced to
6276an
6277info message for now. These messages may eventually be changed to debug-
6278only.
6279ACPICA BZ 812.
6280
6281Example Code and Data Size: These are the sizes for the OS-independent
6282acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6283debug version of the code includes the debug output trace mechanism and
6284has a
6285much larger code and data size.
6286
6287  Previous Release:
6288    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
6289    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
6290  Current Release:
6291    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
6292    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
6293
62942) iASL Compiler/Disassembler and Tools:
6295
6296iASL: Implemented Switch() with While(1) so that Break works correctly.
6297This
6298change correctly implements the Switch operator with a surrounding
6299While(1)
6300so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
6301
6302iASL: Added a message if a package initializer list is shorter than
6303package
6304length. Adds a new remark for a Package() declaration if an initializer
6305list
6306exists, but is shorter than the declared length of the package. Although
6307technically legal, this is probably a coding error and it is seen in the
6308field. ACPICA BZ 815. Lin Ming, Bob Moore.
6309
6310iASL: Fixed a problem where the compiler could fault after the maximum
6311number
6312of errors was reached (200).
6313
6314acpixtract: Fixed a possible warning for pointer cast if the compiler
6315warning
6316level set very high.
6317
6318----------------------------------------
631913 October 2009. Summary of changes for version 20091013:
6320
63211) ACPI CA Core Subsystem:
6322
6323Fixed a problem where an Operation Region _REG method could be executed
6324more
6325than once. If a custom address space handler is installed by the host
6326before
6327the "initialize operation regions" phase of the ACPICA initialization,
6328any
6329_REG methods for that address space could be executed twice. This change
6330fixes the problem. ACPICA BZ 427. Lin Ming.
6331
6332Fixed a possible memory leak for the Scope() ASL operator. When the exact
6333invocation of "Scope(\)" is executed (change scope to root), one internal
6334operand object was leaked. Lin Ming.
6335
6336Implemented a run-time repair for the _MAT predefined method. If the _MAT
6337return value is defined as a Field object in the AML, and the field
6338size is less than or equal to the default width of an integer (32 or
633964),_MAT
6340can incorrectly return an Integer instead of a Buffer. ACPICA now
6341automatically repairs this problem. ACPICA BZ 810.
6342
6343Implemented a run-time repair for the _BIF and _BIX predefined methods.
6344The
6345"OEM Information" field is often incorrectly returned as an Integer with
6346value zero if the field is not supported by the platform. This is due to
6347an
6348ambiguity in the ACPI specification. The field should always be a string.
6349ACPICA now automatically repairs this problem by returning a NULL string
6350within the returned Package. ACPICA BZ 807.
6351
6352Example Code and Data Size: These are the sizes for the OS-independent
6353acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6354debug version of the code includes the debug output trace mechanism and
6355has a
6356much larger code and data size.
6357
6358  Previous Release:
6359    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
6360    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
6361  Current Release:
6362    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
6363    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
6364
63652) iASL Compiler/Disassembler and Tools:
6366
6367Disassembler: Fixed a problem where references to external symbols that
6368contained one or more parent-prefixes (carats) were not handled
6369correctly,
6370possibly causing a fault. ACPICA BZ 806. Lin Ming.
6371
6372Disassembler: Restructured the code so that all functions that handle
6373external symbols are in a single module. One new file is added,
6374common/dmextern.c.
6375
6376AML Debugger: Added a max count argument for the Batch command (which
6377executes multiple predefined methods within the namespace.)
6378
6379iASL: Updated the compiler documentation (User Reference.) Available at
6380http://www.acpica.org/documentation/. ACPICA BZ 750.
6381
6382AcpiXtract: Updated for Lint and other formatting changes. Close all open
6383files.
6384
6385----------------------------------------
638603 September 2009. Summary of changes for version 20090903:
6387
63881) ACPI CA Core Subsystem:
6389
6390For Windows Vista compatibility, added the automatic execution of an _INI
6391method located at the namespace root (\_INI). This method is executed at
6392table load time. This support is in addition to the automatic execution
6393of
6394\_SB._INI. Lin Ming.
6395
6396Fixed a possible memory leak in the interpreter for AML package objects
6397if
6398the package initializer list is longer than the defined size of the
6399package.
6400This apparently can only happen if the BIOS changes the package size on
6401the
6402fly (seen in a _PSS object), as ASL compilers do not allow this. The
6403interpreter will truncate the package to the defined size (and issue an
6404error
6405message), but previously could leave the extra objects undeleted if they
6406were
6407pre-created during the argument processing (such is the case if the
6408package
6409consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
6410
6411Fixed a problem seen when a Buffer or String is stored to itself via ASL.
6412This has been reported in the field. Previously, ACPICA would zero out
6413the
6414buffer/string. Now, the operation is treated as a noop. Provides Windows
6415compatibility. ACPICA BZ 803. Lin Ming.
6416
6417Removed an extraneous error message for ASL constructs of the form
6418Store(LocalX,LocalX) when LocalX is uninitialized. These curious
6419statements
6420are seen in many BIOSs and are once again treated as NOOPs and no error
6421is
6422emitted when they are encountered. ACPICA BZ 785.
6423
6424Fixed an extraneous warning message if a _DSM reserved method returns a
6425Package object. _DSM can return any type of object, so validation on the
6426return type cannot be performed. ACPICA BZ 802.
6427
6428Example Code and Data Size: These are the sizes for the OS-independent
6429acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6430debug version of the code includes the debug output trace mechanism and
6431has a
6432much larger code and data size.
6433
6434  Previous Release:
6435    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
6436    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
6437  Current Release:
6438    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
6439    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
6440
64412) iASL Compiler/Disassembler and Tools:
6442
6443iASL: Fixed a problem with the use of the Alias operator and Resource
6444Templates. The correct alias is now constructed and no error is emitted.
6445ACPICA BZ 738.
6446
6447iASL: Implemented the -I option to specify additional search directories
6448for
6449include files. Allows multiple additional search paths for include files.
6450Directories are searched in the order specified on the command line
6451(after
6452the local directory is searched.) ACPICA BZ 800.
6453
6454iASL: Fixed a problem where the full pathname for include files was not
6455emitted for warnings/errors. This caused the IDE support to not work
6456properly. ACPICA BZ 765.
6457
6458iASL: Implemented the -@ option to specify a Windows-style response file
6459containing additional command line options. ACPICA BZ 801.
6460
6461AcpiExec: Added support to load multiple AML files simultaneously (such
6462as
6463a
6464DSDT and multiple SSDTs). Also added support for wildcards within the AML
6465pathname. These features allow all machine tables to be easily loaded and
6466debugged together. ACPICA BZ 804.
6467
6468Disassembler: Added missing support for disassembly of HEST table Error
6469Bank
6470subtables.
6471
6472----------------------------------------
647330 July 2009. Summary of changes for version 20090730:
6474
6475The ACPI 4.0 implementation for ACPICA is complete with this release.
6476
64771) ACPI CA Core Subsystem:
6478
6479ACPI 4.0: Added header file support for all new and changed ACPI tables.
6480Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
6481new
6482for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
6483BERT,
6484EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
6485There
6486have been some ACPI 4.0 changes to other existing tables. Split the large
6487actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
6488
6489ACPI 4.0: Implemented predefined name validation for all new names. There
6490are
649131 new names in ACPI 4.0. The predefined validation module was split into
6492two
6493files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
6494
6495Implemented support for so-called "module-level executable code". This is
6496executable AML code that exists outside of any control method and is
6497intended
6498to be executed at table load time. Although illegal since ACPI 2.0, this
6499type
6500of code still exists and is apparently still being created. Blocks of
6501this
6502code are now detected and executed as intended. Currently, the code
6503blocks
6504must exist under either an If, Else, or While construct; these are the
6505typical cases seen in the field. ACPICA BZ 762. Lin Ming.
6506
6507Implemented an automatic dynamic repair for predefined names that return
6508nested Package objects. This applies to predefined names that are defined
6509to
6510return a variable-length Package of sub-packages. If the number of sub-
6511packages is one, BIOS code is occasionally seen that creates a simple
6512single
6513package with no sub-packages. This code attempts to fix the problem by
6514wrapping a new package object around the existing package. These methods
6515can
6516be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
6517BZ
6518790.
6519
6520Fixed a regression introduced in 20090625 for the AcpiGetDevices
6521interface.
6522The _HID/_CID matching was broken and no longer matched IDs correctly.
6523ACPICA
6524BZ 793.
6525
6526Fixed a problem with AcpiReset where the reset would silently fail if the
6527register was one of the protected I/O ports. AcpiReset now bypasses the
6528port
6529validation mechanism. This may eventually be driven into the
6530AcpiRead/Write
6531interfaces.
6532
6533Fixed a regression related to the recent update of the AcpiRead/Write
6534interfaces. A sleep/suspend could fail if the optional PM2 Control
6535register
6536does not exist during an attempt to write the Bus Master Arbitration bit.
6537(However, some hosts already delete the code that writes this bit, and
6538the
6539code may in fact be obsolete at this date.) ACPICA BZ 799.
6540
6541Fixed a problem where AcpiTerminate could fault if inadvertently called
6542twice
6543in succession. ACPICA BZ 795.
6544
6545Example Code and Data Size: These are the sizes for the OS-independent
6546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6547debug version of the code includes the debug output trace mechanism and
6548has a
6549much larger code and data size.
6550
6551  Previous Release:
6552    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
6553    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
6554  Current Release:
6555    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
6556    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
6557
65582) iASL Compiler/Disassembler and Tools:
6559
6560ACPI 4.0: Implemented disassembler support for all new ACPI tables and
6561changes to existing tables. ACPICA BZ 775.
6562
6563----------------------------------------
656425 June 2009. Summary of changes for version 20090625:
6565
6566The ACPI 4.0 Specification was released on June 16 and is available at
6567www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
6568continue for the next few releases.
6569
65701) ACPI CA Core Subsystem:
6571
6572ACPI 4.0: Implemented interpreter support for the IPMI operation region
6573address space. Includes support for bi-directional data buffers and an
6574IPMI
6575address space handler (to be installed by an IPMI device driver.) ACPICA
6576BZ
6577773. Lin Ming.
6578
6579ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
6580Includes
6581support in both the header files and the disassembler.
6582
6583Completed a major update for the AcpiGetObjectInfo external interface.
6584Changes include:
6585 - Support for variable, unlimited length HID, UID, and CID strings.
6586 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
6587etc.)
6588 - Call the _SxW power methods on behalf of a device object.
6589 - Determine if a device is a PCI root bridge.
6590 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
6591These changes will require an update to all callers of this interface.
6592See
6593the updated ACPICA Programmer Reference for details. One new source file
6594has
6595been added - utilities/utids.c. ACPICA BZ 368, 780.
6596
6597Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
6598transfers. The Value parameter has been extended from 32 bits to 64 bits
6599in
6600order to support new ACPI 4.0 tables. These changes will require an
6601update
6602to
6603all callers of these interfaces. See the ACPICA Programmer Reference for
6604details. ACPICA BZ 768.
6605
6606Fixed several problems with AcpiAttachData. The handler was not invoked
6607when
6608the host node was deleted. The data sub-object was not automatically
6609deleted
6610when the host node was deleted. The interface to the handler had an
6611unused
6612parameter, this was removed. ACPICA BZ 778.
6613
6614Enhanced the function that dumps ACPI table headers. All non-printable
6615characters in the string fields are now replaced with '?' (Signature,
6616OemId,
6617OemTableId, and CompilerId.) ACPI tables with non-printable characters in
6618these fields are occasionally seen in the field. ACPICA BZ 788.
6619
6620Fixed a problem with predefined method repair code where the code that
6621attempts to repair/convert an object of incorrect type is only executed
6622on
6623the first time the predefined method is called. The mechanism that
6624disables
6625warnings on subsequent calls was interfering with the repair mechanism.
6626ACPICA BZ 781.
6627
6628Fixed a possible memory leak in the predefined validation/repair code
6629when
6630a
6631buffer is automatically converted to an expected string object.
6632
6633Removed obsolete 16-bit files from the distribution and from the current
6634git
6635tree head. ACPICA BZ 776.
6636
6637Example Code and Data Size: These are the sizes for the OS-independent
6638acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6639debug version of the code includes the debug output trace mechanism and
6640has a
6641much larger code and data size.
6642
6643  Previous Release:
6644    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
6645    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
6646  Current Release:
6647    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
6648    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
6649
66502) iASL Compiler/Disassembler and Tools:
6651
6652ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
6653operation region keyword. ACPICA BZ 771, 772. Lin Ming.
6654
6655ACPI 4.0: iASL - implemented compile-time validation support for all new
6656predefined names and control methods (31 total). ACPICA BZ 769.
6657
6658----------------------------------------
665921 May 2009. Summary of changes for version 20090521:
6660
66611) ACPI CA Core Subsystem:
6662
6663Disabled the preservation of the SCI enable bit in the PM1 control
6664register.
6665The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
6666to
6667be
6668a "preserved" bit - "OSPM always preserves this bit position", section
66694.7.3.2.1. However, some machines fail if this bit is in fact preserved
6670because the bit needs to be explicitly set by the OS as a workaround. No
6671machines fail if the bit is not preserved. Therefore, ACPICA no longer
6672attempts to preserve this bit.
6673
6674Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
6675incorrectly formed _PRT package could cause a fault. Added validation to
6676ensure that each package element is actually a sub-package.
6677
6678Implemented a new interface to install or override a single control
6679method,
6680AcpiInstallMethod. This interface is useful when debugging in order to
6681repair
6682an existing method or to install a missing method without having to
6683override
6684the entire ACPI table. See the ACPICA Programmer Reference for use and
6685examples. Lin Ming, Bob Moore.
6686
6687Fixed several reference count issues with the DdbHandle object that is
6688created from a Load or LoadTable operator. Prevent premature deletion of
6689the
6690object. Also, mark the object as invalid once the table has been
6691unloaded.
6692This is needed because the handle itself may not be deleted after the
6693table
6694unload, depending on whether it has been stored in a named object by the
6695caller. Lin Ming.
6696
6697Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
6698mutexes of the same sync level are acquired but then not released in
6699strict
6700opposite order, the internally maintained Current Sync Level becomes
6701confused
6702and can cause subsequent execution errors. ACPICA BZ 471.
6703
6704Changed the allowable release order for ASL mutex objects. The ACPI 4.0
6705specification has been changed to make the SyncLevel for mutex objects
6706more
6707useful. When releasing a mutex, the SyncLevel of the mutex must now be
6708the
6709same as the current sync level. This makes more sense than the previous
6710rule
6711(SyncLevel less than or equal). This change updates the code to match the
6712specification.
6713
6714Fixed a problem with the local version of the AcpiOsPurgeCache function.
6715The
6716(local) cache must be locked during all cache object deletions. Andrew
6717Baumann.
6718
6719Updated the Load operator to use operation region interfaces. This
6720replaces
6721direct memory mapping with region access calls. Now, all region accesses
6722go
6723through the installed region handler as they should.
6724
6725Simplified and optimized the NsGetNextNode function. Reduced parameter
6726count
6727and reduced code for this frequently used function.
6728
6729Example Code and Data Size: These are the sizes for the OS-independent
6730acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6731debug version of the code includes the debug output trace mechanism and
6732has a
6733much larger code and data size.
6734
6735  Previous Release:
6736    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
6737    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
6738  Current Release:
6739    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
6740    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
6741
67422) iASL Compiler/Disassembler and Tools:
6743
6744Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
6745problems
6746with sub-table disassembly and handling invalid sub-tables. Attempt
6747recovery
6748after an invalid sub-table ID.
6749
6750----------------------------------------
675122 April 2009. Summary of changes for version 20090422:
6752
67531) ACPI CA Core Subsystem:
6754
6755Fixed a compatibility issue with the recently released I/O port
6756protection
6757mechanism. For windows compatibility, 1) On a port protection violation,
6758simply ignore the request and do not return an exception (allow the
6759control
6760method to continue execution.) 2) If only part of the request overlaps a
6761protected port, read/write the individual ports that are not protected.
6762Linux
6763BZ 13036. Lin Ming
6764
6765Enhanced the execution of the ASL/AML BreakPoint operator so that it
6766actually
6767breaks into the AML debugger if the debugger is present. This matches the
6768ACPI-defined behavior.
6769
6770Fixed several possible warnings related to the use of the configurable
6771ACPI_THREAD_ID. This type can now be configured as either an integer or a
6772pointer with no warnings. Also fixes several warnings in printf-like
6773statements for the 64-bit build when the type is configured as a pointer.
6774ACPICA BZ 766, 767.
6775
6776Fixed a number of possible warnings when compiling with gcc 4+ (depending
6777on
6778warning options.) Examples include printf formats, aliasing, unused
6779globals,
6780missing prototypes, missing switch default statements, use of non-ANSI
6781library functions, use of non-ANSI constructs. See generate/unix/Makefile
6782for
6783a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
6784
6785Example Code and Data Size: These are the sizes for the OS-independent
6786acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6787debug version of the code includes the debug output trace mechanism and
6788has a
6789much larger code and data size.
6790
6791  Previous Release:
6792    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
6793    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
6794  Current Release:
6795    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
6796    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
6797
67982) iASL Compiler/Disassembler and Tools:
6799
6800iASL: Fixed a generation warning from Bison 2.3 and fixed several
6801warnings
6802on
6803the 64-bit build.
6804
6805iASL: Fixed a problem where the Unix/Linux versions of the compiler could
6806not
6807correctly digest Windows/DOS formatted files (with CR/LF).
6808
6809iASL: Added a new option for "quiet mode" (-va) that produces only the
6810compilation summary, not individual errors and warnings. Useful for large
6811batch compilations.
6812
6813AcpiExec: Implemented a new option (-z) to enable a forced
6814semaphore/mutex
6815timeout that can be used to detect hang conditions during execution of
6816AML
6817code (includes both internal semaphores and AML-defined mutexes and
6818events.)
6819
6820Added new makefiles for the generation of acpica in a generic unix-like
6821environment. These makefiles are intended to generate the acpica tools
6822and
6823utilities from the original acpica git source tree structure.
6824
6825Test Suites: Updated and cleaned up the documentation files. Updated the
6826copyrights to 2009, affecting all source files. Use the new version of
6827iASL
6828with quiet mode. Increased the number of available semaphores in the
6829Windows
6830OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
6831added
6832an alternate implementation of the semaphore timeout to allow aslts to
6833execute fully on Cygwin.
6834
6835----------------------------------------
683620 March 2009. Summary of changes for version 20090320:
6837
68381) ACPI CA Core Subsystem:
6839
6840Fixed a possible race condition between AcpiWalkNamespace and dynamic
6841table
6842unloads. Added a reader/writer locking mechanism to allow multiple
6843concurrent
6844namespace walks (readers), but block a dynamic table unload until it can
6845gain
6846exclusive write access to the namespace. This fixes a problem where a
6847table
6848unload could (possibly catastrophically) delete the portion of the
6849namespace
6850that is currently being examined by a walk. Adds a new file, utlock.c,
6851that
6852implements the reader/writer lock mechanism. ACPICA BZ 749.
6853
6854Fixed a regression introduced in version 20090220 where a change to the
6855FADT
6856handling could cause the ACPICA subsystem to access non-existent I/O
6857ports.
6858
6859Modified the handling of FADT register and table (FACS/DSDT) addresses.
6860The
6861FADT can contain both 32-bit and 64-bit versions of these addresses.
6862Previously, the 64-bit versions were favored, meaning that if both 32 and
686364
6864versions were valid, but not equal, the 64-bit version was used. This was
6865found to cause some machines to fail. Now, in this case, the 32-bit
6866version
6867is used instead. This now matches the Windows behavior.
6868
6869Implemented a new mechanism to protect certain I/O ports. Provides
6870Microsoft
6871compatibility and protects the standard PC I/O ports from access via AML
6872code. Adds a new file, hwvalid.c
6873
6874Fixed a possible extraneous warning message from the FADT support. The
6875message warns of a 32/64 length mismatch between the legacy and GAS
6876definitions for a register.
6877
6878Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
6879is
6880made obsolete by the port protection mechanism above. It was previously
6881used
6882to validate the entire address range of an operation region, which could
6883be
6884incorrect if the range included illegal ports, but fields within the
6885operation region did not actually access those ports. Validation is now
6886performed on a per-field basis instead of the entire region.
6887
6888Modified the handling of the PM1 Status Register ignored bit (bit 11.)
6889Ignored bits must be "preserved" according to the ACPI spec. Usually,
6890this
6891means a read/modify/write when writing to the register. However, for
6892status
6893registers, writing a one means clear the event. Writing a zero means
6894preserve
6895the event (do not clear.) This behavior is clarified in the ACPI 4.0
6896spec,
6897and the ACPICA code now simply always writes a zero to the ignored bit.
6898
6899Modified the handling of ignored bits for the PM1 A/B Control Registers.
6900As
6901per the ACPI specification, for the control registers, preserve
6902(read/modify/write) all bits that are defined as either reserved or
6903ignored.
6904
6905Updated the handling of write-only bits in the PM1 A/B Control Registers.
6906When reading the register, zero the write-only bits as per the ACPI spec.
6907ACPICA BZ 443. Lin Ming.
6908
6909Removed "Linux" from the list of supported _OSI strings. Linux no longer
6910wants to reply true to this request. The Windows strings are the only
6911paths
6912through the AML that are tested and known to work properly.
6913
6914  Previous Release:
6915    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
6916    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
6917  Current Release:
6918    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
6919    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
6920
69212) iASL Compiler/Disassembler and Tools:
6922
6923Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
6924and
6925aetables.c
6926
6927----------------------------------------
692820 February 2009. Summary of changes for version 20090220:
6929
69301) ACPI CA Core Subsystem:
6931
6932Optimized the ACPI register locking. Removed locking for reads from the
6933ACPI
6934bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
6935is
6936not required when reading the single-bit registers. The
6937AcpiGetRegisterUnlocked function is no longer needed and has been
6938removed.
6939This will improve performance for reads on these registers. ACPICA BZ
6940760.
6941
6942Fixed the parameter validation for AcpiRead/Write. Now return
6943AE_BAD_PARAMETER if the input register pointer is null, and
6944AE_BAD_ADDRESS
6945if
6946the register has an address of zero. Previously, these cases simply
6947returned
6948AE_OK. For optional registers such as PM1B status/enable/control, the
6949caller
6950should check for a valid register address before calling. ACPICA BZ 748.
6951
6952Renamed the external ACPI bit register access functions. Renamed
6953AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
6954functions. The new names are AcpiReadBitRegister and
6955AcpiWriteBitRegister.
6956Also, restructured the code for these functions by simplifying the code
6957path
6958and condensing duplicate code to reduce code size.
6959
6960Added new functions to transparently handle the possibly split PM1 A/B
6961registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
6962functions
6963now handle the split registers for PM1 Status, Enable, and Control.
6964ACPICA
6965BZ
6966746.
6967
6968Added a function to handle the PM1 control registers,
6969AcpiHwWritePm1Control.
6970This function writes both of the PM1 control registers (A/B). These
6971registers
6972are different than the PM1 A/B status and enable registers in that
6973different
6974values can be written to the A/B registers. Most notably, the SLP_TYP
6975bits
6976can be different, as per the values returned from the _Sx predefined
6977methods.
6978
6979Removed an extra register write within AcpiHwClearAcpiStatus. This
6980function
6981was writing an optional PM1B status register twice. The existing call to
6982the
6983low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
6984A/B
6985register. ACPICA BZ 751.
6986
6987Split out the PM1 Status registers from the FADT. Added new globals for
6988these
6989registers (A/B), similar to the way the PM1 Enable registers are handled.
6990Instead of overloading the FADT Event Register blocks. This makes the
6991code
6992clearer and less prone to error.
6993
6994Fixed the warning message for when the platform contains too many ACPI
6995tables
6996for the default size of the global root table data structure. The
6997calculation
6998for the truncation value was incorrect.
6999
7000Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
7001obsolete macro, since it is now a simple reference to ->common.type.
7002There
7003were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
7004
7005Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
7006TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
7007simply SLEEP_TYPE. ACPICA BZ 754.
7008
7009Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
7010function is only needed on 64-bit host operating systems and is thus not
7011included for 32-bit hosts.
7012
7013Debug output: print the input and result for invocations of the _OSI
7014reserved
7015control method via the ACPI_LV_INFO debug level. Also, reduced some of
7016the
7017verbosity of this debug level. Len Brown.
7018
7019Example Code and Data Size: These are the sizes for the OS-independent
7020acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7021debug version of the code includes the debug output trace mechanism and
7022has a
7023much larger code and data size.
7024
7025  Previous Release:
7026    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
7027    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
7028  Current Release:
7029    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
7030    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
7031
70322) iASL Compiler/Disassembler and Tools:
7033
7034Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
7035various legal performance profiles.
7036
7037----------------------------------------
703823 January 2009. Summary of changes for version 20090123:
7039
70401) ACPI CA Core Subsystem:
7041
7042Added the 2009 copyright to all module headers and signons. This affects
7043virtually every file in the ACPICA core subsystem, the iASL compiler, and
7044the tools/utilities.
7045
7046Implemented a change to allow the host to override any ACPI table,
7047including
7048dynamically loaded tables. Previously, only the DSDT could be replaced by
7049the
7050host. With this change, the AcpiOsTableOverride interface is called for
7051each
7052table found in the RSDT/XSDT during ACPICA initialization, and also
7053whenever
7054a table is dynamically loaded via the AML Load operator.
7055
7056Updated FADT flag definitions, especially the Boot Architecture flags.
7057
7058Debugger: For the Find command, automatically pad the input ACPI name
7059with
7060underscores if the name is shorter than 4 characters. This enables a
7061match
7062with the actual namespace entry which is itself padded with underscores.
7063
7064Example Code and Data Size: These are the sizes for the OS-independent
7065acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7066debug version of the code includes the debug output trace mechanism and
7067has a
7068much larger code and data size.
7069
7070  Previous Release:
7071    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
7072    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
7073  Current Release:
7074    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
7075    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
7076
70772) iASL Compiler/Disassembler and Tools:
7078
7079Fix build error under Bison-2.4.
7080
7081Dissasembler: Enhanced FADT support. Added decoding of the Boot
7082Architecture
7083flags. Now decode all flags, regardless of the FADT version. Flag output
7084includes the FADT version which first defined each flag.
7085
7086The iASL -g option now dumps the RSDT to a file (in addition to the FADT
7087and
7088DSDT). Windows only.
7089
7090----------------------------------------
709104 December 2008. Summary of changes for version 20081204:
7092
70931) ACPI CA Core Subsystem:
7094
7095The ACPICA Programmer Reference has been completely updated and revamped
7096for
7097this release. This includes updates to the external interfaces, OSL
7098interfaces, the overview sections, and the debugger reference.
7099
7100Several new ACPICA interfaces have been implemented and documented in the
7101programmer reference:
7102AcpiReset - Writes the reset value to the FADT-defined reset register.
7103AcpiDisableAllGpes - Disable all available GPEs.
7104AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
7105AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
7106AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
7107AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
7108AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
7109
7110Most of the public ACPI hardware-related interfaces have been moved to a
7111new
7112file, components/hardware/hwxface.c
7113
7114Enhanced the FADT parsing and low-level ACPI register access: The ACPI
7115register lengths within the FADT are now used, and the low level ACPI
7116register access no longer hardcodes the ACPI register lengths. Given that
7117there may be some risk in actually trusting the FADT register lengths, a
7118run-
7119time option was added to fall back to the default hardcoded lengths if
7120the
7121FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
7122option is set to true for now, and a warning is issued if a suspicious
7123FADT
7124register length is overridden with the default value.
7125
7126Fixed a reference count issue in NsRepairObject. This problem was
7127introduced
7128in version 20081031 as part of a fix to repair Buffer objects within
7129Packages. Lin Ming.
7130
7131Added semaphore support to the Linux/Unix application OS-services layer
7132(OSL). ACPICA BZ 448. Lin Ming.
7133
7134Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
7135will
7136be implemented in the OSL, or will binary semaphores be used instead.
7137
7138Example Code and Data Size: These are the sizes for the OS-independent
7139acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7140debug version of the code includes the debug output trace mechanism and
7141has a
7142much larger code and data size.
7143
7144  Previous Release:
7145    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
7146    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
7147  Current Release:
7148    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
7149    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
7150
71512) iASL Compiler/Disassembler and Tools:
7152
7153iASL: Completed the '-e' option to include additional ACPI tables in
7154order
7155to
7156aid with disassembly and External statement generation. ACPICA BZ 742.
7157Lin
7158Ming.
7159
7160iASL: Removed the "named object in while loop" error. The compiler cannot
7161determine how many times a loop will execute. ACPICA BZ 730.
7162
7163Disassembler: Implemented support for FADT revision 2 (MS extension).
7164ACPICA
7165BZ 743.
7166
7167Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
7168MCFG).
7169
7170----------------------------------------
717131 October 2008. Summary of changes for version 20081031:
7172
71731) ACPI CA Core Subsystem:
7174
7175Restructured the ACPICA header files into public/private. acpi.h now
7176includes
7177only the "public" acpica headers. All other acpica headers are "private"
7178and
7179should not be included by acpica users. One new file, accommon.h is used
7180to
7181include the commonly used private headers for acpica code generation.
7182Future
7183plans include moving all private headers to a new subdirectory.
7184
7185Implemented an automatic Buffer->String return value conversion for
7186predefined ACPI methods. For these methods (such as _BIF), added
7187automatic
7188conversion for return objects that are required to be a String, but a
7189Buffer
7190was found instead. This can happen when reading string battery data from
7191an
7192operation region, because it used to be difficult to convert the data
7193from
7194buffer to string from within the ASL. Ensures that the host OS is
7195provided
7196with a valid null-terminated string. Linux BZ 11822.
7197
7198Updated the FACS waking vector interfaces. Split
7199AcpiSetFirmwareWakingVector
7200into two: one for the 32-bit vector, another for the 64-bit vector. This
7201is
7202required because the host OS must setup the wake much differently for
7203each
7204vector (real vs. protected mode, etc.) and the interface itself should
7205not
7206be
7207deciding which vector to use. Also, eliminated the
7208GetFirmwareWakingVector
7209interface, as it served no purpose (only the firmware reads the vector,
7210OS
7211only writes the vector.) ACPICA BZ 731.
7212
7213Implemented a mechanism to escape infinite AML While() loops. Added a
7214loop
7215counter to force exit from AML While loops if the count becomes too
7216large.
7217This can occur in poorly written AML when the hardware does not respond
7218within a while loop and the loop does not implement a timeout. The
7219maximum
7220loop count is configurable. A new exception code is returned when a loop
7221is
7222broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
7223
7224Optimized the execution of AML While loops. Previously, a control state
7225object was allocated and freed for each execution of the loop. The
7226optimization is to simply reuse the control state for each iteration.
7227This
7228speeds up the raw loop execution time by about 5%.
7229
7230Enhanced the implicit return mechanism. For Windows compatibility, return
7231an
7232implicit integer of value zero for methods that contain no executable
7233code.
7234Such methods are seen in the field as stubs (presumably), and can cause
7235drivers to fail if they expect a return value. Lin Ming.
7236
7237Allow multiple backslashes as root prefixes in namepaths. In a fully
7238qualified namepath, allow multiple backslash prefixes. This can happen
7239(and
7240is seen in the field) because of the use of a double-backslash in strings
7241(since backslash is the escape character) causing confusion. ACPICA BZ
7242739
7243Lin Ming.
7244
7245Emit a warning if two different FACS or DSDT tables are discovered in the
7246FADT. Checks if there are two valid but different addresses for the FACS
7247and
7248DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
7249
7250Consolidated the method argument count validation code. Merged the code
7251that
7252validates control method argument counts into the predefined validation
7253module. Eliminates possible multiple warnings for incorrect argument
7254counts.
7255
7256Implemented ACPICA example code. Includes code for ACPICA initialization,
7257handler installation, and calling a control method. Available at
7258source/tools/examples.
7259
7260Added a global pointer for FACS table to simplify internal FACS access.
7261Use
7262the global pointer instead of using AcpiGetTableByIndex for each FACS
7263access.
7264This simplifies the code for the Global Lock and the Firmware Waking
7265Vector(s).
7266
7267Example Code and Data Size: These are the sizes for the OS-independent
7268acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7269debug version of the code includes the debug output trace mechanism and
7270has a
7271much larger code and data size.
7272
7273  Previous Release:
7274    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
7275    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
7276  Current Release:
7277    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
7278    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
7279
72802) iASL Compiler/Disassembler and Tools:
7281
7282iASL: Improved disassembly of external method calls. Added the -e option
7283to
7284allow the inclusion of additional ACPI tables to help with the
7285disassembly
7286of
7287method invocations and the generation of external declarations during the
7288disassembly. Certain external method invocations cannot be disassembled
7289properly without the actual declaration of the method. Use the -e option
7290to
7291include the table where the external method(s) are actually declared.
7292Most
7293useful for disassembling SSDTs that make method calls back to the master
7294DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
7295-d
7296-e dsdt.aml ssdt1.aml
7297
7298iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
7299problem where the use of an alias within a namepath would result in a not
7300found error or cause the compiler to fault. Also now allows forward
7301references from the Alias operator itself. ACPICA BZ 738.
7302
7303----------------------------------------
730426 September 2008. Summary of changes for version 20080926:
7305
73061) ACPI CA Core Subsystem:
7307
7308Designed and implemented a mechanism to validate predefined ACPI methods
7309and
7310objects. This code validates the predefined ACPI objects (objects whose
7311names
7312start with underscore) that appear in the namespace, at the time they are
7313evaluated. The argument count and the type of the returned object are
7314validated against the ACPI specification. The purpose of this validation
7315is
7316to detect problems with the BIOS-implemented predefined ACPI objects
7317before
7318the results are returned to the ACPI-related drivers. Future enhancements
7319may
7320include actual repair of incorrect return objects where possible. Two new
7321files are nspredef.c and acpredef.h.
7322
7323Fixed a fault in the AML parser if a memory allocation fails during the
7324Op
7325completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
7326
7327Fixed an issue with implicit return compatibility. This change improves
7328the
7329implicit return mechanism to be more compatible with the MS interpreter.
7330Lin
7331Ming, ACPICA BZ 349.
7332
7333Implemented support for zero-length buffer-to-string conversions. Allow
7334zero
7335length strings during interpreter buffer-to-string conversions. For
7336example,
7337during the ToDecimalString and ToHexString operators, as well as implicit
7338conversions. Fiodor Suietov, ACPICA BZ 585.
7339
7340Fixed two possible memory leaks in the error exit paths of
7341AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
7342are
7343similar in that they use a stack of state objects in order to eliminate
7344recursion. The stack must be fully unwound and deallocated if an error
7345occurs. Lin Ming. ACPICA BZ 383.
7346
7347Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
7348global
7349ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
7350Moore ACPICA BZ 442.
7351
7352Removed the obsolete version number in module headers. Removed the
7353"$Revision" number that appeared in each module header. This version
7354number
7355was useful under SourceSafe and CVS, but has no meaning under git. It is
7356not
7357only incorrect, it could also be misleading.
7358
7359Example Code and Data Size: These are the sizes for the OS-independent
7360acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7361debug version of the code includes the debug output trace mechanism and
7362has a
7363much larger code and data size.
7364
7365  Previous Release:
7366    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7367    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
7368  Current Release:
7369    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
7370    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
7371
7372----------------------------------------
737329 August 2008. Summary of changes for version 20080829:
7374
73751) ACPI CA Core Subsystem:
7376
7377Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
7378Reference. Changes include the elimination of cheating on the Object
7379field
7380for the DdbHandle subtype, addition of a reference class field to
7381differentiate the various reference types (instead of an AML opcode), and
7382the
7383cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
7384
7385Reduce an error to a warning for an incorrect method argument count.
7386Previously aborted with an error if too few arguments were passed to a
7387control method via the external ACPICA interface. Now issue a warning
7388instead
7389and continue. Handles the case where the method inadvertently declares
7390too
7391many arguments, but does not actually use the extra ones. Applies mainly
7392to
7393the predefined methods. Lin Ming. Linux BZ 11032.
7394
7395Disallow the evaluation of named object types with no intrinsic value.
7396Return
7397AE_TYPE for objects that have no value and therefore evaluation is
7398undefined:
7399Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
7400of
7401these types were allowed, but an exception would be generated at some
7402point
7403during the evaluation. Now, the error is generated up front.
7404
7405Fixed a possible memory leak in the AcpiNsGetExternalPathname function
7406(nsnames.c). Fixes a leak in the error exit path.
7407
7408Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
7409debug
7410levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
7411ACPI_EXCEPTION
7412interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
7413ACPI_LV_EVENTS.
7414
7415Removed obsolete and/or unused exception codes from the acexcep.h header.
7416There is the possibility that certain device drivers may be affected if
7417they
7418use any of these exceptions.
7419
7420The ACPICA documentation has been added to the public git source tree,
7421under
7422acpica/documents. Included are the ACPICA programmer reference, the iASL
7423compiler reference, and the changes.txt release logfile.
7424
7425Example Code and Data Size: These are the sizes for the OS-independent
7426acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7427debug version of the code includes the debug output trace mechanism and
7428has a
7429much larger code and data size.
7430
7431  Previous Release:
7432    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7433    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
7434  Current Release:
7435    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7436    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
7437
74382) iASL Compiler/Disassembler and Tools:
7439
7440Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
7441defines _SCP with 3 arguments. Previous versions defined it with only 1
7442argument. iASL now allows both definitions.
7443
7444iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
7445zero-
7446length subtables when disassembling ACPI tables. Also fixed a couple of
7447errors where a full 16-bit table type field was not extracted from the
7448input
7449properly.
7450
7451acpisrc: Improve comment counting mechanism for generating source code
7452statistics. Count first and last lines of multi-line comments as
7453whitespace,
7454not comment lines. Handle Linux legal header in addition to standard
7455acpica
7456header.
7457
7458----------------------------------------
7459
746029 July 2008. Summary of changes for version 20080729:
7461
74621) ACPI CA Core Subsystem:
7463
7464Fix a possible deadlock in the GPE dispatch. Remove call to
7465AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
7466attempt
7467to acquire the GPE lock but can deadlock since the GPE lock is already
7468held
7469at dispatch time. This code was introduced in version 20060831 as a
7470response
7471to Linux BZ 6881 and has since been removed from Linux.
7472
7473Add a function to dereference returned reference objects. Examines the
7474return
7475object from a call to AcpiEvaluateObject. Any Index or RefOf references
7476are
7477automatically dereferenced in an attempt to return something useful
7478(these
7479reference types cannot be converted into an external ACPI_OBJECT.)
7480Provides
7481MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
7482
7483x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
7484subtables for the MADT and one new subtable for the SRAT. Includes
7485disassembler and AcpiSrc support. Data from the Intel 64 Architecture
7486x2APIC
7487Specification, June 2008.
7488
7489Additional error checking for pathname utilities. Add error check after
7490all
7491calls to AcpiNsGetPathnameLength. Add status return from
7492AcpiNsBuildExternalPath and check after all calls. Add parameter
7493validation
7494to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
7495
7496Return status from the global init function AcpiUtGlobalInitialize. This
7497is
7498used by both the kernel subsystem and the utilities such as iASL
7499compiler.
7500The function could possibly fail when the caches are initialized. Yang
7501Yi.
7502
7503Add a function to decode reference object types to strings. Created for
7504improved error messages.
7505
7506Improve object conversion error messages. Better error messages during
7507object
7508conversion from internal to the external ACPI_OBJECT. Used for external
7509calls
7510to AcpiEvaluateObject.
7511
7512Example Code and Data Size: These are the sizes for the OS-independent
7513acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7514debug version of the code includes the debug output trace mechanism and
7515has a
7516much larger code and data size.
7517
7518  Previous Release:
7519    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
7520    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
7521  Current Release:
7522    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7523    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
7524
75252) iASL Compiler/Disassembler and Tools:
7526
7527Debugger: fix a possible hang when evaluating non-methods. Fixes a
7528problem
7529introduced in version 20080701. If the object being evaluated (via
7530execute
7531command) is not a method, the debugger can hang while trying to obtain
7532non-
7533existent parameters.
7534
7535iASL: relax error for using reserved "_T_x" identifiers. These names can
7536appear in a disassembled ASL file if they were emitted by the original
7537compiler. Instead of issuing an error or warning and forcing the user to
7538manually change these names, issue a remark instead.
7539
7540iASL: error if named object created in while loop. Emit an error if any
7541named
7542object is created within a While loop. If allowed, this code will
7543generate
7544a
7545run-time error on the second iteration of the loop when an attempt is
7546made
7547to
7548create the same named object twice. ACPICA bugzilla 730.
7549
7550iASL: Support absolute pathnames for include files. Add support for
7551absolute
7552pathnames within the Include operator. previously, only relative
7553pathnames
7554were supported.
7555
7556iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
7557Descriptor.
7558The ACPI spec requires one interrupt minimum. BZ 423
7559
7560iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
7561Handles the case for the Interrupt Resource Descriptor where
7562the ResourceSource argument is omitted but ResourceSourceIndex
7563is present. Now leave room for the Index. BZ 426
7564
7565iASL: Prevent error message if CondRefOf target does not exist. Fixes
7566cases
7567where an error message is emitted if the target does not exist. BZ 516
7568
7569iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
7570(get ACPI tables on Windows). This was apparently broken in version
757120070919.
7572
7573AcpiXtract: Handle EOF while extracting data. Correctly handle the case
7574where
7575the EOF happens immediately after the last table in the input file. Print
7576completion message. Previously, no message was displayed in this case.
7577
7578----------------------------------------
757901 July 2008. Summary of changes for version 20080701:
7580
75810) Git source tree / acpica.org
7582
7583Fixed a problem where a git-clone from http would not transfer the entire
7584source tree.
7585
75861) ACPI CA Core Subsystem:
7587
7588Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
7589enable bit. Now performs a read-change-write of the enable register
7590instead
7591of simply writing out the cached enable mask. This will prevent
7592inadvertent
7593enabling of GPEs if a rogue GPE is received during initialization (before
7594GPE
7595handlers are installed.)
7596
7597Implemented a copy for dynamically loaded tables. Previously, dynamically
7598loaded tables were simply mapped - but on some machines this memory is
7599corrupted after suspend. Now copy the table to a local buffer. For the
7600OpRegion case, added checksum verify. Use the table length from the table
7601header, not the region length. For the Buffer case, use the table length
7602also. Dennis Noordsij, Bob Moore. BZ 10734
7603
7604Fixed a problem where the same ACPI table could not be dynamically loaded
7605and
7606unloaded more than once. Without this change, a table cannot be loaded
7607again
7608once it has been loaded/unloaded one time. The current mechanism does not
7609unregister a table upon an unload. During a load, if the same table is
7610found,
7611this no longer returns an exception. BZ 722
7612
7613Fixed a problem where the wrong descriptor length was calculated for the
7614EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
7615EndTag
7616are calculated as 12 bytes long, but the actual length in the internal
7617descriptor is 16 because of the round-up to 8 on the 64-bit build.
7618Reported
7619by Linn Crosetto. BZ 728
7620
7621Fixed a possible memory leak in the Unload operator. The DdbHandle
7622returned
7623by Load() did not have its reference count decremented during unload,
7624leading
7625to a memory leak. Lin Ming. BZ 727
7626
7627Fixed a possible memory leak when deleting thermal/processor objects. Any
7628associated notify handlers (and objects) were not being deleted. Fiodor
7629Suietov. BZ 506
7630
7631Fixed the ordering of the ASCII names in the global mutex table to match
7632the
7633actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
7634only.
7635Vegard Nossum. BZ 726
7636
7637Enhanced the AcpiGetObjectInfo interface to return the number of required
7638arguments if the object is a control method. Added this call to the
7639debugger
7640so the proper number of default arguments are passed to a method. This
7641prevents a warning when executing methods from AcpiExec.
7642
7643Added a check for an invalid handle in AcpiGetObjectInfo. Return
7644AE_BAD_PARAMETER if input handle is invalid. BZ 474
7645
7646Fixed an extraneous warning from exconfig.c on the 64-bit build.
7647
7648Example Code and Data Size: These are the sizes for the OS-independent
7649acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7650debug version of the code includes the debug output trace mechanism and
7651has a
7652much larger code and data size.
7653
7654  Previous Release:
7655    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7656    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7657  Current Release:
7658    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
7659    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
7660
76612) iASL Compiler/Disassembler and Tools:
7662
7663iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
7664resource descriptor names.
7665
7666iASL: Detect invalid ASCII characters in input (windows version). Removed
7667the
7668"-CF" flag from the flex compile, enables correct detection of non-ASCII
7669characters in the input. BZ 441
7670
7671iASL: Eliminate warning when result of LoadTable is not used. Eliminate
7672the
7673"result of operation not used" warning when the DDB handle returned from
7674LoadTable is not used. The warning is not needed. BZ 590
7675
7676AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
7677method
7678to
7679pass address of table to the AML. Added option to disable OpRegion
7680simulation
7681to allow creation of an OpRegion with a real address that was passed to
7682_CFG.
7683All of this allows testing of the Load and Unload operators from
7684AcpiExec.
7685
7686Debugger: update tables command for unloaded tables. Handle unloaded
7687tables
7688and use the standard table header output routine.
7689
7690----------------------------------------
769109 June 2008. Summary of changes for version 20080609:
7692
76931) ACPI CA Core Subsystem:
7694
7695Implemented a workaround for reversed _PRT entries. A significant number
7696of
7697BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
7698change dynamically detects and repairs this problem. Provides
7699compatibility
7700with MS ACPI. BZ 6859
7701
7702Simplified the internal ACPI hardware interfaces to eliminate the locking
7703flag parameter from Register Read/Write. Added a new external interface,
7704AcpiGetRegisterUnlocked.
7705
7706Fixed a problem where the invocation of a GPE control method could hang.
7707This
7708was a regression introduced in 20080514. The new method argument count
7709validation mechanism can enter an infinite loop when a GPE method is
7710dispatched. Problem fixed by removing the obsolete code that passed GPE
7711block
7712information to the notify handler via the control method parameter
7713pointer.
7714
7715Fixed a problem where the _SST execution status was incorrectly returned
7716to
7717the caller of AcpiEnterSleepStatePrep. This was a regression introduced
7718in
771920080514. _SST is optional and a NOT_FOUND exception should never be
7720returned. BZ 716
7721
7722Fixed a problem where a deleted object could be accessed from within the
7723AML
7724parser. This was a regression introduced in version 20080123 as a fix for
7725the
7726Unload operator. Lin Ming. BZ 10669
7727
7728Cleaned up the debug operand dump mechanism. Eliminated unnecessary
7729operands
7730and eliminated the use of a negative index in a loop. Operands are now
7731displayed in the correct order, not backwards. This also fixes a
7732regression
7733introduced in 20080514 on 64-bit systems where the elimination of
7734ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
7735715
7736
7737Fixed a possible memory leak in EvPciConfigRegionSetup where the error
7738exit
7739path did not delete a locally allocated structure.
7740
7741Updated definitions for the DMAR and SRAT tables to synchronize with the
7742current specifications. Includes disassembler support.
7743
7744Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
7745loop termination value was used. Loop terminated on iteration early,
7746missing
7747one mutex. Linn Crosetto
7748
7749Example Code and Data Size: These are the sizes for the OS-independent
7750acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7751debug version of the code includes the debug output trace mechanism and
7752has a
7753much larger code and data size.
7754
7755  Previous Release:
7756    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
7757    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
7758  Current Release:
7759    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7760    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7761
77622) iASL Compiler/Disassembler and Tools:
7763
7764Disassembler: Implemented support for EisaId() within _CID objects. Now
7765disassemble integer _CID objects back to EisaId invocations, including
7766multiple integers within _CID packages. Includes single-step support for
7767debugger also.
7768
7769Disassembler: Added support for DMAR and SRAT table definition changes.
7770
7771----------------------------------------
777214 May 2008. Summary of changes for version 20080514:
7773
77741) ACPI CA Core Subsystem:
7775
7776Fixed a problem where GPEs were enabled too early during the ACPICA
7777initialization. This could lead to "handler not installed" errors on some
7778machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
7779This
7780ensures that all operation regions and devices throughout the namespace
7781have
7782been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
7783
7784Implemented a change to the enter sleep code. Moved execution of the _GTS
7785method to just before setting sleep enable bit. The execution was moved
7786from
7787AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
7788immediately before the SLP_EN bit is set, as per the ACPI specification.
7789Luming Yu, BZ 1653.
7790
7791Implemented a fix to disable unknown GPEs (2nd version). Now always
7792disable
7793the GPE, even if ACPICA thinks that that it is already disabled. It is
7794possible that the AML or some other code has enabled the GPE unbeknownst
7795to
7796the ACPICA code.
7797
7798Fixed a problem with the Field operator where zero-length fields would
7799return
7800an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
7801ASL
7802field declarations in Field(), BankField(), and IndexField(). BZ 10606.
7803
7804Implemented a fix for the Load operator, now load the table at the
7805namespace
7806root. This reverts a change introduced in version 20071019. The table is
7807now
7808loaded at the namespace root even though this goes against the ACPI
7809specification. This provides compatibility with other ACPI
7810implementations.
7811The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
7812Ming.
7813
7814Fixed a problem where ACPICA would not Load() tables with unusual
7815signatures.
7816Now ignore ACPI table signature for Load() operator. Only "SSDT" is
7817acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
7818Therefore, signature validation is worthless. Apparently MS ACPI accepts
7819such
7820signatures, ACPICA must be compatible. BZ 10454.
7821
7822Fixed a possible negative array index in AcpiUtValidateException. Added
7823NULL
7824fields to the exception string arrays to eliminate a -1 subtraction on
7825the
7826SubStatus field.
7827
7828Updated the debug tracking macros to reduce overall code and data size.
7829Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
7830instead of pointers to static strings. Jan Beulich and Bob Moore.
7831
7832Implemented argument count checking in control method invocation via
7833AcpiEvaluateObject. Now emit an error if too few arguments, warning if
7834too
7835many. This applies only to extern programmatic control method execution,
7836not
7837method-to-method calls within the AML. Lin Ming.
7838
7839Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
7840no
7841longer needed, especially with the removal of 16-bit support. It was
7842replaced
7843mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
7844bit
7845on
784632/64-bit platforms is required.
7847
7848Added the C const qualifier for appropriate string constants -- mostly
7849MODULE_NAME and printf format strings. Jan Beulich.
7850
7851Example Code and Data Size: These are the sizes for the OS-independent
7852acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7853debug version of the code includes the debug output trace mechanism and
7854has a
7855much larger code and data size.
7856
7857  Previous Release:
7858    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
7859    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
7860  Current Release:
7861    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
7862    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
7863
78642) iASL Compiler/Disassembler and Tools:
7865
7866Implemented ACPI table revision ID validation in the disassembler. Zero
7867is
7868always invalid. For DSDTs, the ID controls the interpreter integer width.
78691
7870means 32-bit and this is unusual. 2 or greater is 64-bit.
7871
7872----------------------------------------
787321 March 2008. Summary of changes for version 20080321:
7874
78751) ACPI CA Core Subsystem:
7876
7877Implemented an additional change to the GPE support in order to suppress
7878spurious or stray GPEs. The AcpiEvDisableGpe function will now
7879permanently
7880disable incoming GPEs that are neither enabled nor disabled -- meaning
7881that
7882the GPE is unknown to the system. This should prevent future interrupt
7883floods
7884from that GPE. BZ 6217 (Zhang Rui)
7885
7886Fixed a problem where NULL package elements were not returned to the
7887AcpiEvaluateObject interface correctly. The element was simply ignored
7888instead of returning a NULL ACPI_OBJECT package element, potentially
7889causing
7890a buffer overflow and/or confusing the caller who expected a fixed number
7891of
7892elements. BZ 10132 (Lin Ming, Bob Moore)
7893
7894Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
7895Dword,
7896Qword), Field, BankField, and IndexField operators when invoked from
7897inside
7898an executing control method. In this case, these operators created
7899namespace
7900nodes that were incorrectly left marked as permanent nodes instead of
7901temporary nodes. This could cause a problem if there is race condition
7902between an exiting control method and a running namespace walk. (Reported
7903by
7904Linn Crosetto)
7905
7906Fixed a problem where the CreateField and CreateXXXField operators would
7907incorrectly allow duplicate names (the name of the field) with no
7908exception
7909generated.
7910
7911Implemented several changes for Notify handling. Added support for new
7912Notify
7913values (ACPI 2.0+) and improved the Notify debug output. Notify on
7914PowerResource objects is no longer allowed, as per the ACPI
7915specification.
7916(Bob Moore, Zhang Rui)
7917
7918All Reference Objects returned via the AcpiEvaluateObject interface are
7919now
7920marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
7921for
7922NULL objects - either NULL package elements or unresolved named
7923references.
7924
7925Fixed a problem where an extraneous debug message was produced for
7926package
7927objects (when debugging enabled). The message "Package List length larger
7928than NumElements count" is now produced in the correct case, and is now
7929an
7930error message rather than a debug message. Added a debug message for the
7931opposite case, where NumElements is larger than the Package List (the
7932package
7933will be padded out with NULL elements as per the ACPI spec.)
7934
7935Implemented several improvements for the output of the ASL "Debug" object
7936to
7937clarify and keep all data for a given object on one output line.
7938
7939Fixed two size calculation issues with the variable-length Start
7940Dependent
7941resource descriptor.
7942
7943Example Code and Data Size: These are the sizes for the OS-independent
7944acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7945debug version of the code includes the debug output trace mechanism and
7946has
7947a much larger code and data size.
7948
7949  Previous Release:
7950    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
7951    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
7952  Current Release:
7953    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
7954    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
7955
79562) iASL Compiler/Disassembler and Tools:
7957
7958Fixed a problem with the use of the Switch operator where execution of
7959the
7960containing method by multiple concurrent threads could cause an
7961AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
7962actual Switch opcode, it must be simulated with local named temporary
7963variables and if/else pairs. The solution chosen was to mark any method
7964that
7965uses Switch as Serialized, thus preventing multiple thread entries. BZ
7966469.
7967
7968----------------------------------------
796913 February 2008. Summary of changes for version 20080213:
7970
79711) ACPI CA Core Subsystem:
7972
7973Implemented another MS compatibility design change for GPE/Notify
7974handling.
7975GPEs are now cleared/enabled asynchronously to allow all pending notifies
7976to
7977complete first. It is expected that the OSL will queue the enable request
7978behind all pending notify requests (may require changes to the local host
7979OSL
7980in AcpiOsExecute). Alexey Starikovskiy.
7981
7982Fixed a problem where buffer and package objects passed as arguments to a
7983control method via the external AcpiEvaluateObject interface could cause
7984an
7985AE_AML_INTERNAL exception depending on the order and type of operators
7986executed by the target control method.
7987
7988Fixed a problem where resource descriptor size optimization could cause a
7989problem when a _CRS resource template is passed to a _SRS method. The
7990_SRS
7991resource template must use the same descriptors (with the same size) as
7992returned from _CRS. This change affects the following resource
7993descriptors:
7994IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
79959487)
7996
7997Fixed a problem where a CopyObject to RegionField, BankField, and
7998IndexField
7999objects did not perform an implicit conversion as it should. These types
8000must
8001retain their initial type permanently as per the ACPI specification.
8002However,
8003a CopyObject to all other object types should not perform an implicit
8004conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
8005
8006Fixed a problem with the AcpiGetDevices interface where the mechanism to
8007match device CIDs did not examine the entire list of available CIDs, but
8008instead aborted on the first non-matching CID. Andrew Patterson.
8009
8010Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
8011was
8012inadvertently changed to return a 16-bit value instead of a 32-bit value,
8013truncating the upper dword of a 64-bit value. This macro is only used to
8014display debug output, so no incorrect calculations were made. Also,
8015reimplemented the macro so that a 64-bit shift is not performed by
8016inefficient compilers.
8017
8018Added missing va_end statements that should correspond with each va_start
8019statement.
8020
8021Example Code and Data Size: These are the sizes for the OS-independent
8022acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8023debug version of the code includes the debug output trace mechanism and
8024has
8025a much larger code and data size.
8026
8027  Previous Release:
8028    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
8029    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
8030  Current Release:
8031    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
8032    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
8033
80342) iASL Compiler/Disassembler and Tools:
8035
8036Implemented full disassembler support for the following new ACPI tables:
8037BERT, EINJ, and ERST. Implemented partial disassembler support for the
8038complicated HEST table. These tables support the Windows Hardware Error
8039Architecture (WHEA).
8040
8041----------------------------------------
804223 January 2008. Summary of changes for version 20080123:
8043
80441) ACPI CA Core Subsystem:
8045
8046Added the 2008 copyright to all module headers and signons. This affects
8047virtually every file in the ACPICA core subsystem, the iASL compiler, and
8048the tools/utilities.
8049
8050Fixed a problem with the SizeOf operator when used with Package and
8051Buffer
8052objects. These objects have deferred execution for some arguments, and
8053the
8054execution is now completed before the SizeOf is executed. This problem
8055caused
8056unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
8057BZ
80589558
8059
8060Implemented an enhancement to the interpreter "slack mode". In the
8061absence
8062of
8063an explicit return or an implicitly returned object from the last
8064executed
8065opcode, a control method will now implicitly return an integer of value 0
8066for
8067Microsoft compatibility. (Lin Ming) BZ 392
8068
8069Fixed a problem with the Load operator where an exception was not
8070returned
8071in
8072the case where the table is already loaded. (Lin Ming) BZ 463
8073
8074Implemented support for the use of DDBHandles as an Indexed Reference, as
8075per
8076the ACPI spec. (Lin Ming) BZ 486
8077
8078Implemented support for UserTerm (Method invocation) for the Unload
8079operator
8080as per the ACPI spec. (Lin Ming) BZ 580
8081
8082Fixed a problem with the LoadTable operator where the OemId and
8083OemTableId
8084input strings could cause unexpected failures if they were shorter than
8085the
8086maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
8087
8088Implemented support for UserTerm (Method invocation) for the Unload
8089operator
8090as per the ACPI spec. (Lin Ming) BZ 580
8091
8092Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
8093HEST,
8094IBFT, UEFI, WDAT. Disassembler support is forthcoming.
8095
8096Example Code and Data Size: These are the sizes for the OS-independent
8097acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8098debug version of the code includes the debug output trace mechanism and
8099has
8100a much larger code and data size.
8101
8102  Previous Release:
8103    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
8104    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
8105  Current Release:
8106    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
8107    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
8108
81092) iASL Compiler/Disassembler and Tools:
8110
8111Implemented support in the disassembler for checksum validation on
8112incoming
8113binary DSDTs and SSDTs. If incorrect, a message is displayed within the
8114table
8115header dump at the start of the disassembly.
8116
8117Implemented additional debugging information in the namespace listing
8118file
8119created during compilation. In addition to the namespace hierarchy, the
8120full
8121pathname to each namespace object is displayed.
8122
8123Fixed a problem with the disassembler where invalid ACPI tables could
8124cause
8125faults or infinite loops.
8126
8127Fixed an unexpected parse error when using the optional "parameter types"
8128list in a control method declaration. (Lin Ming) BZ 397
8129
8130Fixed a problem where two External declarations with the same name did
8131not
8132cause an error (Lin Ming) BZ 509
8133
8134Implemented support for full TermArgs (adding Argx, Localx and method
8135invocation) for the ParameterData parameter to the LoadTable operator.
8136(Lin
8137Ming) BZ 583,587
8138
8139----------------------------------------
814019 December 2007. Summary of changes for version 20071219:
8141
81421) ACPI CA Core Subsystem:
8143
8144Implemented full support for deferred execution for the TermArg string
8145arguments for DataTableRegion. This enables forward references and full
8146operand resolution for the three string arguments. Similar to
8147OperationRegion
8148deferred argument execution.) Lin Ming. BZ 430
8149
8150Implemented full argument resolution support for the BankValue argument
8151to
8152BankField. Previously, only constants were supported, now any TermArg may
8153be
8154used. Lin Ming BZ 387, 393
8155
8156Fixed a problem with AcpiGetDevices where the search of a branch of the
8157device tree could be terminated prematurely. In accordance with the ACPI
8158specification, the search down the current branch is terminated if a
8159device
8160is both not present and not functional (instead of just not present.)
8161Yakui
8162Zhao.
8163
8164Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
8165if
8166the underlying AML code changed the GPE enable registers. Now, any
8167unknown
8168incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
8169disabled
8170instead of simply ignored. Rui Zhang.
8171
8172Fixed a problem with Index Fields where the Index register was
8173incorrectly
8174limited to a maximum of 32 bits. Now any size may be used.
8175
8176Fixed a couple memory leaks associated with "implicit return" objects
8177when
8178the AML Interpreter slack mode is enabled. Lin Ming BZ 349
8179
8180Example Code and Data Size: These are the sizes for the OS-independent
8181acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8182debug version of the code includes the debug output trace mechanism and
8183has
8184a much larger code and data size.
8185
8186  Previous Release:
8187    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
8188    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
8189  Current Release:
8190    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
8191    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
8192
8193----------------------------------------
819414 November 2007. Summary of changes for version 20071114:
8195
81961) ACPI CA Core Subsystem:
8197
8198Implemented event counters for each of the Fixed Events, the ACPI SCI
8199(interrupt) itself, and control methods executed. Named
8200AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
8201These
8202should be useful for debugging and statistics.
8203
8204Implemented a new external interface, AcpiGetStatistics, to retrieve the
8205contents of the various event counters. Returns the current values for
8206AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
8207AcpiMethodCount. The interface can be expanded in the future if new
8208counters
8209are added. Device drivers should use this interface rather than access
8210the
8211counters directly.
8212
8213Fixed a problem with the FromBCD and ToBCD operators. With some
8214compilers,
8215the ShortDivide function worked incorrectly, causing problems with the
8216BCD
8217functions with large input values. A truncation from 64-bit to 32-bit
8218inadvertently occurred. Internal BZ 435. Lin Ming
8219
8220Fixed a problem with Index references passed as method arguments.
8221References
8222passed as arguments to control methods were dereferenced immediately
8223(before
8224control was passed to the called method). The references are now
8225correctly
8226passed directly to the called method. BZ 5389. Lin Ming
8227
8228Fixed a problem with CopyObject used in conjunction with the Index
8229operator.
8230The reference was incorrectly dereferenced before the copy. The reference
8231is
8232now correctly copied. BZ 5391. Lin Ming
8233
8234Fixed a problem with Control Method references within Package objects.
8235These
8236references are now correctly generated. This completes the package
8237construction overhaul that began in version 20071019.
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.8K Code, 17.2K Data,  96.0K Total
8247    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
8248  Current Release:
8249    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
8250    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
8251
8252
82532) iASL Compiler/Disassembler and Tools:
8254
8255The AcpiExec utility now installs handlers for all of the predefined
8256Operation Region types. New types supported are: PCI_Config, CMOS, and
8257PCIBARTarget.
8258
8259Fixed a problem with the 64-bit version of AcpiExec where the extended
8260(64-
8261bit) address fields for the DSDT and FACS within the FADT were not being
8262used, causing truncation of the upper 32-bits of these addresses. Lin
8263Ming
8264and Bob Moore
8265
8266----------------------------------------
826719 October 2007. Summary of changes for version 20071019:
8268
82691) ACPI CA Core Subsystem:
8270
8271Fixed a problem with the Alias operator when the target of the alias is a
8272named ASL operator that opens a new scope -- Scope, Device,
8273PowerResource,
8274Processor, and ThermalZone. In these cases, any children of the original
8275operator could not be accessed via the alias, potentially causing
8276unexpected
8277AE_NOT_FOUND exceptions. (BZ 9067)
8278
8279Fixed a problem with the Package operator where all named references were
8280created as object references and left otherwise unresolved. According to
8281the
8282ACPI specification, a Package can only contain Data Objects or references
8283to
8284control methods. The implication is that named references to Data Objects
8285(Integer, Buffer, String, Package, BufferField, Field) should be resolved
8286immediately upon package creation. This is the approach taken with this
8287change. References to all other named objects (Methods, Devices, Scopes,
8288etc.) are all now properly created as reference objects. (BZ 5328)
8289
8290Reverted a change to Notify handling that was introduced in version
829120070508. This version changed the Notify handling from asynchronous to
8292fully synchronous (Device driver Notify handling with respect to the
8293Notify
8294ASL operator). It was found that this change caused more problems than it
8295solved and was removed by most users.
8296
8297Fixed a problem with the Increment and Decrement operators where the type
8298of
8299the target object could be unexpectedly and incorrectly changed. (BZ 353)
8300Lin Ming.
8301
8302Fixed a problem with the Load and LoadTable operators where the table
8303location within the namespace was ignored. Instead, the table was always
8304loaded into the root or current scope. Lin Ming.
8305
8306Fixed a problem with the Load operator when loading a table from a buffer
8307object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
8308
8309Fixed a problem with the Debug object where a store of a DdbHandle
8310reference
8311object to the Debug object could cause a fault.
8312
8313Added a table checksum verification for the Load operator, in the case
8314where
8315the load is from a buffer. (BZ 578).
8316
8317Implemented additional parameter validation for the LoadTable operator.
8318The
8319length of the input strings SignatureString, OemIdString, and OemTableId
8320are
8321now checked for maximum lengths. (BZ 582) Lin Ming.
8322
8323Example Code and Data Size: These are the sizes for the OS-independent
8324acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8325debug version of the code includes the debug output trace mechanism and
8326has
8327a much larger code and data size.
8328
8329  Previous Release:
8330    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
8331    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
8332  Current Release:
8333    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
8334    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
8335
8336
83372) iASL Compiler/Disassembler:
8338
8339Fixed a problem where if a single file was specified and the file did not
8340exist, no error message was emitted. (Introduced with wildcard support in
8341version 20070917.)
8342
8343----------------------------------------
834419 September 2007. Summary of changes for version 20070919:
8345
83461) ACPI CA Core Subsystem:
8347
8348Designed and implemented new external interfaces to install and remove
8349handlers for ACPI table-related events. Current events that are defined
8350are
8351LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
8352they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
8353AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
8354
8355Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
8356(acpi_serialized option on Linux) could cause some systems to hang during
8357initialization. (Bob Moore) BZ 8171
8358
8359Fixed a problem where objects of certain types (Device, ThermalZone,
8360Processor, PowerResource) can be not found if they are declared and
8361referenced from within the same control method (Lin Ming) BZ 341
8362
8363Example Code and Data Size: These are the sizes for the OS-independent
8364acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8365debug version of the code includes the debug output trace mechanism and
8366has
8367a much larger code and data size.
8368
8369  Previous Release:
8370    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
8371    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
8372  Current Release:
8373    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
8374    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
8375
8376
83772) iASL Compiler/Disassembler:
8378
8379Implemented support to allow multiple files to be compiled/disassembled
8380in
8381a
8382single invocation. This includes command line wildcard support for both
8383the
8384Windows and Unix versions of the compiler. This feature simplifies the
8385disassembly and compilation of multiple ACPI tables in a single
8386directory.
8387
8388----------------------------------------
838908 May 2007. Summary of changes for version 20070508:
8390
83911) ACPI CA Core Subsystem:
8392
8393Implemented a Microsoft compatibility design change for the handling of
8394the
8395Notify AML operator. Previously, notify handlers were dispatched and
8396executed completely asynchronously in a deferred thread. The new design
8397still executes the notify handlers in a different thread, but the
8398original
8399thread that executed the Notify() now waits at a synchronization point
8400for
8401the notify handler to complete. Some machines depend on a synchronous
8402Notify
8403operator in order to operate correctly.
8404
8405Implemented support to allow Package objects to be passed as method
8406arguments to the external AcpiEvaluateObject interface. Previously, this
8407would return the AE_NOT_IMPLEMENTED exception. This feature had not been
8408implemented since there were no reserved control methods that required it
8409until recently.
8410
8411Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
8412that
8413contained invalid non-zero values in reserved fields could cause later
8414failures because these fields have meaning in later revisions of the
8415FADT.
8416For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
8417fields
8418are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
8419
8420Fixed a problem where the Global Lock handle was not properly updated if
8421a
8422thread that acquired the Global Lock via executing AML code then
8423attempted
8424to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
8425Joe
8426Liu.
8427
8428Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
8429could be corrupted if the interrupt being removed was at the head of the
8430list. Reported by Linn Crosetto.
8431
8432Example Code and Data Size: These are the sizes for the OS-independent
8433acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8434debug version of the code includes the debug output trace mechanism and
8435has
8436a much larger code and data size.
8437
8438  Previous Release:
8439    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8440    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
8441  Current Release:
8442    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
8443    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
8444
8445----------------------------------------
844620 March 2007. Summary of changes for version 20070320:
8447
84481) ACPI CA Core Subsystem:
8449
8450Implemented a change to the order of interpretation and evaluation of AML
8451operand objects within the AML interpreter. The interpreter now evaluates
8452operands in the order that they appear in the AML stream (and the
8453corresponding ASL code), instead of in the reverse order (after the
8454entire
8455operand list has been parsed). The previous behavior caused several
8456subtle
8457incompatibilities with the Microsoft AML interpreter as well as being
8458somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
8459
8460Implemented a change to the ACPI Global Lock support. All interfaces to
8461the
8462global lock now allow the same thread to acquire the lock multiple times.
8463This affects the AcpiAcquireGlobalLock external interface to the global
8464lock
8465as well as the internal use of the global lock to support AML fields -- a
8466control method that is holding the global lock can now simultaneously
8467access
8468AML fields that require global lock protection. Previously, in both
8469cases,
8470this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
8471to
8472AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
8473Controller. There is no change to the behavior of the AML Acquire
8474operator,
8475as this can already be used to acquire a mutex multiple times by the same
8476thread. BZ 8066. With assistance from Alexey Starikovskiy.
8477
8478Fixed a problem where invalid objects could be referenced in the AML
8479Interpreter after error conditions. During operand evaluation, ensure
8480that
8481the internal "Return Object" field is cleared on error and only valid
8482pointers are stored there. Caused occasional access to deleted objects
8483that
8484resulted in "large reference count" warning messages. Valery Podrezov.
8485
8486Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
8487on
8488deeply nested control method invocations. BZ 7873, local BZ 487. Valery
8489Podrezov.
8490
8491Fixed an internal problem with the handling of result objects on the
8492interpreter result stack. BZ 7872. Valery Podrezov.
8493
8494Removed obsolete code that handled the case where AML_NAME_OP is the
8495target
8496of a reference (Reference.Opcode). This code was no longer necessary. BZ
84977874. Valery Podrezov.
8498
8499Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
8500was
8501a
8502remnant from the previously discontinued 16-bit support.
8503
8504Example Code and Data Size: These are the sizes for the OS-independent
8505acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8506debug version of the code includes the debug output trace mechanism and
8507has
8508a much larger code and data size.
8509
8510  Previous Release:
8511    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8512    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8513  Current Release:
8514    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8515    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
8516
8517----------------------------------------
851826 January 2007. Summary of changes for version 20070126:
8519
85201) ACPI CA Core Subsystem:
8521
8522Added the 2007 copyright to all module headers and signons. This affects
8523virtually every file in the ACPICA core subsystem, the iASL compiler, and
8524the utilities.
8525
8526Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
8527during a table load. A bad pointer was passed in the case where the DSDT
8528is
8529overridden, causing a fault in this case.
8530
8531Example Code and Data Size: These are the sizes for the OS-independent
8532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8533debug version of the code includes the debug output trace mechanism and
8534has
8535a much larger code and data size.
8536
8537  Previous Release:
8538    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8539    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8540  Current Release:
8541    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8542    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8543
8544----------------------------------------
854515 December 2006. Summary of changes for version 20061215:
8546
85471) ACPI CA Core Subsystem:
8548
8549Support for 16-bit ACPICA has been completely removed since it is no
8550longer
8551necessary and it clutters the code. All 16-bit macros, types, and
8552conditional compiles have been removed, cleaning up and simplifying the
8553code
8554across the entire subsystem. DOS support is no longer needed since the
8555bootable Linux firmware kit is now available.
8556
8557The handler for the Global Lock is now removed during AcpiTerminate to
8558enable a clean subsystem restart, via the implementation of the
8559AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
8560HP)
8561
8562Implemented enhancements to the multithreading support within the
8563debugger
8564to enable improved multithreading debugging and evaluation of the
8565subsystem.
8566(Valery Podrezov)
8567
8568Debugger: Enhanced the Statistics/Memory command to emit the total
8569(maximum)
8570memory used during the execution, as well as the maximum memory consumed
8571by
8572each of the various object types. (Valery Podrezov)
8573
8574Example Code and Data Size: These are the sizes for the OS-independent
8575acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8576debug version of the code includes the debug output trace mechanism and
8577has
8578a much larger code and data size.
8579
8580  Previous Release:
8581    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
8582    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
8583  Current Release:
8584    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8585    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8586
8587
85882) iASL Compiler/Disassembler and Tools:
8589
8590AcpiExec: Implemented a new option (-m) to display full memory use
8591statistics upon subsystem/program termination. (Valery Podrezov)
8592
8593----------------------------------------
859409 November 2006. Summary of changes for version 20061109:
8595
85961) ACPI CA Core Subsystem:
8597
8598Optimized the Load ASL operator in the case where the source operand is
8599an
8600operation region. Simply map the operation region memory, instead of
8601performing a bytewise read. (Region must be of type SystemMemory, see
8602below.)
8603
8604Fixed the Load ASL operator for the case where the source operand is a
8605region field. A buffer object is also allowed as the source operand. BZ
8606480
8607
8608Fixed a problem where the Load ASL operator allowed the source operand to
8609be
8610an operation region of any type. It is now restricted to regions of type
8611SystemMemory, as per the ACPI specification. BZ 481
8612
8613Additional cleanup and optimizations for the new Table Manager code.
8614
8615AcpiEnable will now fail if all of the required ACPI tables are not
8616loaded
8617(FADT, FACS, DSDT). BZ 477
8618
8619Added #pragma pack(8/4) to acobject.h to ensure that the structures in
8620this
8621header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
8622manually optimized to be aligned and will not work if it is byte-packed.
8623
8624Example Code and Data Size: These are the sizes for the OS-independent
8625acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8626debug version of the code includes the debug output trace mechanism and
8627has
8628a much larger code and data size.
8629
8630  Previous Release:
8631    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
8632    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
8633  Current Release:
8634    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
8635    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
8636
8637
86382) iASL Compiler/Disassembler and Tools:
8639
8640Fixed a problem where the presence of the _OSI predefined control method
8641within complex expressions could cause an internal compiler error.
8642
8643AcpiExec: Implemented full region support for multiple address spaces.
8644SpaceId is now part of the REGION object. BZ 429
8645
8646----------------------------------------
864711 October 2006. Summary of changes for version 20061011:
8648
86491) ACPI CA Core Subsystem:
8650
8651Completed an AML interpreter performance enhancement for control method
8652execution. Previously a 2-pass parse/execution, control methods are now
8653completely parsed and executed in a single pass. This improves overall
8654interpreter performance by ~25%, reduces code size, and reduces CPU stack
8655use. (Valery Podrezov + interpreter changes in version 20051202 that
8656eliminated namespace loading during the pass one parse.)
8657
8658Implemented _CID support for PCI Root Bridge detection. If the _HID does
8659not
8660match the predefined PCI Root Bridge IDs, the _CID list (if present) is
8661now
8662obtained and also checked for an ID match.
8663
8664Implemented additional support for the PCI _ADR execution: upsearch until
8665a
8666device scope is found before executing _ADR. This allows PCI_Config
8667operation regions to be declared locally within control methods
8668underneath
8669PCI device objects.
8670
8671Fixed a problem with a possible race condition between threads executing
8672AcpiWalkNamespace and the AML interpreter. This condition was removed by
8673modifying AcpiWalkNamespace to (by default) ignore all temporary
8674namespace
8675entries created during any concurrent control method execution. An
8676additional namespace race condition is known to exist between
8677AcpiWalkNamespace and the Load/Unload ASL operators and is still under
8678investigation.
8679
8680Restructured the AML ParseLoop function, breaking it into several
8681subfunctions in order to reduce CPU stack use and improve
8682maintainability.
8683(Mikhail Kouzmich)
8684
8685AcpiGetHandle: Fix for parameter validation to detect invalid
8686combinations
8687of prefix handle and pathname. BZ 478
8688
8689Example Code and Data Size: These are the sizes for the OS-independent
8690acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8691debug version of the code includes the debug output trace mechanism and
8692has
8693a much larger code and data size.
8694
8695  Previous Release:
8696    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8697    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8698  Current Release:
8699    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
8700    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
8701
87022) iASL Compiler/Disassembler and Tools:
8703
8704Ported the -g option (get local ACPI tables) to the new ACPICA Table
8705Manager
8706to restore original behavior.
8707
8708----------------------------------------
870927 September 2006. Summary of changes for version 20060927:
8710
87111) ACPI CA Core Subsystem:
8712
8713Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
8714These functions now use a spinlock for mutual exclusion and the interrupt
8715level indication flag is not needed.
8716
8717Fixed a problem with the Global Lock where the lock could appear to be
8718obtained before it is actually obtained. The global lock semaphore was
8719inadvertently created with one unit instead of zero units. (BZ 464)
8720Fiodor
8721Suietov.
8722
8723Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
8724during
8725a read from a buffer or region field. (BZ 458) Fiodor Suietov.
8726
8727Example Code and Data Size: These are the sizes for the OS-independent
8728acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8729debug version of the code includes the debug output trace mechanism and
8730has
8731a much larger code and data size.
8732
8733  Previous Release:
8734    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8735    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
8736  Current Release:
8737    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8738    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8739
8740
87412) iASL Compiler/Disassembler and Tools:
8742
8743Fixed a compilation problem with the pre-defined Resource Descriptor
8744field
8745names where an "object does not exist" error could be incorrectly
8746generated
8747if the parent ResourceTemplate pathname places the template within a
8748different namespace scope than the current scope. (BZ 7212)
8749
8750Fixed a problem where the compiler could hang after syntax errors
8751detected
8752in an ElseIf construct. (BZ 453)
8753
8754Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
8755operator. An incorrect output filename was produced when this parameter
8756was
8757a null string (""). Now, the original input filename is used as the AML
8758output filename, with an ".aml" extension.
8759
8760Implemented a generic batch command mode for the AcpiExec utility
8761(execute
8762any AML debugger command) (Valery Podrezov).
8763
8764----------------------------------------
876512 September 2006. Summary of changes for version 20060912:
8766
87671) ACPI CA Core Subsystem:
8768
8769Enhanced the implementation of the "serialized mode" of the interpreter
8770(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
8771specified, instead of creating a serialization semaphore per control
8772method,
8773the interpreter lock is simply no longer released before a blocking
8774operation during control method execution. This effectively makes the AML
8775Interpreter single-threaded. The overhead of a semaphore per-method is
8776eliminated.
8777
8778Fixed a regression where an error was no longer emitted if a control
8779method
8780attempts to create 2 objects of the same name. This once again returns
8781AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
8782that
8783will dynamically serialize the control method to possible prevent future
8784errors. (BZ 440)
8785
8786Integrated a fix for a problem with PCI Express HID detection in the PCI
8787Config Space setup procedure. (BZ 7145)
8788
8789Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
8790AcpiHwInitialize function - the FADT registers are now validated when the
8791table is loaded.
8792
8793Added two new warnings during FADT verification - 1) if the FADT is
8794larger
8795than the largest known FADT version, and 2) if there is a mismatch
8796between
8797a
879832-bit block address and the 64-bit X counterpart (when both are non-
8799zero.)
8800
8801Example Code and Data Size: These are the sizes for the OS-independent
8802acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8803debug version of the code includes the debug output trace mechanism and
8804has
8805a much larger code and data size.
8806
8807  Previous Release:
8808    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
8809    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
8810  Current Release:
8811    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8812    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
8813
8814
88152) iASL Compiler/Disassembler and Tools:
8816
8817Fixed a problem with the implementation of the Switch() operator where
8818the
8819temporary variable was declared too close to the actual Switch, instead
8820of
8821at method level. This could cause a problem if the Switch() operator is
8822within a while loop, causing an error on the second iteration. (BZ 460)
8823
8824Disassembler - fix for error emitted for unknown type for target of scope
8825operator. Now, ignore it and continue.
8826
8827Disassembly of an FADT now verifies the input FADT and reports any errors
8828found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
8829
8830Disassembly of raw data buffers with byte initialization data now
8831prefixes
8832each output line with the current buffer offset.
8833
8834Disassembly of ASF! table now includes all variable-length data fields at
8835the end of some of the subtables.
8836
8837The disassembler now emits a comment if a buffer appears to be a
8838ResourceTemplate, but cannot be disassembled as such because the EndTag
8839does
8840not appear at the very end of the buffer.
8841
8842AcpiExec - Added the "-t" command line option to enable the serialized
8843mode
8844of the AML interpreter.
8845
8846----------------------------------------
884731 August 2006. Summary of changes for version 20060831:
8848
88491) ACPI CA Core Subsystem:
8850
8851Miscellaneous fixes for the Table Manager:
8852- Correctly initialize internal common FADT for all 64-bit "X" fields
8853- Fixed a couple table mapping issues during table load
8854- Fixed a couple alignment issues for IA64
8855- Initialize input array to zero in AcpiInitializeTables
8856- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
8857AcpiGetTableByIndex
8858
8859Change for GPE support: when a "wake" GPE is received, all wake GPEs are
8860now
8861immediately disabled to prevent the waking GPE from firing again and to
8862prevent other wake GPEs from interrupting the wake process.
8863
8864Added the AcpiGpeCount global that tracks the number of processed GPEs,
8865to
8866be used for debugging systems with a large number of ACPI interrupts.
8867
8868Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
8869both the ACPICA headers and the disassembler.
8870
8871Example Code and Data Size: These are the sizes for the OS-independent
8872acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8873debug version of the code includes the debug output trace mechanism and
8874has
8875a much larger code and data size.
8876
8877  Previous Release:
8878    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
8879    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
8880  Current Release:
8881    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
8882    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
8883
8884
88852) iASL Compiler/Disassembler and Tools:
8886
8887Disassembler support for the DMAR ACPI table.
8888
8889----------------------------------------
889023 August 2006. Summary of changes for version 20060823:
8891
88921) ACPI CA Core Subsystem:
8893
8894The Table Manager component has been completely redesigned and
8895reimplemented. The new design is much simpler, and reduces the overall
8896code
8897and data size of the kernel-resident ACPICA by approximately 5%. Also, it
8898is
8899now possible to obtain the ACPI tables very early during kernel
8900initialization, even before dynamic memory management is initialized.
8901(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
8902
8903Obsolete ACPICA interfaces:
8904
8905- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
8906init
8907time).
8908- AcpiLoadTable: Not needed.
8909- AcpiUnloadTable: Not needed.
8910
8911New ACPICA interfaces:
8912
8913- AcpiInitializeTables: Must be called before the table manager can be
8914used.
8915- AcpiReallocateRootTable: Used to transfer the root table to dynamically
8916allocated memory after it becomes available.
8917- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
8918tables
8919in the RSDT/XSDT.
8920
8921Other ACPICA changes:
8922
8923- AcpiGetTableHeader returns the actual mapped table header, not a copy.
8924Use
8925AcpiOsUnmapMemory to free this mapping.
8926- AcpiGetTable returns the actual mapped table. The mapping is managed
8927internally and must not be deleted by the caller. Use of this interface
8928causes no additional dynamic memory allocation.
8929- AcpiFindRootPointer: Support for physical addressing has been
8930eliminated,
8931it appeared to be unused.
8932- The interface to AcpiOsMapMemory has changed to be consistent with the
8933other allocation interfaces.
8934- The interface to AcpiOsGetRootPointer has changed to eliminate
8935unnecessary
8936parameters.
8937- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
893864-
8939bit platforms. Was previously 64 bits on all platforms.
8940- The interface to the ACPI Global Lock acquire/release macros have
8941changed
8942slightly since ACPICA no longer keeps a local copy of the FACS with a
8943constructed pointer to the actual global lock.
8944
8945Porting to the new table manager:
8946
8947- AcpiInitializeTables: Must be called once, and can be called anytime
8948during the OS initialization process. It allows the host to specify an
8949area
8950of memory to be used to store the internal version of the RSDT/XSDT (root
8951table). This allows the host to access ACPI tables before memory
8952management
8953is initialized and running.
8954- AcpiReallocateRootTable: Can be called after memory management is
8955running
8956to copy the root table to a dynamically allocated array, freeing up the
8957scratch memory specified in the call to AcpiInitializeTables.
8958- AcpiSubsystemInitialize: This existing interface is independent of the
8959Table Manager, and does not have to be called before the Table Manager
8960can
8961be used, it only must be called before the rest of ACPICA can be used.
8962- ACPI Tables: Some changes have been made to the names and structure of
8963the
8964actbl.h and actbl1.h header files and may require changes to existing
8965code.
8966For example, bitfields have been completely removed because of their lack
8967of
8968portability across C compilers.
8969- Update interfaces to the Global Lock acquire/release macros if local
8970versions are used. (see acwin.h)
8971
8972Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
8973
8974New files: tbfind.c
8975
8976Example Code and Data Size: These are the sizes for the OS-independent
8977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8978debug version of the code includes the debug output trace mechanism and
8979has
8980a much larger code and data size.
8981
8982  Previous Release:
8983    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8984    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8985  Current Release:
8986    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
8987    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
8988
8989
89902) iASL Compiler/Disassembler and Tools:
8991
8992No changes for this release.
8993
8994----------------------------------------
899521 July 2006. Summary of changes for version 20060721:
8996
89971) ACPI CA Core Subsystem:
8998
8999The full source code for the ASL test suite used to validate the iASL
9000compiler and the ACPICA core subsystem is being released with the ACPICA
9001source for the first time. The source is contained in a separate package
9002and
9003consists of over 1100 files that exercise all ASL/AML operators. The
9004package
9005should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
9006Fiodor
9007Suietov)
9008
9009Completed a new design and implementation for support of the ACPI Global
9010Lock. On the OS side, the global lock is now treated as a standard AML
9011mutex. Previously, multiple OS threads could "acquire" the global lock
9012simultaneously. However, this could cause the BIOS to be starved out of
9013the
9014lock - especially in cases such as the Embedded Controller driver where
9015there is a tight coupling between the OS and the BIOS.
9016
9017Implemented an optimization for the ACPI Global Lock interrupt mechanism.
9018The Global Lock interrupt handler no longer queues the execution of a
9019separate thread to signal the global lock semaphore. Instead, the
9020semaphore
9021is signaled directly from the interrupt handler.
9022
9023Implemented support within the AML interpreter for package objects that
9024contain a larger AML length (package list length) than the package
9025element
9026count. In this case, the length of the package is truncated to match the
9027package element count. Some BIOS code apparently modifies the package
9028length
9029on the fly, and this change supports this behavior. Provides
9030compatibility
9031with the MS AML interpreter. (With assistance from Fiodor Suietov)
9032
9033Implemented a temporary fix for the BankValue parameter of a Bank Field
9034to
9035support all constant values, now including the Zero and One opcodes.
9036Evaluation of this parameter must eventually be converted to a full
9037TermArg
9038evaluation. A not-implemented error is now returned (temporarily) for
9039non-
9040constant values for this parameter.
9041
9042Fixed problem reports (Fiodor Suietov) integrated:
9043- Fix for premature object deletion after CopyObject on Operation Region
9044(BZ
9045350)
9046
9047Example Code and Data Size: These are the sizes for the OS-independent
9048acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9049debug version of the code includes the debug output trace mechanism and
9050has
9051a much larger code and data size.
9052
9053  Previous Release:
9054    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
9055    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
9056  Current Release:
9057    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9058    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9059
9060
90612) iASL Compiler/Disassembler and Tools:
9062
9063No changes for this release.
9064
9065----------------------------------------
906607 July 2006. Summary of changes for version 20060707:
9067
90681) ACPI CA Core Subsystem:
9069
9070Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
9071that do not allow the initialization of address pointers within packed
9072structures - even though the hardware itself may support misaligned
9073transfers. Some of the debug data structures are packed by default to
9074minimize size.
9075
9076Added an error message for the case where AcpiOsGetThreadId() returns
9077zero.
9078A non-zero value is required by the core ACPICA code to ensure the proper
9079operation of AML mutexes and recursive control methods.
9080
9081The DSDT is now the only ACPI table that determines whether the AML
9082interpreter is in 32-bit or 64-bit mode. Not really a functional change,
9083but
9084the hooks for per-table 32/64 switching have been removed from the code.
9085A
9086clarification to the ACPI specification is forthcoming in ACPI 3.0B.
9087
9088Fixed a possible leak of an OwnerID in the error path of
9089AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
9090deletion to a single place in AcpiTbUninstallTable to correct possible
9091leaks
9092when using the AcpiTbDeleteTablesByType interface (with assistance from
9093Lance Ortiz.)
9094
9095Fixed a problem with Serialized control methods where the semaphore
9096associated with the method could be over-signaled after multiple method
9097invocations.
9098
9099Fixed two issues with the locking of the internal namespace data
9100structure.
9101Both the Unload() operator and AcpiUnloadTable interface now lock the
9102namespace during the namespace deletion associated with the table unload
9103(with assistance from Linn Crosetto.)
9104
9105Fixed problem reports (Valery Podrezov) integrated:
9106- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
9107
9108Fixed problem reports (Fiodor Suietov) integrated:
9109- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
9110- On Address Space handler deletion, needless deactivation call (BZ 374)
9111- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
9112375)
9113- Possible memory leak, Notify sub-objects of Processor, Power,
9114ThermalZone
9115(BZ 376)
9116- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
9117- Minimum Length of RSDT should be validated (BZ 379)
9118- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
9119Handler (BZ (380)
9120- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
9121loaded
9122(BZ 381)
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.5K Code, 17.8K Data,  98.3K Total
9132    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9133  Current Release:
9134    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9135    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9136
9137
91382) iASL Compiler/Disassembler and Tools:
9139
9140Fixed problem reports:
9141Compiler segfault when ASL contains a long (>1024) String declaration (BZ
9142436)
9143
9144----------------------------------------
914523 June 2006. Summary of changes for version 20060623:
9146
91471) ACPI CA Core Subsystem:
9148
9149Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
9150allows the type to be customized to the host OS for improved efficiency
9151(since a spinlock is usually a very small object.)
9152
9153Implemented support for "ignored" bits in the ACPI registers. According
9154to
9155the ACPI specification, these bits should be preserved when writing the
9156registers via a read/modify/write cycle. There are 3 bits preserved in
9157this
9158manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
9159
9160Implemented the initial deployment of new OSL mutex interfaces. Since
9161some
9162host operating systems have separate mutex and semaphore objects, this
9163feature was requested. The base code now uses mutexes (and the new mutex
9164interfaces) wherever a binary semaphore was used previously. However, for
9165the current release, the mutex interfaces are defined as macros to map
9166them
9167to the existing semaphore interfaces. Therefore, no OSL changes are
9168required
9169at this time. (See acpiosxf.h)
9170
9171Fixed several problems with the support for the control method SyncLevel
9172parameter. The SyncLevel now works according to the ACPI specification
9173and
9174in concert with the Mutex SyncLevel parameter, since the current
9175SyncLevel
9176is a property of the executing thread. Mutual exclusion for control
9177methods
9178is now implemented with a mutex instead of a semaphore.
9179
9180Fixed three instances of the use of the C shift operator in the bitfield
9181support code (exfldio.c) to avoid the use of a shift value larger than
9182the
9183target data width. The behavior of C compilers is undefined in this case
9184and
9185can cause unpredictable results, and therefore the case must be detected
9186and
9187avoided. (Fiodor Suietov)
9188
9189Added an info message whenever an SSDT or OEM table is loaded dynamically
9190via the Load() or LoadTable() ASL operators. This should improve
9191debugging
9192capability since it will show exactly what tables have been loaded
9193(beyond
9194the tables present in the RSDT/XSDT.)
9195
9196Example Code and Data Size: These are the sizes for the OS-independent
9197acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9198debug version of the code includes the debug output trace mechanism and
9199has
9200a much larger code and data size.
9201
9202  Previous Release:
9203    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
9204    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
9205  Current Release:
9206    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
9207    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9208
9209
92102) iASL Compiler/Disassembler and Tools:
9211
9212No changes for this release.
9213
9214----------------------------------------
921508 June 2006. Summary of changes for version 20060608:
9216
92171) ACPI CA Core Subsystem:
9218
9219Converted the locking mutex used for the ACPI hardware to a spinlock.
9220This
9221change should eliminate all problems caused by attempting to acquire a
9222semaphore at interrupt level, and it means that all ACPICA external
9223interfaces that directly access the ACPI hardware can be safely called
9224from
9225interrupt level. OSL code that implements the semaphore interfaces should
9226be
9227able to eliminate any workarounds for being called at interrupt level.
9228
9229Fixed a regression introduced in 20060526 where the ACPI device
9230initialization could be prematurely aborted with an AE_NOT_FOUND if a
9231device
9232did not have an optional _INI method.
9233
9234Fixed an IndexField issue where a write to the Data Register should be
9235limited in size to the AccessSize (width) of the IndexField itself. (BZ
9236433,
9237Fiodor Suietov)
9238
9239Fixed problem reports (Valery Podrezov) integrated:
9240- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
9241
9242Fixed problem reports (Fiodor Suietov) integrated:
9243- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
9244
9245Removed four global mutexes that were obsolete and were no longer being
9246used.
9247
9248Example Code and Data Size: These are the sizes for the OS-independent
9249acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9250debug version of the code includes the debug output trace mechanism and
9251has
9252a much larger code and data size.
9253
9254  Previous Release:
9255    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
9256    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
9257  Current Release:
9258    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
9259    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
9260
9261
92622) iASL Compiler/Disassembler and Tools:
9263
9264Fixed a fault when using -g option (get tables from registry) on Windows
9265machines.
9266
9267Fixed problem reports integrated:
9268- Generate error if CreateField NumBits parameter is zero. (BZ 405)
9269- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
9270Suietov)
9271- Global table revision override (-r) is ignored (BZ 413)
9272
9273----------------------------------------
927426 May 2006. Summary of changes for version 20060526:
9275
92761) ACPI CA Core Subsystem:
9277
9278Restructured, flattened, and simplified the internal interfaces for
9279namespace object evaluation - resulting in smaller code, less CPU stack
9280use,
9281and fewer interfaces. (With assistance from Mikhail Kouzmich)
9282
9283Fixed a problem with the CopyObject operator where the first parameter
9284was
9285not typed correctly for the parser, interpreter, compiler, and
9286disassembler.
9287Caused various errors and unexpected behavior.
9288
9289Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
9290produced incorrect results with some C compilers. Since the behavior of C
9291compilers when the shift value is larger than the datatype width is
9292apparently not well defined, the interpreter now detects this condition
9293and
9294simply returns zero as expected in all such cases. (BZ 395)
9295
9296Fixed problem reports (Valery Podrezov) integrated:
9297- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
9298- Allow interpreter to handle nested method declarations (BZ 5361)
9299
9300Fixed problem reports (Fiodor Suietov) integrated:
9301- AcpiTerminate doesn't free debug memory allocation list objects (BZ
9302355)
9303- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
9304356)
9305- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
9306- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
9307- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
9308- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
9309- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
9310- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
9311- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
9312365)
9313- Status of the Global Initialization Handler call not used (BZ 366)
9314- Incorrect object parameter to Global Initialization Handler (BZ 367)
9315
9316Example Code and Data Size: These are the sizes for the OS-independent
9317acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9318debug version of the code includes the debug output trace mechanism and
9319has
9320a much larger code and data size.
9321
9322  Previous Release:
9323    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
9324    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
9325  Current Release:
9326    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
9327    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
9328
9329
93302) iASL Compiler/Disassembler and Tools:
9331
9332Modified the parser to allow the names IO, DMA, and IRQ to be used as
9333namespace identifiers with no collision with existing resource descriptor
9334macro names. This provides compatibility with other ASL compilers and is
9335most useful for disassembly/recompilation of existing tables without
9336parse
9337errors. (With assistance from Thomas Renninger)
9338
9339Disassembler: fixed an incorrect disassembly problem with the
9340DataTableRegion and CopyObject operators. Fixed a possible fault during
9341disassembly of some Alias operators.
9342
9343----------------------------------------
934412 May 2006. Summary of changes for version 20060512:
9345
93461) ACPI CA Core Subsystem:
9347
9348Replaced the AcpiOsQueueForExecution interface with a new interface named
9349AcpiOsExecute. The major difference is that the new interface does not
9350have
9351a Priority parameter, this appeared to be useless and has been replaced
9352by
9353a
9354Type parameter. The Type tells the host what type of execution is being
9355requested, such as global lock handler, notify handler, GPE handler, etc.
9356This allows the host to queue and execute the request as appropriate for
9357the
9358request type, possibly using different work queues and different
9359priorities
9360for the various request types. This enables fixes for multithreading
9361deadlock problems such as BZ #5534, and will require changes to all
9362existing
9363OS interface layers. (Alexey Starikovskiy and Bob Moore)
9364
9365Fixed a possible memory leak associated with the support for the so-
9366called
9367"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
9368Suietov)
9369
9370Fixed a problem with the Load() operator where a table load from an
9371operation region could overwrite an internal table buffer by up to 7
9372bytes
9373and cause alignment faults on IPF systems. (With assistance from Luming
9374Yu)
9375
9376Example Code and Data Size: These are the sizes for the OS-independent
9377acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9378debug version of the code includes the debug output trace mechanism and
9379has
9380a much larger code and data size.
9381
9382  Previous Release:
9383    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
9384    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
9385  Current Release:
9386    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
9387    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
9388
9389
9390
93912) iASL Compiler/Disassembler and Tools:
9392
9393Disassembler: Implemented support to cross reference the internal
9394namespace
9395and automatically generate ASL External() statements for symbols not
9396defined
9397within the current table being disassembled. This will simplify the
9398disassembly and recompilation of interdependent tables such as SSDTs
9399since
9400these statements will no longer have to be added manually.
9401
9402Disassembler: Implemented experimental support to automatically detect
9403invocations of external control methods and generate appropriate
9404External()
9405statements. This is problematic because the AML cannot be correctly
9406parsed
9407until the number of arguments for each control method is known.
9408Currently,
9409standalone method invocations and invocations as the source operand of a
9410Store() statement are supported.
9411
9412Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
9413LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
9414LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
9415more readable and likely closer to the original ASL source.
9416
9417----------------------------------------
941821 April 2006. Summary of changes for version 20060421:
9419
94201) ACPI CA Core Subsystem:
9421
9422Removed a device initialization optimization introduced in 20051216 where
9423the _STA method was not run unless an _INI was also present for the same
9424device. This optimization could cause problems because it could allow
9425_INI
9426methods to be run within a not-present device subtree. (If a not-present
9427device had no _INI, _STA would not be run, the not-present status would
9428not
9429be discovered, and the children of the device would be incorrectly
9430traversed.)
9431
9432Implemented a new _STA optimization where namespace subtrees that do not
9433contain _INI are identified and ignored during device initialization.
9434Selectively running _STA can significantly improve boot time on large
9435machines (with assistance from Len Brown.)
9436
9437Implemented support for the device initialization case where the returned
9438_STA flags indicate a device not-present but functioning. In this case,
9439_INI
9440is not run, but the device children are examined for presence, as per the
9441ACPI specification.
9442
9443Implemented an additional change to the IndexField support in order to
9444conform to MS behavior. The value written to the Index Register is not
9445simply a byte offset, it is a byte offset in units of the access width of
9446the parent Index Field. (Fiodor Suietov)
9447
9448Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
9449interface is called during the creation of all AML operation regions, and
9450allows the host OS to exert control over what addresses it will allow the
9451AML code to access. Operation Regions whose addresses are disallowed will
9452cause a runtime exception when they are actually accessed (will not
9453affect
9454or abort table loading.) See oswinxf or osunixxf for an example
9455implementation.
9456
9457Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
9458interface allows the host OS to match the various "optional"
9459interface/behavior strings for the _OSI predefined control method as
9460appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
9461for an example implementation.
9462
9463Restructured and corrected various problems in the exception handling
9464code
9465paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
9466(with assistance from Takayoshi Kochi.)
9467
9468Modified the Linux source converter to ignore quoted string literals
9469while
9470converting identifiers from mixed to lower case. This will correct
9471problems
9472with the disassembler and other areas where such strings must not be
9473modified.
9474
9475The ACPI_FUNCTION_* macros no longer require quotes around the function
9476name. This allows the Linux source converter to convert the names, now
9477that
9478the converter ignores quoted strings.
9479
9480Example Code and Data Size: These are the sizes for the OS-independent
9481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9482debug version of the code includes the debug output trace mechanism and
9483has
9484a much larger code and data size.
9485
9486  Previous Release:
9487
9488    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
9489    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
9490  Current Release:
9491    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
9492    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
9493
9494
94952) iASL Compiler/Disassembler and Tools:
9496
9497Implemented 3 new warnings for iASL, and implemented multiple warning
9498levels
9499(w2 flag).
9500
95011) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
9502not
9503WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
9504check for the possible timeout, a warning is issued.
9505
95062) Useless operators: If an ASL operator does not specify an optional
9507target
9508operand and it also does not use the function return value from the
9509operator, a warning is issued since the operator effectively does
9510nothing.
9511
95123) Unreferenced objects: If a namespace object is created, but never
9513referenced, a warning is issued. This is a warning level 2 since there
9514are
9515cases where this is ok, such as when a secondary table is loaded that
9516uses
9517the unreferenced objects. Even so, care is taken to only flag objects
9518that
9519don't look like they will ever be used. For example, the reserved methods
9520(starting with an underscore) are usually not referenced because it is
9521expected that the OS will invoke them.
9522
9523----------------------------------------
952431 March 2006. Summary of changes for version 20060331:
9525
95261) ACPI CA Core Subsystem:
9527
9528Implemented header file support for the following additional ACPI tables:
9529ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
9530support,
9531all current and known ACPI tables are now defined in the ACPICA headers
9532and
9533are available for use by device drivers and other software.
9534
9535Implemented support to allow tables that contain ACPI names with invalid
9536characters to be loaded. Previously, this would cause the table load to
9537fail, but since there are several known cases of such tables on existing
9538machines, this change was made to enable ACPI support for them. Also,
9539this
9540matches the behavior of the Microsoft ACPI implementation.
9541
9542Fixed a couple regressions introduced during the memory optimization in
9543the
954420060317 release. The namespace node definition required additional
9545reorganization and an internal datatype that had been changed to 8-bit
9546was
9547restored to 32-bit. (Valery Podrezov)
9548
9549Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
9550could be passed through to AcpiOsReleaseObject which is unexpected. Such
9551null pointers are now trapped and ignored, matching the behavior of the
9552previous implementation before the deployment of AcpiOsReleaseObject.
9553(Valery Podrezov, Fiodor Suietov)
9554
9555Fixed a memory mapping leak during the deletion of a SystemMemory
9556operation
9557region where a cached memory mapping was not deleted. This became a
9558noticeable problem for operation regions that are defined within
9559frequently
9560used control methods. (Dana Meyers)
9561
9562Reorganized the ACPI table header files into two main files: one for the
9563ACPI tables consumed by the ACPICA core, and another for the
9564miscellaneous
9565ACPI tables that are consumed by the drivers and other software. The
9566various
9567FADT definitions were merged into one common section and three different
9568tables (ACPI 1.0, 1.0+, and 2.0)
9569
9570Example Code and Data Size: These are the sizes for the OS-independent
9571acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9572debug version of the code includes the debug output trace mechanism and
9573has
9574a much larger code and data size.
9575
9576  Previous Release:
9577    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
9578    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
9579  Current Release:
9580    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
9581    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
9582
9583
95842) iASL Compiler/Disassembler and Tools:
9585
9586Disassembler: Implemented support to decode and format all non-AML ACPI
9587tables (tables other than DSDTs and SSDTs.) This includes the new tables
9588added to the ACPICA headers, therefore all current and known ACPI tables
9589are
9590supported.
9591
9592Disassembler: The change to allow ACPI names with invalid characters also
9593enables the disassembly of such tables. Invalid characters within names
9594are
9595changed to '*' to make the name printable; the iASL compiler will still
9596generate an error for such names, however, since this is an invalid ACPI
9597character.
9598
9599Implemented an option for AcpiXtract (-a) to extract all tables found in
9600the
9601input file. The default invocation extracts only the DSDTs and SSDTs.
9602
9603Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
9604makefile for the AcpiXtract utility.
9605
9606----------------------------------------
960717 March 2006. Summary of changes for version 20060317:
9608
96091) ACPI CA Core Subsystem:
9610
9611Implemented the use of a cache object for all internal namespace nodes.
9612Since there are about 1000 static nodes in a typical system, this will
9613decrease memory use for cache implementations that minimize per-
9614allocation
9615overhead (such as a slab allocator.)
9616
9617Removed the reference count mechanism for internal namespace nodes, since
9618it
9619was deemed unnecessary. This reduces the size of each namespace node by
9620about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
9621case,
9622and 32 bytes for the 64-bit case.
9623
9624Optimized several internal data structures to reduce object size on 64-
9625bit
9626platforms by packing data within the 64-bit alignment. This includes the
9627frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
9628instances corresponding to the namespace objects.
9629
9630Added two new strings for the predefined _OSI method: "Windows 2001.1
9631SP1"
9632and "Windows 2006".
9633
9634Split the allocation tracking mechanism out to a separate file, from
9635utalloc.c to uttrack.c. This mechanism appears to be only useful for
9636application-level code. Kernels may wish to not include uttrack.c in
9637distributions.
9638
9639Removed all remnants of the obsolete ACPI_REPORT_* macros and the
9640associated
9641code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
9642macros.)
9643
9644Code and Data Size: These are the sizes for the acpica.lib produced by
9645the
9646Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9647ACPI
9648driver or OSPM code. The debug version of the code includes the debug
9649output
9650trace mechanism and has a much larger code and data size. Note that these
9651values will vary depending on the efficiency of the compiler and the
9652compiler options used during generation.
9653
9654  Previous Release:
9655    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9656    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9657  Current Release:
9658    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
9659    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
9660
9661
96622) iASL Compiler/Disassembler and Tools:
9663
9664Implemented an ANSI C version of the acpixtract utility. This version
9665will
9666automatically extract the DSDT and all SSDTs from the input acpidump text
9667file and dump the binary output to separate files. It can also display a
9668summary of the input file including the headers for each table found and
9669will extract any single ACPI table, with any signature. (See
9670source/tools/acpixtract)
9671
9672----------------------------------------
967310 March 2006. Summary of changes for version 20060310:
9674
96751) ACPI CA Core Subsystem:
9676
9677Tagged all external interfaces to the subsystem with the new
9678ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
9679assist
9680kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
9681macro. The default definition is NULL.
9682
9683Added the ACPI_THREAD_ID type for the return value from
9684AcpiOsGetThreadId.
9685This allows the host to define this as necessary to simplify kernel
9686integration. The default definition is ACPI_NATIVE_UINT.
9687
9688Fixed two interpreter problems related to error processing, the deletion
9689of
9690objects, and placing invalid pointers onto the internal operator result
9691stack. BZ 6028, 6151 (Valery Podrezov)
9692
9693Increased the reference count threshold where a warning is emitted for
9694large
9695reference counts in order to eliminate unnecessary warnings on systems
9696with
9697large namespaces (especially 64-bit.) Increased the value from 0x400 to
96980x800.
9699
9700Due to universal disagreement as to the meaning of the 'c' in the
9701calloc()
9702function, the ACPI_MEM_CALLOCATE macro has been renamed to
9703ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
9704ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
9705ACPI_FREE.
9706
9707Code and Data Size: These are the sizes for the acpica.lib produced by
9708the
9709Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9710ACPI
9711driver or OSPM code. The debug version of the code includes the debug
9712output
9713trace mechanism and has a much larger code and data size. Note that these
9714values will vary depending on the efficiency of the compiler and the
9715compiler options used during generation.
9716
9717  Previous Release:
9718    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
9719    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
9720  Current Release:
9721    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9722    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9723
9724
97252) iASL Compiler/Disassembler:
9726
9727Disassembler: implemented support for symbolic resource descriptor
9728references. If a CreateXxxxField operator references a fixed offset
9729within
9730a
9731resource descriptor, a name is assigned to the descriptor and the offset
9732is
9733translated to the appropriate resource tag and pathname. The addition of
9734this support brings the disassembled code very close to the original ASL
9735source code and helps eliminate run-time errors when the disassembled
9736code
9737is modified (and recompiled) in such a way as to invalidate the original
9738fixed offsets.
9739
9740Implemented support for a Descriptor Name as the last parameter to the
9741ASL
9742Register() macro. This parameter was inadvertently left out of the ACPI
9743specification, and will be added for ACPI 3.0b.
9744
9745Fixed a problem where the use of the "_OSI" string (versus the full path
9746"\_OSI") caused an internal compiler error. ("No back ptr to op")
9747
9748Fixed a problem with the error message that occurs when an invalid string
9749is
9750used for a _HID object (such as one with an embedded asterisk:
9751"*PNP010A".)
9752The correct message is now displayed.
9753
9754----------------------------------------
975517 February 2006. Summary of changes for version 20060217:
9756
97571) ACPI CA Core Subsystem:
9758
9759Implemented a change to the IndexField support to match the behavior of
9760the
9761Microsoft AML interpreter. The value written to the Index register is now
9762a
9763byte offset, no longer an index based upon the width of the Data
9764register.
9765This should fix IndexField problems seen on some machines where the Data
9766register is not exactly one byte wide. The ACPI specification will be
9767clarified on this point.
9768
9769Fixed a problem where several resource descriptor types could overrun the
9770internal descriptor buffer due to size miscalculation: VendorShort,
9771VendorLong, and Interrupt. This was noticed on IA64 machines, but could
9772affect all platforms.
9773
9774Fixed a problem where individual resource descriptors were misaligned
9775within
9776the internal buffer, causing alignment faults on IA64 platforms.
9777
9778Code and Data Size: These are the sizes for the acpica.lib produced by
9779the
9780Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9781ACPI
9782driver or OSPM code. The debug version of the code includes the debug
9783output
9784trace mechanism and has a much larger code and data size. Note that these
9785values will vary depending on the efficiency of the compiler and the
9786compiler options used during generation.
9787
9788  Previous Release:
9789    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9790    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
9791  Current Release:
9792    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
9793    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
9794
9795
97962) iASL Compiler/Disassembler:
9797
9798Implemented support for new reserved names: _WDG and _WED are Microsoft
9799extensions for Windows Instrumentation Management, _TDL is a new ACPI-
9800defined method (Throttling Depth Limit.)
9801
9802Fixed a problem where a zero-length VendorShort or VendorLong resource
9803descriptor was incorrectly emitted as a descriptor of length one.
9804
9805----------------------------------------
980610 February 2006. Summary of changes for version 20060210:
9807
98081) ACPI CA Core Subsystem:
9809
9810Removed a couple of extraneous ACPI_ERROR messages that appeared during
9811normal execution. These became apparent after the conversion from
9812ACPI_DEBUG_PRINT.
9813
9814Fixed a problem where the CreateField operator could hang if the BitIndex
9815or
9816NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
9817
9818Fixed a problem where a DeRefOf operation on a buffer object incorrectly
9819failed with an exception. This also fixes a couple of related RefOf and
9820DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
9821
9822Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
9823of
9824AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
9825BZ
98265480)
9827
9828Implemented a memory cleanup at the end of the execution of each
9829iteration
9830of an AML While() loop, preventing the accumulation of outstanding
9831objects.
9832(Valery Podrezov, BZ 5427)
9833
9834Eliminated a chunk of duplicate code in the object resolution code.
9835(Valery
9836Podrezov, BZ 5336)
9837
9838Fixed several warnings during the 64-bit code generation.
9839
9840The AcpiSrc source code conversion tool now inserts one line of
9841whitespace
9842after an if() statement that is followed immediately by a comment,
9843improving
9844readability of the Linux code.
9845
9846Code and Data Size: The current and previous library sizes for the core
9847subsystem are shown below. These are the code and data sizes for the
9848acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9849These
9850values do not include any ACPI driver or OSPM code. The debug version of
9851the
9852code includes the debug output trace mechanism and has a much larger code
9853and data size. Note that these values will vary depending on the
9854efficiency
9855of the compiler and the compiler options used during generation.
9856
9857  Previous Release:
9858    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
9859    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
9860  Current Release:
9861    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9862    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
9863
9864
98652) iASL Compiler/Disassembler:
9866
9867Fixed a problem with the disassembly of a BankField operator with a
9868complex
9869expression for the BankValue parameter.
9870
9871----------------------------------------
987227 January 2006. Summary of changes for version 20060127:
9873
98741) ACPI CA Core Subsystem:
9875
9876Implemented support in the Resource Manager to allow unresolved
9877namestring
9878references within resource package objects for the _PRT method. This
9879support
9880is in addition to the previously implemented unresolved reference support
9881within the AML parser. If the interpreter slack mode is enabled, these
9882unresolved references will be passed through to the caller as a NULL
9883package
9884entry.
9885
9886Implemented and deployed new macros and functions for error and warning
9887messages across the subsystem. These macros are simpler and generate less
9888code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
9889ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
9890macros remain defined to allow ACPI drivers time to migrate to the new
9891macros.
9892
9893Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
9894the
9895Acquire/Release Lock OSL interfaces.
9896
9897Fixed a problem where Alias ASL operators are sometimes not correctly
9898resolved, in both the interpreter and the iASL compiler.
9899
9900Fixed several problems with the implementation of the
9901ConcatenateResTemplate
9902ASL operator. As per the ACPI specification, zero length buffers are now
9903treated as a single EndTag. One-length buffers always cause a fatal
9904exception. Non-zero length buffers that do not end with a full 2-byte
9905EndTag
9906cause a fatal exception.
9907
9908Fixed a possible structure overwrite in the AcpiGetObjectInfo external
9909interface. (With assistance from Thomas Renninger)
9910
9911Code and Data Size: The current and previous library sizes for the core
9912subsystem are shown below. These are the code and data sizes for the
9913acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9914These
9915values do not include any ACPI driver or OSPM code. The debug version of
9916the
9917code includes the debug output trace mechanism and has a much larger code
9918and data size. Note that these values will vary depending on the
9919efficiency
9920of the compiler and the compiler options used during generation.
9921
9922  Previous Release:
9923    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9924    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9925  Current Release:
9926    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
9927    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
9928
9929
99302) iASL Compiler/Disassembler:
9931
9932Fixed an internal error that was generated for any forward references to
9933ASL
9934Alias objects.
9935
9936----------------------------------------
993713 January 2006. Summary of changes for version 20060113:
9938
99391) ACPI CA Core Subsystem:
9940
9941Added 2006 copyright to all module headers and signons. This affects
9942virtually every file in the ACPICA core subsystem, iASL compiler, and the
9943utilities.
9944
9945Enhanced the ACPICA error reporting in order to simplify user migration
9946to
9947the non-debug version of ACPICA. Replaced all instances of the
9948ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
9949debug
9950levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
9951respectively. This preserves all error and warning messages in the non-
9952debug
9953version of the ACPICA code (this has been referred to as the "debug lite"
9954option.) Over 200 cases were converted to create a total of over 380
9955error/warning messages across the ACPICA code. This increases the code
9956and
9957data size of the default non-debug version of the code somewhat (about
995813K),
9959but all error/warning reporting may be disabled if desired (and code
9960eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
9961configuration option. The size of the debug version of ACPICA remains
9962about
9963the same.
9964
9965Fixed a memory leak within the AML Debugger "Set" command. One object was
9966not properly deleted for every successful invocation of the command.
9967
9968Code and Data Size: The current and previous library sizes for the core
9969subsystem are shown below. These are the code and data sizes for the
9970acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9971These
9972values do not include any ACPI driver or OSPM code. The debug version of
9973the
9974code includes the debug output trace mechanism and has a much larger code
9975and data size. Note that these values will vary depending on the
9976efficiency
9977of the compiler and the compiler options used during generation.
9978
9979  Previous Release:
9980    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
9981    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
9982  Current Release:
9983    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9984    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9985
9986
99872) iASL Compiler/Disassembler:
9988
9989The compiler now officially supports the ACPI 3.0a specification that was
9990released on December 30, 2005. (Specification is available at
9991www.acpi.info)
9992
9993----------------------------------------
999416 December 2005. Summary of changes for version 20051216:
9995
99961) ACPI CA Core Subsystem:
9997
9998Implemented optional support to allow unresolved names within ASL Package
9999objects. A null object is inserted in the package when a named reference
10000cannot be located in the current namespace. Enabled via the interpreter
10001slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
10002machines
10003that contain such code.
10004
10005Implemented an optimization to the initialization sequence that can
10006improve
10007boot time. During ACPI device initialization, the _STA method is now run
10008if
10009and only if the _INI method exists. The _STA method is used to determine
10010if
10011the device is present; An _INI can only be run if _STA returns present,
10012but
10013it is a waste of time to run the _STA method if the _INI does not exist.
10014(Prototype and assistance from Dong Wei)
10015
10016Implemented use of the C99 uintptr_t for the pointer casting macros if it
10017is
10018available in the current compiler. Otherwise, the default (void *) cast
10019is
10020used as before.
10021
10022Fixed some possible memory leaks found within the execution path of the
10023Break, Continue, If, and CreateField operators. (Valery Podrezov)
10024
10025Fixed a problem introduced in the 20051202 release where an exception is
10026generated during method execution if a control method attempts to declare
10027another method.
10028
10029Moved resource descriptor string constants that are used by both the AML
10030disassembler and AML debugger to the common utilities directory so that
10031these components are independent.
10032
10033Implemented support in the AcpiExec utility (-e switch) to globally
10034ignore
10035exceptions during control method execution (method is not aborted.)
10036
10037Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
10038generation.
10039
10040Code and Data Size: The current and previous library sizes for the core
10041subsystem are shown below. These are the code and data sizes for the
10042acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10043These
10044values do not include any ACPI driver or OSPM code. The debug version of
10045the
10046code includes the debug output trace mechanism and has a much larger code
10047and data size. Note that these values will vary depending on the
10048efficiency
10049of the compiler and the compiler options used during generation.
10050
10051  Previous Release:
10052    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10053    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
10054  Current Release:
10055    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
10056    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
10057
10058
100592) iASL Compiler/Disassembler:
10060
10061Fixed a problem where a CPU stack overflow fault could occur if a
10062recursive
10063method call was made from within a Return statement.
10064
10065----------------------------------------
1006602 December 2005. Summary of changes for version 20051202:
10067
100681) ACPI CA Core Subsystem:
10069
10070Modified the parsing of control methods to no longer create namespace
10071objects during the first pass of the parse. Objects are now created only
10072during the execute phase, at the moment the namespace creation operator
10073is
10074encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
10075This
10076should eliminate ALREADY_EXISTS exceptions seen on some machines where
10077reentrant control methods are protected by an AML mutex. The mutex will
10078now
10079correctly block multiple threads from attempting to create the same
10080object
10081more than once.
10082
10083Increased the number of available Owner Ids for namespace object tracking
10084from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
10085on
10086some machines with a large number of ACPI tables (either static or
10087dynamic).
10088
10089Fixed a problem with the AcpiExec utility where a fault could occur when
10090the
10091-b switch (batch mode) is used.
10092
10093Enhanced the namespace dump routine to output the owner ID for each
10094namespace object.
10095
10096Code and Data Size: The current and previous library sizes for the core
10097subsystem are shown below. These are the code and data sizes for the
10098acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10099These
10100values do not include any ACPI driver or OSPM code. The debug version of
10101the
10102code includes the debug output trace mechanism and has a much larger code
10103and data size. Note that these values will vary depending on the
10104efficiency
10105of the compiler and the compiler options used during generation.
10106
10107  Previous Release:
10108    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10109    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10110  Current Release:
10111    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10112    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
10113
10114
101152) iASL Compiler/Disassembler:
10116
10117Fixed a parse error during compilation of certain Switch/Case constructs.
10118To
10119simplify the parse, the grammar now allows for multiple Default
10120statements
10121and this error is now detected and flagged during the analysis phase.
10122
10123Disassembler: The disassembly now includes the contents of the original
10124table header within a comment at the start of the file. This includes the
10125name and version of the original ASL compiler.
10126
10127----------------------------------------
1012817 November 2005. Summary of changes for version 20051117:
10129
101301) ACPI CA Core Subsystem:
10131
10132Fixed a problem in the AML parser where the method thread count could be
10133decremented below zero if any errors occurred during the method parse
10134phase.
10135This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
10136machines.
10137This also fixed a related regression with the mechanism that detects and
10138corrects methods that cannot properly handle reentrancy (related to the
10139deployment of the new OwnerId mechanism.)
10140
10141Eliminated the pre-parsing of control methods (to detect errors) during
10142table load. Related to the problem above, this was causing unwind issues
10143if
10144any errors occurred during the parse, and it seemed to be overkill. A
10145table
10146load should not be aborted if there are problems with any single control
10147method, thus rendering this feature rather pointless.
10148
10149Fixed a problem with the new table-driven resource manager where an
10150internal
10151buffer overflow could occur for small resource templates.
10152
10153Implemented a new external interface, AcpiGetVendorResource. This
10154interface
10155will find and return a vendor-defined resource descriptor within a _CRS
10156or
10157_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
10158Helgaas.
10159
10160Removed the length limit (200) on string objects as per the upcoming ACPI
101613.0A specification. This affects the following areas of the interpreter:
101621)
10163any implicit conversion of a Buffer to a String, 2) a String object
10164result
10165of the ASL Concatentate operator, 3) the String object result of the ASL
10166ToString operator.
10167
10168Fixed a problem in the Windows OS interface layer (OSL) where a
10169WAIT_FOREVER
10170on a semaphore object would incorrectly timeout. This allows the
10171multithreading features of the AcpiExec utility to work properly under
10172Windows.
10173
10174Updated the Linux makefiles for the iASL compiler and AcpiExec to include
10175the recently added file named "utresrc.c".
10176
10177Code and Data Size: The current and previous library sizes for the core
10178subsystem are shown below. These are the code and data sizes for the
10179acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10180These
10181values do not include any ACPI driver or OSPM code. The debug version of
10182the
10183code includes the debug output trace mechanism and has a much larger code
10184and data size. Note that these values will vary depending on the
10185efficiency
10186of the compiler and the compiler options used during generation.
10187
10188  Previous Release:
10189    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
10190    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10191  Current Release:
10192    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10193    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10194
10195
101962) iASL Compiler/Disassembler:
10197
10198Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
10199specification. For the iASL compiler, this means that string literals
10200within
10201the source ASL can be of any length.
10202
10203Enhanced the listing output to dump the AML code for resource descriptors
10204immediately after the ASL code for each descriptor, instead of in a block
10205at
10206the end of the entire resource template.
10207
10208Enhanced the compiler debug output to dump the entire original parse tree
10209constructed during the parse phase, before any transforms are applied to
10210the
10211tree. The transformed tree is dumped also.
10212
10213----------------------------------------
1021402 November 2005. Summary of changes for version 20051102:
10215
102161) ACPI CA Core Subsystem:
10217
10218Modified the subsystem initialization sequence to improve GPE support.
10219The
10220GPE initialization has been split into two parts in order to defer
10221execution
10222of the _PRW methods (Power Resources for Wake) until after the hardware
10223is
10224fully initialized and the SCI handler is installed. This allows the _PRW
10225methods to access fields protected by the Global Lock. This will fix
10226systems
10227where a NO_GLOBAL_LOCK exception has been seen during initialization.
10228
10229Converted the ACPI internal object disassemble and display code within
10230the
10231AML debugger to fully table-driven operation, reducing code size and
10232increasing maintainability.
10233
10234Fixed a regression with the ConcatenateResTemplate() ASL operator
10235introduced
10236in the 20051021 release.
10237
10238Implemented support for "local" internal ACPI object types within the
10239debugger "Object" command and the AcpiWalkNamespace external interfaces.
10240These local types include RegionFields, BankFields, IndexFields, Alias,
10241and
10242reference objects.
10243
10244Moved common AML resource handling code into a new file, "utresrc.c".
10245This
10246code is shared by both the Resource Manager and the AML Debugger.
10247
10248Code and Data Size: The current and previous library sizes for the core
10249subsystem are shown below. These are the code and data sizes for the
10250acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10251These
10252values do not include any ACPI driver or OSPM code. The debug version of
10253the
10254code includes the debug output trace mechanism and has a much larger code
10255and data size. Note that these values will vary depending on the
10256efficiency
10257of the compiler and the compiler options used during generation.
10258
10259  Previous Release:
10260    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
10261    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
10262  Current Release:
10263    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
10264    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10265
10266
102672) iASL Compiler/Disassembler:
10268
10269Fixed a problem with very large initializer lists (more than 4000
10270elements)
10271for both Buffer and Package objects where the parse stack could overflow.
10272
10273Enhanced the pre-compile source code scan for non-ASCII characters to
10274ignore
10275characters within comment fields. The scan is now always performed and is
10276no
10277longer optional, detecting invalid characters within a source file
10278immediately rather than during the parse phase or later.
10279
10280Enhanced the ASL grammar definition to force early reductions on all
10281list-
10282style grammar elements so that the overall parse stack usage is greatly
10283reduced. This should improve performance and reduce the possibility of
10284parse
10285stack overflow.
10286
10287Eliminated all reduce/reduce conflicts in the iASL parser generation.
10288Also,
10289with the addition of a %expected statement, the compiler generates from
10290source with no warnings.
10291
10292Fixed a possible segment fault in the disassembler if the input filename
10293does not contain a "dot" extension (Thomas Renninger).
10294
10295----------------------------------------
1029621 October 2005. Summary of changes for version 20051021:
10297
102981) ACPI CA Core Subsystem:
10299
10300Implemented support for the EM64T and other x86-64 processors. This
10301essentially entails recognizing that these processors support non-aligned
10302memory transfers. Previously, all 64-bit processors were assumed to lack
10303hardware support for non-aligned transfers.
10304
10305Completed conversion of the Resource Manager to nearly full table-driven
10306operation. Specifically, the resource conversion code (convert AML to
10307internal format and the reverse) and the debug code to dump internal
10308resource descriptors are fully table-driven, reducing code and data size
10309and
10310improving maintainability.
10311
10312The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
10313word
10314on 64-bit processors instead of a fixed 32-bit word. (With assistance
10315from
10316Alexey Starikovskiy)
10317
10318Implemented support within the resource conversion code for the Type-
10319Specific byte within the various ACPI 3.0 *WordSpace macros.
10320
10321Fixed some issues within the resource conversion code for the type-
10322specific
10323flags for both Memory and I/O address resource descriptors. For Memory,
10324implemented support for the MTP and TTP flags. For I/O, split the TRS and
10325TTP flags into two separate fields.
10326
10327Code and Data Size: The current and previous library sizes for the core
10328subsystem are shown below. These are the code and data sizes for the
10329acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10330These
10331values do not include any ACPI driver or OSPM code. The debug version of
10332the
10333code includes the debug output trace mechanism and has a much larger code
10334and data size. Note that these values will vary depending on the
10335efficiency
10336of the compiler and the compiler options used during generation.
10337
10338  Previous Release:
10339    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
10340    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
10341  Current Release:
10342    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
10343    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
10344
10345
10346
103472) iASL Compiler/Disassembler:
10348
10349Relaxed a compiler restriction that disallowed a ResourceIndex byte if
10350the
10351corresponding ResourceSource string was not also present in a resource
10352descriptor declaration. This restriction caused problems with existing
10353AML/ASL code that includes the Index byte without the string. When such
10354AML
10355was disassembled, it could not be compiled without modification. Further,
10356the modified code created a resource template with a different size than
10357the
10358original, breaking code that used fixed offsets into the resource
10359template
10360buffer.
10361
10362Removed a recent feature of the disassembler to ignore a lone
10363ResourceIndex
10364byte. This byte is now emitted if present so that the exact AML can be
10365reproduced when the disassembled code is recompiled.
10366
10367Improved comments and text alignment for the resource descriptor code
10368emitted by the disassembler.
10369
10370Implemented disassembler support for the ACPI 3.0 AccessSize field within
10371a
10372Register() resource descriptor.
10373
10374----------------------------------------
1037530 September 2005. Summary of changes for version 20050930:
10376
103771) ACPI CA Core Subsystem:
10378
10379Completed a major overhaul of the Resource Manager code - specifically,
10380optimizations in the area of the AML/internal resource conversion code.
10381The
10382code has been optimized to simplify and eliminate duplicated code, CPU
10383stack
10384use has been decreased by optimizing function parameters and local
10385variables, and naming conventions across the manager have been
10386standardized
10387for clarity and ease of maintenance (this includes function, parameter,
10388variable, and struct/typedef names.) The update may force changes in some
10389driver code, depending on how resources are handled by the host OS.
10390
10391All Resource Manager dispatch and information tables have been moved to a
10392single location for clarity and ease of maintenance. One new file was
10393created, named "rsinfo.c".
10394
10395The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
10396guarantee that the argument is not evaluated twice, making them less
10397prone
10398to macro side-effects. However, since there exists the possibility of
10399additional stack use if a particular compiler cannot optimize them (such
10400as
10401in the debug generation case), the original macros are optionally
10402available.
10403Note that some invocations of the return_VALUE macro may now cause size
10404mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
10405to
10406eliminate these. (From Randy Dunlap)
10407
10408Implemented a new mechanism to enable debug tracing for individual
10409control
10410methods. A new external interface, AcpiDebugTrace, is provided to enable
10411this mechanism. The intent is to allow the host OS to easily enable and
10412disable tracing for problematic control methods. This interface can be
10413easily exposed to a user or debugger interface if desired. See the file
10414psxface.c for details.
10415
10416AcpiUtCallocate will now return a valid pointer if a length of zero is
10417specified - a length of one is used and a warning is issued. This matches
10418the behavior of AcpiUtAllocate.
10419
10420Code and Data Size: The current and previous library sizes for the core
10421subsystem are shown below. These are the code and data sizes for the
10422acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10423These
10424values do not include any ACPI driver or OSPM code. The debug version of
10425the
10426code includes the debug output trace mechanism and has a much larger code
10427and data size. Note that these values will vary depending on the
10428efficiency
10429of the compiler and the compiler options used during generation.
10430
10431  Previous Release:
10432    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
10433    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
10434  Current Release:
10435    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
10436    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
10437
10438
104392) iASL Compiler/Disassembler:
10440
10441A remark is issued if the effective compile-time length of a package or
10442buffer is zero. Previously, this was a warning.
10443
10444----------------------------------------
1044516 September 2005. Summary of changes for version 20050916:
10446
104471) ACPI CA Core Subsystem:
10448
10449Fixed a problem within the Resource Manager where support for the Generic
10450Register descriptor was not fully implemented. This descriptor is now
10451fully
10452recognized, parsed, disassembled, and displayed.
10453
10454Completely restructured the Resource Manager code to utilize table-driven
10455dispatch and lookup, eliminating many of the large switch() statements.
10456This
10457reduces overall subsystem code size and code complexity. Affects the
10458resource parsing and construction, disassembly, and debug dump output.
10459
10460Cleaned up and restructured the debug dump output for all resource
10461descriptors. Improved readability of the output and reduced code size.
10462
10463Fixed a problem where changes to internal data structures caused the
10464optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
10465
10466Code and Data Size: The current and previous library sizes for the core
10467subsystem are shown below. These are the code and data sizes for the
10468acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10469These
10470values do not include any ACPI driver or OSPM code. The debug version of
10471the
10472code includes the debug output trace mechanism and has a much larger code
10473and data size. Note that these values will vary depending on the
10474efficiency
10475of the compiler and the compiler options used during generation.
10476
10477  Previous Release:
10478    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
10479    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
10480  Current Release:
10481    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
10482    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
10483
10484
104852) iASL Compiler/Disassembler:
10486
10487Updated the disassembler to automatically insert an EndDependentFn()
10488macro
10489into the ASL stream if this macro is missing in the original AML code,
10490simplifying compilation of the resulting ASL module.
10491
10492Fixed a problem in the disassembler where a disassembled ResourceSource
10493string (within a large resource descriptor) was not surrounded by quotes
10494and
10495not followed by a comma, causing errors when the resulting ASL module was
10496compiled. Also, escape sequences within a ResourceSource string are now
10497handled correctly (especially "\\")
10498
10499----------------------------------------
1050002 September 2005. Summary of changes for version 20050902:
10501
105021) ACPI CA Core Subsystem:
10503
10504Fixed a problem with the internal Owner ID allocation and deallocation
10505mechanisms for control method execution and recursive method invocation.
10506This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
10507messages seen on some systems. Recursive method invocation depth is
10508currently limited to 255. (Alexey Starikovskiy)
10509
10510Completely eliminated all vestiges of support for the "module-level
10511executable code" until this support is fully implemented and debugged.
10512This
10513should eliminate the NO_RETURN_VALUE exceptions seen during table load on
10514some systems that invoke this support.
10515
10516Fixed a problem within the resource manager code where the transaction
10517flags
10518for a 64-bit address descriptor were handled incorrectly in the type-
10519specific flag byte.
10520
10521Consolidated duplicate code within the address descriptor resource
10522manager
10523code, reducing overall subsystem code size.
10524
10525Fixed a fault when using the AML debugger "disassemble" command to
10526disassemble individual control methods.
10527
10528Removed references to the "release_current" directory within the Unix
10529release package.
10530
10531Code and Data Size: The current and previous core subsystem library sizes
10532are shown below. These are the code and data sizes for the acpica.lib
10533produced by the Microsoft Visual C++ 6.0 compiler. These values do not
10534include any ACPI driver or OSPM code. The debug version of the code
10535includes
10536the debug output trace mechanism and has a much larger code and data
10537size.
10538Note that these values will vary depending on the efficiency of the
10539compiler
10540and the compiler options used during generation.
10541
10542  Previous Release:
10543    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10544    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
10545  Current Release:
10546    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
10547    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
10548
10549
105502) iASL Compiler/Disassembler:
10551
10552Implemented an error check for illegal duplicate values in the interrupt
10553and
10554dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
10555Interrupt().
10556
10557Implemented error checking for the Irq() and IrqNoFlags() macros to
10558detect
10559too many values in the interrupt list (16 max) and invalid values in the
10560list (range 0 - 15)
10561
10562The maximum length string literal within an ASL file is now restricted to
10563200 characters as per the ACPI specification.
10564
10565Fixed a fault when using the -ln option (generate namespace listing).
10566
10567Implemented an error check to determine if a DescriptorName within a
10568resource descriptor has already been used within the current scope.
10569
10570----------------------------------------
1057115 August 2005.  Summary of changes for version 20050815:
10572
105731) ACPI CA Core Subsystem:
10574
10575Implemented a full bytewise compare to determine if a table load request
10576is
10577attempting to load a duplicate table. The compare is performed if the
10578table
10579signatures and table lengths match. This will allow different tables with
10580the same OEM Table ID and revision to be loaded - probably against the
10581ACPI
10582specification, but discovered in the field nonetheless.
10583
10584Added the changes.txt logfile to each of the zipped release packages.
10585
10586Code and Data Size: Current and previous core subsystem library sizes are
10587shown below. These are the code and data sizes for the acpica.lib
10588produced
10589by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10590any ACPI driver or OSPM code. The debug version of the code includes the
10591debug output trace mechanism and has a much larger code and data size.
10592Note
10593that these values will vary depending on the efficiency of the compiler
10594and
10595the compiler options used during generation.
10596
10597  Previous Release:
10598    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10599    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
10600  Current Release:
10601    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10602    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
10603
10604
106052) iASL Compiler/Disassembler:
10606
10607Fixed a problem where incorrect AML code could be generated for Package
10608objects if optimization is disabled (via the -oa switch).
10609
10610Fixed a problem with where incorrect AML code is generated for variable-
10611length packages when the package length is not specified and the number
10612of
10613initializer values is greater than 255.
10614
10615
10616----------------------------------------
1061729 July 2005.  Summary of changes for version 20050729:
10618
106191) ACPI CA Core Subsystem:
10620
10621Implemented support to ignore an attempt to install/load a particular
10622ACPI
10623table more than once. Apparently there exists BIOS code that repeatedly
10624attempts to load the same SSDT upon certain events. With assistance from
10625Venkatesh Pallipadi.
10626
10627Restructured the main interface to the AML parser in order to correctly
10628handle all exceptional conditions. This will prevent leakage of the
10629OwnerId
10630resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
10631some
10632machines. With assistance from Alexey Starikovskiy.
10633
10634Support for "module level code" has been disabled in this version due to
10635a
10636number of issues that have appeared on various machines. The support can
10637be
10638enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
10639compilation. When the issues are fully resolved, the code will be enabled
10640by
10641default again.
10642
10643Modified the internal functions for debug print support to define the
10644FunctionName parameter as a (const char *) for compatibility with
10645compiler
10646built-in macros such as __FUNCTION__, etc.
10647
10648Linted the entire ACPICA source tree for both 32-bit and 64-bit.
10649
10650Implemented support to display an object count summary for the AML
10651Debugger
10652commands Object and Methods.
10653
10654Code and Data Size: Current and previous core subsystem library sizes are
10655shown below. These are the code and data sizes for the acpica.lib
10656produced
10657by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10658any ACPI driver or OSPM code. The debug version of the code includes the
10659debug output trace mechanism and has a much larger code and data size.
10660Note
10661that these values will vary depending on the efficiency of the compiler
10662and
10663the compiler options used during generation.
10664
10665  Previous Release:
10666    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10667    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10668  Current Release:
10669    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10670    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
10671
10672
106732) iASL Compiler/Disassembler:
10674
10675Fixed a regression that appeared in the 20050708 version of the compiler
10676where an error message was inadvertently emitted for invocations of the
10677_OSI
10678reserved control method.
10679
10680----------------------------------------
1068108 July 2005.  Summary of changes for version 20050708:
10682
106831) ACPI CA Core Subsystem:
10684
10685The use of the CPU stack in the debug version of the subsystem has been
10686considerably reduced. Previously, a debug structure was declared in every
10687function that used the debug macros. This structure has been removed in
10688favor of declaring the individual elements as parameters to the debug
10689functions. This reduces the cumulative stack use during nested execution
10690of
10691ACPI function calls at the cost of a small increase in the code size of
10692the
10693debug version of the subsystem. With assistance from Alexey Starikovskiy
10694and
10695Len Brown.
10696
10697Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
10698headers to define a macro that will return the current function name at
10699runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
10700by
10701the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
10702compiler-dependent header, the function name is saved on the CPU stack
10703(one
10704pointer per function.) This mechanism is used because apparently there
10705exists no standard ANSI-C defined macro that that returns the function
10706name.
10707
10708Redesigned and reimplemented the "Owner ID" mechanism used to track
10709namespace objects created/deleted by ACPI tables and control method
10710execution. A bitmap is now used to allocate and free the IDs, thus
10711solving
10712the wraparound problem present in the previous implementation. The size
10713of
10714the namespace node descriptor was reduced by 2 bytes as a result (Alexey
10715Starikovskiy).
10716
10717Removed the UINT32_BIT and UINT16_BIT types that were used for the
10718bitfield
10719flag definitions within the headers for the predefined ACPI tables. These
10720have been replaced by UINT8_BIT in order to increase the code portability
10721of
10722the subsystem. If the use of UINT8 remains a problem, we may be forced to
10723eliminate bitfields entirely because of a lack of portability.
10724
10725Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
10726This
10727is a frequently used function and this improvement increases the
10728performance
10729of the entire subsystem (Alexey Starikovskiy).
10730
10731Fixed several possible memory leaks and the inverse - premature object
10732deletion (Alexey Starikovskiy).
10733
10734Code and Data Size: Current and previous core subsystem library sizes are
10735shown below. These are the code and data sizes for the acpica.lib
10736produced
10737by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10738any ACPI driver or OSPM code. The debug version of the code includes the
10739debug output trace mechanism and has a much larger code and data size.
10740Note
10741that these values will vary depending on the efficiency of the compiler
10742and
10743the compiler options used during generation.
10744
10745  Previous Release:
10746    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
10747    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
10748  Current Release:
10749    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10750    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10751
10752----------------------------------------
1075324 June 2005.  Summary of changes for version 20050624:
10754
107551) ACPI CA Core Subsystem:
10756
10757Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
10758the host-defined cache object. This allows the OSL implementation to
10759define
10760and type this object in any manner desired, simplifying the OSL
10761implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
10762Linux, and should be defined in the OS-specific header file for other
10763operating systems as required.
10764
10765Changed the interface to AcpiOsAcquireObject to directly return the
10766requested object as the function return (instead of ACPI_STATUS.) This
10767change was made for performance reasons, since this is the purpose of the
10768interface in the first place. AcpiOsAcquireObject is now similar to the
10769AcpiOsAllocate interface.
10770
10771Implemented a new AML debugger command named Businfo. This command
10772displays
10773information about all devices that have an associate _PRT object. The
10774_ADR,
10775_HID, _UID, and _CID are displayed for these devices.
10776
10777Modified the initialization sequence in AcpiInitializeSubsystem to call
10778the
10779OSL interface AcpiOslInitialize first, before any local initialization.
10780This
10781change was required because the global initialization now calls OSL
10782interfaces.
10783
10784Enhanced the Dump command to display the entire contents of Package
10785objects
10786(including all sub-objects and their values.)
10787
10788Restructured the code base to split some files because of size and/or
10789because the code logically belonged in a separate file. New files are
10790listed
10791below. All makefiles and project files included in the ACPI CA release
10792have
10793been updated.
10794    utilities/utcache.c           /* Local cache interfaces */
10795    utilities/utmutex.c           /* Local mutex support */
10796    utilities/utstate.c           /* State object support */
10797    interpreter/parser/psloop.c   /* Main AML parse loop */
10798
10799Code and Data Size: Current and previous core subsystem library sizes are
10800shown below. These are the code and data sizes for the acpica.lib
10801produced
10802by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10803any ACPI driver or OSPM code. The debug version of the code includes the
10804debug output trace mechanism and has a much larger code and data size.
10805Note
10806that these values will vary depending on the efficiency of the compiler
10807and
10808the compiler options used during generation.
10809
10810  Previous Release:
10811    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
10812    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
10813  Current Release:
10814    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
10815    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
10816
10817
108182) iASL Compiler/Disassembler:
10819
10820Fixed a regression introduced in version 20050513 where the use of a
10821Package
10822object within a Case() statement caused a compile time exception. The
10823original behavior has been restored (a Match() operator is emitted.)
10824
10825----------------------------------------
1082617 June 2005.  Summary of changes for version 20050617:
10827
108281) ACPI CA Core Subsystem:
10829
10830Moved the object cache operations into the OS interface layer (OSL) to
10831allow
10832the host OS to handle these operations if desired (for example, the Linux
10833OSL will invoke the slab allocator). This support is optional; the
10834compile
10835time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
10836cache
10837code in the ACPI CA core. The new OSL interfaces are shown below. See
10838utalloc.c for an example implementation, and acpiosxf.h for the exact
10839interface definitions. With assistance from Alexey Starikovskiy.
10840    AcpiOsCreateCache
10841    AcpiOsDeleteCache
10842    AcpiOsPurgeCache
10843    AcpiOsAcquireObject
10844    AcpiOsReleaseObject
10845
10846Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
10847return
10848and restore a flags parameter. This fits better with many OS lock models.
10849Note: the current execution state (interrupt handler or not) is no longer
10850passed to these interfaces. If necessary, the OSL must determine this
10851state
10852by itself, a simple and fast operation. With assistance from Alexey
10853Starikovskiy.
10854
10855Fixed a problem in the ACPI table handling where a valid XSDT was assumed
10856present if the revision of the RSDP was 2 or greater. According to the
10857ACPI
10858specification, the XSDT is optional in all cases, and the table manager
10859therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
10860Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
10861contain
10862only the RSDT.
10863
10864Fixed an interpreter problem with the Mid() operator in the case of an
10865input
10866string where the resulting output string is of zero length. It now
10867correctly
10868returns a valid, null terminated string object instead of a string object
10869with a null pointer.
10870
10871Fixed a problem with the control method argument handling to allow a
10872store
10873to an Arg object that already contains an object of type Device. The
10874Device
10875object is now correctly overwritten. Previously, an error was returned.
10876
10877
10878Enhanced the debugger Find command to emit object values in addition to
10879the
10880found object pathnames. The output format is the same as the dump
10881namespace
10882command.
10883
10884Enhanced the debugger Set command. It now has the ability to set the
10885value
10886of any Named integer object in the namespace (Previously, only method
10887locals
10888and args could be set.)
10889
10890Code and Data Size: Current and previous core subsystem library sizes are
10891shown below. These are the code and data sizes for the acpica.lib
10892produced
10893by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10894any ACPI driver or OSPM code. The debug version of the code includes the
10895debug output trace mechanism and has a much larger code and data size.
10896Note
10897that these values will vary depending on the efficiency of the compiler
10898and
10899the compiler options used during generation.
10900
10901  Previous Release:
10902    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
10903    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
10904  Current Release:
10905    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
10906    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
10907
10908
109092) iASL Compiler/Disassembler:
10910
10911Fixed a regression in the disassembler where if/else/while constructs
10912were
10913output incorrectly. This problem was introduced in the previous release
10914(20050526). This problem also affected the single-step disassembly in the
10915debugger.
10916
10917Fixed a problem where compiling the reserved _OSI method would randomly
10918(but
10919rarely) produce compile errors.
10920
10921Enhanced the disassembler to emit compilable code in the face of
10922incorrect
10923AML resource descriptors. If the optional ResourceSourceIndex is present,
10924but the ResourceSource is not, do not emit the ResourceSourceIndex in the
10925disassembly. Otherwise, the resulting code cannot be compiled without
10926errors.
10927
10928----------------------------------------
1092926 May 2005.  Summary of changes for version 20050526:
10930
109311) ACPI CA Core Subsystem:
10932
10933Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
10934the module level (not within a control method.) These opcodes are
10935executed
10936exactly once at the time the table is loaded. This type of code was legal
10937up
10938until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
10939in
10940order to provide backwards compatibility with earlier BIOS
10941implementations.
10942This eliminates the "Encountered executable code at module level" warning
10943that was previously generated upon detection of such code.
10944
10945Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
10946inadvertently be generated during the lookup of namespace objects in the
10947second pass parse of ACPI tables and control methods. It appears that
10948this
10949problem could occur during the resolution of forward references to
10950namespace
10951objects.
10952
10953Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
10954corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
10955allows the deadlock detection debug code to be compiled out in the normal
10956case, improving mutex performance (and overall subsystem performance)
10957considerably.
10958
10959Implemented a handful of miscellaneous fixes for possible memory leaks on
10960error conditions and error handling control paths. These fixes were
10961suggested by FreeBSD and the Coverity Prevent source code analysis tool.
10962
10963Added a check for a null RSDT pointer in AcpiGetFirmwareTable
10964(tbxfroot.c)
10965to prevent a fault in this error case.
10966
10967Code and Data Size: Current and previous core subsystem library sizes are
10968shown below. These are the code and data sizes for the acpica.lib
10969produced
10970by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10971any ACPI driver or OSPM code. The debug version of the code includes the
10972debug output trace mechanism and has a much larger code and data size.
10973Note
10974that these values will vary depending on the efficiency of the compiler
10975and
10976the compiler options used during generation.
10977
10978  Previous Release:
10979    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10980    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10981  Current Release:
10982    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
10983    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
10984
10985
109862) iASL Compiler/Disassembler:
10987
10988Implemented support to allow Type 1 and Type 2 ASL operators to appear at
10989the module level (not within a control method.) These operators will be
10990executed once at the time the table is loaded. This type of code was
10991legal
10992up until the release of ACPI 2.0B (2002) and is now supported by the iASL
10993compiler in order to provide backwards compatibility with earlier BIOS
10994ASL
10995code.
10996
10997The ACPI integer width (specified via the table revision ID or the -r
10998override, 32 or 64 bits) is now used internally during compile-time
10999constant
11000folding to ensure that constants are truncated to 32 bits if necessary.
11001Previously, the revision ID value was only emitted in the AML table
11002header.
11003
11004An error message is now generated for the Mutex and Method operators if
11005the
11006SyncLevel parameter is outside the legal range of 0 through 15.
11007
11008Fixed a problem with the Method operator ParameterTypes list handling
11009(ACPI
110103.0). Previously, more than 2 types or 2 arguments generated a syntax
11011error.
11012The actual underlying implementation of method argument typechecking is
11013still under development, however.
11014
11015----------------------------------------
1101613 May 2005.  Summary of changes for version 20050513:
11017
110181) ACPI CA Core Subsystem:
11019
11020Implemented support for PCI Express root bridges -- added support for
11021device
11022PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
11023
11024The interpreter now automatically truncates incoming 64-bit constants to
1102532
11026bits if currently executing out of a 32-bit ACPI table (Revision < 2).
11027This
11028also affects the iASL compiler constant folding. (Note: as per below, the
11029iASL compiler no longer allows 64-bit constants within 32-bit tables.)
11030
11031Fixed a problem where string and buffer objects with "static" pointers
11032(pointers to initialization data within an ACPI table) were not handled
11033consistently. The internal object copy operation now always copies the
11034data
11035to a newly allocated buffer, regardless of whether the source object is
11036static or not.
11037
11038Fixed a problem with the FromBCD operator where an implicit result
11039conversion was improperly performed while storing the result to the
11040target
11041operand. Since this is an "explicit conversion" operator, the implicit
11042conversion should never be performed on the output.
11043
11044Fixed a problem with the CopyObject operator where a copy to an existing
11045named object did not always completely overwrite the existing object
11046stored
11047at name. Specifically, a buffer-to-buffer copy did not delete the
11048existing
11049buffer.
11050
11051Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
11052and
11053structs for consistency.
11054
11055Code and Data Size: Current and previous core subsystem library sizes are
11056shown below. These are the code and data sizes for the acpica.lib
11057produced
11058by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11059any ACPI driver or OSPM code. The debug version of the code includes the
11060debug output trace mechanism and has a much larger code and data size.
11061Note
11062that these values will vary depending on the efficiency of the compiler
11063and
11064the compiler options used during generation.
11065
11066  Previous Release:
11067    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11068    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11069  Current Release: (Same sizes)
11070    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11071    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11072
11073
110742) iASL Compiler/Disassembler:
11075
11076The compiler now emits a warning if an attempt is made to generate a 64-
11077bit
11078integer constant from within a 32-bit ACPI table (Revision < 2). The
11079integer
11080is truncated to 32 bits.
11081
11082Fixed a problem with large package objects: if the static length of the
11083package is greater than 255, the "variable length package" opcode is
11084emitted. Previously, this caused an error. This requires an update to the
11085ACPI spec, since it currently (incorrectly) states that packages larger
11086than
11087255 elements are not allowed.
11088
11089The disassembler now correctly handles variable length packages and
11090packages
11091larger than 255 elements.
11092
11093----------------------------------------
1109408 April 2005.  Summary of changes for version 20050408:
11095
110961) ACPI CA Core Subsystem:
11097
11098Fixed three cases in the interpreter where an "index" argument to an ASL
11099function was still (internally) 32 bits instead of the required 64 bits.
11100This was the Index argument to the Index, Mid, and Match operators.
11101
11102The "strupr" function is now permanently local (AcpiUtStrupr), since this
11103is
11104not a POSIX-defined function and not present in most kernel-level C
11105libraries. All references to the C library strupr function have been
11106removed
11107from the headers.
11108
11109Completed the deployment of static functions/prototypes. All prototypes
11110with
11111the static attribute have been moved from the headers to the owning C
11112file.
11113
11114Implemented an extract option (-e) for the AcpiBin utility (AML binary
11115utility). This option allows the utility to extract individual ACPI
11116tables
11117from the output of AcpiDmp. It provides the same functionality of the
11118acpixtract.pl perl script without the worry of setting the correct perl
11119options. AcpiBin runs on Windows and has not yet been generated/validated
11120in
11121the Linux/Unix environment (but should be soon).
11122
11123Updated and fixed the table dump option for AcpiBin (-d). This option
11124converts a single ACPI table to a hex/ascii file, similar to the output
11125of
11126AcpiDmp.
11127
11128Code and Data Size: Current and previous core subsystem library sizes are
11129shown below. These are the code and data sizes for the acpica.lib
11130produced
11131by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11132any ACPI driver or OSPM code. The debug version of the code includes the
11133debug output trace mechanism and has a much larger code and data size.
11134Note
11135that these values will vary depending on the efficiency of the compiler
11136and
11137the compiler options used during generation.
11138
11139  Previous Release:
11140    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11141    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11142  Current Release:
11143    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11144    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11145
11146
111472) iASL Compiler/Disassembler:
11148
11149Disassembler fix: Added a check to ensure that the table length found in
11150the
11151ACPI table header within the input file is not longer than the actual
11152input
11153file size. This indicates some kind of file or table corruption.
11154
11155----------------------------------------
1115629 March 2005.  Summary of changes for version 20050329:
11157
111581) ACPI CA Core Subsystem:
11159
11160An error is now generated if an attempt is made to create a Buffer Field
11161of
11162length zero (A CreateField with a length operand of zero.)
11163
11164The interpreter now issues a warning whenever executable code at the
11165module
11166level is detected during ACPI table load. This will give some idea of the
11167prevalence of this type of code.
11168
11169Implemented support for references to named objects (other than control
11170methods) within package objects.
11171
11172Enhanced package object output for the debug object. Package objects are
11173now
11174completely dumped, showing all elements.
11175
11176Enhanced miscellaneous object output for the debug object. Any object can
11177now be written to the debug object (for example, a device object can be
11178written, and the type of the object will be displayed.)
11179
11180The "static" qualifier has been added to all local functions across both
11181the
11182core subsystem and the iASL compiler.
11183
11184The number of "long" lines (> 80 chars) within the source has been
11185significantly reduced, by about 1/3.
11186
11187Cleaned up all header files to ensure that all CA/iASL functions are
11188prototyped (even static functions) and the formatting is consistent.
11189
11190Two new header files have been added, acopcode.h and acnames.h.
11191
11192Removed several obsolete functions that were no longer used.
11193
11194Code and Data Size: Current and previous core subsystem library sizes are
11195shown below. These are the code and data sizes for the acpica.lib
11196produced
11197by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11198any ACPI driver or OSPM code. The debug version of the code includes the
11199debug output trace mechanism and has a much larger code and data size.
11200Note
11201that these values will vary depending on the efficiency of the compiler
11202and
11203the compiler options used during generation.
11204
11205  Previous Release:
11206    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11207    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
11208  Current Release:
11209    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11210    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11211
11212
11213
112142) iASL Compiler/Disassembler:
11215
11216Fixed a problem with the resource descriptor generation/support. For the
11217ResourceSourceIndex and the ResourceSource fields, both must be present,
11218or
11219both must be not present - can't have one without the other.
11220
11221The compiler now returns non-zero from the main procedure if any errors
11222have
11223occurred during the compilation.
11224
11225
11226----------------------------------------
1122709 March 2005.  Summary of changes for version 20050309:
11228
112291) ACPI CA Core Subsystem:
11230
11231The string-to-buffer implicit conversion code has been modified again
11232after
11233a change to the ACPI specification.  In order to match the behavior of
11234the
11235other major ACPI implementation, the target buffer is no longer truncated
11236if
11237the source string is smaller than an existing target buffer. This change
11238requires an update to the ACPI spec, and should eliminate the recent
11239AE_AML_BUFFER_LIMIT issues.
11240
11241The "implicit return" support was rewritten to a new algorithm that
11242solves
11243the general case. Rather than attempt to determine when a method is about
11244to
11245exit, the result of every ASL operator is saved momentarily until the
11246very
11247next ASL operator is executed. Therefore, no matter how the method exits,
11248there will always be a saved implicit return value. This feature is only
11249enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
11250eliminate
11251AE_AML_NO_RETURN_VALUE errors when enabled.
11252
11253Implemented implicit conversion support for the predicate (operand) of
11254the
11255If, Else, and While operators. String and Buffer arguments are
11256automatically
11257converted to Integers.
11258
11259Changed the string-to-integer conversion behavior to match the new ACPI
11260errata: "If no integer object exists, a new integer is created. The ASCII
11261string is interpreted as a hexadecimal constant. Each string character is
11262interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
11263with the first character as the most significant digit, and ending with
11264the
11265first non-hexadecimal character or end-of-string." This means that the
11266first
11267non-hex character terminates the conversion and this is the code that was
11268changed.
11269
11270Fixed a problem where the ObjectType operator would fail (fault) when
11271used
11272on an Index of a Package which pointed to a null package element. The
11273operator now properly returns zero (Uninitialized) in this case.
11274
11275Fixed a problem where the While operator used excessive memory by not
11276properly popping the result stack during execution. There was no memory
11277leak
11278after execution, however. (Code provided by Valery Podrezov.)
11279
11280Fixed a problem where references to control methods within Package
11281objects
11282caused the method to be invoked, instead of producing a reference object
11283pointing to the method.
11284
11285Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
11286to
11287improve performance and reduce code size. (Code provided by Alexey
11288Starikovskiy.)
11289
11290Code and Data Size: Current and previous core subsystem library sizes are
11291shown below. These are the code and data sizes for the acpica.lib
11292produced
11293by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11294any ACPI driver or OSPM code. The debug version of the code includes the
11295debug output trace mechanism and has a much larger code and data size.
11296Note
11297that these values will vary depending on the efficiency of the compiler
11298and
11299the compiler options used during generation.
11300
11301  Previous Release:
11302    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11303    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
11304  Current Release:
11305    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11306    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
11307
11308
113092) iASL Compiler/Disassembler:
11310
11311Fixed a problem with the Return operator with no arguments. Since the AML
11312grammar for the byte encoding requires an operand for the Return opcode,
11313the
11314compiler now emits a Return(Zero) for this case.  An ACPI specification
11315update has been written for this case.
11316
11317For tables other than the DSDT, namepath optimization is automatically
11318disabled. This is because SSDTs can be loaded anywhere in the namespace,
11319the
11320compiler has no knowledge of where, and thus cannot optimize namepaths.
11321
11322Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
11323inadvertently omitted from the ACPI specification, and will require an
11324update to the spec.
11325
11326The source file scan for ASCII characters is now optional (-a). This
11327change
11328was made because some vendors place non-ascii characters within comments.
11329However, the scan is simply a brute-force byte compare to ensure all
11330characters in the file are in the range 0x00 to 0x7F.
11331
11332Fixed a problem with the CondRefOf operator where the compiler was
11333inappropriately checking for the existence of the target. Since the point
11334of
11335the operator is to check for the existence of the target at run-time, the
11336compiler no longer checks for the target existence.
11337
11338Fixed a problem where errors generated from the internal AML interpreter
11339during constant folding were not handled properly, causing a fault.
11340
11341Fixed a problem with overly aggressive range checking for the Stall
11342operator. The valid range (max 255) is now only checked if the operand is
11343of
11344type Integer. All other operand types cannot be statically checked.
11345
11346Fixed a problem where control method references within the RefOf,
11347DeRefOf,
11348and ObjectType operators were not treated properly. They are now treated
11349as
11350actual references, not method invocations.
11351
11352Fixed and enhanced the "list namespace" option (-ln). This option was
11353broken
11354a number of releases ago.
11355
11356Improved error handling for the Field, IndexField, and BankField
11357operators.
11358The compiler now cleanly reports and recovers from errors in the field
11359component (FieldUnit) list.
11360
11361Fixed a disassembler problem where the optional ResourceDescriptor fields
11362TRS and TTP were not always handled correctly.
11363
11364Disassembler - Comments in output now use "//" instead of "/*"
11365
11366----------------------------------------
1136728 February 2005.  Summary of changes for version 20050228:
11368
113691) ACPI CA Core Subsystem:
11370
11371Fixed a problem where the result of an Index() operator (an object
11372reference) must increment the reference count on the target object for
11373the
11374life of the object reference.
11375
11376Implemented AML Interpreter and Debugger support for the new ACPI 3.0
11377Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
11378WordSpace
11379resource descriptors.
11380
11381Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
11382Space Descriptor" string, indicating interpreter support for the
11383descriptors
11384above.
11385
11386Implemented header support for the new ACPI 3.0 FADT flag bits.
11387
11388Implemented header support for the new ACPI 3.0 PCI Express bits for the
11389PM1
11390status/enable registers.
11391
11392Updated header support for the MADT processor local Apic struct and MADT
11393platform interrupt source struct for new ACPI 3.0 fields.
11394
11395Implemented header support for the SRAT and SLIT ACPI tables.
11396
11397Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
11398flag
11399at runtime.
11400
11401Code and Data Size: Current and previous core subsystem library sizes are
11402shown below. These are the code and data sizes for the acpica.lib
11403produced
11404by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11405any ACPI driver or OSPM code. The debug version of the code includes the
11406debug output trace mechanism and has a much larger code and data size.
11407Note
11408that these values will vary depending on the efficiency of the compiler
11409and
11410the compiler options used during generation.
11411
11412  Previous Release:
11413    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
11414    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
11415  Current Release:
11416    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11417    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
11418
11419
114202) iASL Compiler/Disassembler:
11421
11422Fixed a problem with the internal 64-bit String-to-integer conversion
11423with
11424strings less than two characters long.
11425
11426Fixed a problem with constant folding where the result of the Index()
11427operator can not be considered a constant. This means that Index() cannot
11428be
11429a type3 opcode and this will require an update to the ACPI specification.
11430
11431Disassembler: Implemented support for the TTP, MTP, and TRS resource
11432descriptor fields. These fields were inadvertently ignored and not output
11433in
11434the disassembly of the resource descriptor.
11435
11436
11437 ----------------------------------------
1143811 February 2005.  Summary of changes for version 20050211:
11439
114401) ACPI CA Core Subsystem:
11441
11442Implemented ACPI 3.0 support for implicit conversion within the Match()
11443operator. MatchObjects can now be of type integer, buffer, or string
11444instead
11445of just type integer.  Package elements are implicitly converted to the
11446type
11447of the MatchObject. This change aligns the behavior of Match() with the
11448behavior of the other logical operators (LLess(), etc.) It also requires
11449an
11450errata change to the ACPI specification as this support was intended for
11451ACPI 3.0, but was inadvertently omitted.
11452
11453Fixed a problem with the internal implicit "to buffer" conversion.
11454Strings
11455that are converted to buffers will cause buffer truncation if the string
11456is
11457smaller than the target buffer. Integers that are converted to buffers
11458will
11459not cause buffer truncation, only zero extension (both as per the ACPI
11460spec.) The problem was introduced when code was added to truncate the
11461buffer, but this should not be performed in all cases, only the string
11462case.
11463
11464Fixed a problem with the Buffer and Package operators where the
11465interpreter
11466would get confused if two such operators were used as operands to an ASL
11467operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
11468stack was not being popped after the execution of these operators,
11469resulting
11470in an AE_NO_RETURN_VALUE exception.
11471
11472Fixed a problem with constructs of the form Store(Index(...),...). The
11473reference object returned from Index was inadvertently resolved to an
11474actual
11475value. This problem was introduced in version 20050114 when the behavior
11476of
11477Store() was modified to restrict the object types that can be used as the
11478source operand (to match the ACPI specification.)
11479
11480Reduced excessive stack use within the AcpiGetObjectInfo procedure.
11481
11482Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
11483
11484Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
11485
11486Code and Data Size: Current and previous core subsystem library sizes are
11487shown below. These are the code and data sizes for the acpica.lib
11488produced
11489by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11490any ACPI driver or OSPM code. The debug version of the code includes the
11491debug output trace mechanism and has a much larger code and data size.
11492Note
11493that these values will vary depending on the efficiency of the compiler
11494and
11495the compiler options used during generation.
11496
11497  Previous Release:
11498    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
11499    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
11500  Current Release:
11501    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
11502    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
11503
11504
115052) iASL Compiler/Disassembler:
11506
11507Fixed a code generation problem in the constant folding optimization code
11508where incorrect code was generated if a constant was reduced to a buffer
11509object (i.e., a reduced type 5 opcode.)
11510
11511Fixed a typechecking problem for the ToBuffer operator. Caused by an
11512incorrect return type in the internal opcode information table.
11513
11514----------------------------------------
1151525 January 2005.  Summary of changes for version 20050125:
11516
115171) ACPI CA Core Subsystem:
11518
11519Fixed a recently introduced problem with the Global Lock where the
11520underlying semaphore was not created.  This problem was introduced in
11521version 20050114, and caused an AE_AML_NO_OPERAND exception during an
11522Acquire() operation on _GL.
11523
11524The local object cache is now optional, and is disabled by default. Both
11525AcpiExec and the iASL compiler enable the cache because they run in user
11526mode and this enhances their performance. #define
11527ACPI_ENABLE_OBJECT_CACHE
11528to enable the local cache.
11529
11530Fixed an issue in the internal function AcpiUtEvaluateObject concerning
11531the
11532optional "implicit return" support where an error was returned if no
11533return
11534object was expected, but one was implicitly returned. AE_OK is now
11535returned
11536in this case and the implicitly returned object is deleted.
11537AcpiUtEvaluateObject is only occasionally used, and only to execute
11538reserved
11539methods such as _STA and _INI where the return type is known up front.
11540
11541Fixed a few issues with the internal convert-to-integer code. It now
11542returns
11543an error if an attempt is made to convert a null string, a string of only
11544blanks/tabs, or a zero-length buffer. This affects both implicit
11545conversion
11546and explicit conversion via the ToInteger() operator.
11547
11548The internal debug code in AcpiUtAcquireMutex has been commented out. It
11549is
11550not needed for normal operation and should increase the performance of
11551the
11552entire subsystem. The code remains in case it is needed for debug
11553purposes
11554again.
11555
11556The AcpiExec source and makefile are included in the Unix/Linux package
11557for
11558the first time.
11559
11560Code and Data Size: Current and previous core subsystem library sizes are
11561shown below. These are the code and data sizes for the acpica.lib
11562produced
11563by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11564any ACPI driver or OSPM code. The debug version of the code includes the
11565debug output trace mechanism and has a much larger code and data size.
11566Note
11567that these values will vary depending on the efficiency of the compiler
11568and
11569the compiler options used during generation.
11570
11571  Previous Release:
11572    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
11573    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
11574  Current Release:
11575    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
11576    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
11577
115782) iASL Compiler/Disassembler:
11579
11580Switch/Case support: A warning is now issued if the type of the Switch
11581value
11582cannot be determined at compile time. For example, Switch(Arg0) will
11583generate the warning, and the type is assumed to be an integer. As per
11584the
11585ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
11586the
11587warning.
11588
11589Switch/Case support: Implemented support for buffer and string objects as
11590the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
11591buffers and strings.
11592
11593Switch/Case support: The emitted code for the LEqual() comparisons now
11594uses
11595the switch value as the first operand, not the second. The case value is
11596now
11597the second operand, and this allows the case value to be implicitly
11598converted to the type of the switch value, not the other way around.
11599
11600Switch/Case support: Temporary variables are now emitted immediately
11601within
11602the control method, not at the global level. This means that there are
11603now
1160436 temps available per-method, not 36 temps per-module as was the case
11605with
11606the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
11607
11608----------------------------------------
1160914 January 2005.  Summary of changes for version 20050114:
11610
11611Added 2005 copyright to all module headers.  This affects every module in
11612the core subsystem, iASL compiler, and the utilities.
11613
116141) ACPI CA Core Subsystem:
11615
11616Fixed an issue with the String-to-Buffer conversion code where the string
11617null terminator was not included in the buffer after conversion, but
11618there
11619is existing ASL that assumes the string null terminator is included. This
11620is
11621the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
11622introduced in the previous version when the code was updated to correctly
11623set the converted buffer size as per the ACPI specification. The ACPI
11624spec
11625is ambiguous and will be updated to specify that the null terminator must
11626be
11627included in the converted buffer. This also affects the ToBuffer() ASL
11628operator.
11629
11630Fixed a problem with the Mid() ASL/AML operator where it did not work
11631correctly on Buffer objects. Newly created sub-buffers were not being
11632marked
11633as initialized.
11634
11635
11636Fixed a problem in AcpiTbFindTable where incorrect string compares were
11637performed on the OemId and OemTableId table header fields.  These fields
11638are
11639not null terminated, so strncmp is now used instead of strcmp.
11640
11641Implemented a restriction on the Store() ASL/AML operator to align the
11642behavior with the ACPI specification.  Previously, any object could be
11643used
11644as the source operand.  Now, the only objects that may be used are
11645Integers,
11646Buffers, Strings, Packages, Object References, and DDB Handles.  If
11647necessary, the original behavior can be restored by enabling the
11648EnableInterpreterSlack flag.
11649
11650Enhanced the optional "implicit return" support to allow an implicit
11651return
11652value from methods that are invoked externally via the AcpiEvaluateObject
11653interface.  This enables implicit returns from the _STA and _INI methods,
11654for example.
11655
11656Changed the Revision() ASL/AML operator to return the current version of
11657the
11658AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
11659returned
11660the supported ACPI version (This is the function of the _REV method).
11661
11662Updated the _REV predefined method to return the currently supported
11663version
11664of ACPI, now 3.
11665
11666Implemented batch mode option for the AcpiExec utility (-b).
11667
11668Code and Data Size: Current and previous core subsystem library sizes are
11669shown below. These are the code and data sizes for the acpica.lib
11670produced
11671by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11672any ACPI driver or OSPM code. The debug version of the code includes the
11673debug output trace mechanism and has a much larger code and data size.
11674Note
11675that these values will vary depending on the efficiency of the compiler
11676and
11677the compiler options used during generation.
11678
11679  Previous Release:
11680    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11681    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11682  Current Release:
11683    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
11684    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
11685
11686----------------------------------------
1168710 December 2004.  Summary of changes for version 20041210:
11688
11689ACPI 3.0 support is nearing completion in both the iASL compiler and the
11690ACPI CA core subsystem.
11691
116921) ACPI CA Core Subsystem:
11693
11694Fixed a problem in the ToDecimalString operator where the resulting
11695string
11696length was incorrectly calculated. The length is now calculated exactly,
11697eliminating incorrect AE_STRING_LIMIT exceptions.
11698
11699Fixed a problem in the ToHexString operator to allow a maximum 200
11700character
11701string to be produced.
11702
11703Fixed a problem in the internal string-to-buffer and buffer-to-buffer
11704copy
11705routine where the length of the resulting buffer was not truncated to the
11706new size (if the target buffer already existed).
11707
11708Code and Data Size: Current and previous core subsystem library sizes are
11709shown below. These are the code and data sizes for the acpica.lib
11710produced
11711by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11712any ACPI driver or OSPM code. The debug version of the code includes the
11713debug output trace mechanism and has a much larger code and data size.
11714Note
11715that these values will vary depending on the efficiency of the compiler
11716and
11717the compiler options used during generation.
11718
11719  Previous Release:
11720    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11721    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
11722  Current Release:
11723    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11724    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11725
11726
117272) iASL Compiler/Disassembler:
11728
11729Implemented the new ACPI 3.0 resource template macros - DWordSpace,
11730ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
11731Includes support in the disassembler.
11732
11733Implemented support for the new (ACPI 3.0) parameter to the Register
11734macro,
11735AccessSize.
11736
11737Fixed a problem where the _HE resource name for the Interrupt macro was
11738referencing bit 0 instead of bit 1.
11739
11740Implemented check for maximum 255 interrupts in the Interrupt macro.
11741
11742Fixed a problem with the predefined resource descriptor names where
11743incorrect AML code was generated if the offset within the resource buffer
11744was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
11745but did not update the surrounding package lengths.
11746
11747Changes to the Dma macro:  All channels within the channel list must be
11748in
11749the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
11750optional (default is BusMaster).
11751
11752Implemented check for maximum 7 data bytes for the VendorShort macro.
11753
11754The ReadWrite parameter is now optional for the Memory32 and similar
11755macros.
11756
11757----------------------------------------
1175803 December 2004.  Summary of changes for version 20041203:
11759
117601) ACPI CA Core Subsystem:
11761
11762The low-level field insertion/extraction code (exfldio) has been
11763completely
11764rewritten to eliminate unnecessary complexity, bugs, and boundary
11765conditions.
11766
11767Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
11768ToDecimalString
11769operators where the input operand could be inadvertently deleted if no
11770conversion was necessary (e.g., if the input to ToInteger was an Integer
11771object.)
11772
11773Fixed a problem with the ToDecimalString and ToHexString where an
11774incorrect
11775exception code was returned if the resulting string would be > 200 chars.
11776AE_STRING_LIMIT is now returned.
11777
11778Fixed a problem with the Concatenate operator where AE_OK was always
11779returned, even if the operation failed.
11780
11781Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
11782semaphores to be allocated.
11783
11784Code and Data Size: Current and previous core subsystem library sizes are
11785shown below. These are the code and data sizes for the acpica.lib
11786produced
11787by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11788any ACPI driver or OSPM code. The debug version of the code includes the
11789debug output trace mechanism and has a much larger code and data size.
11790Note
11791that these values will vary depending on the efficiency of the compiler
11792and
11793the compiler options used during generation.
11794
11795  Previous Release:
11796    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11797    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11798  Current Release:
11799    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11800    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
11801
11802
118032) iASL Compiler/Disassembler:
11804
11805Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
11806recently introduced in 20041119.
11807
11808Fixed a problem with the ToUUID macro where the upper nybble of each
11809buffer
11810byte was inadvertently set to zero.
11811
11812----------------------------------------
1181319 November 2004.  Summary of changes for version 20041119:
11814
118151) ACPI CA Core Subsystem:
11816
11817Fixed a problem in the internal ConvertToInteger routine where new
11818integers
11819were not truncated to 32 bits for 32-bit ACPI tables. This routine
11820converts
11821buffers and strings to integers.
11822
11823Implemented support to store a value to an Index() on a String object.
11824This
11825is an ACPI 2.0 feature that had not yet been implemented.
11826
11827Implemented new behavior for storing objects to individual package
11828elements
11829(via the Index() operator). The previous behavior was to invoke the
11830implicit
11831conversion rules if an object was already present at the index.  The new
11832behavior is to simply delete any existing object and directly store the
11833new
11834object. Although the ACPI specification seems unclear on this subject,
11835other
11836ACPI implementations behave in this manner.  (This is the root of the
11837AE_BAD_HEX_CONSTANT issue.)
11838
11839Modified the RSDP memory scan mechanism to support the extended checksum
11840for
11841ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
11842RSDP signature is found with a valid checksum.
11843
11844Code and Data Size: Current and previous core subsystem library sizes are
11845shown below. These are the code and data sizes for the acpica.lib
11846produced
11847by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11848any ACPI driver or OSPM code. The debug version of the code includes the
11849debug output trace mechanism and has a much larger code and data size.
11850Note
11851that these values will vary depending on the efficiency of the compiler
11852and
11853the compiler options used during generation.
11854
11855  Previous Release:
11856    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11857    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11858  Current Release:
11859    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11860    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11861
11862
118632) iASL Compiler/Disassembler:
11864
11865Fixed a missing semicolon in the aslcompiler.y file.
11866
11867----------------------------------------
1186805 November 2004.  Summary of changes for version 20041105:
11869
118701) ACPI CA Core Subsystem:
11871
11872Implemented support for FADT revision 2.  This was an interim table
11873(between
11874ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
11875
11876Implemented optional support to allow uninitialized LocalX and ArgX
11877variables in a control method.  The variables are initialized to an
11878Integer
11879object with a value of zero.  This support is enabled by setting the
11880AcpiGbl_EnableInterpreterSlack flag to TRUE.
11881
11882Implemented support for Integer objects for the SizeOf operator.  Either
118834
11884or 8 is returned, depending on the current integer size (32-bit or 64-
11885bit,
11886depending on the parent table revision).
11887
11888Fixed a problem in the implementation of the SizeOf and ObjectType
11889operators
11890where the operand was resolved to a value too early, causing incorrect
11891return values for some objects.
11892
11893Fixed some possible memory leaks during exceptional conditions.
11894
11895Code and Data Size: Current and previous core subsystem library sizes are
11896shown below. These are the code and data sizes for the acpica.lib
11897produced
11898by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11899any ACPI driver or OSPM code. The debug version of the code includes the
11900debug output trace mechanism and has a much larger code and data size.
11901Note
11902that these values will vary depending on the efficiency of the compiler
11903and
11904the compiler options used during generation.
11905
11906  Previous Release:
11907    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11908    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
11909  Current Release:
11910    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
11911    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
11912
11913
119142) iASL Compiler/Disassembler:
11915
11916Implemented support for all ACPI 3.0 reserved names and methods.
11917
11918Implemented all ACPI 3.0 grammar elements in the front-end, including
11919support for semicolons.
11920
11921Implemented the ACPI 3.0 Function() and ToUUID() macros
11922
11923Fixed a problem in the disassembler where a Scope() operator would not be
11924emitted properly if the target of the scope was in another table.
11925
11926----------------------------------------
1192715 October 2004.  Summary of changes for version 20041015:
11928
11929Note:  ACPI CA is currently undergoing an in-depth and complete formal
11930evaluation to test/verify the following areas. Other suggestions are
11931welcome. This will result in an increase in the frequency of releases and
11932the number of bug fixes in the next few months.
11933  - Functional tests for all ASL/AML operators
11934  - All implicit/explicit type conversions
11935  - Bit fields and operation regions
11936  - 64-bit math support and 32-bit-only "truncated" math support
11937  - Exceptional conditions, both compiler and interpreter
11938  - Dynamic object deletion and memory leaks
11939  - ACPI 3.0 support when implemented
11940  - External interfaces to the ACPI subsystem
11941
11942
119431) ACPI CA Core Subsystem:
11944
11945Fixed two alignment issues on 64-bit platforms - within debug statements
11946in
11947AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
11948Address
11949field within the non-aligned ACPI generic address structure.
11950
11951Fixed a problem in the Increment and Decrement operators where incorrect
11952operand resolution could result in the inadvertent modification of the
11953original integer when the integer is passed into another method as an
11954argument and the arg is then incremented/decremented.
11955
11956Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
11957bit
11958BCD number were truncated during conversion.
11959
11960Fixed a problem in the ToDecimal operator where the length of the
11961resulting
11962string could be set incorrectly too long if the input operand was a
11963Buffer
11964object.
11965
11966Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
11967(0)
11968within a buffer would prematurely terminate a compare between buffer
11969objects.
11970
11971Added a check for string overflow (>200 characters as per the ACPI
11972specification) during the Concatenate operator with two string operands.
11973
11974Code and Data Size: Current and previous core subsystem library sizes are
11975shown below. These are the code and data sizes for the acpica.lib
11976produced
11977by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11978any ACPI driver or OSPM code. The debug version of the code includes the
11979debug output trace mechanism and has a much larger code and data size.
11980Note
11981that these values will vary depending on the efficiency of the compiler
11982and
11983the compiler options used during generation.
11984
11985  Previous Release:
11986    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11987    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
11988  Current Release:
11989    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11990    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
11991
11992
11993
119942) iASL Compiler/Disassembler:
11995
11996Allow the use of the ObjectType operator on uninitialized Locals and Args
11997(returns 0 as per the ACPI specification).
11998
11999Fixed a problem where the compiler would fault if there was a syntax
12000error
12001in the FieldName of all of the various CreateXXXField operators.
12002
12003Disallow the use of lower case letters within the EISAID macro, as per
12004the
12005ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
12006Where
12007U is an uppercase letter and N is a hex digit.
12008
12009
12010----------------------------------------
1201106 October 2004.  Summary of changes for version 20041006:
12012
120131) ACPI CA Core Subsystem:
12014
12015Implemented support for the ACPI 3.0 Timer operator. This ASL function
12016implements a 64-bit timer with 100 nanosecond granularity.
12017
12018Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
12019implement the ACPI 3.0 Timer operator.  This allows the host OS to
12020implement
12021the timer with the best clock available. Also, it keeps the core
12022subsystem
12023out of the clock handling business, since the host OS (usually) performs
12024this function.
12025
12026Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
12027functions use a 64-bit address which is part of the packed ACPI Generic
12028Address Structure. Since the structure is non-aligned, the alignment
12029macros
12030are now used to extract the address to a local variable before use.
12031
12032Fixed a problem where the ToInteger operator assumed all input strings
12033were
12034hexadecimal. The operator now handles both decimal strings and hex
12035strings
12036(prefixed with "0x").
12037
12038Fixed a problem where the string length in the string object created as a
12039result of the internal ConvertToString procedure could be incorrect. This
12040potentially affected all implicit conversions and also the
12041ToDecimalString
12042and ToHexString operators.
12043
12044Fixed two problems in the ToString operator. If the length parameter was
12045zero, an incorrect string object was created and the value of the input
12046length parameter was inadvertently changed from zero to Ones.
12047
12048Fixed a problem where the optional ResourceSource string in the
12049ExtendedIRQ
12050resource macro was ignored.
12051
12052Simplified the interfaces to the internal division functions, reducing
12053code
12054size and complexity.
12055
12056Code and Data Size: Current and previous core subsystem library sizes are
12057shown below. These are the code and data sizes for the acpica.lib
12058produced
12059by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12060any ACPI driver or OSPM code. The debug version of the code includes the
12061debug output trace mechanism and has a much larger code and data size.
12062Note
12063that these values will vary depending on the efficiency of the compiler
12064and
12065the compiler options used during generation.
12066
12067  Previous Release:
12068    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
12069    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
12070  Current Release:
12071    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12072    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
12073
12074
120752) iASL Compiler/Disassembler:
12076
12077Implemented support for the ACPI 3.0 Timer operator.
12078
12079Fixed a problem where the Default() operator was inadvertently ignored in
12080a
12081Switch/Case block.  This was a problem in the translation of the Switch
12082statement to If...Else pairs.
12083
12084Added support to allow a standalone Return operator, with no parentheses
12085(or
12086operands).
12087
12088Fixed a problem with code generation for the ElseIf operator where the
12089translated Else...If parse tree was improperly constructed leading to the
12090loss of some code.
12091
12092----------------------------------------
1209322 September 2004.  Summary of changes for version 20040922:
12094
120951) ACPI CA Core Subsystem:
12096
12097Fixed a problem with the implementation of the LNot() operator where
12098"Ones"
12099was not returned for the TRUE case. Changed the code to return Ones
12100instead
12101of (!Arg) which was usually 1. This change affects iASL constant folding
12102for
12103this operator also.
12104
12105Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
12106not
12107initialized properly -- Now zero the entire buffer in this case where the
12108buffer already exists.
12109
12110Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
12111Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
12112related code considerably. This will require changes/updates to all OS
12113interface layers (OSLs.)
12114
12115Implemented a new external interface, AcpiInstallExceptionHandler, to
12116allow
12117a system exception handler to be installed. This handler is invoked upon
12118any
12119run-time exception that occurs during control method execution.
12120
12121Added support for the DSDT in AcpiTbFindTable. This allows the
12122DataTableRegion() operator to access the local copy of the DSDT.
12123
12124Code and Data Size: Current and previous core subsystem library sizes are
12125shown below. These are the code and data sizes for the acpica.lib
12126produced
12127by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12128any ACPI driver or OSPM code. The debug version of the code includes the
12129debug output trace mechanism and has a much larger code and data size.
12130Note
12131that these values will vary depending on the efficiency of the compiler
12132and
12133the compiler options used during generation.
12134
12135  Previous Release:
12136    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
12137    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12138  Current Release:
12139    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
12140    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
12141
12142
121432) iASL Compiler/Disassembler:
12144
12145Fixed a problem with constant folding and the LNot operator. LNot was
12146returning 1 in the TRUE case, not Ones as per the ACPI specification.
12147This
12148could result in the generation of an incorrect folded/reduced constant.
12149
12150End-Of-File is now allowed within a "//"-style comment.  A parse error no
12151longer occurs if such a comment is at the very end of the input ASL
12152source
12153file.
12154
12155Implemented the "-r" option to override the Revision in the table header.
12156The initial use of this option will be to simplify the evaluation of the
12157AML
12158interpreter by allowing a single ASL source module to be compiled for
12159either
1216032-bit or 64-bit integers.
12161
12162
12163----------------------------------------
1216427 August 2004.  Summary of changes for version 20040827:
12165
121661) ACPI CA Core Subsystem:
12167
12168- Implemented support for implicit object conversion in the non-numeric
12169logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
12170and
12171LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
12172the second operand is implicitly converted on the fly to match the type
12173of
12174the first operand.  For example:
12175
12176    LEqual (Source1, Source2)
12177
12178Source1 and Source2 must each evaluate to an integer, a string, or a
12179buffer.
12180The data type of Source1 dictates the required type of Source2. Source2
12181is
12182implicitly converted if necessary to match the type of Source1.
12183
12184- Updated and corrected the behavior of the string conversion support.
12185The
12186rules concerning conversion of buffers to strings (according to the ACPI
12187specification) are as follows:
12188
12189ToDecimalString - explicit byte-wise conversion of buffer to string of
12190decimal values (0-255) separated by commas. ToHexString - explicit byte-
12191wise
12192conversion of buffer to string of hex values (0-FF) separated by commas.
12193ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
12194byte
12195copy with no transform except NULL terminated. Any other implicit buffer-
12196to-
12197string conversion - byte-wise conversion of buffer to string of hex
12198values
12199(0-FF) separated by spaces.
12200
12201- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
12202
12203- Fixed a problem in AcpiNsGetPathnameLength where the returned length
12204was
12205one byte too short in the case of a node in the root scope.  This could
12206cause a fault during debug output.
12207
12208- Code and Data Size: Current and previous core subsystem library sizes
12209are
12210shown below.  These are the code and data sizes for the acpica.lib
12211produced
12212by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12213any ACPI driver or OSPM code.  The debug version of the code includes the
12214debug output trace mechanism and has a much larger code and data size.
12215Note
12216that these values will vary depending on the efficiency of the compiler
12217and
12218the compiler options used during generation.
12219
12220  Previous Release:
12221    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
12222    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
12223  Current Release:
12224    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
12225    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12226
12227
122282) iASL Compiler/Disassembler:
12229
12230- Fixed a Linux generation error.
12231
12232
12233----------------------------------------
1223416 August 2004.  Summary of changes for version 20040816:
12235
122361) ACPI CA Core Subsystem:
12237
12238Designed and implemented support within the AML interpreter for the so-
12239called "implicit return".  This support returns the result of the last
12240ASL
12241operation within a control method, in the absence of an explicit Return()
12242operator.  A few machines depend on this behavior, even though it is not
12243explicitly supported by the ASL language.  It is optional support that
12244can
12245be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
12246
12247Removed support for the PCI_Config address space from the internal low
12248level
12249hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
12250support was not used internally, and would not work correctly anyway
12251because
12252the PCI bus number and segment number were not supported.  There are
12253separate interfaces for PCI configuration space access because of the
12254unique
12255interface.
12256
12257Code and Data Size: Current and previous core subsystem library sizes are
12258shown below.  These are the code and data sizes for the acpica.lib
12259produced
12260by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12261any ACPI driver or OSPM code.  The debug version of the code includes the
12262debug output trace mechanism and has a much larger code and data size.
12263Note
12264that these values will vary depending on the efficiency of the compiler
12265and
12266the compiler options used during generation.
12267
12268  Previous Release:
12269    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12270    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
12271  Current Release:
12272    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
12273    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
12274
12275
122762) iASL Compiler/Disassembler:
12277
12278Fixed a problem where constants in ASL expressions at the root level (not
12279within a control method) could be inadvertently truncated during code
12280generation.  This problem was introduced in the 20040715 release.
12281
12282
12283----------------------------------------
1228415 July 2004.  Summary of changes for version 20040715:
12285
122861) ACPI CA Core Subsystem:
12287
12288Restructured the internal HW GPE interfaces to pass/track the current
12289state
12290of interrupts (enabled/disabled) in order to avoid possible deadlock and
12291increase flexibility of the interfaces.
12292
12293Implemented a "lexicographical compare" for String and Buffer objects
12294within
12295the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
12296-
12297as per further clarification to the ACPI specification.  Behavior is
12298similar
12299to C library "strcmp".
12300
12301Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
12302external function.  In the 32-bit non-debug case, the stack use has been
12303reduced from 168 bytes to 32 bytes.
12304
12305Deployed a new run-time configuration flag,
12306AcpiGbl_EnableInterpreterSlack,
12307whose purpose is to allow the AML interpreter to forgive certain bad AML
12308constructs.  Default setting is FALSE.
12309
12310Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
12311IO
12312support code.  If enabled, it allows field access to go beyond the end of
12313a
12314region definition if the field is within the region length rounded up to
12315the
12316next access width boundary (a common coding error.)
12317
12318Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
12319ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
12320these
12321symbols are lowercased by the latest version of the AcpiSrc tool.
12322
12323The prototypes for the PCI interfaces in acpiosxf.h have been updated to
12324rename "Register" to simply "Reg" to prevent certain compilers from
12325complaining.
12326
12327Code and Data Size: Current and previous core subsystem library sizes are
12328shown below.  These are the code and data sizes for the acpica.lib
12329produced
12330by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12331any ACPI driver or OSPM code.  The debug version of the code includes the
12332debug output trace mechanism and has a much larger code and data size.
12333Note
12334that these values will vary depending on the efficiency of the compiler
12335and
12336the compiler options used during generation.
12337
12338  Previous Release:
12339    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12340    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
12341  Current Release:
12342    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12343    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
12344
12345
123462) iASL Compiler/Disassembler:
12347
12348Implemented full support for Package objects within the Case() operator.
12349Note: The Break() operator is currently not supported within Case blocks
12350(TermLists) as there is some question about backward compatibility with
12351ACPI
123521.0 interpreters.
12353
12354
12355Fixed a problem where complex terms were not supported properly within
12356the
12357Switch() operator.
12358
12359Eliminated extraneous warning for compiler-emitted reserved names of the
12360form "_T_x".  (Used in Switch/Case operators.)
12361
12362Eliminated optimization messages for "_T_x" objects and small constants
12363within the DefinitionBlock operator.
12364
12365
12366----------------------------------------
1236715 June 2004.  Summary of changes for version 20040615:
12368
123691) ACPI CA Core Subsystem:
12370
12371Implemented support for Buffer and String objects (as per ACPI 2.0) for
12372the
12373following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
12374LLessEqual.
12375
12376All directory names in the entire source package are lower case, as they
12377were in earlier releases.
12378
12379Implemented "Disassemble" command in the AML debugger that will
12380disassemble
12381a single control method.
12382
12383Code and Data Size: Current and previous core subsystem library sizes are
12384shown below.  These are the code and data sizes for the acpica.lib
12385produced
12386by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12387any ACPI driver or OSPM code.  The debug version of the code includes the
12388debug output trace mechanism and has a much larger code and data size.
12389Note
12390that these values will vary depending on the efficiency of the compiler
12391and
12392the compiler options used during generation.
12393
12394  Previous Release:
12395    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
12396    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
12397
12398  Current Release:
12399    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12400    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
12401
12402
124032) iASL Compiler/Disassembler:
12404
12405Implemented support for Buffer and String objects (as per ACPI 2.0) for
12406the
12407following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
12408LLessEqual.
12409
12410All directory names in the entire source package are lower case, as they
12411were in earlier releases.
12412
12413Fixed a fault when using the -g or -d<nofilename> options if the FADT was
12414not found.
12415
12416Fixed an issue with the Windows version of the compiler where later
12417versions
12418of Windows place the FADT in the registry under the name "FADT" and not
12419"FACP" as earlier versions did.  This applies when using the -g or -
12420d<nofilename> options.  The compiler now looks for both strings as
12421necessary.
12422
12423Fixed a problem with compiler namepath optimization where a namepath
12424within
12425the Scope() operator could not be optimized if the namepath was a subpath
12426of
12427the current scope path.
12428
12429----------------------------------------
1243027 May 2004.  Summary of changes for version 20040527:
12431
124321) ACPI CA Core Subsystem:
12433
12434Completed a new design and implementation for EBDA (Extended BIOS Data
12435Area)
12436support in the RSDP scan code.  The original code improperly scanned for
12437the
12438EBDA by simply scanning from memory location 0 to 0x400.  The correct
12439method
12440is to first obtain the EBDA pointer from within the BIOS data area, then
12441scan 1K of memory starting at the EBDA pointer.  There appear to be few
12442if
12443any machines that place the RSDP in the EBDA, however.
12444
12445Integrated a fix for a possible fault during evaluation of BufferField
12446arguments.  Obsolete code that was causing the problem was removed.
12447
12448Found and fixed a problem in the Field Support Code where data could be
12449corrupted on a bit field read that starts on an aligned boundary but does
12450not end on an aligned boundary.  Merged the read/write "datum length"
12451calculation code into a common procedure.
12452
12453Rolled in a couple of changes to the FreeBSD-specific header.
12454
12455
12456Code and Data Size: Current and previous core subsystem library sizes are
12457shown below.  These are the code and data sizes for the acpica.lib
12458produced
12459by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12460any ACPI driver or OSPM code.  The debug version of the code includes the
12461debug output trace mechanism and has a much larger code and data size.
12462Note
12463that these values will vary depending on the efficiency of the compiler
12464and
12465the compiler options used during generation.
12466
12467  Previous Release:
12468    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12469    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
12470  Current Release:
12471    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
12472    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
12473
12474
124752) iASL Compiler/Disassembler:
12476
12477Fixed a generation warning produced by some overly-verbose compilers for
12478a
1247964-bit constant.
12480
12481----------------------------------------
1248214 May 2004.  Summary of changes for version 20040514:
12483
124841) ACPI CA Core Subsystem:
12485
12486Fixed a problem where hardware GPE enable bits sometimes not set properly
12487during and after GPE method execution.  Result of 04/27 changes.
12488
12489Removed extra "clear all GPEs" when sleeping/waking.
12490
12491Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
12492AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
12493to
12494the new AcpiEv* calls as appropriate.
12495
12496ACPI_OS_NAME was removed from the OS-specific headers.  The default name
12497is
12498now "Microsoft Windows NT" for maximum compatibility.  However this can
12499be
12500changed by modifying the acconfig.h file.
12501
12502Allow a single invocation of AcpiInstallNotifyHandler for a handler that
12503traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
12504
12505Run _INI methods on ThermalZone objects.  This is against the ACPI
12506specification, but there is apparently ASL code in the field that has
12507these
12508_INI methods, and apparently "other" AML interpreters execute them.
12509
12510Performed a full 16/32/64 bit lint that resulted in some small changes.
12511
12512Added a sleep simulation command to the AML debugger to test sleep code.
12513
12514Code and Data Size: Current and previous core subsystem library sizes are
12515shown below.  These are the code and data sizes for the acpica.lib
12516produced
12517by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12518any ACPI driver or OSPM code.  The debug version of the code includes the
12519debug output trace mechanism and has a much larger code and data size.
12520Note
12521that these values will vary depending on the efficiency of the compiler
12522and
12523the compiler options used during generation.
12524
12525  Previous Release:
12526    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12527    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
12528  Current Release:
12529    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12530    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
12531
12532----------------------------------------
1253327 April 2004.  Summary of changes for version 20040427:
12534
125351) ACPI CA Core Subsystem:
12536
12537Completed a major overhaul of the GPE handling within ACPI CA.  There are
12538now three types of GPEs:  wake-only, runtime-only, and combination
12539wake/run.
12540The only GPEs allowed to be combination wake/run are for button-style
12541devices such as a control-method power button, control-method sleep
12542button,
12543or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
12544not
12545referenced by any _PRW methods are marked for "runtime" and hardware
12546enabled.  Any GPE that is referenced by a _PRW method is marked for
12547"wake"
12548(and disabled at runtime).  However, at sleep time, only those GPEs that
12549have been specifically enabled for wake via the AcpiEnableGpe interface
12550will
12551actually be hardware enabled.
12552
12553A new external interface has been added, AcpiSetGpeType(), that is meant
12554to
12555be used by device drivers to force a GPE to a particular type.  It will
12556be
12557especially useful for the drivers for the button devices mentioned above.
12558
12559Completed restructuring of the ACPI CA initialization sequence so that
12560default operation region handlers are installed before GPEs are
12561initialized
12562and the _PRW methods are executed.  This will prevent errors when the
12563_PRW
12564methods attempt to access system memory or I/O space.
12565
12566GPE enable/disable no longer reads the GPE enable register.  We now keep
12567the
12568enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
12569thus no longer depend on the hardware to maintain these bits.
12570
12571Always clear the wake status and fixed/GPE status bits before sleep, even
12572for state S5.
12573
12574Improved the AML debugger output for displaying the GPE blocks and their
12575current status.
12576
12577Added new strings for the _OSI method, of the form "Windows 2001 SPx"
12578where
12579x = 0,1,2,3,4.
12580
12581Fixed a problem where the physical address was incorrectly calculated
12582when
12583the Load() operator was used to directly load from an Operation Region
12584(vs.
12585loading from a Field object.)  Also added check for minimum table length
12586for
12587this case.
12588
12589Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
12590mutex release.
12591
12592Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
12593consistency with the other fields returned.
12594
12595Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
12596structure for each GPE in the system, so the size of this structure is
12597important.
12598
12599CPU stack requirement reduction:  Cleaned up the method execution and
12600object
12601evaluation paths so that now a parameter structure is passed, instead of
12602copying the various method parameters over and over again.
12603
12604In evregion.c:  Correctly exit and reenter the interpreter region if and
12605only if dispatching an operation region request to a user-installed
12606handler.
12607Do not exit/reenter when dispatching to a default handler (e.g., default
12608system memory or I/O handlers)
12609
12610
12611Notes for updating drivers for the new GPE support.  The following
12612changes
12613must be made to ACPI-related device drivers that are attached to one or
12614more
12615GPEs: (This information will be added to the ACPI CA Programmer
12616Reference.)
12617
126181) AcpiInstallGpeHandler no longer automatically enables the GPE, you
12619must
12620explicitly call AcpiEnableGpe.
126212) There is a new interface called AcpiSetGpeType. This should be called
12622before enabling the GPE.  Also, this interface will automatically disable
12623the GPE if it is currently enabled.
126243) AcpiEnableGpe no longer supports a GPE type flag.
12625
12626Specific drivers that must be changed:
126271) EC driver:
12628    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
12629AeGpeHandler, NULL);
12630    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
12631    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
12632
126332) Button Drivers (Power, Lid, Sleep):
12634Run _PRW method under parent device
12635If _PRW exists: /* This is a control-method button */
12636    Extract GPE number and possibly GpeDevice
12637    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
12638    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
12639
12640For all other devices that have _PRWs, we automatically set the GPE type
12641to
12642ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
12643This
12644must be done on a selective basis, usually requiring some kind of user
12645app
12646to allow the user to pick the wake devices.
12647
12648
12649Code and Data Size: Current and previous core subsystem library sizes are
12650shown below.  These are the code and data sizes for the acpica.lib
12651produced
12652by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12653any ACPI driver or OSPM code.  The debug version of the code includes the
12654debug output trace mechanism and has a much larger code and data size.
12655Note
12656that these values will vary depending on the efficiency of the compiler
12657and
12658the compiler options used during generation.
12659
12660  Previous Release:
12661    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12662    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12663  Current Release:
12664
12665    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12666    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
12667
12668
12669
12670----------------------------------------
1267102 April 2004.  Summary of changes for version 20040402:
12672
126731) ACPI CA Core Subsystem:
12674
12675Fixed an interpreter problem where an indirect store through an ArgX
12676parameter was incorrectly applying the "implicit conversion rules" during
12677the store.  From the ACPI specification: "If the target is a method local
12678or
12679argument (LocalX or ArgX), no conversion is performed and the result is
12680stored directly to the target".  The new behavior is to disable implicit
12681conversion during ALL stores to an ArgX.
12682
12683Changed the behavior of the _PRW method scan to ignore any and all errors
12684returned by a given _PRW.  This prevents the scan from aborting from the
12685failure of any single _PRW.
12686
12687Moved the runtime configuration parameters from the global init procedure
12688to
12689static variables in acglobal.h.  This will allow the host to override the
12690default values easily.
12691
12692Code and Data Size: Current and previous core subsystem library sizes are
12693shown below.  These are the code and data sizes for the acpica.lib
12694produced
12695by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12696any ACPI driver or OSPM code.  The debug version of the code includes the
12697debug output trace mechanism and has a much larger code and data size.
12698Note
12699that these values will vary depending on the efficiency of the compiler
12700and
12701the compiler options used during generation.
12702
12703  Previous Release:
12704    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
12705    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
12706  Current Release:
12707    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12708    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12709
12710
127112) iASL Compiler/Disassembler:
12712
12713iASL now fully disassembles SSDTs.  However, External() statements are
12714not
12715generated automatically for unresolved symbols at this time.  This is a
12716planned feature for future implementation.
12717
12718Fixed a scoping problem in the disassembler that occurs when the type of
12719the
12720target of a Scope() operator is overridden.  This problem caused an
12721incorrectly nested internal namespace to be constructed.
12722
12723Any warnings or errors that are emitted during disassembly are now
12724commented
12725out automatically so that the resulting file can be recompiled without
12726any
12727hand editing.
12728
12729----------------------------------------
1273026 March 2004.  Summary of changes for version 20040326:
12731
127321) ACPI CA Core Subsystem:
12733
12734Implemented support for "wake" GPEs via interaction between GPEs and the
12735_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
12736identified as a WAKE GPE and by default will no longer be enabled at
12737runtime.  Previously, we were blindly enabling all GPEs with a
12738corresponding
12739_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
12740We
12741believe this has been the cause of thousands of "spurious" GPEs on some
12742systems.
12743
12744This new GPE behavior is can be reverted to the original behavior (enable
12745ALL GPEs at runtime) via a runtime flag.
12746
12747Fixed a problem where aliased control methods could not access objects
12748properly.  The proper scope within the namespace was not initialized
12749(transferred to the target of the aliased method) before executing the
12750target method.
12751
12752Fixed a potential race condition on internal object deletion on the
12753return
12754object in AcpiEvaluateObject.
12755
12756Integrated a fix for resource descriptors where both _MEM and _MTP were
12757being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
12758wide, 0x0F instead of 0x03.)
12759
12760Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
12761preventing
12762a
12763fault in some cases.
12764
12765Updated Notify() values for debug statements in evmisc.c
12766
12767Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
12768
12769Code and Data Size: Current and previous core subsystem library sizes are
12770shown below.  These are the code and data sizes for the acpica.lib
12771produced
12772by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12773any ACPI driver or OSPM code.  The debug version of the code includes the
12774debug output trace mechanism and has a much larger code and data size.
12775Note
12776that these values will vary depending on the efficiency of the compiler
12777and
12778the compiler options used during generation.
12779
12780  Previous Release:
12781
12782    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
12783    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
12784  Current Release:
12785    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
12786    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
12787
12788----------------------------------------
1278911 March 2004.  Summary of changes for version 20040311:
12790
127911) ACPI CA Core Subsystem:
12792
12793Fixed a problem where errors occurring during the parse phase of control
12794method execution did not abort cleanly.  For example, objects created and
12795installed in the namespace were not deleted.  This caused all subsequent
12796invocations of the method to return the AE_ALREADY_EXISTS exception.
12797
12798Implemented a mechanism to force a control method to "Serialized"
12799execution
12800if the method attempts to create namespace objects. (The root of the
12801AE_ALREADY_EXISTS problem.)
12802
12803Implemented support for the predefined _OSI "internal" control method.
12804Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
12805and
12806"Windows 2001.1", and can be easily upgraded for new strings as
12807necessary.
12808This feature will allow "other" operating systems to execute the fully
12809tested, "Windows" code path through the ASL code
12810
12811Global Lock Support:  Now allows multiple acquires and releases with any
12812internal thread.  Removed concept of "owning thread" for this special
12813mutex.
12814
12815Fixed two functions that were inappropriately declaring large objects on
12816the
12817CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
12818during
12819method execution considerably.
12820
12821Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
12822S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
12823
12824Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
12825defined on the machine.
12826
12827Implemented two runtime options:  One to force all control method
12828execution
12829to "Serialized" to mimic Windows behavior, another to disable _OSI
12830support
12831if it causes problems on a given machine.
12832
12833Code and Data Size: Current and previous core subsystem library sizes are
12834shown below.  These are the code and data sizes for the acpica.lib
12835produced
12836by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12837any ACPI driver or OSPM code.  The debug version of the code includes the
12838debug output trace mechanism and has a much larger code and data size.
12839Note
12840that these values will vary depending on the efficiency of the compiler
12841and
12842the compiler options used during generation.
12843
12844  Previous Release:
12845    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
12846    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
12847  Current Release:
12848    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
12849    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
12850
128512) iASL Compiler/Disassembler:
12852
12853Fixed an array size problem for FreeBSD that would cause the compiler to
12854fault.
12855
12856----------------------------------------
1285720 February 2004.  Summary of changes for version 20040220:
12858
12859
128601) ACPI CA Core Subsystem:
12861
12862Implemented execution of _SxD methods for Device objects in the
12863GetObjectInfo interface.
12864
12865Fixed calls to _SST method to pass the correct arguments.
12866
12867Added a call to _SST on wake to restore to "working" state.
12868
12869Check for End-Of-Buffer failure case in the WalkResources interface.
12870
12871Integrated fix for 64-bit alignment issue in acglobal.h by moving two
12872structures to the beginning of the file.
12873
12874After wake, clear GPE status register(s) before enabling GPEs.
12875
12876After wake, clear/enable power button.  (Perhaps we should clear/enable
12877all
12878fixed events upon wake.)
12879
12880Fixed a couple of possible memory leaks in the Namespace manager.
12881
12882Integrated latest acnetbsd.h file.
12883
12884----------------------------------------
1288511 February 2004.  Summary of changes for version 20040211:
12886
12887
128881) ACPI CA Core Subsystem:
12889
12890Completed investigation and implementation of the call-by-reference
12891mechanism for control method arguments.
12892
12893Fixed a problem where a store of an object into an indexed package could
12894fail if the store occurs within a different method than the method that
12895created the package.
12896
12897Fixed a problem where the ToDecimal operator could return incorrect
12898results.
12899
12900Fixed a problem where the CopyObject operator could fail on some of the
12901more
12902obscure objects (e.g., Reference objects.)
12903
12904Improved the output of the Debug object to display buffer, package, and
12905index objects.
12906
12907Fixed a problem where constructs of the form "RefOf (ArgX)" did not
12908return
12909the expected result.
12910
12911Added permanent ACPI_REPORT_ERROR macros for all instances of the
12912ACPI_AML_INTERNAL exception.
12913
12914Integrated latest version of acfreebsd.h
12915
12916----------------------------------------
1291716 January 2004.  Summary of changes for version 20040116:
12918
12919The purpose of this release is primarily to update the copyright years in
12920each module, thus causing a huge number of diffs.  There are a few small
12921functional changes, however.
12922
129231) ACPI CA Core Subsystem:
12924
12925Improved error messages when there is a problem finding one or more of
12926the
12927required base ACPI tables
12928
12929Reintroduced the definition of APIC_HEADER in actbl.h
12930
12931Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
12932
12933Removed extraneous reference to NewObj in dsmthdat.c
12934
129352) iASL compiler
12936
12937Fixed a problem introduced in December that disabled the correct
12938disassembly
12939of Resource Templates
12940
12941
12942----------------------------------------
1294303 December 2003.  Summary of changes for version 20031203:
12944
129451) ACPI CA Core Subsystem:
12946
12947Changed the initialization of Operation Regions during subsystem
12948init to perform two entire walks of the ACPI namespace; The first
12949to initialize the regions themselves, the second to execute the
12950_REG methods.  This fixed some interdependencies across _REG
12951methods found on some machines.
12952
12953Fixed a problem where a Store(Local0, Local1) could simply update
12954the object reference count, and not create a new copy of the
12955object if the Local1 is uninitialized.
12956
12957Implemented support for the _SST reserved method during sleep
12958transitions.
12959
12960Implemented support to clear the SLP_TYP and SLP_EN bits when
12961waking up, this is apparently required by some machines.
12962
12963When sleeping, clear the wake status only if SleepState is not S5.
12964
12965Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
12966pointer arithmetic advanced a string pointer too far.
12967
12968Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
12969could be returned if the requested table has not been loaded.
12970
12971Within the support for IRQ resources, restructured the handling of
12972the active and edge/level bits.
12973
12974Fixed a few problems in AcpiPsxExecute() where memory could be
12975leaked under certain error conditions.
12976
12977Improved error messages for the cases where the ACPI mode could
12978not be entered.
12979
12980Code and Data Size: Current and previous core subsystem library
12981sizes are shown below.  These are the code and data sizes for the
12982acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12983these values do not include any ACPI driver or OSPM code.  The
12984debug version of the code includes the debug output trace
12985mechanism and has a much larger code and data size.  Note that
12986these values will vary depending on the efficiency of the compiler
12987and the compiler options used during generation.
12988
12989  Previous Release (20031029):
12990    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
12991    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
12992  Current Release:
12993    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
12994    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
12995
129962) iASL Compiler/Disassembler:
12997
12998Implemented a fix for the iASL disassembler where a bad index was
12999generated.  This was most noticeable on 64-bit platforms
13000
13001
13002----------------------------------------
1300329 October 2003.  Summary of changes for version 20031029:
13004
130051) ACPI CA Core Subsystem:
13006
13007
13008Fixed a problem where a level-triggered GPE with an associated
13009_Lxx control method was incorrectly cleared twice.
13010
13011Fixed a problem with the Field support code where an access can
13012occur beyond the end-of-region if the field is non-aligned but
13013extends to the very end of the parent region (resulted in an
13014AE_AML_REGION_LIMIT exception.)
13015
13016Fixed a problem with ACPI Fixed Events where an RT Clock handler
13017would not get invoked on an RTC event.  The RTC event bitmasks for
13018the PM1 registers were not being initialized properly.
13019
13020Implemented support for executing _STA and _INI methods for
13021Processor objects.  Although this is currently not part of the
13022ACPI specification, there is existing ASL code that depends on the
13023init-time execution of these methods.
13024
13025Implemented and deployed a GetDescriptorName function to decode
13026the various types of internal descriptors.  Guards against null
13027descriptors during debug output also.
13028
13029Implemented and deployed a GetNodeName function to extract the 4-
13030character namespace node name.  This function simplifies the debug
13031and error output, as well as guarding against null pointers during
13032output.
13033
13034Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
13035simplify the debug and error output of 64-bit integers.  This
13036macro replaces the HIDWORD and LODWORD macros for dumping these
13037integers.
13038
13039Updated the implementation of the Stall() operator to only call
13040AcpiOsStall(), and also return an error if the operand is larger
13041than 255.  This preserves the required behavior of not
13042relinquishing the processor, as would happen if AcpiOsSleep() was
13043called for "long stalls".
13044
13045Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
13046initialized are now treated as NOOPs.
13047
13048Cleaned up a handful of warnings during 64-bit generation.
13049
13050Fixed a reported error where and incorrect GPE number was passed
13051to the GPE dispatch handler.  This value is only used for error
13052output, however.  Used this opportunity to clean up and streamline
13053the GPE dispatch code.
13054
13055Code and Data Size: Current and previous core subsystem library
13056sizes are shown below.  These are the code and data sizes for the
13057acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13058these values do not include any ACPI driver or OSPM code.  The
13059
13060debug version of the code includes the debug output trace
13061mechanism and has a much larger code and data size.  Note that
13062these values will vary depending on the efficiency of the compiler
13063and the compiler options used during generation.
13064
13065  Previous Release (20031002):
13066    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
13067    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
13068  Current Release:
13069    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
13070    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
13071
13072
130732) iASL Compiler/Disassembler:
13074
13075Updated the iASL compiler to return an error if the operand to the
13076Stall() operator is larger than 255.
13077
13078
13079----------------------------------------
1308002 October 2003.  Summary of changes for version 20031002:
13081
13082
130831) ACPI CA Core Subsystem:
13084
13085Fixed a problem with Index Fields where the index was not
13086incremented for fields that require multiple writes to the
13087index/data registers (Fields that are wider than the data
13088register.)
13089
13090Fixed a problem with all Field objects where a write could go
13091beyond the end-of-field if the field was larger than the access
13092granularity and therefore required multiple writes to complete the
13093request.  An extra write beyond the end of the field could happen
13094inadvertently.
13095
13096Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
13097would incorrectly be returned if the width of the Data Register
13098was larger than the specified field access width.
13099
13100Completed fixes for LoadTable() and Unload() and verified their
13101operation.  Implemented full support for the "DdbHandle" object
13102throughout the ACPI CA subsystem.
13103
13104Implemented full support for the MADT and ECDT tables in the ACPI
13105CA header files.  Even though these tables are not directly
13106consumed by ACPI CA, the header definitions are useful for ACPI
13107device drivers.
13108
13109Integrated resource descriptor fixes posted to the Linux ACPI
13110list.  This included checks for minimum descriptor length, and
13111support for trailing NULL strings within descriptors that have
13112optional string elements.
13113
13114Code and Data Size: Current and previous core subsystem library
13115sizes are shown below.  These are the code and data sizes for the
13116acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13117these values do not include any ACPI driver or OSPM code.  The
13118debug version of the code includes the debug output trace
13119mechanism and has a much larger code and data size.  Note that
13120these values will vary depending on the efficiency of the compiler
13121and the compiler options used during generation.
13122
13123  Previous Release (20030918):
13124    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13125    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13126  Current Release:
13127    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
13128    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
13129
13130
131312) iASL Compiler:
13132
13133Implemented detection of non-ASCII characters within the input
13134source ASL file.  This catches attempts to compile binary (AML)
13135files early in the compile, with an informative error message.
13136
13137Fixed a problem where the disassembler would fault if the output
13138filename could not be generated or if the output file could not be
13139opened.
13140
13141----------------------------------------
1314218 September 2003.  Summary of changes for version 20030918:
13143
13144
131451) ACPI CA Core Subsystem:
13146
13147Found and fixed a longstanding problem with the late execution of
13148the various deferred AML opcodes (such as Operation Regions,
13149Buffer Fields, Buffers, and Packages).  If the name string
13150specified for the name of the new object placed the object in a
13151scope other than the current scope, the initialization/execution
13152of the opcode failed.  The solution to this problem was to
13153implement a mechanism where the late execution of such opcodes
13154does not attempt to lookup/create the name a second time in an
13155incorrect scope.  This fixes the "region size computed
13156incorrectly" problem.
13157
13158Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
13159Global Lock AE_BAD_PARAMETER error.
13160
13161Fixed several 64-bit issues with prototypes, casting and data
13162types.
13163
13164Removed duplicate prototype from acdisasm.h
13165
13166Fixed an issue involving EC Operation Region Detach (Shaohua Li)
13167
13168Code and Data Size: Current and previous core subsystem library
13169sizes are shown below.  These are the code and data sizes for the
13170acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13171these values do not include any ACPI driver or OSPM code.  The
13172debug version of the code includes the debug output trace
13173mechanism and has a much larger code and data size.  Note that
13174these values will vary depending on the efficiency of the compiler
13175and the compiler options used during generation.
13176
13177  Previous Release:
13178
13179    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
13180    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
13181  Current Release:
13182    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13183    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13184
13185
131862) Linux:
13187
13188Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
13189correct sleep time in seconds.
13190
13191----------------------------------------
1319214 July 2003.  Summary of changes for version 20030619:
13193
131941) ACPI CA Core Subsystem:
13195
13196Parse SSDTs in order discovered, as opposed to reverse order
13197(Hrvoje Habjanic)
13198
13199Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
13200Klausner,
13201   Nate Lawson)
13202
13203
132042) Linux:
13205
13206Dynamically allocate SDT list (suggested by Andi Kleen)
13207
13208proc function return value cleanups (Andi Kleen)
13209
13210Correctly handle NMI watchdog during long stalls (Andrew Morton)
13211
13212Make it so acpismp=force works (reported by Andrew Morton)
13213
13214
13215----------------------------------------
1321619 June 2003.  Summary of changes for version 20030619:
13217
132181) ACPI CA Core Subsystem:
13219
13220Fix To/FromBCD, eliminating the need for an arch-specific #define.
13221
13222Do not acquire a semaphore in the S5 shutdown path.
13223
13224Fix ex_digits_needed for 0. (Takayoshi Kochi)
13225
13226Fix sleep/stall code reversal. (Andi Kleen)
13227
13228Revert a change having to do with control method calling
13229semantics.
13230
132312) Linux:
13232
13233acpiphp update (Takayoshi Kochi)
13234
13235Export acpi_disabled for sonypi (Stelian Pop)
13236
13237Mention acpismp=force in config help
13238
13239Re-add acpitable.c and acpismp=force. This improves backwards
13240
13241compatibility and also cleans up the code to a significant degree.
13242
13243Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
13244
13245----------------------------------------
1324622 May 2003.  Summary of changes for version 20030522:
13247
132481) ACPI CA Core Subsystem:
13249
13250Found and fixed a reported problem where an AE_NOT_FOUND error
13251occurred occasionally during _BST evaluation.  This turned out to
13252be an Owner ID allocation issue where a called method did not get
13253a new ID assigned to it.  Eventually, (after 64k calls), the Owner
13254ID UINT16 would wraparound so that the ID would be the same as the
13255caller's and the called method would delete the caller's
13256namespace.
13257
13258Implemented extended error reporting for control methods that are
13259aborted due to a run-time exception.  Output includes the exact
13260AML instruction that caused the method abort, a dump of the method
13261locals and arguments at the time of the abort, and a trace of all
13262nested control method calls.
13263
13264Modified the interpreter to allow the creation of buffers of zero
13265length from the AML code. Implemented new code to ensure that no
13266attempt is made to actually allocate a memory buffer (of length
13267zero) - instead, a simple buffer object with a NULL buffer pointer
13268and length zero is created.  A warning is no longer issued when
13269the AML attempts to create a zero-length buffer.
13270
13271Implemented a workaround for the "leading asterisk issue" in
13272_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
13273asterisk is automatically removed if present in any HID, UID, or
13274CID strings.  The iASL compiler will still flag this asterisk as
13275an error, however.
13276
13277Implemented full support for _CID methods that return a package of
13278multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
13279now additionally returns a device _CID list if present.  This
13280required a change to the external interface in order to pass an
13281ACPI_BUFFER object as a parameter since the _CID list is of
13282variable length.
13283
13284Fixed a problem with the new AE_SAME_HANDLER exception where
13285handler initialization code did not know about this exception.
13286
13287Code and Data Size: Current and previous core subsystem library
13288sizes are shown below.  These are the code and data sizes for the
13289acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13290these values do not include any ACPI driver or OSPM code.  The
13291debug version of the code includes the debug output trace
13292mechanism and has a much larger code and data size.  Note that
13293these values will vary depending on the efficiency of the compiler
13294and the compiler options used during generation.
13295
13296  Previous Release (20030509):
13297    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
13298    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
13299  Current Release:
13300    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
13301    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
13302
13303
133042) Linux:
13305
13306Fixed a bug in which we would reinitialize the ACPI interrupt
13307after it was already working, thus disabling all ACPI and the IRQs
13308for any other device sharing the interrupt. (Thanks to Stian
13309Jordet)
13310
13311Toshiba driver update (John Belmonte)
13312
13313Return only 0 or 1 for our interrupt handler status (Andrew
13314Morton)
13315
13316
133173) iASL Compiler:
13318
13319Fixed a reported problem where multiple (nested) ElseIf()
13320statements were not handled correctly by the compiler, resulting
13321in incorrect warnings and incorrect AML code.  This was a problem
13322in both the ASL parser and the code generator.
13323
13324
133254) Documentation:
13326
13327Added changes to existing interfaces, new exception codes, and new
13328text concerning reference count object management versus garbage
13329collection.
13330
13331----------------------------------------
1333209 May 2003.  Summary of changes for version 20030509.
13333
13334
133351) ACPI CA Core Subsystem:
13336
13337Changed the subsystem initialization sequence to hold off
13338installation of address space handlers until the hardware has been
13339initialized and the system has entered ACPI mode.  This is because
13340the installation of space handlers can cause _REG methods to be
13341run.  Previously, the _REG methods could potentially be run before
13342ACPI mode was enabled.
13343
13344Fixed some memory leak issues related to address space handler and
13345notify handler installation.  There were some problems with the
13346reference count mechanism caused by the fact that the handler
13347objects are shared across several namespace objects.
13348
13349Fixed a reported problem where reference counts within the
13350namespace were not properly updated when named objects created by
13351method execution were deleted.
13352
13353Fixed a reported problem where multiple SSDTs caused a deletion
13354issue during subsystem termination.  Restructured the table data
13355structures to simplify the linked lists and the related code.
13356
13357Fixed a problem where the table ID associated with secondary
13358tables (SSDTs) was not being propagated into the namespace objects
13359created by those tables.  This would only present a problem for
13360tables that are unloaded at run-time, however.
13361
13362Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
13363type as the length parameter (instead of UINT32).
13364
13365Solved a long-standing problem where an ALREADY_EXISTS error
13366appears on various systems.  This problem could happen when there
13367are multiple PCI_Config operation regions under a single PCI root
13368bus.  This doesn't happen very frequently, but there are some
13369systems that do this in the ASL.
13370
13371Fixed a reported problem where the internal DeleteNode function
13372was incorrectly handling the case where a namespace node was the
13373first in the parent's child list, and had additional peers (not
13374the only child, but first in the list of children.)
13375
13376Code and Data Size: Current core subsystem library sizes are shown
13377below.  These are the code and data sizes for the acpica.lib
13378produced by the Microsoft Visual C++ 6.0 compiler, and these
13379values do not include any ACPI driver or OSPM code.  The debug
13380version of the code includes the debug output trace mechanism and
13381has a much larger code and data size.  Note that these values will
13382vary depending on the efficiency of the compiler and the compiler
13383options used during generation.
13384
13385  Previous Release
13386    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
13387    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
13388  Current Release:
13389    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
13390    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
13391
13392
133932) Linux:
13394
13395Allow ":" in OS override string (Ducrot Bruno)
13396
13397Kobject fix (Greg KH)
13398
13399
134003 iASL Compiler/Disassembler:
13401
13402Fixed a problem in the generation of the C source code files (AML
13403is emitted in C source statements for BIOS inclusion) where the
13404Ascii dump that appears within a C comment at the end of each line
13405could cause a compile time error if the AML sequence happens to
13406have an open comment or close comment sequence embedded.
13407
13408
13409----------------------------------------
1341024 April 2003.  Summary of changes for version 20030424.
13411
13412
134131) ACPI CA Core Subsystem:
13414
13415Support for big-endian systems has been implemented.  Most of the
13416support has been invisibly added behind big-endian versions of the
13417ACPI_MOVE_* macros.
13418
13419Fixed a problem in AcpiHwDisableGpeBlock() and
13420AcpiHwClearGpeBlock() where an incorrect offset was passed to the
13421low level hardware write routine.  The offset parameter was
13422actually eliminated from the low level read/write routines because
13423they had become obsolete.
13424
13425Fixed a problem where a handler object was deleted twice during
13426the removal of a fixed event handler.
13427
13428
134292) Linux:
13430
13431A fix for SMP systems with link devices was contributed by
13432
13433Compaq's Dan Zink.
13434
13435(2.5) Return whether we handled the interrupt in our IRQ handler.
13436(Linux ISRs no longer return void, so we can propagate the handler
13437return value from the ACPI CA core back to the OS.)
13438
13439
13440
134413) Documentation:
13442
13443The ACPI CA Programmer Reference has been updated to reflect new
13444interfaces and changes to existing interfaces.
13445
13446----------------------------------------
1344728 March 2003.  Summary of changes for version 20030328.
13448
134491) ACPI CA Core Subsystem:
13450
13451The GPE Block Device support has been completed.  New interfaces
13452are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
13453interfaces (enable, disable, clear, getstatus) have been split
13454into separate interfaces for Fixed Events and General Purpose
13455Events (GPEs) in order to support GPE Block Devices properly.
13456
13457Fixed a problem where the error message "Failed to acquire
13458semaphore" would appear during operations on the embedded
13459controller (EC).
13460
13461Code and Data Size: Current core subsystem library sizes are shown
13462below.  These are the code and data sizes for the acpica.lib
13463produced by the Microsoft Visual C++ 6.0 compiler, and these
13464values do not include any ACPI driver or OSPM code.  The debug
13465version of the code includes the debug output trace mechanism and
13466has a much larger code and data size.  Note that these values will
13467vary depending on the efficiency of the compiler and the compiler
13468options used during generation.
13469
13470  Previous Release
13471    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
13472    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
13473  Current Release:
13474    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
13475    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
13476
13477
13478----------------------------------------
1347928 February 2003.  Summary of changes for version 20030228.
13480
13481
134821) ACPI CA Core Subsystem:
13483
13484The GPE handling and dispatch code has been completely overhauled
13485in preparation for support of GPE Block Devices (ID ACPI0006).
13486This affects internal data structures and code only; there should
13487be no differences visible externally.  One new file has been
13488added, evgpeblk.c
13489
13490The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
13491fields that are used to determine the GPE block lengths.  The
13492REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
13493structures are ignored.  This is per the ACPI specification but it
13494isn't very clear.  The full 256 Block 0/1 GPEs are now supported
13495(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
13496
13497In the SCI interrupt handler, removed the read of the PM1_CONTROL
13498register to look at the SCI_EN bit.  On some machines, this read
13499causes an SMI event and greatly slows down SCI events.  (This may
13500in fact be the cause of slow battery status response on some
13501systems.)
13502
13503Fixed a problem where a store of a NULL string to a package object
13504could cause the premature deletion of the object.  This was seen
13505during execution of the battery _BIF method on some systems,
13506resulting in no battery data being returned.
13507
13508Added AcpiWalkResources interface to simplify parsing of resource
13509lists.
13510
13511Code and Data Size: Current core subsystem library sizes are shown
13512below.  These are the code and data sizes for the acpica.lib
13513produced by the Microsoft Visual C++ 6.0 compiler, and these
13514values do not include any ACPI driver or OSPM code.  The debug
13515version of the code includes the debug output trace mechanism and
13516has a much larger code and data size.  Note that these values will
13517vary depending on the efficiency of the compiler and the compiler
13518options used during generation.
13519
13520  Previous Release
13521    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13522    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13523  Current Release:
13524    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
13525    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
13526
13527
135282) Linux
13529
13530S3 fixes (Ole Rohne)
13531
13532Update ACPI PHP driver with to use new acpi_walk_resource API
13533(Bjorn Helgaas)
13534
13535Add S4BIOS support (Pavel Machek)
13536
13537Map in entire table before performing checksum (John Stultz)
13538
13539Expand the mem= cmdline to allow the specification of reserved and
13540ACPI DATA blocks (Pavel Machek)
13541
13542Never use ACPI on VISWS
13543
13544Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
13545
13546Revert a change that allowed P_BLK lengths to be 4 or 5. This is
13547causing us to think that some systems support C2 when they really
13548don't.
13549
13550Do not count processor objects for non-present CPUs (Thanks to
13551Dominik Brodowski)
13552
13553
135543) iASL Compiler:
13555
13556Fixed a problem where ASL include files could not be found and
13557opened.
13558
13559Added support for the _PDC reserved name.
13560
13561
13562----------------------------------------
1356322 January 2003.  Summary of changes for version 20030122.
13564
13565
135661) ACPI CA Core Subsystem:
13567
13568Added a check for constructs of the form:  Store (Local0, Local0)
13569where Local0 is not initialized.  Apparently, some BIOS
13570programmers believe that this is a NOOP.  Since this store doesn't
13571do anything anyway, the new prototype behavior will ignore this
13572error.  This is a case where we can relax the strict checking in
13573the interpreter in the name of compatibility.
13574
13575
135762) Linux
13577
13578The AcpiSrc Source Conversion Utility has been released with the
13579Linux package for the first time.  This is the utility that is
13580used to convert the ACPI CA base source code to the Linux version.
13581
13582(Both) Handle P_BLK lengths shorter than 6 more gracefully
13583
13584(Both) Move more headers to include/acpi, and delete an unused
13585header.
13586
13587(Both) Move drivers/acpi/include directory to include/acpi
13588
13589(Both) Boot functions don't use cmdline, so don't pass it around
13590
13591(Both) Remove include of unused header (Adrian Bunk)
13592
13593(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
13594the
13595former now also includes the latter, acpiphp.h only needs the one,
13596now.
13597
13598(2.5) Make it possible to select method of bios restoring after S3
13599resume. [=> no more ugly ifdefs] (Pavel Machek)
13600
13601(2.5) Make proc write interfaces work (Pavel Machek)
13602
13603(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
13604
13605(2.5) Break out ACPI Perf code into its own module, under cpufreq
13606(Dominik Brodowski)
13607
13608(2.4) S4BIOS support (Ducrot Bruno)
13609
13610(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
13611Visinoni)
13612
13613
136143) iASL Compiler:
13615
13616Added support to disassemble SSDT and PSDTs.
13617
13618Implemented support to obtain SSDTs from the Windows registry if
13619available.
13620
13621
13622----------------------------------------
1362309 January 2003.  Summary of changes for version 20030109.
13624
136251) ACPI CA Core Subsystem:
13626
13627Changed the behavior of the internal Buffer-to-String conversion
13628function.  The current ACPI specification states that the contents
13629of the buffer are "converted to a string of two-character
13630hexadecimal numbers, each separated by a space".  Unfortunately,
13631this definition is not backwards compatible with existing ACPI 1.0
13632implementations (although the behavior was not defined in the ACPI
136331.0 specification).  The new behavior simply copies data from the
13634buffer to the string until a null character is found or the end of
13635the buffer is reached.  The new String object is always null
13636terminated.  This problem was seen during the generation of _BIF
13637battery data where incorrect strings were returned for battery
13638type, etc.  This will also require an errata to the ACPI
13639specification.
13640
13641Renamed all instances of NATIVE_UINT and NATIVE_INT to
13642ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
13643
13644Copyright in all module headers (both Linux and non-Linux) has be
13645updated to 2003.
13646
13647Code and Data Size: Current core subsystem library sizes are shown
13648below.  These are the code and data sizes for the acpica.lib
13649produced by the Microsoft Visual C++ 6.0 compiler, and these
13650values do not include any ACPI driver or OSPM code.  The debug
13651version of the code includes the debug output trace mechanism and
13652has a much larger code and data size.  Note that these values will
13653vary depending on the efficiency of the compiler and the compiler
13654options used during generation.
13655
13656  Previous Release
13657    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13658    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13659  Current Release:
13660    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13661    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13662
13663
136642) Linux
13665
13666Fixed an oops on module insertion/removal (Matthew Tippett)
13667
13668(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
13669
13670(2.5) Replace pr_debug (Randy Dunlap)
13671
13672(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
13673
13674(Both) Eliminate spawning of thread from timer callback, in favor
13675of schedule_work()
13676
13677(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
13678
13679(Both) Added define for Fixed Function HW region (Matthew Wilcox)
13680
13681(Both) Add missing statics to button.c (Pavel Machek)
13682
13683Several changes have been made to the source code translation
13684utility that generates the Linux Code in order to make the code
13685more "Linux-like":
13686
13687All typedefs on structs and unions have been removed in keeping
13688with the Linux coding style.
13689
13690Removed the non-Linux SourceSafe module revision number from each
13691module header.
13692
13693Completed major overhaul of symbols to be lowercased for linux.
13694Doubled the number of symbols that are lowercased.
13695
13696Fixed a problem where identifiers within procedure headers and
13697within quotes were not fully lower cased (they were left with a
13698starting capital.)
13699
13700Some C macros whose only purpose is to allow the generation of 16-
13701bit code are now completely removed in the Linux code, increasing
13702readability and maintainability.
13703
13704----------------------------------------
13705
1370612 December 2002.  Summary of changes for version 20021212.
13707
13708
137091) ACPI CA Core Subsystem:
13710
13711Fixed a problem where the creation of a zero-length AML Buffer
13712would cause a fault.
13713
13714Fixed a problem where a Buffer object that pointed to a static AML
13715buffer (in an ACPI table) could inadvertently be deleted, causing
13716memory corruption.
13717
13718Fixed a problem where a user buffer (passed in to the external
13719ACPI CA interfaces) could be overwritten if the buffer was too
13720small to complete the operation, causing memory corruption.
13721
13722Fixed a problem in the Buffer-to-String conversion code where a
13723string of length one was always returned, regardless of the size
13724of the input Buffer object.
13725
13726Removed the NATIVE_CHAR data type across the entire source due to
13727lack of need and lack of consistent use.
13728
13729Code and Data Size: Current core subsystem library sizes are shown
13730below.  These are the code and data sizes for the acpica.lib
13731produced by the Microsoft Visual C++ 6.0 compiler, and these
13732values do not include any ACPI driver or OSPM code.  The debug
13733version of the code includes the debug output trace mechanism and
13734has a much larger code and data size.  Note that these values will
13735vary depending on the efficiency of the compiler and the compiler
13736options used during generation.
13737
13738  Previous Release
13739    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
13740    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
13741  Current Release:
13742    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13743    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13744
13745
13746----------------------------------------
1374705 December 2002.  Summary of changes for version 20021205.
13748
137491) ACPI CA Core Subsystem:
13750
13751Fixed a problem where a store to a String or Buffer object could
13752cause corruption of the DSDT if the object type being stored was
13753the same as the target object type and the length of the object
13754being stored was equal to or smaller than the original (existing)
13755target object.  This was seen to cause corruption of battery _BIF
13756buffers if the _BIF method modified the buffer on the fly.
13757
13758Fixed a problem where an internal error was generated if a control
13759method invocation was used in an OperationRegion, Buffer, or
13760Package declaration.  This was caused by the deferred parsing of
13761the control method and thus the deferred creation of the internal
13762method object.  The solution to this problem was to create the
13763internal method object at the moment the method is encountered in
13764the first pass - so that subsequent references to the method will
13765able to obtain the required parameter count and thus properly
13766parse the method invocation.  This problem presented itself as an
13767AE_AML_INTERNAL during the pass 1 parse phase during table load.
13768
13769Fixed a problem where the internal String object copy routine did
13770not always allocate sufficient memory for the target String object
13771and caused memory corruption.  This problem was seen to cause
13772"Allocation already present in list!" errors as memory allocation
13773became corrupted.
13774
13775Implemented a new function for the evaluation of namespace objects
13776that allows the specification of the allowable return object
13777types.  This simplifies a lot of code that checks for a return
13778object of one or more specific objects returned from the
13779evaluation (such as _STA, etc.)  This may become and external
13780function if it would be useful to ACPI-related drivers.
13781
13782Completed another round of prefixing #defines with "ACPI_" for
13783clarity.
13784
13785Completed additional code restructuring to allow more modular
13786linking for iASL compiler and AcpiExec.  Several files were split
13787creating new files.  New files:  nsparse.c dsinit.c evgpe.c
13788
13789Implemented an abort mechanism to terminate an executing control
13790method via the AML debugger.  This feature is useful for debugging
13791control methods that depend (wait) for specific hardware
13792responses.
13793
13794Code and Data Size: Current core subsystem library sizes are shown
13795below.  These are the code and data sizes for the acpica.lib
13796produced by the Microsoft Visual C++ 6.0 compiler, and these
13797values do not include any ACPI driver or OSPM code.  The debug
13798version of the code includes the debug output trace mechanism and
13799has a much larger code and data size.  Note that these values will
13800vary depending on the efficiency of the compiler and the compiler
13801options used during generation.
13802
13803  Previous Release
13804    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13805    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
13806  Current Release:
13807    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
13808    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
13809
13810
138112) iASL Compiler/Disassembler
13812
13813Fixed a compiler code generation problem for "Interrupt" Resource
13814Descriptors.  If specified in the ASL, the optional "Resource
13815Source Index" and "Resource Source" fields were not inserted into
13816the correct location within the AML resource descriptor, creating
13817an invalid descriptor.
13818
13819Fixed a disassembler problem for "Interrupt" resource descriptors.
13820The optional "Resource Source Index" and "Resource Source" fields
13821were ignored.
13822
13823
13824----------------------------------------
1382522 November 2002.  Summary of changes for version 20021122.
13826
13827
138281) ACPI CA Core Subsystem:
13829
13830Fixed a reported problem where an object stored to a Method Local
13831or Arg was not copied to a new object during the store - the
13832object pointer was simply copied to the Local/Arg.  This caused
13833all subsequent operations on the Local/Arg to also affect the
13834original source of the store operation.
13835
13836Fixed a problem where a store operation to a Method Local or Arg
13837was not completed properly if the Local/Arg contained a reference
13838(from RefOf) to a named field.  The general-purpose store-to-
13839namespace-node code is now used so that this case is handled
13840automatically.
13841
13842Fixed a problem where the internal object copy routine would cause
13843a protection fault if the object being copied was a Package and
13844contained either 1) a NULL package element or 2) a nested sub-
13845package.
13846
13847Fixed a problem with the GPE initialization that resulted from an
13848ambiguity in the ACPI specification.  One section of the
13849specification states that both the address and length of the GPE
13850block must be zero if the block is not supported.  Another section
13851implies that only the address need be zero if the block is not
13852supported.  The code has been changed so that both the address and
13853the length must be non-zero to indicate a valid GPE block (i.e.,
13854if either the address or the length is zero, the GPE block is
13855invalid.)
13856
13857Code and Data Size: Current core subsystem library sizes are shown
13858below.  These are the code and data sizes for the acpica.lib
13859produced by the Microsoft Visual C++ 6.0 compiler, and these
13860values do not include any ACPI driver or OSPM code.  The debug
13861version of the code includes the debug output trace mechanism and
13862has a much larger code and data size.  Note that these values will
13863vary depending on the efficiency of the compiler and the compiler
13864options used during generation.
13865
13866  Previous Release
13867    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
13868    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
13869  Current Release:
13870    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13871    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
13872
13873
138742) Linux
13875
13876Cleaned up EC driver. Exported an external EC read/write
13877interface. By going through this, other drivers (most notably
13878sonypi) will be able to serialize access to the EC.
13879
13880
138813) iASL Compiler/Disassembler
13882
13883Implemented support to optionally generate include files for both
13884ASM and C (the -i switch).  This simplifies BIOS development by
13885automatically creating include files that contain external
13886declarations for the symbols that are created within the
13887
13888(optionally generated) ASM and C AML source files.
13889
13890
13891----------------------------------------
1389215 November 2002.  Summary of changes for version 20021115.
13893
138941) ACPI CA Core Subsystem:
13895
13896Fixed a memory leak problem where an error during resolution of
13897
13898method arguments during a method invocation from another method
13899failed to cleanup properly by deleting all successfully resolved
13900argument objects.
13901
13902Fixed a problem where the target of the Index() operator was not
13903correctly constructed if the source object was a package.  This
13904problem has not been detected because the use of a target operand
13905with Index() is very rare.
13906
13907Fixed a problem with the Index() operator where an attempt was
13908made to delete the operand objects twice.
13909
13910Fixed a problem where an attempt was made to delete an operand
13911twice during execution of the CondRefOf() operator if the target
13912did not exist.
13913
13914Implemented the first of perhaps several internal create object
13915functions that create and initialize a specific object type.  This
13916consolidates duplicated code wherever the object is created, thus
13917shrinking the size of the subsystem.
13918
13919Implemented improved debug/error messages for errors that occur
13920during nested method invocations.  All executing method pathnames
13921are displayed (with the error) as the call stack is unwound - thus
13922simplifying debug.
13923
13924Fixed a problem introduced in the 10/02 release that caused
13925premature deletion of a buffer object if a buffer was used as an
13926ASL operand where an integer operand is required (Thus causing an
13927implicit object conversion from Buffer to Integer.)  The change in
13928the 10/02 release was attempting to fix a memory leak (albeit
13929incorrectly.)
13930
13931Code and Data Size: Current core subsystem library sizes are shown
13932below.  These are the code and data sizes for the acpica.lib
13933produced by the Microsoft Visual C++ 6.0 compiler, and these
13934values do not include any ACPI driver or OSPM code.  The debug
13935version of the code includes the debug output trace mechanism and
13936has a much larger code and data size.  Note that these values will
13937vary depending on the efficiency of the compiler and the compiler
13938options used during generation.
13939
13940  Previous Release
13941    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
13942    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
13943  Current Release:
13944    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
13945    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
13946
13947
139482) Linux
13949
13950Changed the implementation of the ACPI semaphores to use down()
13951instead of down_interruptable().  It is important that the
13952execution of ACPI control methods not be interrupted by signals.
13953Methods must run to completion, or the system may be left in an
13954unknown/unstable state.
13955
13956Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
13957(Shawn Starr)
13958
13959
139603) iASL Compiler/Disassembler
13961
13962
13963Changed the default location of output files.  All output files
13964are now placed in the current directory by default instead of in
13965the directory of the source file.  This change may affect some
13966existing makefiles, but it brings the behavior of the compiler in
13967line with other similar tools.  The location of the output files
13968can be overridden with the -p command line switch.
13969
13970
13971----------------------------------------
1397211 November 2002.  Summary of changes for version 20021111.
13973
13974
139750) ACPI Specification 2.0B is released and is now available at:
13976http://www.acpi.info/index.html
13977
13978
139791) ACPI CA Core Subsystem:
13980
13981Implemented support for the ACPI 2.0 SMBus Operation Regions.
13982This includes the early detection and handoff of the request to
13983the SMBus region handler (avoiding all of the complex field
13984support code), and support for the bidirectional return packet
13985from an SMBus write operation.  This paves the way for the
13986development of SMBus drivers in each host operating system.
13987
13988Fixed a problem where the semaphore WAIT_FOREVER constant was
13989defined as 32 bits, but must be 16 bits according to the ACPI
13990specification.  This had the side effect of causing ASL
13991Mutex/Event timeouts even though the ASL code requested a wait
13992forever.  Changed all internal references to the ACPI timeout
13993parameter to 16 bits to prevent future problems.  Changed the name
13994of WAIT_FOREVER to ACPI_WAIT_FOREVER.
13995
13996Code and Data Size: Current core subsystem library sizes are shown
13997below.  These are the code and data sizes for the acpica.lib
13998produced by the Microsoft Visual C++ 6.0 compiler, and these
13999values do not include any ACPI driver or OSPM code.  The debug
14000version of the code includes the debug output trace mechanism and
14001has a much larger code and data size.  Note that these values will
14002vary depending on the efficiency of the compiler and the compiler
14003options used during generation.
14004
14005  Previous Release
14006    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14007    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
14008  Current Release:
14009    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
14010    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
14011
14012
140132) Linux
14014
14015Module loading/unloading fixes (John Cagle)
14016
14017
140183) iASL Compiler/Disassembler
14019
14020Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
14021
14022Implemented support for the disassembly of all SMBus protocol
14023keywords (SMBQuick, SMBWord, etc.)
14024
14025----------------------------------------
1402601 November 2002.  Summary of changes for version 20021101.
14027
14028
140291) ACPI CA Core Subsystem:
14030
14031Fixed a problem where platforms that have a GPE1 block but no GPE0
14032block were not handled correctly.  This resulted in a "GPE
14033overlap" error message.  GPE0 is no longer required.
14034
14035Removed code added in the previous release that inserted nodes
14036into the namespace in alphabetical order.  This caused some side-
14037effects on various machines.  The root cause of the problem is
14038still under investigation since in theory, the internal ordering
14039of the namespace nodes should not matter.
14040
14041
14042Enhanced error reporting for the case where a named object is not
14043found during control method execution.  The full ACPI namepath
14044(name reference) of the object that was not found is displayed in
14045this case.
14046
14047Note: as a result of the overhaul of the namespace object types in
14048the previous release, the namespace nodes for the predefined
14049scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
14050instead of ACPI_TYPE_ANY.  This simplifies the namespace
14051management code but may affect code that walks the namespace tree
14052looking for specific object types.
14053
14054Code and Data Size: Current core subsystem library sizes are shown
14055below.  These are the code and data sizes for the acpica.lib
14056produced by the Microsoft Visual C++ 6.0 compiler, and these
14057values do not include any ACPI driver or OSPM code.  The debug
14058version of the code includes the debug output trace mechanism and
14059has a much larger code and data size.  Note that these values will
14060vary depending on the efficiency of the compiler and the compiler
14061options used during generation.
14062
14063  Previous Release
14064    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
14065    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
14066  Current Release:
14067    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14068    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
14069
14070
140712) Linux
14072
14073Fixed a problem introduced in the previous release where the
14074Processor and Thermal objects were not recognized and installed in
14075/proc.  This was related to the scope type change described above.
14076
14077
140783) iASL Compiler/Disassembler
14079
14080Implemented the -g option to get all of the required ACPI tables
14081from the registry and save them to files (Windows version of the
14082compiler only.)  The required tables are the FADT, FACS, and DSDT.
14083
14084Added ACPI table checksum validation during table disassembly in
14085order to catch corrupted tables.
14086
14087
14088----------------------------------------
1408922 October 2002.  Summary of changes for version 20021022.
14090
140911) ACPI CA Core Subsystem:
14092
14093Implemented a restriction on the Scope operator that the target
14094must already exist in the namespace at the time the operator is
14095encountered (during table load or method execution).  In other
14096words, forward references are not allowed and Scope() cannot
14097create a new object. This changes the previous behavior where the
14098interpreter would create the name if not found.  This new behavior
14099correctly enables the search-to-root algorithm during namespace
14100lookup of the target name.  Because of this upsearch, this fixes
14101the known Compaq _SB_.OKEC problem and makes both the AML
14102interpreter and iASL compiler compatible with other ACPI
14103implementations.
14104
14105Completed a major overhaul of the internal ACPI object types for
14106the ACPI Namespace and the associated operand objects.  Many of
14107these types had become obsolete with the introduction of the two-
14108pass namespace load.  This cleanup simplifies the code and makes
14109the entire namespace load mechanism much clearer and easier to
14110understand.
14111
14112Improved debug output for tracking scope opening/closing to help
14113diagnose scoping issues.  The old scope name as well as the new
14114scope name are displayed.  Also improved error messages for
14115problems with ASL Mutex objects and error messages for GPE
14116problems.
14117
14118Cleaned up the namespace dump code, removed obsolete code.
14119
14120All string output (for all namespace/object dumps) now uses the
14121common ACPI string output procedure which handles escapes properly
14122and does not emit non-printable characters.
14123
14124Fixed some issues with constants in the 64-bit version of the
14125local C library (utclib.c)
14126
14127
141282) Linux
14129
14130EC Driver:  No longer attempts to acquire the Global Lock at
14131interrupt level.
14132
14133
141343) iASL Compiler/Disassembler
14135
14136Implemented ACPI 2.0B grammar change that disallows all Type 1 and
141372 opcodes outside of a control method.  This means that the
14138"executable" operators (versus the "namespace" operators) cannot
14139be used at the table level; they can only be used within a control
14140method.
14141
14142Implemented the restriction on the Scope() operator where the
14143target must already exist in the namespace at the time the
14144operator is encountered (during ASL compilation). In other words,
14145forward references are not allowed and Scope() cannot create a new
14146object.  This makes the iASL compiler compatible with other ACPI
14147implementations and makes the Scope() implementation adhere to the
14148ACPI specification.
14149
14150Fixed a problem where namepath optimization for the Alias operator
14151was optimizing the wrong path (of the two namepaths.)  This caused
14152a "Missing alias link" error message.
14153
14154Fixed a problem where an "unknown reserved name" warning could be
14155incorrectly generated for names like "_SB" when the trailing
14156underscore is not used in the original ASL.
14157
14158Fixed a problem where the reserved name check did not handle
14159NamePaths with multiple NameSegs correctly.  The first nameseg of
14160the NamePath was examined instead of the last NameSeg.
14161
14162
14163----------------------------------------
14164
1416502 October 2002.  Summary of changes for this release.
14166
14167
141681) ACPI CA Core Subsystem version 20021002:
14169
14170Fixed a problem where a store/copy of a string to an existing
14171string did not always set the string length properly in the String
14172object.
14173
14174Fixed a reported problem with the ToString operator where the
14175behavior was identical to the ToHexString operator instead of just
14176simply converting a raw buffer to a string data type.
14177
14178Fixed a problem where CopyObject and the other "explicit"
14179conversion operators were not updating the internal namespace node
14180type as part of the store operation.
14181
14182Fixed a memory leak during implicit source operand conversion
14183where the original object was not deleted if it was converted to a
14184new object of a different type.
14185
14186Enhanced error messages for all problems associated with namespace
14187lookups.  Common procedure generates and prints the lookup name as
14188well as the formatted status.
14189
14190Completed implementation of a new design for the Alias support
14191within the namespace.  The existing design did not handle the case
14192where a new object was assigned to one of the two names due to the
14193use of an explicit conversion operator, resulting in the two names
14194pointing to two different objects.  The new design simply points
14195the Alias name to the original name node - not to the object.
14196This results in a level of indirection that must be handled in the
14197name resolution mechanism.
14198
14199Code and Data Size: Current core subsystem library sizes are shown
14200below.  These are the code and data sizes for the acpica.lib
14201produced by the Microsoft Visual C++ 6.0 compiler, and these
14202values do not include any ACPI driver or OSPM code.  The debug
14203version of the code includes the debug output trace mechanism and
14204has a larger code and data size.  Note that these values will vary
14205depending on the efficiency of the compiler and the compiler
14206options used during generation.
14207
14208  Previous Release
14209    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
14210    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
14211  Current Release:
14212    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
14213    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
14214
14215
142162) Linux
14217
14218Initialize thermal driver's timer before it is used. (Knut
14219Neumann)
14220
14221Allow handling negative celsius values. (Kochi Takayoshi)
14222
14223Fix thermal management and make trip points. R/W (Pavel Machek)
14224
14225Fix /proc/acpi/sleep. (P. Christeas)
14226
14227IA64 fixes. (David Mosberger)
14228
14229Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
14230
14231Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
14232Brodowski)
14233
14234
142353) iASL Compiler/Disassembler
14236
14237Clarified some warning/error messages.
14238
14239
14240----------------------------------------
1424118 September 2002.  Summary of changes for this release.
14242
14243
142441) ACPI CA Core Subsystem version 20020918:
14245
14246Fixed a reported problem with reference chaining (via the Index()
14247and RefOf() operators) in the ObjectType() and SizeOf() operators.
14248The definition of these operators includes the dereferencing of
14249all chained references to return information on the base object.
14250
14251Fixed a problem with stores to indexed package elements - the
14252existing code would not complete the store if an "implicit
14253conversion" was not performed.  In other words, if the existing
14254object (package element) was to be replaced completely, the code
14255didn't handle this case.
14256
14257Relaxed typechecking on the ASL "Scope" operator to allow the
14258target name to refer to an object of type Integer, String, or
14259Buffer, in addition to the scoping object types (Device,
14260predefined Scopes, Processor, PowerResource, and ThermalZone.)
14261This allows existing AML code that has workarounds for a bug in
14262Windows to function properly.  A warning is issued, however.  This
14263affects both the AML interpreter and the iASL compiler. Below is
14264an example of this type of ASL code:
14265
14266      Name(DEB,0x00)
14267      Scope(DEB)
14268      {
14269
14270Fixed some reported problems with 64-bit integer support in the
14271local implementation of C library functions (clib.c)
14272
14273
142742) Linux
14275
14276Use ACPI fix map region instead of IOAPIC region, since it is
14277undefined in non-SMP.
14278
14279Ensure that the SCI has the proper polarity and trigger, even on
14280systems that do not have an interrupt override entry in the MADT.
14281
142822.5 big driver reorganization (Pat Mochel)
14283
14284Use early table mapping code from acpitable.c (Andi Kleen)
14285
14286New blacklist entries (Andi Kleen)
14287
14288Blacklist improvements. Split blacklist code out into a separate
14289file. Move checking the blacklist to very early. Previously, we
14290would use ACPI tables, and then halfway through init, check the
14291blacklist -- too late. Now, it's early enough to completely fall-
14292back to non-ACPI.
14293
14294
142953) iASL Compiler/Disassembler version 20020918:
14296
14297Fixed a problem where the typechecking code didn't know that an
14298alias could point to a method.  In other words, aliases were not
14299being dereferenced during typechecking.
14300
14301
14302----------------------------------------
1430329 August 2002.  Summary of changes for this release.
14304
143051) ACPI CA Core Subsystem Version 20020829:
14306
14307If the target of a Scope() operator already exists, it must be an
14308object type that actually opens a scope -- such as a Device,
14309Method, Scope, etc.  This is a fatal runtime error.  Similar error
14310check has been added to the iASL compiler also.
14311
14312Tightened up the namespace load to disallow multiple names in the
14313same scope.  This previously was allowed if both objects were of
14314the same type.  (i.e., a lookup was the same as entering a new
14315name).
14316
14317
143182) Linux
14319
14320Ensure that the ACPI interrupt has the proper trigger and
14321polarity.
14322
14323local_irq_disable is extraneous. (Matthew Wilcox)
14324
14325Make "acpi=off" actually do what it says, and not use the ACPI
14326interpreter *or* the tables.
14327
14328Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
14329Takayoshi)
14330
14331
143323) iASL Compiler/Disassembler  Version 20020829:
14333
14334Implemented namepath optimization for name declarations.  For
14335example, a declaration like "Method (\_SB_.ABCD)" would get
14336optimized to "Method (ABCD)" if the declaration is within the
14337\_SB_ scope.  This optimization is in addition to the named
14338reference path optimization first released in the previous
14339version. This would seem to complete all possible optimizations
14340for namepaths within the ASL/AML.
14341
14342If the target of a Scope() operator already exists, it must be an
14343object type that actually opens a scope -- such as a Device,
14344Method, Scope, etc.
14345
14346Implemented a check and warning for unreachable code in the same
14347block below a Return() statement.
14348
14349Fixed a problem where the listing file was not generated if the
14350compiler aborted if the maximum error count was exceeded (200).
14351
14352Fixed a problem where the typechecking of method return values was
14353broken.  This includes the check for a return value when the
14354method is invoked as a TermArg (a return value is expected.)
14355
14356Fixed a reported problem where EOF conditions during a quoted
14357string or comment caused a fault.
14358
14359
14360----------------------------------------
1436115 August 2002.  Summary of changes for this release.
14362
143631) ACPI CA Core Subsystem Version 20020815:
14364
14365Fixed a reported problem where a Store to a method argument that
14366contains a reference did not perform the indirect store correctly.
14367This problem was created during the conversion to the new
14368reference object model - the indirect store to a method argument
14369code was not updated to reflect the new model.
14370
14371Reworked the ACPI mode change code to better conform to ACPI 2.0,
14372handle corner cases, and improve code legibility (Kochi Takayoshi)
14373
14374Fixed a problem with the pathname parsing for the carat (^)
14375prefix.  The heavy use of the carat operator by the new namepath
14376optimization in the iASL compiler uncovered a problem with the AML
14377interpreter handling of this prefix.  In the case where one or
14378more carats precede a single nameseg, the nameseg was treated as
14379standalone and the search rule (to root) was inadvertently
14380applied.  This could cause both the iASL compiler and the
14381interpreter to find the wrong object or to miss the error that
14382should occur if the object does not exist at that exact pathname.
14383
14384Found and fixed the problem where the HP Pavilion DSDT would not
14385load.  This was a relatively minor tweak to the table loading code
14386(a problem caused by the unexpected encounter with a method
14387invocation not within a control method), but it does not solve the
14388overall issue of the execution of AML code at the table level.
14389This investigation is still ongoing.
14390
14391Code and Data Size: Current core subsystem library sizes are shown
14392below.  These are the code and data sizes for the acpica.lib
14393produced by the Microsoft Visual C++ 6.0 compiler, and these
14394values do not include any ACPI driver or OSPM code.  The debug
14395version of the code includes the debug output trace mechanism and
14396has a larger code and data size.  Note that these values will vary
14397depending on the efficiency of the compiler and the compiler
14398options used during generation.
14399
14400  Previous Release
14401    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
14402    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
14403  Current Release:
14404    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
14405    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
14406
14407
144082) Linux
14409
14410Remove redundant slab.h include (Brad Hards)
14411
14412Fix several bugs in thermal.c (Herbert Nachtnebel)
14413
14414Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
14415
14416Change acpi_system_suspend to use updated irq functions (Pavel
14417Machek)
14418
14419Export acpi_get_firmware_table (Matthew Wilcox)
14420
14421Use proper root proc entry for ACPI (Kochi Takayoshi)
14422
14423Fix early-boot table parsing (Bjorn Helgaas)
14424
14425
144263) iASL Compiler/Disassembler
14427
14428Reworked the compiler options to make them more consistent and to
14429use two-letter options where appropriate.  We were running out of
14430sensible letters.   This may break some makefiles, so check the
14431current options list by invoking the compiler with no parameters.
14432
14433Completed the design and implementation of the ASL namepath
14434optimization option for the compiler.  This option optimizes all
14435references to named objects to the shortest possible path.  The
14436first attempt tries to utilize a single nameseg (4 characters) and
14437the "search-to-root" algorithm used by the interpreter.  If that
14438cannot be used (because either the name is not in the search path
14439or there is a conflict with another object with the same name),
14440the pathname is optimized using the carat prefix (usually a
14441shorter string than specifying the entire path from the root.)
14442
14443Implemented support to obtain the DSDT from the Windows registry
14444(when the disassembly option is specified with no input file).
14445Added this code as the implementation for AcpiOsTableOverride in
14446the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
14447utility) to scan memory for the DSDT to the AcpiOsTableOverride
14448function in the DOS OSL to make the disassembler truly OS
14449independent.
14450
14451Implemented a new option to disassemble and compile in one step.
14452When used without an input filename, this option will grab the
14453DSDT from the local machine, disassemble it, and compile it in one
14454step.
14455
14456Added a warning message for invalid escapes (a backslash followed
14457by any character other than the allowable escapes).  This catches
14458the quoted string error "\_SB_" (which should be "\\_SB_" ).
14459
14460Also, there are numerous instances in the ACPI specification where
14461this error occurs.
14462
14463Added a compiler option to disable all optimizations.  This is
14464basically the "compatibility mode" because by using this option,
14465the AML code will come out exactly the same as other ASL
14466compilers.
14467
14468Added error messages for incorrectly ordered dependent resource
14469functions.  This includes: missing EndDependentFn macro at end of
14470dependent resource list, nested dependent function macros (both
14471start and end), and missing StartDependentFn macro.  These are
14472common errors that should be caught at compile time.
14473
14474Implemented _OSI support for the disassembler and compiler.  _OSI
14475must be included in the namespace for proper disassembly (because
14476the disassembler must know the number of arguments.)
14477
14478Added an "optimization" message type that is optional (off by
14479default).  This message is used for all optimizations - including
14480constant folding, integer optimization, and namepath optimization.
14481
14482----------------------------------------
1448325 July 2002.  Summary of changes for this release.
14484
14485
144861) ACPI CA Core Subsystem Version 20020725:
14487
14488The AML Disassembler has been enhanced to produce compilable ASL
14489code and has been integrated into the iASL compiler (see below) as
14490well as the single-step disassembly for the AML debugger and the
14491disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
14492resource templates and macros are fully supported.  The
14493disassembler has been tested on over 30 different AML files,
14494producing identical AML when the resulting disassembled ASL file
14495is recompiled with the same ASL compiler.
14496
14497Modified the Resource Manager to allow zero interrupts and zero
14498dma channels during the GetCurrentResources call.  This was
14499causing problems on some platforms.
14500
14501Added the AcpiOsRedirectOutput interface to the OSL to simplify
14502output redirection for the AcpiOsPrintf and AcpiOsVprintf
14503interfaces.
14504
14505Code and Data Size: Current core subsystem library sizes are shown
14506below.  These are the code and data sizes for the acpica.lib
14507produced by the Microsoft Visual C++ 6.0 compiler, and these
14508values do not include any ACPI driver or OSPM code.  The debug
14509version of the code includes the debug output trace mechanism and
14510has a larger code and data size.  Note that these values will vary
14511depending on the efficiency of the compiler and the compiler
14512options used during generation.
14513
14514  Previous Release
14515    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
14516    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
14517  Current Release:
14518    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
14519    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
14520
14521
145222) Linux
14523
14524Fixed a panic in the EC driver (Dominik Brodowski)
14525
14526Implemented checksum of the R/XSDT itself during Linux table scan
14527(Richard Schaal)
14528
14529
145303) iASL compiler
14531
14532The AML disassembler is integrated into the compiler.  The "-d"
14533option invokes the disassembler  to completely disassemble an
14534input AML file, producing as output a text ASL file with the
14535extension ".dsl" (to avoid name collisions with existing .asl
14536source files.)  A future enhancement will allow the disassembler
14537to obtain the BIOS DSDT from the registry under Windows.
14538
14539Fixed a problem with the VendorShort and VendorLong resource
14540descriptors where an invalid AML sequence was created.
14541
14542Implemented a fix for BufferData term in the ASL parser.  It was
14543inadvertently defined twice, allowing invalid syntax to pass and
14544causing reduction conflicts.
14545
14546Fixed a problem where the Ones opcode could get converted to a
14547value of zero if "Ones" was used where a byte, word or dword value
14548was expected.  The 64-bit value is now truncated to the correct
14549size with the correct value.
14550
14551
14552
14553----------------------------------------
1455402 July 2002.  Summary of changes for this release.
14555
14556
145571) ACPI CA Core Subsystem Version 20020702:
14558
14559The Table Manager code has been restructured to add several new
14560features.  Tables that are not required by the core subsystem
14561(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
14562validated in any way and are returned from AcpiGetFirmwareTable if
14563requested.  The AcpiOsTableOverride interface is now called for
14564each table that is loaded by the subsystem in order to allow the
14565host to override any table it chooses.  Previously, only the DSDT
14566could be overridden.  Added one new files, tbrsdt.c and
14567tbgetall.c.
14568
14569Fixed a problem with the conversion of internal package objects to
14570external objects (when a package is returned from a control
14571method.)  The return buffer length was set to zero instead of the
14572proper length of the package object.
14573
14574Fixed a reported problem with the use of the RefOf and DeRefOf
14575operators when passing reference arguments to control methods.  A
14576new type of Reference object is used internally for references
14577produced by the RefOf operator.
14578
14579Added additional error messages in the Resource Manager to explain
14580AE_BAD_DATA errors when they occur during resource parsing.
14581
14582Split the AcpiEnableSubsystem into two primitives to enable a
14583finer granularity initialization sequence.  These two calls should
14584be called in this order: AcpiEnableSubsystem (flags),
14585AcpiInitializeObjects (flags).  The flags parameter remains the
14586same.
14587
14588
145892) Linux
14590
14591Updated the ACPI utilities module to understand the new style of
14592fully resolved package objects that are now returned from the core
14593subsystem.  This eliminates errors of the form:
14594
14595    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
14596    acpi_utils-0430 [145] acpi_evaluate_reference:
14597        Invalid element in package (not a device reference)
14598
14599The method evaluation utility uses the new buffer allocation
14600scheme instead of calling AcpiEvaluate Object twice.
14601
14602Added support for ECDT. This allows the use of the Embedded
14603
14604Controller before the namespace has been fully initialized, which
14605is necessary for ACPI 2.0 support, and for some laptops to
14606initialize properly. (Laptops using ECDT are still rare, so only
14607limited testing was performed of the added functionality.)
14608
14609Fixed memory leaks in the EC driver.
14610
14611Eliminated a brittle code structure in acpi_bus_init().
14612
14613Eliminated the acpi_evaluate() helper function in utils.c. It is
14614no longer needed since acpi_evaluate_object can optionally
14615allocate memory for the return object.
14616
14617Implemented fix for keyboard hang when getting battery readings on
14618some systems (Stephen White)
14619
14620PCI IRQ routing update (Dominik Brodowski)
14621
14622Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
14623support
14624
14625----------------------------------------
1462611 June 2002.  Summary of changes for this release.
14627
14628
146291) ACPI CA Core Subsystem Version 20020611:
14630
14631Fixed a reported problem where constants such as Zero and One
14632appearing within _PRT packages were not handled correctly within
14633the resource manager code.  Originally reported against the ASL
14634compiler because the code generator now optimizes integers to
14635their minimal AML representation (i.e. AML constants if possible.)
14636The _PRT code now handles all AML constant opcodes correctly
14637(Zero, One, Ones, Revision).
14638
14639Fixed a problem with the Concatenate operator in the AML
14640interpreter where a buffer result object was incorrectly marked as
14641not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
14642
14643All package sub-objects are now fully resolved before they are
14644returned from the external ACPI interfaces.  This means that name
14645strings are resolved to object handles, and constant operators
14646(Zero, One, Ones, Revision) are resolved to Integers.
14647
14648Implemented immediate resolution of the AML Constant opcodes
14649(Zero, One, Ones, Revision) to Integer objects upon detection
14650within the AML stream. This has simplified and reduced the
14651generated code size of the subsystem by eliminating about 10
14652switch statements for these constants (which previously were
14653contained in Reference objects.)  The complicating issues are that
14654the Zero opcode is used as a "placeholder" for unspecified
14655optional target operands and stores to constants are defined to be
14656no-ops.
14657
14658Code and Data Size: Current core subsystem library sizes are shown
14659below. These are the code and data sizes for the acpica.lib
14660produced by the Microsoft Visual C++ 6.0 compiler, and these
14661values do not include any ACPI driver or OSPM code.  The debug
14662version of the code includes the debug output trace mechanism and
14663has a larger code and data size.  Note that these values will vary
14664depending on the efficiency of the compiler and the compiler
14665options used during generation.
14666
14667  Previous Release
14668    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14669    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14670  Current Release:
14671    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
14672    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
14673
14674
146752) Linux
14676
14677
14678Added preliminary support for obtaining _TRA data for PCI root
14679bridges (Bjorn Helgaas).
14680
14681
146823) iASL Compiler Version X2046:
14683
14684Fixed a problem where the "_DDN" reserved name was defined to be a
14685control method with one argument.  There are no arguments, and
14686_DDN does not have to be a control method.
14687
14688Fixed a problem with the Linux version of the compiler where the
14689source lines printed with error messages were the wrong lines.
14690This turned out to be the "LF versus CR/LF" difference between
14691Windows and Unix.  This appears to be the longstanding issue
14692concerning listing output and error messages.
14693
14694Fixed a problem with the Linux version of compiler where opcode
14695names within error messages were wrong.  This was caused by a
14696slight difference in the output of the Flex tool on Linux versus
14697Windows.
14698
14699Fixed a problem with the Linux compiler where the hex output files
14700contained some garbage data caused by an internal buffer overrun.
14701
14702
14703----------------------------------------
1470417 May 2002.  Summary of changes for this release.
14705
14706
147071) ACPI CA Core Subsystem Version 20020517:
14708
14709Implemented a workaround to an BIOS bug discovered on the HP
14710OmniBook where the FADT revision number and the table size are
14711inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
14712behavior is to fallback to using only the ACPI 1.0 fields of the
14713FADT if the table is too small to be a ACPI 2.0 table as claimed
14714by the revision number.  Although this is a BIOS bug, this is a
14715case where the workaround is simple enough and with no side
14716effects, so it seemed prudent to add it.  A warning message is
14717issued, however.
14718
14719Implemented minimum size checks for the fixed-length ACPI tables -
14720- the FADT and FACS, as well as consistency checks between the
14721revision number and the table size.
14722
14723Fixed a reported problem in the table override support where the
14724new table pointer was incorrectly treated as a physical address
14725instead of a logical address.
14726
14727Eliminated the use of the AE_AML_ERROR exception and replaced it
14728with more descriptive codes.
14729
14730Fixed a problem where an exception would occur if an ASL Field was
14731defined with no named Field Units underneath it (used by some
14732index fields).
14733
14734Code and Data Size: Current core subsystem library sizes are shown
14735below.  These are the code and data sizes for the acpica.lib
14736produced by the Microsoft Visual C++ 6.0 compiler, and these
14737values do not include any ACPI driver or OSPM code.  The debug
14738version of the code includes the debug output trace mechanism and
14739has a larger code and data size.  Note that these values will vary
14740depending on the efficiency of the compiler and the compiler
14741options used during generation.
14742
14743  Previous Release
14744    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
14745    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
14746  Current Release:
14747    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14748    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14749
14750
14751
147522) Linux
14753
14754Much work done on ACPI init (MADT and PCI IRQ routing support).
14755(Paul D. and Dominik Brodowski)
14756
14757Fix PCI IRQ-related panic on boot (Sam Revitch)
14758
14759Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
14760
14761Fix "MHz" typo (Dominik Brodowski)
14762
14763Fix RTC year 2000 issue (Dominik Brodowski)
14764
14765Preclude multiple button proc entries (Eric Brunet)
14766
14767Moved arch-specific code out of include/platform/aclinux.h
14768
147693) iASL Compiler Version X2044:
14770
14771Implemented error checking for the string used in the EISAID macro
14772(Usually used in the definition of the _HID object.)  The code now
14773strictly enforces the PnP format - exactly 7 characters, 3
14774uppercase letters and 4 hex digits.
14775
14776If a raw string is used in the definition of the _HID object
14777(instead of the EISAID macro), the string must contain all
14778alphanumeric characters (e.g., "*PNP0011" is not allowed because
14779of the asterisk.)
14780
14781Implemented checking for invalid use of ACPI reserved names for
14782most of the name creation operators (Name, Device, Event, Mutex,
14783OperationRegion, PowerResource, Processor, and ThermalZone.)
14784Previously, this check was only performed for control methods.
14785
14786Implemented an additional check on the Name operator to emit an
14787error if a reserved name that must be implemented in ASL as a
14788control method is used.  We know that a reserved name must be a
14789method if it is defined with input arguments.
14790
14791The warning emitted when a namespace object reference is not found
14792during the cross reference phase has been changed into an error.
14793The "External" directive should be used for names defined in other
14794modules.
14795
14796
147974) Tools and Utilities
14798
14799The 16-bit tools (adump16 and aexec16) have been regenerated and
14800tested.
14801
14802Fixed a problem with the output of both acpidump and adump16 where
14803the indentation of closing parentheses and brackets was not
14804
14805aligned properly with the parent block.
14806
14807
14808----------------------------------------
1480903 May 2002.  Summary of changes for this release.
14810
14811
148121) ACPI CA Core Subsystem Version 20020503:
14813
14814Added support a new OSL interface that allows the host operating
14815
14816system software to override the DSDT found in the firmware -
14817AcpiOsTableOverride.  With this interface, the OSL can examine the
14818version of the firmware DSDT and replace it with a different one
14819if desired.
14820
14821Added new external interfaces for accessing ACPI registers from
14822device drivers and other system software - AcpiGetRegister and
14823AcpiSetRegister.  This was simply an externalization of the
14824existing AcpiHwBitRegister interfaces.
14825
14826Fixed a regression introduced in the previous build where the
14827ASL/AML CreateField operator always returned an error,
14828"destination must be a NS Node".
14829
14830Extended the maximum time (before failure) to successfully enable
14831ACPI mode to 3 seconds.
14832
14833Code and Data Size: Current core subsystem library sizes are shown
14834below.  These are the code and data sizes for the acpica.lib
14835produced by the Microsoft Visual C++ 6.0 compiler, and these
14836values do not include any ACPI driver or OSPM code.  The debug
14837version of the code includes the debug output trace mechanism and
14838has a larger code and data size.  Note that these values will vary
14839depending on the efficiency of the compiler and the compiler
14840options used during generation.
14841
14842  Previous Release
14843    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
14844    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
14845  Current Release:
14846    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
14847    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
14848
14849
148502) Linux
14851
14852Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
14853free. While 3 out of 4 of our in-house systems work fine, the last
14854one still hangs when testing the LAPIC timer.
14855
14856Renamed many files in 2.5 kernel release to omit "acpi_" from the
14857name.
14858
14859Added warning on boot for Presario 711FR.
14860
14861Sleep improvements (Pavel Machek)
14862
14863ACPI can now be built without CONFIG_PCI enabled.
14864
14865IA64: Fixed memory map functions (JI Lee)
14866
14867
148683) iASL Compiler Version X2043:
14869
14870Added support to allow the compiler to be integrated into the MS
14871VC++ development environment for one-button compilation of single
14872files or entire projects -- with error-to-source-line mapping.
14873
14874Implemented support for compile-time constant folding for the
14875Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
14876specification.  This allows the ASL writer to use expressions
14877instead of Integer/Buffer/String constants in terms that must
14878evaluate to constants at compile time and will also simplify the
14879emitted AML in any such sub-expressions that can be folded
14880(evaluated at compile-time.)  This increases the size of the
14881compiler significantly because a portion of the ACPI CA AML
14882interpreter is included within the compiler in order to pre-
14883evaluate constant expressions.
14884
14885
14886Fixed a problem with the "Unicode" ASL macro that caused the
14887compiler to fault.  (This macro is used in conjunction with the
14888_STR reserved name.)
14889
14890Implemented an AML opcode optimization to use the Zero, One, and
14891Ones opcodes where possible to further reduce the size of integer
14892constants and thus reduce the overall size of the generated AML
14893code.
14894
14895Implemented error checking for new reserved terms for ACPI version
148962.0A.
14897
14898Implemented the -qr option to display the current list of ACPI
14899reserved names known to the compiler.
14900
14901Implemented the -qc option to display the current list of ASL
14902operators that are allowed within constant expressions and can
14903therefore be folded at compile time if the operands are constants.
14904
14905
149064) Documentation
14907
14908Updated the Programmer's Reference for new interfaces, data types,
14909and memory allocation model options.
14910
14911Updated the iASL Compiler User Reference to apply new format and
14912add information about new features and options.
14913
14914----------------------------------------
1491519 April 2002.  Summary of changes for this release.
14916
149171) ACPI CA Core Subsystem Version 20020419:
14918
14919The source code base for the Core Subsystem has been completely
14920cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
14921versions.  The Lint option files used are included in the
14922/acpi/generate/lint directory.
14923
14924Implemented enhanced status/error checking across the entire
14925Hardware manager subsystem.  Any hardware errors (reported from
14926the OSL) are now bubbled up and will abort a running control
14927method.
14928
14929
14930Fixed a problem where the per-ACPI-table integer width (32 or 64)
14931was stored only with control method nodes, causing a fault when
14932non-control method code was executed during table loading.  The
14933solution implemented uses a global variable to indicate table
14934width across the entire ACPI subsystem.  Therefore, ACPI CA does
14935not support mixed integer widths across different ACPI tables
14936(DSDT, SSDT).
14937
14938Fixed a problem where NULL extended fields (X fields) in an ACPI
149392.0 ACPI FADT caused the table load to fail.  Although the
14940existing ACPI specification is a bit fuzzy on this topic, the new
14941behavior is to fall back on a ACPI 1.0 field if the corresponding
14942ACPI 2.0 X field is zero (even though the table revision indicates
14943a full ACPI 2.0 table.)  The ACPI specification will be updated to
14944clarify this issue.
14945
14946Fixed a problem with the SystemMemory operation region handler
14947where memory was always accessed byte-wise even if the AML-
14948specified access width was larger than a byte.  This caused
14949problems on systems with memory-mapped I/O.  Memory is now
14950accessed with the width specified.  On systems that do not support
14951non-aligned transfers, a check is made to guarantee proper address
14952alignment before proceeding in order to avoid an AML-caused
14953alignment fault within the kernel.
14954
14955
14956Fixed a problem with the ExtendedIrq resource where only one byte
14957of the 4-byte Irq field was extracted.
14958
14959Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
14960function was out of date and required a rewrite.
14961
14962Code and Data Size: Current core subsystem library sizes are shown
14963below.  These are the code and data sizes for the acpica.lib
14964produced by the Microsoft Visual C++ 6.0 compiler, and these
14965values do not include any ACPI driver or OSPM code.  The debug
14966version of the code includes the debug output trace mechanism and
14967has a larger code and data size.  Note that these values will vary
14968depending on the efficiency of the compiler and the compiler
14969options used during generation.
14970
14971  Previous Release
14972    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
14973    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
14974  Current Release:
14975    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
14976    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
14977
14978
149792) Linux
14980
14981PCI IRQ routing fixes (Dominik Brodowski)
14982
14983
149843) iASL Compiler Version X2042:
14985
14986Implemented an additional compile-time error check for a field
14987unit whose size + minimum access width would cause a run-time
14988access beyond the end-of-region.  Previously, only the field size
14989itself was checked.
14990
14991The Core subsystem and iASL compiler now share a common parse
14992object in preparation for compile-time evaluation of the type
149933/4/5 ASL operators.
14994
14995
14996----------------------------------------
14997Summary of changes for this release: 03_29_02
14998
149991) ACPI CA Core Subsystem Version 20020329:
15000
15001Implemented support for late evaluation of TermArg operands to
15002Buffer and Package objects.  This allows complex expressions to be
15003used in the declarations of these object types.
15004
15005Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
150061.0, if the field was larger than 32 bits, it was returned as a
15007buffer - otherwise it was returned as an integer.  In ACPI 2.0,
15008the field is returned as a buffer only if the field is larger than
1500964 bits.  The TableRevision is now considered when making this
15010conversion to avoid incompatibility with existing ASL code.
15011
15012Implemented logical addressing for AcpiOsGetRootPointer.  This
15013allows an RSDP with either a logical or physical address.  With
15014this support, the host OS can now override all ACPI tables with
15015one logical RSDP.  Includes implementation of  "typed" pointer
15016support to allow a common data type for both physical and logical
15017pointers internally.  This required a change to the
15018AcpiOsGetRootPointer interface.
15019
15020Implemented the use of ACPI 2.0 Generic Address Structures for all
15021GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
15022mapped I/O for these ACPI features.
15023
15024Initialization now ignores not only non-required tables (All
15025tables other than the FADT, FACS, DSDT, and SSDTs), but also does
15026not validate the table headers of unrecognized tables.
15027
15028Fixed a problem where a notify handler could only be
15029installed/removed on an object of type Device.  All "notify"
15030
15031objects are now supported -- Devices, Processor, Power, and
15032Thermal.
15033
15034Removed most verbosity from the ACPI_DB_INFO debug level.  Only
15035critical information is returned when this debug level is enabled.
15036
15037Code and Data Size: Current core subsystem library sizes are shown
15038below.  These are the code and data sizes for the acpica.lib
15039produced by the Microsoft Visual C++ 6.0 compiler, and these
15040values do not include any ACPI driver or OSPM code.  The debug
15041version of the code includes the debug output trace mechanism and
15042has a larger code and data size.  Note that these values will vary
15043depending on the efficiency of the compiler and the compiler
15044options used during generation.
15045
15046  Previous Release
15047    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
15048    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
15049  Current Release:
15050    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
15051    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
15052
15053
150542) Linux:
15055
15056The processor driver (acpi_processor.c) now fully supports ACPI
150572.0-based processor performance control (e.g. Intel(R)
15058SpeedStep(TM) technology) Note that older laptops that only have
15059the Intel "applet" interface are not supported through this.  The
15060'limit' and 'performance' interface (/proc) are fully functional.
15061[Note that basic policy for controlling performance state
15062transitions will be included in the next version of ospmd.]  The
15063idle handler was modified to more aggressively use C2, and PIIX4
15064errata handling underwent a complete overhaul (big thanks to
15065Dominik Brodowski).
15066
15067Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
15068based devices in the ACPI namespace are now dynamically bound
15069(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
15070This allows, among other things, ACPI to resolve bus numbers for
15071subordinate PCI bridges.
15072
15073Enhanced PCI IRQ routing to get the proper bus number for _PRT
15074entries defined underneath PCI bridges.
15075
15076Added IBM 600E to bad bios list due to invalid _ADR value for
15077PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
15078
15079In the process of adding full MADT support (e.g. IOAPIC) for IA32
15080(acpi.c, mpparse.c) -- stay tuned.
15081
15082Added back visual differentiation between fixed-feature and
15083control-method buttons in dmesg.  Buttons are also subtyped (e.g.
15084button/power/PWRF) to simplify button identification.
15085
15086We no longer use -Wno-unused when compiling debug. Please ignore
15087any "_THIS_MODULE defined but not used" messages.
15088
15089Can now shut down the system using "magic sysrq" key.
15090
15091
150923) iASL Compiler version 2041:
15093
15094Fixed a problem where conversion errors for hex/octal/decimal
15095constants were not reported.
15096
15097Implemented a fix for the General Register template Address field.
15098This field was 8 bits when it should be 64.
15099
15100Fixed a problem where errors/warnings were no longer being emitted
15101within the listing output file.
15102
15103Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
15104exactly 4 characters, alphanumeric only.
15105
15106
15107
15108
15109----------------------------------------
15110Summary of changes for this release: 03_08_02
15111
15112
151131) ACPI CA Core Subsystem Version 20020308:
15114
15115Fixed a problem with AML Fields where the use of the "AccessAny"
15116keyword could cause an interpreter error due to attempting to read
15117or write beyond the end of the parent Operation Region.
15118
15119Fixed a problem in the SystemMemory Operation Region handler where
15120an attempt was made to map memory beyond the end of the region.
15121This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
15122errors on some Linux systems.
15123
15124Fixed a problem where the interpreter/namespace "search to root"
15125algorithm was not functioning for some object types.  Relaxed the
15126internal restriction on the search to allow upsearches for all
15127external object types as well as most internal types.
15128
15129
151302) Linux:
15131
15132We now use safe_halt() macro versus individual calls to sti | hlt.
15133
15134Writing to the processor limit interface should now work. "echo 1"
15135will increase the limit, 2 will decrease, and 0 will reset to the
15136
15137default.
15138
15139
151403) ASL compiler:
15141
15142Fixed segfault on Linux version.
15143
15144
15145----------------------------------------
15146Summary of changes for this release: 02_25_02
15147
151481) ACPI CA Core Subsystem:
15149
15150
15151Fixed a problem where the GPE bit masks were not initialized
15152properly, causing erratic GPE behavior.
15153
15154Implemented limited support for multiple calling conventions.  The
15155code can be generated with either the VPL (variable parameter
15156list, or "C") convention, or the FPL (fixed parameter list, or
15157"Pascal") convention.  The core subsystem is about 3.4% smaller
15158when generated with FPL.
15159
15160
151612) Linux
15162
15163Re-add some /proc/acpi/event functionality that was lost during
15164the rewrite
15165
15166Resolved issue with /proc events for fixed-feature buttons showing
15167up as the system device.
15168
15169Fixed checks on C2/C3 latencies to be inclusive of maximum values.
15170
15171Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
15172
15173Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
15174
15175Fixed limit interface & usage to fix bugs with passive cooling
15176hysterisis.
15177
15178Restructured PRT support.
15179
15180
15181----------------------------------------
15182Summary of changes for this label: 02_14_02
15183
15184
151851) ACPI CA Core Subsystem:
15186
15187Implemented support in AcpiLoadTable to allow loading of FACS and
15188FADT tables.
15189
15190Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
15191been removed.  All 64-bit platforms should be migrated to the ACPI
151922.0 tables.  The actbl71.h header has been removed from the source
15193tree.
15194
15195All C macros defined within the subsystem have been prefixed with
15196"ACPI_" to avoid collision with other system include files.
15197
15198Removed the return value for the two AcpiOsPrint interfaces, since
15199it is never used and causes lint warnings for ignoring the return
15200value.
15201
15202Added error checking to all internal mutex acquire and release
15203calls.  Although a failure from one of these interfaces is
15204probably a fatal system error, these checks will cause the
15205immediate abort of the currently executing method or interface.
15206
15207Fixed a problem where the AcpiSetCurrentResources interface could
15208fault.  This was a side effect of the deployment of the new memory
15209allocation model.
15210
15211Fixed a couple of problems with the Global Lock support introduced
15212in the last major build.  The "common" (1.0/2.0) internal FACS was
15213being overwritten with the FACS signature and clobbering the
15214Global Lock pointer.  Also, the actual firmware FACS was being
15215unmapped after construction of the "common" FACS, preventing
15216access to the actual Global Lock field within it.  The "common"
15217internal FACS is no longer installed as an actual ACPI table; it
15218is used simply as a global.
15219
15220Code and Data Size: Current core subsystem library sizes are shown
15221below.  These are the code and data sizes for the acpica.lib
15222produced by the Microsoft Visual C++ 6.0 compiler, and these
15223values do not include any ACPI driver or OSPM code.  The debug
15224version of the code includes the debug output trace mechanism and
15225has a larger code and data size.  Note that these values will vary
15226depending on the efficiency of the compiler and the compiler
15227options used during generation.
15228
15229  Previous Release (02_07_01)
15230    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
15231    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
15232  Current Release:
15233    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
15234    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
15235
15236
152372) Linux
15238
15239Updated Linux-specific code for core macro and OSL interface
15240changes described above.
15241
15242Improved /proc/acpi/event. It now can be opened only once and has
15243proper poll functionality.
15244
15245Fixed and restructured power management (acpi_bus).
15246
15247Only create /proc "view by type" when devices of that class exist.
15248
15249Fixed "charging/discharging" bug (and others) in acpi_battery.
15250
15251Improved thermal zone code.
15252
15253
152543) ASL Compiler, version X2039:
15255
15256
15257Implemented the new compiler restriction on ASL String hex/octal
15258escapes to non-null, ASCII values.  An error results if an invalid
15259value is used.  (This will require an ACPI 2.0 specification
15260change.)
15261
15262AML object labels that are output to the optional C and ASM source
15263are now prefixed with both the ACPI table signature and table ID
15264to help guarantee uniqueness within a large BIOS project.
15265
15266
15267----------------------------------------
15268Summary of changes for this label: 02_01_02
15269
152701) ACPI CA Core Subsystem:
15271
15272ACPI 2.0 support is complete in the entire Core Subsystem and the
15273ASL compiler. All new ACPI 2.0 operators are implemented and all
15274other changes for ACPI 2.0 support are complete.  With
15275simultaneous code and data optimizations throughout the subsystem,
15276ACPI 2.0 support has been implemented with almost no additional
15277cost in terms of code and data size.
15278
15279Implemented a new mechanism for allocation of return buffers.  If
15280the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
15281be allocated on behalf of the caller.  Consolidated all return
15282buffer validation and allocation to a common procedure.  Return
15283buffers will be allocated via the primary OSL allocation interface
15284since it appears that a separate pool is not needed by most users.
15285If a separate pool is required for these buffers, the caller can
15286still use the original mechanism and pre-allocate the buffer(s).
15287
15288Implemented support for string operands within the DerefOf
15289operator.
15290
15291Restructured the Hardware and Event managers to be table driven,
15292simplifying the source code and reducing the amount of generated
15293code.
15294
15295Split the common read/write low-level ACPI register bitfield
15296procedure into a separate read and write, simplifying the code
15297considerably.
15298
15299Obsoleted the AcpiOsCallocate OSL interface.  This interface was
15300used only a handful of times and didn't have enough critical mass
15301for a separate interface.  Replaced with a common calloc procedure
15302in the core.
15303
15304Fixed a reported problem with the GPE number mapping mechanism
15305that allows GPE1 numbers to be non-contiguous with GPE0.
15306Reorganized the GPE information and shrunk a large array that was
15307originally large enough to hold info for all possible GPEs (256)
15308to simply large enough to hold all GPEs up to the largest GPE
15309number on the machine.
15310
15311Fixed a reported problem with resource structure alignment on 64-
15312bit platforms.
15313
15314Changed the AcpiEnableEvent and AcpiDisableEvent external
15315interfaces to not require any flags for the common case of
15316enabling/disabling a GPE.
15317
15318Implemented support to allow a "Notify" on a Processor object.
15319
15320Most TBDs in comments within the source code have been resolved
15321and eliminated.
15322
15323
15324Fixed a problem in the interpreter where a standalone parent
15325prefix (^) was not handled correctly in the interpreter and
15326debugger.
15327
15328Removed obsolete and unnecessary GPE save/restore code.
15329
15330Implemented Field support in the ASL Load operator.  This allows a
15331table to be loaded from a named field, in addition to loading a
15332table directly from an Operation Region.
15333
15334Implemented timeout and handle support in the external Global Lock
15335interfaces.
15336
15337Fixed a problem in the AcpiDump utility where pathnames were no
15338longer being generated correctly during the dump of named objects.
15339
15340Modified the AML debugger to give a full display of if/while
15341predicates instead of just one AML opcode at a time.  (The
15342predicate can have several nested ASL statements.)  The old method
15343was confusing during single stepping.
15344
15345Code and Data Size: Current core subsystem library sizes are shown
15346below. These are the code and data sizes for the acpica.lib
15347produced by the Microsoft Visual C++ 6.0 compiler, and these
15348values do not include any ACPI driver or OSPM code.  The debug
15349version of the code includes the debug output trace mechanism and
15350has a larger code and data size.  Note that these values will vary
15351depending on the efficiency of the compiler and the compiler
15352options used during generation.
15353
15354  Previous Release (12_18_01)
15355     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
15356     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
15357   Current Release:
15358     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
15359     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
15360
153612) Linux
15362
15363 Implemented fix for PIIX reverse throttling errata (Processor
15364driver)
15365
15366Added new Limit interface (Processor and Thermal drivers)
15367
15368New thermal policy (Thermal driver)
15369
15370Many updates to /proc
15371
15372Battery "low" event support (Battery driver)
15373
15374Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
15375
15376IA32 - IA64 initialization unification, no longer experimental
15377
15378Menuconfig options redesigned
15379
153803) ASL Compiler, version X2037:
15381
15382Implemented several new output features to simplify integration of
15383AML code into  firmware: 1) Output the AML in C source code with
15384labels for each named ASL object.  The    original ASL source code
15385is interleaved as C comments. 2) Output the AML in ASM source code
15386with labels and interleaved ASL    source. 3) Output the AML in
15387raw hex table form, in either C or ASM.
15388
15389Implemented support for optional string parameters to the
15390LoadTable operator.
15391
15392Completed support for embedded escape sequences within string
15393literals.  The compiler now supports all single character escapes
15394as well as the Octal and Hex escapes.  Note: the insertion of a
15395null byte into a string literal (via the hex/octal escape) causes
15396the string to be immediately terminated.  A warning is issued.
15397
15398Fixed a problem where incorrect AML was generated for the case
15399where an ASL namepath consists of a single parent prefix (
15400
15401) with no trailing name segments.
15402
15403The compiler has been successfully generated with a 64-bit C
15404compiler.
15405
15406
15407
15408
15409----------------------------------------
15410Summary of changes for this label: 12_18_01
15411
154121) Linux
15413
15414Enhanced blacklist with reason and severity fields. Any table's
15415signature may now be used to identify a blacklisted system.
15416
15417Call _PIC control method to inform the firmware which interrupt
15418model the OS is using. Turn on any disabled link devices.
15419
15420Cleaned up busmgr /proc error handling (Andreas Dilger)
15421
15422 2) ACPI CA Core Subsystem:
15423
15424Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
15425while loop)
15426
15427Completed implementation of the ACPI 2.0 "Continue",
15428"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
15429operators.  All new ACPI 2.0 operators are now implemented in both
15430the ASL compiler and the AML interpreter.  The only remaining ACPI
154312.0 task is support for the String data type in the DerefOf
15432operator.  Fixed a problem with AcquireMutex where the status code
15433was lost if the caller had to actually wait for the mutex.
15434
15435Increased the maximum ASL Field size from 64K bits to 4G bits.
15436
15437Completed implementation of the external Global Lock interfaces --
15438AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
15439Handler parameters were added.
15440
15441Completed another pass at removing warnings and issues when
15442compiling with 64-bit compilers.  The code now compiles cleanly
15443with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
15444add and subtract (diff) macros have changed considerably.
15445
15446
15447Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1544864-bit platforms, 32-bits on all others.  This type is used
15449wherever memory allocation and/or the C sizeof() operator is used,
15450and affects the OSL memory allocation interfaces AcpiOsAllocate
15451and AcpiOsCallocate.
15452
15453Implemented sticky user breakpoints in the AML debugger.
15454
15455Code and Data Size: Current core subsystem library sizes are shown
15456below. These are the code and data sizes for the acpica.lib
15457produced by the Microsoft Visual C++ 6.0 compiler, and these
15458values do not include any ACPI driver or OSPM code.  The debug
15459version of the code includes the debug output trace mechanism and
15460has a larger code and data size. Note that these values will vary
15461depending on the efficiency of the compiler and the compiler
15462options used during generation.
15463
15464  Previous Release (12_05_01)
15465     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
15466     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
15467   Current Release:
15468     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
15469     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
15470
15471 3) ASL Compiler, version X2034:
15472
15473Now checks for (and generates an error if detected) the use of a
15474Break or Continue statement without an enclosing While statement.
15475
15476
15477Successfully generated the compiler with the Intel 64-bit C
15478compiler.
15479
15480 ----------------------------------------
15481Summary of changes for this label: 12_05_01
15482
15483 1) ACPI CA Core Subsystem:
15484
15485The ACPI 2.0 CopyObject operator is fully implemented.  This
15486operator creates a new copy of an object (and is also used to
15487bypass the "implicit conversion" mechanism of the Store operator.)
15488
15489The ACPI 2.0 semantics for the SizeOf operator are fully
15490implemented.  The change is that performing a SizeOf on a
15491reference object causes an automatic dereference of the object to
15492tha actual value before the size is evaluated. This behavior was
15493undefined in ACPI 1.0.
15494
15495The ACPI 2.0 semantics for the Extended IRQ resource descriptor
15496have been implemented.  The interrupt polarity and mode are now
15497independently set.
15498
15499Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
15500appearing in Package objects were not properly converted to
15501integers when the internal Package was converted to an external
15502object (via the AcpiEvaluateObject interface.)
15503
15504Fixed a problem with the namespace object deletion mechanism for
15505objects created by control methods.  There were two parts to this
15506problem: 1) Objects created during the initialization phase method
15507parse were not being deleted, and 2) The object owner ID mechanism
15508to track objects was broken.
15509
15510Fixed a problem where the use of the ASL Scope operator within a
15511control method would result in an invalid opcode exception.
15512
15513Fixed a problem introduced in the previous label where the buffer
15514length required for the _PRT structure was not being returned
15515correctly.
15516
15517Code and Data Size: Current core subsystem library sizes are shown
15518below. These are the code and data sizes for the acpica.lib
15519produced by the Microsoft Visual C++ 6.0 compiler, and these
15520values do not include any ACPI driver or OSPM code.  The debug
15521version of the code includes the debug output trace mechanism and
15522has a larger code and data size.  Note that these values will vary
15523depending on the efficiency of the compiler and the compiler
15524options used during generation.
15525
15526  Previous Release (11_20_01)
15527     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
15528     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
15529
15530  Current Release:
15531     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
15532     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
15533
15534 2) Linux:
15535
15536Updated all files to apply cleanly against 2.4.16.
15537
15538Added basic PCI Interrupt Routing Table (PRT) support for IA32
15539(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
15540version supports both static and dyanmic PRT entries, but dynamic
15541entries are treated as if they were static (not yet
15542reconfigurable).  Architecture- specific code to use this data is
15543absent on IA32 but should be available shortly.
15544
15545Changed the initialization sequence to start the ACPI interpreter
15546(acpi_init) prior to initialization of the PCI driver (pci_init)
15547in init/main.c.  This ordering is required to support PRT and
15548facilitate other (future) enhancement.  A side effect is that the
15549ACPI bus driver and certain device drivers can no longer be loaded
15550as modules.
15551
15552Modified the 'make menuconfig' options to allow PCI Interrupt
15553Routing support to be included without the ACPI Bus and other
15554device drivers.
15555
15556 3) ASL Compiler, version X2033:
15557
15558Fixed some issues with the use of the new CopyObject and
15559DataTableRegion operators.  Both are fully functional.
15560
15561 ----------------------------------------
15562Summary of changes for this label: 11_20_01
15563
15564 20 November 2001.  Summary of changes for this release.
15565
15566 1) ACPI CA Core Subsystem:
15567
15568Updated Index support to match ACPI 2.0 semantics.  Storing a
15569Integer, String, or Buffer to an Index of a Buffer will store only
15570the least-significant byte of the source to the Indexed buffer
15571byte.  Multiple writes are not performed.
15572
15573Fixed a problem where the access type used in an AccessAs ASL
15574operator was not recorded correctly into the field object.
15575
15576Fixed a problem where ASL Event objects were created in a
15577signalled state. Events are now created in an unsignalled state.
15578
15579The internal object cache is now purged after table loading and
15580initialization to reduce the use of dynamic kernel memory -- on
15581the assumption that object use is greatest during the parse phase
15582of the entire table (versus the run-time use of individual control
15583methods.)
15584
15585ACPI 2.0 variable-length packages are now fully operational.
15586
15587Code and Data Size: Code and Data optimizations have permitted new
15588feature development with an actual reduction in the library size.
15589Current core subsystem library sizes are shown below.  These are
15590the code and data sizes for the acpica.lib produced by the
15591Microsoft Visual C++ 6.0 compiler, and these values do not include
15592any ACPI driver or OSPM code.  The debug version of the code
15593includes the debug output trace mechanism and has a larger code
15594and data size.  Note that these values will vary depending on the
15595efficiency of the compiler and the compiler options used during
15596generation.
15597
15598  Previous Release (11_09_01):
15599     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
15600     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
15601
15602  Current Release:
15603     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
15604     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
15605
15606 2) Linux:
15607
15608Enhanced the ACPI boot-time initialization code to allow the use
15609of Local APIC tables for processor enumeration on IA-32, and to
15610pave the way for a fully MPS-free boot (on SMP systems) in the
15611near future.  This functionality replaces
15612arch/i386/kernel/acpitables.c, which was introduced in an earlier
156132.4.15-preX release.  To enable this feature you must add
15614"acpi_boot=on" to the kernel command line -- see the help entry
15615for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
15616the works...
15617
15618Restructured the configuration options to allow boot-time table
15619parsing support without inclusion of the ACPI Interpreter (and
15620other) code.
15621
15622NOTE: This release does not include fixes for the reported events,
15623power-down, and thermal passive cooling issues (coming soon).
15624
15625 3) ASL Compiler:
15626
15627Added additional typechecking for Fields within restricted access
15628Operation Regions.  All fields within EC and CMOS regions must be
15629declared with ByteAcc. All fields withing SMBus regions must be
15630declared with the BufferAcc access type.
15631
15632Fixed a problem where the listing file output of control methods
15633no longer interleaved the actual AML code with the ASL source
15634code.
15635
15636
15637
15638
15639----------------------------------------
15640Summary of changes for this label: 11_09_01
15641
156421) ACPI CA Core Subsystem:
15643
15644Implemented ACPI 2.0-defined support for writes to fields with a
15645Buffer, String, or Integer source operand that is smaller than the
15646target field. In these cases, the source operand is zero-extended
15647to fill the target field.
15648
15649Fixed a problem where a Field starting bit offset (within the
15650parent operation region) was calculated incorrectly if the
15651
15652alignment of the field differed from the access width.  This
15653affected CreateWordField, CreateDwordField, CreateQwordField, and
15654possibly other fields that use the "AccessAny" keyword.
15655
15656Fixed a problem introduced in the 11_02_01 release where indirect
15657stores through method arguments did not operate correctly.
15658
156592) Linux:
15660
15661Implemented boot-time ACPI table parsing support
15662(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
15663facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
15664legacy BIOS interfaces (e.g. MPS) for the configuration of system
15665processors, memory, and interrupts during setup_arch().  Note that
15666this patch does not include the required architecture-specific
15667changes required to apply this information -- subsequent patches
15668will be posted for both IA32 and IA64 to achieve this.
15669
15670Added low-level sleep support for IA32 platforms, courtesy of Pat
15671Mochel. This allows IA32 systems to transition to/from various
15672sleeping states (e.g. S1, S3), although the lack of a centralized
15673driver model and power-manageable drivers will prevent its
15674(successful) use on most systems.
15675
15676Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
15677submenu, unified IA32 and IA64 options, added new "Boot using ACPI
15678tables" option, etc.
15679
15680Increased the default timeout for the EC driver from 1ms to 10ms
15681(1000 cycles of 10us) to try to address AE_TIME errors during EC
15682transactions.
15683
15684 ----------------------------------------
15685Summary of changes for this label: 11_02_01
15686
156871) ACPI CA Core Subsystem:
15688
15689ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
15690(QWordAcc keyword). All ACPI 2.0 64-bit support is now
15691implemented.
15692
15693OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
15694changes to support ACPI 2.0 Qword field access.  Read/Write
15695PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
15696accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
15697the value parameter for the address space handler interface is now
15698an ACPI_INTEGER.  OSL implementations of these interfaces must now
15699handle the case where the Width parameter is 64.
15700
15701Index Fields: Fixed a problem where unaligned bit assembly and
15702disassembly for IndexFields was not supported correctly.
15703
15704Index and Bank Fields:  Nested Index and Bank Fields are now
15705supported. During field access, a check is performed to ensure
15706that the value written to an Index or Bank register is not out of
15707the range of the register.  The Index (or Bank) register is
15708written before each access to the field data. Future support will
15709include allowing individual IndexFields to be wider than the
15710DataRegister width.
15711
15712Fields: Fixed a problem where the AML interpreter was incorrectly
15713attempting to write beyond the end of a Field/OpRegion.  This was
15714a boundary case that occurred when a DWORD field was written to a
15715BYTE access OpRegion, forcing multiple writes and causing the
15716interpreter to write one datum too many.
15717
15718Fields: Fixed a problem with Field/OpRegion access where the
15719starting bit address of a field was incorrectly calculated if the
15720current access type was wider than a byte (WordAcc, DwordAcc, or
15721QwordAcc).
15722
15723Fields: Fixed a problem where forward references to individual
15724FieldUnits (individual Field names within a Field definition) were
15725not resolved during the AML table load.
15726
15727Fields: Fixed a problem where forward references from a Field
15728definition to the parent Operation Region definition were not
15729resolved during the AML table load.
15730
15731Fields: Duplicate FieldUnit names within a scope are now detected
15732during AML table load.
15733
15734Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
15735returned an incorrect name for the root node.
15736
15737Code and Data Size: Code and Data optimizations have permitted new
15738feature development with an actual reduction in the library size.
15739Current core subsystem library sizes are shown below.  These are
15740the code and data sizes for the acpica.lib produced by the
15741Microsoft Visual C++ 6.0 compiler, and these values do not include
15742any ACPI driver or OSPM code.  The debug version of the code
15743includes the debug output trace mechanism and has a larger code
15744and data size.  Note that these values will vary depending on the
15745efficiency of the compiler and the compiler options used during
15746generation.
15747
15748  Previous Release (10_18_01):
15749     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
15750     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
15751
15752  Current Release:
15753     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
15754     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
15755
15756 2) Linux:
15757
15758Improved /proc processor output (Pavel Machek) Re-added
15759MODULE_LICENSE("GPL") to all modules.
15760
15761 3) ASL Compiler version X2030:
15762
15763Duplicate FieldUnit names within a scope are now detected and
15764flagged as errors.
15765
15766 4) Documentation:
15767
15768Programmer Reference updated to reflect OSL and address space
15769handler interface changes described above.
15770
15771----------------------------------------
15772Summary of changes for this label: 10_18_01
15773
15774ACPI CA Core Subsystem:
15775
15776Fixed a problem with the internal object reference count mechanism
15777that occasionally caused premature object deletion. This resolves
15778all of the outstanding problem reports where an object is deleted
15779in the middle of an interpreter evaluation.  Although this problem
15780only showed up in rather obscure cases, the solution to the
15781problem involved an adjustment of all reference counts involving
15782objects attached to namespace nodes.
15783
15784Fixed a problem with Field support in the interpreter where
15785writing to an aligned field whose length is an exact multiple (2
15786or greater) of the field access granularity would cause an attempt
15787to write beyond the end of the field.
15788
15789The top level AML opcode execution functions within the
15790interpreter have been renamed with a more meaningful and
15791consistent naming convention.  The modules exmonad.c and
15792exdyadic.c were eliminated.  New modules are exoparg1.c,
15793exoparg2.c, exoparg3.c, and exoparg6.c.
15794
15795Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
15796
15797Fixed a problem where the AML debugger was causing some internal
15798objects to not be deleted during subsystem termination.
15799
15800Fixed a problem with the external AcpiEvaluateObject interface
15801where the subsystem would fault if the named object to be
15802evaluated refered to a constant such as Zero, Ones, etc.
15803
15804Fixed a problem with IndexFields and BankFields where the
15805subsystem would fault if the index, data, or bank registers were
15806not defined in the same scope as the field itself.
15807
15808Added printf format string checking for compilers that support
15809this feature.  Corrected more than 50 instances of issues with
15810format specifiers within invocations of ACPI_DEBUG_PRINT
15811throughout the core subsystem code.
15812
15813The ASL "Revision" operator now returns the ACPI support level
15814implemented in the core - the value "2" since the ACPI 2.0 support
15815is more than 50% implemented.
15816
15817Enhanced the output of the AML debugger "dump namespace" command
15818to output in a more human-readable form.
15819
15820Current core subsystem library code sizes are shown below.  These
15821
15822are the code and data sizes for the acpica.lib produced by the
15823Microsoft Visual C++ 6.0 compiler, and these values do not include
15824any ACPI driver or OSPM code.  The debug version of the code
15825includes the full debug trace mechanism -- leading to a much
15826
15827larger code and data size.  Note that these values will vary
15828depending on the efficiency of the compiler and the compiler
15829options used during generation.
15830
15831     Previous Label (09_20_01):
15832     Non-Debug Version:    65K Code,     5K Data,     70K Total
15833     Debug Version:       138K Code,    58K Data,    196K Total
15834
15835     This Label:
15836
15837     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
15838     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
15839
15840Linux:
15841
15842Implemented a "Bad BIOS Blacklist" to track machines that have
15843known ASL/AML problems.
15844
15845Enhanced the /proc interface for the thermal zone driver and added
15846support for _HOT (the critical suspend trip point).  The 'info'
15847file now includes threshold/policy information, and allows setting
15848of _SCP (cooling preference) and _TZP (polling frequency) values
15849to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
15850frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
15851preference to the passive/quiet mode (if supported by the ASL).
15852
15853Implemented a workaround for a gcc bug that resuted in an OOPs
15854when loading the control method battery driver.
15855
15856 ----------------------------------------
15857Summary of changes for this label: 09_20_01
15858
15859 ACPI CA Core Subsystem:
15860
15861The AcpiEnableEvent and AcpiDisableEvent interfaces have been
15862modified to allow individual GPE levels to be flagged as wake-
15863enabled (i.e., these GPEs are to remain enabled when the platform
15864sleeps.)
15865
15866The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
15867support wake-enabled GPEs.  This means that upon entering the
15868sleep state, all GPEs that are not wake-enabled are disabled.
15869When leaving the sleep state, these GPEs are reenabled.
15870
15871A local double-precision divide/modulo module has been added to
15872enhance portability to OS kernels where a 64-bit math library is
15873not available.  The new module is "utmath.c".
15874
15875Several optimizations have been made to reduce the use of CPU
15876stack.  Originally over 2K, the maximum stack usage is now below
158772K at 1860  bytes (1.82k)
15878
15879Fixed a problem with the AcpiGetFirmwareTable interface where the
15880root table pointer was not mapped into a logical address properly.
15881
15882Fixed a problem where a NULL pointer was being dereferenced in the
15883interpreter code for the ASL Notify operator.
15884
15885Fixed a problem where the use of the ASL Revision operator
15886returned an error. This operator now returns the current version
15887of the ACPI CA core subsystem.
15888
15889Fixed a problem where objects passed as control method parameters
15890to AcpiEvaluateObject were always deleted at method termination.
15891However, these objects may end up being stored into the namespace
15892by the called method.  The object reference count mechanism was
15893applied to these objects instead of a force delete.
15894
15895Fixed a problem where static strings or buffers (contained in the
15896AML code) that are declared as package elements within the ASL
15897code could cause a fault because the interpreter would attempt to
15898delete them.  These objects are now marked with the "static
15899object" flag to prevent any attempt to delete them.
15900
15901Implemented an interpreter optimization to use operands directly
15902from the state object instead of extracting the operands to local
15903variables.  This reduces stack use and code size, and improves
15904performance.
15905
15906The module exxface.c was eliminated as it was an unnecessary extra
15907layer of code.
15908
15909Current core subsystem library code sizes are shown below.  These
15910are the code and data sizes for the acpica.lib produced by the
15911Microsoft Visual C++ 6.0 compiler, and these values do not include
15912any ACPI driver or OSPM code.  The debug version of the code
15913includes the full debug trace mechanism -- leading to a much
15914larger code and data size.  Note that these values will vary
15915depending on the efficiency of the compiler and the compiler
15916options used during generation.
15917
15918  Non-Debug Version:  65K Code,   5K Data,   70K Total
15919(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
15920Total  (Previously 195K)
15921
15922Linux:
15923
15924Support for ACPI 2.0 64-bit integers has been added.   All ACPI
15925Integer objects are now 64 bits wide
15926
15927All Acpi data types and structures are now in lower case.  Only
15928Acpi macros are upper case for differentiation.
15929
15930 Documentation:
15931
15932Changes to the external interfaces as described above.
15933
15934 ----------------------------------------
15935Summary of changes for this label: 08_31_01
15936
15937 ACPI CA Core Subsystem:
15938
15939A bug with interpreter implementation of the ASL Divide operator
15940was found and fixed.  The implicit function return value (not the
15941explicit store operands) was returning the remainder instead of
15942the quotient.  This was a longstanding bug and it fixes several
15943known outstanding issues on various platforms.
15944
15945The ACPI_DEBUG_PRINT and function trace entry/exit macros have
15946been further optimized for size.  There are 700 invocations of the
15947DEBUG_PRINT macro alone, so each optimization reduces the size of
15948the debug version of the subsystem significantly.
15949
15950A stack trace mechanism has been implemented.  The maximum stack
15951usage is about 2K on 32-bit platforms.  The debugger command "stat
15952stack" will display the current maximum stack usage.
15953
15954All public symbols and global variables within the subsystem are
15955now prefixed with the string "Acpi".  This keeps all of the
15956symbols grouped together in a kernel map, and avoids conflicts
15957with other kernel subsystems.
15958
15959Most of the internal fixed lookup tables have been moved into the
15960code segment via the const operator.
15961
15962Several enhancements have been made to the interpreter to both
15963reduce the code size and improve performance.
15964
15965Current core subsystem library code sizes are shown below.  These
15966are the code and data sizes for the acpica.lib produced by the
15967Microsoft Visual C++ 6.0 compiler, and these values do not include
15968any ACPI driver or OSPM code.  The debug version of the code
15969includes the full debug trace mechanism which contains over 700
15970invocations of the DEBUG_PRINT macro, 500 function entry macro
15971invocations, and over 900 function exit macro invocations --
15972leading to a much larger code and data size.  Note that these
15973values will vary depending on the efficiency of the compiler and
15974the compiler options used during generation.
15975
15976        Non-Debug Version:  64K Code,   5K Data,   69K Total
15977Debug Version:     137K Code,  58K Data,  195K Total
15978
15979 Linux:
15980
15981Implemented wbinvd() macro, pending a kernel-wide definition.
15982
15983Fixed /proc/acpi/event to handle poll() and short reads.
15984
15985 ASL Compiler, version X2026:
15986
15987Fixed a problem introduced in the previous label where the AML
15988
15989code emitted for package objects produced packages with zero
15990length.
15991
15992 ----------------------------------------
15993Summary of changes for this label: 08_16_01
15994
15995ACPI CA Core Subsystem:
15996
15997The following ACPI 2.0 ASL operators have been implemented in the
15998AML interpreter (These are already supported by the Intel ASL
15999compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
16000ToBuffer.  Support for 64-bit AML constants is implemented in the
16001AML parser, debugger, and disassembler.
16002
16003The internal memory tracking mechanism (leak detection code) has
16004been upgraded to reduce the memory overhead (a separate tracking
16005block is no longer allocated for each memory allocation), and now
16006supports all of the internal object caches.
16007
16008The data structures and code for the internal object caches have
16009been coelesced and optimized so that there is a single cache and
16010memory list data structure and a single group of functions that
16011implement generic cache management.  This has reduced the code
16012size in both the debug and release versions of the subsystem.
16013
16014The DEBUG_PRINT macro(s) have been optimized for size and replaced
16015by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
16016different, because it generates a single call to an internal
16017function.  This results in a savings of about 90 bytes per
16018invocation, resulting in an overall code and data savings of about
1601916% in the debug version of the subsystem.
16020
16021 Linux:
16022
16023Fixed C3 disk corruption problems and re-enabled C3 on supporting
16024machines.
16025
16026Integrated low-level sleep code by Patrick Mochel.
16027
16028Further tweaked source code Linuxization.
16029
16030Other minor fixes.
16031
16032 ASL Compiler:
16033
16034Support for ACPI 2.0 variable length packages is fixed/completed.
16035
16036Fixed a problem where the optional length parameter for the ACPI
160372.0 ToString operator.
16038
16039Fixed multiple extraneous error messages when a syntax error is
16040detected within the declaration line of a control method.
16041
16042 ----------------------------------------
16043Summary of changes for this label: 07_17_01
16044
16045ACPI CA Core Subsystem:
16046
16047Added a new interface named AcpiGetFirmwareTable to obtain any
16048ACPI table via the ACPI signature.  The interface can be called at
16049any time during kernel initialization, even before the kernel
16050virtual memory manager is initialized and paging is enabled.  This
16051allows kernel subsystems to obtain ACPI tables very early, even
16052before the ACPI CA subsystem is initialized.
16053
16054Fixed a problem where Fields defined with the AnyAcc attribute
16055could be resolved to the incorrect address under the following
16056conditions: 1) the field width is larger than 8 bits and 2) the
16057parent operation region is not defined on a DWORD boundary.
16058
16059Fixed a problem where the interpreter is not being locked during
16060namespace initialization (during execution of the _INI control
16061methods), causing an error when an attempt is made to release it
16062later.
16063
16064ACPI 2.0 support in the AML Interpreter has begun and will be
16065ongoing throughout the rest of this year.  In this label, The Mod
16066operator is implemented.
16067
16068Added a new data type to contain full PCI addresses named
16069ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
16070and Function values.
16071
16072 Linux:
16073
16074Enhanced the Linux version of the source code to change most
16075capitalized ACPI type names to lowercase. For example, all
16076instances of ACPI_STATUS are changed to acpi_status.  This will
16077result in a large diff, but the change is strictly cosmetic and
16078aligns the CA code closer to the Linux coding standard.
16079
16080OSL Interfaces:
16081
16082The interfaces to the PCI configuration space have been changed to
16083add the PCI Segment number and to split the single 32-bit combined
16084DeviceFunction field into two 16-bit fields.  This was
16085accomplished by moving the four values that define an address in
16086PCI configuration space (segment, bus, device, and function) to
16087the new ACPI_PCI_ID structure.
16088
16089The changes to the PCI configuration space interfaces led to a
16090reexamination of the complete set of address space access
16091interfaces for PCI, I/O, and Memory.  The previously existing 18
16092interfaces have proven difficult to maintain (any small change
16093must be propagated across at least 6 interfaces) and do not easily
16094allow for future expansion to 64 bits if necessary.  Also, on some
16095systems, it would not be appropriate to demultiplex the access
16096width (8, 16, 32,or 64) before calling the OSL if the
16097corresponding native OS interfaces contain a similar access width
16098parameter.  For these reasons, the 18 address space interfaces
16099have been replaced by these 6 new ones:
16100
16101AcpiOsReadPciConfiguration
16102AcpiOsWritePciConfiguration
16103AcpiOsReadMemory
16104AcpiOsWriteMemory
16105AcpiOsReadPort
16106AcpiOsWritePort
16107
16108Added a new interface named AcpiOsGetRootPointer to allow the OSL
16109to perform the platform and/or OS-specific actions necessary to
16110obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
16111interface will simply call down to the CA core to perform the low-
16112memory search for the table.  On IA-64, the RSDP is obtained from
16113EFI.  Migrating this interface to the OSL allows the CA core to
16114
16115remain OS and platform independent.
16116
16117Added a new interface named AcpiOsSignal to provide a generic
16118"function code and pointer" interface for various miscellaneous
16119signals and notifications that must be made to the host OS.   The
16120first such signals are intended to support the ASL Fatal and
16121Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
16122interface has been obsoleted.
16123
16124The definition of the AcpiFormatException interface has been
16125changed to simplify its use.  The caller no longer must supply a
16126buffer to the call; A pointer to a const string is now returned
16127directly.  This allows the call to be easily used in printf
16128statements, etc. since the caller does not have to manage a local
16129buffer.
16130
16131
16132 ASL Compiler, Version X2025:
16133
16134The ACPI 2.0 Switch/Case/Default operators have been implemented
16135and are fully functional.  They will work with all ACPI 1.0
16136interpreters, since the operators are simply translated to If/Else
16137pairs.
16138
16139The ACPI 2.0 ElseIf operator is implemented and will also work
16140with 1.0 interpreters, for the same reason.
16141
16142Implemented support for ACPI 2.0 variable-length packages.  These
16143packages have a separate opcode, and their size is determined by
16144the interpreter at run-time.
16145
16146Documentation The ACPI CA Programmer Reference has been updated to
16147reflect the new interfaces and changes to existing interfaces.
16148
16149 ------------------------------------------
16150Summary of changes for this label: 06_15_01
16151
16152 ACPI CA Core Subsystem:
16153
16154Fixed a problem where a DWORD-accessed field within a Buffer
16155object would get its byte address inadvertently rounded down to
16156the nearest DWORD.  Buffers are always Byte-accessible.
16157
16158 ASL Compiler, version X2024:
16159
16160Fixed a problem where the Switch() operator would either fault or
16161hang the compiler.  Note however, that the AML code for this ACPI
161622.0 operator is not yet implemented.
16163
16164Compiler uses the new AcpiOsGetTimer interface to obtain compile
16165timings.
16166
16167Implementation of the CreateField operator automatically converts
16168a reference to a named field within a resource descriptor from a
16169byte offset to a bit offset if required.
16170
16171Added some missing named fields from the resource descriptor
16172support. These are the names that are automatically created by the
16173compiler to reference fields within a descriptor.  They are only
16174valid at compile time and are not passed through to the AML
16175interpreter.
16176
16177Resource descriptor named fields are now typed as Integers and
16178subject to compile-time typechecking when used in expressions.
16179
16180 ------------------------------------------
16181Summary of changes for this label: 05_18_01
16182
16183 ACPI CA Core Subsystem:
16184
16185Fixed a couple of problems in the Field support code where bits
16186from adjacent fields could be returned along with the proper field
16187bits. Restructured the field support code to improve performance,
16188readability and maintainability.
16189
16190New DEBUG_PRINTP macro automatically inserts the procedure name
16191into the output, saving hundreds of copies of procedure name
16192strings within the source, shrinking the memory footprint of the
16193debug version of the core subsystem.
16194
16195 Source Code Structure:
16196
16197The source code directory tree was restructured to reflect the
16198current organization of the component architecture.  Some files
16199and directories have been moved and/or renamed.
16200
16201 Linux:
16202
16203Fixed leaking kacpidpc processes.
16204
16205Fixed queueing event data even when /proc/acpi/event is not
16206opened.
16207
16208 ASL Compiler, version X2020:
16209
16210Memory allocation performance enhancement - over 24X compile time
16211improvement on large ASL files.  Parse nodes and namestring
16212buffers are now allocated from a large internal compiler buffer.
16213
16214The temporary .SRC file is deleted unless the "-s" option is
16215specified
16216
16217The "-d" debug output option now sends all output to the .DBG file
16218instead of the console.
16219
16220"External" second parameter is now optional
16221
16222"ElseIf" syntax now properly allows the predicate
16223
16224Last operand to "Load" now recognized as a Target operand
16225
16226Debug object can now be used anywhere as a normal object.
16227
16228ResourceTemplate now returns an object of type BUFFER
16229
16230EISAID now returns an object of type INTEGER
16231
16232"Index" now works with a STRING operand
16233
16234"LoadTable" now accepts optional parameters
16235
16236"ToString" length parameter is now optional
16237
16238"Interrupt (ResourceType," parse error fixed.
16239
16240"Register" with a user-defined region space parse error fixed
16241
16242Escaped backslash at the end of a string ("\\") scan/parse error
16243fixed
16244
16245"Revision" is now an object of type INTEGER.
16246
16247
16248
16249------------------------------------------
16250Summary of changes for this label: 05_02_01
16251
16252Linux:
16253
16254/proc/acpi/event now blocks properly.
16255
16256Removed /proc/sys/acpi. You can still dump your DSDT from
16257/proc/acpi/dsdt.
16258
16259 ACPI CA Core Subsystem:
16260
16261Fixed a problem introduced in the previous label where some of the
16262"small" resource descriptor types were not recognized.
16263
16264Improved error messages for the case where an ASL Field is outside
16265the range of the parent operation region.
16266
16267 ASL Compiler, version X2018:
16268
16269
16270Added error detection for ASL Fields that extend beyond the length
16271of the parent operation region (only if the length of the region
16272is known at compile time.)  This includes fields that have a
16273minimum access width that is smaller than the parent region, and
16274individual field units that are partially or entirely beyond the
16275extent of the parent.
16276
16277
16278
16279------------------------------------------
16280Summary of changes for this label: 04_27_01
16281
16282 ACPI CA Core Subsystem:
16283
16284Fixed a problem where the namespace mutex could be released at the
16285wrong time during execution of AcpiRemoveAddressSpaceHandler.
16286
16287Added optional thread ID output for debug traces, to simplify
16288debugging of multiple threads.  Added context switch notification
16289when the debug code realizes that a different thread is now
16290executing ACPI code.
16291
16292Some additional external data types have been prefixed with the
16293string "ACPI_" for consistency.  This may effect existing code.
16294The data types affected are the external callback typedefs - e.g.,
16295
16296WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
16297
16298 Linux:
16299
16300Fixed an issue with the OSL semaphore implementation where a
16301thread was waking up with an error from receiving a SIGCHLD
16302signal.
16303
16304Linux version of ACPI CA now uses the system C library for string
16305manipulation routines instead of a local implementation.
16306
16307Cleaned up comments and removed TBDs.
16308
16309 ASL Compiler, version X2017:
16310
16311Enhanced error detection and reporting for all file I/O
16312operations.
16313
16314 Documentation:
16315
16316Programmer Reference updated to version 1.06.
16317
16318
16319
16320------------------------------------------
16321Summary of changes for this label: 04_13_01
16322
16323 ACPI CA Core Subsystem:
16324
16325Restructured support for BufferFields and RegionFields.
16326BankFields support is now fully operational.  All known 32-bit
16327limitations on field sizes have been removed.  Both BufferFields
16328and (Operation) RegionFields are now supported by the same field
16329management code.
16330
16331Resource support now supports QWORD address and IO resources. The
1633216/32/64 bit address structures and the Extended IRQ structure
16333have been changed to properly handle Source Resource strings.
16334
16335A ThreadId of -1 is now used to indicate a "mutex not acquired"
16336condition internally and must never be returned by AcpiOsThreadId.
16337This reserved value was changed from 0 since Unix systems allow a
16338thread ID of 0.
16339
16340Linux:
16341
16342Driver code reorganized to enhance portability
16343
16344Added a kernel configuration option to control ACPI_DEBUG
16345
16346Fixed the EC driver to honor _GLK.
16347
16348ASL Compiler, version X2016:
16349
16350Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
16351address space was set to 0, not 0x7f as it should be.
16352
16353 ------------------------------------------
16354Summary of changes for this label: 03_13_01
16355
16356 ACPI CA Core Subsystem:
16357
16358During ACPI initialization, the _SB_._INI method is now run if
16359present.
16360
16361Notify handler fix - notifies are deferred until the parent method
16362completes execution.  This fixes the "mutex already acquired"
16363issue seen occasionally.
16364
16365Part of the "implicit conversion" rules in ACPI 2.0 have been
16366found to cause compatibility problems with existing ASL/AML.  The
16367convert "result-to-target-type" implementation has been removed
16368for stores to method Args and Locals.  Source operand conversion
16369is still fully implemented.  Possible changes to ACPI 2.0
16370specification pending.
16371
16372Fix to AcpiRsCalculatePciRoutingTableLength to return correct
16373length.
16374
16375Fix for compiler warnings for 64-bit compiles.
16376
16377 Linux:
16378
16379/proc output aligned for easier parsing.
16380
16381Release-version compile problem fixed.
16382
16383New kernel configuration options documented in Configure.help.
16384
16385IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
16386context" message.
16387
16388 OSPM:
16389
16390Power resource driver integrated with bus manager.
16391
16392Fixed kernel fault during active cooling for thermal zones.
16393
16394Source Code:
16395
16396The source code tree has been restructured.
16397
16398
16399
16400------------------------------------------
16401Summary of changes for this label: 03_02_01
16402
16403 Linux OS Services Layer (OSL):
16404
16405Major revision of all Linux-specific code.
16406
16407Modularized all ACPI-specific drivers.
16408
16409Added new thermal zone and power resource drivers.
16410
16411Revamped /proc interface (new functionality is under /proc/acpi).
16412
16413New kernel configuration options.
16414
16415 Linux known issues:
16416
16417New kernel configuration options not documented in Configure.help
16418yet.
16419
16420
16421Module dependencies not currently implemented. If used, they
16422should be loaded in this order: busmgr, power, ec, system,
16423processor, battery, ac_adapter, button, thermal.
16424
16425Modules will not load if CONFIG_MODVERSION is set.
16426
16427IBM 600E - entering S5 may reboot instead of shutting down.
16428
16429IBM 600E - Sleep button may generate "Invalid <NULL> context"
16430message.
16431
16432Some systems may fail with "execution mutex already acquired"
16433message.
16434
16435 ACPI CA Core Subsystem:
16436
16437Added a new OSL Interface, AcpiOsGetThreadId.  This was required
16438for the  deadlock detection code. Defined to return a non-zero, 32-
16439bit thread ID for the currently executing thread.  May be a non-
16440zero constant integer on single-thread systems.
16441
16442Implemented deadlock detection for internal subsystem mutexes.  We
16443may add conditional compilation for this code (debug only) later.
16444
16445ASL/AML Mutex object semantics are now fully supported.  This
16446includes multiple acquires/releases by owner and support for the
16447
16448Mutex SyncLevel parameter.
16449
16450A new "Force Release" mechanism automatically frees all ASL
16451Mutexes that have been acquired but not released when a thread
16452exits the interpreter.  This forces conformance to the ACPI spec
16453("All mutexes must be released when an invocation exits") and
16454prevents deadlocked ASL threads.  This mechanism can be expanded
16455(later) to monitor other resource acquisitions if OEM ASL code
16456continues to misbehave (which it will).
16457
16458Several new ACPI exception codes have been added for the Mutex
16459support.
16460
16461Recursive method calls are now allowed and supported (the ACPI
16462spec does in fact allow recursive method calls.)  The number of
16463recursive calls is subject to the restrictions imposed by the
16464SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
16465parameter.
16466
16467Implemented support for the SyncLevel parameter for control
16468methods (ACPI 2.0 feature)
16469
16470Fixed a deadlock problem when multiple threads attempted to use
16471the interpreter.
16472
16473Fixed a problem where the string length of a String package
16474element was not always set in a package returned from
16475AcpiEvaluateObject.
16476
16477Fixed a problem where the length of a String package element was
16478not always included in the length of the overall package returned
16479from AcpiEvaluateObject.
16480
16481Added external interfaces (Acpi*) to the ACPI debug memory
16482manager.  This manager keeps a list of all outstanding
16483allocations, and can therefore detect memory leaks and attempts to
16484free memory blocks more than once. Useful for code such as the
16485power manager, etc.  May not be appropriate for device drivers.
16486Performance with the debug code enabled is slow.
16487
16488The ACPI Global Lock is now an optional hardware element.
16489
16490 ASL Compiler Version X2015:
16491
16492Integrated changes to allow the compiler to be generated on
16493multiple platforms.
16494
16495Linux makefile added to generate the compiler on Linux
16496
16497 Source Code:
16498
16499All platform-specific headers have been moved to their own
16500subdirectory, Include/Platform.
16501
16502New source file added, Interpreter/ammutex.c
16503
16504New header file, Include/acstruct.h
16505
16506 Documentation:
16507
16508The programmer reference has been updated for the following new
16509interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
16510
16511 ------------------------------------------
16512Summary of changes for this label: 02_08_01
16513
16514Core ACPI CA Subsystem: Fixed a problem where an error was
16515incorrectly returned if the return resource buffer was larger than
16516the actual data (in the resource interfaces).
16517
16518References to named objects within packages are resolved to the
16519
16520full pathname string before packages are returned directly (via
16521the AcpiEvaluateObject interface) or indirectly via the resource
16522interfaces.
16523
16524Linux OS Services Layer (OSL):
16525
16526Improved /proc battery interface.
16527
16528
16529Added C-state debugging output and other miscellaneous fixes.
16530
16531ASL Compiler Version X2014:
16532
16533All defined method arguments can now be used as local variables,
16534including the ones that are not actually passed in as parameters.
16535The compiler tracks initialization of the arguments and issues an
16536exception if they are used without prior assignment (just like
16537locals).
16538
16539The -o option now specifies a filename prefix that is used for all
16540output files, including the AML output file.  Otherwise, the
16541default behavior is as follows:  1) the AML goes to the file
16542specified in the DSDT.  2) all other output files use the input
16543source filename as the base.
16544
16545 ------------------------------------------
16546Summary of changes for this label: 01_25_01
16547
16548Core ACPI CA Subsystem: Restructured the implementation of object
16549store support within the  interpreter.  This includes support for
16550the Store operator as well  as any ASL operators that include a
16551target operand.
16552
16553Partially implemented support for Implicit Result-to-Target
16554conversion. This is when a result object is converted on the fly
16555to the type of  an existing target object.  Completion of this
16556support is pending  further analysis of the ACPI specification
16557concerning this matter.
16558
16559CPU-specific code has been removed from the subsystem (hardware
16560directory).
16561
16562New Power Management Timer functions added
16563
16564Linux OS Services Layer (OSL): Moved system state transition code
16565to the core, fixed it, and modified  Linux OSL accordingly.
16566
16567Fixed C2 and C3 latency calculations.
16568
16569
16570We no longer use the compilation date for the version message on
16571initialization, but retrieve the version from AcpiGetSystemInfo().
16572
16573Incorporated for fix Sony VAIO machines.
16574
16575Documentation:  The Programmer Reference has been updated and
16576reformatted.
16577
16578
16579ASL Compiler:  Version X2013: Fixed a problem where the line
16580numbering and error reporting could get out  of sync in the
16581presence of multiple include files.
16582
16583 ------------------------------------------
16584Summary of changes for this label: 01_15_01
16585
16586Core ACPI CA Subsystem:
16587
16588Implemented support for type conversions in the execution of the
16589ASL  Concatenate operator (The second operand is converted to
16590match the type  of the first operand before concatenation.)
16591
16592Support for implicit source operand conversion is partially
16593implemented.   The ASL source operand types Integer, Buffer, and
16594String are freely  interchangeable for most ASL operators and are
16595converted by the interpreter  on the fly as required.  Implicit
16596Target operand conversion (where the  result is converted to the
16597target type before storing) is not yet implemented.
16598
16599Support for 32-bit and 64-bit BCD integers is implemented.
16600
16601Problem fixed where a field read on an aligned field could cause a
16602read  past the end of the field.
16603
16604New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
16605does not return a value, but the caller expects one.  (The ASL
16606compiler flags this as a warning.)
16607
16608ASL Compiler:
16609
16610Version X2011:
166111. Static typechecking of all operands is implemented. This
16612prevents the use of invalid objects (such as using a Package where
16613an Integer is required) at compile time instead of at interpreter
16614run-time.
166152. The ASL source line is printed with ALL errors and warnings.
166163. Bug fix for source EOF without final linefeed.
166174. Debug option is split into a parse trace and a namespace trace.
166185. Namespace output option (-n) includes initial values for
16619integers and strings.
166206. Parse-only option added for quick syntax checking.
166217. Compiler checks for duplicate ACPI name declarations
16622
16623Version X2012:
166241. Relaxed typechecking to allow interchangeability between
16625strings, integers, and buffers.  These types are now converted by
16626the interpreter at runtime.
166272. Compiler reports time taken by each internal subsystem in the
16628debug         output file.
16629
16630
16631 ------------------------------------------
16632Summary of changes for this label: 12_14_00
16633
16634ASL Compiler:
16635
16636This is the first official release of the compiler. Since the
16637compiler requires elements of the Core Subsystem, this label
16638synchronizes everything.
16639
16640------------------------------------------
16641Summary of changes for this label: 12_08_00
16642
16643
16644Fixed a problem where named references within the ASL definition
16645of both OperationRegions and CreateXXXFields did not work
16646properly.  The symptom was an AE_AML_OPERAND_TYPE during
16647initialization of the region/field. This is similar (but not
16648related internally) to the problem that was fixed in the last
16649label.
16650
16651Implemented both 32-bit and 64-bit support for the BCD ASL
16652functions ToBCD and FromBCD.
16653
16654Updated all legal headers to include "2000" in the copyright
16655years.
16656
16657 ------------------------------------------
16658Summary of changes for this label: 12_01_00
16659
16660Fixed a problem where method invocations within the ASL definition
16661of both OperationRegions and CreateXXXFields did not work
16662properly.  The symptom was an AE_AML_OPERAND_TYPE during
16663initialization of the region/field:
16664
16665  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
16666[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
16667(0x3005)
16668
16669Fixed a problem where operators with more than one nested
16670subexpression would fail.  The symptoms were varied, by mostly
16671AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
16672problem that has gone unnoticed until now.
16673
16674  Subtract (Add (1,2), Multiply (3,4))
16675
16676Fixed a problem where AcpiGetHandle didn't quite get fixed in the
16677previous build (The prefix part of a relative path was handled
16678incorrectly).
16679
16680Fixed a problem where Operation Region initialization failed if
16681the operation region name was a "namepath" instead of a simple
16682"nameseg". Symptom was an AE_NO_OPERAND error.
16683
16684Fixed a problem where an assignment to a local variable via the
16685indirect RefOf mechanism only worked for the first such
16686assignment.  Subsequent assignments were ignored.
16687
16688 ------------------------------------------
16689Summary of changes for this label: 11_15_00
16690
16691ACPI 2.0 table support with backwards support for ACPI 1.0 and the
166920.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
16693the AML  interpreter does NOT have support for the new 2.0 ASL
16694grammar terms at this time.
16695
16696All ACPI hardware access is via the GAS structures in the ACPI 2.0
16697FADT.
16698
16699All physical memory addresses across all platforms are now 64 bits
16700wide. Logical address width remains dependent on the platform
16701(i.e., "void *").
16702
16703AcpiOsMapMemory interface changed to a 64-bit physical address.
16704
16705The AML interpreter integer size is now 64 bits, as per the ACPI
167062.0 specification.
16707
16708For backwards compatibility with ACPI 1.0, ACPI tables with a
16709revision number less than 2 use 32-bit integers only.
16710
16711Fixed a problem where the evaluation of OpRegion operands did not
16712always resolve them to numbers properly.
16713
16714------------------------------------------
16715Summary of changes for this label: 10_20_00
16716
16717Fix for CBN_._STA issue.  This fix will allow correct access to
16718CBN_ OpRegions when the _STA returns 0x8.
16719
16720Support to convert ACPI constants (Ones, Zeros, One) to actual
16721values before a package object is returned
16722
16723Fix for method call as predicate to if/while construct causing
16724incorrect if/while behavior
16725
16726Fix for Else block package lengths sometimes calculated wrong (if
16727block > 63 bytes)
16728
16729Fix for Processor object length field, was always zero
16730
16731Table load abort if FACP sanity check fails
16732
16733Fix for problem with Scope(name) if name already exists
16734
16735Warning emitted if a named object referenced cannot be found
16736(resolved) during method execution.
16737
16738
16739
16740
16741
16742------------------------------------------
16743Summary of changes for this label: 9_29_00
16744
16745New table initialization interfaces: AcpiInitializeSubsystem no
16746longer has any parameters AcpiFindRootPointer - Find the RSDP (if
16747necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
16748>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
16749AcpiLoadTables
16750
16751Note: These interface changes require changes to all existing OSDs
16752
16753The PCI_Config default address space handler is always installed
16754at the root namespace object.
16755
16756-------------------------------------------
16757Summary of changes for this label: 09_15_00
16758
16759The new initialization architecture is implemented.  New
16760interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
16761AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
16762
16763(Namespace is automatically loaded when a table is loaded)
16764
16765The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1676652 bytes to 32 bytes.  There is usually one of these for every
16767namespace object, so the memory savings is significant.
16768
16769Implemented just-in-time evaluation of the CreateField operators.
16770
16771Bug fixes for IA-64 support have been integrated.
16772
16773Additional code review comments have been implemented
16774
16775The so-called "third pass parse" has been replaced by a final walk
16776through the namespace to initialize all operation regions (address
16777spaces) and fields that have not yet been initialized during the
16778execution of the various _INI and REG methods.
16779
16780New file - namespace/nsinit.c
16781
16782-------------------------------------------
16783Summary of changes for this label: 09_01_00
16784
16785Namespace manager data structures have been reworked to change the
16786primary  object from a table to a single object.  This has
16787resulted in dynamic memory  savings of 3X within the namespace and
167882X overall in the ACPI CA subsystem.
16789
16790Fixed problem where the call to AcpiEvFindPciRootBuses was
16791inadvertently left  commented out.
16792
16793Reduced the warning count when generating the source with the GCC
16794compiler.
16795
16796Revision numbers added to each module header showing the
16797SourceSafe version of the file.  Please refer to this version
16798number when giving us feedback or comments on individual modules.
16799
16800The main object types within the subsystem have been renamed to
16801clarify their  purpose:
16802
16803ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
16804ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
16805ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
16806
16807NOTE: no changes to the initialization sequence are included in
16808this label.
16809
16810-------------------------------------------
16811Summary of changes for this label: 08_23_00
16812
16813Fixed problem where TerminateControlMethod was being called
16814multiple times per  method
16815
16816Fixed debugger problem where single stepping caused a semaphore to
16817be  oversignalled
16818
16819Improved performance through additional parse object caching -
16820added  ACPI_EXTENDED_OP type
16821
16822-------------------------------------------
16823Summary of changes for this label: 08_10_00
16824
16825Parser/Interpreter integration:  Eliminated the creation of
16826complete parse trees  for ACPI tables and control methods.
16827Instead, parse subtrees are created and  then deleted as soon as
16828they are processed (Either entered into the namespace or  executed
16829by the interpreter).  This reduces the use of dynamic kernel
16830memory  significantly. (about 10X)
16831
16832Exception codes broken into classes and renumbered.  Be sure to
16833recompile all  code that includes acexcep.h.  Hopefully we won't
16834have to renumber the codes  again now that they are split into
16835classes (environment, programmer, AML code,  ACPI table, and
16836internal).
16837
16838Fixed some additional alignment issues in the Resource Manager
16839subcomponent
16840
16841Implemented semaphore tracking in the AcpiExec utility, and fixed
16842several places  where mutexes/semaphores were being unlocked
16843without a corresponding lock  operation.  There are no known
16844semaphore or mutex "leaks" at this time.
16845
16846Fixed the case where an ASL Return operator is used to return an
16847unnamed  package.
16848
16849-------------------------------------------
16850Summary of changes for this label: 07_28_00
16851
16852Fixed a problem with the way addresses were calculated in
16853AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
16854manifested itself when a Field was  created with WordAccess or
16855DwordAccess, but the field unit defined within the  Field was less
16856
16857than a Word or Dword.
16858
16859Fixed a problem in AmlDumpOperands() module's loop to pull
16860operands off of the  operand stack to display information. The
16861problem manifested itself as a TLB  error on 64-bit systems when
16862accessing an operand stack with two or more  operands.
16863
16864Fixed a problem with the PCI configuration space handlers where
16865context was  getting confused between accesses. This required a
16866change to the generic address  space handler and address space
16867setup definitions. Handlers now get both a  global handler context
16868(this is the one passed in by the user when executing
16869AcpiInstallAddressSpaceHandler() and a specific region context
16870that is unique to  each region (For example, the _ADR, _SEG and
16871_BBN values associated with a  specific region). The generic
16872function definitions have changed to the  following:
16873
16874typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
16875UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
16876*HandlerContext, // This used to be void *Context void
16877*RegionContext); // This is an additional parameter
16878
16879typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
16880RegionHandle, UINT32 Function, void *HandlerContext,  void
16881**RegionContext); // This used to be **ReturnContext
16882
16883-------------------------------------------
16884Summary of changes for this label: 07_21_00
16885
16886Major file consolidation and rename.  All files within the
16887interpreter have been  renamed as well as most header files.  This
16888was done to prevent collisions with  existing files in the host
16889OSs -- filenames such as "config.h" and "global.h"  seem to be
16890quite common.  The VC project files have been updated.  All
16891makefiles  will require modification.
16892
16893The parser/interpreter integration continues in Phase 5 with the
16894implementation  of a complete 2-pass parse (the AML is parsed
16895twice) for each table;  This  avoids the construction of a huge
16896parse tree and therefore reduces the amount of  dynamic memory
16897required by the subsystem.  Greater use of the parse object cache
16898means that performance is unaffected.
16899
16900Many comments from the two code reviews have been rolled in.
16901
16902The 64-bit alignment support is complete.
16903
16904-------------------------------------------
16905Summary of changes for this label: 06_30_00
16906
16907With a nod and a tip of the hat to the technology of yesteryear,
16908we've added  support in the source code for 80 column output
16909devices.  The code is now mostly  constrained to 80 columns or
16910less to support environments and editors that 1)  cannot display
16911or print more than 80 characters on a single line, and 2) cannot
16912disable line wrapping.
16913
16914A major restructuring of the namespace data structure has been
16915completed.  The  result is 1) cleaner and more
16916understandable/maintainable code, and 2) a  significant reduction
16917in the dynamic memory requirement for each named ACPI  object
16918(almost half).
16919
16920-------------------------------------------
16921Summary of changes for this label: 06_23_00
16922
16923Linux support has been added.  In order to obtain approval to get
16924the ACPI CA  subsystem into the Linux kernel, we've had to make
16925quite a few changes to the  base subsystem that will affect all
16926users (all the changes are generic and OS- independent).  The
16927effects of these global changes have been somewhat far  reaching.
16928Files have been merged and/or renamed and interfaces have been
16929renamed.   The major changes are described below.
16930
16931Osd* interfaces renamed to AcpiOs* to eliminate namespace
16932pollution/confusion  within our target kernels.  All OSD
16933interfaces must be modified to match the new  naming convention.
16934
16935Files merged across the subsystem.  A number of the smaller source
16936and header  files have been merged to reduce the file count and
16937increase the density of the  existing files.  There are too many
16938to list here.  In general, makefiles that  call out individual
16939files will require rebuilding.
16940
16941Interpreter files renamed.  All interpreter files now have the
16942prefix am*  instead of ie* and is*.
16943
16944Header files renamed:  The acapi.h file is now acpixf.h.  The
16945acpiosd.h file is  now acpiosxf.h.  We are removing references to
16946the acronym "API" since it is  somewhat windowsy. The new name is
16947"external interface" or xface or xf in the  filenames.j
16948
16949
16950All manifest constants have been forced to upper case (some were
16951mixed case.)   Also, the string "ACPI_" has been prepended to many
16952(not all) of the constants,  typedefs, and structs.
16953
16954The globals "DebugLevel" and "DebugLayer" have been renamed
16955"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
16956
16957All other globals within the subsystem are now prefixed with
16958"AcpiGbl_" Internal procedures within the subsystem are now
16959prefixed with "Acpi" (with only  a few exceptions).  The original
16960two-letter abbreviation for the subcomponent  remains after "Acpi"
16961- for example, CmCallocate became AcpiCmCallocate.
16962
16963Added a source code translation/conversion utility.  Used to
16964generate the Linux  source code, it can be modified to generate
16965other types of source as well. Can  also be used to cleanup
16966existing source by removing extraneous spaces and blank  lines.
16967Found in tools/acpisrc/*
16968
16969OsdUnMapMemory was renamed to OsdUnmapMemory and then
16970AcpiOsUnmapMemory.  (UnMap  became Unmap).
16971
16972A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
16973When set to  one, this indicates that the caller wants to use the
16974
16975semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
16976both types.  However, implementers of this  call may want to use
16977different OS primitives depending on the type of semaphore
16978requested.  For example, some operating systems provide separate
16979
16980"mutex" and  "semaphore" interfaces - where the mutex interface is
16981much faster because it  doesn't have all the overhead of a full
16982semaphore implementation.
16983
16984Fixed a deadlock problem where a method that accesses the PCI
16985address space can  block forever if it is the first access to the
16986space.
16987
16988-------------------------------------------
16989Summary of changes for this label: 06_02_00
16990
16991Support for environments that cannot handle unaligned data
16992accesses (e.g.  firmware and OS environments devoid of alignment
16993handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
16994been added (via configurable macros) in  these three areas: -
16995Transfer of data from the raw AML byte stream is done via byte
16996moves instead of    word/dword/qword moves. - External objects are
16997aligned within the user buffer, including package   elements (sub-
16998objects). - Conversion of name strings to UINT32 Acpi Names is now
16999done byte-wise.
17000
17001The Store operator was modified to mimic Microsoft's
17002implementation when storing  to a Buffer Field.
17003
17004Added a check of the BM_STS bit before entering C3.
17005
17006The methods subdirectory has been obsoleted and removed.  A new
17007file, cmeval.c  subsumes the functionality.
17008
17009A 16-bit (DOS) version of AcpiExec has been developed.  The
17010makefile is under  the acpiexec directory.
17011