xref: /freebsd/sys/contrib/dev/acpica/changes.txt (revision 264104f26834fdb27974e0c5fdedf8f2f5a90383)
1----------------------------------------
231 May 2017. Summary of changes for version 20170531:
3
4
50) ACPI 6.2 support:
6
7The ACPI specification version 6.2 has been released and is available at
8http://uefi.org/specifications
9
10This version of ACPICA fully supports the ACPI 6.2 specification. Changes
11are summarized below.
12
13New ACPI tables (Table Compiler/Disassembler/Templates):
14    HMAT (Heterogeneous Memory Attributes Table)
15    WSMT (Windows SMM Security Mitigation Table)
16    PPTT (Processor Properties Topology Table)
17
18New subtables for existing ACPI tables:
19    HEST (New subtable, Arch-deferred machine check)
20    SRAT (New subtable, Arch-specific affinity structure)
21    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
22
23Simple updates for existing ACPI tables:
24    BGRT (two new flag bits)
25    HEST (New bit defined for several subtables, GHES_ASSIST)
26
27New Resource Descriptors and Resource macros (Compiler/Disassembler):
28    PinConfig()
29    PinFunction()
30    PinGroup()
31    PinGroupConfig()
32    PinGroupFunction()
33    New type for hardware error notification (section 18.3.2.9)
34
35New predefined names/methods (Compiler/Interpreter):
36    _HMA (Heterogeneous Memory Attributes)
37    _LSI (Label Storage Information)
38    _LSR (Label Storage Read)
39    _LSW (Label Storage Write)
40
41ASL grammar/macro changes (Compiler):
42    For() ASL macro, implemented with the AML while operator
43    Extensions to Concatenate operator
44    Support for multiple definition blocks in same ASL file
45    Clarification for Buffer operator
46    Allow executable AML code underneath all scopes (Devices, etc.)
47    Clarification/change for the _OSI return value
48    ASL grammar update for reference operators
49    Allow a zero-length string for AML filename in DefinitionBlock
50
51Miscellaneous:
52    New device object notification value
53    Remove a notify value (0x0C) for graceful shutdown
54    New UUIDs for processor/cache properties and
55        physical package property
56    New _HID, ACPI0014 (Wireless Power Calibration Device)
57
58
591) ACPICA kernel-resident subsystem:
60
61Added support to disable ACPI events on hardware-reduced platforms.
62Eliminates error messages of the form "Could not enable fixed event". Lv
63Zheng
64
65Fixed a problem using Device/Thermal objects with the ObjectType and
66DerefOf ASL operators. This support had not been fully/properly
67implemented.
68
69Fixed a problem where if a Buffer object containing a resource template
70was longer than the actual resource template, an error was generated --
71even though the AML is legal. This case has been seen in the field.
72
73Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
74The values for DUAL_PIC and MULTIPLE_APIC were reversed.
75
76Added header file changes for the TPM2 ACPI table. Update to new version
77of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
78
79Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
80These interfaces are intended to be used only in conjunction with the
81predefined _DLM method (Device Lock Method). "This object appears in a
82device scope when AML access to the device must be synchronized with the
83OS environment".
84
85Example Code and Data Size: These are the sizes for the OS-independent
86acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
87debug version of the code includes the debug output trace mechanism and
88has a much larger code and data size.
89
90  Current Release:
91    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
92    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
93  Previous Release:
94    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
95    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
96
97
982) iASL Compiler/Disassembler and Tools:
99
100iASL: Fixed a problem where an External() declaration could not refer to
101a Field Unit. Erik Schmauss.
102
103Disassembler: Improved support for the Switch/Case operators. This
104feature will disassemble AML code back to the original Switch operators
105when possible, instead of an If..Else sequence. David Box
106
107iASL and disassembler: Improved the handling of multiple extraneous
108parentheses for both ASL input and disassembled ASL output.
109
110Improved the behavior of the iASL compiler and disassembler to detect
111improper use of external declarations
112
113Disassembler: Now aborts immediately upon detection of an unknown AML
114opcode. The AML parser has no real way to recover from this, and can
115result in the creation of an ill-formed parse tree that causes errors
116later during the disassembly.
117
118All tools: Fixed a problem where the Unix application OSL did not handle
119control-c correctly. For example, a control-c could incorrectly wake the
120debugger.
121
122AcpiExec: Improved the Control-C handling and added a handler for
123segmentation faults (SIGSEGV). Supports both Windows and Unix-like
124environments.
125
126Reduced the verbosity of the generic unix makefiles. Previously, each
127compilation displayed the full set of compiler options. This has been
128eliminated as the options are easily inspected within the makefiles. Each
129compilation now results in a single line of output.
130
131----------------------------------------
13203 March 2017. Summary of changes for version 20170303:
133
134
1350) ACPICA licensing:
136
137The licensing information at the start of each source code module has
138been updated. In addition to the Intel license, the dual GPLv2/BSD
139license has been added for completeness. Now, a single version of the
140source code should be suitable for all ACPICA customers. This is the
141major change for this release since it affects all source code modules.
142
143
1441) ACPICA kernel-resident subsystem:
145
146Fixed two issues with the common asltypes.h header that could cause
147problems in some environments: (Kim Jung-uk)
148    Removed typedef for YY_BUFFER_STATE ?
149       Fixes an error with earlier versions of Flex.
150    Removed use of FILE typedef (which is only defined in stdio.h)
151
152
1532) iASL Compiler/Disassembler and Tools:
154
155Disassembler: fixed a regression introduced in 20170224. A fix for a
156memory leak related to resource descriptor tags (names) could fault when
157the disassembler was generated with 64-bit compilers.
158
159The ASLTS test suite has been updated to implement a new testing
160architecture. During generation of the suite from ASL source, both the
161ASL and ASL+ compilers are now validated, as well as the disassembler
162itself (Erik Schmauss). The architecture executes as follows:
163
164    For every ASL source module:
165        Compile (legacy ASL compilation)
166        Disassemble the resulting AML to ASL+ source code
167        Compile the new ASL+ module
168        Perform a binary compare on the legacy AML and the new ASL+ AML
169    The ASLTS suite then executes normally using the AML binaries.
170
171----------------------------------------
17224 February 2017. Summary of changes for version 20170224:
173
174
1751) ACPICA kernel-resident subsystem:
176
177Interpreter: Fixed two issues with the control method return value auto-
178repair feature, where an attempt to double-delete an internal object
179could result in an ACPICA warning (for _CID repair and others). No fault
180occurs, however, because the attempted deletion (actually a release to an
181internal cache) is detected and ignored via object poisoning.
182
183Debugger: Fixed an AML interpreter mutex issue during the single stepping
184of control methods. If certain debugger commands are executed during
185stepping, a mutex aquire/release error could occur. Lv Zheng.
186
187Fixed some issues generating ACPICA with the Intel C compiler by
188restoring the original behavior and compiler-specific include file in
189acenv.h. Lv Zheng.
190
191Example Code and Data Size: These are the sizes for the OS-independent
192acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
193debug version of the code includes the debug output trace mechanism and
194has a much larger code and data size.
195
196  Current Release:
197    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
198    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
199  Previous Release:
200    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
201    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
202
203
2042) iASL Compiler/Disassembler and Tools:
205
206iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
207tool has been designed, implemented, and included in this release. The
208key feature of this utility is that the original comments within the
209input ASL file are preserved during the conversion process, and included
210within the converted ASL+ file -- thus creating a transparent conversion
211of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
212
213    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
214converted code
215
216iASL/Disassembler: Improved the detection and correct disassembly of
217Switch/Case operators. This feature detects sequences of if/elseif/else
218operators that originated from ASL Switch/Case/Default operators and
219emits the original operators. David Box.
220
221iASL: Improved the IORT ACPI table support in the following areas. Lv
222Zheng:
223    Clear MappingOffset if the MappingCount is zero.
224    Fix the disassembly of the SMMU GSU interrupt offset.
225    Update the template file for the IORT table.
226
227Disassembler: Enhanced the detection and disassembly of resource
228template/descriptor within a Buffer object. An EndTag descriptor is now
229required to have a zero second byte, since all known ASL compilers emit
230this. This helps eliminate incorrect decisions when a buffer is
231disassembled (false positives on resource templates).
232
233----------------------------------------
23419 January 2017. Summary of changes for version 20170119:
235
236
2371) General ACPICA software:
238
239Entire source code base: Added the 2017 copyright to all source code
240legal/licensing module headers and utility/tool signons. This includes
241the standard Linux dual-license header. This affects virtually every file
242in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
243the ACPICA test suite.
244
245
2462) iASL Compiler/Disassembler and Tools:
247
248iASL: Removed/fixed an inadvertent remark when a method argument
249containing a reference is used as a target operand within the method (and
250never used as a simple argument), as in the example below. Jeffrey Hugo.
251
252    dsdt.asl   1507:    Store(0x1, Arg0)
253    Remark   2146 -                ^ Method Argument is never used (Arg0)
254
255All tools: Removed the bit width of the compiler that generated the tool
256from the common signon for all user space tools. This proved to be
257confusing and unnecessary. This includes similar removal of HARDWARE_NAME
258from the generic makefiles (Thomas Petazzoni). Example below.
259
260    Old:
261    ASL+ Optimizing Compiler version 20170119-32
262    ASL+ Optimizing Compiler version 20170119-64
263
264    New:
265    ASL+ Optimizing Compiler version 20170119
266
267----------------------------------------
26822 December 2016. Summary of changes for version 20161222:
269
270
2711) ACPICA kernel-resident subsystem:
272
273AML Debugger: Implemented a new mechanism to simplify and enhance
274debugger integration into all environments, including kernel debuggers
275and user-space utilities, as well as remote debug services. This
276mechanism essentially consists of new OSL interfaces to support debugger
277initialization/termination, as well as wait/notify interfaces to perform
278the debugger handshake with the host. Lv Zheng.
279
280    New OSL interfaces:
281        AcpiOsInitializeDebugger (void)
282        AcpiOsTerminateDebugger (void)
283        AcpiOsWaitCommandReady (void)
284        AcpiOsNotifyCommandComplete (void)
285
286    New OS services layer:
287        osgendbg.c -- Example implementation, and used for AcpiExec
288
289Update for Generic Address Space (GAS) support: Although the AccessWidth
290and/or BitOffset fields of the GAS are not often used, this change now
291fully supports these fields. This affects the internal support for FADT
292registers, registers in other ACPI data tables, and the AcpiRead and
293AcpiWrite public interfaces. Lv Zheng.
294
295Sleep support: In order to simplify integration of ACPI sleep for the
296various host operating systems, a new OSL interface has been introduced.
297AcpiOsEnterSleep allows the host to perform any required operations
298before the final write to the sleep control register(s) is performed by
299ACPICA. Lv Zheng.
300
301    New OSL interface:
302        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
303
304    Called from these internal interfaces:
305        AcpiHwLegacySleep
306        AcpiHwExtendedSleep
307
308EFI support: Added a very small EFI/ACPICA example application. Provides
309a simple demo for EFI integration, as well as assisting with resolution
310of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
311
312    source/tools/efihello/efihello.c
313
314Local C library: Implemented several new functions to enhance ACPICA
315portability, for environments where these clib functions are not
316available (such as EFI). Lv Zheng:
317    putchar
318    getchar
319    strpbrk
320    strtok
321    memmove
322
323Fixed a regression where occasionally a valid resource descriptor was
324incorrectly detected as invalid at runtime, and a
325AE_AML_NO_RESOURCE_END_TAG was returned.
326
327Fixed a problem with the recently implemented support that enables
328control method invocations as Target operands to many ASL operators.
329Warnings of this form: "Needed type [Reference], found [Processor]" were
330seen at runtime for some method invocations.
331
332Example Code and Data Size: These are the sizes for the OS-independent
333acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
334debug version of the code includes the debug output trace mechanism and
335has a much larger code and data size.
336
337  Current Release:
338    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
339    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
340  Previous Release:
341    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
342    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
343
344
3452) iASL Compiler/Disassembler and Tools:
346
347Disassembler: Enhanced output by adding the capability to detect and
348disassemble ASL Switch/Case statements back to the original ASL source
349code instead of if/else blocks. David Box.
350
351AcpiHelp: Split a large file into separate files based upon
352functionality/purpose. New files are:
353    ahaml.c
354    ahasl.c
355
356----------------------------------------
35717 November 2016. Summary of changes for version 20161117:
358
359
3601) ACPICA kernel-resident subsystem:
361
362Table Manager: Fixed a regression introduced in 20160729, "FADT support
363cleanup". This was an attempt to remove all references in the source to
364the FADT version 2, which never was a legal version number. It was
365skipped because it was an early version of 64-bit support that was
366eventually abandoned for the current 64-bit support.
367
368Interpreter: Fixed a problem where runtime implicit conversion was
369incorrectly disabled for the ASL operators below. This brings the
370behavior into compliance with the ACPI specification:
371    FromBCD
372    ToBCD
373    ToDecimalString
374    ToHexString
375    ToInteger
376    ToBuffer
377
378Table Manager: Added a new public interface, AcpiPutTable, used to
379release and free an ACPI table returned by AcpiGetTable and related
380interfaces. Lv Zheng.
381
382Example Code and Data Size: These are the sizes for the OS-independent
383acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
384debug version of the code includes the debug output trace mechanism and
385has a much larger code and data size.
386
387  Current Release:
388    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
389    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
390  Previous Release:
391    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
392    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
393
394
3952) iASL Compiler/Disassembler and Tools:
396
397Disassembler: Fixed a regression for disassembly of Resource Template.
398Detection of templates in the AML stream missed some types of templates.
399
400iASL: Fixed a problem where an Access Size error was returned for the PCC
401address space when the AccessSize of the GAS register is greater than a
402DWORD. Hoan Tran.
403
404iASL: Implemented several grammar changes for the operators below. These
405changes are slated for the next version of the ACPI specification:
406    RefOf        - Disallow method invocation as an operand
407    CondRefOf    - Disallow method invocation as an operand
408    DerefOf      - Disallow operands that use the result from operators
409that
410                   do not return a reference (Changed TermArg to
411SuperName).
412
413iASL: Control method invocations are now allowed for Target operands, as
414per the ACPI specification. Removed error for using a control method
415invocation as a Target operand.
416
417Disassembler: Improved detection of Resource Templates, Unicode, and
418Strings within Buffer objects. These subtypes do not contain a specific
419opcode to indicate the originating ASL code, and they must be detected by
420other means within the disassembler.
421
422iASL: Implemented an optimization improvement for 32-bit ACPI tables
423(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
424only after 64-bit to 32-bit truncation. A truncation warning message is
425still emitted, however.
426
427AcpiXtract: Implemented handling for both types of line terminators (LF
428or CR/LF) so that it can accept AcpiDump output files from any system.
429Peter Wu.
430
431AcpiBin: Added two new options for comparing AML files:
432    -a: compare and display ALL mismatches
433    -o: start compare at this offset into the second file
434
435----------------------------------------
43630 September 2016. Summary of changes for version 20160930:
437
438
4391) ACPICA kernel-resident subsystem:
440
441Fixed a regression in the internal AcpiTbFindTable function where a non
442AE_OK exception could inadvertently be returned even if the function did
443not fail. This problem affects the following operators:
444    DataTableRegion
445    LoadTable
446
447Fixed a regression in the LoadTable operator where a load to any
448namespace location other than the root no longer worked properly.
449
450Increased the maximum loop count value that will result in the
451AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
452prevent infinite loops within the AML interpreter and thus the host OS
453kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
4541,048,575).
455
456Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
457acpixf.h file. This allows hosts to easily configure the maximum loop
458count at runtime.
459
460Removed an illegal character in the strtoul64.c file. This character
461caused errors with some C compilers.
462
463Example Code and Data Size: These are the sizes for the OS-independent
464acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
465debug version of the code includes the debug output trace mechanism and
466has a much larger code and data size.
467
468  Current Release:
469    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
470    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
471  Previous Release:
472    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
473    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
474
475
4762) iASL Compiler/Disassembler and Tools:
477
478Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
479the simpler ASL ElseIf keyword. During the conversion, a trailing If
480block could be lost and missing from the disassembled output.
481
482iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
483the missing rule caused a parse error when using the Index operator as an
484operand to ObjectType. This construct now compiles properly. Example:
485    ObjectType(PKG1[4]).
486
487iASL: Correctly handle unresolved symbols in the hardware map file (-lm
488option). Previously, unresolved symbols could cause a protection fault.
489Such symbols are now marked as unresolved in the map file.
490
491iASL: Implemented support to allow control method invocations as an
492operand to the ASL DeRefOf operator. Example:
493    DeRefOf(MTH1(Local0))
494
495Disassembler: Improved support for the ToPLD ASL macro. Detection of a
496possible _PLD buffer now includes examination of both the normal buffer
497length (16 or 20) as well as the surrounding AML package length.
498
499Disassembler: Fixed a problem with the decoding of complex expressions
500within the Divide operator for ASL+. For the case where both the quotient
501and remainder targets are specified, the entire statement cannot be
502disassembled. Previously, the output incorrectly contained a mix of ASL-
503and ASL+ operators. This mixed statement causes a syntax error when
504compiled. Example:
505    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
506disassembled to:
507    Divide (INT1 + 6, 128, RSLT, QUOT)
508
509iASL/Tools: Added support to process AML and non-AML ACPI tables
510consistently. For the disassembler and AcpiExec, allow all types of ACPI
511tables (AML and data tables). For the iASL -e option, allow only AML
512tables (DSDT/SSDT).
513
514----------------------------------------
51531 August 2016. Summary of changes for version 20160831:
516
517
5181) ACPICA kernel-resident subsystem:
519
520Improve support for the so-called "module-level code", which is defined
521to be math, logical and control AML opcodes that appear outside of any
522control method. This change improves the support by adding more opcodes
523that can be executed in the manner. Some other issues have been solved,
524and the ASL grammar changes to support such code under all scope
525operators (Device, etc.) are complete. Lv Zheng.
526
527UEFI support: these OSL functions have been implemented. This is an
528additional step toward supporting the AcpiExec utility natively (with
529full hardware access) under UEFI. Marcelo Ferreira.
530    AcpiOsReadPciConfiguration
531    AcpiOsWritePciConfiguration
532
533Fixed a possible mutex error during control method auto-serialization. Lv
534Zheng.
535
536Updated support for the Generic Address Structure by fully implementing
537all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
538Zheng.
539
540Updated the return value for the internal _OSI method. Instead of
5410xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
542for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
543implementations, and will be reflected and clarified in the next version
544of the ACPI specification.
545
546Implemented two new table events that can be passed to an ACPICA table
547handler. These events are used to indicate a table installation or
548uninstallation. These events are used in addition to existed table load
549and unload events. Lv Zheng.
550
551Implemented a cleanup for all internal string-to-integer conversions.
552Consolidate multiple versions of this functionality and limit possible
553bases to either 10 or 16 to simplify the code. Adds a new file,
554utstrtoul64.
555
556Cleanup the inclusion order of the various compiler-specific headers.
557This simplifies build configuration management. The compiler-specific
558headers are now split out from the host-specific headers. Lv Zheng.
559
560Example Code and Data Size: These are the sizes for the OS-independent
561acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
562debug version of the code includes the debug output trace mechanism and
563has a much larger code and data size.
564
565  Current Release:
566    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
567    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
568
569
5702) iASL Compiler/Disassembler and Tools:
571
572iASL/AcpiExec: Added a command line option to display the build date/time
573of the tool (-vd). This can be useful to verify that the correct version
574of the tools are being used.
575
576AML Debugger: Implemented a new subcommand ("execute predef") to execute
577all predefined control methods and names within the current namespace.
578This can be useful for debugging problems with ACPI tables and the ACPI
579namespace.
580
581----------------------------------------
58229 July 2016. Summary of changes for version 20160729:
583
584
5851) ACPICA kernel-resident subsystem:
586
587Implemented basic UEFI support for the various ACPICA tools. This
588includes:
5891) An OSL to implement the various AcpiOs* interfaces on UEFI.
5902) Support to obtain the ACPI tables on UEFI.
5913) Local implementation of required C library functions not available on
592UEFI.
5934) A front-end (main) function for the tools for UEFI-related
594initialization.
595
596The initial deployment of this support is the AcpiDump utility executing
597as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
598Current environments supported are Linux/Unix. MSVC generation is not
599supported at this time. See the generate/efi/README file for build
600instructions. Lv Zheng.
601
602Future plans include porting the AcpiExec utility to execute natively on
603the platform with I/O and memory access. This will allow viewing/dump of
604the platform namespace and native execution of ACPI control methods that
605access the actual hardware. To fully implement this support, the OSL
606functions below must be implemented with UEFI interfaces. Any community
607help in the implementation of these functions would be appreciated:
608    AcpiOsReadPort
609    AcpiOsWritePort
610    AcpiOsReadMemory
611    AcpiOsWriteMemory
612    AcpiOsReadPciConfiguration
613    AcpiOsWritePciConfiguration
614
615Restructured and standardized the C library configuration for ACPICA,
616resulting in the various configuration options below. This includes a
617global restructuring of the compiler-dependent and platform-dependent
618include files. These changes may affect the existing platform-dependent
619configuration files on some hosts. Lv Zheng.
620
621The current C library configuration options appear below. For any issues,
622it may be helpful to examine the existing compiler-dependent and
623platform-dependent files as examples. Lv Zheng.
624
6251) Linux kernel:
626    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
627library.
628    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
6292) Unix/Windows/BSD applications:
630    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
631library.
632    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
6333) UEFI applications:
634    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
635library.
636    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
6374) UEFI applications (EDK2/StdLib):
638    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
639    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
640
641
642AML interpreter: "module-level code" support. Allows for execution of so-
643called "executable" AML code (math/logical operations, etc.) outside of
644control methods not just at the module level (top level) but also within
645any scope declared outside of a control method - Scope{}, Device{},
646Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
647
648Simplified the configuration of the "maximum AML loops" global option by
649adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
650modified at runtime.
651
652
653Example Code and Data Size: These are the sizes for the OS-independent
654acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
655debug version of the code includes the debug output trace mechanism and
656has a much larger code and data size.
657
658  Current Release:
659    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
660    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
661
662
6632) iASL Compiler/Disassembler and Tools:
664
665iASL: Add full support for the RASF ACPI table (RAS Features Table).
666Includes disassembler, data table compiler, and header support.
667
668iASL Expand "module-level code" support. Allows for
669compilation/disassembly of so-called "executable" AML code (math/logical
670operations, etc.) outside of control methods not just at the module level
671(top level) but also within any scope declared outside of a control
672method - Scope{}, Device{}, Processor{}, PowerResource{}, and
673ThermalZone{}.
674
675AcpiDump: Added support for dumping all SSDTs on newer versions of
676Windows. These tables are now easily available -- SSDTs are not available
677through the registry on older versions.
678
679----------------------------------------
68027 May 2016. Summary of changes for version 20160527:
681
682
6831) ACPICA kernel-resident subsystem:
684
685Temporarily reverted the new arbitrary bit length/alignment support in
686AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
687a number of regressions with the new code that need to be fully resolved
688and tested before this support can be finally integrated into ACPICA.
689Apologies for any inconveniences these issues may have caused.
690
691The ACPI message macros are not configurable (ACPI_MSG_ERROR,
692ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
693and ACPI_MSG_BIOS_WARNING). Lv Zheng.
694
695Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
696option. Adds a new return macro, return_STR. Junk-uk Kim.
697
698Example Code and Data Size: These are the sizes for the OS-independent
699acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
700debug version of the code includes the debug output trace mechanism and
701has a much larger code and data size.
702
703  Current Release:
704    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
705    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
706  Previous Release:
707    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
708    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
709
710----------------------------------------
71122 April 2016. Summary of changes for version 20160422:
712
7131) ACPICA kernel-resident subsystem:
714
715Fixed a regression in the GAS (generic address structure) arbitrary bit
716support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
717and incorrect return values. Lv Zheng. ACPICA BZ 1270.
718
719ACPI 6.0: Added support for new/renamed resource macros. One new argument
720was added to each of these macros, and the original name has been
721deprecated. The AML disassembler will always disassemble to the new
722names. Support for the new macros was added to iASL, disassembler,
723resource manager, and the acpihelp utility. ACPICA BZ 1274.
724
725    I2cSerialBus  -> I2cSerialBusV2
726    SpiSerialBus  -> SpiSerialBusV2
727    UartSerialBus -> UartSerialBusV2
728
729ACPI 6.0: Added support for a new integer field that was appended to the
730package object returned by the _BIX method. This adds iASL compile-time
731and AML runtime error checking. ACPICA BZ 1273.
732
733ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
734Subspace Type2" (Headers, Disassembler, and data table compiler).
735
736Example Code and Data Size: These are the sizes for the OS-independent
737acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
738debug version of the code includes the debug output trace mechanism and
739has a much larger code and data size.
740
741  Current Release:
742    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
743    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
744  Previous Release:
745    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
746    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
747
748
7492) iASL Compiler/Disassembler and Tools:
750
751iASL: Implemented an ASL grammar extension to allow/enable executable
752"module-level code" to be created and executed under the various
753operators that create new scopes. This type of AML code is already
754supported in all known AML interpreters, and the grammar change will
755appear in the next version of the ACPI specification. Simplifies the
756conditional runtime creation of named objects under these object types:
757
758    Device
759    PowerResource
760    Processor
761    Scope
762    ThermalZone
763
764iASL: Implemented a new ASL extension, a "For" loop macro to add greater
765ease-of-use to the ASL language. The syntax is similar to the
766corresponding C operator, and is implemented with the existing AML While
767opcode -- thus requiring no changes to existing AML interpreters.
768
769    For (Initialize, Predicate, Update) {TermList}
770
771Grammar:
772    ForTerm :=
773        For (
774            Initializer    // Nothing | TermArg => ComputationalData
775            Predicate      // Nothing | TermArg => ComputationalData
776            Update         // Nothing | TermArg => ComputationalData
777        ) {TermList}
778
779
780iASL: The _HID/_ADR detection and validation has been enhanced to search
781under conditionals in order to allow these objects to be conditionally
782created at runtime.
783
784iASL: Fixed several issues with the constant folding feature. The
785improvement allows better detection and resolution of statements that can
786be folded at compile time. ACPICA BZ 1266.
787
788iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
789conversion to the ASL ElseIf operator where incorrect ASL code could be
790generated.
791
792iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
793sometimes an extra (and extraneous) set of parentheses were emitted for
794some combinations of operators. Although this did not cause any problems
795with recompilation of the disassembled code, it made the code more
796difficult to read. David Box. ACPICA BZ 1231.
797
798iASL: Changed to ignore the unreferenced detection for predefined names
799of resource descriptor elements, when the resource descriptor is
800created/defined within a control method.
801
802iASL: Disassembler: Fix a possible fault with externally declared Buffer
803objects.
804
805----------------------------------------
80618 March 2016. Summary of changes for version 20160318:
807
8081) ACPICA kernel-resident subsystem:
809
810Added support for arbitrary bit lengths and bit offsets for registers
811defined by the Generic Address Structure. Previously, only aligned bit
812lengths of 8/16/32/64 were supported. This was sufficient for many years,
813but recently some machines have been seen that require arbitrary bit-
814level support. ACPICA BZ 1240. Lv Zheng.
815
816Fixed an issue where the \_SB._INI method sometimes must be evaluated
817before any _REG methods are evaluated. Lv Zheng.
818
819Implemented several changes related to ACPI table support
820(Headers/Disassembler/TableCompiler):
821NFIT: For ACPI 6.1, updated to add some additional new fields and
822constants.
823FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
8246).
825DMAR: Added new constants per the 10/2014 DMAR spec.
826IORT: Added new subtable per the 10/2015 IORT spec.
827HEST: For ACPI 6.1, added new constants and new subtable.
828DBG2: Added new constants per the 12/2015 DBG2 spec.
829FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
830ACPICA BZ 1249.
831ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
832
833Updated header support for the DMAR table to match the current version of
834the related spec.
835
836Added extensions to the ASL Concatenate operator to allow any ACPI object
837to be passed as an operand. Any object other than Integer/String/Buffer
838simply returns a string containing the object type. This extends the
839usefulness of the Printf macros. Previously, Concatenate would abort the
840control method if a non-data object was encountered.
841
842ACPICA source code: Deployed the C "const" keyword across the source code
843where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
844
845Example Code and Data Size: These are the sizes for the OS-independent
846acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
847debug version of the code includes the debug output trace mechanism and
848has a much larger code and data size.
849
850  Current Release:
851    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
852    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
853  Previous Release:
854    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
855    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
856
857
8582) iASL Compiler/Disassembler and Tools:
859
860iASL/Disassembler: Improved the heuristic used to determine the number of
861arguments for an externally defined control method (a method in another
862table). Although this is an improvement, there is no deterministic way to
863"guess" the number of method arguments. Only the ACPI 6.0 External opcode
864will completely solve this problem as it is deployed (automatically) in
865newer BIOS code.
866
867iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
868statements that could cause errors when the disassembled file is
869compiled. ACPICA BZ 1243. David Box.
870
871iASL: Fixed a regression caused by the merger of the two versions of the
872local strtoul64. Because of a dependency on a global variable, strtoul64
873could return an error for integers greater than a 32-bit value. ACPICA BZ
8741260.
875
876iASL: Fixed a regression where a fault could occur for an ASL Return
877statement if it invokes a control method that is not resolved. ACPICA BZ
8781264.
879
880AcpiXtract: Improved input file validation: detection of binary files and
881non-acpidump text files.
882
883----------------------------------------
88412 February 2016. Summary of changes for version 20160212:
885
8861) ACPICA kernel-resident subsystem:
887
888Implemented full support for the ACPI 6.1 specification (released in
889January). This version of the specification is available at:
890http://www.uefi.org/specifications
891
892Only a relatively small number of changes were required in ACPICA to
893support ACPI 6.1, in these areas:
894- New predefined names
895- New _HID values
896- A new subtable for HEST
897- A few other header changes for new values
898
899Ensure \_SB_._INI is executed before any _REG methods are executed. There
900appears to be existing BIOS code that relies on this behavior. Lv Zheng.
901
902Reverted a change made in version 20151218 which enabled method
903invocations to be targets of various ASL operators (SuperName and Target
904grammar elements). While the new behavior is supported by the ACPI
905specification, other AML interpreters do not support this behavior and
906never will. The ACPI specification will be updated for ACPI 6.2 to remove
907this support. Therefore, the change was reverted to the original ACPICA
908behavior.
909
910ACPICA now supports the GCC 6 compiler.
911
912Current Release: (Note: build changes increased sizes)
913    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
914    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
915Previous Release:
916    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
917    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
918
919
9202) iASL Compiler/Disassembler and Tools:
921
922Completed full support for the ACPI 6.0 External() AML opcode. The
923compiler emits an external AML opcode for each ASL External statement.
924This opcode is used by the disassembler to assist with the disassembly of
925external control methods by specifying the required number of arguments
926for the method. AML interpreters do not use this opcode. To ensure that
927interpreters do not even see the opcode, a block of one or more external
928opcodes is surrounded by an "If(0)" construct. As this feature becomes
929commonly deployed in BIOS code, the ability of disassemblers to correctly
930disassemble AML code will be greatly improved. David Box.
931
932iASL: Implemented support for an optional cross-reference output file.
933The -lx option will create a the cross-reference file with the suffix
934"xrf". Three different types of cross-reference are created in this file:
935- List of object references made from within each control method
936- Invocation (caller) list for each user-defined control method
937- List of references to each non-method object in the namespace
938
939iASL: Method invocations as ASL Target operands are now disallowed and
940flagged as errors in preparation for ACPI 6.2 (see the description of the
941problem above).
942
943----------------------------------------
9448 January 2016. Summary of changes for version 20160108:
945
9461) ACPICA kernel-resident subsystem:
947
948Updated all ACPICA copyrights and signons to 2016: Added the 2016
949copyright to all source code module headers and utility/tool signons.
950This includes the standard Linux dual-license header. This affects
951virtually every file in the ACPICA core subsystem, iASL compiler, all
952ACPICA utilities, and the ACPICA test suite.
953
954Fixed a regression introduced in version 20151218 concerning the
955execution of so-called module-level ASL/AML code. Namespace objects
956created under a module-level If() construct were not properly/fully
957entered into the namespace and could cause an interpreter fault when
958accessed.
959
960Example Code and Data Size: These are the sizes for the OS-independent
961acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
962debug version of the code includes the debug output trace mechanism and
963has a much larger code and data size.
964
965Current Release:
966    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
967    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
968  Previous Release:
969    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
970    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
971
972
9732) iASL Compiler/Disassembler and Tools:
974
975Fixed a problem with the compilation of the GpioIo and GpioInt resource
976descriptors. The _PIN field name was incorrectly defined to be an array
977of 32-bit values, but the _PIN values are in fact 16 bits each. This
978would cause incorrect bit width warnings when using Word (16-bit) fields
979to access the descriptors.
980
981
982----------------------------------------
98318 December 2015. Summary of changes for version 20151218:
984
9851) ACPICA kernel-resident subsystem:
986
987Implemented per-AML-table execution of "module-level code" as individual
988ACPI tables are loaded into the namespace during ACPICA initialization.
989In other words, any module-level code within an AML table is executed
990immediately after the table is loaded, instead of batched and executed
991after all of the tables have been loaded. This provides compatibility
992with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
993David Box.
994
995To fully support the feature above, the default operation region handlers
996for the SystemMemory, SystemIO, and PCI_Config address spaces are now
997installed before any ACPI tables are loaded. This enables module-level
998code to access these address spaces during the table load and module-
999level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
1000Box.
1001
1002Implemented several changes to the internal _REG support in conjunction
1003with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
1004utilities for the changes above. Although these tools were changed, host
1005operating systems that simply use the default handlers for SystemMemory,
1006SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
1007
1008For example, in the code below, DEV1 is conditionally added to the
1009namespace by the DSDT via module-level code that accesses an operation
1010region. The SSDT references DEV1 via the Scope operator. DEV1 must be
1011created immediately after the DSDT is loaded in order for the SSDT to
1012successfully reference DEV1. Previously, this code would cause an
1013AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
1014fully supported by ACPICA.
1015
1016    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
1017    {
1018        OperationRegion (OPR1, SystemMemory, 0x400, 32)
1019        Field (OPR1, AnyAcc, NoLock, Preserve)
1020        {
1021            FLD1, 1
1022        }
1023        If (FLD1)
1024        {
1025            Device (\DEV1)
1026            {
1027            }
1028        }
1029    }
1030    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
1031    {
1032        External (\DEV1, DeviceObj)
1033        Scope (\DEV1)
1034        {
1035        }
1036    }
1037
1038Fixed an AML interpreter problem where control method invocations were
1039not handled correctly when the invocation was itself a SuperName argument
1040to another ASL operator. In these cases, the method was not invoked.
1041ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
1042argument:
1043    Store
1044    Acquire, Wait
1045    CondRefOf, RefOf
1046    Decrement, Increment
1047    Load, Unload
1048    Notify
1049    Signal, Release, Reset
1050    SizeOf
1051
1052Implemented automatic String-to-ObjectReference conversion support for
1053packages returned by predefined names (such as _DEP). A common BIOS error
1054is to add double quotes around an ObjectReference namepath, which turns
1055the reference into an unexpected string object. This support detects the
1056problem and corrects it before the package is returned to the caller that
1057invoked the method. Lv Zheng.
1058
1059Implemented extensions to the Concatenate operator. Concatenate now
1060accepts any type of object, it is not restricted to simply
1061Integer/String/Buffer. For objects other than these 3 basic data types,
1062the argument is treated as a string containing the name of the object
1063type. This expands the utility of Concatenate and the Printf/Fprintf
1064macros. ACPICA BZ 1222.
1065
1066Cleaned up the output of the ASL Debug object. The timer() value is now
1067optional and no longer emitted by default. Also, the basic data types of
1068Integer/String/Buffer are simply emitted as their values, without a data
1069type string -- since the data type is obvious from the output. ACPICA BZ
10701221.
1071
1072Example Code and Data Size: These are the sizes for the OS-independent
1073acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1074debug version of the code includes the debug output trace mechanism and
1075has a much larger code and data size.
1076
1077  Current Release:
1078    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
1079    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
1080  Previous Release:
1081    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
1082    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
1083
1084
10852) iASL Compiler/Disassembler and Tools:
1086
1087iASL: Fixed some issues with the ASL Include() operator. This operator
1088was incorrectly defined in the iASL parser rules, causing a new scope to
1089be opened for the code within the include file. This could lead to
1090several issues, including allowing ASL code that is technically illegal
1091and not supported by AML interpreters. Note, this does not affect the
1092related #include preprocessor operator. ACPICA BZ 1212.
1093
1094iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
1095operator is essentially an ASL macro since there is no AML opcode
1096associated with it. The code emitted by the iASL compiler for ElseIf is
1097an Else opcode followed immediately by an If opcode. The disassembler
1098will now emit an ElseIf if it finds an Else immediately followed by an
1099If. This simplifies the decoded ASL, especially for deeply nested
1100If..Else and large Switch constructs. Thus, the disassembled code more
1101closely follows the original source ASL. ACPICA BZ 1211. Example:
1102
1103    Old disassembly:
1104        Else
1105        {
1106            If (Arg0 == 0x02)
1107            {
1108                Local0 = 0x05
1109            }
1110        }
1111
1112    New disassembly:
1113        ElseIf (Arg0 == 0x02)
1114        {
1115            Local0 = 0x05
1116        }
1117
1118AcpiExec: Added support for the new module level code behavior and the
1119early region installation. This required a small change to the
1120initialization, since AcpiExec must install its own operation region
1121handlers.
1122
1123AcpiExec: Added support to make the debug object timer optional. Default
1124is timer disabled. This cleans up the debug object output -- the timer
1125data is rarely used.
1126
1127AcpiExec: Multiple ACPI tables are now loaded in the order that they
1128appear on the command line. This can be important when there are
1129interdependencies/references between the tables.
1130
1131iASL/Templates. Add support to generate template files with multiple
1132SSDTs within a single output file. Also added ommand line support to
1133specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
11341223, 1225.
1135
1136
1137----------------------------------------
113824 November 2015. Summary of changes for version 20151124:
1139
11401) ACPICA kernel-resident subsystem:
1141
1142Fixed a possible regression for a previous update to FADT handling. The
1143FADT no longer has a fixed table ID, causing some issues with code that
1144was hardwired to a specific ID. Lv Zheng.
1145
1146Fixed a problem where the method auto-serialization could interfere with
1147the current SyncLevel. This change makes the auto-serialization support
1148transparent to the SyncLevel support and management.
1149
1150Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
1151interface is intended for early access to the namespace during the
1152initial namespace device discovery walk. The _SUB method has been seen to
1153access operation regions in some cases, causing errors because the
1154operation regions are not fully initialized.
1155
1156AML Debugger: Fixed some issues with the terminate/quit/exit commands
1157that can cause faults. Lv Zheng.
1158
1159AML Debugger: Add thread ID support so that single-step mode only applies
1160to the AML Debugger thread. This prevents runtime errors within some
1161kernels. Lv Zheng.
1162
1163Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
1164methods that are invoked by this interface are optional, removed warnings
1165emitted for the case where one or more of these methods do not exist.
1166ACPICA BZ 1208, original change by Prarit Bhargava.
1167
1168Made a major pass through the entire ACPICA source code base to
1169standardize formatting that has diverged a bit over time. There are no
1170functional changes, but this will of course cause quite a few code
1171differences from the previous ACPICA release.
1172
1173Example Code and Data Size: These are the sizes for the OS-independent
1174acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1175debug version of the code includes the debug output trace mechanism and
1176has a much larger code and data size.
1177
1178  Current Release:
1179    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
1180    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
1181  Previous Release:
1182    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1183    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
1184
1185
11862) iASL Compiler/Disassembler and Tools:
1187
1188iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
1189definition blocks within a single ASL file and the resulting AML file.
1190Support for this type of file was also added to the various tools that
1191use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
1192example code below shows two definition blocks within the same file:
1193
1194    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
11950x12345678)
1196    {
1197    }
1198    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
1199    {
1200    }
1201
1202iASL: Enhanced typechecking for the Name() operator. All expressions for
1203the value of the named object must be reduced/folded to a single constant
1204at compile time, as per the ACPI specification (the AML definition of
1205Name()).
1206
1207iASL: Fixed some code indentation issues for the -ic and -ia options (C
1208and assembly headers). Now all emitted code correctly begins in column 1.
1209
1210iASL: Added an error message for an attempt to open a Scope() on an
1211object defined in an SSDT. The DSDT is always loaded into the namespace
1212first, so any attempt to open a Scope on an SSDT object will fail at
1213runtime.
1214
1215
1216----------------------------------------
121730 September 2015. Summary of changes for version 20150930:
1218
12191) ACPICA kernel-resident subsystem:
1220
1221Debugger: Implemented several changes and bug fixes to assist support for
1222the in-kernel version of the AML debugger. Lv Zheng.
1223- Fix the "predefined" command for in-kernel debugger.
1224- Do not enter debug command loop for the help and version commands.
1225- Disallow "execute" command during execution/single-step of a method.
1226
1227Interpreter: Updated runtime typechecking for all operators that have
1228target operands. The operand is resolved and validated that it is legal.
1229For example, the target cannot be a non-data object such as a Device,
1230Mutex, ThermalZone, etc., as per the ACPI specification.
1231
1232Debugger: Fixed the double-mutex user I/O handshake to work when local
1233deadlock detection is enabled.
1234
1235Debugger: limited display of method locals and arguments (LocalX and
1236ArgX) to only those that have actually been initialized. This prevents
1237lines of extraneous output.
1238
1239Updated the definition of the NFIT table to correct the bit polarity of
1240one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
1241
1242Example Code and Data Size: These are the sizes for the OS-independent
1243acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1244debug version of the code includes the debug output trace mechanism and
1245has a much larger code and data size.
1246
1247  Current Release:
1248    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1249    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
1250  Previous Release:
1251    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1252    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
1253
1254
12552) iASL Compiler/Disassembler and Tools:
1256
1257iASL: Improved the compile-time typechecking for operands of many of the
1258ASL operators:
1259
1260-- Added an option to disable compiler operand/operator typechecking (-
1261ot).
1262
1263-- For the following operators, the TermArg operands are now validated
1264when possible to be Integer data objects: BankField, OperationRegion,
1265DataTableRegion, Buffer, and Package.
1266
1267-- Store (Source, Target): Both the source and target operands are
1268resolved and checked that the operands are both legal. For example,
1269neither operand can be a non-data object such as a Device, Mutex,
1270ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
1271operator can be used to store an object to any type of target object.
1272
1273-- Store (Source, Target): If the source is a Package object, the target
1274must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
1275is a Package, the source must also be a Package.
1276
1277-- Store (Source, Target): A warning is issued if the source and target
1278resolve to the identical named object.
1279
1280-- Store (Source, <method invocation>): An error is generated for the
1281target method invocation, as this construct is not supported by the AML
1282interpreter.
1283
1284-- For all ASL math and logic operators, the target operand must be a
1285data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
1286includes the function return value also.
1287
1288-- External declarations are also included in the typechecking where
1289possible. External objects defined using the UnknownObj keyword cannot be
1290typechecked, however.
1291
1292iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
1293operator:
1294- Legacy code: Index(PKG1, 3)
1295- New ASL+ code: PKG1[3]
1296This completes the ACPI 6.0 ASL+ support as it was the only operator not
1297supported.
1298
1299iASL: Fixed the file suffix for the preprocessor output file (.i). Two
1300spaces were inadvertently appended to the filename, causing file access
1301and deletion problems on some systems.
1302
1303ASL Test Suite (ASLTS): Updated the master makefile to generate all
1304possible compiler output files when building the test suite -- thus
1305exercising these features of the compiler. These files are automatically
1306deleted when the test suite exits.
1307
1308
1309----------------------------------------
131018 August 2015. Summary of changes for version 20150818:
1311
13121) ACPICA kernel-resident subsystem:
1313
1314Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
1315Zheng. ACPICA BZ 1186.
1316
1317Completed development to ensure that the ACPICA Disassembler and Debugger
1318are fully standalone components of ACPICA. Removed cross-component
1319dependences. Lv Zheng.
1320
1321The max-number-of-AML-loops is now runtime configurable (previously was
1322compile-time only). This is essentially a loop timeout to force-abort
1323infinite AML loops. ACPCIA BZ 1192.
1324
1325Debugger: Cleanup output to dump ACPI names and namepaths without any
1326trailing underscores. Lv Zheng. ACPICA BZ 1135.
1327
1328Removed unnecessary conditional compilations across the Debugger and
1329Disassembler components where entire modules could be left uncompiled.
1330
1331The aapits test is deprecated and has been removed from the ACPICA git
1332tree. The test has never been completed and has not been maintained, thus
1333becoming rather useless. ACPICA BZ 1015, 794.
1334
1335A batch of small changes to close bugzilla and other reports:
1336- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
1337- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
1338- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
1339- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
1340Moore.
1341- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
1342ACPICA BZ 1184.
1343- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
1344operators.
1345- Debugger: Split debugger initialization/termination interfaces. Lv
1346Zheng.
1347- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
1348identification.
1349- AcpiExec: Add debug message during _REG method phase during table
1350load/init.
1351- AcpiNames: Fix a regression where some output was missing and no longer
1352emitted.
1353- Debugger: General cleanup and simplification. Lv Zheng.
1354- Disassembler: Cleanup use of several global option variables. Lv Zheng.
1355
1356Example Code and Data Size: These are the sizes for the OS-independent
1357acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1358debug version of the code includes the debug output trace mechanism and
1359has a much larger code and data size.
1360
1361  Current Release:
1362    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1363    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
1364  Previous Release:
1365    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1366    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1367
1368
13692) iASL Compiler/Disassembler and Tools:
1370
1371AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
1372were not handled properly and caused load errors. Now, properly invoke
1373and use the ACPICA auto-reallocate mechanism for ACPI table data
1374structures. ACPICA BZ 1188
1375
1376AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
1377BZ 1190.
1378
1379AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
1380AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
1381executed during initialization. ACPICA BZ 1187, 1189.
1382
1383iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
1384that corresponds to each disassembled ASL statement, to simplify
1385debugging. ACPICA BZ 1191.
1386
1387Debugger: Add option to the "objects" command to display a summary of the
1388current namespace objects (Object type and count). This is displayed if
1389the command is entered with no arguments.
1390
1391AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
1392
1393
1394----------------------------------------
139517 July 2015. Summary of changes for version 20150717:
1396
13971) ACPICA kernel-resident subsystem:
1398
1399Improved the partitioning between the Debugger and Disassembler
1400components. This allows the Debugger to be used standalone within kernel
1401code without the Disassembler (which is used for single stepping also).
1402This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
1403
1404Debugger: Implemented a new command to trace the execution of control
1405methods (Trace). This is especially useful for the in-kernel version of
1406the debugger when file I/O may not be available for method trace output.
1407See the ACPICA reference for more information. Lv Zheng.
1408
1409Moved all C library prototypes (used for the local versions of these
1410functions when requested) to a new header, acclib.h
1411Cleaned up the use of non-ANSI C library functions. These functions are
1412implemented locally in ACPICA. Moved all such functions to a common
1413source file, utnonansi.c
1414
1415Debugger: Fixed a problem with the "!!" command (get last command
1416executed) where the debugger could enter an infinite loop and eventually
1417crash.
1418
1419Removed the use of local macros that were used for some of the standard C
1420library functions to automatically cast input parameters. This mostly
1421affected the is* functions where the input parameter is defined to be an
1422int. This required a few modifications to the main ACPICA source code to
1423provide casting for these functions and eliminate possible compiler
1424warnings for these parameters.
1425
1426Across the source code, added additional status/error checking to resolve
1427issues discovered by static source code analysis tools such as Coverity.
1428
1429Example Code and Data Size: These are the sizes for the OS-independent
1430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1431debug version of the code includes the debug output trace mechanism and
1432has a much larger code and data size.
1433
1434  Current Release:
1435    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1436    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1437  Previous Release:
1438    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
1439    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
1440
1441
14422) iASL Compiler/Disassembler and Tools:
1443
1444iASL: Fixed a regression where the device map file feature no longer
1445worked properly when used in conjunction with the disassembler. It only
1446worked properly with the compiler itself.
1447
1448iASL: Implemented a new warning for method LocalX variables that are set
1449but never used (similar to a C compiler such as gcc). This also applies
1450to ArgX variables that are not defined by the parent method, and are
1451instead (legally) used as local variables.
1452
1453iASL/Preprocessor: Finished the pass-through of line numbers from the
1454preprocessor to the compiler. This ensures that compiler errors/warnings
1455have the correct original line numbers and filenames, regardless of any
1456#include files.
1457
1458iASL/Preprocessor: Fixed a couple of issues with comment handling and the
1459pass-through of comments to the preprocessor output file (which becomes
1460the compiler input file). Also fixed a problem with // comments that
1461appear after a math expression.
1462
1463iASL: Added support for the TCPA server table to the table compiler and
1464template generator. (The client table was already previously supported)
1465
1466iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
1467identify the iASL compiler.
1468
1469Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
1470multiple times. The new names are ACPI_SIGN_NEGATIVE and
1471ACPI_SIGN_POSITIVE.
1472
1473AcpiHelp: Update to expand help messages for the iASL preprocessor
1474directives.
1475
1476
1477----------------------------------------
147819 June 2015. Summary of changes for version 20150619:
1479
1480Two regressions in version 20150616 have been addressed:
1481
1482Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
1483etc.) This update changes ACPICA to only use the standard headers for
1484functions, or the prototypes for the local versions of the C library
1485functions. Across the source code, this required some additional casts
1486for some Clib invocations for portability. Moved all local prototypes to
1487a new file, acclib.h
1488
1489Fixes several problems with recent changes to the handling of the FACS
1490table that could cause some systems not to boot.
1491
1492
1493----------------------------------------
149416 June 2015. Summary of changes for version 20150616:
1495
1496
14971) ACPICA kernel-resident subsystem:
1498
1499Across the entire ACPICA source code base, the various macros for the C
1500library functions (such as ACPI_STRLEN, etc.) have been removed and
1501replaced by the standard C library names (strlen, etc.) The original
1502purpose for these macros is no longer applicable. This simplification
1503reduces the number of macros used in the ACPICA source code
1504significantly, improving readability and maintainability.
1505
1506Implemented support for a new ACPI table, the OSDT. This table, the
1507"override" SDT, can be loaded directly by the host OS at boot time. It
1508enables the replacement of existing namespace objects that were installed
1509via the DSDT and/or SSDTs. The primary purpose for this is to replace
1510buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
1511for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
1512Moore.
1513
1514Added support for systems with (improperly) two FACS tables -- a "32-bit"
1515table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
1516X field). This change will support both automatically. There continues to
1517be systems found with this issue. This support requires a change to the
1518AcpiSetFirmwareWakingVector interface. Also, a public global variable has
1519been added to allow the host to select which FACS is desired
1520(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
1521details Lv Zheng.
1522
1523Added a new feature to allow for systems that do not contain an FACS.
1524Although this is already supported on hardware-reduced platforms, the
1525feature has been extended for all platforms. The reasoning is that we do
1526not want to abort the entire ACPICA initialization just because the
1527system is seriously buggy and has no FACS.
1528
1529Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
1530not correctly transcribed from the ACPI specification in ACPICA version
153120150515.
1532
1533Implemented support for the _CLS object in the AcpiGetObjectInfo external
1534interface.
1535
1536Updated the definitions of the TCPA and TPM2 ACPI tables to the more
1537recent TCG ACPI Specification, December 14, 2014. Table disassembler and
1538compiler also updated. Note: The TCPA "server" table is not supported by
1539the disassembler/table-compiler at this time.
1540
1541ACPI 6.0: Added definitions for the new GIC version field in the MADT.
1542
1543Example Code and Data Size: These are the sizes for the OS-independent
1544acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1545debug version of the code includes the debug output trace mechanism and
1546has a much larger code and data size.
1547
1548  Current Release:
1549    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
1550    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
1551  Previous Release:
1552    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
1553    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
1554
1555
15562) iASL Compiler/Disassembler and Tools:
1557
1558Disassembler: Fixed a problem with the new symbolic operator disassembler
1559where incorrect ASL code could be emitted in some cases for the "non-
1560commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
1561ShiftRight. The actual problem cases seem to be rather unusual in common
1562ASL code, however. David Box.
1563
1564Modified the linux version of acpidump to obtain ACPI tables from not
1565just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
1566Zheng.
1567
1568iASL: Fixed a problem where the user preprocessor output file (.i)
1569contained extra data that was not expected. The compiler was using this
1570file as a temporary file and passed through #line directives in order to
1571keep compiler error messages in sync with the input file and line number
1572across multiple include files. The (.i) is no longer a temporary file as
1573the compiler uses a new, different file for the original purpose.
1574
1575iASL: Fixed a problem where comments within the original ASL source code
1576file were not passed through to the preprocessor output file, nor any
1577listing files.
1578
1579iASL: Fixed some issues for the handling of the "#include" preprocessor
1580directive and the similar (but not the same) "Include" ASL operator.
1581
1582iASL: Add support for the new OSDT in both the disassembler and compiler.
1583
1584iASL: Fixed a problem with the constant folding support where a Buffer
1585object could be incorrectly generated (incorrectly formed) during a
1586conversion to a Store() operator.
1587
1588AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
1589description text for the _REV predefined name. _REV now permanently
1590returns 2, as per the ACPI 6.0 specification.
1591
1592Debugger: Enhanced the output of the Debug ASL object for references
1593produced by the Index operator. For Buffers and strings, only output the
1594actual byte pointed to by the index. For packages, only print the single
1595package element decoded by the index. Previously, the entire
1596buffer/string/package was emitted.
1597
1598iASL/Table-compiler: Fixed a regression where the "generic" data types
1599were no longer recognized, causing errors.
1600
1601
1602----------------------------------------
160315 May 2015. Summary of changes for version 20150515:
1604
1605This release implements most of ACPI 6.0 as described below.
1606
16071) ACPICA kernel-resident subsystem:
1608
1609Implemented runtime argument checking and return value checking for all
1610new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
1611_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
1612
1613Example Code and Data Size: These are the sizes for the OS-independent
1614acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1615debug version of the code includes the debug output trace mechanism and
1616has a much larger code and data size.
1617
1618  Current Release:
1619    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
1620    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
1621  Previous Release:
1622    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
1623    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
1624
1625
16262) iASL Compiler/Disassembler and Tools:
1627
1628iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
1629names (argument count validation and return value typechecking.)
1630
1631iASL disassembler and table compiler: implemented support for all new
1632ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
1633
1634iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
1635tables: FADT, MADT.
1636
1637iASL preprocessor: Added a new directive to enable inclusion of binary
1638blobs into ASL code. The new directive is #includebuffer. It takes a
1639binary file as input and emits a named ascii buffer object into the ASL
1640code.
1641
1642AcpiHelp: Added support for all new ACPI 6.0 predefined names.
1643
1644AcpiHelp: Added a new option, -d, to display all iASL preprocessor
1645directives.
1646
1647AcpiHelp: Added a new option, -t, to display all known/supported ACPI
1648tables.
1649
1650
1651----------------------------------------
165210 April 2015. Summary of changes for version 20150410:
1653
1654Reverted a change introduced in version 20150408 that caused
1655a regression in the disassembler where incorrect operator
1656symbols could be emitted.
1657
1658
1659----------------------------------------
166008 April 2015. Summary of changes for version 20150408:
1661
1662
16631) ACPICA kernel-resident subsystem:
1664
1665Permanently set the return value for the _REV predefined name. It now
1666returns 2 (was 5). This matches other ACPI implementations. _REV will be
1667deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
1668for ACPI 2.0 and later. It should never be used to differentiate or
1669identify operating systems.
1670
1671Added the "Windows 2015" string to the _OSI support. ACPICA will now
1672return TRUE to a query with this string.
1673
1674Fixed several issues with the local version of the printf function.
1675
1676Added the C99 compiler option (-std=c99) to the Unix makefiles.
1677
1678  Current Release:
1679    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
1680    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
1681  Previous Release:
1682    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1683    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1684
1685
16862) iASL Compiler/Disassembler and Tools:
1687
1688iASL: Implemented an enhancement to the constant folding feature to
1689transform the parse tree to a simple Store operation whenever possible:
1690    Add (2, 3, X) ==> is converted to: Store (5, X)
1691    X = 2 + 3     ==> is converted to: Store (5, X)
1692
1693Updated support for the SLIC table (Software Licensing Description Table)
1694in both the Data Table compiler and the disassembler. The SLIC table
1695support now conforms to "Microsoft Software Licensing Tables (SLIC and
1696MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
1697following the ACPI header is now defined to be "Proprietary Data", and as
1698such, can only be entered or displayed as a hex data block.
1699
1700Implemented full support for the MSDM table as described in the document
1701above. Note: The format of MSDM is similar to SLIC. Any MSDM data
1702following the ACPI header is defined to be "Proprietary Data", and can
1703only be entered or displayed as a hex data block.
1704
1705Implemented the -Pn option for the iASL Table Compiler (was only
1706implemented for the ASL compiler). This option disables the iASL
1707preprocessor.
1708
1709Disassembler: For disassembly of Data Tables, added a comment field
1710around the Ascii equivalent data that is emitted as part of the "Raw
1711Table Data" block. This prevents the iASL Preprocessor from possible
1712confusion if/when the table is compiled.
1713
1714Disassembler: Added an option (-df) to force the disassembler to assume
1715that the table being disassembled contains valid AML. This feature is
1716useful for disassembling AML files that contain ACPI signatures other
1717than DSDT or SSDT (such as OEMx or other signatures).
1718
1719Changes for the EFI version of the tools:
17201) Fixed a build error/issue
17212) Fixed a cast warning
1722
1723iASL: Fixed a path issue with the __FILE__ operator by making the
1724directory prefix optional within the internal SplitInputFilename
1725function.
1726
1727Debugger: Removed some unused global variables.
1728
1729Tests: Updated the makefile for proper generation of the AAPITS suite.
1730
1731
1732----------------------------------------
173304 February 2015. Summary of changes for version 20150204:
1734
1735ACPICA kernel-resident subsystem:
1736
1737Updated all ACPICA copyrights and signons to 2014. Added the 2014
1738copyright to all module headers and signons, including the standard Linux
1739header. This affects virtually every file in the ACPICA core subsystem,
1740iASL compiler, all ACPICA utilities, and the test suites.
1741
1742Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
1743A raw gpe handling mechanism was created to allow better handling of GPE
1744storms that aren't easily managed by the normal handler. The raw handler
1745allows disabling/renabling of the the GPE so that interrupt storms can be
1746avoided in cases where events cannot be timely serviced. In this
1747scenario, handlers should use the AcpiSetGpe() API to disable/enable the
1748GPE. This API will leave the reference counts undisturbed, thereby
1749preventing unintentional clearing of the GPE when the intent in only to
1750temporarily disable it. Raw handlers allow enabling and disabling of a
1751GPE by removing GPE register locking. As such, raw handlers much provide
1752their own locks while using GPE API's to protect access to GPE data
1753structures.
1754Lv Zheng
1755
1756Events: Always modify GPE registers under the GPE lock.
1757Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
1758values. Reported as bug by joe.liu@apple.com.
1759
1760Unix makefiles: Separate option to disable optimizations and
1761_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
1762NOOPT disable option and creates a separate flag (NOFORTIFY) for this
1763purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
1764errors when building ACPICA. This allows disabling the option without
1765also having to disable optimazations.
1766David Box
1767
1768  Current Release:
1769    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1770    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
1771
1772--
1773--------------------------------------
177407 November 2014. Summary of changes for version 20141107:
1775
1776This release is available at https://acpica.org/downloads
1777
1778This release introduces and implements language extensions to ASL that
1779provide support for symbolic ("C-style") operators and expressions. These
1780language extensions are known collectively as ASL+.
1781
1782
17831) iASL Compiler/Disassembler and Tools:
1784
1785Disassembler: Fixed a problem with disassembly of the UartSerialBus
1786macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
1787Box.
1788
1789Disassembler: Fixed the Unicode macro support to add escape sequences.
1790All non-printable ASCII values are emitted as escape sequences, as well
1791as the standard escapes for quote and backslash. Ensures that the
1792disassembled macro can be correctly recompiled.
1793
1794iASL: Added Printf/Fprintf macros for formatted output. These macros are
1795translated to existing AML Concatenate and Store operations. Printf
1796writes to the ASL Debug object. Fprintf allows the specification of an
1797ASL name as the target. Only a single format specifier is required, %o,
1798since the AML interpreter dynamically converts objects to the required
1799type. David E. Box.
1800
1801    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
1802                 (Concatenate (Concatenate (Concatenate ("", Arg0),
1803                 ": Unexpected value for "), Arg1), ", "), Arg2),
1804                 " at line "), Arg3), Debug)
1805
1806    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
1807                 Arg0, Arg1, Arg2, Arg3)
1808
1809    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
1810                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
1811
1812    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
1813
1814iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
1815ASL parse tree before the AML code is generated. This allows blocks of
1816ASL code to be removed in order to help locate and identify problem
1817devices and/or code. David E. Box.
1818
1819AcpiExec: Added support (-fi) for an optional namespace object
1820initialization file. This file specifies initial values for namespace
1821objects as necessary for debugging and testing different ASL code paths
1822that may be taken as a result of BIOS options.
1823
1824
18252) Overview of symbolic operator support for ASL (ASL+)
1826-------------------------------------------------------
1827
1828As an extension to the ASL language, iASL implements support for symbolic
1829(C-style) operators for math and logical expressions. This can greatly
1830simplify ASL code as well as improve both readability and
1831maintainability. These language extensions can exist concurrently with
1832all legacy ASL code and expressions.
1833
1834The symbolic extensions are 100% compatible with existing AML
1835interpreters, since no new AML opcodes are created. To implement the
1836extensions, the iASL compiler transforms the symbolic expressions into
1837the legacy ASL/AML equivalents at compile time.
1838
1839Full symbolic expressions are supported, along with the standard C
1840precedence and associativity rules.
1841
1842Full disassembler support for the symbolic expressions is provided, and
1843creates an automatic migration path for existing ASL code to ASL+ code
1844via the disassembly process. By default, the disassembler now emits ASL+
1845code with symbolic expressions. An option (-dl) is provided to force the
1846disassembler to emit legacy ASL code if desired.
1847
1848Below is the complete list of the currently supported symbolic operators
1849with examples. See the iASL User Guide for additional information.
1850
1851
1852ASL+ Syntax      Legacy ASL Equivalent
1853-----------      ---------------------
1854
1855    // Math operators
1856
1857Z = X + Y        Add (X, Y, Z)
1858Z = X - Y        Subtract (X, Y, Z)
1859Z = X * Y        Multiply (X, Y, Z)
1860Z = X / Y        Divide (X, Y, , Z)
1861Z = X % Y        Mod (X, Y, Z)
1862Z = X << Y       ShiftLeft (X, Y, Z)
1863Z = X >> Y       ShiftRight (X, Y, Z)
1864Z = X & Y        And (X, Y, Z)
1865Z = X | Y        Or (X, Y, Z)
1866Z = X ^ Y        Xor (X, Y, Z)
1867Z = ~X           Not (X, Z)
1868X++              Increment (X)
1869X--              Decrement (X)
1870
1871    // Logical operators
1872
1873(X == Y)         LEqual (X, Y)
1874(X != Y)         LNotEqual (X, Y)
1875(X < Y)          LLess (X, Y)
1876(X > Y)          LGreater (X, Y)
1877(X <= Y)         LLessEqual (X, Y)
1878(X >= Y)         LGreaterEqual (X, Y)
1879(X && Y)         LAnd (X, Y)
1880(X || Y)         LOr (X, Y)
1881(!X)             LNot (X)
1882
1883    // Assignment and compound assignment operations
1884
1885X = Y           Store (Y, X)
1886X += Y          Add (X, Y, X)
1887X -= Y          Subtract (X, Y, X)
1888X *= Y          Multiply (X, Y, X)
1889X /= Y          Divide (X, Y, , X)
1890X %= Y          Mod (X, Y, X)
1891X <<= Y         ShiftLeft (X, Y, X)
1892X >>= Y         ShiftRight (X, Y, X)
1893X &= Y          And (X, Y, X)
1894X |= Y          Or (X, Y, X)
1895X ^= Y          Xor (X, Y, X)
1896
1897
18983) ASL+ Examples:
1899-----------------
1900
1901Legacy ASL:
1902        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
1903            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
19040x03FB),
1905            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
1906        {
1907            And (MEMB, 0xFFFFFFF0, SRMB)
1908            Store (MEMB, Local2)
1909            Store (PDBM, Local1)
1910            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
1911            Store (SRMB, MEMB)
1912            Or (PDBM, 0x02, PDBM)
1913        }
1914
1915ASL+ version:
1916        If (((R510 & 0x03FB) == 0x02E0) ||
1917            ((R520 & 0x03FB) == 0x02E0) ||
1918            ((R530 & 0x03FB) == 0x02E0) ||
1919            ((R540 & 0x03FB) == 0x02E0))
1920        {
1921            SRMB = (MEMB & 0xFFFFFFF0)
1922            Local2 = MEMB
1923            Local1 = PDBM
1924            PDBM &= 0xFFFFFFFFFFFFFFF9
1925            MEMB = SRMB
1926            PDBM |= 0x02
1927        }
1928
1929Legacy ASL:
1930        Store (0x1234, Local1)
1931        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
1932        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
1933        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
1934        Store (Index (PKG1, 0x03), Local6)
1935        Store (Add (Local3, Local2), Debug)
1936        Add (Local1, 0x0F, Local2)
1937        Add (Local1, Multiply (Local2, Local3), Local2)
1938        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
1939
1940ASL+ version:
1941        Local1 = 0x1234
1942        Local3 = (((Local1 + TEST) + 0x20) * Local2)
1943        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
1944        Local3 = (Local1 + (TEST + (0x20 * Local2)))
1945        Local6 = Index (PKG1, 0x03)
1946        Debug = (Local3 + Local2)
1947        Local2 = (Local1 + 0x0F)
1948        Local2 = (Local1 + (Local2 * Local3))
1949        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
1950
1951
1952----------------------------------------
195326 September 2014. Summary of changes for version 20140926:
1954
19551) ACPICA kernel-resident subsystem:
1956
1957Updated the GPIO operation region handler interface (GeneralPurposeIo).
1958In order to support GPIO Connection objects with multiple pins, along
1959with the related Field objects, the following changes to the interface
1960have been made: The Address is now defined to be the offset in bits of
1961the field unit from the previous invocation of a Connection. It can be
1962viewed as a "Pin Number Index" into the connection resource descriptor.
1963The BitWidth is the exact bit width of the field. It is usually one bit,
1964but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
1965additional information and examples.
1966
1967GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
1968corresponding _Lxx/_Exx methods are disabled (they may have been enabled
1969by the firmware), so that they cannot fire until they are enabled via
1970AcpiUpdateAllGpes. Rafael J. Wysocki.
1971
1972Added a new return flag for the Event/GPE status interfaces --
1973AcpiGetEventStatus and AcpiGetGpeStatus. The new
1974ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
1975GPE currently has a handler associated with it, and can thus actually
1976affect the system. Lv Zheng.
1977
1978Example Code and Data Size: These are the sizes for the OS-independent
1979acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1980debug version of the code includes the debug output trace mechanism and
1981has a much larger code and data size.
1982
1983  Current Release:
1984    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
1985    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
1986  Previous Release:
1987    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
1988    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
1989
19902) iASL Compiler/Disassembler and Tools:
1991
1992iASL: Fixed a memory allocation/free regression introduced in 20140828
1993that could cause the compiler to crash. This was introduced inadvertently
1994during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
19951113.
1996
1997iASL: Removed two error messages that have been found to create false
1998positives, until they can be fixed and fully validated (ACPICA BZ 1112):
19991) Illegal forward reference within a method
20002) Illegal reference across two methods
2001
2002iASL: Implemented a new option (-lm) to create a hardware mapping file
2003that summarizes all GPIO, I2C, SPI, and UART connections. This option
2004works for both the compiler and disassembler. See the iASL compiler user
2005guide for additional information and examples (section 6.4.6).
2006
2007AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
2008version 2. This corrects the AE_BAD_HEADER exception seen on systems with
2009a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
2010
2011AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
2012unless STDIN is actually a terminal. Assists with batch-mode processing.
2013ACPICA BZ 1114.
2014
2015Disassembler/AcpiHelp: Added another large group of recognized _HID
2016values.
2017
2018
2019----------------------------------------
202028 August 2014. Summary of changes for version 20140828:
2021
20221) ACPICA kernel-resident subsystem:
2023
2024Fixed a problem related to the internal use of the Timer() operator where
2025a 64-bit divide could cause an attempted link to a double-precision math
2026library. This divide is not actually necessary, so the code was
2027restructured to eliminate it. Lv Zheng.
2028
2029ACPI 5.1: Added support for the runtime validation of the _DSD package
2030(similar to the iASL support).
2031
2032ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
2033SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
2034
2035Example Code and Data Size: These are the sizes for the OS-independent
2036acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2037debug version of the code includes the debug output trace mechanism and
2038has a much larger code and data size.
2039
2040  Current Release:
2041    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2042    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2043  Previous Release:
2044    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
2045    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
2046
20472) iASL Compiler/Disassembler and Tools:
2048
2049AcpiExec: Fixed a problem on unix systems where the original terminal
2050state was not always properly restored upon exit. Seen when using the -v
2051option. ACPICA BZ 1104.
2052
2053iASL: Fixed a problem with the validation of the ranges/length within the
2054Memory24 resource descriptor. There was a boundary condition when the
2055range was equal to the (length -1) caused by the fact that these values
2056are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
2057
2058Disassembler: Fixed a problem with the GpioInt descriptor interrupt
2059polarity
2060flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
2061is
2062now supported properly.
2063
2064ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
2065in the disassembler, data table compiler, and table template generator.
2066
2067iASL: Added a requirement for Device() objects that one of either a _HID
2068or _ADR must exist within the scope of a Device, as per the ACPI
2069specification. Remove a similar requirement that was incorrectly in place
2070for the _DSD object.
2071
2072iASL: Added error detection for illegal named references within control
2073methods that would cause runtime failures. Now trapped as errors are: 1)
2074References to objects within a non-parent control method. 2) Forward
2075references (within a method) -- for control methods, AML interpreters use
2076a one-pass parse of control methods. ACPICA BZ 1008.
2077
2078iASL: Added error checking for dependencies related to the _PSx power
2079methods. ACPICA BZ 1029.
20801) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
2081_PS3.
20822) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
2083scope.
2084
2085iASL and table compiler: Cleanup miscellaneous memory leaks by fully
2086deploying the existing object and string caches and adding new caches for
2087the table compiler.
2088
2089iASL: Split the huge parser source file into multiple subfiles to improve
2090manageability. Generation now requires the M4 macro preprocessor, which
2091is part of the Bison distribution on both unix and windows platforms.
2092
2093AcpiSrc: Fixed and removed all extraneous warnings generated during
2094entire ACPICA source code scan and/or conversion.
2095
2096
2097----------------------------------------
2098
209924 July 2014. Summary of changes for version 20140724:
2100
2101The ACPI 5.1 specification has been released and is available at:
2102http://uefi.org/specs/access
2103
2104
21050) ACPI 5.1 support in ACPICA:
2106
2107ACPI 5.1 is fully supported in ACPICA as of this release.
2108
2109New predefined names. Support includes iASL and runtime ACPICA
2110validation.
2111    _CCA (Cache Coherency Attribute).
2112    _DSD (Device-Specific Data). David Box.
2113
2114Modifications to existing ACPI tables. Support includes headers, iASL
2115Data Table compiler, disassembler, and the template generator.
2116    FADT - New fields and flags. Graeme Gregory.
2117    GTDT - One new subtable and new fields. Tomasz Nowicki.
2118    MADT - Two new subtables. Tomasz Nowicki.
2119    PCCT - One new subtable.
2120
2121Miscellaneous.
2122    New notification type for System Resource Affinity change events.
2123
2124
21251) ACPICA kernel-resident subsystem:
2126
2127Fixed a regression introduced in 20140627 where a fault can happen during
2128the deletion of Alias AML namespace objects. The problem affected both
2129the core ACPICA and the ACPICA tools including iASL and AcpiExec.
2130
2131Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
2132simple mechanism to enable wake GPEs that have no associated handler or
2133control method. Rafael Wysocki.
2134
2135Updated the AcpiEnableGpe interface to disallow the enable if there is no
2136handler or control method associated with the particular GPE. This will
2137help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
2138
2139Updated GPE handling and dispatch by disabling the GPE before clearing
2140the status bit for edge-triggered GPEs. Lv Zheng.
2141
2142Added Timer() support to the AML Debug object. The current timer value is
2143now displayed with each invocation of (Store to) the debug object to
2144enable simple generation of execution times for AML code (method
2145execution for example.) ACPICA BZ 1093.
2146
2147Example Code and Data Size: These are the sizes for the OS-independent
2148acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2149debug version of the code includes the debug output trace mechanism and
2150has a much larger code and data size.
2151
2152  Current Release:
2153    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
2154    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
2155  Previous Release:
2156    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
2157    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
2158
2159
21602) iASL Compiler/Disassembler and Tools:
2161
2162Fixed an issue with the recently added local printf implementation,
2163concerning width/precision specifiers that could cause incorrect output.
2164Lv Zheng. ACPICA BZ 1094.
2165
2166Disassembler: Added support to detect buffers that contain UUIDs and
2167disassemble them to an invocation of the ToUUID operator. Also emit
2168commented descriptions of known ACPI-related UUIDs.
2169
2170AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
2171-u. Adds three new files.
2172
2173iASL: Update table compiler and disassembler for DMAR table changes that
2174were introduced in September 2013. With assistance by David Woodhouse.
2175
2176----------------------------------------
217727 June 2014. Summary of changes for version 20140627:
2178
21791) ACPICA kernel-resident subsystem:
2180
2181Formatted Output: Implemented local versions of standard formatted output
2182utilities such as printf, etc. Over time, it has been discovered that
2183there are in fact many portability issues with printf, and the addition
2184of this feature will fix/prevent these issues once and for all. Some
2185known issues are summarized below:
2186
21871) Output of 64-bit values is not portable. For example, UINT64 is %ull
2188for the Linux kernel and is %uI64 for some MSVC versions.
21892) Invoking printf consistently in a manner that is portable across both
219032-bit and 64-bit platforms is difficult at best in many situations.
21913) The output format for pointers varies from system to system (leading
2192zeros especially), and leads to inconsistent output from ACPICA across
2193platforms.
21944) Certain platform-specific printf formats may conflict with ACPICA use.
21955) If there is no local C library available, ACPICA now has local support
2196for printf.
2197
2198-- To address these printf issues in a complete manner, ACPICA now
2199directly implements a small subset of printf format specifiers, only
2200those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
2201
2202Implemented support for ACPICA generation within the EFI environment.
2203Initially, the AcpiDump utility is supported in the UEFI shell
2204environment. Lv Zheng.
2205
2206Added a new external interface, AcpiLogError, to improve ACPICA
2207portability. This allows the host to redirect error messages from the
2208ACPICA utilities. Lv Zheng.
2209
2210Added and deployed new OSL file I/O interfaces to improve ACPICA
2211portability:
2212  AcpiOsOpenFile
2213  AcpiOsCloseFile
2214  AcpiOsReadFile
2215  AcpiOsWriteFile
2216  AcpiOsGetFileOffset
2217  AcpiOsSetFileOffset
2218There are C library implementations of these functions in the new file
2219service_layers/oslibcfs.c -- however, the functions can be implemented by
2220the local host in any way necessary. Lv Zheng.
2221
2222Implemented a mechanism to disable/enable ACPI table checksum validation
2223at runtime. This can be useful when loading tables very early during OS
2224initialization when it may not be possible to map the entire table in
2225order to compute the checksum. Lv Zheng.
2226
2227Fixed a buffer allocation issue for the Generic Serial Bus support.
2228Originally, a fixed buffer length was used. This change allows for
2229variable-length buffers based upon the protocol indicated by the field
2230access attributes. Reported by Lan Tianyu. Lv Zheng.
2231
2232Fixed a problem where an object detached from a namespace node was not
2233properly terminated/cleared and could cause a circular list problem if
2234reattached. ACPICA BZ 1063. David Box.
2235
2236Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
2237
2238Fixed a possible memory leak in an error return path within the function
2239AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
2240
2241Example Code and Data Size: These are the sizes for the OS-independent
2242acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2243debug version of the code includes the debug output trace mechanism and
2244has a much larger code and data size.
2245
2246  Current Release:
2247    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
2248    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
2249  Previous Release:
2250    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
2251    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
2252
2253
22542) iASL Compiler/Disassembler and Tools:
2255
2256Disassembler: Add dump of ASCII equivalent text within a comment at the
2257end of each line of the output for the Buffer() ASL operator.
2258
2259AcpiDump: Miscellaneous changes:
2260  Fixed repetitive table dump in -n mode.
2261  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
2262the ACPI 2.0 GUID fails.
2263
2264iASL: Fixed a problem where the compiler could fault if incorrectly given
2265an acpidump output file as input. ACPICA BZ 1088. David Box.
2266
2267AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
2268they are invoked without any arguments.
2269
2270Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
22711086. Colin Ian King.
2272
2273Disassembler: Cleaned up a block of code that extracts a parent Op
2274object. Added a comment that explains that the parent is guaranteed to be
2275valid in this case. ACPICA BZ 1069.
2276
2277
2278----------------------------------------
227924 April 2014. Summary of changes for version 20140424:
2280
22811) ACPICA kernel-resident subsystem:
2282
2283Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
2284Some of these tables are known to contain a trailing NULL entry. Lv
2285Zheng.
2286
2287Removed an extraneous error message for the case where there are a large
2288number of system GPEs (> 124). This was the "32-bit FADT register is too
2289long to convert to GAS struct" message, which is irrelevant for GPEs
2290since the GPEx_BLK_LEN fields of the FADT are always used instead of the
2291(limited capacity) GAS bit length. Also, several changes to ensure proper
2292support for GPE numbers > 255, where some "GPE number" fields were 8-bits
2293internally.
2294
2295Implemented and deployed additional configuration support for the public
2296ACPICA external interfaces. Entire classes of interfaces can now be
2297easily modified or configured out, replaced by stubbed inline functions
2298by default. Lv Zheng.
2299
2300Moved all public ACPICA runtime configuration globals to the public
2301ACPICA external interface file for convenience. Also, removed some
2302obsolete/unused globals. See the file acpixf.h. Lv Zheng.
2303
2304Documentation: Added a new section to the ACPICA reference describing the
2305maximum number of GPEs that can be supported by the FADT-defined GPEs in
2306block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
2307reference.
2308
2309Example Code and Data Size: These are the sizes for the OS-independent
2310acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2311debug version of the code includes the debug output trace mechanism and
2312has a much larger code and data size.
2313
2314  Current Release:
2315    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
2316    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
2317  Previous Release:
2318    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
2319    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
2320
2321
23222) iASL Compiler/Disassembler and Tools:
2323
2324iASL and disassembler: Add full support for the LPIT table (Low Power
2325Idle Table). Includes support in the disassembler, data table compiler,
2326and template generator.
2327
2328AcpiDump utility:
23291) Add option to force the use of the RSDT (over the XSDT).
23302) Improve validation of the RSDP signature (use 8 chars instead of 4).
2331
2332iASL: Add check for predefined packages that are too large.  For
2333predefined names that contain subpackages, check if each subpackage is
2334too large. (Check for too small already exists.)
2335
2336Debugger: Updated the GPE command (which simulates a GPE by executing the
2337GPE code paths in ACPICA). The GPE device is now optional, and defaults
2338to the GPE 0/1 FADT-defined blocks.
2339
2340Unix application OSL: Update line-editing support. Add additional error
2341checking and take care not to reset terminal attributes on exit if they
2342were never set. This should help guarantee that the terminal is always
2343left in the previous state on program exit.
2344
2345
2346----------------------------------------
234725 March 2014. Summary of changes for version 20140325:
2348
23491) ACPICA kernel-resident subsystem:
2350
2351Updated the auto-serialize feature for control methods. This feature
2352automatically serializes all methods that create named objects in order
2353to prevent runtime errors. The update adds support to ignore the
2354currently executing AML SyncLevel when invoking such a method, in order
2355to prevent disruption of any existing SyncLevel priorities that may exist
2356in the AML code. Although the use of SyncLevels is relatively rare, this
2357change fixes a regression where an AE_AML_MUTEX_ORDER exception can
2358appear on some machines starting with the 20140214 release.
2359
2360Added a new external interface to allow the host to install ACPI tables
2361very early, before the namespace is even created. AcpiInstallTable gives
2362the host additional flexibility for ACPI table management. Tables can be
2363installed directly by the host as if they had originally appeared in the
2364XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
2365(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
2366with additional internal restructuring and cleanup. See the ACPICA
2367Reference for interface details. Lv Zheng.
2368
2369Added validation of the checksum for all incoming dynamically loaded
2370tables (via external interfaces or via AML Load/LoadTable operators). Lv
2371Zheng.
2372
2373Updated the use of the AcpiOsWaitEventsComplete interface during Notify
2374and GPE handler removal. Restructured calls to eliminate possible race
2375conditions. Lv Zheng.
2376
2377Added a warning for the use/execution of the ASL/AML Unload (table)
2378operator. This will help detect and identify machines that use this
2379operator if and when it is ever used. This operator has never been seen
2380in the field and the usage model and possible side-effects of the drastic
2381runtime action of a full table removal are unknown.
2382
2383Reverted the use of #pragma push/pop which was introduced in the 20140214
2384release. It appears that push and pop are not implemented by enough
2385compilers to make the use of this feature feasible for ACPICA at this
2386time. However, these operators may be deployed in a future ACPICA
2387release.
2388
2389Added the missing EXPORT_SYMBOL macros for the install and remove SCI
2390handler interfaces.
2391
2392Source code generation:
23931) Disabled the use of the "strchr" macro for the gcc-specific
2394generation. For some versions of gcc, this macro can periodically expose
2395a compiler bug which in turn causes compile-time error(s).
23962) Added support for PPC64 compilation. Colin Ian King.
2397
2398Example Code and Data Size: These are the sizes for the OS-independent
2399acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2400debug version of the code includes the debug output trace mechanism and
2401has a much larger code and data size.
2402
2403  Current Release:
2404    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
2405    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
2406  Previous Release:
2407    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
2408    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
2409
2410
24112) iASL Compiler/Disassembler and Tools:
2412
2413Disassembler: Added several new features to improve the readability of
2414the resulting ASL code. Extra information is emitted within comment
2415fields in the ASL code:
24161) Known _HID/_CID values are decoded to descriptive text.
24172) Standard values for the Notify() operator are decoded to descriptive
2418text.
24193) Target operands are expanded to full pathnames (in a comment) when
2420possible.
2421
2422Disassembler: Miscellaneous updates for extern() handling:
24231) Abort compiler if file specified by -fe option does not exist.
24242) Silence unnecessary warnings about argument count mismatches.
24253) Update warning messages concerning unresolved method externals.
24264) Emit "UnknownObj" keyword for externals whose type cannot be
2427determined.
2428
2429AcpiHelp utility:
24301) Added the -a option to display both the ASL syntax and the AML
2431encoding for an input ASL operator. This effectively displays all known
2432information about an ASL operator with one AcpiHelp invocation.
24332) Added substring match support (similar to a wildcard) for the -i
2434(_HID/PNP IDs) option.
2435
2436iASL/Disassembler: Since this tool does not yet support execution on big-
2437endian machines, added detection of endianness and an error message if
2438execution is attempted on big-endian. Support for big-endian within iASL
2439is a feature that is on the ACPICA to-be-done list.
2440
2441AcpiBin utility:
24421) Remove option to extract binary files from an acpidump; this function
2443is made obsolete by the AcpiXtract utility.
24442) General cleanup of open files and allocated buffers.
2445
2446
2447----------------------------------------
244814 February 2014. Summary of changes for version 20140214:
2449
24501) ACPICA kernel-resident subsystem:
2451
2452Implemented a new mechanism to proactively prevent problems with ill-
2453behaved reentrant control methods that create named ACPI objects. This
2454behavior is illegal as per the ACPI specification, but is nonetheless
2455frequently seen in the field. Previously, this could lead to an
2456AE_ALREADY_EXISTS exception if the method was actually entered by more
2457than one thread. This new mechanism detects such methods at table load
2458time and marks them "serialized" to prevent reentrancy. A new global
2459option, AcpiGbl_AutoSerializeMethods, has been added to disable this
2460feature if desired. This mechanism and global option obsoletes and
2461supersedes the previous AcpiGbl_SerializeAllMethods option.
2462
2463Added the "Windows 2013" string to the _OSI support. ACPICA will now
2464respond TRUE to _OSI queries with this string. It is the stated policy of
2465ACPICA to add new strings to the _OSI support as soon as possible after
2466they are defined. See the full ACPICA _OSI policy which has been added to
2467the utilities/utosi.c file.
2468
2469Hardened/updated the _PRT return value auto-repair code:
24701) Do not abort the repair on a single subpackage failure, continue to
2471check all subpackages.
24722) Add check for the minimum subpackage length (4).
24733) Properly handle extraneous NULL package elements.
2474
2475Added support to avoid the possibility of infinite loops when traversing
2476object linked lists. Never allow an infinite loop, even in the face of
2477corrupted object lists.
2478
2479ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
2480pack(pop) directives to ensure that the ACPICA headers are independent of
2481compiler settings or other host headers.
2482
2483Example Code and Data Size: These are the sizes for the OS-independent
2484acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2485debug version of the code includes the debug output trace mechanism and
2486has a much larger code and data size.
2487
2488  Current Release:
2489    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
2490    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
2491  Previous Release:
2492    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
2493    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
2494
2495
24962) iASL Compiler/Disassembler and Tools:
2497
2498iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
2499first reserved field was incorrectly forced to have a value of zero. This
2500change correctly forces the field to have a value of one. ACPICA BZ 1081.
2501
2502Debugger: Added missing support for the "Extra" and "Data" subobjects
2503when displaying object data.
2504
2505Debugger: Added support to display entire object linked lists when
2506displaying object data.
2507
2508iASL: Removed the obsolete -g option to obtain ACPI tables from the
2509Windows registry. This feature has been superseded by the acpidump
2510utility.
2511
2512
2513----------------------------------------
251414 January 2014. Summary of changes for version 20140114:
2515
25161) ACPICA kernel-resident subsystem:
2517
2518Updated all ACPICA copyrights and signons to 2014. Added the 2014
2519copyright to all module headers and signons, including the standard Linux
2520header. This affects virtually every file in the ACPICA core subsystem,
2521iASL compiler, all ACPICA utilities, and the test suites.
2522
2523Improved parameter validation for AcpiInstallGpeBlock. Added the
2524following checks:
25251) The incoming device handle refers to type ACPI_TYPE_DEVICE.
25262) There is not already a GPE block attached to the device.
2527Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
2528device.
2529
2530Correctly support "references" in the ACPI_OBJECT. This change fixes the
2531support to allow references (namespace nodes) to be passed as arguments
2532to control methods via the evaluate object interface. This is probably
2533most useful for testing purposes, however.
2534
2535Improved support for 32/64 bit physical addresses in printf()-like
2536output. This change improves the support for physical addresses in printf
2537debug statements and other output on both 32-bit and 64-bit hosts. It
2538consistently outputs the appropriate number of bytes for each host. The
2539%p specifier is unsatisfactory since it does not emit uniform output on
2540all hosts/clib implementations (on some, leading zeros are not supported,
2541leading to difficult-to-read output).
2542
2543Example Code and Data Size: These are the sizes for the OS-independent
2544acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2545debug version of the code includes the debug output trace mechanism and
2546has a much larger code and data size.
2547
2548  Current Release:
2549    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
2550    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
2551  Previous Release:
2552    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
2553    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
2554
2555
25562) iASL Compiler/Disassembler and Tools:
2557
2558iASL: Fix a possible fault when using the Connection() operator. Fixes a
2559problem if the parent Field definition for the Connection operator refers
2560to an operation region that does not exist. ACPICA BZ 1064.
2561
2562AcpiExec: Load of local test tables is now optional. The utility has the
2563capability to load some various tables to test features of ACPICA.
2564However, there are enough of them that the output of the utility became
2565confusing. With this change, only the required local tables are displayed
2566(RSDP, XSDT, etc.) along with the actual tables loaded via the command
2567line specification. This makes the default output simler and easier to
2568understand. The -el command line option restores the original behavior
2569for testing purposes.
2570
2571AcpiExec: Added support for overlapping operation regions. This change
2572expands the simulation of operation regions by supporting regions that
2573overlap within the given address space. Supports SystemMemory and
2574SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
2575
2576AcpiExec: Added region handler support for PCI_Config and EC spaces. This
2577allows AcpiExec to simulate these address spaces, similar to the current
2578support for SystemMemory and SystemIO.
2579
2580Debugger: Added new command to read/write/compare all namespace objects.
2581The command "test objects" will exercise the entire namespace by writing
2582new values to each data object, and ensuring that the write was
2583successful. The original value is then restored and verified.
2584
2585Debugger: Added the "test predefined" command. This change makes this
2586test public and puts it under the new "test" command. The test executes
2587each and every predefined name within the current namespace.
2588
2589
2590----------------------------------------
259118 December 2013. Summary of changes for version 20131218:
2592
2593Global note: The ACPI 5.0A specification was released this month. There
2594are no changes needed for ACPICA since this release of ACPI is an
2595errata/clarification release. The specification is available at
2596acpi.info.
2597
2598
25991) ACPICA kernel-resident subsystem:
2600
2601Added validation of the XSDT root table if it is present. Some older
2602platforms contain an XSDT that is ill-formed or otherwise invalid (such
2603as containing some or all entries that are NULL pointers). This change
2604adds a new function to validate the XSDT before actually using it. If the
2605XSDT is found to be invalid, ACPICA will now automatically fall back to
2606using the RSDT instead. Original implementation by Zhao Yakui. Ported to
2607ACPICA and enhanced by Lv Zheng and Bob Moore.
2608
2609Added a runtime option to ignore the XSDT and force the use of the RSDT.
2610This change adds a runtime option that will force ACPICA to use the RSDT
2611instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
2612requires that an XSDT be used instead of the RSDT, the XSDT has been
2613found to be corrupt or ill-formed on some machines. Lv Zheng.
2614
2615Added a runtime option to favor 32-bit FADT register addresses over the
261664-bit addresses. This change adds an option to favor 32-bit FADT
2617addresses when there is a conflict between the 32-bit and 64-bit versions
2618of the same register. The default behavior is to use the 64-bit version
2619in accordance with the ACPI specification. This can now be overridden via
2620the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
2621
2622During the change above, the internal "Convert FADT" and "Verify FADT"
2623functions have been merged to simplify the code, making it easier to
2624understand and maintain. ACPICA BZ 933.
2625
2626Improve exception reporting and handling for GPE block installation.
2627Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
2628status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
2629
2630Added helper macros to extract bus/segment numbers from the HEST table.
2631This change adds two macros to extract the encoded bus and segment
2632numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
2633Betty Dall <betty.dall@hp.com>
2634
2635Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
2636by ACPICA. It is not a public macro, so it should have no effect on
2637existing OSV code. Lv Zheng.
2638
2639Example Code and Data Size: These are the sizes for the OS-independent
2640acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2641debug version of the code includes the debug output trace mechanism and
2642has a much larger code and data size.
2643
2644  Current Release:
2645    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
2646    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
2647  Previous Release:
2648    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
2649    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
2650
2651
26522) iASL Compiler/Disassembler and Tools:
2653
2654Disassembler: Improved pathname support for emitted External()
2655statements. This change adds full pathname support for external names
2656that have been resolved internally by the inclusion of additional ACPI
2657tables (via the iASL -e option). Without this change, the disassembler
2658can emit multiple externals for the same object, or it become confused
2659when the Scope() operator is used on an external object. Overall, greatly
2660improves the ability to actually recompile the emitted ASL code when
2661objects a referenced across multiple ACPI tables. Reported by Michael
2662Tsirkin (mst@redhat.com).
2663
2664Tests/ASLTS: Updated functional control suite to execute with no errors.
2665David Box. Fixed several errors related to the testing of the interpreter
2666slack mode. Lv Zheng.
2667
2668iASL: Added support to detect names that are declared within a control
2669method, but are unused (these are temporary names that are only valid
2670during the time the method is executing). A remark is issued for these
2671cases. ACPICA BZ 1022.
2672
2673iASL: Added full support for the DBG2 table. Adds full disassembler,
2674table compiler, and template generator support for the DBG2 table (Debug
2675Port 2 table).
2676
2677iASL: Added full support for the PCCT table, update the table definition.
2678Updates the PCCT table definition in the actbl3.h header and adds table
2679compiler and template generator support.
2680
2681iASL: Added an option to emit only error messages (no warnings/remarks).
2682The -ve option will enable only error messages, warnings and remarks are
2683suppressed. This can simplify debugging when only the errors are
2684important, such as when an ACPI table is disassembled and there are many
2685warnings and remarks -- but only the actual errors are of real interest.
2686
2687Example ACPICA code (source/tools/examples): Updated the example code so
2688that it builds to an actual working program, not just example code. Added
2689ACPI tables and execution of an example control method in the DSDT. Added
2690makefile support for Unix generation.
2691
2692
2693----------------------------------------
269415 November 2013. Summary of changes for version 20131115:
2695
2696This release is available at https://acpica.org/downloads
2697
2698
26991) ACPICA kernel-resident subsystem:
2700
2701Resource Manager: Fixed loop termination for the "get AML length"
2702function. The loop previously had an error termination on a NULL resource
2703pointer, which can never happen since the loop simply increments a valid
2704resource pointer. This fix changes the loop to terminate with an error on
2705an invalid end-of-buffer condition. The problem can be seen as an
2706infinite loop by callers to AcpiSetCurrentResources with an invalid or
2707corrupted resource descriptor, or a resource descriptor that is missing
2708an END_TAG descriptor. Reported by Dan Carpenter
2709<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
2710
2711Table unload and ACPICA termination: Delete all attached data objects
2712during namespace node deletion. This fix updates namespace node deletion
2713to delete the entire list of attached objects (attached via
2714AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
27151024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
2716
2717ACPICA termination: Added support to delete all objects attached to the
2718root namespace node. This fix deletes any and all objects that have been
2719attached to the root node via AcpiAttachData. Previously, none of these
2720objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
2721
2722Debug output: Do not emit the function nesting level for the in-kernel
2723build. The nesting level is really only useful during a single-thread
2724execution. Therefore, only enable this output for the AcpiExec utility.
2725Also, only emit the thread ID when executing under AcpiExec (Context
2726switches are still always detected and a message is emitted). ACPICA BZ
2727972.
2728
2729Example Code and Data Size: These are the sizes for the OS-independent
2730acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2731debug version of the code includes the debug output trace mechanism and
2732has a much larger code and data size.
2733
2734  Current Release:
2735    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
2736    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
2737  Previous Release:
2738    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
2739    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
2740
2741
27422) iASL Compiler/Disassembler and Tools:
2743
2744AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
2745correct portable POSIX header for terminal control functions.
2746
2747Disassembler: Fixed control method invocation issues related to the use
2748of the CondRefOf() operator. The problem is seen in the disassembly where
2749control method invocations may not be disassembled properly if the
2750control method name has been used previously as an argument to CondRefOf.
2751The solution is to not attempt to emit an external declaration for the
2752CondRefOf target (it is not necessary in the first place). This prevents
2753disassembler object type confusion. ACPICA BZ 988.
2754
2755Unix Makefiles: Added an option to disable compiler optimizations and the
2756_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
2757with optimizations (reportedly, gcc 4.4 for example). This change adds a
2758command line option for make (NOOPT) that disables all compiler
2759optimizations and the _FORTIFY_SOURCE compiler flag. The default
2760optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
27611034. Lv Zheng, Bob Moore.
2762
2763Tests/ASLTS: Added options to specify individual test cases and modes.
2764This allows testers running aslts.sh to optionally specify individual
2765test modes and test cases. Also added an option to disable the forced
2766generation of the ACPICA tools from source if desired. Lv Zheng.
2767
2768----------------------------------------
276927 September 2013. Summary of changes for version 20130927:
2770
2771This release is available at https://acpica.org/downloads
2772
2773
27741) ACPICA kernel-resident subsystem:
2775
2776Fixed a problem with store operations to reference objects. This change
2777fixes a problem where a Store operation to an ArgX object that contained
2778a
2779reference to a field object did not complete the automatic dereference
2780and
2781then write to the actual field object. Instead, the object type of the
2782field object was inadvertently changed to match the type of the source
2783operand. The new behavior will actually write to the field object (buffer
2784field or field unit), thus matching the correct ACPI-defined behavior.
2785
2786Implemented support to allow the host to redefine individual OSL
2787prototypes. This change enables the host to redefine OSL prototypes found
2788in the acpiosxf.h file. This allows the host to implement OSL interfaces
2789with a macro or inlined function. Further, it allows the host to add any
2790additional required modifiers such as __iomem, __init, __exit, etc., as
2791necessary on a per-interface basis. Enables maximum flexibility for the
2792OSL interfaces. Lv Zheng.
2793
2794Hardcoded the access width for the FADT-defined reset register. The ACPI
2795specification requires the reset register width to be 8 bits. ACPICA now
2796hardcodes the width to 8 and ignores the FADT width value. This provides
2797compatibility with other ACPI implementations that have allowed BIOS code
2798with bad register width values to go unnoticed. Matthew Garett, Bob
2799Moore,
2800Lv Zheng.
2801
2802Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
2803used
2804in the OSL header (acpiosxf). The change modifies the position of this
2805macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
2806build issues if the OSL defines the implementation of the interface to be
2807an inline stub function. Lv Zheng.
2808
2809Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
2810initialization interfaces. This change adds a new macro for the main init
2811and terminate external interfaces in order to support hosts that require
2812additional or different processing for these functions. Changed from
2813ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
2814Zheng, Bob Moore.
2815
2816Cleaned up the memory allocation macros for configurability. In the
2817common
2818case, the ACPI_ALLOCATE and related macros now resolve directly to their
2819respective AcpiOs* OSL interfaces. Two options:
28201) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
2821default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
28222) For AcpiExec (and for debugging), the macros can optionally be
2823resolved
2824to the local ACPICA interfaces that track each allocation (local tracking
2825is used to immediately detect memory leaks).
2826Lv Zheng.
2827
2828Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
2829to predefine this macro to either TRUE or FALSE during the system build.
2830
2831Replaced __FUNCTION_ with __func__ in the gcc-specific header.
2832
2833Example Code and Data Size: These are the sizes for the OS-independent
2834acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2835debug version of the code includes the debug output trace mechanism and
2836has a much larger code and data size.
2837
2838  Current Release:
2839    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
2840    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
2841  Previous Release:
2842    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
2843    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2844
2845
28462) iASL Compiler/Disassembler and Tools:
2847
2848iASL: Implemented wildcard support for the -e option. This simplifies use
2849when there are many SSDTs that must be included to resolve external
2850method
2851declarations. ACPICA BZ 1041. Example:
2852    iasl -e ssdt*.dat -d dsdt.dat
2853
2854AcpiExec: Add history/line-editing for Unix/Linux systems. This change
2855adds a portable module that implements full history and limited line
2856editing for Unix and Linux systems. It does not use readline() due to
2857portability issues. Instead it uses the POSIX termio interface to put the
2858terminal in raw input mode so that the various special keys can be
2859trapped
2860(such as up/down-arrow for history support and left/right-arrow for line
2861editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
2862
2863AcpiXtract: Add support to handle (ignore) "empty" lines containing only
2864one or more spaces. This provides compatible with early or different
2865versions of the AcpiDump utility. ACPICA BZ 1044.
2866
2867AcpiDump: Do not ignore tables that contain only an ACPI table header.
2868Apparently, some BIOSs create SSDTs that contain an ACPI table header but
2869no other data. This change adds support to dump these tables. Any tables
2870shorter than the length of an ACPI table header remain in error (an error
2871message is emitted). Reported by Yi Li.
2872
2873Debugger: Echo actual command along with the "unknown command" message.
2874
2875----------------------------------------
287623 August 2013. Summary of changes for version 20130823:
2877
28781) ACPICA kernel-resident subsystem:
2879
2880Implemented support for host-installed System Control Interrupt (SCI)
2881handlers. Certain ACPI functionality requires the host to handle raw
2882SCIs. For example, the "SCI Doorbell" that is defined for memory power
2883state support requires the host device driver to handle SCIs to examine
2884if the doorbell has been activated. Multiple SCI handlers can be
2885installed to allow for future expansion. New external interfaces are
2886AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
2887details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
2888
2889Operation region support: Never locally free the handler "context"
2890pointer. This change removes some dangerous code that attempts to free
2891the handler context pointer in some (rare) circumstances. The owner of
2892the handler owns this pointer and the ACPICA code should never touch it.
2893Although not seen to be an issue in any kernel, it did show up as a
2894problem (fault) under AcpiExec. Also, set the internal storage field for
2895the context pointer to zero when the region is deactivated, simply for
2896sanity. David Box. ACPICA BZ 1039.
2897
2898AcpiRead: On error, do not modify the return value target location. If an
2899error happens in the middle of a split 32/32 64-bit I/O operation, do not
2900modify the target of the return value pointer. Makes the code consistent
2901with the rest of ACPICA. Bjorn Helgaas.
2902
2903Example Code and Data Size: These are the sizes for the OS-independent
2904acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2905debug version of the code includes the debug output trace mechanism and
2906has a much larger code and data size.
2907
2908  Current Release:
2909    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
2910    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
2911  Previous Release:
2912    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
2913    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
2914
2915
29162) iASL Compiler/Disassembler and Tools:
2917
2918AcpiDump: Implemented several new features and fixed some problems:
29191) Added support to dump the RSDP, RSDT, and XSDT tables.
29202) Added support for multiple table instances (SSDT, UEFI).
29213) Added option to dump "customized" (overridden) tables (-c).
29224) Fixed a problem where some table filenames were improperly
2923constructed.
29245) Improved some error messages, removed some unnecessary messages.
2925
2926iASL: Implemented additional support for disassembly of ACPI tables that
2927contain invocations of external control methods. The -fe<file> option
2928allows the import of a file that specifies the external methods along
2929with the required number of arguments for each -- allowing for the
2930correct disassembly of the table. This is a workaround for a limitation
2931of AML code where the disassembler often cannot determine the number of
2932arguments required for an external control method and generates incorrect
2933ASL code. See the iASL reference for details. ACPICA BZ 1030.
2934
2935Debugger: Implemented a new command (paths) that displays the full
2936pathnames (namepaths) and object types of all objects in the namespace.
2937This is an alternative to the namespace command.
2938
2939Debugger: Implemented a new command (sci) that invokes the SCI dispatch
2940mechanism and any installed handlers.
2941
2942iASL: Fixed a possible segfault for "too many parent prefixes" condition.
2943This can occur if there are too many parent prefixes in a namepath (for
2944example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
2945
2946Application OSLs: Set the return value for the PCI read functions. These
2947functions simply return AE_OK, but should set the return value to zero
2948also. This change implements this. ACPICA BZ 1038.
2949
2950Debugger: Prevent possible command line buffer overflow. Increase the
2951size of a couple of the debugger line buffers, and ensure that overflow
2952cannot happen. ACPICA BZ 1037.
2953
2954iASL: Changed to abort immediately on serious errors during the parsing
2955phase. Due to the nature of ASL, there is no point in attempting to
2956compile these types of errors, and they typically end up causing a
2957cascade of hundreds of errors which obscure the original problem.
2958
2959----------------------------------------
296025 July 2013. Summary of changes for version 20130725:
2961
29621) ACPICA kernel-resident subsystem:
2963
2964Fixed a problem with the DerefOf operator where references to FieldUnits
2965and BufferFields incorrectly returned the parent object, not the actual
2966value of the object. After this change, a dereference of a FieldUnit
2967reference results in a read operation on the field to get the value, and
2968likewise, the appropriate BufferField value is extracted from the target
2969buffer.
2970
2971Fixed a problem where the _WAK method could cause a fault under these
2972circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
2973method returned no value. The problem is rarely seen because most kernels
2974run ACPICA in slack mode.
2975
2976For the DerefOf operator, a fatal error now results if an attempt is made
2977to dereference a reference (created by the Index operator) to a NULL
2978package element. Provides compatibility with other ACPI implementations,
2979and this behavior will be added to a future version of the ACPI
2980specification.
2981
2982The ACPI Power Management Timer (defined in the FADT) is now optional.
2983This provides compatibility with other ACPI implementations and will
2984appear in the next version of the ACPI specification. If there is no PM
2985Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
2986zero in the FADT indicates no PM timer.
2987
2988Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
2989allows the host to globally enable/disable all vendor strings, all
2990feature strings, or both. Intended to be primarily used for debugging
2991purposes only. Lv Zheng.
2992
2993Expose the collected _OSI data to the host via a global variable. This
2994data tracks the highest level vendor ID that has been invoked by the BIOS
2995so that the host (and potentially ACPICA itself) can change behaviors
2996based upon the age of the BIOS.
2997
2998Example Code and Data Size: These are the sizes for the OS-independent
2999acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3000debug version of the code includes the debug output trace mechanism and
3001has a much larger code and data size.
3002
3003  Current Release:
3004    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
3005    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3006  Previous Release:
3007    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
3008    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
3009
3010
30112) iASL Compiler/Disassembler and Tools:
3012
3013iASL: Created the following enhancements for the -so option (create
3014offset table):
30151)Add offsets for the last nameseg in each namepath for every supported
3016object type
30172)Add support for Processor, Device, Thermal Zone, and Scope objects
30183)Add the actual AML opcode for the parent object of every supported
3019object type
30204)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
3021
3022Disassembler: Emit all unresolved external symbols in a single block.
3023These are external references to control methods that could not be
3024resolved, and thus, the disassembler had to make a guess at the number of
3025arguments to parse.
3026
3027iASL: The argument to the -T option (create table template) is now
3028optional. If not specified, the default table is a DSDT, typically the
3029most common case.
3030
3031----------------------------------------
303226 June 2013. Summary of changes for version 20130626:
3033
30341) ACPICA kernel-resident subsystem:
3035
3036Fixed an issue with runtime repair of the _CST object. Null or invalid
3037elements were not always removed properly. Lv Zheng.
3038
3039Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
3040FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
3041the maximum number of GPEs is 1016. Use of multiple GPE block devices
3042makes the system-wide number of GPEs essentially unlimited.
3043
3044Example Code and Data Size: These are the sizes for the OS-independent
3045acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3046debug version of the code includes the debug output trace mechanism and
3047has a much larger code and data size.
3048
3049  Current Release:
3050    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
3051    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
3052  Previous Release:
3053    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
3054    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
3055
3056
30572) iASL Compiler/Disassembler and Tools:
3058
3059Portable AcpiDump: Implemented full support for the Linux and FreeBSD
3060hosts. Now supports Linux, FreeBSD, and Windows.
3061
3062Disassembler: Added some missing types for the HEST and EINJ tables: "Set
3063Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
3064
3065iASL/Preprocessor: Implemented full support for nested
3066#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
3067
3068Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
3069max. The original purpose of this constraint was to limit the amount of
3070debug output. However, the string function in question (UtPrintString) is
3071now used for the disassembler also, where 256 bytes is insufficient.
3072Reported by RehabMan@GitHub.
3073
3074iASL/DataTables: Fixed some problems and issues with compilation of DMAR
3075tables. ACPICA BZ 999. Lv Zheng.
3076
3077iASL: Fixed a couple of error exit issues that could result in a "Could
3078not delete <file>" message during ASL compilation.
3079
3080AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
3081the actual signatures for these tables are "FACP" and "APIC",
3082respectively.
3083
3084AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
3085tables are allowed to have multiple instances.
3086
3087----------------------------------------
308817 May 2013. Summary of changes for version 20130517:
3089
30901) ACPICA kernel-resident subsystem:
3091
3092Fixed a regression introduced in version 20130328 for _INI methods. This
3093change fixes a problem introduced in 20130328 where _INI methods are no
3094longer executed properly because of a memory block that was not
3095initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
3096<tomasz.nowicki@linaro.org>.
3097
3098Fixed a possible problem with the new extended sleep registers in the
3099ACPI
31005.0 FADT. Do not use these registers (even if populated) unless the HW-
3101reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
31021020. Lv Zheng.
3103
3104Implemented return value repair code for _CST predefined objects: Sort
3105the
3106list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
3107
3108Implemented a debug-only option to disable loading of SSDTs from the
3109RSDT/XSDT during ACPICA initialization. This can be useful for debugging
3110ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
3111acglobal.h - ACPICA BZ 1005. Lv Zheng.
3112
3113Fixed some issues in the ACPICA initialization and termination code:
3114Tomasz Nowicki <tomasz.nowicki@linaro.org>
31151) Clear events initialized flag upon event component termination. ACPICA
3116BZ 1013.
31172) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
31183) Delete global lock pending lock during termination. ACPICA BZ 1012.
31194) Clear debug buffer global on termination to prevent possible multiple
3120delete. ACPICA BZ 1010.
3121
3122Standardized all switch() blocks across the entire source base. After
3123many
3124years, different formatting for switch() had crept in. This change makes
3125the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
3126
3127Split some files to enhance ACPICA modularity and configurability:
31281) Split buffer dump routines into utilities/utbuffer.c
31292) Split internal error message routines into utilities/uterror.c
31303) Split table print utilities into tables/tbprint.c
31314) Split iASL command-line option processing into asloptions.c
3132
3133Makefile enhancements:
31341) Support for all new files above.
31352) Abort make on errors from any subcomponent. Chao Guan.
31363) Add build support for Apple Mac OS X. Liang Qi.
3137
3138Example Code and Data Size: These are the sizes for the OS-independent
3139acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3140debug version of the code includes the debug output trace mechanism and
3141has a much larger code and data size.
3142
3143  Current Release:
3144    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
3145    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
3146  Previous Release:
3147    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
3148    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
3149
3150
31512) iASL Compiler/Disassembler and Tools:
3152
3153New utility: Implemented an easily portable version of the acpidump
3154utility to extract ACPI tables from the system (or a file) in an ASCII
3155hex
3156dump format. The top-level code implements the various command line
3157options, file I/O, and table dump routines. To port to a new host, only
3158three functions need to be implemented to get tables -- since this
3159functionality is OS-dependent. See the tools/acpidump/apmain.c module and
3160the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
31611) The Windows version obtains the ACPI tables from the Registry.
31622) The Linux version is under development.
31633) Other hosts - If an OS-dependent module is submitted, it will be
3164distributed with ACPICA.
3165
3166iASL: Fixed a regression for -D preprocessor option (define symbol). A
3167restructuring/change to the initialization sequence caused this option to
3168no longer work properly.
3169
3170iASL: Implemented a mechanism to disable specific warnings and remarks.
3171Adds a new command line option, "-vw <messageid> as well as "#pragma
3172disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
3173
3174iASL: Fix for too-strict package object validation. The package object
3175validation for return values from the predefined names is a bit too
3176strict, it does not allow names references within the package (which will
3177be resolved at runtime.) These types of references cannot be validated at
3178compile time. This change ignores named references within package objects
3179for names that return or define static packages.
3180
3181Debugger: Fixed the 80-character command line limitation for the History
3182command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
3183
3184iASL: Added control method and package support for the -so option
3185(generates AML offset table for BIOS support.)
3186
3187iASL: issue a remark if a non-serialized method creates named objects. If
3188a thread blocks within the method for any reason, and another thread
3189enters the method, the method will fail because an attempt will be made
3190to
3191create the same (named) object twice. In this case, issue a remark that
3192the method should be marked serialized. NOTE: may become a warning later.
3193ACPICA BZ 909.
3194
3195----------------------------------------
319618 April 2013. Summary of changes for version 20130418:
3197
31981) ACPICA kernel-resident subsystem:
3199
3200Fixed a possible buffer overrun during some rare but specific field unit
3201read operations. This overrun can only happen if the DSDT version is 1 --
3202meaning that all AML integers are 32 bits -- and the field length is
3203between 33 and 55 bits long. During the read, an internal buffer object
3204is
3205created for the field unit because the field is larger than an integer
3206(32
3207bits). However, in this case, the buffer will be incorrectly written
3208beyond the end because the buffer length is less than the internal
3209minimum
3210of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
3211long, but a full 8 bytes will be written.
3212
3213Updated the Embedded Controller "orphan" _REG method support. This refers
3214to _REG methods under the EC device that have no corresponding operation
3215region. This is allowed by the ACPI specification. This update removes a
3216dependency on the existence an ECDT table. It will execute an orphan _REG
3217method as long as the operation region handler for the EC is installed at
3218the EC device node and not the namespace root. Rui Zhang (original
3219update), Bob Moore (update/integrate).
3220
3221Implemented run-time argument typechecking for all predefined ACPI names
3222(_STA, _BIF, etc.) This change performs object typechecking on all
3223incoming arguments for all predefined names executed via
3224AcpiEvaluateObject. This ensures that ACPI-related device drivers are
3225passing correct object types as well as the correct number of arguments
3226(therefore identifying any issues immediately). Also, the ASL/namespace
3227definition of the predefined name is checked against the ACPI
3228specification for the proper argument count. Adds one new file,
3229nsarguments.c
3230
3231Changed an exception code for the ASL UnLoad() operator. Changed the
3232exception code for the case where the input DdbHandle is invalid, from
3233AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
3234
3235Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
3236global makefile. The use of this flag causes compiler errors on earlier
3237versions of GCC, so it has been removed for compatibility.
3238
3239Miscellaneous cleanup:
32401) Removed some unused/obsolete macros
32412) Fixed a possible memory leak in the _OSI support
32423) Removed an unused variable in the predefined name support
32434) Windows OSL: remove obsolete reference to a memory list field
3244
3245Example Code and Data Size: These are the sizes for the OS-independent
3246acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3247debug version of the code includes the debug output trace mechanism and
3248has a much larger code and data size.
3249
3250  Current Release:
3251    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
3252    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
3253  Previous Release:
3254    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
3255    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
3256
3257
32582) iASL Compiler/Disassembler and Tools:
3259
3260AcpiExec: Added installation of a handler for the SystemCMOS address
3261space. This prevents control method abort if a method accesses this
3262space.
3263
3264AcpiExec: Added support for multiple EC devices, and now install EC
3265operation region handler(s) at the actual EC device instead of the
3266namespace root. This reflects the typical behavior of host operating
3267systems.
3268
3269AcpiExec: Updated to ensure that all operation region handlers are
3270installed before the _REG methods are executed. This prevents a _REG
3271method from aborting if it accesses an address space has no handler.
3272AcpiExec installs a handler for every possible address space.
3273
3274Debugger: Enhanced the "handlers" command to display non-root handlers.
3275This change enhances the handlers command to display handlers associated
3276with individual devices throughout the namespace, in addition to the
3277currently supported display of handlers associated with the root
3278namespace
3279node.
3280
3281ASL Test Suite: Several test suite errors have been identified and
3282resolved, reducing the total error count during execution. Chao Guan.
3283
3284----------------------------------------
328528 March 2013. Summary of changes for version 20130328:
3286
32871) ACPICA kernel-resident subsystem:
3288
3289Fixed several possible race conditions with the internal object reference
3290counting mechanism. Some of the external ACPICA interfaces update object
3291reference counts without holding the interpreter or namespace lock. This
3292change adds a spinlock to protect reference count updates on the internal
3293ACPICA objects. Reported by and with assistance from Andriy Gapon
3294(avg@FreeBSD.org).
3295
3296FADT support: Removed an extraneous warning for very large GPE register
3297sets. This change removes a size mismatch warning if the legacy length
3298field for a GPE register set is larger than the 64-bit GAS structure can
3299accommodate. GPE register sets can be larger than the 255-bit width
3300limitation of the GAS structure. Linn Crosetto (linn@hp.com).
3301
3302_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
3303return from this interface. Handles a possible timeout case if
3304ACPI_WAIT_FOREVER is modified by the host to be a value less than
3305"forever". Jung-uk Kim.
3306
3307Predefined name support: Add allowed/required argument type information
3308to
3309the master predefined info table. This change adds the infrastructure to
3310enable typechecking on incoming arguments for all predefined
3311methods/objects. It does not actually contain the code that will fully
3312utilize this information, this is still under development. Also condenses
3313some duplicate code for the predefined names into a new module,
3314utilities/utpredef.c
3315
3316Example Code and Data Size: These are the sizes for the OS-independent
3317acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3318debug version of the code includes the debug output trace mechanism and
3319has a much larger code and data size.
3320
3321  Previous Release:
3322    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
3323    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
3324  Current Release:
3325    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
3326    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
3327
3328
33292) iASL Compiler/Disassembler and Tools:
3330
3331iASL: Implemented a new option to simplify the development of ACPI-
3332related
3333BIOS code. Adds support for a new "offset table" output file. The -so
3334option will create a C table containing the AML table offsets of various
3335named objects in the namespace so that BIOS code can modify them easily
3336at
3337boot time. This can simplify BIOS runtime code by eliminating expensive
3338searches for "magic values", enhancing boot times and adding greater
3339reliability. With assistance from Lee Hamel.
3340
3341iASL: Allow additional predefined names to return zero-length packages.
3342Now, all predefined names that are defined by the ACPI specification to
3343return a "variable-length package of packages" are allowed to return a
3344zero length top-level package. This allows the BIOS to tell the host that
3345the requested feature is not supported, and supports existing BIOS/ASL
3346code and practices.
3347
3348iASL: Changed the "result not used" warning to an error. This is the case
3349where an ASL operator is effectively a NOOP because the result of the
3350operation is not stored anywhere. For example:
3351    Add (4, Local0)
3352There is no target (missing 3rd argument), nor is the function return
3353value used. This is potentially a very serious problem -- since the code
3354was probably intended to do something, but for whatever reason, the value
3355was not stored. Therefore, this issue has been upgraded from a warning to
3356an error.
3357
3358AcpiHelp: Added allowable/required argument types to the predefined names
3359info display. This feature utilizes the recent update to the predefined
3360names table (above).
3361
3362----------------------------------------
336314 February 2013. Summary of changes for version 20130214:
3364
33651) ACPICA Kernel-resident Subsystem:
3366
3367Fixed a possible regression on some hosts: Reinstated the safe return
3368macros (return_ACPI_STATUS, etc.) that ensure that the argument is
3369evaluated only once. Although these macros are not needed for the ACPICA
3370code itself, they are often used by ACPI-related host device drivers
3371where
3372the safe feature may be necessary.
3373
3374Fixed several issues related to the ACPI 5.0 reduced hardware support
3375(SOC): Now ensure that if the platform declares itself as hardware-
3376reduced
3377via the FADT, the following functions become NOOPs (and always return
3378AE_OK) because ACPI is always enabled by definition on these machines:
3379  AcpiEnable
3380  AcpiDisable
3381  AcpiHwGetMode
3382  AcpiHwSetMode
3383
3384Dynamic Object Repair: Implemented additional runtime repairs for
3385predefined name return values. Both of these repairs can simplify code in
3386the related device drivers that invoke these methods:
33871) For the _STR and _MLS names, automatically repair/convert an ASCII
3388string to a Unicode buffer.
33892) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
3390a
3391lone end tag descriptor in the following cases: A Return(0) was executed,
3392a null buffer was returned, or no object at all was returned (non-slack
3393mode only). Adds a new file, nsconvert.c
3394ACPICA BZ 998. Bob Moore, Lv Zheng.
3395
3396Resource Manager: Added additional code to prevent possible infinite
3397loops
3398while traversing corrupted or ill-formed resource template buffers. Check
3399for zero-length resource descriptors in all code that loops through
3400resource templates (the length field is used to index through the
3401template). This change also hardens the external AcpiWalkResources and
3402AcpiWalkResourceBuffer interfaces.
3403
3404Local Cache Manager: Enhanced the main data structure to eliminate an
3405unnecessary mechanism to access the next object in the list. Actually
3406provides a small performance enhancement for hosts that use the local
3407ACPICA cache manager. Jung-uk Kim.
3408
3409Example Code and Data Size: These are the sizes for the OS-independent
3410acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3411debug version of the code includes the debug output trace mechanism and
3412has a much larger code and data size.
3413
3414  Previous Release:
3415    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
3416    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
3417  Current Release:
3418    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
3419    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
3420
3421
34222) iASL Compiler/Disassembler and Tools:
3423
3424iASL/Disassembler: Fixed several issues with the definition of the ACPI
34255.0 RASF table (RAS Feature Table). This change incorporates late changes
3426that were made to the ACPI 5.0 specification.
3427
3428iASL/Disassembler: Added full support for the following new ACPI tables:
3429  1) The MTMR table (MID Timer Table)
3430  2) The VRTC table (Virtual Real Time Clock Table).
3431Includes header file, disassembler, table compiler, and template support
3432for both tables.
3433
3434iASL: Implemented compile-time validation of package objects returned by
3435predefined names. This new feature validates static package objects
3436returned by the various predefined names defined to return packages. Both
3437object types and package lengths are validated, for both parent packages
3438and sub-packages, if any. The code is similar in structure and behavior
3439to
3440the runtime repair mechanism within the AML interpreter and uses the
3441existing predefined name information table. Adds a new file, aslprepkg.c.
3442ACPICA BZ 938.
3443
3444iASL: Implemented auto-detection of binary ACPI tables for disassembly.
3445This feature detects a binary file with a valid ACPI table header and
3446invokes the disassembler automatically. Eliminates the need to
3447specifically invoke the disassembler with the -d option. ACPICA BZ 862.
3448
3449iASL/Disassembler: Added several warnings for the case where there are
3450unresolved control methods during the disassembly. This can potentially
3451cause errors when the output file is compiled, because the disassembler
3452assumes zero method arguments in these cases (it cannot determine the
3453actual number of arguments without resolution/definition of the method).
3454
3455Debugger: Added support to display all resources with a single command.
3456Invocation of the resources command with no arguments will now display
3457all
3458resources within the current namespace.
3459
3460AcpiHelp: Added descriptive text for each ACPICA exception code displayed
3461via the -e option.
3462
3463----------------------------------------
346417 January 2013. Summary of changes for version 20130117:
3465
34661) ACPICA Kernel-resident Subsystem:
3467
3468Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
3469return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
3470objects to return a package containing one integer, most BIOS code
3471returns
3472two integers and the previous code reflects that. However, we also need
3473to
3474support BIOS code that actually implements to the ACPI spec, and this
3475change reflects this.
3476
3477Fixed two issues with the ACPI_DEBUG_PRINT macros:
34781) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
3479C compilers that require this support.
34802) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
3481ACPI_DEBUG is already used by many of the various hosts.
3482
3483Updated all ACPICA copyrights and signons to 2013. Added the 2013
3484copyright to all module headers and signons, including the standard Linux
3485header. This affects virtually every file in the ACPICA core subsystem,
3486iASL compiler, all ACPICA utilities, and the test suites.
3487
3488Example Code and Data Size: These are the sizes for the OS-independent
3489acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3490debug version of the code includes the debug output trace mechanism and
3491has a much larger code and data size.
3492
3493  Previous Release:
3494    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
3495    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
3496  Current Release:
3497    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
3498    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
3499
3500
35012) iASL Compiler/Disassembler and Tools:
3502
3503Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
3504prevent a possible fault on some hosts. Some C libraries modify the arg
3505pointer parameter to vfprintf making it difficult to call it twice in the
3506AcpiOsVprintf function. Use a local buffer to workaround this issue. This
3507does not affect the Windows OSL since the Win C library does not modify
3508the arg pointer. Chao Guan, Bob Moore.
3509
3510iASL: Fixed a possible infinite loop when the maximum error count is
3511reached. If an output file other than the .AML file is specified (such as
3512a listing file), and the maximum number of errors is reached, do not
3513attempt to flush data to the output file(s) as the compiler is aborting.
3514This can cause an infinite loop as the max error count code essentially
3515keeps calling itself.
3516
3517iASL/Disassembler: Added an option (-in) to ignore NOOP
3518opcodes/operators.
3519Implemented for both the compiler and the disassembler. Often, the NOOP
3520opcode is used as padding for packages that are changed dynamically by
3521the
3522BIOS. When disassembled and recompiled, these NOOPs will cause syntax
3523errors. This option causes the disassembler to ignore all NOOP opcodes
3524(0xA3), and it also causes the compiler to ignore all ASL source code
3525NOOP
3526statements as well.
3527
3528Debugger: Enhanced the Sleep command to execute all sleep states. This
3529change allows Sleep to be invoked with no arguments and causes the
3530debugger to execute all of the sleep states, 0-5, automatically.
3531
3532----------------------------------------
353320 December 2012. Summary of changes for version 20121220:
3534
35351) ACPICA Kernel-resident Subsystem:
3536
3537Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
3538alternate entry point for AcpiWalkResources and improves the usability of
3539the resource manager by accepting as input a buffer containing the output
3540of either a _CRS, _PRS, or _AEI method. The key functionality is that the
3541input buffer is not deleted by this interface so that it can be used by
3542the host later. See the ACPICA reference for details.
3543
3544Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
3545(DSDT version < 2). The constant will be truncated and this warning
3546reflects that behavior.
3547
3548Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
3549ExtendedInterrupt, and GpioInt descriptors. This change adds support to
3550both get and set the new wake bit in these descriptors, separately from
3551the existing share bit. Reported by Aaron Lu.
3552
3553Interpreter: Fix Store() when an implicit conversion is not possible. For
3554example, in the cases such as a store of a string to an existing package
3555object, implement the store as a CopyObject(). This is a small departure
3556from the ACPI specification which states that the control method should
3557be
3558aborted in this case. However, the ASLTS suite depends on this behavior.
3559
3560Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
3561macros: check if debug output is currently enabled as soon as possible to
3562minimize performance impact if debug is in fact not enabled.
3563
3564Source code restructuring: Cleanup to improve modularity. The following
3565new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
3566psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
3567Associated makefiles and project files have been updated.
3568
3569Changed an exception code for LoadTable operator. For the case where one
3570of the input strings is too long, change the returned exception code from
3571AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
3572
3573Fixed a possible memory leak in dispatcher error path. On error, delete
3574the mutex object created during method mutex creation. Reported by
3575tim.gardner@canonical.com.
3576
3577Example Code and Data Size: These are the sizes for the OS-independent
3578acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3579debug version of the code includes the debug output trace mechanism and
3580has a much larger code and data size.
3581
3582  Previous Release:
3583    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
3584    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3585  Current Release:
3586    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
3587    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
3588
3589
35902) iASL Compiler/Disassembler and Tools:
3591
3592iASL: Disallow a method call as argument to the ObjectType ASL operator.
3593This change tracks an errata to the ACPI 5.0 document. The AML grammar
3594will not allow the interpreter to differentiate between a method and a
3595method invocation when these are used as an argument to the ObjectType
3596operator. The ACPI specification change is to disallow a method
3597invocation
3598(UserTerm) for the ObjectType operator.
3599
3600Finish support for the TPM2 and CSRT tables in the headers, table
3601compiler, and disassembler.
3602
3603Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
3604always expires immediately if the semaphore is not available. The
3605original
3606code was using a relative-time timeout, but sem_timedwait requires the
3607use
3608of an absolute time.
3609
3610iASL: Added a remark if the Timer() operator is used within a 32-bit
3611table. This operator returns a 64-bit time value that will be truncated
3612within a 32-bit table.
3613
3614iASL Source code restructuring: Cleanup to improve modularity. The
3615following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
3616aslmethod.c, and aslfileio.c. Associated makefiles and project files have
3617been updated.
3618
3619
3620----------------------------------------
362114 November 2012. Summary of changes for version 20121114:
3622
36231) ACPICA Kernel-resident Subsystem:
3624
3625Implemented a performance enhancement for ACPI/AML Package objects. This
3626change greatly increases the performance of Package objects within the
3627interpreter. It changes the processing of reference counts for packages
3628by
3629optimizing for the most common case where the package sub-objects are
3630either Integers, Strings, or Buffers. Increases the overall performance
3631of
3632the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
36332X.)
3634Chao Guan. ACPICA BZ 943.
3635
3636Implemented and deployed common macros to extract flag bits from resource
3637descriptors. Improves readability and maintainability of the code. Fixes
3638a
3639problem with the UART serial bus descriptor for the number of data bits
3640flags (was incorrectly 2 bits, should be 3).
3641
3642Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
3643of the macros and changed the SETx macros to the style of (destination,
3644source). Also added ACPI_CASTx companion macros. Lv Zheng.
3645
3646Example Code and Data Size: These are the sizes for the OS-independent
3647acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3648debug version of the code includes the debug output trace mechanism and
3649has a much larger code and data size.
3650
3651  Previous Release:
3652    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
3653    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3654  Current Release:
3655    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
3656    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3657
3658
36592) iASL Compiler/Disassembler and Tools:
3660
3661Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
3662adds the ShareAndWake and ExclusiveAndWake flags which were added to the
3663Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
3664
3665Disassembler: Fixed a problem with external declaration generation. Fixes
3666a problem where an incorrect pathname could be generated for an external
3667declaration if the original reference to the object includes leading
3668carats (^). ACPICA BZ 984.
3669
3670Debugger: Completed a major update for the Disassemble<method> command.
3671This command was out-of-date and did not properly disassemble control
3672methods that had any reasonable complexity. This fix brings the command
3673up
3674to the same level as the rest of the disassembler. Adds one new file,
3675dmdeferred.c, which is existing code that is now common with the main
3676disassembler and the debugger disassemble command. ACPICA MZ 978.
3677
3678iASL: Moved the parser entry prototype to avoid a duplicate declaration.
3679Newer versions of Bison emit this prototype, so moved the prototype out
3680of
3681the iASL header to where it is actually used in order to avoid a
3682duplicate
3683declaration.
3684
3685iASL/Tools: Standardized use of the stream I/O functions:
3686  1) Ensure check for I/O error after every fopen/fread/fwrite
3687  2) Ensure proper order of size/count arguments for fread/fwrite
3688  3) Use test of (Actual != Requested) after all fwrite, and most fread
3689  4) Standardize I/O error messages
3690Improves reliability and maintainability of the code. Bob Moore, Lv
3691Zheng.
3692ACPICA BZ 981.
3693
3694Disassembler: Prevent duplicate External() statements. During generation
3695of external statements, detect similar pathnames that are actually
3696duplicates such as these:
3697  External (\ABCD)
3698  External (ABCD)
3699Remove all leading '\' characters from pathnames during the external
3700statement generation so that duplicates will be detected and tossed.
3701ACPICA BZ 985.
3702
3703Tools: Replace low-level I/O with stream I/O functions. Replace
3704open/read/write/close with the stream I/O equivalents
3705fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
3706Moore.
3707
3708AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
3709name header so that AcpiXtract recognizes the output file/table.
3710
3711iASL: Remove obsolete -2 option flag. Originally intended to force the
3712compiler/disassembler into an ACPI 2.0 mode, this was never implemented
3713and the entire concept is now obsolete.
3714
3715----------------------------------------
371618 October 2012. Summary of changes for version 20121018:
3717
3718
37191) ACPICA Kernel-resident Subsystem:
3720
3721Updated support for the ACPI 5.0 MPST table. Fixes some problems
3722introduced by late changes to the table as it was added to the ACPI 5.0
3723specification. Includes header, disassembler, and data table compiler
3724support as well as a new version of the MPST template.
3725
3726AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
37275.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
3728methods: _HID, _CID, and _UID.
3729
3730Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
3731ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
3732name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
3733names for their various drivers. Affects the AcpiGetObjectInfo external
3734interface, and other internal interfaces as well.
3735
3736Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
3737This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
3738on machines that support non-aligned transfers. Optimizes for this case
3739rather than using a strncpy. With assistance from Zheng Lv.
3740
3741Resource Manager: Small fix for buffer size calculation. Fixed a one byte
3742error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
3743
3744Added a new debug print message for AML mutex objects that are force-
3745released. At control method termination, any currently acquired mutex
3746objects are force-released. Adds a new debug-only message for each one
3747that is released.
3748
3749Audited/updated all ACPICA return macros and the function debug depth
3750counter: 1) Ensure that all functions that use the various TRACE macros
3751also use the appropriate ACPICA return macros. 2) Ensure that all normal
3752return statements surround the return expression (value) with parens to
3753ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
3754Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
3755
3756Global source code changes/maintenance: All extra lines at the start and
3757end of each source file have been removed for consistency. Also, within
3758comments, all new sentences start with a single space instead of a double
3759space, again for consistency across the code base.
3760
3761Example Code and Data Size: These are the sizes for the OS-independent
3762acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3763debug version of the code includes the debug output trace mechanism and
3764has a much larger code and data size.
3765
3766  Previous Release:
3767    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
3768    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
3769  Current Release:
3770    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
3771    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
3772
3773
37742) iASL Compiler/Disassembler and Tools:
3775
3776AcpiExec: Improved the algorithm used for memory leak/corruption
3777detection. Added some intelligence to the code that maintains the global
3778list of allocated memory. The list is now ordered by allocated memory
3779address, significantly improving performance. When running AcpiExec on
3780the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
3781on the platform and/or the environment. Note, this performance
3782enhancement affects the AcpiExec utility only, not the kernel-resident
3783ACPICA code.
3784
3785Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
3786the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
3787incorrect table offset reported for invalid opcodes. Report the original
378832-bit value for bad ACPI_NAMEs (as well as the repaired name.)
3789
3790Disassembler: Enhanced the -vt option to emit the binary table data in
3791hex format to assist with debugging.
3792
3793Fixed a potential filename buffer overflow in osunixdir.c. Increased the
3794size of file structure. Colin Ian King.
3795
3796----------------------------------------
379713 September 2012. Summary of changes for version 20120913:
3798
3799
38001) ACPICA Kernel-resident Subsystem:
3801
3802ACPI 5.0: Added two new notify types for the Hardware Error Notification
3803Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
3804and
3805MCE(6).
3806
3807Table Manager: Merged/removed duplicate code in the root table resize
3808functions. One function is external, the other is internal. Lv Zheng,
3809ACPICA
3810BZ 846.
3811
3812Makefiles: Completely removed the obsolete "Linux" makefiles under
3813acpica/generate/linux. These makefiles are obsolete and have been
3814replaced
3815by
3816the generic unix makefiles under acpica/generate/unix.
3817
3818Makefiles: Ensure that binary files always copied properly. Minor rule
3819change
3820to ensure that the final binary output files are always copied up to the
3821appropriate binary directory (bin32 or bin64.)
3822
3823Example Code and Data Size: These are the sizes for the OS-independent
3824acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3825debug
3826version of the code includes the debug output trace mechanism and has a
3827much
3828larger code and data size.
3829
3830  Previous Release:
3831    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
3832    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
3833  Current Release:
3834    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
3835    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
3836
3837
38382) iASL Compiler/Disassembler and Tools:
3839
3840Disassembler: Fixed a possible fault during the disassembly of resource
3841descriptors when a second parse is required because of the invocation of
3842external control methods within the table. With assistance from
3843adq@lidskialf.net. ACPICA BZ 976.
3844
3845iASL: Fixed a namepath optimization problem. An error can occur if the
3846parse
3847node that contains the namepath to be optimized does not have a parent
3848node
3849that is a named object. This change fixes the problem.
3850
3851iASL: Fixed a regression where the AML file is not deleted on errors. The
3852AML
3853output file should be deleted if there are any errors during the
3854compiler.
3855The
3856only exception is if the -f (force output) option is used. ACPICA BZ 974.
3857
3858iASL: Added a feature to automatically increase internal line buffer
3859sizes.
3860Via realloc(), automatically increase the internal line buffer sizes as
3861necessary to support very long source code lines. The current version of
3862the
3863preprocessor requires a buffer long enough to contain full source code
3864lines.
3865This change increases the line buffer(s) if the input lines go beyond the
3866current buffer size. This eliminates errors that occurred when a source
3867code
3868line was longer than the buffer.
3869
3870iASL: Fixed a problem with constant folding in method declarations. The
3871SyncLevel term is a ByteConstExpr, and incorrect code would be generated
3872if a
3873Type3 opcode was used.
3874
3875Debugger: Improved command help support. For incorrect argument count,
3876display
3877full help for the command. For help command itself, allow an argument to
3878specify a command.
3879
3880Test Suites: Several bug fixes for the ASLTS suite reduces the number of
3881errors during execution of the suite. Guan Chao.
3882
3883----------------------------------------
388416 August 2012. Summary of changes for version 20120816:
3885
3886
38871) ACPICA Kernel-resident Subsystem:
3888
3889Removed all use of the deprecated _GTS and _BFS predefined methods. The
3890_GTS
3891(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
3892deprecated and will probably be removed from the ACPI specification.
3893Windows
3894does not invoke them, and reportedly never will. The final nail in the
3895coffin
3896is that the ACPI specification states that these methods must be run with
3897interrupts off, which is not going to happen in a kernel interpreter.
3898Note:
3899Linux has removed all use of the methods also. It was discovered that
3900invoking these functions caused failures on some machines, probably
3901because
3902they were never tested since Windows does not call them. Affects two
3903external
3904interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
3905ACPICA BZ 969.
3906
3907Implemented support for complex bit-packed buffers returned from the _PLD
3908(Physical Location of Device) predefined method. Adds a new external
3909interface, AcpiDecodePldBuffer that parses the buffer into a more usable
3910C
3911structure. Note: C Bitfields cannot be used for this type of predefined
3912structure since the memory layout of individual bitfields is not defined
3913by
3914the C language. In addition, there are endian concerns where a compiler
3915will
3916change the bitfield ordering based on the machine type. The new ACPICA
3917interface eliminates these issues, and should be called after _PLD is
3918executed. ACPICA BZ 954.
3919
3920Implemented a change to allow a scope change to root (via "Scope (\)")
3921during
3922execution of module-level ASL code (code that is executed at table load
3923time.) Lin Ming.
3924
3925Added the Windows8/Server2012 string for the _OSI method. This change
3926adds
3927a
3928new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
39292012.
3930
3931Added header support for the new ACPI tables DBG2 (Debug Port Table Type
39322)
3933and CSRT (Core System Resource Table).
3934
3935Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
3936names. This simplifies access to the buffers returned by these predefined
3937names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
3938
3939GPE support: Removed an extraneous parameter from the various low-level
3940internal GPE functions. Tang Feng.
3941
3942Removed the linux makefiles from the unix packages. The generate/linux
3943makefiles are obsolete and have been removed from the unix tarball
3944release
3945packages. The replacement makefiles are under generate/unix, and there is
3946a
3947top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
3948
3949Updates for Unix makefiles:
39501) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
39512) Update linker flags (move to end of command line) for AcpiExec
3952utility.
3953Guan Chao.
3954
3955Split ACPICA initialization functions to new file, utxfinit.c. Split from
3956utxface.c to improve modularity and reduce file size.
3957
3958Example Code and Data Size: These are the sizes for the OS-independent
3959acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3960debug version of the code includes the debug output trace mechanism and
3961has a
3962much larger code and data size.
3963
3964  Previous Release:
3965    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
3966    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
3967  Current Release:
3968    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
3969    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
3970
3971
39722) iASL Compiler/Disassembler and Tools:
3973
3974iASL: Fixed a problem with constant folding for fixed-length constant
3975expressions. The constant-folding code was not being invoked for constant
3976expressions that allow the use of type 3/4/5 opcodes to generate
3977constants
3978for expressions such as ByteConstExpr, WordConstExpr, etc. This could
3979result
3980in the generation of invalid AML bytecode. ACPICA BZ 970.
3981
3982iASL: Fixed a generation issue on newer versions of Bison. Newer versions
3983apparently automatically emit some of the necessary externals. This
3984change
3985handles these versions in order to eliminate generation warnings.
3986
3987Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
3988
3989Disassembler: Add support to decode _PLD buffers. The decoded buffer
3990appears
3991within comments in the output file.
3992
3993Debugger: Fixed a regression with the "Threads" command where
3994AE_BAD_PARAMETER was always returned.
3995
3996----------------------------------------
399711 July 2012. Summary of changes for version 20120711:
3998
39991) ACPICA Kernel-resident Subsystem:
4000
4001Fixed a possible fault in the return package object repair code. Fixes a
4002problem that can occur when a lone package object is wrapped with an
4003outer
4004package object in order to force conformance to the ACPI specification.
4005Can
4006affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
4007_DLM,
4008_CSD, _PSD, _TSD.
4009
4010Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
4011PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
4012ARB_DIS bit must be implemented in the host-dependent C3 processor power
4013state
4014support. Note, ARB_DIS is obsolete and only applies to older chipsets,
4015both
4016Intel and other vendors. (for Intel: ICH4-M and earlier)
4017
4018This change removes the code to disable/enable bus master arbitration
4019during
4020suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
4021causes
4022resume problems on some machines. The change has been in use for over
4023seven
4024years within Linux.
4025
4026Implemented two new external interfaces to support host-directed dynamic
4027ACPI
4028table load and unload. They are intended to simplify the host
4029implementation
4030of hot-plug support:
4031  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
4032  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
4033table.
4034See the ACPICA reference for additional details. Adds one new file,
4035components/tables/tbxfload.c
4036
4037Implemented and deployed two new interfaces for errors and warnings that
4038are
4039known to be caused by BIOS/firmware issues:
4040  AcpiBiosError: Prints "ACPI Firmware Error" message.
4041  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
4042Deployed these new interfaces in the ACPICA Table Manager code for ACPI
4043table
4044and FADT errors. Additional deployment to be completed as appropriate in
4045the
4046future. The associated conditional macros are ACPI_BIOS_ERROR and
4047ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
4048ACPICA
4049BZ
4050843.
4051
4052Implicit notify support: ensure that no memory allocation occurs within a
4053critical region. This fix moves a memory allocation outside of the time
4054that a
4055spinlock is held. Fixes issues on systems that do not allow this
4056behavior.
4057Jung-uk Kim.
4058
4059Split exception code utilities and tables into a new file,
4060utilities/utexcep.c
4061
4062Example Code and Data Size: These are the sizes for the OS-independent
4063acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4064debug
4065version of the code includes the debug output trace mechanism and has a
4066much
4067larger code and data size.
4068
4069  Previous Release:
4070    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
4071    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
4072  Current Release:
4073    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
4074    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
4075
4076
40772) iASL Compiler/Disassembler and Tools:
4078
4079iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
4080of
40810. Jung-uk Kim.
4082
4083Debugger: Enhanced the "tables" command to emit additional information
4084about
4085the current set of ACPI tables, including the owner ID and flags decode.
4086
4087Debugger: Reimplemented the "unload" command to use the new
4088AcpiUnloadParentTable external interface. This command was disable
4089previously
4090due to need for an unload interface.
4091
4092AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
4093option
4094will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
4095
4096----------------------------------------
409720 June 2012. Summary of changes for version 20120620:
4098
4099
41001) ACPICA Kernel-resident Subsystem:
4101
4102Implemented support to expand the "implicit notify" feature to allow
4103multiple
4104devices to be notified by a single GPE. This feature automatically
4105generates a
4106runtime device notification in the absence of a BIOS-provided GPE control
4107method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
4108notify is
4109provided by ACPICA for Windows compatibility, and is a workaround for
4110BIOS
4111AML
4112code errors. See the description of the AcpiSetupGpeForWake interface in
4113the
4114APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
4115
4116Changed some comments and internal function names to simplify and ensure
4117correctness of the Linux code translation. No functional changes.
4118
4119Example Code and Data Size: These are the sizes for the OS-independent
4120acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4121debug
4122version of the code includes the debug output trace mechanism and has a
4123much
4124larger code and data size.
4125
4126  Previous Release:
4127    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
4128    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
4129  Current Release:
4130    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
4131    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
4132
4133
41342) iASL Compiler/Disassembler and Tools:
4135
4136Disassembler: Added support to emit short, commented descriptions for the
4137ACPI
4138predefined names in order to improve the readability of the disassembled
4139output. ACPICA BZ 959. Changes include:
4140  1) Emit descriptions for all standard predefined names (_INI, _STA,
4141_PRW,
4142etc.)
4143  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
4144  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
4145etc.)
4146
4147AcpiSrc: Fixed several long-standing Linux code translation issues.
4148Argument
4149descriptions in function headers are now translated properly to lower
4150case
4151and
4152underscores. ACPICA BZ 961. Also fixes translation problems such as
4153these:
4154(old -> new)
4155  i_aSL -> iASL
4156  00-7_f -> 00-7F
4157  16_k -> 16K
4158  local_fADT -> local_FADT
4159  execute_oSI -> execute_OSI
4160
4161iASL: Fixed a problem where null bytes were inadvertently emitted into
4162some
4163listing files.
4164
4165iASL: Added the existing debug options to the standard help screen. There
4166are
4167no longer two different help screens. ACPICA BZ 957.
4168
4169AcpiHelp: Fixed some typos in the various predefined name descriptions.
4170Also
4171expand some of the descriptions where appropriate.
4172
4173iASL: Fixed the -ot option (display compile times/statistics). Was not
4174working
4175properly for standard output; only worked for the debug file case.
4176
4177----------------------------------------
417818 May 2012. Summary of changes for version 20120518:
4179
4180
41811) ACPICA Core Subsystem:
4182
4183Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
4184defined
4185to block until asynchronous events such as notifies and GPEs have
4186completed.
4187Within ACPICA, it is only called before a notify or GPE handler is
4188removed/uninstalled. It also may be useful for the host OS within related
4189drivers such as the Embedded Controller driver. See the ACPICA reference
4190for
4191additional information. ACPICA BZ 868.
4192
4193ACPI Tables: Added a new error message for a possible overflow failure
4194during
4195the conversion of FADT 32-bit legacy register addresses to internal
4196common
419764-
4198bit GAS structure representation. The GAS has a one-byte "bit length"
4199field,
4200thus limiting the register length to 255 bits. ACPICA BZ 953.
4201
4202Example Code and Data Size: These are the sizes for the OS-independent
4203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4204debug
4205version of the code includes the debug output trace mechanism and has a
4206much
4207larger code and data size.
4208
4209  Previous Release:
4210    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4211    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
4212  Current Release:
4213    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
4214    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
4215
4216
42172) iASL Compiler/Disassembler and Tools:
4218
4219iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
4220macro.
4221This keyword was added late in the ACPI 5.0 release cycle and was not
4222implemented until now.
4223
4224Disassembler: Added support for Operation Region externals. Adds missing
4225support for operation regions that are defined in another table, and
4226referenced locally via a Field or BankField ASL operator. Now generates
4227the
4228correct External statement.
4229
4230Disassembler: Several additional fixes for the External() statement
4231generation
4232related to some ASL operators. Also, order the External() statements
4233alphabetically in the disassembler output. Fixes the External()
4234generation
4235for
4236the Create* field, Alias, and Scope operators:
4237 1) Create* buffer field operators - fix type mismatch warning on
4238disassembly
4239 2) Alias - implement missing External support
4240 3) Scope - fix to make sure all necessary externals are emitted.
4241
4242iASL: Improved pathname support. For include files, merge the prefix
4243pathname
4244with the file pathname and eliminate unnecessary components. Convert
4245backslashes in all pathnames to forward slashes, for readability. Include
4246file
4247pathname changes affect both #include and Include() type operators.
4248
4249iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
4250end
4251of a valid line by inserting a newline and then returning the EOF during
4252the
4253next call to GetNextLine. Prevents the line from being ignored due to EOF
4254condition.
4255
4256iASL: Implemented some changes to enhance the IDE support (-vi option.)
4257Error
4258and Warning messages are now correctly recognized for both the source
4259code
4260browser and the global error and warning counts.
4261
4262----------------------------------------
426320 April 2012. Summary of changes for version 20120420:
4264
4265
42661) ACPICA Core Subsystem:
4267
4268Implemented support for multiple notify handlers. This change adds
4269support
4270to
4271allow multiple system and device notify handlers on Device, Thermal Zone,
4272and
4273Processor objects. This can simplify the host OS notification
4274implementation.
4275Also re-worked and restructured the entire notify support code to
4276simplify
4277handler installation, handler removal, notify event queuing, and notify
4278dispatch to handler(s). Note: there can still only be two global notify
4279handlers - one for system notifies and one for device notifies. There are
4280no
4281changes to the existing handler install/remove interfaces. Lin Ming, Bob
4282Moore, Rafael Wysocki.
4283
4284Fixed a regression in the package repair code where the object reference
4285count was calculated incorrectly. Regression was introduced in the commit
4286"Support to add Package wrappers".
4287
4288Fixed a couple possible memory leaks in the AML parser, in the error
4289recovery
4290path. Jesper Juhl, Lin Ming.
4291
4292Example Code and Data Size: These are the sizes for the OS-independent
4293acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4294debug version of the code includes the debug output trace mechanism and
4295has a
4296much larger code and data size.
4297
4298  Previous Release:
4299    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4300    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4301  Current Release:
4302    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4303    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
4304
4305
43062) iASL Compiler/Disassembler and Tools:
4307
4308iASL: Fixed a problem with the resource descriptor support where the
4309length
4310of the StartDependentFn and StartDependentFnNoPrio descriptors were not
4311included in cumulative descriptor offset, resulting in incorrect values
4312for
4313resource tags within resource descriptors appearing after a
4314StartDependent*
4315descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
4316
4317iASL and Preprocessor: Implemented full support for the #line directive
4318to
4319correctly track original source file line numbers through the .i
4320preprocessor
4321output file - for error and warning messages.
4322
4323iASL: Expand the allowable byte constants for address space IDs.
4324Previously,
4325the allowable range was 0x80-0xFF (user-defined spaces), now the range is
43260x0A-0xFF to allow for custom and new IDs without changing the compiler.
4327
4328iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
4329
4330iASL: Add option to completely disable the preprocessor (-Pn).
4331
4332iASL: Now emit all error/warning messages to standard error (stderr) by
4333default (instead of the previous stdout).
4334
4335ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
4336Update
4337for resource descriptor offset fix above. Update/cleanup error output
4338routines. Enable and send iASL errors/warnings to an error logfile
4339(error.txt). Send all other iASL output to a logfile (compiler.txt).
4340Fixed
4341several extraneous "unrecognized operator" messages.
4342
4343----------------------------------------
434420 March 2012. Summary of changes for version 20120320:
4345
4346
43471) ACPICA Core Subsystem:
4348
4349Enhanced the sleep/wake interfaces to optionally execute the _GTS method
4350(Going To Sleep) and the _BFS method (Back From Sleep). Windows
4351apparently
4352does not execute these methods, and therefore these methods are often
4353untested. It has been seen on some systems where the execution of these
4354methods causes errors and also prevents the machine from entering S5. It
4355is
4356therefore suggested that host operating systems do not execute these
4357methods
4358by default. In the future, perhaps these methods can be optionally
4359executed
4360based on the age of the system and/or what is the newest version of
4361Windows
4362that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
4363and
4364AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
4365Ming.
4366
4367Fixed a problem where the length of the local/common FADT was set too
4368early.
4369The local FADT table length cannot be set to the common length until the
4370original length has been examined. There is code that checks the table
4371length
4372and sets various fields appropriately. This can affect older machines
4373with
4374early FADT versions. For example, this can cause inadvertent writes to
4375the
4376CST_CNT register. Julian Anastasov.
4377
4378Fixed a mapping issue related to a physical table override. Use the
4379deferred
4380mapping mechanism for tables loaded via the physical override OSL
4381interface.
4382This allows for early mapping before the virtual memory manager is
4383available.
4384Thomas Renninger, Bob Moore.
4385
4386Enhanced the automatic return-object repair code: Repair a common problem
4387with
4388predefined methods that are defined to return a variable-length Package
4389of
4390sub-objects. If there is only one sub-object, some BIOS ASL code
4391mistakenly
4392simply returns the single object instead of a Package with one sub-
4393object.
4394This new support will repair this error by wrapping a Package object
4395around
4396the original object, creating the correct and expected Package with one
4397sub-
4398object. Names that can be repaired in this manner include: _ALR, _CSD,
4399_HPX,
4400_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
4401939.
4402
4403Changed the exception code returned for invalid ACPI paths passed as
4404parameters to external interfaces such as AcpiEvaluateObject. Was
4405AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
4406
4407Example Code and Data Size: These are the sizes for the OS-independent
4408acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4409debug
4410version of the code includes the debug output trace mechanism and has a
4411much
4412larger code and data size.
4413
4414  Previous Release:
4415    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
4416    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4417  Current Release:
4418    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4419    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4420
4421
44222) iASL Compiler/Disassembler and Tools:
4423
4424iASL: Added the infrastructure and initial implementation of a integrated
4425C-
4426like preprocessor. This will simplify BIOS development process by
4427eliminating
4428the need for a separate preprocessing step during builds. On Windows, it
4429also
4430eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
4431features including full #define() macro support are still under
4432development.
4433These preprocessor directives are supported:
4434    #define
4435    #elif
4436    #else
4437    #endif
4438    #error
4439    #if
4440    #ifdef
4441    #ifndef
4442    #include
4443    #pragma message
4444    #undef
4445    #warning
4446In addition, these new command line options are supported:
4447    -D <symbol> Define symbol for preprocessor use
4448    -li         Create preprocessed output file (*.i)
4449    -P          Preprocess only and create preprocessor output file (*.i)
4450
4451Table Compiler: Fixed a problem where the equals operator within an
4452expression
4453did not work properly.
4454
4455Updated iASL to use the current versions of Bison/Flex. Updated the
4456Windows
4457project file to invoke these tools from the standard location. ACPICA BZ
4458904.
4459Versions supported:
4460    Flex for Windows:  V2.5.4
4461    Bison for Windows: V2.4.1
4462
4463----------------------------------------
446415 February 2012. Summary of changes for version 20120215:
4465
4466
44671) ACPICA Core Subsystem:
4468
4469There have been some major changes to the sleep/wake support code, as
4470described below (a - e).
4471
4472a) The AcpiLeaveSleepState has been split into two interfaces, similar to
4473AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
4474AcpiLeaveSleepStatePrep. This allows the host to perform actions between
4475the
4476time the _BFS method is called and the _WAK method is called. NOTE: all
4477hosts
4478must update their wake/resume code or else sleep/wake will not work
4479properly.
4480Rafael Wysocki.
4481
4482b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
4483_WAK
4484method. Some machines require that the GPEs are enabled before the _WAK
4485method
4486is executed. Thomas Renninger.
4487
4488c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
4489bit.
4490Some BIOS code assumes that WAK_STS will be cleared on resume and use it
4491to
4492determine whether the system is rebooting or resuming. Matthew Garrett.
4493
4494d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
4495Sleep) to
4496match the ACPI specification requirement. Rafael Wysocki.
4497
4498e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
4499registers within the V5 FADT. This support adds two new files:
4500hardware/hwesleep.c implements the support for the new registers. Moved
4501all
4502sleep/wake external interfaces to hardware/hwxfsleep.c.
4503
4504
4505Added a new OSL interface for ACPI table overrides,
4506AcpiOsPhysicalTableOverride. This interface allows the host to override a
4507table via a physical address, instead of the logical address required by
4508AcpiOsTableOverride. This simplifies the host implementation. Initial
4509implementation by Thomas Renninger. The ACPICA implementation creates a
4510single
4511shared function for table overrides that attempts both a logical and a
4512physical override.
4513
4514Expanded the OSL memory read/write interfaces to 64-bit data
4515(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
4516transfer support for GAS register structures passed to AcpiRead and
4517AcpiWrite.
4518
4519Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
4520custom
4521build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
4522model.
4523See the ACPICA reference for details. ACPICA BZ 942. This option removes
4524about
452510% of the code and 5% of the static data, and the following hardware
4526ACPI
4527features become unavailable:
4528    PM Event and Control registers
4529    SCI interrupt (and handler)
4530    Fixed Events
4531    General Purpose Events (GPEs)
4532    Global Lock
4533    ACPI PM timer
4534    FACS table (Waking vectors and Global Lock)
4535
4536Updated the unix tarball directory structure to match the ACPICA git
4537source
4538tree. This ensures that the generic unix makefiles work properly (in
4539generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
4540867.
4541
4542Updated the return value of the _REV predefined method to integer value 5
4543to
4544reflect ACPI 5.0 support.
4545
4546Moved the external ACPI PM timer interface prototypes to the public
4547acpixf.h
4548file where they belong.
4549
4550Example Code and Data Size: These are the sizes for the OS-independent
4551acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4552debug
4553version of the code includes the debug output trace mechanism and has a
4554much
4555larger code and data size.
4556
4557  Previous Release:
4558    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
4559    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
4560  Current Release:
4561    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
4562    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4563
4564
45652) iASL Compiler/Disassembler and Tools:
4566
4567Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
4568descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
4569incorrectly displayed.
4570
4571AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
4572specification.
4573
4574----------------------------------------
457511 January 2012. Summary of changes for version 20120111:
4576
4577
45781) ACPICA Core Subsystem:
4579
4580Implemented a new mechanism to allow host device drivers to check for
4581address
4582range conflicts with ACPI Operation Regions. Both SystemMemory and
4583SystemIO
4584address spaces are supported. A new external interface,
4585AcpiCheckAddressRange,
4586allows drivers to check an address range against the ACPI namespace. See
4587the
4588ACPICA reference for additional details. Adds one new file,
4589utilities/utaddress.c. Lin Ming, Bob Moore.
4590
4591Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
4592Control
4593and
4594Status registers, update the ACPI 5.0 flags, and update internal data
4595structures to handle an FADT larger than 256 bytes. The size of the ACPI
45965.0
4597FADT is 268 bytes.
4598
4599Updated all ACPICA copyrights and signons to 2012. Added the 2012
4600copyright to
4601all module headers and signons, including the standard Linux header. This
4602affects virtually every file in the ACPICA core subsystem, iASL compiler,
4603and
4604all ACPICA utilities.
4605
4606Example Code and Data Size: These are the sizes for the OS-independent
4607acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4608debug
4609version of the code includes the debug output trace mechanism and has a
4610much
4611larger code and data size.
4612
4613  Previous Release:
4614    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
4615    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
4616  Current Release:
4617    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
4618    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
4619
4620
46212) iASL Compiler/Disassembler and Tools:
4622
4623Disassembler: fixed a problem with the automatic resource tag generation
4624support. Fixes a problem where the resource tags are inadvertently not
4625constructed if the table being disassembled contains external references
4626to
4627control methods. Moved the actual construction of the tags to after the
4628final
4629namespace is constructed (after 2nd parse is invoked due to external
4630control
4631method references.) ACPICA BZ 941.
4632
4633Table Compiler: Make all "generic" operators caseless. These are the
4634operators
4635like UINT8, String, etc. Making these caseless improves ease-of-use.
4636ACPICA BZ
4637934.
4638
4639----------------------------------------
464023 November 2011. Summary of changes for version 20111123:
4641
46420) ACPI 5.0 Support:
4643
4644This release contains full support for the ACPI 5.0 specification, as
4645summarized below.
4646
4647Reduced Hardware Support:
4648-------------------------
4649
4650This support allows for ACPI systems without the usual ACPI hardware.
4651This
4652support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
4653will
4654not attempt to initialize or use any of the usual ACPI hardware. Note,
4655when
4656this flag is set, all of the following ACPI hardware is assumed to be not
4657present and is not initialized or accessed:
4658
4659    General Purpose Events (GPEs)
4660    Fixed Events (PM1a/PM1b and PM Control)
4661    Power Management Timer and Console Buttons (power/sleep)
4662    Real-time Clock Alarm
4663    Global Lock
4664    System Control Interrupt (SCI)
4665    The FACS is assumed to be non-existent
4666
4667ACPI Tables:
4668------------
4669
4670All new tables and updates to existing tables are fully supported in the
4671ACPICA headers (for use by device drivers), the disassembler, and the
4672iASL
4673Data Table Compiler. ACPI 5.0 defines these new tables:
4674
4675    BGRT        /* Boot Graphics Resource Table */
4676    DRTM        /* Dynamic Root of Trust for Measurement table */
4677    FPDT        /* Firmware Performance Data Table */
4678    GTDT        /* Generic Timer Description Table */
4679    MPST        /* Memory Power State Table */
4680    PCCT        /* Platform Communications Channel Table */
4681    PMTT        /* Platform Memory Topology Table */
4682    RASF        /* RAS Feature table */
4683
4684Operation Regions/SpaceIDs:
4685---------------------------
4686
4687All new operation regions are fully supported by the iASL compiler, the
4688disassembler, and the ACPICA runtime code (for dispatch to region
4689handlers.)
4690The new operation region Space IDs are:
4691
4692    GeneralPurposeIo
4693    GenericSerialBus
4694
4695Resource Descriptors:
4696---------------------
4697
4698All new ASL resource descriptors are fully supported by the iASL
4699compiler,
4700the
4701ASL/AML disassembler, and the ACPICA runtime Resource Manager code
4702(including
4703all new predefined resource tags). New descriptors are:
4704
4705    FixedDma
4706    GpioIo
4707    GpioInt
4708    I2cSerialBus
4709    SpiSerialBus
4710    UartSerialBus
4711
4712ASL/AML Operators, New and Modified:
4713------------------------------------
4714
4715One new operator is added, the Connection operator, which is used to
4716associate
4717a GeneralPurposeIo or GenericSerialBus resource descriptor with
4718individual
4719field objects within an operation region. Several new protocols are
4720associated
4721with the AccessAs operator. All are fully supported by the iASL compiler,
4722disassembler, and runtime ACPICA AML interpreter:
4723
4724    Connection                      // Declare Field Connection
4725attributes
4726    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
4727    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
4728Protocol
4729    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
4730    RawDataBuffer                       // Data type for Vendor Data
4731fields
4732
4733Predefined ASL/AML Objects:
4734---------------------------
4735
4736All new predefined objects/control-methods are supported by the iASL
4737compiler
4738and the ACPICA runtime validation/repair (arguments and return values.)
4739New
4740predefined names include the following:
4741
4742Standard Predefined Names (Objects or Control Methods):
4743    _AEI, _CLS, _CPC, _CWS, _DEP,
4744    _DLM, _EVT, _GCP, _CRT, _GWS,
4745    _HRV, _PRE, _PSE, _SRT, _SUB.
4746
4747Resource Tags (Names used to access individual fields within resource
4748descriptors):
4749    _DBT, _DPL, _DRS, _END, _FLC,
4750    _IOR, _LIN, _MOD, _PAR, _PHA,
4751    _PIN, _PPI, _POL, _RXL, _SLV,
4752    _SPE, _STB, _TXL, _VEN.
4753
4754ACPICA External Interfaces:
4755---------------------------
4756
4757Several new interfaces have been defined for use by ACPI-related device
4758drivers and other host OS services:
4759
4760AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
4761to
4762acquire and release AML mutexes that are defined in the DSDT/SSDT tables
4763provided by the BIOS. They are intended to be used in conjunction with
4764the
4765ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
4766mutual exclusion with the AML code/interpreter.
4767
4768AcpiGetEventResources: Returns the (formatted) resource descriptors as
4769defined
4770by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
4771provides
4772resource descriptors associated with hardware-reduced platform events,
4773similar
4774to the AcpiGetCurrentResources interface.
4775
4776Operation Region Handlers: For General Purpose IO and Generic Serial Bus
4777operation regions, information about the Connection() object and any
4778optional
4779length information is passed to the region handler within the Context
4780parameter.
4781
4782AcpiBufferToResource: This interface converts a raw AML buffer containing
4783a
4784resource template or resource descriptor to the ACPI_RESOURCE internal
4785format
4786suitable for use by device drivers. Can be used by an operation region
4787handler
4788to convert the Connection() buffer object into a ACPI_RESOURCE.
4789
4790Miscellaneous/Tools/TestSuites:
4791-------------------------------
4792
4793Support for extended _HID names (Four alpha characters instead of three).
4794Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
4795Support for ACPI 5.0 features in the ASLTS test suite.
4796Fully updated documentation (ACPICA and iASL reference documents.)
4797
4798ACPI Table Definition Language:
4799-------------------------------
4800
4801Support for this language was implemented and released as a subsystem of
4802the
4803iASL compiler in 2010. (See the iASL compiler User Guide.)
4804
4805
4806Non-ACPI 5.0 changes for this release:
4807--------------------------------------
4808
48091) ACPICA Core Subsystem:
4810
4811Fix a problem with operation region declarations where a failure can
4812occur
4813if
4814the region name and an argument that evaluates to an object (such as the
4815region address) are in different namespace scopes. Lin Ming, ACPICA BZ
4816937.
4817
4818Do not abort an ACPI table load if an invalid space ID is found within.
4819This
4820will be caught later if the offending method is executed. ACPICA BZ 925.
4821
4822Fixed an issue with the FFixedHW space ID where the ID was not always
4823recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
4824
4825Fixed a problem with the 32-bit generation of the unix-specific OSL
4826(osunixxf.c). Lin Ming, ACPICA BZ 936.
4827
4828Several changes made to enable generation with the GCC 4.6 compiler.
4829ACPICA BZ
4830935.
4831
4832New error messages: Unsupported I/O requests (not 8/16/32 bit), and
4833Index/Bank
4834field registers out-of-range.
4835
48362) iASL Compiler/Disassembler and Tools:
4837
4838iASL: Implemented the __PATH__ operator, which returns the full pathname
4839of
4840the current source file.
4841
4842AcpiHelp: Automatically display expanded keyword information for all ASL
4843operators.
4844
4845Debugger: Add "Template" command to disassemble/dump resource template
4846buffers.
4847
4848Added a new master script to generate and execute the ASLTS test suite.
4849Automatically handles 32- and 64-bit generation. See tests/aslts.sh
4850
4851iASL: Fix problem with listing generation during processing of the
4852Switch()
4853operator where AML listing was disabled until the entire Switch block was
4854completed.
4855
4856iASL: Improve support for semicolon statement terminators. Fix "invalid
4857character" message for some cases when the semicolon is used. Semicolons
4858are
4859now allowed after every <Term> grammar element. ACPICA BZ 927.
4860
4861iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
4862923.
4863
4864Disassembler: Fix problem with disassembly of the DataTableRegion
4865operator
4866where an inadvertent "Unhandled deferred opcode" message could be
4867generated.
4868
48693) Example Code and Data Size
4870
4871These are the sizes for the OS-independent acpica.lib produced by the
4872Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
4873includes the debug output trace mechanism and has a much larger code and
4874data
4875size.
4876
4877  Previous Release:
4878    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4879    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4880  Current Release:
4881    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
4882    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
4883
4884----------------------------------------
488522 September 2011. Summary of changes for version 20110922:
4886
48870) ACPI 5.0 News:
4888
4889Support for ACPI 5.0 in ACPICA has been underway for several months and
4890will
4891be released at the same time that ACPI 5.0 is officially released.
4892
4893The ACPI 5.0 specification is on track for release in the next few
4894months.
4895
48961) ACPICA Core Subsystem:
4897
4898Fixed a problem where the maximum sleep time for the Sleep() operator was
4899intended to be limited to two seconds, but was inadvertently limited to
490020
4901seconds instead.
4902
4903Linux and Unix makefiles: Added header file dependencies to ensure
4904correct
4905generation of ACPICA core code and utilities. Also simplified the
4906makefiles
4907considerably through the use of the vpath variable to specify search
4908paths.
4909ACPICA BZ 924.
4910
49112) iASL Compiler/Disassembler and Tools:
4912
4913iASL: Implemented support to check the access length for all fields
4914created to
4915access named Resource Descriptor fields. For example, if a resource field
4916is
4917defined to be two bits, a warning is issued if a CreateXxxxField() is
4918used
4919with an incorrect bit length. This is implemented for all current
4920resource
4921descriptor names. ACPICA BZ 930.
4922
4923Disassembler: Fixed a byte ordering problem with the output of 24-bit and
492456-
4925bit integers.
4926
4927iASL: Fixed a couple of issues associated with variable-length package
4928objects. 1) properly handle constants like One, Ones, Zero -- do not make
4929a
4930VAR_PACKAGE when these are used as a package length. 2) Allow the
4931VAR_PACKAGE
4932opcode (in addition to PACKAGE) when validating object types for
4933predefined
4934names.
4935
4936iASL: Emit statistics for all output files (instead of just the ASL input
4937and
4938AML output). Includes listings, hex files, etc.
4939
4940iASL: Added -G option to the table compiler to allow the compilation of
4941custom
4942ACPI tables. The only part of a table that is required is the standard
494336-
4944byte
4945ACPI header.
4946
4947AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
4948headers),
4949which also adds correct 64-bit support. Also, now all output filenames
4950are
4951completely lower case.
4952
4953AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
4954loading table files. A warning is issued for any such tables. The only
4955exception is an FADT. This also fixes a possible fault when attempting to
4956load
4957non-AML tables. ACPICA BZ 932.
4958
4959AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
4960a
4961missing table terminator could cause a fault when using the -p option.
4962
4963AcpiSrc: Fixed a possible divide-by-zero fault when generating file
4964statistics.
4965
49663) Example Code and Data Size
4967
4968These are the sizes for the OS-independent acpica.lib produced by the
4969Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
4970includes the debug output trace mechanism and has a much larger code and
4971data
4972size.
4973
4974  Previous Release (VC 9.0):
4975    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4976    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4977  Current Release (VC 9.0):
4978    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
4979    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
4980
4981
4982----------------------------------------
498323 June 2011. Summary of changes for version 20110623:
4984
49851) ACPI CA Core Subsystem:
4986
4987Updated the predefined name repair mechanism to not attempt repair of a
4988_TSS
4989return object if a _PSS object is present. We can only sort the _TSS
4990return
4991package if there is no _PSS within the same scope. This is because if
4992_PSS
4993is
4994present, the ACPI specification dictates that the _TSS Power Dissipation
4995field
4996is to be ignored, and therefore some BIOSs leave garbage values in the
4997_TSS
4998Power field(s). In this case, it is best to just return the _TSS package
4999as-
5000is. Reported by, and fixed with assistance from Fenghua Yu.
5001
5002Added an option to globally disable the control method return value
5003validation
5004and repair. This runtime option can be used to disable return value
5005repair
5006if
5007this is causing a problem on a particular machine. Also added an option
5008to
5009AcpiExec (-dr) to set this disable flag.
5010
5011All makefiles and project files: Major changes to improve generation of
5012ACPICA
5013tools. ACPICA BZ 912:
5014    Reduce default optimization levels to improve compatibility
5015    For Linux, add strict-aliasing=0 for gcc 4
5016    Cleanup and simplify use of command line defines
5017    Cleanup multithread library support
5018    Improve usage messages
5019
5020Linux-specific header: update handling of THREAD_ID and pthread. For the
502132-
5022bit case, improve casting to eliminate possible warnings, especially with
5023the
5024acpica tools.
5025
5026Example Code and Data Size: These are the sizes for the OS-independent
5027acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5028debug
5029version of the code includes the debug output trace mechanism and has a
5030much
5031larger code and data size.
5032
5033  Previous Release (VC 9.0):
5034    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
5035    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5036  Current Release (VC 9.0):
5037    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5038    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5039
50402) iASL Compiler/Disassembler and Tools:
5041
5042With this release, a new utility named "acpihelp" has been added to the
5043ACPICA
5044package. This utility summarizes the ACPI specification chapters for the
5045ASL
5046and AML languages. It generates under Linux/Unix as well as Windows, and
5047provides the following functionality:
5048    Find/display ASL operator(s) -- with description and syntax.
5049    Find/display ASL keyword(s) -- with exact spelling and descriptions.
5050    Find/display ACPI predefined name(s) -- with description, number
5051        of arguments, and the return value data type.
5052    Find/display AML opcode name(s) -- with opcode, arguments, and
5053grammar.
5054    Decode/display AML opcode -- with opcode name, arguments, and
5055grammar.
5056
5057Service Layers: Make multi-thread support configurable. Conditionally
5058compile
5059the multi-thread support so that threading libraries will not be linked
5060if
5061not
5062necessary. The only tool that requires multi-thread support is AcpiExec.
5063
5064iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
5065of
5066Bison appear to want the interface to yyerror to be a const char * (or at
5067least this is a problem when generating iASL on some systems.) ACPICA BZ
5068923
5069Pierre Lejeune.
5070
5071Tools: Fix for systems where O_BINARY is not defined. Only used for
5072Windows
5073versions of the tools.
5074
5075----------------------------------------
507627 May 2011. Summary of changes for version 20110527:
5077
50781) ACPI CA Core Subsystem:
5079
5080ASL Load() operator: Reinstate most restrictions on the incoming ACPI
5081table
5082signature. Now, only allow SSDT, OEMx, and a null signature. History:
5083    1) Originally, we checked the table signature for "SSDT" or "PSDT".
5084       (PSDT is now obsolete.)
5085    2) We added support for OEMx tables, signature "OEM" plus a fourth
5086       "don't care" character.
5087    3) Valid tables were encountered with a null signature, so we just
5088       gave up on validating the signature, (05/2008).
5089    4) We encountered non-AML tables such as the MADT, which caused
5090       interpreter errors and kernel faults. So now, we once again allow
5091       only SSDT, OEMx, and now, also a null signature. (05/2011).
5092
5093Added the missing _TDL predefined name to the global name list in order
5094to
5095enable validation. Affects both the core ACPICA code and the iASL
5096compiler.
5097
5098Example Code and Data Size: These are the sizes for the OS-independent
5099acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5100debug
5101version of the code includes the debug output trace mechanism and has a
5102much
5103larger code and data size.
5104
5105  Previous Release (VC 9.0):
5106    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
5107    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
5108  Current Release (VC 9.0):
5109    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
5110    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5111
51122) iASL Compiler/Disassembler and Tools:
5113
5114Debugger/AcpiExec: Implemented support for "complex" method arguments on
5115the
5116debugger command line. This adds support beyond simple integers --
5117including
5118Strings, Buffers, and Packages. Includes support for nested packages.
5119Increased the default command line buffer size to accommodate these
5120arguments.
5121See the ACPICA reference for details and syntax. ACPICA BZ 917.
5122
5123Debugger/AcpiExec: Implemented support for "default" method arguments for
5124the
5125Execute/Debug command. Now, the debugger will always invoke a control
5126method
5127with the required number of arguments -- even if the command line
5128specifies
5129none or insufficient arguments. It uses default integer values for any
5130missing
5131arguments. Also fixes a bug where only six method arguments maximum were
5132supported instead of the required seven.
5133
5134Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
5135and
5136also return status in order to prevent buffer overruns. See the ACPICA
5137reference for details and syntax. ACPICA BZ 921
5138
5139iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
5140makefiles to simplify support for the two different but similar parser
5141generators, bison and yacc.
5142
5143Updated the generic unix makefile for gcc 4. The default gcc version is
5144now
5145expected to be 4 or greater, since options specific to gcc 4 are used.
5146
5147----------------------------------------
514813 April 2011. Summary of changes for version 20110413:
5149
51501) ACPI CA Core Subsystem:
5151
5152Implemented support to execute a so-called "orphan" _REG method under the
5153EC
5154device. This change will force the execution of a _REG method underneath
5155the
5156EC
5157device even if there is no corresponding operation region of type
5158EmbeddedControl. Fixes a problem seen on some machines and apparently is
5159compatible with Windows behavior. ACPICA BZ 875.
5160
5161Added more predefined methods that are eligible for automatic NULL
5162package
5163element removal. This change adds another group of predefined names to
5164the
5165list
5166of names that can be repaired by having NULL package elements dynamically
5167removed. This group are those methods that return a single variable-
5168length
5169package containing simple data types such as integers, buffers, strings.
5170This
5171includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
5172_PSL,
5173_Sx,
5174and _TZD. ACPICA BZ 914.
5175
5176Split and segregated all internal global lock functions to a new file,
5177evglock.c.
5178
5179Updated internal address SpaceID for DataTable regions. Moved this
5180internal
5181space
5182id in preparation for ACPI 5.0 changes that will include some new space
5183IDs.
5184This
5185change should not affect user/host code.
5186
5187Example Code and Data Size: These are the sizes for the OS-independent
5188acpica.lib
5189produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
5190version of
5191the code includes the debug output trace mechanism and has a much larger
5192code
5193and
5194data size.
5195
5196  Previous Release (VC 9.0):
5197    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
5198    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
5199  Current Release (VC 9.0):
5200    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
5201    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
5202
52032) iASL Compiler/Disassembler and Tools:
5204
5205iASL/DTC: Major update for new grammar features. Allow generic data types
5206in
5207custom ACPI tables. Field names are now optional. Any line can be split
5208to
5209multiple lines using the continuation char (\). Large buffers now use
5210line-
5211continuation character(s) and no colon on the continuation lines. See the
5212grammar
5213update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
5214Moore.
5215
5216iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
5217statements.
5218Since the parser stuffs a "zero" as the return value for these statements
5219(due
5220to
5221the underlying AML grammar), they were seen as "return with value" by the
5222iASL
5223semantic checking. They are now seen correctly as "null" return
5224statements.
5225
5226iASL: Check if a_REG declaration has a corresponding Operation Region.
5227Adds a
5228check for each _REG to ensure that there is in fact a corresponding
5229operation
5230region declaration in the same scope. If not, the _REG method is not very
5231useful
5232since it probably won't be executed. ACPICA BZ 915.
5233
5234iASL/DTC: Finish support for expression evaluation. Added a new
5235expression
5236parser
5237that implements c-style operator precedence and parenthesization. ACPICA
5238bugzilla
5239908.
5240
5241Disassembler/DTC: Remove support for () and <> style comments in data
5242tables.
5243Now
5244that DTC has full expression support, we don't want to have comment
5245strings
5246that
5247start with a parentheses or a less-than symbol. Now, only the standard /*
5248and
5249//
5250comments are supported, as well as the bracket [] comments.
5251
5252AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
5253"unusual"
5254headers in the acpidump file. Update the header validation to support
5255these
5256tables. Problem introduced in previous AcpiXtract version in the change
5257to
5258support "wrong checksum" error messages emitted by acpidump utility.
5259
5260iASL: Add a * option to generate all template files (as a synonym for
5261ALL)
5262as
5263in
5264"iasl -T *" or "iasl -T ALL".
5265
5266iASL/DTC: Do not abort compiler on fatal errors. We do not want to
5267completely
5268abort the compiler on "fatal" errors, simply should abort the current
5269compile.
5270This allows multiple compiles with a single (possibly wildcard) compiler
5271invocation.
5272
5273----------------------------------------
527416 March 2011. Summary of changes for version 20110316:
5275
52761) ACPI CA Core Subsystem:
5277
5278Fixed a problem caused by a _PRW method appearing at the namespace root
5279scope
5280during the setup of wake GPEs. A fault could occur if a _PRW directly
5281under
5282the
5283root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
5284
5285Implemented support for "spurious" Global Lock interrupts. On some
5286systems, a
5287global lock interrupt can occur without the pending flag being set. Upon
5288a
5289GL
5290interrupt, we now ensure that a thread is actually waiting for the lock
5291before
5292signaling GL availability. Rafael Wysocki, Bob Moore.
5293
5294Example Code and Data Size: These are the sizes for the OS-independent
5295acpica.lib
5296produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
5297version of
5298the code includes the debug output trace mechanism and has a much larger
5299code
5300and
5301data size.
5302
5303  Previous Release (VC 9.0):
5304    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5305    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5306  Current Release (VC 9.0):
5307    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
5308    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
5309
53102) iASL Compiler/Disassembler and Tools:
5311
5312Implemented full support for the "SLIC" ACPI table. Includes support in
5313the
5314header files, disassembler, table compiler, and template generator. Bob
5315Moore,
5316Lin Ming.
5317
5318AcpiXtract: Correctly handle embedded comments and messages from
5319AcpiDump.
5320Apparently some or all versions of acpidump will occasionally emit a
5321comment
5322like
5323"Wrong checksum", etc., into the dump file. This was causing problems for
5324AcpiXtract. ACPICA BZ 905.
5325
5326iASL: Fix the Linux makefile by removing an inadvertent double file
5327inclusion.
5328ACPICA BZ 913.
5329
5330AcpiExec: Update installation of operation region handlers. Install one
5331handler
5332for a user-defined address space. This is used by the ASL test suite
5333(ASLTS).
5334
5335----------------------------------------
533611 February 2011. Summary of changes for version 20110211:
5337
53381) ACPI CA Core Subsystem:
5339
5340Added a mechanism to defer _REG methods for some early-installed
5341handlers.
5342Most user handlers should be installed before call to
5343AcpiEnableSubsystem.
5344However, Event handlers and region handlers should be installed after
5345AcpiInitializeObjects. Override handlers for the "default" regions should
5346be
5347installed early, however. This change executes all _REG methods for the
5348default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
5349chicken/egg issues between them. ACPICA BZ 848.
5350
5351Implemented an optimization for GPE detection. This optimization will
5352simply
5353ignore GPE registers that contain no enabled GPEs -- there is no need to
5354read the register since this information is available internally. This
5355becomes more important on machines with a large GPE space. ACPICA
5356bugzilla
5357884. Lin Ming. Suggestion from Joe Liu.
5358
5359Removed all use of the highly unreliable FADT revision field. The
5360revision
5361number in the FADT has been found to be completely unreliable and cannot
5362be
5363trusted. Only the actual table length can be used to infer the version.
5364This
5365change updates the ACPICA core and the disassembler so that both no
5366longer
5367even look at the FADT version and instead depend solely upon the FADT
5368length.
5369
5370Fix an unresolved name issue for the no-debug and no-error-message source
5371generation cases. The _AcpiModuleName was left undefined in these cases,
5372but
5373it is actually needed as a parameter to some interfaces. Define
5374_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
5375
5376Split several large files (makefiles and project files updated)
5377  utglobal.c   -> utdecode.c
5378  dbcomds.c    -> dbmethod.c dbnames.c
5379  dsopcode.c   -> dsargs.c dscontrol.c
5380  dsload.c     -> dsload2.c
5381  aslanalyze.c -> aslbtypes.c aslwalks.c
5382
5383Example Code and Data Size: These are the sizes for the OS-independent
5384acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5385debug version of the code includes the debug output trace mechanism and
5386has
5387a much larger code and data size.
5388
5389  Previous Release (VC 9.0):
5390    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5391    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5392  Current Release (VC 9.0):
5393    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5394    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5395
53962) iASL Compiler/Disassembler and Tools:
5397
5398iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
5399These are useful C-style macros with the standard definitions. ACPICA
5400bugzilla 898.
5401
5402iASL/DTC: Added support for integer expressions and labels. Support for
5403full
5404expressions for all integer fields in all ACPI tables. Support for labels
5405in
5406"generic" portions of tables such as UEFI. See the iASL reference manual.
5407
5408Debugger: Added a command to display the status of global handlers. The
5409"handlers" command will display op region, fixed event, and miscellaneous
5410global handlers. installation status -- and for op regions, whether
5411default
5412or user-installed handler will be used.
5413
5414iASL: Warn if reserved method incorrectly returns a value. Many
5415predefined
5416names are defined such that they do not return a value. If implemented as
5417a
5418method, issue a warning if such a name explicitly returns a value. ACPICA
5419Bugzilla 855.
5420
5421iASL: Added detection of GPE method name conflicts. Detects a conflict
5422where
5423there are two GPE methods of the form _Lxy and _Exy in the same scope.
5424(For
5425example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
5426
5427iASL/DTC: Fixed a couple input scanner issues with comments and line
5428numbers. Comment remover could get confused and miss a comment ending.
5429Fixed
5430a problem with line counter maintenance.
5431
5432iASL/DTC: Reduced the severity of some errors from fatal to error. There
5433is
5434no need to abort on simple errors within a field definition.
5435
5436Debugger: Simplified the output of the help command. All help output now
5437in
5438a single screen, instead of help subcommands. ACPICA Bugzilla 897.
5439
5440----------------------------------------
544112 January 2011. Summary of changes for version 20110112:
5442
54431) ACPI CA Core Subsystem:
5444
5445Fixed a race condition between method execution and namespace walks that
5446can
5447possibly cause a fault. The problem was apparently introduced in version
544820100528 as a result of a performance optimization that reduces the
5449number
5450of
5451namespace walks upon method exit by using the delete_namespace_subtree
5452function instead of the delete_namespace_by_owner function used
5453previously.
5454Bug is a missing namespace lock in the delete_namespace_subtree function.
5455dana.myers@oracle.com
5456
5457Fixed several issues and a possible fault with the automatic "serialized"
5458method support. History: This support changes a method to "serialized" on
5459the
5460fly if the method generates an AE_ALREADY_EXISTS error, indicating the
5461possibility that it cannot handle reentrancy. This fix repairs a couple
5462of
5463issues seen in the field, especially on machines with many cores:
5464
5465    1) Delete method children only upon the exit of the last thread,
5466       so as to not delete objects out from under other running threads
5467      (and possibly causing a fault.)
5468    2) Set the "serialized" bit for the method only upon the exit of the
5469       Last thread, so as to not cause deadlock when running threads
5470       attempt to exit.
5471    3) Cleanup the use of the AML "MethodFlags" and internal method flags
5472       so that there is no longer any confusion between the two.
5473
5474    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
5475
5476Debugger: Now lock the namespace for duration of a namespace dump.
5477Prevents
5478issues if the namespace is changing dynamically underneath the debugger.
5479Especially affects temporary namespace nodes, since the debugger displays
5480these also.
5481
5482Updated the ordering of include files. The ACPICA headers should appear
5483before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
5484set
5485any necessary compiler-specific defines, etc. Affects the ACPI-related
5486tools
5487and utilities.
5488
5489Updated all ACPICA copyrights and signons to 2011. Added the 2011
5490copyright
5491to all module headers and signons, including the Linux header. This
5492affects
5493virtually every file in the ACPICA core subsystem, iASL compiler, and all
5494utilities.
5495
5496Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
5497project files for VC++ 6.0 are now obsolete. New project files can be
5498found
5499under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
5500details.
5501
5502Example Code and Data Size: These are the sizes for the OS-independent
5503acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5504debug version of the code includes the debug output trace mechanism and
5505has a
5506much larger code and data size.
5507
5508  Previous Release (VC 6.0):
5509    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
5510    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
5511  Current Release (VC 9.0):
5512    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5513    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5514
55152) iASL Compiler/Disassembler and Tools:
5516
5517iASL: Added generic data types to the Data Table compiler. Add "generic"
5518data
5519types such as UINT32, String, Unicode, etc., to simplify the generation
5520of
5521platform-defined tables such as UEFI. Lin Ming.
5522
5523iASL: Added listing support for the Data Table Compiler. Adds listing
5524support
5525(-l) to display actual binary output for each line of input code.
5526
5527----------------------------------------
552809 December 2010. Summary of changes for version 20101209:
5529
55301) ACPI CA Core Subsystem:
5531
5532Completed the major overhaul of the GPE support code that was begun in
5533July
55342010. Major features include: removal of _PRW execution in ACPICA (host
5535executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
5536changes to existing interfaces, simplification of GPE handler operation,
5537and
5538a handful of new interfaces:
5539
5540    AcpiUpdateAllGpes
5541    AcpiFinishGpe
5542    AcpiSetupGpeForWake
5543    AcpiSetGpeWakeMask
5544    One new file, evxfgpe.c to consolidate all external GPE interfaces.
5545
5546See the ACPICA Programmer Reference for full details and programming
5547information. See the new section 4.4 "General Purpose Event (GPE)
5548Support"
5549for a full overview, and section 8.7 "ACPI General Purpose Event
5550Management"
5551for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
5552Ming,
5553Bob Moore, Rafael Wysocki.
5554
5555Implemented a new GPE feature for Windows compatibility, the "Implicit
5556Wake
5557GPE Notify". This feature will automatically issue a Notify(2) on a
5558device
5559when a Wake GPE is received if there is no corresponding GPE method or
5560handler. ACPICA BZ 870.
5561
5562Fixed a problem with the Scope() operator during table parse and load
5563phase.
5564During load phase (table load or method execution), the scope operator
5565should
5566not enter the target into the namespace. Instead, it should open a new
5567scope
5568at the target location. Linux BZ 19462, ACPICA BZ 882.
5569
5570Example Code and Data Size: These are the sizes for the OS-independent
5571acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5572debug version of the code includes the debug output trace mechanism and
5573has a
5574much larger code and data size.
5575
5576  Previous Release:
5577    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
5578    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
5579  Current Release:
5580    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5581    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5582
55832) iASL Compiler/Disassembler and Tools:
5584
5585iASL: Relax the alphanumeric restriction on _CID strings. These strings
5586are
5587"bus-specific" per the ACPI specification, and therefore any characters
5588are
5589acceptable. The only checks that can be performed are for a null string
5590and
5591perhaps for a leading asterisk. ACPICA BZ 886.
5592
5593iASL: Fixed a problem where a syntax error that caused a premature EOF
5594condition on the source file emitted a very confusing error message. The
5595premature EOF is now detected correctly. ACPICA BZ 891.
5596
5597Disassembler: Decode the AccessSize within a Generic Address Structure
5598(byte
5599access, word access, etc.) Note, this field does not allow arbitrary bit
5600access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
5601
5602New: AcpiNames utility - Example namespace dump utility. Shows an example
5603of
5604ACPICA configuration for a minimal namespace dump utility. Uses table and
5605namespace managers, but no AML interpreter. Does not add any
5606functionality
5607over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
5608partition and configure ACPICA. ACPICA BZ 883.
5609
5610AML Debugger: Increased the debugger buffer size for method return
5611objects.
5612Was 4K, increased to 16K. Also enhanced error messages for debugger
5613method
5614execution, including the buffer overflow case.
5615
5616----------------------------------------
561713 October 2010. Summary of changes for version 20101013:
5618
56191) ACPI CA Core Subsystem:
5620
5621Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
5622now
5623clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
5624HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
5625
5626Changed the type of the predefined namespace object _TZ from ThermalZone
5627to
5628Device. This was found to be confusing to the host software that
5629processes
5630the various thermal zones, since _TZ is not really a ThermalZone.
5631However,
5632a
5633Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
5634Zhang.
5635
5636Added Windows Vista SP2 to the list of supported _OSI strings. The actual
5637string is "Windows 2006 SP2".
5638
5639Eliminated duplicate code in AcpiUtExecute* functions. Now that the
5640nsrepair
5641code automatically repairs _HID-related strings, this type of code is no
5642longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
5643878.
5644
5645Example Code and Data Size: These are the sizes for the OS-independent
5646acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5647debug version of the code includes the debug output trace mechanism and
5648has a
5649much larger code and data size.
5650
5651  Previous Release:
5652    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5653    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5654  Current Release:
5655    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5656    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5657
56582) iASL Compiler/Disassembler and Tools:
5659
5660iASL: Implemented additional compile-time validation for _HID strings.
5661The
5662non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
5663length
5664of
5665the string must be exactly seven or eight characters. For both _HID and
5666_CID
5667strings, all characters must be alphanumeric. ACPICA BZ 874.
5668
5669iASL: Allow certain "null" resource descriptors. Some BIOS code creates
5670descriptors that are mostly or all zeros, with the expectation that they
5671will
5672be filled in at runtime. iASL now allows this as long as there is a
5673"resource
5674tag" (name) associated with the descriptor, which gives the ASL a handle
5675needed to modify the descriptor. ACPICA BZ 873.
5676
5677Added single-thread support to the generic Unix application OSL.
5678Primarily
5679for iASL support, this change removes the use of semaphores in the
5680single-
5681threaded ACPICA tools/applications - increasing performance. The
5682_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
5683option. ACPICA BZ 879.
5684
5685AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
5686support
5687for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
5688
5689iASL: Moved all compiler messages to a new file, aslmessages.h.
5690
5691----------------------------------------
569215 September 2010. Summary of changes for version 20100915:
5693
56941) ACPI CA Core Subsystem:
5695
5696Removed the AcpiOsDerivePciId OSL interface. The various host
5697implementations
5698of this function were not OS-dependent and are now obsolete and can be
5699removed from all host OSLs. This function has been replaced by
5700AcpiHwDerivePciId, which is now part of the ACPICA core code.
5701AcpiHwDerivePciId has been implemented without recursion. Adds one new
5702module, hwpci.c. ACPICA BZ 857.
5703
5704Implemented a dynamic repair for _HID and _CID strings. The following
5705problems are now repaired at runtime: 1) Remove a leading asterisk in the
5706string, and 2) the entire string is uppercased. Both repairs are in
5707accordance with the ACPI specification and will simplify host driver
5708code.
5709ACPICA BZ 871.
5710
5711The ACPI_THREAD_ID type is no longer configurable, internally it is now
5712always UINT64. This simplifies the ACPICA code, especially any printf
5713output.
5714UINT64 is the only common data type for all thread_id types across all
5715operating systems. It is now up to the host OSL to cast the native
5716thread_id
5717type to UINT64 before returning the value to ACPICA (via
5718AcpiOsGetThreadId).
5719Lin Ming, Bob Moore.
5720
5721Added the ACPI_INLINE type to enhance the ACPICA configuration. The
5722"inline"
5723keyword is not standard across compilers, and this type allows inline to
5724be
5725configured on a per-compiler basis. Lin Ming.
5726
5727Made the system global AcpiGbl_SystemAwakeAndRunning publically
5728available.
5729Added an extern for this boolean in acpixf.h. Some hosts utilize this
5730value
5731during suspend/restore operations. ACPICA BZ 869.
5732
5733All code that implements error/warning messages with the "ACPI:" prefix
5734has
5735been moved to a new module, utxferror.c.
5736
5737The UINT64_OVERLAY was moved to utmath.c, which is the only module where
5738it
5739is used. ACPICA BZ 829. Lin Ming, Bob Moore.
5740
5741Example Code and Data Size: These are the sizes for the OS-independent
5742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5743debug version of the code includes the debug output trace mechanism and
5744has a
5745much larger code and data size.
5746
5747  Previous Release:
5748    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
5749    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
5750  Current Release:
5751    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
5752    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
5753
57542) iASL Compiler/Disassembler and Tools:
5755
5756iASL/Disassembler: Write ACPI errors to stderr instead of the output
5757file.
5758This keeps the output files free of random error messages that may
5759originate
5760from within the namespace/interpreter code. Used this opportunity to
5761merge
5762all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
5763866. Lin Ming, Bob Moore.
5764
5765Tools: update some printfs for ansi warnings on size_t. Handle width
5766change
5767of size_t on 32-bit versus 64-bit generations. Lin Ming.
5768
5769----------------------------------------
577006 August 2010. Summary of changes for version 20100806:
5771
57721) ACPI CA Core Subsystem:
5773
5774Designed and implemented a new host interface to the _OSI support code.
5775This
5776will allow the host to dynamically add or remove multiple _OSI strings,
5777as
5778well as install an optional handler that is called for each _OSI
5779invocation.
5780Also added a new AML debugger command, 'osi' to display and modify the
5781global
5782_OSI string table, and test support in the AcpiExec utility. See the
5783ACPICA
5784reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
5785New Functions:
5786    AcpiInstallInterface - Add an _OSI string.
5787    AcpiRemoveInterface - Delete an _OSI string.
5788    AcpiInstallInterfaceHandler - Install optional _OSI handler.
5789Obsolete Functions:
5790    AcpiOsValidateInterface - no longer used.
5791New Files:
5792    source/components/utilities/utosi.c
5793
5794Re-introduced the support to enable multi-byte transfers for Embedded
5795Controller (EC) operation regions. A reported problem was found to be a
5796bug
5797in the host OS, not in the multi-byte support. Previously, the maximum
5798data
5799size passed to the EC operation region handler was a single byte. There
5800are
5801often EC Fields larger than one byte that need to be transferred, and it
5802is
5803useful for the EC driver to lock these as a single transaction. This
5804change
5805enables single transfers larger than 8 bits. This effectively changes the
5806access to the EC space from ByteAcc to AnyAcc, and will probably require
5807changes to the host OS Embedded Controller driver to enable 16/32/64/256-
5808bit
5809transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
5810
5811Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
5812prototype in acpiosxf.h had the output value pointer as a (void *).
5813It should be a (UINT64 *). This may affect some host OSL code.
5814
5815Fixed a couple problems with the recently modified Linux makefiles for
5816iASL
5817and AcpiExec. These new makefiles place the generated object files in the
5818local directory so that there can be no collisions between the files that
5819are
5820shared between them that are compiled with different options.
5821
5822Example Code and Data Size: These are the sizes for the OS-independent
5823acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5824debug version of the code includes the debug output trace mechanism and
5825has a
5826much larger code and data size.
5827
5828  Previous Release:
5829    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5830    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
5831  Current Release:
5832    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
5833    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
5834
58352) iASL Compiler/Disassembler and Tools:
5836
5837iASL/Disassembler: Added a new option (-da, "disassemble all") to load
5838the
5839namespace from and disassemble an entire group of AML files. Useful for
5840loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
5841and
5842disassembling with one simple command. ACPICA BZ 865. Lin Ming.
5843
5844iASL: Allow multiple invocations of -e option. This change allows
5845multiple
5846uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
5847834.
5848Lin Ming.
5849
5850----------------------------------------
585102 July 2010. Summary of changes for version 20100702:
5852
58531) ACPI CA Core Subsystem:
5854
5855Implemented several updates to the recently added GPE reference count
5856support. The model for "wake" GPEs is changing to give the host OS
5857complete
5858control of these GPEs. Eventually, the ACPICA core will not execute any
5859_PRW
5860methods, since the host already must execute them. Also, additional
5861changes
5862were made to help ensure that the reference counts are kept in proper
5863synchronization with reality. Rafael J. Wysocki.
5864
58651) Ensure that GPEs are not enabled twice during initialization.
58662) Ensure that GPE enable masks stay in sync with the reference count.
58673) Do not inadvertently enable GPEs when writing GPE registers.
58684) Remove the internal wake reference counter and add new AcpiGpeWakeup
5869interface. This interface will set or clear individual GPEs for wakeup.
58705) Remove GpeType argument from AcpiEnable and AcpiDisable. These
5871interfaces
5872are now used for "runtime" GPEs only.
5873
5874Changed the behavior of the GPE install/remove handler interfaces. The
5875GPE
5876is
5877no longer disabled during this process, as it was found to cause problems
5878on
5879some machines. Rafael J. Wysocki.
5880
5881Reverted a change introduced in version 20100528 to enable Embedded
5882Controller multi-byte transfers. This change was found to cause problems
5883with
5884Index Fields and possibly Bank Fields. It will be reintroduced when these
5885problems have been resolved.
5886
5887Fixed a problem with references to Alias objects within Package Objects.
5888A
5889reference to an Alias within the definition of a Package was not always
5890resolved properly. Aliases to objects like Processors, Thermal zones,
5891etc.
5892were resolved to the actual object instead of a reference to the object
5893as
5894it
5895should be. Package objects are only allowed to contain integer, string,
5896buffer, package, and reference objects. Redhat bugzilla 608648.
5897
5898Example Code and Data Size: These are the sizes for the OS-independent
5899acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5900debug version of the code includes the debug output trace mechanism and
5901has a
5902much larger code and data size.
5903
5904  Previous Release:
5905    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5906    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
5907  Current Release:
5908    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
5909    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
5910
59112) iASL Compiler/Disassembler and Tools:
5912
5913iASL: Implemented a new compiler subsystem to allow definition and
5914compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
5915These
5916are called "ACPI Data Tables", and the new compiler is the "Data Table
5917Compiler". This compiler is intended to simplify the existing error-prone
5918process of creating these tables for the BIOS, as well as allowing the
5919disassembly, modification, recompilation, and override of existing ACPI
5920data
5921tables. See the iASL User Guide for detailed information.
5922
5923iASL: Implemented a new Template Generator option in support of the new
5924Data
5925Table Compiler. This option will create examples of all known ACPI tables
5926that can be used as the basis for table development. See the iASL
5927documentation and the -T option.
5928
5929Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
5930Descriptor Table).
5931
5932Updated the Linux makefiles for iASL and AcpiExec to place the generated
5933object files in the local directory so that there can be no collisions
5934between the shared files between them that are generated with different
5935options.
5936
5937Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
5938Use
5939the #define __APPLE__ to enable this support.
5940
5941----------------------------------------
594228 May 2010. Summary of changes for version 20100528:
5943
5944Note: The ACPI 4.0a specification was released on April 5, 2010 and is
5945available at www.acpi.info. This is primarily an errata release.
5946
59471) ACPI CA Core Subsystem:
5948
5949Undefined ACPI tables: We are looking for the definitions for the
5950following
5951ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
5952
5953Implemented support to enable multi-byte transfers for Embedded
5954Controller
5955(EC) operation regions. Previously, the maximum data size passed to the
5956EC
5957operation region handler was a single byte. There are often EC Fields
5958larger
5959than one byte that need to be transferred, and it is useful for the EC
5960driver
5961to lock these as a single transaction. This change enables single
5962transfers
5963larger than 8 bits. This effectively changes the access to the EC space
5964from
5965ByteAcc to AnyAcc, and will probably require changes to the host OS
5966Embedded
5967Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
5968bit
5969transfers. Alexey Starikovskiy, Lin Ming
5970
5971Implemented a performance enhancement for namespace search and access.
5972This
5973change enhances the performance of namespace searches and walks by adding
5974a
5975backpointer to the parent in each namespace node. On large namespaces,
5976this
5977change can improve overall ACPI performance by up to 9X. Adding a pointer
5978to
5979each namespace node increases the overall size of the internal namespace
5980by
5981about 5%, since each namespace entry usually consists of both a namespace
5982node and an ACPI operand object. However, this is the first growth of the
5983namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
5984
5985Implemented a performance optimization that reduces the number of
5986namespace
5987walks. On control method exit, only walk the namespace if the method is
5988known
5989to have created namespace objects outside of its local scope. Previously,
5990the
5991entire namespace was traversed on each control method exit. This change
5992can
5993improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
5994Moore.
5995
5996Added support to truncate I/O addresses to 16 bits for Windows
5997compatibility.
5998Some ASL code has been seen in the field that inadvertently has bits set
5999above bit 15. This feature is optional and is enabled if the BIOS
6000requests
6001any Windows OSI strings. It can also be enabled by the host OS. Matthew
6002Garrett, Bob Moore.
6003
6004Added support to limit the maximum time for the ASL Sleep() operator. To
6005prevent accidental deep sleeps, limit the maximum time that Sleep() will
6006actually sleep. Configurable, the default maximum is two seconds. ACPICA
6007bugzilla 854.
6008
6009Added run-time validation support for the _WDG and_WED Microsoft
6010predefined
6011methods. These objects are defined by "Windows Instrumentation", and are
6012not
6013part of the ACPI spec. ACPICA BZ 860.
6014
6015Expanded all statistic counters used during namespace and device
6016initialization from 16 to 32 bits in order to support very large
6017namespaces.
6018
6019Replaced all instances of %d in printf format specifiers with %u since
6020nearly
6021all integers in ACPICA are unsigned.
6022
6023Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
6024returned
6025as AE_NO_HANDLER.
6026
6027Example Code and Data Size: These are the sizes for the OS-independent
6028acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6029debug version of the code includes the debug output trace mechanism and
6030has a
6031much larger code and data size.
6032
6033  Previous Release:
6034    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
6035    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
6036  Current Release:
6037    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6038    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
6039
60402) iASL Compiler/Disassembler and Tools:
6041
6042iASL: Added compiler support for the _WDG and_WED Microsoft predefined
6043methods. These objects are defined by "Windows Instrumentation", and are
6044not
6045part of the ACPI spec. ACPICA BZ 860.
6046
6047AcpiExec: added option to disable the memory tracking mechanism. The -dt
6048option will disable the tracking mechanism, which improves performance
6049considerably.
6050
6051AcpiExec: Restructured the command line options into -d (disable) and -e
6052(enable) options.
6053
6054----------------------------------------
605528 April 2010. Summary of changes for version 20100428:
6056
60571) ACPI CA Core Subsystem:
6058
6059Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
6060including FADT-based and GPE Block Devices, execute any _PRW methods in
6061the
6062new table, and process any _Lxx/_Exx GPE methods in the new table. Any
6063runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
6064immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
6065Devices. Provides compatibility with other ACPI implementations. Two new
6066files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
6067Moore.
6068
6069Fixed a regression introduced in version 20100331 within the table
6070manager
6071where initial table loading could fail. This was introduced in the fix
6072for
6073AcpiReallocateRootTable. Also, renamed some of fields in the table
6074manager
6075data structures to clarify their meaning and use.
6076
6077Fixed a possible allocation overrun during internal object copy in
6078AcpiUtCopySimpleObject. The original code did not correctly handle the
6079case
6080where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
6081847.
6082
6083Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
6084possible access beyond end-of-allocation. Also, now fully validate
6085descriptor
6086(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
6087
6088Example Code and Data Size: These are the sizes for the OS-independent
6089acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6090debug version of the code includes the debug output trace mechanism and
6091has a
6092much larger code and data size.
6093
6094  Previous Release:
6095    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
6096    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
6097  Current Release:
6098    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
6099    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
6100
61012) iASL Compiler/Disassembler and Tools:
6102
6103iASL: Implemented Min/Max/Len/Gran validation for address resource
6104descriptors. This change implements validation for the address fields
6105that
6106are common to all address-type resource descriptors. These checks are
6107implemented: Checks for valid Min/Max, length within the Min/Max window,
6108valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
6109per
6110table 6-40 in the ACPI 4.0a specification. Also split the large
6111aslrestype1.c
6112and aslrestype2.c files into five new files. ACPICA BZ 840.
6113
6114iASL: Added support for the _Wxx predefined names. This support was
6115missing
6116and these names were not recognized by the compiler as valid predefined
6117names. ACPICA BZ 851.
6118
6119iASL: Added an error for all predefined names that are defined to return
6120no
6121value and thus must be implemented as Control Methods. These include all
6122of
6123the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
6124names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
6125
6126iASL: Implemented the -ts option to emit hex AML data in ASL format, as
6127an
6128ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
6129be
6130dynamically loaded via the Load() operator. Also cleaned up output for
6131the
6132-
6133ta and -tc options. ACPICA BZ 853.
6134
6135Tests: Added a new file with examples of extended iASL error checking.
6136Demonstrates the advanced error checking ability of the iASL compiler.
6137Available at tests/misc/badcode.asl.
6138
6139----------------------------------------
614031 March 2010. Summary of changes for version 20100331:
6141
61421) ACPI CA Core Subsystem:
6143
6144Completed a major update for the GPE support in order to improve support
6145for
6146shared GPEs and to simplify both host OS and ACPICA code. Added a
6147reference
6148count mechanism to support shared GPEs that require multiple device
6149drivers.
6150Several external interfaces have changed. One external interface has been
6151removed. One new external interface was added. Most of the GPE external
6152interfaces now use the GPE spinlock instead of the events mutex (and the
6153Flags parameter for many GPE interfaces has been removed.) See the
6154updated
6155ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
6156Rafael
6157Wysocki. ACPICA BZ 831.
6158
6159Changed:
6160    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
6161Removed:
6162    AcpiSetGpeType
6163New:
6164    AcpiSetGpe
6165
6166Implemented write support for DataTable operation regions. These regions
6167are
6168defined via the DataTableRegion() operator. Previously, only read support
6169was
6170implemented. The ACPI specification allows DataTableRegions to be
6171read/write,
6172however.
6173
6174Implemented a new subsystem option to force a copy of the DSDT to local
6175memory. Optionally copy the entire DSDT to local memory (instead of
6176simply
6177mapping it.) There are some (albeit very rare) BIOSs that corrupt or
6178replace
6179the original DSDT, creating the need for this option. Default is FALSE,
6180do
6181not copy the DSDT.
6182
6183Implemented detection of a corrupted or replaced DSDT. This change adds
6184support to detect a DSDT that has been corrupted and/or replaced from
6185outside
6186the OS (by firmware). This is typically catastrophic for the system, but
6187has
6188been seen on some machines. Once this problem has been detected, the DSDT
6189copy option can be enabled via system configuration. Lin Ming, Bob Moore.
6190
6191Fixed two problems with AcpiReallocateRootTable during the root table
6192copy.
6193When copying the root table to the new allocation, the length used was
6194incorrect. The new size was used instead of the current table size,
6195meaning
6196too much data was copied. Also, the count of available slots for ACPI
6197tables
6198was not set correctly. Alexey Starikovskiy, Bob Moore.
6199
6200Example Code and Data Size: These are the sizes for the OS-independent
6201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6202debug version of the code includes the debug output trace mechanism and
6203has a
6204much larger code and data size.
6205
6206  Previous Release:
6207    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
6208    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
6209  Current Release:
6210    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
6211    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
6212
62132) iASL Compiler/Disassembler and Tools:
6214
6215iASL: Implement limited typechecking for values returned from predefined
6216control methods. The type of any returned static (unnamed) object is now
6217validated. For example, Return(1). ACPICA BZ 786.
6218
6219iASL: Fixed a predefined name object verification regression. Fixes a
6220problem
6221introduced in version 20100304. An error is incorrectly generated if a
6222predefined name is declared as a static named object with a value defined
6223using the keywords "Zero", "One", or "Ones". Lin Ming.
6224
6225iASL: Added Windows 7 support for the -g option (get local ACPI tables)
6226by
6227reducing the requested registry access rights. ACPICA BZ 842.
6228
6229Disassembler: fixed a possible fault when generating External()
6230statements.
6231Introduced in commit ae7d6fd: Properly handle externals with parent-
6232prefix
6233(carat). Fixes a string length allocation calculation. Lin Ming.
6234
6235----------------------------------------
623604 March 2010. Summary of changes for version 20100304:
6237
62381) ACPI CA Core Subsystem:
6239
6240Fixed a possible problem with the AML Mutex handling function
6241AcpiExReleaseMutex where the function could fault under the very rare
6242condition when the interpreter has blocked, the interpreter lock is
6243released,
6244the interpreter is then reentered via the same thread, and attempts to
6245acquire an AML mutex that was previously acquired. FreeBSD report 140979.
6246Lin
6247Ming.
6248
6249Implemented additional configuration support for the AML "Debug Object".
6250Output from the debug object can now be enabled via a global variable,
6251AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
6252debugging.
6253This debug output is now available in the release version of ACPICA
6254instead
6255of just the debug version. Also, the entire debug output module can now
6256be
6257configured out of the ACPICA build if desired. One new file added,
6258executer/exdebug.c. Lin Ming, Bob Moore.
6259
6260Added header support for the ACPI MCHI table (Management Controller Host
6261Interface Table). This table was added in ACPI 4.0, but the defining
6262document
6263has only recently become available.
6264
6265Standardized output of integer values for ACPICA warnings/errors. Always
6266use
62670x prefix for hex output, always use %u for unsigned integer decimal
6268output.
6269Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
6270400
6271invocations.) These invocations were converted from the original
6272ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
6273
6274Example Code and Data Size: These are the sizes for the OS-independent
6275acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6276debug version of the code includes the debug output trace mechanism and
6277has a
6278much larger code and data size.
6279
6280  Previous Release:
6281    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
6282    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
6283  Current Release:
6284    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
6285    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
6286
62872) iASL Compiler/Disassembler and Tools:
6288
6289iASL: Implemented typechecking support for static (non-control method)
6290predefined named objects that are declared with the Name() operator. For
6291example, the type of this object is now validated to be of type Integer:
6292Name(_BBN, 1). This change migrates the compiler to using the core
6293predefined
6294name table instead of maintaining a local version. Added a new file,
6295aslpredef.c. ACPICA BZ 832.
6296
6297Disassembler: Added support for the ACPI 4.0 MCHI table.
6298
6299----------------------------------------
630021 January 2010. Summary of changes for version 20100121:
6301
63021) ACPI CA Core Subsystem:
6303
6304Added the 2010 copyright to all module headers and signons. This affects
6305virtually every file in the ACPICA core subsystem, the iASL compiler, the
6306tools/utilities, and the test suites.
6307
6308Implemented a change to the AcpiGetDevices interface to eliminate
6309unnecessary
6310invocations of the _STA method. In the case where a specific _HID is
6311requested, do not run _STA until a _HID match is found. This eliminates
6312potentially dozens of _STA calls during a search for a particular
6313device/HID,
6314which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
6315
6316Implemented an additional repair for predefined method return values.
6317Attempt
6318to repair unexpected NULL elements within returned Package objects.
6319Create
6320an
6321Integer of value zero, a NULL String, or a zero-length Buffer as
6322appropriate.
6323ACPICA BZ 818. Lin Ming, Bob Moore.
6324
6325Removed the obsolete ACPI_INTEGER data type. This type was introduced as
6326the
6327code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
6328(with
632964-bit AML integers). It is now obsolete and this change removes it from
6330the
6331ACPICA code base, replaced by UINT64. The original typedef has been
6332retained
6333for now for compatibility with existing device driver code. ACPICA BZ
6334824.
6335
6336Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
6337in
6338the parse tree object.
6339
6340Added additional warning options for the gcc-4 generation. Updated the
6341source
6342accordingly. This includes some code restructuring to eliminate
6343unreachable
6344code, elimination of some gotos, elimination of unused return values,
6345some
6346additional casting, and removal of redundant declarations.
6347
6348Example Code and Data Size: These are the sizes for the OS-independent
6349acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6350debug version of the code includes the debug output trace mechanism and
6351has a
6352much larger code and data size.
6353
6354  Previous Release:
6355    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6356    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6357  Current Release:
6358    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
6359    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
6360
63612) iASL Compiler/Disassembler and Tools:
6362
6363No functional changes for this release.
6364
6365----------------------------------------
636614 December 2009. Summary of changes for version 20091214:
6367
63681) ACPI CA Core Subsystem:
6369
6370Enhanced automatic data type conversions for predefined name repairs.
6371This
6372change expands the automatic repairs/conversions for predefined name
6373return
6374values to make Integers, Strings, and Buffers fully interchangeable.
6375Also,
6376a
6377Buffer can be converted to a Package of Integers if necessary. The
6378nsrepair.c
6379module was completely restructured. Lin Ming, Bob Moore.
6380
6381Implemented automatic removal of null package elements during predefined
6382name
6383repairs. This change will automatically remove embedded and trailing NULL
6384package elements from returned package objects that are defined to
6385contain
6386a
6387variable number of sub-packages. The driver is then presented with a
6388package
6389with no null elements to deal with. ACPICA BZ 819.
6390
6391Implemented a repair for the predefined _FDE and _GTM names. The expected
6392return value for both names is a Buffer of 5 DWORDs. This repair fixes
6393two
6394possible problems (both seen in the field), where a package of integers
6395is
6396returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
6397Kim.
6398
6399Implemented additional module-level code support. This change will
6400properly
6401execute module-level code that is not at the root of the namespace (under
6402a
6403Device object, etc.). Now executes the code within the current scope
6404instead
6405of the root. ACPICA BZ 762. Lin Ming.
6406
6407Fixed possible mutex acquisition errors when running _REG methods. Fixes
6408a
6409problem where mutex errors can occur when running a _REG method that is
6410in
6411the same scope as a method-defined operation region or an operation
6412region
6413under a module-level IF block. This type of code is rare, so the problem
6414has
6415not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
6416
6417Fixed a possible memory leak during module-level code execution. An
6418object
6419could be leaked for each block of executed module-level code if the
6420interpreter slack mode is enabled This change deletes any implicitly
6421returned
6422object from the module-level code block. Lin Ming.
6423
6424Removed messages for successful predefined repair(s). The repair
6425mechanism
6426was considered too wordy. Now, messages are only unconditionally emitted
6427if
6428the return object cannot be repaired. Existing messages for successful
6429repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
6430827.
6431
6432Example Code and Data Size: These are the sizes for the OS-independent
6433acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6434debug version of the code includes the debug output trace mechanism and
6435has a
6436much larger code and data size.
6437
6438  Previous Release:
6439    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
6440    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
6441  Current Release:
6442    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6443    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6444
64452) iASL Compiler/Disassembler and Tools:
6446
6447iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
6448files
6449were no longer automatically removed at the termination of the compile.
6450
6451acpiexec: Implemented the -f option to specify default region fill value.
6452This option specifies the value used to initialize buffers that simulate
6453operation regions. Default value is zero. Useful for debugging problems
6454that
6455depend on a specific initial value for a region or field.
6456
6457----------------------------------------
645812 November 2009. Summary of changes for version 20091112:
6459
64601) ACPI CA Core Subsystem:
6461
6462Implemented a post-order callback to AcpiWalkNamespace. The existing
6463interface only has a pre-order callback. This change adds an additional
6464parameter for a post-order callback which will be more useful for bus
6465scans.
6466ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
6467
6468Modified the behavior of the operation region memory mapping cache for
6469SystemMemory. Ensure that the memory mappings created for operation
6470regions
6471do not cross 4K page boundaries. Crossing a page boundary while mapping
6472regions can cause kernel warnings on some hosts if the pages have
6473different
6474attributes. Such regions are probably BIOS bugs, and this is the
6475workaround.
6476Linux BZ 14445. Lin Ming.
6477
6478Implemented an automatic repair for predefined methods that must return
6479sorted lists. This change will repair (by sorting) packages returned by
6480_ALR,
6481_PSS, and _TSS. Drivers can now assume that the packages are correctly
6482sorted
6483and do not contain NULL package elements. Adds one new file,
6484namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
6485
6486Fixed a possible fault during predefined name validation if a return
6487Package
6488object contains NULL elements. Also adds a warning if a NULL element is
6489followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
6490may
6491include repair or removal of all such NULL elements where possible.
6492
6493Implemented additional module-level executable AML code support. This
6494change
6495will execute module-level code that is not at the root of the namespace
6496(under a Device object, etc.) at table load time. Module-level executable
6497AML
6498code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
6499
6500Implemented a new internal function to create Integer objects. This
6501function
6502simplifies miscellaneous object creation code. ACPICA BZ 823.
6503
6504Reduced the severity of predefined repair messages, Warning to Info.
6505Since
6506the object was successfully repaired, a warning is too severe. Reduced to
6507an
6508info message for now. These messages may eventually be changed to debug-
6509only.
6510ACPICA BZ 812.
6511
6512Example Code and Data Size: These are the sizes for the OS-independent
6513acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6514debug version of the code includes the debug output trace mechanism and
6515has a
6516much larger code and data size.
6517
6518  Previous Release:
6519    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
6520    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
6521  Current Release:
6522    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
6523    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
6524
65252) iASL Compiler/Disassembler and Tools:
6526
6527iASL: Implemented Switch() with While(1) so that Break works correctly.
6528This
6529change correctly implements the Switch operator with a surrounding
6530While(1)
6531so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
6532
6533iASL: Added a message if a package initializer list is shorter than
6534package
6535length. Adds a new remark for a Package() declaration if an initializer
6536list
6537exists, but is shorter than the declared length of the package. Although
6538technically legal, this is probably a coding error and it is seen in the
6539field. ACPICA BZ 815. Lin Ming, Bob Moore.
6540
6541iASL: Fixed a problem where the compiler could fault after the maximum
6542number
6543of errors was reached (200).
6544
6545acpixtract: Fixed a possible warning for pointer cast if the compiler
6546warning
6547level set very high.
6548
6549----------------------------------------
655013 October 2009. Summary of changes for version 20091013:
6551
65521) ACPI CA Core Subsystem:
6553
6554Fixed a problem where an Operation Region _REG method could be executed
6555more
6556than once. If a custom address space handler is installed by the host
6557before
6558the "initialize operation regions" phase of the ACPICA initialization,
6559any
6560_REG methods for that address space could be executed twice. This change
6561fixes the problem. ACPICA BZ 427. Lin Ming.
6562
6563Fixed a possible memory leak for the Scope() ASL operator. When the exact
6564invocation of "Scope(\)" is executed (change scope to root), one internal
6565operand object was leaked. Lin Ming.
6566
6567Implemented a run-time repair for the _MAT predefined method. If the _MAT
6568return value is defined as a Field object in the AML, and the field
6569size is less than or equal to the default width of an integer (32 or
657064),_MAT
6571can incorrectly return an Integer instead of a Buffer. ACPICA now
6572automatically repairs this problem. ACPICA BZ 810.
6573
6574Implemented a run-time repair for the _BIF and _BIX predefined methods.
6575The
6576"OEM Information" field is often incorrectly returned as an Integer with
6577value zero if the field is not supported by the platform. This is due to
6578an
6579ambiguity in the ACPI specification. The field should always be a string.
6580ACPICA now automatically repairs this problem by returning a NULL string
6581within the returned Package. ACPICA BZ 807.
6582
6583Example Code and Data Size: These are the sizes for the OS-independent
6584acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6585debug version of the code includes the debug output trace mechanism and
6586has a
6587much larger code and data size.
6588
6589  Previous Release:
6590    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
6591    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
6592  Current Release:
6593    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
6594    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
6595
65962) iASL Compiler/Disassembler and Tools:
6597
6598Disassembler: Fixed a problem where references to external symbols that
6599contained one or more parent-prefixes (carats) were not handled
6600correctly,
6601possibly causing a fault. ACPICA BZ 806. Lin Ming.
6602
6603Disassembler: Restructured the code so that all functions that handle
6604external symbols are in a single module. One new file is added,
6605common/dmextern.c.
6606
6607AML Debugger: Added a max count argument for the Batch command (which
6608executes multiple predefined methods within the namespace.)
6609
6610iASL: Updated the compiler documentation (User Reference.) Available at
6611http://www.acpica.org/documentation/. ACPICA BZ 750.
6612
6613AcpiXtract: Updated for Lint and other formatting changes. Close all open
6614files.
6615
6616----------------------------------------
661703 September 2009. Summary of changes for version 20090903:
6618
66191) ACPI CA Core Subsystem:
6620
6621For Windows Vista compatibility, added the automatic execution of an _INI
6622method located at the namespace root (\_INI). This method is executed at
6623table load time. This support is in addition to the automatic execution
6624of
6625\_SB._INI. Lin Ming.
6626
6627Fixed a possible memory leak in the interpreter for AML package objects
6628if
6629the package initializer list is longer than the defined size of the
6630package.
6631This apparently can only happen if the BIOS changes the package size on
6632the
6633fly (seen in a _PSS object), as ASL compilers do not allow this. The
6634interpreter will truncate the package to the defined size (and issue an
6635error
6636message), but previously could leave the extra objects undeleted if they
6637were
6638pre-created during the argument processing (such is the case if the
6639package
6640consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
6641
6642Fixed a problem seen when a Buffer or String is stored to itself via ASL.
6643This has been reported in the field. Previously, ACPICA would zero out
6644the
6645buffer/string. Now, the operation is treated as a noop. Provides Windows
6646compatibility. ACPICA BZ 803. Lin Ming.
6647
6648Removed an extraneous error message for ASL constructs of the form
6649Store(LocalX,LocalX) when LocalX is uninitialized. These curious
6650statements
6651are seen in many BIOSs and are once again treated as NOOPs and no error
6652is
6653emitted when they are encountered. ACPICA BZ 785.
6654
6655Fixed an extraneous warning message if a _DSM reserved method returns a
6656Package object. _DSM can return any type of object, so validation on the
6657return type cannot be performed. ACPICA BZ 802.
6658
6659Example Code and Data Size: These are the sizes for the OS-independent
6660acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6661debug version of the code includes the debug output trace mechanism and
6662has a
6663much larger code and data size.
6664
6665  Previous Release:
6666    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
6667    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
6668  Current Release:
6669    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
6670    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
6671
66722) iASL Compiler/Disassembler and Tools:
6673
6674iASL: Fixed a problem with the use of the Alias operator and Resource
6675Templates. The correct alias is now constructed and no error is emitted.
6676ACPICA BZ 738.
6677
6678iASL: Implemented the -I option to specify additional search directories
6679for
6680include files. Allows multiple additional search paths for include files.
6681Directories are searched in the order specified on the command line
6682(after
6683the local directory is searched.) ACPICA BZ 800.
6684
6685iASL: Fixed a problem where the full pathname for include files was not
6686emitted for warnings/errors. This caused the IDE support to not work
6687properly. ACPICA BZ 765.
6688
6689iASL: Implemented the -@ option to specify a Windows-style response file
6690containing additional command line options. ACPICA BZ 801.
6691
6692AcpiExec: Added support to load multiple AML files simultaneously (such
6693as
6694a
6695DSDT and multiple SSDTs). Also added support for wildcards within the AML
6696pathname. These features allow all machine tables to be easily loaded and
6697debugged together. ACPICA BZ 804.
6698
6699Disassembler: Added missing support for disassembly of HEST table Error
6700Bank
6701subtables.
6702
6703----------------------------------------
670430 July 2009. Summary of changes for version 20090730:
6705
6706The ACPI 4.0 implementation for ACPICA is complete with this release.
6707
67081) ACPI CA Core Subsystem:
6709
6710ACPI 4.0: Added header file support for all new and changed ACPI tables.
6711Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
6712new
6713for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
6714BERT,
6715EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
6716There
6717have been some ACPI 4.0 changes to other existing tables. Split the large
6718actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
6719
6720ACPI 4.0: Implemented predefined name validation for all new names. There
6721are
672231 new names in ACPI 4.0. The predefined validation module was split into
6723two
6724files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
6725
6726Implemented support for so-called "module-level executable code". This is
6727executable AML code that exists outside of any control method and is
6728intended
6729to be executed at table load time. Although illegal since ACPI 2.0, this
6730type
6731of code still exists and is apparently still being created. Blocks of
6732this
6733code are now detected and executed as intended. Currently, the code
6734blocks
6735must exist under either an If, Else, or While construct; these are the
6736typical cases seen in the field. ACPICA BZ 762. Lin Ming.
6737
6738Implemented an automatic dynamic repair for predefined names that return
6739nested Package objects. This applies to predefined names that are defined
6740to
6741return a variable-length Package of sub-packages. If the number of sub-
6742packages is one, BIOS code is occasionally seen that creates a simple
6743single
6744package with no sub-packages. This code attempts to fix the problem by
6745wrapping a new package object around the existing package. These methods
6746can
6747be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
6748BZ
6749790.
6750
6751Fixed a regression introduced in 20090625 for the AcpiGetDevices
6752interface.
6753The _HID/_CID matching was broken and no longer matched IDs correctly.
6754ACPICA
6755BZ 793.
6756
6757Fixed a problem with AcpiReset where the reset would silently fail if the
6758register was one of the protected I/O ports. AcpiReset now bypasses the
6759port
6760validation mechanism. This may eventually be driven into the
6761AcpiRead/Write
6762interfaces.
6763
6764Fixed a regression related to the recent update of the AcpiRead/Write
6765interfaces. A sleep/suspend could fail if the optional PM2 Control
6766register
6767does not exist during an attempt to write the Bus Master Arbitration bit.
6768(However, some hosts already delete the code that writes this bit, and
6769the
6770code may in fact be obsolete at this date.) ACPICA BZ 799.
6771
6772Fixed a problem where AcpiTerminate could fault if inadvertently called
6773twice
6774in succession. ACPICA BZ 795.
6775
6776Example Code and Data Size: These are the sizes for the OS-independent
6777acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6778debug version of the code includes the debug output trace mechanism and
6779has a
6780much larger code and data size.
6781
6782  Previous Release:
6783    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
6784    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
6785  Current Release:
6786    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
6787    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
6788
67892) iASL Compiler/Disassembler and Tools:
6790
6791ACPI 4.0: Implemented disassembler support for all new ACPI tables and
6792changes to existing tables. ACPICA BZ 775.
6793
6794----------------------------------------
679525 June 2009. Summary of changes for version 20090625:
6796
6797The ACPI 4.0 Specification was released on June 16 and is available at
6798www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
6799continue for the next few releases.
6800
68011) ACPI CA Core Subsystem:
6802
6803ACPI 4.0: Implemented interpreter support for the IPMI operation region
6804address space. Includes support for bi-directional data buffers and an
6805IPMI
6806address space handler (to be installed by an IPMI device driver.) ACPICA
6807BZ
6808773. Lin Ming.
6809
6810ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
6811Includes
6812support in both the header files and the disassembler.
6813
6814Completed a major update for the AcpiGetObjectInfo external interface.
6815Changes include:
6816 - Support for variable, unlimited length HID, UID, and CID strings.
6817 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
6818etc.)
6819 - Call the _SxW power methods on behalf of a device object.
6820 - Determine if a device is a PCI root bridge.
6821 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
6822These changes will require an update to all callers of this interface.
6823See
6824the updated ACPICA Programmer Reference for details. One new source file
6825has
6826been added - utilities/utids.c. ACPICA BZ 368, 780.
6827
6828Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
6829transfers. The Value parameter has been extended from 32 bits to 64 bits
6830in
6831order to support new ACPI 4.0 tables. These changes will require an
6832update
6833to
6834all callers of these interfaces. See the ACPICA Programmer Reference for
6835details. ACPICA BZ 768.
6836
6837Fixed several problems with AcpiAttachData. The handler was not invoked
6838when
6839the host node was deleted. The data sub-object was not automatically
6840deleted
6841when the host node was deleted. The interface to the handler had an
6842unused
6843parameter, this was removed. ACPICA BZ 778.
6844
6845Enhanced the function that dumps ACPI table headers. All non-printable
6846characters in the string fields are now replaced with '?' (Signature,
6847OemId,
6848OemTableId, and CompilerId.) ACPI tables with non-printable characters in
6849these fields are occasionally seen in the field. ACPICA BZ 788.
6850
6851Fixed a problem with predefined method repair code where the code that
6852attempts to repair/convert an object of incorrect type is only executed
6853on
6854the first time the predefined method is called. The mechanism that
6855disables
6856warnings on subsequent calls was interfering with the repair mechanism.
6857ACPICA BZ 781.
6858
6859Fixed a possible memory leak in the predefined validation/repair code
6860when
6861a
6862buffer is automatically converted to an expected string object.
6863
6864Removed obsolete 16-bit files from the distribution and from the current
6865git
6866tree head. ACPICA BZ 776.
6867
6868Example Code and Data Size: These are the sizes for the OS-independent
6869acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6870debug version of the code includes the debug output trace mechanism and
6871has a
6872much larger code and data size.
6873
6874  Previous Release:
6875    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
6876    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
6877  Current Release:
6878    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
6879    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
6880
68812) iASL Compiler/Disassembler and Tools:
6882
6883ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
6884operation region keyword. ACPICA BZ 771, 772. Lin Ming.
6885
6886ACPI 4.0: iASL - implemented compile-time validation support for all new
6887predefined names and control methods (31 total). ACPICA BZ 769.
6888
6889----------------------------------------
689021 May 2009. Summary of changes for version 20090521:
6891
68921) ACPI CA Core Subsystem:
6893
6894Disabled the preservation of the SCI enable bit in the PM1 control
6895register.
6896The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
6897to
6898be
6899a "preserved" bit - "OSPM always preserves this bit position", section
69004.7.3.2.1. However, some machines fail if this bit is in fact preserved
6901because the bit needs to be explicitly set by the OS as a workaround. No
6902machines fail if the bit is not preserved. Therefore, ACPICA no longer
6903attempts to preserve this bit.
6904
6905Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
6906incorrectly formed _PRT package could cause a fault. Added validation to
6907ensure that each package element is actually a sub-package.
6908
6909Implemented a new interface to install or override a single control
6910method,
6911AcpiInstallMethod. This interface is useful when debugging in order to
6912repair
6913an existing method or to install a missing method without having to
6914override
6915the entire ACPI table. See the ACPICA Programmer Reference for use and
6916examples. Lin Ming, Bob Moore.
6917
6918Fixed several reference count issues with the DdbHandle object that is
6919created from a Load or LoadTable operator. Prevent premature deletion of
6920the
6921object. Also, mark the object as invalid once the table has been
6922unloaded.
6923This is needed because the handle itself may not be deleted after the
6924table
6925unload, depending on whether it has been stored in a named object by the
6926caller. Lin Ming.
6927
6928Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
6929mutexes of the same sync level are acquired but then not released in
6930strict
6931opposite order, the internally maintained Current Sync Level becomes
6932confused
6933and can cause subsequent execution errors. ACPICA BZ 471.
6934
6935Changed the allowable release order for ASL mutex objects. The ACPI 4.0
6936specification has been changed to make the SyncLevel for mutex objects
6937more
6938useful. When releasing a mutex, the SyncLevel of the mutex must now be
6939the
6940same as the current sync level. This makes more sense than the previous
6941rule
6942(SyncLevel less than or equal). This change updates the code to match the
6943specification.
6944
6945Fixed a problem with the local version of the AcpiOsPurgeCache function.
6946The
6947(local) cache must be locked during all cache object deletions. Andrew
6948Baumann.
6949
6950Updated the Load operator to use operation region interfaces. This
6951replaces
6952direct memory mapping with region access calls. Now, all region accesses
6953go
6954through the installed region handler as they should.
6955
6956Simplified and optimized the NsGetNextNode function. Reduced parameter
6957count
6958and reduced code for this frequently used function.
6959
6960Example Code and Data Size: These are the sizes for the OS-independent
6961acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6962debug version of the code includes the debug output trace mechanism and
6963has a
6964much larger code and data size.
6965
6966  Previous Release:
6967    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
6968    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
6969  Current Release:
6970    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
6971    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
6972
69732) iASL Compiler/Disassembler and Tools:
6974
6975Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
6976problems
6977with sub-table disassembly and handling invalid sub-tables. Attempt
6978recovery
6979after an invalid sub-table ID.
6980
6981----------------------------------------
698222 April 2009. Summary of changes for version 20090422:
6983
69841) ACPI CA Core Subsystem:
6985
6986Fixed a compatibility issue with the recently released I/O port
6987protection
6988mechanism. For windows compatibility, 1) On a port protection violation,
6989simply ignore the request and do not return an exception (allow the
6990control
6991method to continue execution.) 2) If only part of the request overlaps a
6992protected port, read/write the individual ports that are not protected.
6993Linux
6994BZ 13036. Lin Ming
6995
6996Enhanced the execution of the ASL/AML BreakPoint operator so that it
6997actually
6998breaks into the AML debugger if the debugger is present. This matches the
6999ACPI-defined behavior.
7000
7001Fixed several possible warnings related to the use of the configurable
7002ACPI_THREAD_ID. This type can now be configured as either an integer or a
7003pointer with no warnings. Also fixes several warnings in printf-like
7004statements for the 64-bit build when the type is configured as a pointer.
7005ACPICA BZ 766, 767.
7006
7007Fixed a number of possible warnings when compiling with gcc 4+ (depending
7008on
7009warning options.) Examples include printf formats, aliasing, unused
7010globals,
7011missing prototypes, missing switch default statements, use of non-ANSI
7012library functions, use of non-ANSI constructs. See generate/unix/Makefile
7013for
7014a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
7015
7016Example Code and Data Size: These are the sizes for the OS-independent
7017acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7018debug version of the code includes the debug output trace mechanism and
7019has a
7020much larger code and data size.
7021
7022  Previous Release:
7023    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
7024    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
7025  Current Release:
7026    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
7027    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
7028
70292) iASL Compiler/Disassembler and Tools:
7030
7031iASL: Fixed a generation warning from Bison 2.3 and fixed several
7032warnings
7033on
7034the 64-bit build.
7035
7036iASL: Fixed a problem where the Unix/Linux versions of the compiler could
7037not
7038correctly digest Windows/DOS formatted files (with CR/LF).
7039
7040iASL: Added a new option for "quiet mode" (-va) that produces only the
7041compilation summary, not individual errors and warnings. Useful for large
7042batch compilations.
7043
7044AcpiExec: Implemented a new option (-z) to enable a forced
7045semaphore/mutex
7046timeout that can be used to detect hang conditions during execution of
7047AML
7048code (includes both internal semaphores and AML-defined mutexes and
7049events.)
7050
7051Added new makefiles for the generation of acpica in a generic unix-like
7052environment. These makefiles are intended to generate the acpica tools
7053and
7054utilities from the original acpica git source tree structure.
7055
7056Test Suites: Updated and cleaned up the documentation files. Updated the
7057copyrights to 2009, affecting all source files. Use the new version of
7058iASL
7059with quiet mode. Increased the number of available semaphores in the
7060Windows
7061OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
7062added
7063an alternate implementation of the semaphore timeout to allow aslts to
7064execute fully on Cygwin.
7065
7066----------------------------------------
706720 March 2009. Summary of changes for version 20090320:
7068
70691) ACPI CA Core Subsystem:
7070
7071Fixed a possible race condition between AcpiWalkNamespace and dynamic
7072table
7073unloads. Added a reader/writer locking mechanism to allow multiple
7074concurrent
7075namespace walks (readers), but block a dynamic table unload until it can
7076gain
7077exclusive write access to the namespace. This fixes a problem where a
7078table
7079unload could (possibly catastrophically) delete the portion of the
7080namespace
7081that is currently being examined by a walk. Adds a new file, utlock.c,
7082that
7083implements the reader/writer lock mechanism. ACPICA BZ 749.
7084
7085Fixed a regression introduced in version 20090220 where a change to the
7086FADT
7087handling could cause the ACPICA subsystem to access non-existent I/O
7088ports.
7089
7090Modified the handling of FADT register and table (FACS/DSDT) addresses.
7091The
7092FADT can contain both 32-bit and 64-bit versions of these addresses.
7093Previously, the 64-bit versions were favored, meaning that if both 32 and
709464
7095versions were valid, but not equal, the 64-bit version was used. This was
7096found to cause some machines to fail. Now, in this case, the 32-bit
7097version
7098is used instead. This now matches the Windows behavior.
7099
7100Implemented a new mechanism to protect certain I/O ports. Provides
7101Microsoft
7102compatibility and protects the standard PC I/O ports from access via AML
7103code. Adds a new file, hwvalid.c
7104
7105Fixed a possible extraneous warning message from the FADT support. The
7106message warns of a 32/64 length mismatch between the legacy and GAS
7107definitions for a register.
7108
7109Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
7110is
7111made obsolete by the port protection mechanism above. It was previously
7112used
7113to validate the entire address range of an operation region, which could
7114be
7115incorrect if the range included illegal ports, but fields within the
7116operation region did not actually access those ports. Validation is now
7117performed on a per-field basis instead of the entire region.
7118
7119Modified the handling of the PM1 Status Register ignored bit (bit 11.)
7120Ignored bits must be "preserved" according to the ACPI spec. Usually,
7121this
7122means a read/modify/write when writing to the register. However, for
7123status
7124registers, writing a one means clear the event. Writing a zero means
7125preserve
7126the event (do not clear.) This behavior is clarified in the ACPI 4.0
7127spec,
7128and the ACPICA code now simply always writes a zero to the ignored bit.
7129
7130Modified the handling of ignored bits for the PM1 A/B Control Registers.
7131As
7132per the ACPI specification, for the control registers, preserve
7133(read/modify/write) all bits that are defined as either reserved or
7134ignored.
7135
7136Updated the handling of write-only bits in the PM1 A/B Control Registers.
7137When reading the register, zero the write-only bits as per the ACPI spec.
7138ACPICA BZ 443. Lin Ming.
7139
7140Removed "Linux" from the list of supported _OSI strings. Linux no longer
7141wants to reply true to this request. The Windows strings are the only
7142paths
7143through the AML that are tested and known to work properly.
7144
7145  Previous Release:
7146    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
7147    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
7148  Current Release:
7149    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
7150    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
7151
71522) iASL Compiler/Disassembler and Tools:
7153
7154Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
7155and
7156aetables.c
7157
7158----------------------------------------
715920 February 2009. Summary of changes for version 20090220:
7160
71611) ACPI CA Core Subsystem:
7162
7163Optimized the ACPI register locking. Removed locking for reads from the
7164ACPI
7165bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
7166is
7167not required when reading the single-bit registers. The
7168AcpiGetRegisterUnlocked function is no longer needed and has been
7169removed.
7170This will improve performance for reads on these registers. ACPICA BZ
7171760.
7172
7173Fixed the parameter validation for AcpiRead/Write. Now return
7174AE_BAD_PARAMETER if the input register pointer is null, and
7175AE_BAD_ADDRESS
7176if
7177the register has an address of zero. Previously, these cases simply
7178returned
7179AE_OK. For optional registers such as PM1B status/enable/control, the
7180caller
7181should check for a valid register address before calling. ACPICA BZ 748.
7182
7183Renamed the external ACPI bit register access functions. Renamed
7184AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
7185functions. The new names are AcpiReadBitRegister and
7186AcpiWriteBitRegister.
7187Also, restructured the code for these functions by simplifying the code
7188path
7189and condensing duplicate code to reduce code size.
7190
7191Added new functions to transparently handle the possibly split PM1 A/B
7192registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
7193functions
7194now handle the split registers for PM1 Status, Enable, and Control.
7195ACPICA
7196BZ
7197746.
7198
7199Added a function to handle the PM1 control registers,
7200AcpiHwWritePm1Control.
7201This function writes both of the PM1 control registers (A/B). These
7202registers
7203are different than the PM1 A/B status and enable registers in that
7204different
7205values can be written to the A/B registers. Most notably, the SLP_TYP
7206bits
7207can be different, as per the values returned from the _Sx predefined
7208methods.
7209
7210Removed an extra register write within AcpiHwClearAcpiStatus. This
7211function
7212was writing an optional PM1B status register twice. The existing call to
7213the
7214low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
7215A/B
7216register. ACPICA BZ 751.
7217
7218Split out the PM1 Status registers from the FADT. Added new globals for
7219these
7220registers (A/B), similar to the way the PM1 Enable registers are handled.
7221Instead of overloading the FADT Event Register blocks. This makes the
7222code
7223clearer and less prone to error.
7224
7225Fixed the warning message for when the platform contains too many ACPI
7226tables
7227for the default size of the global root table data structure. The
7228calculation
7229for the truncation value was incorrect.
7230
7231Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
7232obsolete macro, since it is now a simple reference to ->common.type.
7233There
7234were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
7235
7236Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
7237TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
7238simply SLEEP_TYPE. ACPICA BZ 754.
7239
7240Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
7241function is only needed on 64-bit host operating systems and is thus not
7242included for 32-bit hosts.
7243
7244Debug output: print the input and result for invocations of the _OSI
7245reserved
7246control method via the ACPI_LV_INFO debug level. Also, reduced some of
7247the
7248verbosity of this debug level. Len Brown.
7249
7250Example Code and Data Size: These are the sizes for the OS-independent
7251acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7252debug version of the code includes the debug output trace mechanism and
7253has a
7254much larger code and data size.
7255
7256  Previous Release:
7257    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
7258    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
7259  Current Release:
7260    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
7261    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
7262
72632) iASL Compiler/Disassembler and Tools:
7264
7265Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
7266various legal performance profiles.
7267
7268----------------------------------------
726923 January 2009. Summary of changes for version 20090123:
7270
72711) ACPI CA Core Subsystem:
7272
7273Added the 2009 copyright to all module headers and signons. This affects
7274virtually every file in the ACPICA core subsystem, the iASL compiler, and
7275the tools/utilities.
7276
7277Implemented a change to allow the host to override any ACPI table,
7278including
7279dynamically loaded tables. Previously, only the DSDT could be replaced by
7280the
7281host. With this change, the AcpiOsTableOverride interface is called for
7282each
7283table found in the RSDT/XSDT during ACPICA initialization, and also
7284whenever
7285a table is dynamically loaded via the AML Load operator.
7286
7287Updated FADT flag definitions, especially the Boot Architecture flags.
7288
7289Debugger: For the Find command, automatically pad the input ACPI name
7290with
7291underscores if the name is shorter than 4 characters. This enables a
7292match
7293with the actual namespace entry which is itself padded with underscores.
7294
7295Example Code and Data Size: These are the sizes for the OS-independent
7296acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7297debug version of the code includes the debug output trace mechanism and
7298has a
7299much larger code and data size.
7300
7301  Previous Release:
7302    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
7303    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
7304  Current Release:
7305    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
7306    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
7307
73082) iASL Compiler/Disassembler and Tools:
7309
7310Fix build error under Bison-2.4.
7311
7312Dissasembler: Enhanced FADT support. Added decoding of the Boot
7313Architecture
7314flags. Now decode all flags, regardless of the FADT version. Flag output
7315includes the FADT version which first defined each flag.
7316
7317The iASL -g option now dumps the RSDT to a file (in addition to the FADT
7318and
7319DSDT). Windows only.
7320
7321----------------------------------------
732204 December 2008. Summary of changes for version 20081204:
7323
73241) ACPI CA Core Subsystem:
7325
7326The ACPICA Programmer Reference has been completely updated and revamped
7327for
7328this release. This includes updates to the external interfaces, OSL
7329interfaces, the overview sections, and the debugger reference.
7330
7331Several new ACPICA interfaces have been implemented and documented in the
7332programmer reference:
7333AcpiReset - Writes the reset value to the FADT-defined reset register.
7334AcpiDisableAllGpes - Disable all available GPEs.
7335AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
7336AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
7337AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
7338AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
7339AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
7340
7341Most of the public ACPI hardware-related interfaces have been moved to a
7342new
7343file, components/hardware/hwxface.c
7344
7345Enhanced the FADT parsing and low-level ACPI register access: The ACPI
7346register lengths within the FADT are now used, and the low level ACPI
7347register access no longer hardcodes the ACPI register lengths. Given that
7348there may be some risk in actually trusting the FADT register lengths, a
7349run-
7350time option was added to fall back to the default hardcoded lengths if
7351the
7352FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
7353option is set to true for now, and a warning is issued if a suspicious
7354FADT
7355register length is overridden with the default value.
7356
7357Fixed a reference count issue in NsRepairObject. This problem was
7358introduced
7359in version 20081031 as part of a fix to repair Buffer objects within
7360Packages. Lin Ming.
7361
7362Added semaphore support to the Linux/Unix application OS-services layer
7363(OSL). ACPICA BZ 448. Lin Ming.
7364
7365Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
7366will
7367be implemented in the OSL, or will binary semaphores be used instead.
7368
7369Example Code and Data Size: These are the sizes for the OS-independent
7370acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7371debug version of the code includes the debug output trace mechanism and
7372has a
7373much larger code and data size.
7374
7375  Previous Release:
7376    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
7377    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
7378  Current Release:
7379    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
7380    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
7381
73822) iASL Compiler/Disassembler and Tools:
7383
7384iASL: Completed the '-e' option to include additional ACPI tables in
7385order
7386to
7387aid with disassembly and External statement generation. ACPICA BZ 742.
7388Lin
7389Ming.
7390
7391iASL: Removed the "named object in while loop" error. The compiler cannot
7392determine how many times a loop will execute. ACPICA BZ 730.
7393
7394Disassembler: Implemented support for FADT revision 2 (MS extension).
7395ACPICA
7396BZ 743.
7397
7398Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
7399MCFG).
7400
7401----------------------------------------
740231 October 2008. Summary of changes for version 20081031:
7403
74041) ACPI CA Core Subsystem:
7405
7406Restructured the ACPICA header files into public/private. acpi.h now
7407includes
7408only the "public" acpica headers. All other acpica headers are "private"
7409and
7410should not be included by acpica users. One new file, accommon.h is used
7411to
7412include the commonly used private headers for acpica code generation.
7413Future
7414plans include moving all private headers to a new subdirectory.
7415
7416Implemented an automatic Buffer->String return value conversion for
7417predefined ACPI methods. For these methods (such as _BIF), added
7418automatic
7419conversion for return objects that are required to be a String, but a
7420Buffer
7421was found instead. This can happen when reading string battery data from
7422an
7423operation region, because it used to be difficult to convert the data
7424from
7425buffer to string from within the ASL. Ensures that the host OS is
7426provided
7427with a valid null-terminated string. Linux BZ 11822.
7428
7429Updated the FACS waking vector interfaces. Split
7430AcpiSetFirmwareWakingVector
7431into two: one for the 32-bit vector, another for the 64-bit vector. This
7432is
7433required because the host OS must setup the wake much differently for
7434each
7435vector (real vs. protected mode, etc.) and the interface itself should
7436not
7437be
7438deciding which vector to use. Also, eliminated the
7439GetFirmwareWakingVector
7440interface, as it served no purpose (only the firmware reads the vector,
7441OS
7442only writes the vector.) ACPICA BZ 731.
7443
7444Implemented a mechanism to escape infinite AML While() loops. Added a
7445loop
7446counter to force exit from AML While loops if the count becomes too
7447large.
7448This can occur in poorly written AML when the hardware does not respond
7449within a while loop and the loop does not implement a timeout. The
7450maximum
7451loop count is configurable. A new exception code is returned when a loop
7452is
7453broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
7454
7455Optimized the execution of AML While loops. Previously, a control state
7456object was allocated and freed for each execution of the loop. The
7457optimization is to simply reuse the control state for each iteration.
7458This
7459speeds up the raw loop execution time by about 5%.
7460
7461Enhanced the implicit return mechanism. For Windows compatibility, return
7462an
7463implicit integer of value zero for methods that contain no executable
7464code.
7465Such methods are seen in the field as stubs (presumably), and can cause
7466drivers to fail if they expect a return value. Lin Ming.
7467
7468Allow multiple backslashes as root prefixes in namepaths. In a fully
7469qualified namepath, allow multiple backslash prefixes. This can happen
7470(and
7471is seen in the field) because of the use of a double-backslash in strings
7472(since backslash is the escape character) causing confusion. ACPICA BZ
7473739
7474Lin Ming.
7475
7476Emit a warning if two different FACS or DSDT tables are discovered in the
7477FADT. Checks if there are two valid but different addresses for the FACS
7478and
7479DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
7480
7481Consolidated the method argument count validation code. Merged the code
7482that
7483validates control method argument counts into the predefined validation
7484module. Eliminates possible multiple warnings for incorrect argument
7485counts.
7486
7487Implemented ACPICA example code. Includes code for ACPICA initialization,
7488handler installation, and calling a control method. Available at
7489source/tools/examples.
7490
7491Added a global pointer for FACS table to simplify internal FACS access.
7492Use
7493the global pointer instead of using AcpiGetTableByIndex for each FACS
7494access.
7495This simplifies the code for the Global Lock and the Firmware Waking
7496Vector(s).
7497
7498Example Code and Data Size: These are the sizes for the OS-independent
7499acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7500debug version of the code includes the debug output trace mechanism and
7501has a
7502much larger code and data size.
7503
7504  Previous Release:
7505    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
7506    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
7507  Current Release:
7508    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
7509    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
7510
75112) iASL Compiler/Disassembler and Tools:
7512
7513iASL: Improved disassembly of external method calls. Added the -e option
7514to
7515allow the inclusion of additional ACPI tables to help with the
7516disassembly
7517of
7518method invocations and the generation of external declarations during the
7519disassembly. Certain external method invocations cannot be disassembled
7520properly without the actual declaration of the method. Use the -e option
7521to
7522include the table where the external method(s) are actually declared.
7523Most
7524useful for disassembling SSDTs that make method calls back to the master
7525DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
7526-d
7527-e dsdt.aml ssdt1.aml
7528
7529iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
7530problem where the use of an alias within a namepath would result in a not
7531found error or cause the compiler to fault. Also now allows forward
7532references from the Alias operator itself. ACPICA BZ 738.
7533
7534----------------------------------------
753526 September 2008. Summary of changes for version 20080926:
7536
75371) ACPI CA Core Subsystem:
7538
7539Designed and implemented a mechanism to validate predefined ACPI methods
7540and
7541objects. This code validates the predefined ACPI objects (objects whose
7542names
7543start with underscore) that appear in the namespace, at the time they are
7544evaluated. The argument count and the type of the returned object are
7545validated against the ACPI specification. The purpose of this validation
7546is
7547to detect problems with the BIOS-implemented predefined ACPI objects
7548before
7549the results are returned to the ACPI-related drivers. Future enhancements
7550may
7551include actual repair of incorrect return objects where possible. Two new
7552files are nspredef.c and acpredef.h.
7553
7554Fixed a fault in the AML parser if a memory allocation fails during the
7555Op
7556completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
7557
7558Fixed an issue with implicit return compatibility. This change improves
7559the
7560implicit return mechanism to be more compatible with the MS interpreter.
7561Lin
7562Ming, ACPICA BZ 349.
7563
7564Implemented support for zero-length buffer-to-string conversions. Allow
7565zero
7566length strings during interpreter buffer-to-string conversions. For
7567example,
7568during the ToDecimalString and ToHexString operators, as well as implicit
7569conversions. Fiodor Suietov, ACPICA BZ 585.
7570
7571Fixed two possible memory leaks in the error exit paths of
7572AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
7573are
7574similar in that they use a stack of state objects in order to eliminate
7575recursion. The stack must be fully unwound and deallocated if an error
7576occurs. Lin Ming. ACPICA BZ 383.
7577
7578Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
7579global
7580ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
7581Moore ACPICA BZ 442.
7582
7583Removed the obsolete version number in module headers. Removed the
7584"$Revision" number that appeared in each module header. This version
7585number
7586was useful under SourceSafe and CVS, but has no meaning under git. It is
7587not
7588only incorrect, it could also be misleading.
7589
7590Example Code and Data Size: These are the sizes for the OS-independent
7591acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7592debug version of the code includes the debug output trace mechanism and
7593has a
7594much larger code and data size.
7595
7596  Previous Release:
7597    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7598    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
7599  Current Release:
7600    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
7601    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
7602
7603----------------------------------------
760429 August 2008. Summary of changes for version 20080829:
7605
76061) ACPI CA Core Subsystem:
7607
7608Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
7609Reference. Changes include the elimination of cheating on the Object
7610field
7611for the DdbHandle subtype, addition of a reference class field to
7612differentiate the various reference types (instead of an AML opcode), and
7613the
7614cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
7615
7616Reduce an error to a warning for an incorrect method argument count.
7617Previously aborted with an error if too few arguments were passed to a
7618control method via the external ACPICA interface. Now issue a warning
7619instead
7620and continue. Handles the case where the method inadvertently declares
7621too
7622many arguments, but does not actually use the extra ones. Applies mainly
7623to
7624the predefined methods. Lin Ming. Linux BZ 11032.
7625
7626Disallow the evaluation of named object types with no intrinsic value.
7627Return
7628AE_TYPE for objects that have no value and therefore evaluation is
7629undefined:
7630Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
7631of
7632these types were allowed, but an exception would be generated at some
7633point
7634during the evaluation. Now, the error is generated up front.
7635
7636Fixed a possible memory leak in the AcpiNsGetExternalPathname function
7637(nsnames.c). Fixes a leak in the error exit path.
7638
7639Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
7640debug
7641levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
7642ACPI_EXCEPTION
7643interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
7644ACPI_LV_EVENTS.
7645
7646Removed obsolete and/or unused exception codes from the acexcep.h header.
7647There is the possibility that certain device drivers may be affected if
7648they
7649use any of these exceptions.
7650
7651The ACPICA documentation has been added to the public git source tree,
7652under
7653acpica/documents. Included are the ACPICA programmer reference, the iASL
7654compiler reference, and the changes.txt release logfile.
7655
7656Example Code and Data Size: These are the sizes for the OS-independent
7657acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7658debug version of the code includes the debug output trace mechanism and
7659has a
7660much larger code and data size.
7661
7662  Previous Release:
7663    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7664    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
7665  Current Release:
7666    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7667    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
7668
76692) iASL Compiler/Disassembler and Tools:
7670
7671Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
7672defines _SCP with 3 arguments. Previous versions defined it with only 1
7673argument. iASL now allows both definitions.
7674
7675iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
7676zero-
7677length subtables when disassembling ACPI tables. Also fixed a couple of
7678errors where a full 16-bit table type field was not extracted from the
7679input
7680properly.
7681
7682acpisrc: Improve comment counting mechanism for generating source code
7683statistics. Count first and last lines of multi-line comments as
7684whitespace,
7685not comment lines. Handle Linux legal header in addition to standard
7686acpica
7687header.
7688
7689----------------------------------------
7690
769129 July 2008. Summary of changes for version 20080729:
7692
76931) ACPI CA Core Subsystem:
7694
7695Fix a possible deadlock in the GPE dispatch. Remove call to
7696AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
7697attempt
7698to acquire the GPE lock but can deadlock since the GPE lock is already
7699held
7700at dispatch time. This code was introduced in version 20060831 as a
7701response
7702to Linux BZ 6881 and has since been removed from Linux.
7703
7704Add a function to dereference returned reference objects. Examines the
7705return
7706object from a call to AcpiEvaluateObject. Any Index or RefOf references
7707are
7708automatically dereferenced in an attempt to return something useful
7709(these
7710reference types cannot be converted into an external ACPI_OBJECT.)
7711Provides
7712MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
7713
7714x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
7715subtables for the MADT and one new subtable for the SRAT. Includes
7716disassembler and AcpiSrc support. Data from the Intel 64 Architecture
7717x2APIC
7718Specification, June 2008.
7719
7720Additional error checking for pathname utilities. Add error check after
7721all
7722calls to AcpiNsGetPathnameLength. Add status return from
7723AcpiNsBuildExternalPath and check after all calls. Add parameter
7724validation
7725to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
7726
7727Return status from the global init function AcpiUtGlobalInitialize. This
7728is
7729used by both the kernel subsystem and the utilities such as iASL
7730compiler.
7731The function could possibly fail when the caches are initialized. Yang
7732Yi.
7733
7734Add a function to decode reference object types to strings. Created for
7735improved error messages.
7736
7737Improve object conversion error messages. Better error messages during
7738object
7739conversion from internal to the external ACPI_OBJECT. Used for external
7740calls
7741to AcpiEvaluateObject.
7742
7743Example Code and Data Size: These are the sizes for the OS-independent
7744acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7745debug version of the code includes the debug output trace mechanism and
7746has a
7747much larger code and data size.
7748
7749  Previous Release:
7750    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
7751    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
7752  Current Release:
7753    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
7754    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
7755
77562) iASL Compiler/Disassembler and Tools:
7757
7758Debugger: fix a possible hang when evaluating non-methods. Fixes a
7759problem
7760introduced in version 20080701. If the object being evaluated (via
7761execute
7762command) is not a method, the debugger can hang while trying to obtain
7763non-
7764existent parameters.
7765
7766iASL: relax error for using reserved "_T_x" identifiers. These names can
7767appear in a disassembled ASL file if they were emitted by the original
7768compiler. Instead of issuing an error or warning and forcing the user to
7769manually change these names, issue a remark instead.
7770
7771iASL: error if named object created in while loop. Emit an error if any
7772named
7773object is created within a While loop. If allowed, this code will
7774generate
7775a
7776run-time error on the second iteration of the loop when an attempt is
7777made
7778to
7779create the same named object twice. ACPICA bugzilla 730.
7780
7781iASL: Support absolute pathnames for include files. Add support for
7782absolute
7783pathnames within the Include operator. previously, only relative
7784pathnames
7785were supported.
7786
7787iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
7788Descriptor.
7789The ACPI spec requires one interrupt minimum. BZ 423
7790
7791iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
7792Handles the case for the Interrupt Resource Descriptor where
7793the ResourceSource argument is omitted but ResourceSourceIndex
7794is present. Now leave room for the Index. BZ 426
7795
7796iASL: Prevent error message if CondRefOf target does not exist. Fixes
7797cases
7798where an error message is emitted if the target does not exist. BZ 516
7799
7800iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
7801(get ACPI tables on Windows). This was apparently broken in version
780220070919.
7803
7804AcpiXtract: Handle EOF while extracting data. Correctly handle the case
7805where
7806the EOF happens immediately after the last table in the input file. Print
7807completion message. Previously, no message was displayed in this case.
7808
7809----------------------------------------
781001 July 2008. Summary of changes for version 20080701:
7811
78120) Git source tree / acpica.org
7813
7814Fixed a problem where a git-clone from http would not transfer the entire
7815source tree.
7816
78171) ACPI CA Core Subsystem:
7818
7819Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
7820enable bit. Now performs a read-change-write of the enable register
7821instead
7822of simply writing out the cached enable mask. This will prevent
7823inadvertent
7824enabling of GPEs if a rogue GPE is received during initialization (before
7825GPE
7826handlers are installed.)
7827
7828Implemented a copy for dynamically loaded tables. Previously, dynamically
7829loaded tables were simply mapped - but on some machines this memory is
7830corrupted after suspend. Now copy the table to a local buffer. For the
7831OpRegion case, added checksum verify. Use the table length from the table
7832header, not the region length. For the Buffer case, use the table length
7833also. Dennis Noordsij, Bob Moore. BZ 10734
7834
7835Fixed a problem where the same ACPI table could not be dynamically loaded
7836and
7837unloaded more than once. Without this change, a table cannot be loaded
7838again
7839once it has been loaded/unloaded one time. The current mechanism does not
7840unregister a table upon an unload. During a load, if the same table is
7841found,
7842this no longer returns an exception. BZ 722
7843
7844Fixed a problem where the wrong descriptor length was calculated for the
7845EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
7846EndTag
7847are calculated as 12 bytes long, but the actual length in the internal
7848descriptor is 16 because of the round-up to 8 on the 64-bit build.
7849Reported
7850by Linn Crosetto. BZ 728
7851
7852Fixed a possible memory leak in the Unload operator. The DdbHandle
7853returned
7854by Load() did not have its reference count decremented during unload,
7855leading
7856to a memory leak. Lin Ming. BZ 727
7857
7858Fixed a possible memory leak when deleting thermal/processor objects. Any
7859associated notify handlers (and objects) were not being deleted. Fiodor
7860Suietov. BZ 506
7861
7862Fixed the ordering of the ASCII names in the global mutex table to match
7863the
7864actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
7865only.
7866Vegard Nossum. BZ 726
7867
7868Enhanced the AcpiGetObjectInfo interface to return the number of required
7869arguments if the object is a control method. Added this call to the
7870debugger
7871so the proper number of default arguments are passed to a method. This
7872prevents a warning when executing methods from AcpiExec.
7873
7874Added a check for an invalid handle in AcpiGetObjectInfo. Return
7875AE_BAD_PARAMETER if input handle is invalid. BZ 474
7876
7877Fixed an extraneous warning from exconfig.c on the 64-bit build.
7878
7879Example Code and Data Size: These are the sizes for the OS-independent
7880acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7881debug version of the code includes the debug output trace mechanism and
7882has a
7883much larger code and data size.
7884
7885  Previous Release:
7886    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7887    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7888  Current Release:
7889    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
7890    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
7891
78922) iASL Compiler/Disassembler and Tools:
7893
7894iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
7895resource descriptor names.
7896
7897iASL: Detect invalid ASCII characters in input (windows version). Removed
7898the
7899"-CF" flag from the flex compile, enables correct detection of non-ASCII
7900characters in the input. BZ 441
7901
7902iASL: Eliminate warning when result of LoadTable is not used. Eliminate
7903the
7904"result of operation not used" warning when the DDB handle returned from
7905LoadTable is not used. The warning is not needed. BZ 590
7906
7907AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
7908method
7909to
7910pass address of table to the AML. Added option to disable OpRegion
7911simulation
7912to allow creation of an OpRegion with a real address that was passed to
7913_CFG.
7914All of this allows testing of the Load and Unload operators from
7915AcpiExec.
7916
7917Debugger: update tables command for unloaded tables. Handle unloaded
7918tables
7919and use the standard table header output routine.
7920
7921----------------------------------------
792209 June 2008. Summary of changes for version 20080609:
7923
79241) ACPI CA Core Subsystem:
7925
7926Implemented a workaround for reversed _PRT entries. A significant number
7927of
7928BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
7929change dynamically detects and repairs this problem. Provides
7930compatibility
7931with MS ACPI. BZ 6859
7932
7933Simplified the internal ACPI hardware interfaces to eliminate the locking
7934flag parameter from Register Read/Write. Added a new external interface,
7935AcpiGetRegisterUnlocked.
7936
7937Fixed a problem where the invocation of a GPE control method could hang.
7938This
7939was a regression introduced in 20080514. The new method argument count
7940validation mechanism can enter an infinite loop when a GPE method is
7941dispatched. Problem fixed by removing the obsolete code that passed GPE
7942block
7943information to the notify handler via the control method parameter
7944pointer.
7945
7946Fixed a problem where the _SST execution status was incorrectly returned
7947to
7948the caller of AcpiEnterSleepStatePrep. This was a regression introduced
7949in
795020080514. _SST is optional and a NOT_FOUND exception should never be
7951returned. BZ 716
7952
7953Fixed a problem where a deleted object could be accessed from within the
7954AML
7955parser. This was a regression introduced in version 20080123 as a fix for
7956the
7957Unload operator. Lin Ming. BZ 10669
7958
7959Cleaned up the debug operand dump mechanism. Eliminated unnecessary
7960operands
7961and eliminated the use of a negative index in a loop. Operands are now
7962displayed in the correct order, not backwards. This also fixes a
7963regression
7964introduced in 20080514 on 64-bit systems where the elimination of
7965ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
7966715
7967
7968Fixed a possible memory leak in EvPciConfigRegionSetup where the error
7969exit
7970path did not delete a locally allocated structure.
7971
7972Updated definitions for the DMAR and SRAT tables to synchronize with the
7973current specifications. Includes disassembler support.
7974
7975Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
7976loop termination value was used. Loop terminated on iteration early,
7977missing
7978one mutex. Linn Crosetto
7979
7980Example Code and Data Size: These are the sizes for the OS-independent
7981acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7982debug version of the code includes the debug output trace mechanism and
7983has a
7984much larger code and data size.
7985
7986  Previous Release:
7987    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
7988    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
7989  Current Release:
7990    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
7991    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
7992
79932) iASL Compiler/Disassembler and Tools:
7994
7995Disassembler: Implemented support for EisaId() within _CID objects. Now
7996disassemble integer _CID objects back to EisaId invocations, including
7997multiple integers within _CID packages. Includes single-step support for
7998debugger also.
7999
8000Disassembler: Added support for DMAR and SRAT table definition changes.
8001
8002----------------------------------------
800314 May 2008. Summary of changes for version 20080514:
8004
80051) ACPI CA Core Subsystem:
8006
8007Fixed a problem where GPEs were enabled too early during the ACPICA
8008initialization. This could lead to "handler not installed" errors on some
8009machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
8010This
8011ensures that all operation regions and devices throughout the namespace
8012have
8013been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
8014
8015Implemented a change to the enter sleep code. Moved execution of the _GTS
8016method to just before setting sleep enable bit. The execution was moved
8017from
8018AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
8019immediately before the SLP_EN bit is set, as per the ACPI specification.
8020Luming Yu, BZ 1653.
8021
8022Implemented a fix to disable unknown GPEs (2nd version). Now always
8023disable
8024the GPE, even if ACPICA thinks that that it is already disabled. It is
8025possible that the AML or some other code has enabled the GPE unbeknownst
8026to
8027the ACPICA code.
8028
8029Fixed a problem with the Field operator where zero-length fields would
8030return
8031an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
8032ASL
8033field declarations in Field(), BankField(), and IndexField(). BZ 10606.
8034
8035Implemented a fix for the Load operator, now load the table at the
8036namespace
8037root. This reverts a change introduced in version 20071019. The table is
8038now
8039loaded at the namespace root even though this goes against the ACPI
8040specification. This provides compatibility with other ACPI
8041implementations.
8042The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
8043Ming.
8044
8045Fixed a problem where ACPICA would not Load() tables with unusual
8046signatures.
8047Now ignore ACPI table signature for Load() operator. Only "SSDT" is
8048acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
8049Therefore, signature validation is worthless. Apparently MS ACPI accepts
8050such
8051signatures, ACPICA must be compatible. BZ 10454.
8052
8053Fixed a possible negative array index in AcpiUtValidateException. Added
8054NULL
8055fields to the exception string arrays to eliminate a -1 subtraction on
8056the
8057SubStatus field.
8058
8059Updated the debug tracking macros to reduce overall code and data size.
8060Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
8061instead of pointers to static strings. Jan Beulich and Bob Moore.
8062
8063Implemented argument count checking in control method invocation via
8064AcpiEvaluateObject. Now emit an error if too few arguments, warning if
8065too
8066many. This applies only to extern programmatic control method execution,
8067not
8068method-to-method calls within the AML. Lin Ming.
8069
8070Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
8071no
8072longer needed, especially with the removal of 16-bit support. It was
8073replaced
8074mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
8075bit
8076on
807732/64-bit platforms is required.
8078
8079Added the C const qualifier for appropriate string constants -- mostly
8080MODULE_NAME and printf format strings. Jan Beulich.
8081
8082Example Code and Data Size: These are the sizes for the OS-independent
8083acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8084debug version of the code includes the debug output trace mechanism and
8085has a
8086much larger code and data size.
8087
8088  Previous Release:
8089    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
8090    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
8091  Current Release:
8092    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
8093    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
8094
80952) iASL Compiler/Disassembler and Tools:
8096
8097Implemented ACPI table revision ID validation in the disassembler. Zero
8098is
8099always invalid. For DSDTs, the ID controls the interpreter integer width.
81001
8101means 32-bit and this is unusual. 2 or greater is 64-bit.
8102
8103----------------------------------------
810421 March 2008. Summary of changes for version 20080321:
8105
81061) ACPI CA Core Subsystem:
8107
8108Implemented an additional change to the GPE support in order to suppress
8109spurious or stray GPEs. The AcpiEvDisableGpe function will now
8110permanently
8111disable incoming GPEs that are neither enabled nor disabled -- meaning
8112that
8113the GPE is unknown to the system. This should prevent future interrupt
8114floods
8115from that GPE. BZ 6217 (Zhang Rui)
8116
8117Fixed a problem where NULL package elements were not returned to the
8118AcpiEvaluateObject interface correctly. The element was simply ignored
8119instead of returning a NULL ACPI_OBJECT package element, potentially
8120causing
8121a buffer overflow and/or confusing the caller who expected a fixed number
8122of
8123elements. BZ 10132 (Lin Ming, Bob Moore)
8124
8125Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
8126Dword,
8127Qword), Field, BankField, and IndexField operators when invoked from
8128inside
8129an executing control method. In this case, these operators created
8130namespace
8131nodes that were incorrectly left marked as permanent nodes instead of
8132temporary nodes. This could cause a problem if there is race condition
8133between an exiting control method and a running namespace walk. (Reported
8134by
8135Linn Crosetto)
8136
8137Fixed a problem where the CreateField and CreateXXXField operators would
8138incorrectly allow duplicate names (the name of the field) with no
8139exception
8140generated.
8141
8142Implemented several changes for Notify handling. Added support for new
8143Notify
8144values (ACPI 2.0+) and improved the Notify debug output. Notify on
8145PowerResource objects is no longer allowed, as per the ACPI
8146specification.
8147(Bob Moore, Zhang Rui)
8148
8149All Reference Objects returned via the AcpiEvaluateObject interface are
8150now
8151marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
8152for
8153NULL objects - either NULL package elements or unresolved named
8154references.
8155
8156Fixed a problem where an extraneous debug message was produced for
8157package
8158objects (when debugging enabled). The message "Package List length larger
8159than NumElements count" is now produced in the correct case, and is now
8160an
8161error message rather than a debug message. Added a debug message for the
8162opposite case, where NumElements is larger than the Package List (the
8163package
8164will be padded out with NULL elements as per the ACPI spec.)
8165
8166Implemented several improvements for the output of the ASL "Debug" object
8167to
8168clarify and keep all data for a given object on one output line.
8169
8170Fixed two size calculation issues with the variable-length Start
8171Dependent
8172resource descriptor.
8173
8174Example Code and Data Size: These are the sizes for the OS-independent
8175acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8176debug version of the code includes the debug output trace mechanism and
8177has
8178a much larger code and data size.
8179
8180  Previous Release:
8181    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
8182    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
8183  Current Release:
8184    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
8185    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
8186
81872) iASL Compiler/Disassembler and Tools:
8188
8189Fixed a problem with the use of the Switch operator where execution of
8190the
8191containing method by multiple concurrent threads could cause an
8192AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
8193actual Switch opcode, it must be simulated with local named temporary
8194variables and if/else pairs. The solution chosen was to mark any method
8195that
8196uses Switch as Serialized, thus preventing multiple thread entries. BZ
8197469.
8198
8199----------------------------------------
820013 February 2008. Summary of changes for version 20080213:
8201
82021) ACPI CA Core Subsystem:
8203
8204Implemented another MS compatibility design change for GPE/Notify
8205handling.
8206GPEs are now cleared/enabled asynchronously to allow all pending notifies
8207to
8208complete first. It is expected that the OSL will queue the enable request
8209behind all pending notify requests (may require changes to the local host
8210OSL
8211in AcpiOsExecute). Alexey Starikovskiy.
8212
8213Fixed a problem where buffer and package objects passed as arguments to a
8214control method via the external AcpiEvaluateObject interface could cause
8215an
8216AE_AML_INTERNAL exception depending on the order and type of operators
8217executed by the target control method.
8218
8219Fixed a problem where resource descriptor size optimization could cause a
8220problem when a _CRS resource template is passed to a _SRS method. The
8221_SRS
8222resource template must use the same descriptors (with the same size) as
8223returned from _CRS. This change affects the following resource
8224descriptors:
8225IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
82269487)
8227
8228Fixed a problem where a CopyObject to RegionField, BankField, and
8229IndexField
8230objects did not perform an implicit conversion as it should. These types
8231must
8232retain their initial type permanently as per the ACPI specification.
8233However,
8234a CopyObject to all other object types should not perform an implicit
8235conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
8236
8237Fixed a problem with the AcpiGetDevices interface where the mechanism to
8238match device CIDs did not examine the entire list of available CIDs, but
8239instead aborted on the first non-matching CID. Andrew Patterson.
8240
8241Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
8242was
8243inadvertently changed to return a 16-bit value instead of a 32-bit value,
8244truncating the upper dword of a 64-bit value. This macro is only used to
8245display debug output, so no incorrect calculations were made. Also,
8246reimplemented the macro so that a 64-bit shift is not performed by
8247inefficient compilers.
8248
8249Added missing va_end statements that should correspond with each va_start
8250statement.
8251
8252Example Code and Data Size: These are the sizes for the OS-independent
8253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8254debug version of the code includes the debug output trace mechanism and
8255has
8256a much larger code and data size.
8257
8258  Previous Release:
8259    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
8260    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
8261  Current Release:
8262    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
8263    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
8264
82652) iASL Compiler/Disassembler and Tools:
8266
8267Implemented full disassembler support for the following new ACPI tables:
8268BERT, EINJ, and ERST. Implemented partial disassembler support for the
8269complicated HEST table. These tables support the Windows Hardware Error
8270Architecture (WHEA).
8271
8272----------------------------------------
827323 January 2008. Summary of changes for version 20080123:
8274
82751) ACPI CA Core Subsystem:
8276
8277Added the 2008 copyright to all module headers and signons. This affects
8278virtually every file in the ACPICA core subsystem, the iASL compiler, and
8279the tools/utilities.
8280
8281Fixed a problem with the SizeOf operator when used with Package and
8282Buffer
8283objects. These objects have deferred execution for some arguments, and
8284the
8285execution is now completed before the SizeOf is executed. This problem
8286caused
8287unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
8288BZ
82899558
8290
8291Implemented an enhancement to the interpreter "slack mode". In the
8292absence
8293of
8294an explicit return or an implicitly returned object from the last
8295executed
8296opcode, a control method will now implicitly return an integer of value 0
8297for
8298Microsoft compatibility. (Lin Ming) BZ 392
8299
8300Fixed a problem with the Load operator where an exception was not
8301returned
8302in
8303the case where the table is already loaded. (Lin Ming) BZ 463
8304
8305Implemented support for the use of DDBHandles as an Indexed Reference, as
8306per
8307the ACPI spec. (Lin Ming) BZ 486
8308
8309Implemented support for UserTerm (Method invocation) for the Unload
8310operator
8311as per the ACPI spec. (Lin Ming) BZ 580
8312
8313Fixed a problem with the LoadTable operator where the OemId and
8314OemTableId
8315input strings could cause unexpected failures if they were shorter than
8316the
8317maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
8318
8319Implemented support for UserTerm (Method invocation) for the Unload
8320operator
8321as per the ACPI spec. (Lin Ming) BZ 580
8322
8323Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
8324HEST,
8325IBFT, UEFI, WDAT. Disassembler support is forthcoming.
8326
8327Example Code and Data Size: These are the sizes for the OS-independent
8328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8329debug version of the code includes the debug output trace mechanism and
8330has
8331a much larger code and data size.
8332
8333  Previous Release:
8334    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
8335    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
8336  Current Release:
8337    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
8338    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
8339
83402) iASL Compiler/Disassembler and Tools:
8341
8342Implemented support in the disassembler for checksum validation on
8343incoming
8344binary DSDTs and SSDTs. If incorrect, a message is displayed within the
8345table
8346header dump at the start of the disassembly.
8347
8348Implemented additional debugging information in the namespace listing
8349file
8350created during compilation. In addition to the namespace hierarchy, the
8351full
8352pathname to each namespace object is displayed.
8353
8354Fixed a problem with the disassembler where invalid ACPI tables could
8355cause
8356faults or infinite loops.
8357
8358Fixed an unexpected parse error when using the optional "parameter types"
8359list in a control method declaration. (Lin Ming) BZ 397
8360
8361Fixed a problem where two External declarations with the same name did
8362not
8363cause an error (Lin Ming) BZ 509
8364
8365Implemented support for full TermArgs (adding Argx, Localx and method
8366invocation) for the ParameterData parameter to the LoadTable operator.
8367(Lin
8368Ming) BZ 583,587
8369
8370----------------------------------------
837119 December 2007. Summary of changes for version 20071219:
8372
83731) ACPI CA Core Subsystem:
8374
8375Implemented full support for deferred execution for the TermArg string
8376arguments for DataTableRegion. This enables forward references and full
8377operand resolution for the three string arguments. Similar to
8378OperationRegion
8379deferred argument execution.) Lin Ming. BZ 430
8380
8381Implemented full argument resolution support for the BankValue argument
8382to
8383BankField. Previously, only constants were supported, now any TermArg may
8384be
8385used. Lin Ming BZ 387, 393
8386
8387Fixed a problem with AcpiGetDevices where the search of a branch of the
8388device tree could be terminated prematurely. In accordance with the ACPI
8389specification, the search down the current branch is terminated if a
8390device
8391is both not present and not functional (instead of just not present.)
8392Yakui
8393Zhao.
8394
8395Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
8396if
8397the underlying AML code changed the GPE enable registers. Now, any
8398unknown
8399incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
8400disabled
8401instead of simply ignored. Rui Zhang.
8402
8403Fixed a problem with Index Fields where the Index register was
8404incorrectly
8405limited to a maximum of 32 bits. Now any size may be used.
8406
8407Fixed a couple memory leaks associated with "implicit return" objects
8408when
8409the AML Interpreter slack mode is enabled. Lin Ming BZ 349
8410
8411Example Code and Data Size: These are the sizes for the OS-independent
8412acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8413debug version of the code includes the debug output trace mechanism and
8414has
8415a much larger code and data size.
8416
8417  Previous Release:
8418    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
8419    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
8420  Current Release:
8421    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
8422    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
8423
8424----------------------------------------
842514 November 2007. Summary of changes for version 20071114:
8426
84271) ACPI CA Core Subsystem:
8428
8429Implemented event counters for each of the Fixed Events, the ACPI SCI
8430(interrupt) itself, and control methods executed. Named
8431AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
8432These
8433should be useful for debugging and statistics.
8434
8435Implemented a new external interface, AcpiGetStatistics, to retrieve the
8436contents of the various event counters. Returns the current values for
8437AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
8438AcpiMethodCount. The interface can be expanded in the future if new
8439counters
8440are added. Device drivers should use this interface rather than access
8441the
8442counters directly.
8443
8444Fixed a problem with the FromBCD and ToBCD operators. With some
8445compilers,
8446the ShortDivide function worked incorrectly, causing problems with the
8447BCD
8448functions with large input values. A truncation from 64-bit to 32-bit
8449inadvertently occurred. Internal BZ 435. Lin Ming
8450
8451Fixed a problem with Index references passed as method arguments.
8452References
8453passed as arguments to control methods were dereferenced immediately
8454(before
8455control was passed to the called method). The references are now
8456correctly
8457passed directly to the called method. BZ 5389. Lin Ming
8458
8459Fixed a problem with CopyObject used in conjunction with the Index
8460operator.
8461The reference was incorrectly dereferenced before the copy. The reference
8462is
8463now correctly copied. BZ 5391. Lin Ming
8464
8465Fixed a problem with Control Method references within Package objects.
8466These
8467references are now correctly generated. This completes the package
8468construction overhaul that began in version 20071019.
8469
8470Example Code and Data Size: These are the sizes for the OS-independent
8471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8472debug version of the code includes the debug output trace mechanism and
8473has
8474a much larger code and data size.
8475
8476  Previous Release:
8477    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
8478    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
8479  Current Release:
8480    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
8481    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
8482
8483
84842) iASL Compiler/Disassembler and Tools:
8485
8486The AcpiExec utility now installs handlers for all of the predefined
8487Operation Region types. New types supported are: PCI_Config, CMOS, and
8488PCIBARTarget.
8489
8490Fixed a problem with the 64-bit version of AcpiExec where the extended
8491(64-
8492bit) address fields for the DSDT and FACS within the FADT were not being
8493used, causing truncation of the upper 32-bits of these addresses. Lin
8494Ming
8495and Bob Moore
8496
8497----------------------------------------
849819 October 2007. Summary of changes for version 20071019:
8499
85001) ACPI CA Core Subsystem:
8501
8502Fixed a problem with the Alias operator when the target of the alias is a
8503named ASL operator that opens a new scope -- Scope, Device,
8504PowerResource,
8505Processor, and ThermalZone. In these cases, any children of the original
8506operator could not be accessed via the alias, potentially causing
8507unexpected
8508AE_NOT_FOUND exceptions. (BZ 9067)
8509
8510Fixed a problem with the Package operator where all named references were
8511created as object references and left otherwise unresolved. According to
8512the
8513ACPI specification, a Package can only contain Data Objects or references
8514to
8515control methods. The implication is that named references to Data Objects
8516(Integer, Buffer, String, Package, BufferField, Field) should be resolved
8517immediately upon package creation. This is the approach taken with this
8518change. References to all other named objects (Methods, Devices, Scopes,
8519etc.) are all now properly created as reference objects. (BZ 5328)
8520
8521Reverted a change to Notify handling that was introduced in version
852220070508. This version changed the Notify handling from asynchronous to
8523fully synchronous (Device driver Notify handling with respect to the
8524Notify
8525ASL operator). It was found that this change caused more problems than it
8526solved and was removed by most users.
8527
8528Fixed a problem with the Increment and Decrement operators where the type
8529of
8530the target object could be unexpectedly and incorrectly changed. (BZ 353)
8531Lin Ming.
8532
8533Fixed a problem with the Load and LoadTable operators where the table
8534location within the namespace was ignored. Instead, the table was always
8535loaded into the root or current scope. Lin Ming.
8536
8537Fixed a problem with the Load operator when loading a table from a buffer
8538object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
8539
8540Fixed a problem with the Debug object where a store of a DdbHandle
8541reference
8542object to the Debug object could cause a fault.
8543
8544Added a table checksum verification for the Load operator, in the case
8545where
8546the load is from a buffer. (BZ 578).
8547
8548Implemented additional parameter validation for the LoadTable operator.
8549The
8550length of the input strings SignatureString, OemIdString, and OemTableId
8551are
8552now checked for maximum lengths. (BZ 582) Lin Ming.
8553
8554Example Code and Data Size: These are the sizes for the OS-independent
8555acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8556debug version of the code includes the debug output trace mechanism and
8557has
8558a much larger code and data size.
8559
8560  Previous Release:
8561    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
8562    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
8563  Current Release:
8564    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
8565    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
8566
8567
85682) iASL Compiler/Disassembler:
8569
8570Fixed a problem where if a single file was specified and the file did not
8571exist, no error message was emitted. (Introduced with wildcard support in
8572version 20070917.)
8573
8574----------------------------------------
857519 September 2007. Summary of changes for version 20070919:
8576
85771) ACPI CA Core Subsystem:
8578
8579Designed and implemented new external interfaces to install and remove
8580handlers for ACPI table-related events. Current events that are defined
8581are
8582LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
8583they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
8584AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
8585
8586Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
8587(acpi_serialized option on Linux) could cause some systems to hang during
8588initialization. (Bob Moore) BZ 8171
8589
8590Fixed a problem where objects of certain types (Device, ThermalZone,
8591Processor, PowerResource) can be not found if they are declared and
8592referenced from within the same control method (Lin Ming) BZ 341
8593
8594Example Code and Data Size: These are the sizes for the OS-independent
8595acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8596debug version of the code includes the debug output trace mechanism and
8597has
8598a much larger code and data size.
8599
8600  Previous Release:
8601    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
8602    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
8603  Current Release:
8604    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
8605    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
8606
8607
86082) iASL Compiler/Disassembler:
8609
8610Implemented support to allow multiple files to be compiled/disassembled
8611in
8612a
8613single invocation. This includes command line wildcard support for both
8614the
8615Windows and Unix versions of the compiler. This feature simplifies the
8616disassembly and compilation of multiple ACPI tables in a single
8617directory.
8618
8619----------------------------------------
862008 May 2007. Summary of changes for version 20070508:
8621
86221) ACPI CA Core Subsystem:
8623
8624Implemented a Microsoft compatibility design change for the handling of
8625the
8626Notify AML operator. Previously, notify handlers were dispatched and
8627executed completely asynchronously in a deferred thread. The new design
8628still executes the notify handlers in a different thread, but the
8629original
8630thread that executed the Notify() now waits at a synchronization point
8631for
8632the notify handler to complete. Some machines depend on a synchronous
8633Notify
8634operator in order to operate correctly.
8635
8636Implemented support to allow Package objects to be passed as method
8637arguments to the external AcpiEvaluateObject interface. Previously, this
8638would return the AE_NOT_IMPLEMENTED exception. This feature had not been
8639implemented since there were no reserved control methods that required it
8640until recently.
8641
8642Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
8643that
8644contained invalid non-zero values in reserved fields could cause later
8645failures because these fields have meaning in later revisions of the
8646FADT.
8647For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
8648fields
8649are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
8650
8651Fixed a problem where the Global Lock handle was not properly updated if
8652a
8653thread that acquired the Global Lock via executing AML code then
8654attempted
8655to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
8656Joe
8657Liu.
8658
8659Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
8660could be corrupted if the interrupt being removed was at the head of the
8661list. Reported by Linn Crosetto.
8662
8663Example Code and Data Size: These are the sizes for the OS-independent
8664acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8665debug version of the code includes the debug output trace mechanism and
8666has
8667a much larger code and data size.
8668
8669  Previous Release:
8670    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8671    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
8672  Current Release:
8673    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
8674    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
8675
8676----------------------------------------
867720 March 2007. Summary of changes for version 20070320:
8678
86791) ACPI CA Core Subsystem:
8680
8681Implemented a change to the order of interpretation and evaluation of AML
8682operand objects within the AML interpreter. The interpreter now evaluates
8683operands in the order that they appear in the AML stream (and the
8684corresponding ASL code), instead of in the reverse order (after the
8685entire
8686operand list has been parsed). The previous behavior caused several
8687subtle
8688incompatibilities with the Microsoft AML interpreter as well as being
8689somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
8690
8691Implemented a change to the ACPI Global Lock support. All interfaces to
8692the
8693global lock now allow the same thread to acquire the lock multiple times.
8694This affects the AcpiAcquireGlobalLock external interface to the global
8695lock
8696as well as the internal use of the global lock to support AML fields -- a
8697control method that is holding the global lock can now simultaneously
8698access
8699AML fields that require global lock protection. Previously, in both
8700cases,
8701this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
8702to
8703AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
8704Controller. There is no change to the behavior of the AML Acquire
8705operator,
8706as this can already be used to acquire a mutex multiple times by the same
8707thread. BZ 8066. With assistance from Alexey Starikovskiy.
8708
8709Fixed a problem where invalid objects could be referenced in the AML
8710Interpreter after error conditions. During operand evaluation, ensure
8711that
8712the internal "Return Object" field is cleared on error and only valid
8713pointers are stored there. Caused occasional access to deleted objects
8714that
8715resulted in "large reference count" warning messages. Valery Podrezov.
8716
8717Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
8718on
8719deeply nested control method invocations. BZ 7873, local BZ 487. Valery
8720Podrezov.
8721
8722Fixed an internal problem with the handling of result objects on the
8723interpreter result stack. BZ 7872. Valery Podrezov.
8724
8725Removed obsolete code that handled the case where AML_NAME_OP is the
8726target
8727of a reference (Reference.Opcode). This code was no longer necessary. BZ
87287874. Valery Podrezov.
8729
8730Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
8731was
8732a
8733remnant from the previously discontinued 16-bit support.
8734
8735Example Code and Data Size: These are the sizes for the OS-independent
8736acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8737debug version of the code includes the debug output trace mechanism and
8738has
8739a much larger code and data size.
8740
8741  Previous Release:
8742    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8743    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8744  Current Release:
8745    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8746    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
8747
8748----------------------------------------
874926 January 2007. Summary of changes for version 20070126:
8750
87511) ACPI CA Core Subsystem:
8752
8753Added the 2007 copyright to all module headers and signons. This affects
8754virtually every file in the ACPICA core subsystem, the iASL compiler, and
8755the utilities.
8756
8757Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
8758during a table load. A bad pointer was passed in the case where the DSDT
8759is
8760overridden, causing a fault in this case.
8761
8762Example Code and Data Size: These are the sizes for the OS-independent
8763acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8764debug version of the code includes the debug output trace mechanism and
8765has
8766a much larger code and data size.
8767
8768  Previous Release:
8769    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8770    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8771  Current Release:
8772    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8773    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8774
8775----------------------------------------
877615 December 2006. Summary of changes for version 20061215:
8777
87781) ACPI CA Core Subsystem:
8779
8780Support for 16-bit ACPICA has been completely removed since it is no
8781longer
8782necessary and it clutters the code. All 16-bit macros, types, and
8783conditional compiles have been removed, cleaning up and simplifying the
8784code
8785across the entire subsystem. DOS support is no longer needed since the
8786bootable Linux firmware kit is now available.
8787
8788The handler for the Global Lock is now removed during AcpiTerminate to
8789enable a clean subsystem restart, via the implementation of the
8790AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
8791HP)
8792
8793Implemented enhancements to the multithreading support within the
8794debugger
8795to enable improved multithreading debugging and evaluation of the
8796subsystem.
8797(Valery Podrezov)
8798
8799Debugger: Enhanced the Statistics/Memory command to emit the total
8800(maximum)
8801memory used during the execution, as well as the maximum memory consumed
8802by
8803each of the various object types. (Valery Podrezov)
8804
8805Example Code and Data Size: These are the sizes for the OS-independent
8806acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8807debug version of the code includes the debug output trace mechanism and
8808has
8809a much larger code and data size.
8810
8811  Previous Release:
8812    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
8813    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
8814  Current Release:
8815    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
8816    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
8817
8818
88192) iASL Compiler/Disassembler and Tools:
8820
8821AcpiExec: Implemented a new option (-m) to display full memory use
8822statistics upon subsystem/program termination. (Valery Podrezov)
8823
8824----------------------------------------
882509 November 2006. Summary of changes for version 20061109:
8826
88271) ACPI CA Core Subsystem:
8828
8829Optimized the Load ASL operator in the case where the source operand is
8830an
8831operation region. Simply map the operation region memory, instead of
8832performing a bytewise read. (Region must be of type SystemMemory, see
8833below.)
8834
8835Fixed the Load ASL operator for the case where the source operand is a
8836region field. A buffer object is also allowed as the source operand. BZ
8837480
8838
8839Fixed a problem where the Load ASL operator allowed the source operand to
8840be
8841an operation region of any type. It is now restricted to regions of type
8842SystemMemory, as per the ACPI specification. BZ 481
8843
8844Additional cleanup and optimizations for the new Table Manager code.
8845
8846AcpiEnable will now fail if all of the required ACPI tables are not
8847loaded
8848(FADT, FACS, DSDT). BZ 477
8849
8850Added #pragma pack(8/4) to acobject.h to ensure that the structures in
8851this
8852header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
8853manually optimized to be aligned and will not work if it is byte-packed.
8854
8855Example Code and Data Size: These are the sizes for the OS-independent
8856acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8857debug version of the code includes the debug output trace mechanism and
8858has
8859a much larger code and data size.
8860
8861  Previous Release:
8862    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
8863    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
8864  Current Release:
8865    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
8866    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
8867
8868
88692) iASL Compiler/Disassembler and Tools:
8870
8871Fixed a problem where the presence of the _OSI predefined control method
8872within complex expressions could cause an internal compiler error.
8873
8874AcpiExec: Implemented full region support for multiple address spaces.
8875SpaceId is now part of the REGION object. BZ 429
8876
8877----------------------------------------
887811 October 2006. Summary of changes for version 20061011:
8879
88801) ACPI CA Core Subsystem:
8881
8882Completed an AML interpreter performance enhancement for control method
8883execution. Previously a 2-pass parse/execution, control methods are now
8884completely parsed and executed in a single pass. This improves overall
8885interpreter performance by ~25%, reduces code size, and reduces CPU stack
8886use. (Valery Podrezov + interpreter changes in version 20051202 that
8887eliminated namespace loading during the pass one parse.)
8888
8889Implemented _CID support for PCI Root Bridge detection. If the _HID does
8890not
8891match the predefined PCI Root Bridge IDs, the _CID list (if present) is
8892now
8893obtained and also checked for an ID match.
8894
8895Implemented additional support for the PCI _ADR execution: upsearch until
8896a
8897device scope is found before executing _ADR. This allows PCI_Config
8898operation regions to be declared locally within control methods
8899underneath
8900PCI device objects.
8901
8902Fixed a problem with a possible race condition between threads executing
8903AcpiWalkNamespace and the AML interpreter. This condition was removed by
8904modifying AcpiWalkNamespace to (by default) ignore all temporary
8905namespace
8906entries created during any concurrent control method execution. An
8907additional namespace race condition is known to exist between
8908AcpiWalkNamespace and the Load/Unload ASL operators and is still under
8909investigation.
8910
8911Restructured the AML ParseLoop function, breaking it into several
8912subfunctions in order to reduce CPU stack use and improve
8913maintainability.
8914(Mikhail Kouzmich)
8915
8916AcpiGetHandle: Fix for parameter validation to detect invalid
8917combinations
8918of prefix handle and pathname. BZ 478
8919
8920Example Code and Data Size: These are the sizes for the OS-independent
8921acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8922debug version of the code includes the debug output trace mechanism and
8923has
8924a much larger code and data size.
8925
8926  Previous Release:
8927    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8928    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8929  Current Release:
8930    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
8931    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
8932
89332) iASL Compiler/Disassembler and Tools:
8934
8935Ported the -g option (get local ACPI tables) to the new ACPICA Table
8936Manager
8937to restore original behavior.
8938
8939----------------------------------------
894027 September 2006. Summary of changes for version 20060927:
8941
89421) ACPI CA Core Subsystem:
8943
8944Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
8945These functions now use a spinlock for mutual exclusion and the interrupt
8946level indication flag is not needed.
8947
8948Fixed a problem with the Global Lock where the lock could appear to be
8949obtained before it is actually obtained. The global lock semaphore was
8950inadvertently created with one unit instead of zero units. (BZ 464)
8951Fiodor
8952Suietov.
8953
8954Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
8955during
8956a read from a buffer or region field. (BZ 458) Fiodor Suietov.
8957
8958Example Code and Data Size: These are the sizes for the OS-independent
8959acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8960debug version of the code includes the debug output trace mechanism and
8961has
8962a much larger code and data size.
8963
8964  Previous Release:
8965    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8966    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
8967  Current Release:
8968    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
8969    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
8970
8971
89722) iASL Compiler/Disassembler and Tools:
8973
8974Fixed a compilation problem with the pre-defined Resource Descriptor
8975field
8976names where an "object does not exist" error could be incorrectly
8977generated
8978if the parent ResourceTemplate pathname places the template within a
8979different namespace scope than the current scope. (BZ 7212)
8980
8981Fixed a problem where the compiler could hang after syntax errors
8982detected
8983in an ElseIf construct. (BZ 453)
8984
8985Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
8986operator. An incorrect output filename was produced when this parameter
8987was
8988a null string (""). Now, the original input filename is used as the AML
8989output filename, with an ".aml" extension.
8990
8991Implemented a generic batch command mode for the AcpiExec utility
8992(execute
8993any AML debugger command) (Valery Podrezov).
8994
8995----------------------------------------
899612 September 2006. Summary of changes for version 20060912:
8997
89981) ACPI CA Core Subsystem:
8999
9000Enhanced the implementation of the "serialized mode" of the interpreter
9001(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
9002specified, instead of creating a serialization semaphore per control
9003method,
9004the interpreter lock is simply no longer released before a blocking
9005operation during control method execution. This effectively makes the AML
9006Interpreter single-threaded. The overhead of a semaphore per-method is
9007eliminated.
9008
9009Fixed a regression where an error was no longer emitted if a control
9010method
9011attempts to create 2 objects of the same name. This once again returns
9012AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
9013that
9014will dynamically serialize the control method to possible prevent future
9015errors. (BZ 440)
9016
9017Integrated a fix for a problem with PCI Express HID detection in the PCI
9018Config Space setup procedure. (BZ 7145)
9019
9020Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
9021AcpiHwInitialize function - the FADT registers are now validated when the
9022table is loaded.
9023
9024Added two new warnings during FADT verification - 1) if the FADT is
9025larger
9026than the largest known FADT version, and 2) if there is a mismatch
9027between
9028a
902932-bit block address and the 64-bit X counterpart (when both are non-
9030zero.)
9031
9032Example Code and Data Size: These are the sizes for the OS-independent
9033acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9034debug version of the code includes the debug output trace mechanism and
9035has
9036a much larger code and data size.
9037
9038  Previous Release:
9039    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
9040    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
9041  Current Release:
9042    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9043    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
9044
9045
90462) iASL Compiler/Disassembler and Tools:
9047
9048Fixed a problem with the implementation of the Switch() operator where
9049the
9050temporary variable was declared too close to the actual Switch, instead
9051of
9052at method level. This could cause a problem if the Switch() operator is
9053within a while loop, causing an error on the second iteration. (BZ 460)
9054
9055Disassembler - fix for error emitted for unknown type for target of scope
9056operator. Now, ignore it and continue.
9057
9058Disassembly of an FADT now verifies the input FADT and reports any errors
9059found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
9060
9061Disassembly of raw data buffers with byte initialization data now
9062prefixes
9063each output line with the current buffer offset.
9064
9065Disassembly of ASF! table now includes all variable-length data fields at
9066the end of some of the subtables.
9067
9068The disassembler now emits a comment if a buffer appears to be a
9069ResourceTemplate, but cannot be disassembled as such because the EndTag
9070does
9071not appear at the very end of the buffer.
9072
9073AcpiExec - Added the "-t" command line option to enable the serialized
9074mode
9075of the AML interpreter.
9076
9077----------------------------------------
907831 August 2006. Summary of changes for version 20060831:
9079
90801) ACPI CA Core Subsystem:
9081
9082Miscellaneous fixes for the Table Manager:
9083- Correctly initialize internal common FADT for all 64-bit "X" fields
9084- Fixed a couple table mapping issues during table load
9085- Fixed a couple alignment issues for IA64
9086- Initialize input array to zero in AcpiInitializeTables
9087- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
9088AcpiGetTableByIndex
9089
9090Change for GPE support: when a "wake" GPE is received, all wake GPEs are
9091now
9092immediately disabled to prevent the waking GPE from firing again and to
9093prevent other wake GPEs from interrupting the wake process.
9094
9095Added the AcpiGpeCount global that tracks the number of processed GPEs,
9096to
9097be used for debugging systems with a large number of ACPI interrupts.
9098
9099Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
9100both the ACPICA headers and the disassembler.
9101
9102Example Code and Data Size: These are the sizes for the OS-independent
9103acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9104debug version of the code includes the debug output trace mechanism and
9105has
9106a much larger code and data size.
9107
9108  Previous Release:
9109    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
9110    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
9111  Current Release:
9112    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
9113    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
9114
9115
91162) iASL Compiler/Disassembler and Tools:
9117
9118Disassembler support for the DMAR ACPI table.
9119
9120----------------------------------------
912123 August 2006. Summary of changes for version 20060823:
9122
91231) ACPI CA Core Subsystem:
9124
9125The Table Manager component has been completely redesigned and
9126reimplemented. The new design is much simpler, and reduces the overall
9127code
9128and data size of the kernel-resident ACPICA by approximately 5%. Also, it
9129is
9130now possible to obtain the ACPI tables very early during kernel
9131initialization, even before dynamic memory management is initialized.
9132(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
9133
9134Obsolete ACPICA interfaces:
9135
9136- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
9137init
9138time).
9139- AcpiLoadTable: Not needed.
9140- AcpiUnloadTable: Not needed.
9141
9142New ACPICA interfaces:
9143
9144- AcpiInitializeTables: Must be called before the table manager can be
9145used.
9146- AcpiReallocateRootTable: Used to transfer the root table to dynamically
9147allocated memory after it becomes available.
9148- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
9149tables
9150in the RSDT/XSDT.
9151
9152Other ACPICA changes:
9153
9154- AcpiGetTableHeader returns the actual mapped table header, not a copy.
9155Use
9156AcpiOsUnmapMemory to free this mapping.
9157- AcpiGetTable returns the actual mapped table. The mapping is managed
9158internally and must not be deleted by the caller. Use of this interface
9159causes no additional dynamic memory allocation.
9160- AcpiFindRootPointer: Support for physical addressing has been
9161eliminated,
9162it appeared to be unused.
9163- The interface to AcpiOsMapMemory has changed to be consistent with the
9164other allocation interfaces.
9165- The interface to AcpiOsGetRootPointer has changed to eliminate
9166unnecessary
9167parameters.
9168- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
916964-
9170bit platforms. Was previously 64 bits on all platforms.
9171- The interface to the ACPI Global Lock acquire/release macros have
9172changed
9173slightly since ACPICA no longer keeps a local copy of the FACS with a
9174constructed pointer to the actual global lock.
9175
9176Porting to the new table manager:
9177
9178- AcpiInitializeTables: Must be called once, and can be called anytime
9179during the OS initialization process. It allows the host to specify an
9180area
9181of memory to be used to store the internal version of the RSDT/XSDT (root
9182table). This allows the host to access ACPI tables before memory
9183management
9184is initialized and running.
9185- AcpiReallocateRootTable: Can be called after memory management is
9186running
9187to copy the root table to a dynamically allocated array, freeing up the
9188scratch memory specified in the call to AcpiInitializeTables.
9189- AcpiSubsystemInitialize: This existing interface is independent of the
9190Table Manager, and does not have to be called before the Table Manager
9191can
9192be used, it only must be called before the rest of ACPICA can be used.
9193- ACPI Tables: Some changes have been made to the names and structure of
9194the
9195actbl.h and actbl1.h header files and may require changes to existing
9196code.
9197For example, bitfields have been completely removed because of their lack
9198of
9199portability across C compilers.
9200- Update interfaces to the Global Lock acquire/release macros if local
9201versions are used. (see acwin.h)
9202
9203Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
9204
9205New files: tbfind.c
9206
9207Example Code and Data Size: These are the sizes for the OS-independent
9208acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9209debug version of the code includes the debug output trace mechanism and
9210has
9211a much larger code and data size.
9212
9213  Previous Release:
9214    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9215    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9216  Current Release:
9217    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
9218    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
9219
9220
92212) iASL Compiler/Disassembler and Tools:
9222
9223No changes for this release.
9224
9225----------------------------------------
922621 July 2006. Summary of changes for version 20060721:
9227
92281) ACPI CA Core Subsystem:
9229
9230The full source code for the ASL test suite used to validate the iASL
9231compiler and the ACPICA core subsystem is being released with the ACPICA
9232source for the first time. The source is contained in a separate package
9233and
9234consists of over 1100 files that exercise all ASL/AML operators. The
9235package
9236should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
9237Fiodor
9238Suietov)
9239
9240Completed a new design and implementation for support of the ACPI Global
9241Lock. On the OS side, the global lock is now treated as a standard AML
9242mutex. Previously, multiple OS threads could "acquire" the global lock
9243simultaneously. However, this could cause the BIOS to be starved out of
9244the
9245lock - especially in cases such as the Embedded Controller driver where
9246there is a tight coupling between the OS and the BIOS.
9247
9248Implemented an optimization for the ACPI Global Lock interrupt mechanism.
9249The Global Lock interrupt handler no longer queues the execution of a
9250separate thread to signal the global lock semaphore. Instead, the
9251semaphore
9252is signaled directly from the interrupt handler.
9253
9254Implemented support within the AML interpreter for package objects that
9255contain a larger AML length (package list length) than the package
9256element
9257count. In this case, the length of the package is truncated to match the
9258package element count. Some BIOS code apparently modifies the package
9259length
9260on the fly, and this change supports this behavior. Provides
9261compatibility
9262with the MS AML interpreter. (With assistance from Fiodor Suietov)
9263
9264Implemented a temporary fix for the BankValue parameter of a Bank Field
9265to
9266support all constant values, now including the Zero and One opcodes.
9267Evaluation of this parameter must eventually be converted to a full
9268TermArg
9269evaluation. A not-implemented error is now returned (temporarily) for
9270non-
9271constant values for this parameter.
9272
9273Fixed problem reports (Fiodor Suietov) integrated:
9274- Fix for premature object deletion after CopyObject on Operation Region
9275(BZ
9276350)
9277
9278Example Code and Data Size: These are the sizes for the OS-independent
9279acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9280debug version of the code includes the debug output trace mechanism and
9281has
9282a much larger code and data size.
9283
9284  Previous Release:
9285    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
9286    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
9287  Current Release:
9288    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9289    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9290
9291
92922) iASL Compiler/Disassembler and Tools:
9293
9294No changes for this release.
9295
9296----------------------------------------
929707 July 2006. Summary of changes for version 20060707:
9298
92991) ACPI CA Core Subsystem:
9300
9301Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
9302that do not allow the initialization of address pointers within packed
9303structures - even though the hardware itself may support misaligned
9304transfers. Some of the debug data structures are packed by default to
9305minimize size.
9306
9307Added an error message for the case where AcpiOsGetThreadId() returns
9308zero.
9309A non-zero value is required by the core ACPICA code to ensure the proper
9310operation of AML mutexes and recursive control methods.
9311
9312The DSDT is now the only ACPI table that determines whether the AML
9313interpreter is in 32-bit or 64-bit mode. Not really a functional change,
9314but
9315the hooks for per-table 32/64 switching have been removed from the code.
9316A
9317clarification to the ACPI specification is forthcoming in ACPI 3.0B.
9318
9319Fixed a possible leak of an OwnerID in the error path of
9320AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
9321deletion to a single place in AcpiTbUninstallTable to correct possible
9322leaks
9323when using the AcpiTbDeleteTablesByType interface (with assistance from
9324Lance Ortiz.)
9325
9326Fixed a problem with Serialized control methods where the semaphore
9327associated with the method could be over-signaled after multiple method
9328invocations.
9329
9330Fixed two issues with the locking of the internal namespace data
9331structure.
9332Both the Unload() operator and AcpiUnloadTable interface now lock the
9333namespace during the namespace deletion associated with the table unload
9334(with assistance from Linn Crosetto.)
9335
9336Fixed problem reports (Valery Podrezov) integrated:
9337- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
9338
9339Fixed problem reports (Fiodor Suietov) integrated:
9340- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
9341- On Address Space handler deletion, needless deactivation call (BZ 374)
9342- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
9343375)
9344- Possible memory leak, Notify sub-objects of Processor, Power,
9345ThermalZone
9346(BZ 376)
9347- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
9348- Minimum Length of RSDT should be validated (BZ 379)
9349- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
9350Handler (BZ (380)
9351- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
9352loaded
9353(BZ 381)
9354
9355Example Code and Data Size: These are the sizes for the OS-independent
9356acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9357debug version of the code includes the debug output trace mechanism and
9358has
9359a much larger code and data size.
9360
9361  Previous Release:
9362    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
9363    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9364  Current Release:
9365    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9366    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9367
9368
93692) iASL Compiler/Disassembler and Tools:
9370
9371Fixed problem reports:
9372Compiler segfault when ASL contains a long (>1024) String declaration (BZ
9373436)
9374
9375----------------------------------------
937623 June 2006. Summary of changes for version 20060623:
9377
93781) ACPI CA Core Subsystem:
9379
9380Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
9381allows the type to be customized to the host OS for improved efficiency
9382(since a spinlock is usually a very small object.)
9383
9384Implemented support for "ignored" bits in the ACPI registers. According
9385to
9386the ACPI specification, these bits should be preserved when writing the
9387registers via a read/modify/write cycle. There are 3 bits preserved in
9388this
9389manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
9390
9391Implemented the initial deployment of new OSL mutex interfaces. Since
9392some
9393host operating systems have separate mutex and semaphore objects, this
9394feature was requested. The base code now uses mutexes (and the new mutex
9395interfaces) wherever a binary semaphore was used previously. However, for
9396the current release, the mutex interfaces are defined as macros to map
9397them
9398to the existing semaphore interfaces. Therefore, no OSL changes are
9399required
9400at this time. (See acpiosxf.h)
9401
9402Fixed several problems with the support for the control method SyncLevel
9403parameter. The SyncLevel now works according to the ACPI specification
9404and
9405in concert with the Mutex SyncLevel parameter, since the current
9406SyncLevel
9407is a property of the executing thread. Mutual exclusion for control
9408methods
9409is now implemented with a mutex instead of a semaphore.
9410
9411Fixed three instances of the use of the C shift operator in the bitfield
9412support code (exfldio.c) to avoid the use of a shift value larger than
9413the
9414target data width. The behavior of C compilers is undefined in this case
9415and
9416can cause unpredictable results, and therefore the case must be detected
9417and
9418avoided. (Fiodor Suietov)
9419
9420Added an info message whenever an SSDT or OEM table is loaded dynamically
9421via the Load() or LoadTable() ASL operators. This should improve
9422debugging
9423capability since it will show exactly what tables have been loaded
9424(beyond
9425the tables present in the RSDT/XSDT.)
9426
9427Example Code and Data Size: These are the sizes for the OS-independent
9428acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9429debug version of the code includes the debug output trace mechanism and
9430has
9431a much larger code and data size.
9432
9433  Previous Release:
9434    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
9435    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
9436  Current Release:
9437    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
9438    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9439
9440
94412) iASL Compiler/Disassembler and Tools:
9442
9443No changes for this release.
9444
9445----------------------------------------
944608 June 2006. Summary of changes for version 20060608:
9447
94481) ACPI CA Core Subsystem:
9449
9450Converted the locking mutex used for the ACPI hardware to a spinlock.
9451This
9452change should eliminate all problems caused by attempting to acquire a
9453semaphore at interrupt level, and it means that all ACPICA external
9454interfaces that directly access the ACPI hardware can be safely called
9455from
9456interrupt level. OSL code that implements the semaphore interfaces should
9457be
9458able to eliminate any workarounds for being called at interrupt level.
9459
9460Fixed a regression introduced in 20060526 where the ACPI device
9461initialization could be prematurely aborted with an AE_NOT_FOUND if a
9462device
9463did not have an optional _INI method.
9464
9465Fixed an IndexField issue where a write to the Data Register should be
9466limited in size to the AccessSize (width) of the IndexField itself. (BZ
9467433,
9468Fiodor Suietov)
9469
9470Fixed problem reports (Valery Podrezov) integrated:
9471- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
9472
9473Fixed problem reports (Fiodor Suietov) integrated:
9474- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
9475
9476Removed four global mutexes that were obsolete and were no longer being
9477used.
9478
9479Example Code and Data Size: These are the sizes for the OS-independent
9480acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9481debug version of the code includes the debug output trace mechanism and
9482has
9483a much larger code and data size.
9484
9485  Previous Release:
9486    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
9487    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
9488  Current Release:
9489    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
9490    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
9491
9492
94932) iASL Compiler/Disassembler and Tools:
9494
9495Fixed a fault when using -g option (get tables from registry) on Windows
9496machines.
9497
9498Fixed problem reports integrated:
9499- Generate error if CreateField NumBits parameter is zero. (BZ 405)
9500- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
9501Suietov)
9502- Global table revision override (-r) is ignored (BZ 413)
9503
9504----------------------------------------
950526 May 2006. Summary of changes for version 20060526:
9506
95071) ACPI CA Core Subsystem:
9508
9509Restructured, flattened, and simplified the internal interfaces for
9510namespace object evaluation - resulting in smaller code, less CPU stack
9511use,
9512and fewer interfaces. (With assistance from Mikhail Kouzmich)
9513
9514Fixed a problem with the CopyObject operator where the first parameter
9515was
9516not typed correctly for the parser, interpreter, compiler, and
9517disassembler.
9518Caused various errors and unexpected behavior.
9519
9520Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
9521produced incorrect results with some C compilers. Since the behavior of C
9522compilers when the shift value is larger than the datatype width is
9523apparently not well defined, the interpreter now detects this condition
9524and
9525simply returns zero as expected in all such cases. (BZ 395)
9526
9527Fixed problem reports (Valery Podrezov) integrated:
9528- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
9529- Allow interpreter to handle nested method declarations (BZ 5361)
9530
9531Fixed problem reports (Fiodor Suietov) integrated:
9532- AcpiTerminate doesn't free debug memory allocation list objects (BZ
9533355)
9534- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
9535356)
9536- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
9537- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
9538- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
9539- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
9540- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
9541- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
9542- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
9543365)
9544- Status of the Global Initialization Handler call not used (BZ 366)
9545- Incorrect object parameter to Global Initialization Handler (BZ 367)
9546
9547Example Code and Data Size: These are the sizes for the OS-independent
9548acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9549debug version of the code includes the debug output trace mechanism and
9550has
9551a much larger code and data size.
9552
9553  Previous Release:
9554    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
9555    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
9556  Current Release:
9557    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
9558    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
9559
9560
95612) iASL Compiler/Disassembler and Tools:
9562
9563Modified the parser to allow the names IO, DMA, and IRQ to be used as
9564namespace identifiers with no collision with existing resource descriptor
9565macro names. This provides compatibility with other ASL compilers and is
9566most useful for disassembly/recompilation of existing tables without
9567parse
9568errors. (With assistance from Thomas Renninger)
9569
9570Disassembler: fixed an incorrect disassembly problem with the
9571DataTableRegion and CopyObject operators. Fixed a possible fault during
9572disassembly of some Alias operators.
9573
9574----------------------------------------
957512 May 2006. Summary of changes for version 20060512:
9576
95771) ACPI CA Core Subsystem:
9578
9579Replaced the AcpiOsQueueForExecution interface with a new interface named
9580AcpiOsExecute. The major difference is that the new interface does not
9581have
9582a Priority parameter, this appeared to be useless and has been replaced
9583by
9584a
9585Type parameter. The Type tells the host what type of execution is being
9586requested, such as global lock handler, notify handler, GPE handler, etc.
9587This allows the host to queue and execute the request as appropriate for
9588the
9589request type, possibly using different work queues and different
9590priorities
9591for the various request types. This enables fixes for multithreading
9592deadlock problems such as BZ #5534, and will require changes to all
9593existing
9594OS interface layers. (Alexey Starikovskiy and Bob Moore)
9595
9596Fixed a possible memory leak associated with the support for the so-
9597called
9598"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
9599Suietov)
9600
9601Fixed a problem with the Load() operator where a table load from an
9602operation region could overwrite an internal table buffer by up to 7
9603bytes
9604and cause alignment faults on IPF systems. (With assistance from Luming
9605Yu)
9606
9607Example Code and Data Size: These are the sizes for the OS-independent
9608acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9609debug version of the code includes the debug output trace mechanism and
9610has
9611a much larger code and data size.
9612
9613  Previous Release:
9614    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
9615    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
9616  Current Release:
9617    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
9618    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
9619
9620
9621
96222) iASL Compiler/Disassembler and Tools:
9623
9624Disassembler: Implemented support to cross reference the internal
9625namespace
9626and automatically generate ASL External() statements for symbols not
9627defined
9628within the current table being disassembled. This will simplify the
9629disassembly and recompilation of interdependent tables such as SSDTs
9630since
9631these statements will no longer have to be added manually.
9632
9633Disassembler: Implemented experimental support to automatically detect
9634invocations of external control methods and generate appropriate
9635External()
9636statements. This is problematic because the AML cannot be correctly
9637parsed
9638until the number of arguments for each control method is known.
9639Currently,
9640standalone method invocations and invocations as the source operand of a
9641Store() statement are supported.
9642
9643Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
9644LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
9645LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
9646more readable and likely closer to the original ASL source.
9647
9648----------------------------------------
964921 April 2006. Summary of changes for version 20060421:
9650
96511) ACPI CA Core Subsystem:
9652
9653Removed a device initialization optimization introduced in 20051216 where
9654the _STA method was not run unless an _INI was also present for the same
9655device. This optimization could cause problems because it could allow
9656_INI
9657methods to be run within a not-present device subtree. (If a not-present
9658device had no _INI, _STA would not be run, the not-present status would
9659not
9660be discovered, and the children of the device would be incorrectly
9661traversed.)
9662
9663Implemented a new _STA optimization where namespace subtrees that do not
9664contain _INI are identified and ignored during device initialization.
9665Selectively running _STA can significantly improve boot time on large
9666machines (with assistance from Len Brown.)
9667
9668Implemented support for the device initialization case where the returned
9669_STA flags indicate a device not-present but functioning. In this case,
9670_INI
9671is not run, but the device children are examined for presence, as per the
9672ACPI specification.
9673
9674Implemented an additional change to the IndexField support in order to
9675conform to MS behavior. The value written to the Index Register is not
9676simply a byte offset, it is a byte offset in units of the access width of
9677the parent Index Field. (Fiodor Suietov)
9678
9679Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
9680interface is called during the creation of all AML operation regions, and
9681allows the host OS to exert control over what addresses it will allow the
9682AML code to access. Operation Regions whose addresses are disallowed will
9683cause a runtime exception when they are actually accessed (will not
9684affect
9685or abort table loading.) See oswinxf or osunixxf for an example
9686implementation.
9687
9688Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
9689interface allows the host OS to match the various "optional"
9690interface/behavior strings for the _OSI predefined control method as
9691appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
9692for an example implementation.
9693
9694Restructured and corrected various problems in the exception handling
9695code
9696paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
9697(with assistance from Takayoshi Kochi.)
9698
9699Modified the Linux source converter to ignore quoted string literals
9700while
9701converting identifiers from mixed to lower case. This will correct
9702problems
9703with the disassembler and other areas where such strings must not be
9704modified.
9705
9706The ACPI_FUNCTION_* macros no longer require quotes around the function
9707name. This allows the Linux source converter to convert the names, now
9708that
9709the converter ignores quoted strings.
9710
9711Example Code and Data Size: These are the sizes for the OS-independent
9712acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9713debug version of the code includes the debug output trace mechanism and
9714has
9715a much larger code and data size.
9716
9717  Previous Release:
9718
9719    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
9720    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
9721  Current Release:
9722    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
9723    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
9724
9725
97262) iASL Compiler/Disassembler and Tools:
9727
9728Implemented 3 new warnings for iASL, and implemented multiple warning
9729levels
9730(w2 flag).
9731
97321) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
9733not
9734WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
9735check for the possible timeout, a warning is issued.
9736
97372) Useless operators: If an ASL operator does not specify an optional
9738target
9739operand and it also does not use the function return value from the
9740operator, a warning is issued since the operator effectively does
9741nothing.
9742
97433) Unreferenced objects: If a namespace object is created, but never
9744referenced, a warning is issued. This is a warning level 2 since there
9745are
9746cases where this is ok, such as when a secondary table is loaded that
9747uses
9748the unreferenced objects. Even so, care is taken to only flag objects
9749that
9750don't look like they will ever be used. For example, the reserved methods
9751(starting with an underscore) are usually not referenced because it is
9752expected that the OS will invoke them.
9753
9754----------------------------------------
975531 March 2006. Summary of changes for version 20060331:
9756
97571) ACPI CA Core Subsystem:
9758
9759Implemented header file support for the following additional ACPI tables:
9760ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
9761support,
9762all current and known ACPI tables are now defined in the ACPICA headers
9763and
9764are available for use by device drivers and other software.
9765
9766Implemented support to allow tables that contain ACPI names with invalid
9767characters to be loaded. Previously, this would cause the table load to
9768fail, but since there are several known cases of such tables on existing
9769machines, this change was made to enable ACPI support for them. Also,
9770this
9771matches the behavior of the Microsoft ACPI implementation.
9772
9773Fixed a couple regressions introduced during the memory optimization in
9774the
977520060317 release. The namespace node definition required additional
9776reorganization and an internal datatype that had been changed to 8-bit
9777was
9778restored to 32-bit. (Valery Podrezov)
9779
9780Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
9781could be passed through to AcpiOsReleaseObject which is unexpected. Such
9782null pointers are now trapped and ignored, matching the behavior of the
9783previous implementation before the deployment of AcpiOsReleaseObject.
9784(Valery Podrezov, Fiodor Suietov)
9785
9786Fixed a memory mapping leak during the deletion of a SystemMemory
9787operation
9788region where a cached memory mapping was not deleted. This became a
9789noticeable problem for operation regions that are defined within
9790frequently
9791used control methods. (Dana Meyers)
9792
9793Reorganized the ACPI table header files into two main files: one for the
9794ACPI tables consumed by the ACPICA core, and another for the
9795miscellaneous
9796ACPI tables that are consumed by the drivers and other software. The
9797various
9798FADT definitions were merged into one common section and three different
9799tables (ACPI 1.0, 1.0+, and 2.0)
9800
9801Example Code and Data Size: These are the sizes for the OS-independent
9802acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9803debug version of the code includes the debug output trace mechanism and
9804has
9805a much larger code and data size.
9806
9807  Previous Release:
9808    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
9809    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
9810  Current Release:
9811    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
9812    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
9813
9814
98152) iASL Compiler/Disassembler and Tools:
9816
9817Disassembler: Implemented support to decode and format all non-AML ACPI
9818tables (tables other than DSDTs and SSDTs.) This includes the new tables
9819added to the ACPICA headers, therefore all current and known ACPI tables
9820are
9821supported.
9822
9823Disassembler: The change to allow ACPI names with invalid characters also
9824enables the disassembly of such tables. Invalid characters within names
9825are
9826changed to '*' to make the name printable; the iASL compiler will still
9827generate an error for such names, however, since this is an invalid ACPI
9828character.
9829
9830Implemented an option for AcpiXtract (-a) to extract all tables found in
9831the
9832input file. The default invocation extracts only the DSDTs and SSDTs.
9833
9834Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
9835makefile for the AcpiXtract utility.
9836
9837----------------------------------------
983817 March 2006. Summary of changes for version 20060317:
9839
98401) ACPI CA Core Subsystem:
9841
9842Implemented the use of a cache object for all internal namespace nodes.
9843Since there are about 1000 static nodes in a typical system, this will
9844decrease memory use for cache implementations that minimize per-
9845allocation
9846overhead (such as a slab allocator.)
9847
9848Removed the reference count mechanism for internal namespace nodes, since
9849it
9850was deemed unnecessary. This reduces the size of each namespace node by
9851about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
9852case,
9853and 32 bytes for the 64-bit case.
9854
9855Optimized several internal data structures to reduce object size on 64-
9856bit
9857platforms by packing data within the 64-bit alignment. This includes the
9858frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
9859instances corresponding to the namespace objects.
9860
9861Added two new strings for the predefined _OSI method: "Windows 2001.1
9862SP1"
9863and "Windows 2006".
9864
9865Split the allocation tracking mechanism out to a separate file, from
9866utalloc.c to uttrack.c. This mechanism appears to be only useful for
9867application-level code. Kernels may wish to not include uttrack.c in
9868distributions.
9869
9870Removed all remnants of the obsolete ACPI_REPORT_* macros and the
9871associated
9872code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
9873macros.)
9874
9875Code and Data Size: These are the sizes for the acpica.lib produced by
9876the
9877Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9878ACPI
9879driver or OSPM code. The debug version of the code includes the debug
9880output
9881trace mechanism and has a much larger code and data size. Note that these
9882values will vary depending on the efficiency of the compiler and the
9883compiler options used during generation.
9884
9885  Previous Release:
9886    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9887    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9888  Current Release:
9889    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
9890    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
9891
9892
98932) iASL Compiler/Disassembler and Tools:
9894
9895Implemented an ANSI C version of the acpixtract utility. This version
9896will
9897automatically extract the DSDT and all SSDTs from the input acpidump text
9898file and dump the binary output to separate files. It can also display a
9899summary of the input file including the headers for each table found and
9900will extract any single ACPI table, with any signature. (See
9901source/tools/acpixtract)
9902
9903----------------------------------------
990410 March 2006. Summary of changes for version 20060310:
9905
99061) ACPI CA Core Subsystem:
9907
9908Tagged all external interfaces to the subsystem with the new
9909ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
9910assist
9911kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
9912macro. The default definition is NULL.
9913
9914Added the ACPI_THREAD_ID type for the return value from
9915AcpiOsGetThreadId.
9916This allows the host to define this as necessary to simplify kernel
9917integration. The default definition is ACPI_NATIVE_UINT.
9918
9919Fixed two interpreter problems related to error processing, the deletion
9920of
9921objects, and placing invalid pointers onto the internal operator result
9922stack. BZ 6028, 6151 (Valery Podrezov)
9923
9924Increased the reference count threshold where a warning is emitted for
9925large
9926reference counts in order to eliminate unnecessary warnings on systems
9927with
9928large namespaces (especially 64-bit.) Increased the value from 0x400 to
99290x800.
9930
9931Due to universal disagreement as to the meaning of the 'c' in the
9932calloc()
9933function, the ACPI_MEM_CALLOCATE macro has been renamed to
9934ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
9935ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
9936ACPI_FREE.
9937
9938Code and Data Size: These are the sizes for the acpica.lib produced by
9939the
9940Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
9941ACPI
9942driver or OSPM code. The debug version of the code includes the debug
9943output
9944trace mechanism and has a much larger code and data size. Note that these
9945values will vary depending on the efficiency of the compiler and the
9946compiler options used during generation.
9947
9948  Previous Release:
9949    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
9950    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
9951  Current Release:
9952    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
9953    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
9954
9955
99562) iASL Compiler/Disassembler:
9957
9958Disassembler: implemented support for symbolic resource descriptor
9959references. If a CreateXxxxField operator references a fixed offset
9960within
9961a
9962resource descriptor, a name is assigned to the descriptor and the offset
9963is
9964translated to the appropriate resource tag and pathname. The addition of
9965this support brings the disassembled code very close to the original ASL
9966source code and helps eliminate run-time errors when the disassembled
9967code
9968is modified (and recompiled) in such a way as to invalidate the original
9969fixed offsets.
9970
9971Implemented support for a Descriptor Name as the last parameter to the
9972ASL
9973Register() macro. This parameter was inadvertently left out of the ACPI
9974specification, and will be added for ACPI 3.0b.
9975
9976Fixed a problem where the use of the "_OSI" string (versus the full path
9977"\_OSI") caused an internal compiler error. ("No back ptr to op")
9978
9979Fixed a problem with the error message that occurs when an invalid string
9980is
9981used for a _HID object (such as one with an embedded asterisk:
9982"*PNP010A".)
9983The correct message is now displayed.
9984
9985----------------------------------------
998617 February 2006. Summary of changes for version 20060217:
9987
99881) ACPI CA Core Subsystem:
9989
9990Implemented a change to the IndexField support to match the behavior of
9991the
9992Microsoft AML interpreter. The value written to the Index register is now
9993a
9994byte offset, no longer an index based upon the width of the Data
9995register.
9996This should fix IndexField problems seen on some machines where the Data
9997register is not exactly one byte wide. The ACPI specification will be
9998clarified on this point.
9999
10000Fixed a problem where several resource descriptor types could overrun the
10001internal descriptor buffer due to size miscalculation: VendorShort,
10002VendorLong, and Interrupt. This was noticed on IA64 machines, but could
10003affect all platforms.
10004
10005Fixed a problem where individual resource descriptors were misaligned
10006within
10007the internal buffer, causing alignment faults on IA64 platforms.
10008
10009Code and Data Size: These are the sizes for the acpica.lib produced by
10010the
10011Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10012ACPI
10013driver or OSPM code. The debug version of the code includes the debug
10014output
10015trace mechanism and has a much larger code and data size. Note that these
10016values will vary depending on the efficiency of the compiler and the
10017compiler options used during generation.
10018
10019  Previous Release:
10020    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10021    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
10022  Current Release:
10023    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
10024    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
10025
10026
100272) iASL Compiler/Disassembler:
10028
10029Implemented support for new reserved names: _WDG and _WED are Microsoft
10030extensions for Windows Instrumentation Management, _TDL is a new ACPI-
10031defined method (Throttling Depth Limit.)
10032
10033Fixed a problem where a zero-length VendorShort or VendorLong resource
10034descriptor was incorrectly emitted as a descriptor of length one.
10035
10036----------------------------------------
1003710 February 2006. Summary of changes for version 20060210:
10038
100391) ACPI CA Core Subsystem:
10040
10041Removed a couple of extraneous ACPI_ERROR messages that appeared during
10042normal execution. These became apparent after the conversion from
10043ACPI_DEBUG_PRINT.
10044
10045Fixed a problem where the CreateField operator could hang if the BitIndex
10046or
10047NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
10048
10049Fixed a problem where a DeRefOf operation on a buffer object incorrectly
10050failed with an exception. This also fixes a couple of related RefOf and
10051DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
10052
10053Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
10054of
10055AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
10056BZ
100575480)
10058
10059Implemented a memory cleanup at the end of the execution of each
10060iteration
10061of an AML While() loop, preventing the accumulation of outstanding
10062objects.
10063(Valery Podrezov, BZ 5427)
10064
10065Eliminated a chunk of duplicate code in the object resolution code.
10066(Valery
10067Podrezov, BZ 5336)
10068
10069Fixed several warnings during the 64-bit code generation.
10070
10071The AcpiSrc source code conversion tool now inserts one line of
10072whitespace
10073after an if() statement that is followed immediately by a comment,
10074improving
10075readability of the Linux code.
10076
10077Code and Data Size: The current and previous library sizes for the core
10078subsystem are shown below. These are the code and data sizes for the
10079acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10080These
10081values do not include any ACPI driver or OSPM code. The debug version of
10082the
10083code includes the debug output trace mechanism and has a much larger code
10084and data size. Note that these values will vary depending on the
10085efficiency
10086of the compiler and the compiler options used during generation.
10087
10088  Previous Release:
10089    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
10090    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
10091  Current Release:
10092    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10093    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
10094
10095
100962) iASL Compiler/Disassembler:
10097
10098Fixed a problem with the disassembly of a BankField operator with a
10099complex
10100expression for the BankValue parameter.
10101
10102----------------------------------------
1010327 January 2006. Summary of changes for version 20060127:
10104
101051) ACPI CA Core Subsystem:
10106
10107Implemented support in the Resource Manager to allow unresolved
10108namestring
10109references within resource package objects for the _PRT method. This
10110support
10111is in addition to the previously implemented unresolved reference support
10112within the AML parser. If the interpreter slack mode is enabled, these
10113unresolved references will be passed through to the caller as a NULL
10114package
10115entry.
10116
10117Implemented and deployed new macros and functions for error and warning
10118messages across the subsystem. These macros are simpler and generate less
10119code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
10120ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
10121macros remain defined to allow ACPI drivers time to migrate to the new
10122macros.
10123
10124Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
10125the
10126Acquire/Release Lock OSL interfaces.
10127
10128Fixed a problem where Alias ASL operators are sometimes not correctly
10129resolved, in both the interpreter and the iASL compiler.
10130
10131Fixed several problems with the implementation of the
10132ConcatenateResTemplate
10133ASL operator. As per the ACPI specification, zero length buffers are now
10134treated as a single EndTag. One-length buffers always cause a fatal
10135exception. Non-zero length buffers that do not end with a full 2-byte
10136EndTag
10137cause a fatal exception.
10138
10139Fixed a possible structure overwrite in the AcpiGetObjectInfo external
10140interface. (With assistance from Thomas Renninger)
10141
10142Code and Data Size: The current and previous library sizes for the core
10143subsystem are shown below. These are the code and data sizes for the
10144acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10145These
10146values do not include any ACPI driver or OSPM code. The debug version of
10147the
10148code includes the debug output trace mechanism and has a much larger code
10149and data size. Note that these values will vary depending on the
10150efficiency
10151of the compiler and the compiler options used during generation.
10152
10153  Previous Release:
10154    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
10155    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
10156  Current Release:
10157    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
10158    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
10159
10160
101612) iASL Compiler/Disassembler:
10162
10163Fixed an internal error that was generated for any forward references to
10164ASL
10165Alias objects.
10166
10167----------------------------------------
1016813 January 2006. Summary of changes for version 20060113:
10169
101701) ACPI CA Core Subsystem:
10171
10172Added 2006 copyright to all module headers and signons. This affects
10173virtually every file in the ACPICA core subsystem, iASL compiler, and the
10174utilities.
10175
10176Enhanced the ACPICA error reporting in order to simplify user migration
10177to
10178the non-debug version of ACPICA. Replaced all instances of the
10179ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
10180debug
10181levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
10182respectively. This preserves all error and warning messages in the non-
10183debug
10184version of the ACPICA code (this has been referred to as the "debug lite"
10185option.) Over 200 cases were converted to create a total of over 380
10186error/warning messages across the ACPICA code. This increases the code
10187and
10188data size of the default non-debug version of the code somewhat (about
1018913K),
10190but all error/warning reporting may be disabled if desired (and code
10191eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
10192configuration option. The size of the debug version of ACPICA remains
10193about
10194the same.
10195
10196Fixed a memory leak within the AML Debugger "Set" command. One object was
10197not properly deleted for every successful invocation of the command.
10198
10199Code and Data Size: The current and previous library sizes for the core
10200subsystem are shown below. These are the code and data sizes for the
10201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10202These
10203values do not include any ACPI driver or OSPM code. The debug version of
10204the
10205code includes the debug output trace mechanism and has a much larger code
10206and data size. Note that these values will vary depending on the
10207efficiency
10208of the compiler and the compiler options used during generation.
10209
10210  Previous Release:
10211    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
10212    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
10213  Current Release:
10214    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
10215    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
10216
10217
102182) iASL Compiler/Disassembler:
10219
10220The compiler now officially supports the ACPI 3.0a specification that was
10221released on December 30, 2005. (Specification is available at
10222www.acpi.info)
10223
10224----------------------------------------
1022516 December 2005. Summary of changes for version 20051216:
10226
102271) ACPI CA Core Subsystem:
10228
10229Implemented optional support to allow unresolved names within ASL Package
10230objects. A null object is inserted in the package when a named reference
10231cannot be located in the current namespace. Enabled via the interpreter
10232slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
10233machines
10234that contain such code.
10235
10236Implemented an optimization to the initialization sequence that can
10237improve
10238boot time. During ACPI device initialization, the _STA method is now run
10239if
10240and only if the _INI method exists. The _STA method is used to determine
10241if
10242the device is present; An _INI can only be run if _STA returns present,
10243but
10244it is a waste of time to run the _STA method if the _INI does not exist.
10245(Prototype and assistance from Dong Wei)
10246
10247Implemented use of the C99 uintptr_t for the pointer casting macros if it
10248is
10249available in the current compiler. Otherwise, the default (void *) cast
10250is
10251used as before.
10252
10253Fixed some possible memory leaks found within the execution path of the
10254Break, Continue, If, and CreateField operators. (Valery Podrezov)
10255
10256Fixed a problem introduced in the 20051202 release where an exception is
10257generated during method execution if a control method attempts to declare
10258another method.
10259
10260Moved resource descriptor string constants that are used by both the AML
10261disassembler and AML debugger to the common utilities directory so that
10262these components are independent.
10263
10264Implemented support in the AcpiExec utility (-e switch) to globally
10265ignore
10266exceptions during control method execution (method is not aborted.)
10267
10268Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
10269generation.
10270
10271Code and Data Size: The current and previous library sizes for the core
10272subsystem are shown below. These are the code and data sizes for the
10273acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10274These
10275values do not include any ACPI driver or OSPM code. The debug version of
10276the
10277code includes the debug output trace mechanism and has a much larger code
10278and data size. Note that these values will vary depending on the
10279efficiency
10280of the compiler and the compiler options used during generation.
10281
10282  Previous Release:
10283    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10284    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
10285  Current Release:
10286    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
10287    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
10288
10289
102902) iASL Compiler/Disassembler:
10291
10292Fixed a problem where a CPU stack overflow fault could occur if a
10293recursive
10294method call was made from within a Return statement.
10295
10296----------------------------------------
1029702 December 2005. Summary of changes for version 20051202:
10298
102991) ACPI CA Core Subsystem:
10300
10301Modified the parsing of control methods to no longer create namespace
10302objects during the first pass of the parse. Objects are now created only
10303during the execute phase, at the moment the namespace creation operator
10304is
10305encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
10306This
10307should eliminate ALREADY_EXISTS exceptions seen on some machines where
10308reentrant control methods are protected by an AML mutex. The mutex will
10309now
10310correctly block multiple threads from attempting to create the same
10311object
10312more than once.
10313
10314Increased the number of available Owner Ids for namespace object tracking
10315from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
10316on
10317some machines with a large number of ACPI tables (either static or
10318dynamic).
10319
10320Fixed a problem with the AcpiExec utility where a fault could occur when
10321the
10322-b switch (batch mode) is used.
10323
10324Enhanced the namespace dump routine to output the owner ID for each
10325namespace object.
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:  76.3K Code, 12.3K Data,  88.6K Total
10340    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10341  Current Release:
10342    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10343    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
10344
10345
103462) iASL Compiler/Disassembler:
10347
10348Fixed a parse error during compilation of certain Switch/Case constructs.
10349To
10350simplify the parse, the grammar now allows for multiple Default
10351statements
10352and this error is now detected and flagged during the analysis phase.
10353
10354Disassembler: The disassembly now includes the contents of the original
10355table header within a comment at the start of the file. This includes the
10356name and version of the original ASL compiler.
10357
10358----------------------------------------
1035917 November 2005. Summary of changes for version 20051117:
10360
103611) ACPI CA Core Subsystem:
10362
10363Fixed a problem in the AML parser where the method thread count could be
10364decremented below zero if any errors occurred during the method parse
10365phase.
10366This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
10367machines.
10368This also fixed a related regression with the mechanism that detects and
10369corrects methods that cannot properly handle reentrancy (related to the
10370deployment of the new OwnerId mechanism.)
10371
10372Eliminated the pre-parsing of control methods (to detect errors) during
10373table load. Related to the problem above, this was causing unwind issues
10374if
10375any errors occurred during the parse, and it seemed to be overkill. A
10376table
10377load should not be aborted if there are problems with any single control
10378method, thus rendering this feature rather pointless.
10379
10380Fixed a problem with the new table-driven resource manager where an
10381internal
10382buffer overflow could occur for small resource templates.
10383
10384Implemented a new external interface, AcpiGetVendorResource. This
10385interface
10386will find and return a vendor-defined resource descriptor within a _CRS
10387or
10388_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
10389Helgaas.
10390
10391Removed the length limit (200) on string objects as per the upcoming ACPI
103923.0A specification. This affects the following areas of the interpreter:
103931)
10394any implicit conversion of a Buffer to a String, 2) a String object
10395result
10396of the ASL Concatentate operator, 3) the String object result of the ASL
10397ToString operator.
10398
10399Fixed a problem in the Windows OS interface layer (OSL) where a
10400WAIT_FOREVER
10401on a semaphore object would incorrectly timeout. This allows the
10402multithreading features of the AcpiExec utility to work properly under
10403Windows.
10404
10405Updated the Linux makefiles for the iASL compiler and AcpiExec to include
10406the recently added file named "utresrc.c".
10407
10408Code and Data Size: The current and previous library sizes for the core
10409subsystem are shown below. These are the code and data sizes for the
10410acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10411These
10412values do not include any ACPI driver or OSPM code. The debug version of
10413the
10414code includes the debug output trace mechanism and has a much larger code
10415and data size. Note that these values will vary depending on the
10416efficiency
10417of the compiler and the compiler options used during generation.
10418
10419  Previous Release:
10420    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
10421    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10422  Current Release:
10423    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10424    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10425
10426
104272) iASL Compiler/Disassembler:
10428
10429Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
10430specification. For the iASL compiler, this means that string literals
10431within
10432the source ASL can be of any length.
10433
10434Enhanced the listing output to dump the AML code for resource descriptors
10435immediately after the ASL code for each descriptor, instead of in a block
10436at
10437the end of the entire resource template.
10438
10439Enhanced the compiler debug output to dump the entire original parse tree
10440constructed during the parse phase, before any transforms are applied to
10441the
10442tree. The transformed tree is dumped also.
10443
10444----------------------------------------
1044502 November 2005. Summary of changes for version 20051102:
10446
104471) ACPI CA Core Subsystem:
10448
10449Modified the subsystem initialization sequence to improve GPE support.
10450The
10451GPE initialization has been split into two parts in order to defer
10452execution
10453of the _PRW methods (Power Resources for Wake) until after the hardware
10454is
10455fully initialized and the SCI handler is installed. This allows the _PRW
10456methods to access fields protected by the Global Lock. This will fix
10457systems
10458where a NO_GLOBAL_LOCK exception has been seen during initialization.
10459
10460Converted the ACPI internal object disassemble and display code within
10461the
10462AML debugger to fully table-driven operation, reducing code size and
10463increasing maintainability.
10464
10465Fixed a regression with the ConcatenateResTemplate() ASL operator
10466introduced
10467in the 20051021 release.
10468
10469Implemented support for "local" internal ACPI object types within the
10470debugger "Object" command and the AcpiWalkNamespace external interfaces.
10471These local types include RegionFields, BankFields, IndexFields, Alias,
10472and
10473reference objects.
10474
10475Moved common AML resource handling code into a new file, "utresrc.c".
10476This
10477code is shared by both the Resource Manager and the AML Debugger.
10478
10479Code and Data Size: The current and previous library sizes for the core
10480subsystem are shown below. These are the code and data sizes for the
10481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10482These
10483values do not include any ACPI driver or OSPM code. The debug version of
10484the
10485code includes the debug output trace mechanism and has a much larger code
10486and data size. Note that these values will vary depending on the
10487efficiency
10488of the compiler and the compiler options used during generation.
10489
10490  Previous Release:
10491    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
10492    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
10493  Current Release:
10494    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
10495    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10496
10497
104982) iASL Compiler/Disassembler:
10499
10500Fixed a problem with very large initializer lists (more than 4000
10501elements)
10502for both Buffer and Package objects where the parse stack could overflow.
10503
10504Enhanced the pre-compile source code scan for non-ASCII characters to
10505ignore
10506characters within comment fields. The scan is now always performed and is
10507no
10508longer optional, detecting invalid characters within a source file
10509immediately rather than during the parse phase or later.
10510
10511Enhanced the ASL grammar definition to force early reductions on all
10512list-
10513style grammar elements so that the overall parse stack usage is greatly
10514reduced. This should improve performance and reduce the possibility of
10515parse
10516stack overflow.
10517
10518Eliminated all reduce/reduce conflicts in the iASL parser generation.
10519Also,
10520with the addition of a %expected statement, the compiler generates from
10521source with no warnings.
10522
10523Fixed a possible segment fault in the disassembler if the input filename
10524does not contain a "dot" extension (Thomas Renninger).
10525
10526----------------------------------------
1052721 October 2005. Summary of changes for version 20051021:
10528
105291) ACPI CA Core Subsystem:
10530
10531Implemented support for the EM64T and other x86-64 processors. This
10532essentially entails recognizing that these processors support non-aligned
10533memory transfers. Previously, all 64-bit processors were assumed to lack
10534hardware support for non-aligned transfers.
10535
10536Completed conversion of the Resource Manager to nearly full table-driven
10537operation. Specifically, the resource conversion code (convert AML to
10538internal format and the reverse) and the debug code to dump internal
10539resource descriptors are fully table-driven, reducing code and data size
10540and
10541improving maintainability.
10542
10543The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
10544word
10545on 64-bit processors instead of a fixed 32-bit word. (With assistance
10546from
10547Alexey Starikovskiy)
10548
10549Implemented support within the resource conversion code for the Type-
10550Specific byte within the various ACPI 3.0 *WordSpace macros.
10551
10552Fixed some issues within the resource conversion code for the type-
10553specific
10554flags for both Memory and I/O address resource descriptors. For Memory,
10555implemented support for the MTP and TTP flags. For I/O, split the TRS and
10556TTP flags into two separate fields.
10557
10558Code and Data Size: The current and previous library sizes for the core
10559subsystem are shown below. These are the code and data sizes for the
10560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10561These
10562values do not include any ACPI driver or OSPM code. The debug version of
10563the
10564code includes the debug output trace mechanism and has a much larger code
10565and data size. Note that these values will vary depending on the
10566efficiency
10567of the compiler and the compiler options used during generation.
10568
10569  Previous Release:
10570    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
10571    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
10572  Current Release:
10573    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
10574    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
10575
10576
10577
105782) iASL Compiler/Disassembler:
10579
10580Relaxed a compiler restriction that disallowed a ResourceIndex byte if
10581the
10582corresponding ResourceSource string was not also present in a resource
10583descriptor declaration. This restriction caused problems with existing
10584AML/ASL code that includes the Index byte without the string. When such
10585AML
10586was disassembled, it could not be compiled without modification. Further,
10587the modified code created a resource template with a different size than
10588the
10589original, breaking code that used fixed offsets into the resource
10590template
10591buffer.
10592
10593Removed a recent feature of the disassembler to ignore a lone
10594ResourceIndex
10595byte. This byte is now emitted if present so that the exact AML can be
10596reproduced when the disassembled code is recompiled.
10597
10598Improved comments and text alignment for the resource descriptor code
10599emitted by the disassembler.
10600
10601Implemented disassembler support for the ACPI 3.0 AccessSize field within
10602a
10603Register() resource descriptor.
10604
10605----------------------------------------
1060630 September 2005. Summary of changes for version 20050930:
10607
106081) ACPI CA Core Subsystem:
10609
10610Completed a major overhaul of the Resource Manager code - specifically,
10611optimizations in the area of the AML/internal resource conversion code.
10612The
10613code has been optimized to simplify and eliminate duplicated code, CPU
10614stack
10615use has been decreased by optimizing function parameters and local
10616variables, and naming conventions across the manager have been
10617standardized
10618for clarity and ease of maintenance (this includes function, parameter,
10619variable, and struct/typedef names.) The update may force changes in some
10620driver code, depending on how resources are handled by the host OS.
10621
10622All Resource Manager dispatch and information tables have been moved to a
10623single location for clarity and ease of maintenance. One new file was
10624created, named "rsinfo.c".
10625
10626The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
10627guarantee that the argument is not evaluated twice, making them less
10628prone
10629to macro side-effects. However, since there exists the possibility of
10630additional stack use if a particular compiler cannot optimize them (such
10631as
10632in the debug generation case), the original macros are optionally
10633available.
10634Note that some invocations of the return_VALUE macro may now cause size
10635mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
10636to
10637eliminate these. (From Randy Dunlap)
10638
10639Implemented a new mechanism to enable debug tracing for individual
10640control
10641methods. A new external interface, AcpiDebugTrace, is provided to enable
10642this mechanism. The intent is to allow the host OS to easily enable and
10643disable tracing for problematic control methods. This interface can be
10644easily exposed to a user or debugger interface if desired. See the file
10645psxface.c for details.
10646
10647AcpiUtCallocate will now return a valid pointer if a length of zero is
10648specified - a length of one is used and a warning is issued. This matches
10649the behavior of AcpiUtAllocate.
10650
10651Code and Data Size: The current and previous library sizes for the core
10652subsystem are shown below. These are the code and data sizes for the
10653acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10654These
10655values do not include any ACPI driver or OSPM code. The debug version of
10656the
10657code includes the debug output trace mechanism and has a much larger code
10658and data size. Note that these values will vary depending on the
10659efficiency
10660of the compiler and the compiler options used during generation.
10661
10662  Previous Release:
10663    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
10664    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
10665  Current Release:
10666    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
10667    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
10668
10669
106702) iASL Compiler/Disassembler:
10671
10672A remark is issued if the effective compile-time length of a package or
10673buffer is zero. Previously, this was a warning.
10674
10675----------------------------------------
1067616 September 2005. Summary of changes for version 20050916:
10677
106781) ACPI CA Core Subsystem:
10679
10680Fixed a problem within the Resource Manager where support for the Generic
10681Register descriptor was not fully implemented. This descriptor is now
10682fully
10683recognized, parsed, disassembled, and displayed.
10684
10685Completely restructured the Resource Manager code to utilize table-driven
10686dispatch and lookup, eliminating many of the large switch() statements.
10687This
10688reduces overall subsystem code size and code complexity. Affects the
10689resource parsing and construction, disassembly, and debug dump output.
10690
10691Cleaned up and restructured the debug dump output for all resource
10692descriptors. Improved readability of the output and reduced code size.
10693
10694Fixed a problem where changes to internal data structures caused the
10695optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
10696
10697Code and Data Size: The current and previous library sizes for the core
10698subsystem are shown below. These are the code and data sizes for the
10699acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10700These
10701values do not include any ACPI driver or OSPM code. The debug version of
10702the
10703code includes the debug output trace mechanism and has a much larger code
10704and data size. Note that these values will vary depending on the
10705efficiency
10706of the compiler and the compiler options used during generation.
10707
10708  Previous Release:
10709    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
10710    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
10711  Current Release:
10712    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
10713    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
10714
10715
107162) iASL Compiler/Disassembler:
10717
10718Updated the disassembler to automatically insert an EndDependentFn()
10719macro
10720into the ASL stream if this macro is missing in the original AML code,
10721simplifying compilation of the resulting ASL module.
10722
10723Fixed a problem in the disassembler where a disassembled ResourceSource
10724string (within a large resource descriptor) was not surrounded by quotes
10725and
10726not followed by a comma, causing errors when the resulting ASL module was
10727compiled. Also, escape sequences within a ResourceSource string are now
10728handled correctly (especially "\\")
10729
10730----------------------------------------
1073102 September 2005. Summary of changes for version 20050902:
10732
107331) ACPI CA Core Subsystem:
10734
10735Fixed a problem with the internal Owner ID allocation and deallocation
10736mechanisms for control method execution and recursive method invocation.
10737This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
10738messages seen on some systems. Recursive method invocation depth is
10739currently limited to 255. (Alexey Starikovskiy)
10740
10741Completely eliminated all vestiges of support for the "module-level
10742executable code" until this support is fully implemented and debugged.
10743This
10744should eliminate the NO_RETURN_VALUE exceptions seen during table load on
10745some systems that invoke this support.
10746
10747Fixed a problem within the resource manager code where the transaction
10748flags
10749for a 64-bit address descriptor were handled incorrectly in the type-
10750specific flag byte.
10751
10752Consolidated duplicate code within the address descriptor resource
10753manager
10754code, reducing overall subsystem code size.
10755
10756Fixed a fault when using the AML debugger "disassemble" command to
10757disassemble individual control methods.
10758
10759Removed references to the "release_current" directory within the Unix
10760release package.
10761
10762Code and Data Size: The current and previous core subsystem library sizes
10763are shown below. These are the code and data sizes for the acpica.lib
10764produced by the Microsoft Visual C++ 6.0 compiler. These values do not
10765include any ACPI driver or OSPM code. The debug version of the code
10766includes
10767the debug output trace mechanism and has a much larger code and data
10768size.
10769Note that these values will vary depending on the efficiency of the
10770compiler
10771and the compiler options used during generation.
10772
10773  Previous Release:
10774    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10775    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
10776  Current Release:
10777    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
10778    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
10779
10780
107812) iASL Compiler/Disassembler:
10782
10783Implemented an error check for illegal duplicate values in the interrupt
10784and
10785dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
10786Interrupt().
10787
10788Implemented error checking for the Irq() and IrqNoFlags() macros to
10789detect
10790too many values in the interrupt list (16 max) and invalid values in the
10791list (range 0 - 15)
10792
10793The maximum length string literal within an ASL file is now restricted to
10794200 characters as per the ACPI specification.
10795
10796Fixed a fault when using the -ln option (generate namespace listing).
10797
10798Implemented an error check to determine if a DescriptorName within a
10799resource descriptor has already been used within the current scope.
10800
10801----------------------------------------
1080215 August 2005.  Summary of changes for version 20050815:
10803
108041) ACPI CA Core Subsystem:
10805
10806Implemented a full bytewise compare to determine if a table load request
10807is
10808attempting to load a duplicate table. The compare is performed if the
10809table
10810signatures and table lengths match. This will allow different tables with
10811the same OEM Table ID and revision to be loaded - probably against the
10812ACPI
10813specification, but discovered in the field nonetheless.
10814
10815Added the changes.txt logfile to each of the zipped release packages.
10816
10817Code and Data Size: Current and previous core subsystem library sizes are
10818shown below. These are the code and data sizes for the acpica.lib
10819produced
10820by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10821any ACPI driver or OSPM code. The debug version of the code includes the
10822debug output trace mechanism and has a much larger code and data size.
10823Note
10824that these values will vary depending on the efficiency of the compiler
10825and
10826the compiler options used during generation.
10827
10828  Previous Release:
10829    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10830    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
10831  Current Release:
10832    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10833    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
10834
10835
108362) iASL Compiler/Disassembler:
10837
10838Fixed a problem where incorrect AML code could be generated for Package
10839objects if optimization is disabled (via the -oa switch).
10840
10841Fixed a problem with where incorrect AML code is generated for variable-
10842length packages when the package length is not specified and the number
10843of
10844initializer values is greater than 255.
10845
10846
10847----------------------------------------
1084829 July 2005.  Summary of changes for version 20050729:
10849
108501) ACPI CA Core Subsystem:
10851
10852Implemented support to ignore an attempt to install/load a particular
10853ACPI
10854table more than once. Apparently there exists BIOS code that repeatedly
10855attempts to load the same SSDT upon certain events. With assistance from
10856Venkatesh Pallipadi.
10857
10858Restructured the main interface to the AML parser in order to correctly
10859handle all exceptional conditions. This will prevent leakage of the
10860OwnerId
10861resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
10862some
10863machines. With assistance from Alexey Starikovskiy.
10864
10865Support for "module level code" has been disabled in this version due to
10866a
10867number of issues that have appeared on various machines. The support can
10868be
10869enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
10870compilation. When the issues are fully resolved, the code will be enabled
10871by
10872default again.
10873
10874Modified the internal functions for debug print support to define the
10875FunctionName parameter as a (const char *) for compatibility with
10876compiler
10877built-in macros such as __FUNCTION__, etc.
10878
10879Linted the entire ACPICA source tree for both 32-bit and 64-bit.
10880
10881Implemented support to display an object count summary for the AML
10882Debugger
10883commands Object and Methods.
10884
10885Code and Data Size: Current and previous core subsystem library sizes are
10886shown below. These are the code and data sizes for the acpica.lib
10887produced
10888by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10889any ACPI driver or OSPM code. The debug version of the code includes the
10890debug output trace mechanism and has a much larger code and data size.
10891Note
10892that these values will vary depending on the efficiency of the compiler
10893and
10894the compiler options used during generation.
10895
10896  Previous Release:
10897    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10898    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10899  Current Release:
10900    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
10901    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
10902
10903
109042) iASL Compiler/Disassembler:
10905
10906Fixed a regression that appeared in the 20050708 version of the compiler
10907where an error message was inadvertently emitted for invocations of the
10908_OSI
10909reserved control method.
10910
10911----------------------------------------
1091208 July 2005.  Summary of changes for version 20050708:
10913
109141) ACPI CA Core Subsystem:
10915
10916The use of the CPU stack in the debug version of the subsystem has been
10917considerably reduced. Previously, a debug structure was declared in every
10918function that used the debug macros. This structure has been removed in
10919favor of declaring the individual elements as parameters to the debug
10920functions. This reduces the cumulative stack use during nested execution
10921of
10922ACPI function calls at the cost of a small increase in the code size of
10923the
10924debug version of the subsystem. With assistance from Alexey Starikovskiy
10925and
10926Len Brown.
10927
10928Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
10929headers to define a macro that will return the current function name at
10930runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
10931by
10932the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
10933compiler-dependent header, the function name is saved on the CPU stack
10934(one
10935pointer per function.) This mechanism is used because apparently there
10936exists no standard ANSI-C defined macro that that returns the function
10937name.
10938
10939Redesigned and reimplemented the "Owner ID" mechanism used to track
10940namespace objects created/deleted by ACPI tables and control method
10941execution. A bitmap is now used to allocate and free the IDs, thus
10942solving
10943the wraparound problem present in the previous implementation. The size
10944of
10945the namespace node descriptor was reduced by 2 bytes as a result (Alexey
10946Starikovskiy).
10947
10948Removed the UINT32_BIT and UINT16_BIT types that were used for the
10949bitfield
10950flag definitions within the headers for the predefined ACPI tables. These
10951have been replaced by UINT8_BIT in order to increase the code portability
10952of
10953the subsystem. If the use of UINT8 remains a problem, we may be forced to
10954eliminate bitfields entirely because of a lack of portability.
10955
10956Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
10957This
10958is a frequently used function and this improvement increases the
10959performance
10960of the entire subsystem (Alexey Starikovskiy).
10961
10962Fixed several possible memory leaks and the inverse - premature object
10963deletion (Alexey Starikovskiy).
10964
10965Code and Data Size: Current and previous core subsystem library sizes are
10966shown below. These are the code and data sizes for the acpica.lib
10967produced
10968by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10969any ACPI driver or OSPM code. The debug version of the code includes the
10970debug output trace mechanism and has a much larger code and data size.
10971Note
10972that these values will vary depending on the efficiency of the compiler
10973and
10974the compiler options used during generation.
10975
10976  Previous Release:
10977    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
10978    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
10979  Current Release:
10980    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
10981    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
10982
10983----------------------------------------
1098424 June 2005.  Summary of changes for version 20050624:
10985
109861) ACPI CA Core Subsystem:
10987
10988Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
10989the host-defined cache object. This allows the OSL implementation to
10990define
10991and type this object in any manner desired, simplifying the OSL
10992implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
10993Linux, and should be defined in the OS-specific header file for other
10994operating systems as required.
10995
10996Changed the interface to AcpiOsAcquireObject to directly return the
10997requested object as the function return (instead of ACPI_STATUS.) This
10998change was made for performance reasons, since this is the purpose of the
10999interface in the first place. AcpiOsAcquireObject is now similar to the
11000AcpiOsAllocate interface.
11001
11002Implemented a new AML debugger command named Businfo. This command
11003displays
11004information about all devices that have an associate _PRT object. The
11005_ADR,
11006_HID, _UID, and _CID are displayed for these devices.
11007
11008Modified the initialization sequence in AcpiInitializeSubsystem to call
11009the
11010OSL interface AcpiOslInitialize first, before any local initialization.
11011This
11012change was required because the global initialization now calls OSL
11013interfaces.
11014
11015Enhanced the Dump command to display the entire contents of Package
11016objects
11017(including all sub-objects and their values.)
11018
11019Restructured the code base to split some files because of size and/or
11020because the code logically belonged in a separate file. New files are
11021listed
11022below. All makefiles and project files included in the ACPI CA release
11023have
11024been updated.
11025    utilities/utcache.c           /* Local cache interfaces */
11026    utilities/utmutex.c           /* Local mutex support */
11027    utilities/utstate.c           /* State object support */
11028    interpreter/parser/psloop.c   /* Main AML parse loop */
11029
11030Code and Data Size: Current and previous core subsystem library sizes are
11031shown below. These are the code and data sizes for the acpica.lib
11032produced
11033by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11034any ACPI driver or OSPM code. The debug version of the code includes the
11035debug output trace mechanism and has a much larger code and data size.
11036Note
11037that these values will vary depending on the efficiency of the compiler
11038and
11039the compiler options used during generation.
11040
11041  Previous Release:
11042    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
11043    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
11044  Current Release:
11045    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
11046    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
11047
11048
110492) iASL Compiler/Disassembler:
11050
11051Fixed a regression introduced in version 20050513 where the use of a
11052Package
11053object within a Case() statement caused a compile time exception. The
11054original behavior has been restored (a Match() operator is emitted.)
11055
11056----------------------------------------
1105717 June 2005.  Summary of changes for version 20050617:
11058
110591) ACPI CA Core Subsystem:
11060
11061Moved the object cache operations into the OS interface layer (OSL) to
11062allow
11063the host OS to handle these operations if desired (for example, the Linux
11064OSL will invoke the slab allocator). This support is optional; the
11065compile
11066time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
11067cache
11068code in the ACPI CA core. The new OSL interfaces are shown below. See
11069utalloc.c for an example implementation, and acpiosxf.h for the exact
11070interface definitions. With assistance from Alexey Starikovskiy.
11071    AcpiOsCreateCache
11072    AcpiOsDeleteCache
11073    AcpiOsPurgeCache
11074    AcpiOsAcquireObject
11075    AcpiOsReleaseObject
11076
11077Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
11078return
11079and restore a flags parameter. This fits better with many OS lock models.
11080Note: the current execution state (interrupt handler or not) is no longer
11081passed to these interfaces. If necessary, the OSL must determine this
11082state
11083by itself, a simple and fast operation. With assistance from Alexey
11084Starikovskiy.
11085
11086Fixed a problem in the ACPI table handling where a valid XSDT was assumed
11087present if the revision of the RSDP was 2 or greater. According to the
11088ACPI
11089specification, the XSDT is optional in all cases, and the table manager
11090therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
11091Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
11092contain
11093only the RSDT.
11094
11095Fixed an interpreter problem with the Mid() operator in the case of an
11096input
11097string where the resulting output string is of zero length. It now
11098correctly
11099returns a valid, null terminated string object instead of a string object
11100with a null pointer.
11101
11102Fixed a problem with the control method argument handling to allow a
11103store
11104to an Arg object that already contains an object of type Device. The
11105Device
11106object is now correctly overwritten. Previously, an error was returned.
11107
11108
11109Enhanced the debugger Find command to emit object values in addition to
11110the
11111found object pathnames. The output format is the same as the dump
11112namespace
11113command.
11114
11115Enhanced the debugger Set command. It now has the ability to set the
11116value
11117of any Named integer object in the namespace (Previously, only method
11118locals
11119and args could be set.)
11120
11121Code and Data Size: Current and previous core subsystem library sizes are
11122shown below. These are the code and data sizes for the acpica.lib
11123produced
11124by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11125any ACPI driver or OSPM code. The debug version of the code includes the
11126debug output trace mechanism and has a much larger code and data size.
11127Note
11128that these values will vary depending on the efficiency of the compiler
11129and
11130the compiler options used during generation.
11131
11132  Previous Release:
11133    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
11134    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
11135  Current Release:
11136    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
11137    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
11138
11139
111402) iASL Compiler/Disassembler:
11141
11142Fixed a regression in the disassembler where if/else/while constructs
11143were
11144output incorrectly. This problem was introduced in the previous release
11145(20050526). This problem also affected the single-step disassembly in the
11146debugger.
11147
11148Fixed a problem where compiling the reserved _OSI method would randomly
11149(but
11150rarely) produce compile errors.
11151
11152Enhanced the disassembler to emit compilable code in the face of
11153incorrect
11154AML resource descriptors. If the optional ResourceSourceIndex is present,
11155but the ResourceSource is not, do not emit the ResourceSourceIndex in the
11156disassembly. Otherwise, the resulting code cannot be compiled without
11157errors.
11158
11159----------------------------------------
1116026 May 2005.  Summary of changes for version 20050526:
11161
111621) ACPI CA Core Subsystem:
11163
11164Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
11165the module level (not within a control method.) These opcodes are
11166executed
11167exactly once at the time the table is loaded. This type of code was legal
11168up
11169until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
11170in
11171order to provide backwards compatibility with earlier BIOS
11172implementations.
11173This eliminates the "Encountered executable code at module level" warning
11174that was previously generated upon detection of such code.
11175
11176Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
11177inadvertently be generated during the lookup of namespace objects in the
11178second pass parse of ACPI tables and control methods. It appears that
11179this
11180problem could occur during the resolution of forward references to
11181namespace
11182objects.
11183
11184Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
11185corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
11186allows the deadlock detection debug code to be compiled out in the normal
11187case, improving mutex performance (and overall subsystem performance)
11188considerably.
11189
11190Implemented a handful of miscellaneous fixes for possible memory leaks on
11191error conditions and error handling control paths. These fixes were
11192suggested by FreeBSD and the Coverity Prevent source code analysis tool.
11193
11194Added a check for a null RSDT pointer in AcpiGetFirmwareTable
11195(tbxfroot.c)
11196to prevent a fault in this error case.
11197
11198Code and Data Size: Current and previous core subsystem library sizes are
11199shown below. These are the code and data sizes for the acpica.lib
11200produced
11201by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11202any ACPI driver or OSPM code. The debug version of the code includes the
11203debug output trace mechanism and has a much larger code and data size.
11204Note
11205that these values will vary depending on the efficiency of the compiler
11206and
11207the compiler options used during generation.
11208
11209  Previous Release:
11210    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11211    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11212  Current Release:
11213    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
11214    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
11215
11216
112172) iASL Compiler/Disassembler:
11218
11219Implemented support to allow Type 1 and Type 2 ASL operators to appear at
11220the module level (not within a control method.) These operators will be
11221executed once at the time the table is loaded. This type of code was
11222legal
11223up until the release of ACPI 2.0B (2002) and is now supported by the iASL
11224compiler in order to provide backwards compatibility with earlier BIOS
11225ASL
11226code.
11227
11228The ACPI integer width (specified via the table revision ID or the -r
11229override, 32 or 64 bits) is now used internally during compile-time
11230constant
11231folding to ensure that constants are truncated to 32 bits if necessary.
11232Previously, the revision ID value was only emitted in the AML table
11233header.
11234
11235An error message is now generated for the Mutex and Method operators if
11236the
11237SyncLevel parameter is outside the legal range of 0 through 15.
11238
11239Fixed a problem with the Method operator ParameterTypes list handling
11240(ACPI
112413.0). Previously, more than 2 types or 2 arguments generated a syntax
11242error.
11243The actual underlying implementation of method argument typechecking is
11244still under development, however.
11245
11246----------------------------------------
1124713 May 2005.  Summary of changes for version 20050513:
11248
112491) ACPI CA Core Subsystem:
11250
11251Implemented support for PCI Express root bridges -- added support for
11252device
11253PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
11254
11255The interpreter now automatically truncates incoming 64-bit constants to
1125632
11257bits if currently executing out of a 32-bit ACPI table (Revision < 2).
11258This
11259also affects the iASL compiler constant folding. (Note: as per below, the
11260iASL compiler no longer allows 64-bit constants within 32-bit tables.)
11261
11262Fixed a problem where string and buffer objects with "static" pointers
11263(pointers to initialization data within an ACPI table) were not handled
11264consistently. The internal object copy operation now always copies the
11265data
11266to a newly allocated buffer, regardless of whether the source object is
11267static or not.
11268
11269Fixed a problem with the FromBCD operator where an implicit result
11270conversion was improperly performed while storing the result to the
11271target
11272operand. Since this is an "explicit conversion" operator, the implicit
11273conversion should never be performed on the output.
11274
11275Fixed a problem with the CopyObject operator where a copy to an existing
11276named object did not always completely overwrite the existing object
11277stored
11278at name. Specifically, a buffer-to-buffer copy did not delete the
11279existing
11280buffer.
11281
11282Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
11283and
11284structs for consistency.
11285
11286Code and Data Size: Current and previous core subsystem library sizes are
11287shown below. These are the code and data sizes for the acpica.lib
11288produced
11289by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11290any ACPI driver or OSPM code. The debug version of the code includes the
11291debug output trace mechanism and has a much larger code and data size.
11292Note
11293that these values will vary depending on the efficiency of the compiler
11294and
11295the compiler options used during generation.
11296
11297  Previous Release:
11298    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11299    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11300  Current Release: (Same sizes)
11301    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11302    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11303
11304
113052) iASL Compiler/Disassembler:
11306
11307The compiler now emits a warning if an attempt is made to generate a 64-
11308bit
11309integer constant from within a 32-bit ACPI table (Revision < 2). The
11310integer
11311is truncated to 32 bits.
11312
11313Fixed a problem with large package objects: if the static length of the
11314package is greater than 255, the "variable length package" opcode is
11315emitted. Previously, this caused an error. This requires an update to the
11316ACPI spec, since it currently (incorrectly) states that packages larger
11317than
11318255 elements are not allowed.
11319
11320The disassembler now correctly handles variable length packages and
11321packages
11322larger than 255 elements.
11323
11324----------------------------------------
1132508 April 2005.  Summary of changes for version 20050408:
11326
113271) ACPI CA Core Subsystem:
11328
11329Fixed three cases in the interpreter where an "index" argument to an ASL
11330function was still (internally) 32 bits instead of the required 64 bits.
11331This was the Index argument to the Index, Mid, and Match operators.
11332
11333The "strupr" function is now permanently local (AcpiUtStrupr), since this
11334is
11335not a POSIX-defined function and not present in most kernel-level C
11336libraries. All references to the C library strupr function have been
11337removed
11338from the headers.
11339
11340Completed the deployment of static functions/prototypes. All prototypes
11341with
11342the static attribute have been moved from the headers to the owning C
11343file.
11344
11345Implemented an extract option (-e) for the AcpiBin utility (AML binary
11346utility). This option allows the utility to extract individual ACPI
11347tables
11348from the output of AcpiDmp. It provides the same functionality of the
11349acpixtract.pl perl script without the worry of setting the correct perl
11350options. AcpiBin runs on Windows and has not yet been generated/validated
11351in
11352the Linux/Unix environment (but should be soon).
11353
11354Updated and fixed the table dump option for AcpiBin (-d). This option
11355converts a single ACPI table to a hex/ascii file, similar to the output
11356of
11357AcpiDmp.
11358
11359Code and Data Size: Current and previous core subsystem library sizes are
11360shown below. These are the code and data sizes for the acpica.lib
11361produced
11362by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11363any ACPI driver or OSPM code. The debug version of the code includes the
11364debug output trace mechanism and has a much larger code and data size.
11365Note
11366that these values will vary depending on the efficiency of the compiler
11367and
11368the compiler options used during generation.
11369
11370  Previous Release:
11371    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11372    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11373  Current Release:
11374    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11375    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11376
11377
113782) iASL Compiler/Disassembler:
11379
11380Disassembler fix: Added a check to ensure that the table length found in
11381the
11382ACPI table header within the input file is not longer than the actual
11383input
11384file size. This indicates some kind of file or table corruption.
11385
11386----------------------------------------
1138729 March 2005.  Summary of changes for version 20050329:
11388
113891) ACPI CA Core Subsystem:
11390
11391An error is now generated if an attempt is made to create a Buffer Field
11392of
11393length zero (A CreateField with a length operand of zero.)
11394
11395The interpreter now issues a warning whenever executable code at the
11396module
11397level is detected during ACPI table load. This will give some idea of the
11398prevalence of this type of code.
11399
11400Implemented support for references to named objects (other than control
11401methods) within package objects.
11402
11403Enhanced package object output for the debug object. Package objects are
11404now
11405completely dumped, showing all elements.
11406
11407Enhanced miscellaneous object output for the debug object. Any object can
11408now be written to the debug object (for example, a device object can be
11409written, and the type of the object will be displayed.)
11410
11411The "static" qualifier has been added to all local functions across both
11412the
11413core subsystem and the iASL compiler.
11414
11415The number of "long" lines (> 80 chars) within the source has been
11416significantly reduced, by about 1/3.
11417
11418Cleaned up all header files to ensure that all CA/iASL functions are
11419prototyped (even static functions) and the formatting is consistent.
11420
11421Two new header files have been added, acopcode.h and acnames.h.
11422
11423Removed several obsolete functions that were no longer used.
11424
11425Code and Data Size: Current and previous core subsystem library sizes are
11426shown below. These are the code and data sizes for the acpica.lib
11427produced
11428by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11429any ACPI driver or OSPM code. The debug version of the code includes the
11430debug output trace mechanism and has a much larger code and data size.
11431Note
11432that these values will vary depending on the efficiency of the compiler
11433and
11434the compiler options used during generation.
11435
11436  Previous Release:
11437    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11438    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
11439  Current Release:
11440    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11441    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11442
11443
11444
114452) iASL Compiler/Disassembler:
11446
11447Fixed a problem with the resource descriptor generation/support. For the
11448ResourceSourceIndex and the ResourceSource fields, both must be present,
11449or
11450both must be not present - can't have one without the other.
11451
11452The compiler now returns non-zero from the main procedure if any errors
11453have
11454occurred during the compilation.
11455
11456
11457----------------------------------------
1145809 March 2005.  Summary of changes for version 20050309:
11459
114601) ACPI CA Core Subsystem:
11461
11462The string-to-buffer implicit conversion code has been modified again
11463after
11464a change to the ACPI specification.  In order to match the behavior of
11465the
11466other major ACPI implementation, the target buffer is no longer truncated
11467if
11468the source string is smaller than an existing target buffer. This change
11469requires an update to the ACPI spec, and should eliminate the recent
11470AE_AML_BUFFER_LIMIT issues.
11471
11472The "implicit return" support was rewritten to a new algorithm that
11473solves
11474the general case. Rather than attempt to determine when a method is about
11475to
11476exit, the result of every ASL operator is saved momentarily until the
11477very
11478next ASL operator is executed. Therefore, no matter how the method exits,
11479there will always be a saved implicit return value. This feature is only
11480enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
11481eliminate
11482AE_AML_NO_RETURN_VALUE errors when enabled.
11483
11484Implemented implicit conversion support for the predicate (operand) of
11485the
11486If, Else, and While operators. String and Buffer arguments are
11487automatically
11488converted to Integers.
11489
11490Changed the string-to-integer conversion behavior to match the new ACPI
11491errata: "If no integer object exists, a new integer is created. The ASCII
11492string is interpreted as a hexadecimal constant. Each string character is
11493interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
11494with the first character as the most significant digit, and ending with
11495the
11496first non-hexadecimal character or end-of-string." This means that the
11497first
11498non-hex character terminates the conversion and this is the code that was
11499changed.
11500
11501Fixed a problem where the ObjectType operator would fail (fault) when
11502used
11503on an Index of a Package which pointed to a null package element. The
11504operator now properly returns zero (Uninitialized) in this case.
11505
11506Fixed a problem where the While operator used excessive memory by not
11507properly popping the result stack during execution. There was no memory
11508leak
11509after execution, however. (Code provided by Valery Podrezov.)
11510
11511Fixed a problem where references to control methods within Package
11512objects
11513caused the method to be invoked, instead of producing a reference object
11514pointing to the method.
11515
11516Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
11517to
11518improve performance and reduce code size. (Code provided by Alexey
11519Starikovskiy.)
11520
11521Code and Data Size: Current and previous core subsystem library sizes are
11522shown below. These are the code and data sizes for the acpica.lib
11523produced
11524by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11525any ACPI driver or OSPM code. The debug version of the code includes the
11526debug output trace mechanism and has a much larger code and data size.
11527Note
11528that these values will vary depending on the efficiency of the compiler
11529and
11530the compiler options used during generation.
11531
11532  Previous Release:
11533    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11534    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
11535  Current Release:
11536    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11537    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
11538
11539
115402) iASL Compiler/Disassembler:
11541
11542Fixed a problem with the Return operator with no arguments. Since the AML
11543grammar for the byte encoding requires an operand for the Return opcode,
11544the
11545compiler now emits a Return(Zero) for this case.  An ACPI specification
11546update has been written for this case.
11547
11548For tables other than the DSDT, namepath optimization is automatically
11549disabled. This is because SSDTs can be loaded anywhere in the namespace,
11550the
11551compiler has no knowledge of where, and thus cannot optimize namepaths.
11552
11553Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
11554inadvertently omitted from the ACPI specification, and will require an
11555update to the spec.
11556
11557The source file scan for ASCII characters is now optional (-a). This
11558change
11559was made because some vendors place non-ascii characters within comments.
11560However, the scan is simply a brute-force byte compare to ensure all
11561characters in the file are in the range 0x00 to 0x7F.
11562
11563Fixed a problem with the CondRefOf operator where the compiler was
11564inappropriately checking for the existence of the target. Since the point
11565of
11566the operator is to check for the existence of the target at run-time, the
11567compiler no longer checks for the target existence.
11568
11569Fixed a problem where errors generated from the internal AML interpreter
11570during constant folding were not handled properly, causing a fault.
11571
11572Fixed a problem with overly aggressive range checking for the Stall
11573operator. The valid range (max 255) is now only checked if the operand is
11574of
11575type Integer. All other operand types cannot be statically checked.
11576
11577Fixed a problem where control method references within the RefOf,
11578DeRefOf,
11579and ObjectType operators were not treated properly. They are now treated
11580as
11581actual references, not method invocations.
11582
11583Fixed and enhanced the "list namespace" option (-ln). This option was
11584broken
11585a number of releases ago.
11586
11587Improved error handling for the Field, IndexField, and BankField
11588operators.
11589The compiler now cleanly reports and recovers from errors in the field
11590component (FieldUnit) list.
11591
11592Fixed a disassembler problem where the optional ResourceDescriptor fields
11593TRS and TTP were not always handled correctly.
11594
11595Disassembler - Comments in output now use "//" instead of "/*"
11596
11597----------------------------------------
1159828 February 2005.  Summary of changes for version 20050228:
11599
116001) ACPI CA Core Subsystem:
11601
11602Fixed a problem where the result of an Index() operator (an object
11603reference) must increment the reference count on the target object for
11604the
11605life of the object reference.
11606
11607Implemented AML Interpreter and Debugger support for the new ACPI 3.0
11608Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
11609WordSpace
11610resource descriptors.
11611
11612Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
11613Space Descriptor" string, indicating interpreter support for the
11614descriptors
11615above.
11616
11617Implemented header support for the new ACPI 3.0 FADT flag bits.
11618
11619Implemented header support for the new ACPI 3.0 PCI Express bits for the
11620PM1
11621status/enable registers.
11622
11623Updated header support for the MADT processor local Apic struct and MADT
11624platform interrupt source struct for new ACPI 3.0 fields.
11625
11626Implemented header support for the SRAT and SLIT ACPI tables.
11627
11628Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
11629flag
11630at runtime.
11631
11632Code and Data Size: Current and previous core subsystem library sizes are
11633shown below. These are the code and data sizes for the acpica.lib
11634produced
11635by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11636any ACPI driver or OSPM code. The debug version of the code includes the
11637debug output trace mechanism and has a much larger code and data size.
11638Note
11639that these values will vary depending on the efficiency of the compiler
11640and
11641the compiler options used during generation.
11642
11643  Previous Release:
11644    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
11645    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
11646  Current Release:
11647    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11648    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
11649
11650
116512) iASL Compiler/Disassembler:
11652
11653Fixed a problem with the internal 64-bit String-to-integer conversion
11654with
11655strings less than two characters long.
11656
11657Fixed a problem with constant folding where the result of the Index()
11658operator can not be considered a constant. This means that Index() cannot
11659be
11660a type3 opcode and this will require an update to the ACPI specification.
11661
11662Disassembler: Implemented support for the TTP, MTP, and TRS resource
11663descriptor fields. These fields were inadvertently ignored and not output
11664in
11665the disassembly of the resource descriptor.
11666
11667
11668 ----------------------------------------
1166911 February 2005.  Summary of changes for version 20050211:
11670
116711) ACPI CA Core Subsystem:
11672
11673Implemented ACPI 3.0 support for implicit conversion within the Match()
11674operator. MatchObjects can now be of type integer, buffer, or string
11675instead
11676of just type integer.  Package elements are implicitly converted to the
11677type
11678of the MatchObject. This change aligns the behavior of Match() with the
11679behavior of the other logical operators (LLess(), etc.) It also requires
11680an
11681errata change to the ACPI specification as this support was intended for
11682ACPI 3.0, but was inadvertently omitted.
11683
11684Fixed a problem with the internal implicit "to buffer" conversion.
11685Strings
11686that are converted to buffers will cause buffer truncation if the string
11687is
11688smaller than the target buffer. Integers that are converted to buffers
11689will
11690not cause buffer truncation, only zero extension (both as per the ACPI
11691spec.) The problem was introduced when code was added to truncate the
11692buffer, but this should not be performed in all cases, only the string
11693case.
11694
11695Fixed a problem with the Buffer and Package operators where the
11696interpreter
11697would get confused if two such operators were used as operands to an ASL
11698operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
11699stack was not being popped after the execution of these operators,
11700resulting
11701in an AE_NO_RETURN_VALUE exception.
11702
11703Fixed a problem with constructs of the form Store(Index(...),...). The
11704reference object returned from Index was inadvertently resolved to an
11705actual
11706value. This problem was introduced in version 20050114 when the behavior
11707of
11708Store() was modified to restrict the object types that can be used as the
11709source operand (to match the ACPI specification.)
11710
11711Reduced excessive stack use within the AcpiGetObjectInfo procedure.
11712
11713Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
11714
11715Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
11716
11717Code and Data Size: Current and previous core subsystem library sizes are
11718shown below. These are the code and data sizes for the acpica.lib
11719produced
11720by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11721any ACPI driver or OSPM code. The debug version of the code includes the
11722debug output trace mechanism and has a much larger code and data size.
11723Note
11724that these values will vary depending on the efficiency of the compiler
11725and
11726the compiler options used during generation.
11727
11728  Previous Release:
11729    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
11730    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
11731  Current Release:
11732    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
11733    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
11734
11735
117362) iASL Compiler/Disassembler:
11737
11738Fixed a code generation problem in the constant folding optimization code
11739where incorrect code was generated if a constant was reduced to a buffer
11740object (i.e., a reduced type 5 opcode.)
11741
11742Fixed a typechecking problem for the ToBuffer operator. Caused by an
11743incorrect return type in the internal opcode information table.
11744
11745----------------------------------------
1174625 January 2005.  Summary of changes for version 20050125:
11747
117481) ACPI CA Core Subsystem:
11749
11750Fixed a recently introduced problem with the Global Lock where the
11751underlying semaphore was not created.  This problem was introduced in
11752version 20050114, and caused an AE_AML_NO_OPERAND exception during an
11753Acquire() operation on _GL.
11754
11755The local object cache is now optional, and is disabled by default. Both
11756AcpiExec and the iASL compiler enable the cache because they run in user
11757mode and this enhances their performance. #define
11758ACPI_ENABLE_OBJECT_CACHE
11759to enable the local cache.
11760
11761Fixed an issue in the internal function AcpiUtEvaluateObject concerning
11762the
11763optional "implicit return" support where an error was returned if no
11764return
11765object was expected, but one was implicitly returned. AE_OK is now
11766returned
11767in this case and the implicitly returned object is deleted.
11768AcpiUtEvaluateObject is only occasionally used, and only to execute
11769reserved
11770methods such as _STA and _INI where the return type is known up front.
11771
11772Fixed a few issues with the internal convert-to-integer code. It now
11773returns
11774an error if an attempt is made to convert a null string, a string of only
11775blanks/tabs, or a zero-length buffer. This affects both implicit
11776conversion
11777and explicit conversion via the ToInteger() operator.
11778
11779The internal debug code in AcpiUtAcquireMutex has been commented out. It
11780is
11781not needed for normal operation and should increase the performance of
11782the
11783entire subsystem. The code remains in case it is needed for debug
11784purposes
11785again.
11786
11787The AcpiExec source and makefile are included in the Unix/Linux package
11788for
11789the first time.
11790
11791Code and Data Size: Current and previous core subsystem library sizes are
11792shown below. These are the code and data sizes for the acpica.lib
11793produced
11794by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11795any ACPI driver or OSPM code. The debug version of the code includes the
11796debug output trace mechanism and has a much larger code and data size.
11797Note
11798that these values will vary depending on the efficiency of the compiler
11799and
11800the compiler options used during generation.
11801
11802  Previous Release:
11803    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
11804    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
11805  Current Release:
11806    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
11807    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
11808
118092) iASL Compiler/Disassembler:
11810
11811Switch/Case support: A warning is now issued if the type of the Switch
11812value
11813cannot be determined at compile time. For example, Switch(Arg0) will
11814generate the warning, and the type is assumed to be an integer. As per
11815the
11816ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
11817the
11818warning.
11819
11820Switch/Case support: Implemented support for buffer and string objects as
11821the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
11822buffers and strings.
11823
11824Switch/Case support: The emitted code for the LEqual() comparisons now
11825uses
11826the switch value as the first operand, not the second. The case value is
11827now
11828the second operand, and this allows the case value to be implicitly
11829converted to the type of the switch value, not the other way around.
11830
11831Switch/Case support: Temporary variables are now emitted immediately
11832within
11833the control method, not at the global level. This means that there are
11834now
1183536 temps available per-method, not 36 temps per-module as was the case
11836with
11837the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
11838
11839----------------------------------------
1184014 January 2005.  Summary of changes for version 20050114:
11841
11842Added 2005 copyright to all module headers.  This affects every module in
11843the core subsystem, iASL compiler, and the utilities.
11844
118451) ACPI CA Core Subsystem:
11846
11847Fixed an issue with the String-to-Buffer conversion code where the string
11848null terminator was not included in the buffer after conversion, but
11849there
11850is existing ASL that assumes the string null terminator is included. This
11851is
11852the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
11853introduced in the previous version when the code was updated to correctly
11854set the converted buffer size as per the ACPI specification. The ACPI
11855spec
11856is ambiguous and will be updated to specify that the null terminator must
11857be
11858included in the converted buffer. This also affects the ToBuffer() ASL
11859operator.
11860
11861Fixed a problem with the Mid() ASL/AML operator where it did not work
11862correctly on Buffer objects. Newly created sub-buffers were not being
11863marked
11864as initialized.
11865
11866
11867Fixed a problem in AcpiTbFindTable where incorrect string compares were
11868performed on the OemId and OemTableId table header fields.  These fields
11869are
11870not null terminated, so strncmp is now used instead of strcmp.
11871
11872Implemented a restriction on the Store() ASL/AML operator to align the
11873behavior with the ACPI specification.  Previously, any object could be
11874used
11875as the source operand.  Now, the only objects that may be used are
11876Integers,
11877Buffers, Strings, Packages, Object References, and DDB Handles.  If
11878necessary, the original behavior can be restored by enabling the
11879EnableInterpreterSlack flag.
11880
11881Enhanced the optional "implicit return" support to allow an implicit
11882return
11883value from methods that are invoked externally via the AcpiEvaluateObject
11884interface.  This enables implicit returns from the _STA and _INI methods,
11885for example.
11886
11887Changed the Revision() ASL/AML operator to return the current version of
11888the
11889AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
11890returned
11891the supported ACPI version (This is the function of the _REV method).
11892
11893Updated the _REV predefined method to return the currently supported
11894version
11895of ACPI, now 3.
11896
11897Implemented batch mode option for the AcpiExec utility (-b).
11898
11899Code and Data Size: Current and previous core subsystem library sizes are
11900shown below. These are the code and data sizes for the acpica.lib
11901produced
11902by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11903any ACPI driver or OSPM code. The debug version of the code includes the
11904debug output trace mechanism and has a much larger code and data size.
11905Note
11906that these values will vary depending on the efficiency of the compiler
11907and
11908the compiler options used during generation.
11909
11910  Previous Release:
11911    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11912    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11913  Current Release:
11914    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
11915    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
11916
11917----------------------------------------
1191810 December 2004.  Summary of changes for version 20041210:
11919
11920ACPI 3.0 support is nearing completion in both the iASL compiler and the
11921ACPI CA core subsystem.
11922
119231) ACPI CA Core Subsystem:
11924
11925Fixed a problem in the ToDecimalString operator where the resulting
11926string
11927length was incorrectly calculated. The length is now calculated exactly,
11928eliminating incorrect AE_STRING_LIMIT exceptions.
11929
11930Fixed a problem in the ToHexString operator to allow a maximum 200
11931character
11932string to be produced.
11933
11934Fixed a problem in the internal string-to-buffer and buffer-to-buffer
11935copy
11936routine where the length of the resulting buffer was not truncated to the
11937new size (if the target buffer already existed).
11938
11939Code and Data Size: Current and previous core subsystem library sizes are
11940shown below. These are the code and data sizes for the acpica.lib
11941produced
11942by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11943any ACPI driver or OSPM code. The debug version of the code includes the
11944debug output trace mechanism and has a much larger code and data size.
11945Note
11946that these values will vary depending on the efficiency of the compiler
11947and
11948the compiler options used during generation.
11949
11950  Previous Release:
11951    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11952    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
11953  Current Release:
11954    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
11955    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
11956
11957
119582) iASL Compiler/Disassembler:
11959
11960Implemented the new ACPI 3.0 resource template macros - DWordSpace,
11961ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
11962Includes support in the disassembler.
11963
11964Implemented support for the new (ACPI 3.0) parameter to the Register
11965macro,
11966AccessSize.
11967
11968Fixed a problem where the _HE resource name for the Interrupt macro was
11969referencing bit 0 instead of bit 1.
11970
11971Implemented check for maximum 255 interrupts in the Interrupt macro.
11972
11973Fixed a problem with the predefined resource descriptor names where
11974incorrect AML code was generated if the offset within the resource buffer
11975was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
11976but did not update the surrounding package lengths.
11977
11978Changes to the Dma macro:  All channels within the channel list must be
11979in
11980the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
11981optional (default is BusMaster).
11982
11983Implemented check for maximum 7 data bytes for the VendorShort macro.
11984
11985The ReadWrite parameter is now optional for the Memory32 and similar
11986macros.
11987
11988----------------------------------------
1198903 December 2004.  Summary of changes for version 20041203:
11990
119911) ACPI CA Core Subsystem:
11992
11993The low-level field insertion/extraction code (exfldio) has been
11994completely
11995rewritten to eliminate unnecessary complexity, bugs, and boundary
11996conditions.
11997
11998Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
11999ToDecimalString
12000operators where the input operand could be inadvertently deleted if no
12001conversion was necessary (e.g., if the input to ToInteger was an Integer
12002object.)
12003
12004Fixed a problem with the ToDecimalString and ToHexString where an
12005incorrect
12006exception code was returned if the resulting string would be > 200 chars.
12007AE_STRING_LIMIT is now returned.
12008
12009Fixed a problem with the Concatenate operator where AE_OK was always
12010returned, even if the operation failed.
12011
12012Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
12013semaphores to be allocated.
12014
12015Code and Data Size: Current and previous core subsystem library sizes are
12016shown below. These are the code and data sizes for the acpica.lib
12017produced
12018by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12019any ACPI driver or OSPM code. The debug version of the code includes the
12020debug output trace mechanism and has a much larger code and data size.
12021Note
12022that these values will vary depending on the efficiency of the compiler
12023and
12024the compiler options used during generation.
12025
12026  Previous Release:
12027    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12028    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12029  Current Release:
12030    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12031    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
12032
12033
120342) iASL Compiler/Disassembler:
12035
12036Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
12037recently introduced in 20041119.
12038
12039Fixed a problem with the ToUUID macro where the upper nybble of each
12040buffer
12041byte was inadvertently set to zero.
12042
12043----------------------------------------
1204419 November 2004.  Summary of changes for version 20041119:
12045
120461) ACPI CA Core Subsystem:
12047
12048Fixed a problem in the internal ConvertToInteger routine where new
12049integers
12050were not truncated to 32 bits for 32-bit ACPI tables. This routine
12051converts
12052buffers and strings to integers.
12053
12054Implemented support to store a value to an Index() on a String object.
12055This
12056is an ACPI 2.0 feature that had not yet been implemented.
12057
12058Implemented new behavior for storing objects to individual package
12059elements
12060(via the Index() operator). The previous behavior was to invoke the
12061implicit
12062conversion rules if an object was already present at the index.  The new
12063behavior is to simply delete any existing object and directly store the
12064new
12065object. Although the ACPI specification seems unclear on this subject,
12066other
12067ACPI implementations behave in this manner.  (This is the root of the
12068AE_BAD_HEX_CONSTANT issue.)
12069
12070Modified the RSDP memory scan mechanism to support the extended checksum
12071for
12072ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
12073RSDP signature is found with a valid checksum.
12074
12075Code and Data Size: Current and previous core subsystem library sizes are
12076shown below. These are the code and data sizes for the acpica.lib
12077produced
12078by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12079any ACPI driver or OSPM code. The debug version of the code includes the
12080debug output trace mechanism and has a much larger code and data size.
12081Note
12082that these values will vary depending on the efficiency of the compiler
12083and
12084the compiler options used during generation.
12085
12086  Previous Release:
12087    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12088    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12089  Current Release:
12090    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12091    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12092
12093
120942) iASL Compiler/Disassembler:
12095
12096Fixed a missing semicolon in the aslcompiler.y file.
12097
12098----------------------------------------
1209905 November 2004.  Summary of changes for version 20041105:
12100
121011) ACPI CA Core Subsystem:
12102
12103Implemented support for FADT revision 2.  This was an interim table
12104(between
12105ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
12106
12107Implemented optional support to allow uninitialized LocalX and ArgX
12108variables in a control method.  The variables are initialized to an
12109Integer
12110object with a value of zero.  This support is enabled by setting the
12111AcpiGbl_EnableInterpreterSlack flag to TRUE.
12112
12113Implemented support for Integer objects for the SizeOf operator.  Either
121144
12115or 8 is returned, depending on the current integer size (32-bit or 64-
12116bit,
12117depending on the parent table revision).
12118
12119Fixed a problem in the implementation of the SizeOf and ObjectType
12120operators
12121where the operand was resolved to a value too early, causing incorrect
12122return values for some objects.
12123
12124Fixed some possible memory leaks during exceptional conditions.
12125
12126Code and Data Size: Current and previous core subsystem library sizes are
12127shown below. These are the code and data sizes for the acpica.lib
12128produced
12129by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12130any ACPI driver or OSPM code. The debug version of the code includes the
12131debug output trace mechanism and has a much larger code and data size.
12132Note
12133that these values will vary depending on the efficiency of the compiler
12134and
12135the compiler options used during generation.
12136
12137  Previous Release:
12138    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12139    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
12140  Current Release:
12141    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12142    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12143
12144
121452) iASL Compiler/Disassembler:
12146
12147Implemented support for all ACPI 3.0 reserved names and methods.
12148
12149Implemented all ACPI 3.0 grammar elements in the front-end, including
12150support for semicolons.
12151
12152Implemented the ACPI 3.0 Function() and ToUUID() macros
12153
12154Fixed a problem in the disassembler where a Scope() operator would not be
12155emitted properly if the target of the scope was in another table.
12156
12157----------------------------------------
1215815 October 2004.  Summary of changes for version 20041015:
12159
12160Note:  ACPI CA is currently undergoing an in-depth and complete formal
12161evaluation to test/verify the following areas. Other suggestions are
12162welcome. This will result in an increase in the frequency of releases and
12163the number of bug fixes in the next few months.
12164  - Functional tests for all ASL/AML operators
12165  - All implicit/explicit type conversions
12166  - Bit fields and operation regions
12167  - 64-bit math support and 32-bit-only "truncated" math support
12168  - Exceptional conditions, both compiler and interpreter
12169  - Dynamic object deletion and memory leaks
12170  - ACPI 3.0 support when implemented
12171  - External interfaces to the ACPI subsystem
12172
12173
121741) ACPI CA Core Subsystem:
12175
12176Fixed two alignment issues on 64-bit platforms - within debug statements
12177in
12178AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
12179Address
12180field within the non-aligned ACPI generic address structure.
12181
12182Fixed a problem in the Increment and Decrement operators where incorrect
12183operand resolution could result in the inadvertent modification of the
12184original integer when the integer is passed into another method as an
12185argument and the arg is then incremented/decremented.
12186
12187Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
12188bit
12189BCD number were truncated during conversion.
12190
12191Fixed a problem in the ToDecimal operator where the length of the
12192resulting
12193string could be set incorrectly too long if the input operand was a
12194Buffer
12195object.
12196
12197Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
12198(0)
12199within a buffer would prematurely terminate a compare between buffer
12200objects.
12201
12202Added a check for string overflow (>200 characters as per the ACPI
12203specification) during the Concatenate operator with two string operands.
12204
12205Code and Data Size: Current and previous core subsystem library sizes are
12206shown below. These are the code and data sizes for the acpica.lib
12207produced
12208by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12209any ACPI driver or OSPM code. The debug version of the code includes the
12210debug output trace mechanism and has a much larger code and data size.
12211Note
12212that these values will vary depending on the efficiency of the compiler
12213and
12214the compiler options used during generation.
12215
12216  Previous Release:
12217    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12218    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
12219  Current Release:
12220    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12221    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
12222
12223
12224
122252) iASL Compiler/Disassembler:
12226
12227Allow the use of the ObjectType operator on uninitialized Locals and Args
12228(returns 0 as per the ACPI specification).
12229
12230Fixed a problem where the compiler would fault if there was a syntax
12231error
12232in the FieldName of all of the various CreateXXXField operators.
12233
12234Disallow the use of lower case letters within the EISAID macro, as per
12235the
12236ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
12237Where
12238U is an uppercase letter and N is a hex digit.
12239
12240
12241----------------------------------------
1224206 October 2004.  Summary of changes for version 20041006:
12243
122441) ACPI CA Core Subsystem:
12245
12246Implemented support for the ACPI 3.0 Timer operator. This ASL function
12247implements a 64-bit timer with 100 nanosecond granularity.
12248
12249Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
12250implement the ACPI 3.0 Timer operator.  This allows the host OS to
12251implement
12252the timer with the best clock available. Also, it keeps the core
12253subsystem
12254out of the clock handling business, since the host OS (usually) performs
12255this function.
12256
12257Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
12258functions use a 64-bit address which is part of the packed ACPI Generic
12259Address Structure. Since the structure is non-aligned, the alignment
12260macros
12261are now used to extract the address to a local variable before use.
12262
12263Fixed a problem where the ToInteger operator assumed all input strings
12264were
12265hexadecimal. The operator now handles both decimal strings and hex
12266strings
12267(prefixed with "0x").
12268
12269Fixed a problem where the string length in the string object created as a
12270result of the internal ConvertToString procedure could be incorrect. This
12271potentially affected all implicit conversions and also the
12272ToDecimalString
12273and ToHexString operators.
12274
12275Fixed two problems in the ToString operator. If the length parameter was
12276zero, an incorrect string object was created and the value of the input
12277length parameter was inadvertently changed from zero to Ones.
12278
12279Fixed a problem where the optional ResourceSource string in the
12280ExtendedIRQ
12281resource macro was ignored.
12282
12283Simplified the interfaces to the internal division functions, reducing
12284code
12285size and complexity.
12286
12287Code and Data Size: Current and previous core subsystem library sizes are
12288shown below. These are the code and data sizes for the acpica.lib
12289produced
12290by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12291any ACPI driver or OSPM code. The debug version of the code includes the
12292debug output trace mechanism and has a much larger code and data size.
12293Note
12294that these values will vary depending on the efficiency of the compiler
12295and
12296the compiler options used during generation.
12297
12298  Previous Release:
12299    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
12300    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
12301  Current Release:
12302    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12303    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
12304
12305
123062) iASL Compiler/Disassembler:
12307
12308Implemented support for the ACPI 3.0 Timer operator.
12309
12310Fixed a problem where the Default() operator was inadvertently ignored in
12311a
12312Switch/Case block.  This was a problem in the translation of the Switch
12313statement to If...Else pairs.
12314
12315Added support to allow a standalone Return operator, with no parentheses
12316(or
12317operands).
12318
12319Fixed a problem with code generation for the ElseIf operator where the
12320translated Else...If parse tree was improperly constructed leading to the
12321loss of some code.
12322
12323----------------------------------------
1232422 September 2004.  Summary of changes for version 20040922:
12325
123261) ACPI CA Core Subsystem:
12327
12328Fixed a problem with the implementation of the LNot() operator where
12329"Ones"
12330was not returned for the TRUE case. Changed the code to return Ones
12331instead
12332of (!Arg) which was usually 1. This change affects iASL constant folding
12333for
12334this operator also.
12335
12336Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
12337not
12338initialized properly -- Now zero the entire buffer in this case where the
12339buffer already exists.
12340
12341Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
12342Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
12343related code considerably. This will require changes/updates to all OS
12344interface layers (OSLs.)
12345
12346Implemented a new external interface, AcpiInstallExceptionHandler, to
12347allow
12348a system exception handler to be installed. This handler is invoked upon
12349any
12350run-time exception that occurs during control method execution.
12351
12352Added support for the DSDT in AcpiTbFindTable. This allows the
12353DataTableRegion() operator to access the local copy of the DSDT.
12354
12355Code and Data Size: Current and previous core subsystem library sizes are
12356shown below. These are the code and data sizes for the acpica.lib
12357produced
12358by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12359any ACPI driver or OSPM code. The debug version of the code includes the
12360debug output trace mechanism and has a much larger code and data size.
12361Note
12362that these values will vary depending on the efficiency of the compiler
12363and
12364the compiler options used during generation.
12365
12366  Previous Release:
12367    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
12368    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12369  Current Release:
12370    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
12371    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
12372
12373
123742) iASL Compiler/Disassembler:
12375
12376Fixed a problem with constant folding and the LNot operator. LNot was
12377returning 1 in the TRUE case, not Ones as per the ACPI specification.
12378This
12379could result in the generation of an incorrect folded/reduced constant.
12380
12381End-Of-File is now allowed within a "//"-style comment.  A parse error no
12382longer occurs if such a comment is at the very end of the input ASL
12383source
12384file.
12385
12386Implemented the "-r" option to override the Revision in the table header.
12387The initial use of this option will be to simplify the evaluation of the
12388AML
12389interpreter by allowing a single ASL source module to be compiled for
12390either
1239132-bit or 64-bit integers.
12392
12393
12394----------------------------------------
1239527 August 2004.  Summary of changes for version 20040827:
12396
123971) ACPI CA Core Subsystem:
12398
12399- Implemented support for implicit object conversion in the non-numeric
12400logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
12401and
12402LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
12403the second operand is implicitly converted on the fly to match the type
12404of
12405the first operand.  For example:
12406
12407    LEqual (Source1, Source2)
12408
12409Source1 and Source2 must each evaluate to an integer, a string, or a
12410buffer.
12411The data type of Source1 dictates the required type of Source2. Source2
12412is
12413implicitly converted if necessary to match the type of Source1.
12414
12415- Updated and corrected the behavior of the string conversion support.
12416The
12417rules concerning conversion of buffers to strings (according to the ACPI
12418specification) are as follows:
12419
12420ToDecimalString - explicit byte-wise conversion of buffer to string of
12421decimal values (0-255) separated by commas. ToHexString - explicit byte-
12422wise
12423conversion of buffer to string of hex values (0-FF) separated by commas.
12424ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
12425byte
12426copy with no transform except NULL terminated. Any other implicit buffer-
12427to-
12428string conversion - byte-wise conversion of buffer to string of hex
12429values
12430(0-FF) separated by spaces.
12431
12432- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
12433
12434- Fixed a problem in AcpiNsGetPathnameLength where the returned length
12435was
12436one byte too short in the case of a node in the root scope.  This could
12437cause a fault during debug output.
12438
12439- Code and Data Size: Current and previous core subsystem library sizes
12440are
12441shown below.  These are the code and data sizes for the acpica.lib
12442produced
12443by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12444any ACPI driver or OSPM code.  The debug version of the code includes the
12445debug output trace mechanism and has a much larger code and data size.
12446Note
12447that these values will vary depending on the efficiency of the compiler
12448and
12449the compiler options used during generation.
12450
12451  Previous Release:
12452    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
12453    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
12454  Current Release:
12455    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
12456    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12457
12458
124592) iASL Compiler/Disassembler:
12460
12461- Fixed a Linux generation error.
12462
12463
12464----------------------------------------
1246516 August 2004.  Summary of changes for version 20040816:
12466
124671) ACPI CA Core Subsystem:
12468
12469Designed and implemented support within the AML interpreter for the so-
12470called "implicit return".  This support returns the result of the last
12471ASL
12472operation within a control method, in the absence of an explicit Return()
12473operator.  A few machines depend on this behavior, even though it is not
12474explicitly supported by the ASL language.  It is optional support that
12475can
12476be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
12477
12478Removed support for the PCI_Config address space from the internal low
12479level
12480hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
12481support was not used internally, and would not work correctly anyway
12482because
12483the PCI bus number and segment number were not supported.  There are
12484separate interfaces for PCI configuration space access because of the
12485unique
12486interface.
12487
12488Code and Data Size: Current and previous core subsystem library sizes are
12489shown below.  These are the code and data sizes for the acpica.lib
12490produced
12491by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12492any ACPI driver or OSPM code.  The debug version of the code includes the
12493debug output trace mechanism and has a much larger code and data size.
12494Note
12495that these values will vary depending on the efficiency of the compiler
12496and
12497the compiler options used during generation.
12498
12499  Previous Release:
12500    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12501    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
12502  Current Release:
12503    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
12504    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
12505
12506
125072) iASL Compiler/Disassembler:
12508
12509Fixed a problem where constants in ASL expressions at the root level (not
12510within a control method) could be inadvertently truncated during code
12511generation.  This problem was introduced in the 20040715 release.
12512
12513
12514----------------------------------------
1251515 July 2004.  Summary of changes for version 20040715:
12516
125171) ACPI CA Core Subsystem:
12518
12519Restructured the internal HW GPE interfaces to pass/track the current
12520state
12521of interrupts (enabled/disabled) in order to avoid possible deadlock and
12522increase flexibility of the interfaces.
12523
12524Implemented a "lexicographical compare" for String and Buffer objects
12525within
12526the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
12527-
12528as per further clarification to the ACPI specification.  Behavior is
12529similar
12530to C library "strcmp".
12531
12532Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
12533external function.  In the 32-bit non-debug case, the stack use has been
12534reduced from 168 bytes to 32 bytes.
12535
12536Deployed a new run-time configuration flag,
12537AcpiGbl_EnableInterpreterSlack,
12538whose purpose is to allow the AML interpreter to forgive certain bad AML
12539constructs.  Default setting is FALSE.
12540
12541Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
12542IO
12543support code.  If enabled, it allows field access to go beyond the end of
12544a
12545region definition if the field is within the region length rounded up to
12546the
12547next access width boundary (a common coding error.)
12548
12549Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
12550ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
12551these
12552symbols are lowercased by the latest version of the AcpiSrc tool.
12553
12554The prototypes for the PCI interfaces in acpiosxf.h have been updated to
12555rename "Register" to simply "Reg" to prevent certain compilers from
12556complaining.
12557
12558Code and Data Size: Current and previous core subsystem library sizes are
12559shown below.  These are the code and data sizes for the acpica.lib
12560produced
12561by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12562any ACPI driver or OSPM code.  The debug version of the code includes the
12563debug output trace mechanism and has a much larger code and data size.
12564Note
12565that these values will vary depending on the efficiency of the compiler
12566and
12567the compiler options used during generation.
12568
12569  Previous Release:
12570    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12571    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
12572  Current Release:
12573    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12574    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
12575
12576
125772) iASL Compiler/Disassembler:
12578
12579Implemented full support for Package objects within the Case() operator.
12580Note: The Break() operator is currently not supported within Case blocks
12581(TermLists) as there is some question about backward compatibility with
12582ACPI
125831.0 interpreters.
12584
12585
12586Fixed a problem where complex terms were not supported properly within
12587the
12588Switch() operator.
12589
12590Eliminated extraneous warning for compiler-emitted reserved names of the
12591form "_T_x".  (Used in Switch/Case operators.)
12592
12593Eliminated optimization messages for "_T_x" objects and small constants
12594within the DefinitionBlock operator.
12595
12596
12597----------------------------------------
1259815 June 2004.  Summary of changes for version 20040615:
12599
126001) ACPI CA Core Subsystem:
12601
12602Implemented support for Buffer and String objects (as per ACPI 2.0) for
12603the
12604following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
12605LLessEqual.
12606
12607All directory names in the entire source package are lower case, as they
12608were in earlier releases.
12609
12610Implemented "Disassemble" command in the AML debugger that will
12611disassemble
12612a single control method.
12613
12614Code and Data Size: Current and previous core subsystem library sizes are
12615shown below.  These are the code and data sizes for the acpica.lib
12616produced
12617by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12618any ACPI driver or OSPM code.  The debug version of the code includes the
12619debug output trace mechanism and has a much larger code and data size.
12620Note
12621that these values will vary depending on the efficiency of the compiler
12622and
12623the compiler options used during generation.
12624
12625  Previous Release:
12626    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
12627    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
12628
12629  Current Release:
12630    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12631    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
12632
12633
126342) iASL Compiler/Disassembler:
12635
12636Implemented support for Buffer and String objects (as per ACPI 2.0) for
12637the
12638following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
12639LLessEqual.
12640
12641All directory names in the entire source package are lower case, as they
12642were in earlier releases.
12643
12644Fixed a fault when using the -g or -d<nofilename> options if the FADT was
12645not found.
12646
12647Fixed an issue with the Windows version of the compiler where later
12648versions
12649of Windows place the FADT in the registry under the name "FADT" and not
12650"FACP" as earlier versions did.  This applies when using the -g or -
12651d<nofilename> options.  The compiler now looks for both strings as
12652necessary.
12653
12654Fixed a problem with compiler namepath optimization where a namepath
12655within
12656the Scope() operator could not be optimized if the namepath was a subpath
12657of
12658the current scope path.
12659
12660----------------------------------------
1266127 May 2004.  Summary of changes for version 20040527:
12662
126631) ACPI CA Core Subsystem:
12664
12665Completed a new design and implementation for EBDA (Extended BIOS Data
12666Area)
12667support in the RSDP scan code.  The original code improperly scanned for
12668the
12669EBDA by simply scanning from memory location 0 to 0x400.  The correct
12670method
12671is to first obtain the EBDA pointer from within the BIOS data area, then
12672scan 1K of memory starting at the EBDA pointer.  There appear to be few
12673if
12674any machines that place the RSDP in the EBDA, however.
12675
12676Integrated a fix for a possible fault during evaluation of BufferField
12677arguments.  Obsolete code that was causing the problem was removed.
12678
12679Found and fixed a problem in the Field Support Code where data could be
12680corrupted on a bit field read that starts on an aligned boundary but does
12681not end on an aligned boundary.  Merged the read/write "datum length"
12682calculation code into a common procedure.
12683
12684Rolled in a couple of changes to the FreeBSD-specific header.
12685
12686
12687Code and Data Size: Current and previous core subsystem library sizes are
12688shown below.  These are the code and data sizes for the acpica.lib
12689produced
12690by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12691any ACPI driver or OSPM code.  The debug version of the code includes the
12692debug output trace mechanism and has a much larger code and data size.
12693Note
12694that these values will vary depending on the efficiency of the compiler
12695and
12696the compiler options used during generation.
12697
12698  Previous Release:
12699    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12700    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
12701  Current Release:
12702    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
12703    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
12704
12705
127062) iASL Compiler/Disassembler:
12707
12708Fixed a generation warning produced by some overly-verbose compilers for
12709a
1271064-bit constant.
12711
12712----------------------------------------
1271314 May 2004.  Summary of changes for version 20040514:
12714
127151) ACPI CA Core Subsystem:
12716
12717Fixed a problem where hardware GPE enable bits sometimes not set properly
12718during and after GPE method execution.  Result of 04/27 changes.
12719
12720Removed extra "clear all GPEs" when sleeping/waking.
12721
12722Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
12723AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
12724to
12725the new AcpiEv* calls as appropriate.
12726
12727ACPI_OS_NAME was removed from the OS-specific headers.  The default name
12728is
12729now "Microsoft Windows NT" for maximum compatibility.  However this can
12730be
12731changed by modifying the acconfig.h file.
12732
12733Allow a single invocation of AcpiInstallNotifyHandler for a handler that
12734traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
12735
12736Run _INI methods on ThermalZone objects.  This is against the ACPI
12737specification, but there is apparently ASL code in the field that has
12738these
12739_INI methods, and apparently "other" AML interpreters execute them.
12740
12741Performed a full 16/32/64 bit lint that resulted in some small changes.
12742
12743Added a sleep simulation command to the AML debugger to test sleep code.
12744
12745Code and Data Size: Current and previous core subsystem library sizes are
12746shown below.  These are the code and data sizes for the acpica.lib
12747produced
12748by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12749any ACPI driver or OSPM code.  The debug version of the code includes the
12750debug output trace mechanism and has a much larger code and data size.
12751Note
12752that these values will vary depending on the efficiency of the compiler
12753and
12754the compiler options used during generation.
12755
12756  Previous Release:
12757    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12758    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
12759  Current Release:
12760    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12761    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
12762
12763----------------------------------------
1276427 April 2004.  Summary of changes for version 20040427:
12765
127661) ACPI CA Core Subsystem:
12767
12768Completed a major overhaul of the GPE handling within ACPI CA.  There are
12769now three types of GPEs:  wake-only, runtime-only, and combination
12770wake/run.
12771The only GPEs allowed to be combination wake/run are for button-style
12772devices such as a control-method power button, control-method sleep
12773button,
12774or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
12775not
12776referenced by any _PRW methods are marked for "runtime" and hardware
12777enabled.  Any GPE that is referenced by a _PRW method is marked for
12778"wake"
12779(and disabled at runtime).  However, at sleep time, only those GPEs that
12780have been specifically enabled for wake via the AcpiEnableGpe interface
12781will
12782actually be hardware enabled.
12783
12784A new external interface has been added, AcpiSetGpeType(), that is meant
12785to
12786be used by device drivers to force a GPE to a particular type.  It will
12787be
12788especially useful for the drivers for the button devices mentioned above.
12789
12790Completed restructuring of the ACPI CA initialization sequence so that
12791default operation region handlers are installed before GPEs are
12792initialized
12793and the _PRW methods are executed.  This will prevent errors when the
12794_PRW
12795methods attempt to access system memory or I/O space.
12796
12797GPE enable/disable no longer reads the GPE enable register.  We now keep
12798the
12799enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
12800thus no longer depend on the hardware to maintain these bits.
12801
12802Always clear the wake status and fixed/GPE status bits before sleep, even
12803for state S5.
12804
12805Improved the AML debugger output for displaying the GPE blocks and their
12806current status.
12807
12808Added new strings for the _OSI method, of the form "Windows 2001 SPx"
12809where
12810x = 0,1,2,3,4.
12811
12812Fixed a problem where the physical address was incorrectly calculated
12813when
12814the Load() operator was used to directly load from an Operation Region
12815(vs.
12816loading from a Field object.)  Also added check for minimum table length
12817for
12818this case.
12819
12820Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
12821mutex release.
12822
12823Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
12824consistency with the other fields returned.
12825
12826Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
12827structure for each GPE in the system, so the size of this structure is
12828important.
12829
12830CPU stack requirement reduction:  Cleaned up the method execution and
12831object
12832evaluation paths so that now a parameter structure is passed, instead of
12833copying the various method parameters over and over again.
12834
12835In evregion.c:  Correctly exit and reenter the interpreter region if and
12836only if dispatching an operation region request to a user-installed
12837handler.
12838Do not exit/reenter when dispatching to a default handler (e.g., default
12839system memory or I/O handlers)
12840
12841
12842Notes for updating drivers for the new GPE support.  The following
12843changes
12844must be made to ACPI-related device drivers that are attached to one or
12845more
12846GPEs: (This information will be added to the ACPI CA Programmer
12847Reference.)
12848
128491) AcpiInstallGpeHandler no longer automatically enables the GPE, you
12850must
12851explicitly call AcpiEnableGpe.
128522) There is a new interface called AcpiSetGpeType. This should be called
12853before enabling the GPE.  Also, this interface will automatically disable
12854the GPE if it is currently enabled.
128553) AcpiEnableGpe no longer supports a GPE type flag.
12856
12857Specific drivers that must be changed:
128581) EC driver:
12859    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
12860AeGpeHandler, NULL);
12861    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
12862    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
12863
128642) Button Drivers (Power, Lid, Sleep):
12865Run _PRW method under parent device
12866If _PRW exists: /* This is a control-method button */
12867    Extract GPE number and possibly GpeDevice
12868    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
12869    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
12870
12871For all other devices that have _PRWs, we automatically set the GPE type
12872to
12873ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
12874This
12875must be done on a selective basis, usually requiring some kind of user
12876app
12877to allow the user to pick the wake devices.
12878
12879
12880Code and Data Size: Current and previous core subsystem library sizes are
12881shown below.  These are the code and data sizes for the acpica.lib
12882produced
12883by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12884any ACPI driver or OSPM code.  The debug version of the code includes the
12885debug output trace mechanism and has a much larger code and data size.
12886Note
12887that these values will vary depending on the efficiency of the compiler
12888and
12889the compiler options used during generation.
12890
12891  Previous Release:
12892    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12893    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12894  Current Release:
12895
12896    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
12897    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
12898
12899
12900
12901----------------------------------------
1290202 April 2004.  Summary of changes for version 20040402:
12903
129041) ACPI CA Core Subsystem:
12905
12906Fixed an interpreter problem where an indirect store through an ArgX
12907parameter was incorrectly applying the "implicit conversion rules" during
12908the store.  From the ACPI specification: "If the target is a method local
12909or
12910argument (LocalX or ArgX), no conversion is performed and the result is
12911stored directly to the target".  The new behavior is to disable implicit
12912conversion during ALL stores to an ArgX.
12913
12914Changed the behavior of the _PRW method scan to ignore any and all errors
12915returned by a given _PRW.  This prevents the scan from aborting from the
12916failure of any single _PRW.
12917
12918Moved the runtime configuration parameters from the global init procedure
12919to
12920static variables in acglobal.h.  This will allow the host to override the
12921default values easily.
12922
12923Code and Data Size: Current and previous core subsystem library sizes are
12924shown below.  These are the code and data sizes for the acpica.lib
12925produced
12926by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12927any ACPI driver or OSPM code.  The debug version of the code includes the
12928debug output trace mechanism and has a much larger code and data size.
12929Note
12930that these values will vary depending on the efficiency of the compiler
12931and
12932the compiler options used during generation.
12933
12934  Previous Release:
12935    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
12936    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
12937  Current Release:
12938    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
12939    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
12940
12941
129422) iASL Compiler/Disassembler:
12943
12944iASL now fully disassembles SSDTs.  However, External() statements are
12945not
12946generated automatically for unresolved symbols at this time.  This is a
12947planned feature for future implementation.
12948
12949Fixed a scoping problem in the disassembler that occurs when the type of
12950the
12951target of a Scope() operator is overridden.  This problem caused an
12952incorrectly nested internal namespace to be constructed.
12953
12954Any warnings or errors that are emitted during disassembly are now
12955commented
12956out automatically so that the resulting file can be recompiled without
12957any
12958hand editing.
12959
12960----------------------------------------
1296126 March 2004.  Summary of changes for version 20040326:
12962
129631) ACPI CA Core Subsystem:
12964
12965Implemented support for "wake" GPEs via interaction between GPEs and the
12966_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
12967identified as a WAKE GPE and by default will no longer be enabled at
12968runtime.  Previously, we were blindly enabling all GPEs with a
12969corresponding
12970_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
12971We
12972believe this has been the cause of thousands of "spurious" GPEs on some
12973systems.
12974
12975This new GPE behavior is can be reverted to the original behavior (enable
12976ALL GPEs at runtime) via a runtime flag.
12977
12978Fixed a problem where aliased control methods could not access objects
12979properly.  The proper scope within the namespace was not initialized
12980(transferred to the target of the aliased method) before executing the
12981target method.
12982
12983Fixed a potential race condition on internal object deletion on the
12984return
12985object in AcpiEvaluateObject.
12986
12987Integrated a fix for resource descriptors where both _MEM and _MTP were
12988being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
12989wide, 0x0F instead of 0x03.)
12990
12991Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
12992preventing
12993a
12994fault in some cases.
12995
12996Updated Notify() values for debug statements in evmisc.c
12997
12998Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
12999
13000Code and Data Size: Current and previous core subsystem library sizes are
13001shown below.  These are the code and data sizes for the acpica.lib
13002produced
13003by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13004any ACPI driver or OSPM code.  The debug version of the code includes the
13005debug output trace mechanism and has a much larger code and data size.
13006Note
13007that these values will vary depending on the efficiency of the compiler
13008and
13009the compiler options used during generation.
13010
13011  Previous Release:
13012
13013    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
13014    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
13015  Current Release:
13016    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
13017    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
13018
13019----------------------------------------
1302011 March 2004.  Summary of changes for version 20040311:
13021
130221) ACPI CA Core Subsystem:
13023
13024Fixed a problem where errors occurring during the parse phase of control
13025method execution did not abort cleanly.  For example, objects created and
13026installed in the namespace were not deleted.  This caused all subsequent
13027invocations of the method to return the AE_ALREADY_EXISTS exception.
13028
13029Implemented a mechanism to force a control method to "Serialized"
13030execution
13031if the method attempts to create namespace objects. (The root of the
13032AE_ALREADY_EXISTS problem.)
13033
13034Implemented support for the predefined _OSI "internal" control method.
13035Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
13036and
13037"Windows 2001.1", and can be easily upgraded for new strings as
13038necessary.
13039This feature will allow "other" operating systems to execute the fully
13040tested, "Windows" code path through the ASL code
13041
13042Global Lock Support:  Now allows multiple acquires and releases with any
13043internal thread.  Removed concept of "owning thread" for this special
13044mutex.
13045
13046Fixed two functions that were inappropriately declaring large objects on
13047the
13048CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
13049during
13050method execution considerably.
13051
13052Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
13053S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
13054
13055Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
13056defined on the machine.
13057
13058Implemented two runtime options:  One to force all control method
13059execution
13060to "Serialized" to mimic Windows behavior, another to disable _OSI
13061support
13062if it causes problems on a given machine.
13063
13064Code and Data Size: Current and previous core subsystem library sizes are
13065shown below.  These are the code and data sizes for the acpica.lib
13066produced
13067by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13068any ACPI driver or OSPM code.  The debug version of the code includes the
13069debug output trace mechanism and has a much larger code and data size.
13070Note
13071that these values will vary depending on the efficiency of the compiler
13072and
13073the compiler options used during generation.
13074
13075  Previous Release:
13076    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
13077    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
13078  Current Release:
13079    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
13080    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
13081
130822) iASL Compiler/Disassembler:
13083
13084Fixed an array size problem for FreeBSD that would cause the compiler to
13085fault.
13086
13087----------------------------------------
1308820 February 2004.  Summary of changes for version 20040220:
13089
13090
130911) ACPI CA Core Subsystem:
13092
13093Implemented execution of _SxD methods for Device objects in the
13094GetObjectInfo interface.
13095
13096Fixed calls to _SST method to pass the correct arguments.
13097
13098Added a call to _SST on wake to restore to "working" state.
13099
13100Check for End-Of-Buffer failure case in the WalkResources interface.
13101
13102Integrated fix for 64-bit alignment issue in acglobal.h by moving two
13103structures to the beginning of the file.
13104
13105After wake, clear GPE status register(s) before enabling GPEs.
13106
13107After wake, clear/enable power button.  (Perhaps we should clear/enable
13108all
13109fixed events upon wake.)
13110
13111Fixed a couple of possible memory leaks in the Namespace manager.
13112
13113Integrated latest acnetbsd.h file.
13114
13115----------------------------------------
1311611 February 2004.  Summary of changes for version 20040211:
13117
13118
131191) ACPI CA Core Subsystem:
13120
13121Completed investigation and implementation of the call-by-reference
13122mechanism for control method arguments.
13123
13124Fixed a problem where a store of an object into an indexed package could
13125fail if the store occurs within a different method than the method that
13126created the package.
13127
13128Fixed a problem where the ToDecimal operator could return incorrect
13129results.
13130
13131Fixed a problem where the CopyObject operator could fail on some of the
13132more
13133obscure objects (e.g., Reference objects.)
13134
13135Improved the output of the Debug object to display buffer, package, and
13136index objects.
13137
13138Fixed a problem where constructs of the form "RefOf (ArgX)" did not
13139return
13140the expected result.
13141
13142Added permanent ACPI_REPORT_ERROR macros for all instances of the
13143ACPI_AML_INTERNAL exception.
13144
13145Integrated latest version of acfreebsd.h
13146
13147----------------------------------------
1314816 January 2004.  Summary of changes for version 20040116:
13149
13150The purpose of this release is primarily to update the copyright years in
13151each module, thus causing a huge number of diffs.  There are a few small
13152functional changes, however.
13153
131541) ACPI CA Core Subsystem:
13155
13156Improved error messages when there is a problem finding one or more of
13157the
13158required base ACPI tables
13159
13160Reintroduced the definition of APIC_HEADER in actbl.h
13161
13162Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
13163
13164Removed extraneous reference to NewObj in dsmthdat.c
13165
131662) iASL compiler
13167
13168Fixed a problem introduced in December that disabled the correct
13169disassembly
13170of Resource Templates
13171
13172
13173----------------------------------------
1317403 December 2003.  Summary of changes for version 20031203:
13175
131761) ACPI CA Core Subsystem:
13177
13178Changed the initialization of Operation Regions during subsystem
13179init to perform two entire walks of the ACPI namespace; The first
13180to initialize the regions themselves, the second to execute the
13181_REG methods.  This fixed some interdependencies across _REG
13182methods found on some machines.
13183
13184Fixed a problem where a Store(Local0, Local1) could simply update
13185the object reference count, and not create a new copy of the
13186object if the Local1 is uninitialized.
13187
13188Implemented support for the _SST reserved method during sleep
13189transitions.
13190
13191Implemented support to clear the SLP_TYP and SLP_EN bits when
13192waking up, this is apparently required by some machines.
13193
13194When sleeping, clear the wake status only if SleepState is not S5.
13195
13196Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
13197pointer arithmetic advanced a string pointer too far.
13198
13199Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
13200could be returned if the requested table has not been loaded.
13201
13202Within the support for IRQ resources, restructured the handling of
13203the active and edge/level bits.
13204
13205Fixed a few problems in AcpiPsxExecute() where memory could be
13206leaked under certain error conditions.
13207
13208Improved error messages for the cases where the ACPI mode could
13209not be entered.
13210
13211Code and Data Size: Current and previous core subsystem library
13212sizes are shown below.  These are the code and data sizes for the
13213acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13214these values do not include any ACPI driver or OSPM code.  The
13215debug version of the code includes the debug output trace
13216mechanism and has a much larger code and data size.  Note that
13217these values will vary depending on the efficiency of the compiler
13218and the compiler options used during generation.
13219
13220  Previous Release (20031029):
13221    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
13222    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
13223  Current Release:
13224    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
13225    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
13226
132272) iASL Compiler/Disassembler:
13228
13229Implemented a fix for the iASL disassembler where a bad index was
13230generated.  This was most noticeable on 64-bit platforms
13231
13232
13233----------------------------------------
1323429 October 2003.  Summary of changes for version 20031029:
13235
132361) ACPI CA Core Subsystem:
13237
13238
13239Fixed a problem where a level-triggered GPE with an associated
13240_Lxx control method was incorrectly cleared twice.
13241
13242Fixed a problem with the Field support code where an access can
13243occur beyond the end-of-region if the field is non-aligned but
13244extends to the very end of the parent region (resulted in an
13245AE_AML_REGION_LIMIT exception.)
13246
13247Fixed a problem with ACPI Fixed Events where an RT Clock handler
13248would not get invoked on an RTC event.  The RTC event bitmasks for
13249the PM1 registers were not being initialized properly.
13250
13251Implemented support for executing _STA and _INI methods for
13252Processor objects.  Although this is currently not part of the
13253ACPI specification, there is existing ASL code that depends on the
13254init-time execution of these methods.
13255
13256Implemented and deployed a GetDescriptorName function to decode
13257the various types of internal descriptors.  Guards against null
13258descriptors during debug output also.
13259
13260Implemented and deployed a GetNodeName function to extract the 4-
13261character namespace node name.  This function simplifies the debug
13262and error output, as well as guarding against null pointers during
13263output.
13264
13265Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
13266simplify the debug and error output of 64-bit integers.  This
13267macro replaces the HIDWORD and LODWORD macros for dumping these
13268integers.
13269
13270Updated the implementation of the Stall() operator to only call
13271AcpiOsStall(), and also return an error if the operand is larger
13272than 255.  This preserves the required behavior of not
13273relinquishing the processor, as would happen if AcpiOsSleep() was
13274called for "long stalls".
13275
13276Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
13277initialized are now treated as NOOPs.
13278
13279Cleaned up a handful of warnings during 64-bit generation.
13280
13281Fixed a reported error where and incorrect GPE number was passed
13282to the GPE dispatch handler.  This value is only used for error
13283output, however.  Used this opportunity to clean up and streamline
13284the GPE dispatch code.
13285
13286Code and Data Size: Current and previous core subsystem library
13287sizes are shown below.  These are the code and data sizes for the
13288acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13289these values do not include any ACPI driver or OSPM code.  The
13290
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 (20031002):
13297    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
13298    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
13299  Current Release:
13300    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
13301    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
13302
13303
133042) iASL Compiler/Disassembler:
13305
13306Updated the iASL compiler to return an error if the operand to the
13307Stall() operator is larger than 255.
13308
13309
13310----------------------------------------
1331102 October 2003.  Summary of changes for version 20031002:
13312
13313
133141) ACPI CA Core Subsystem:
13315
13316Fixed a problem with Index Fields where the index was not
13317incremented for fields that require multiple writes to the
13318index/data registers (Fields that are wider than the data
13319register.)
13320
13321Fixed a problem with all Field objects where a write could go
13322beyond the end-of-field if the field was larger than the access
13323granularity and therefore required multiple writes to complete the
13324request.  An extra write beyond the end of the field could happen
13325inadvertently.
13326
13327Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
13328would incorrectly be returned if the width of the Data Register
13329was larger than the specified field access width.
13330
13331Completed fixes for LoadTable() and Unload() and verified their
13332operation.  Implemented full support for the "DdbHandle" object
13333throughout the ACPI CA subsystem.
13334
13335Implemented full support for the MADT and ECDT tables in the ACPI
13336CA header files.  Even though these tables are not directly
13337consumed by ACPI CA, the header definitions are useful for ACPI
13338device drivers.
13339
13340Integrated resource descriptor fixes posted to the Linux ACPI
13341list.  This included checks for minimum descriptor length, and
13342support for trailing NULL strings within descriptors that have
13343optional string elements.
13344
13345Code and Data Size: Current and previous core subsystem library
13346sizes are shown below.  These are the code and data sizes for the
13347acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13348these values do not include any ACPI driver or OSPM code.  The
13349debug version of the code includes the debug output trace
13350mechanism and has a much larger code and data size.  Note that
13351these values will vary depending on the efficiency of the compiler
13352and the compiler options used during generation.
13353
13354  Previous Release (20030918):
13355    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13356    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13357  Current Release:
13358    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
13359    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
13360
13361
133622) iASL Compiler:
13363
13364Implemented detection of non-ASCII characters within the input
13365source ASL file.  This catches attempts to compile binary (AML)
13366files early in the compile, with an informative error message.
13367
13368Fixed a problem where the disassembler would fault if the output
13369filename could not be generated or if the output file could not be
13370opened.
13371
13372----------------------------------------
1337318 September 2003.  Summary of changes for version 20030918:
13374
13375
133761) ACPI CA Core Subsystem:
13377
13378Found and fixed a longstanding problem with the late execution of
13379the various deferred AML opcodes (such as Operation Regions,
13380Buffer Fields, Buffers, and Packages).  If the name string
13381specified for the name of the new object placed the object in a
13382scope other than the current scope, the initialization/execution
13383of the opcode failed.  The solution to this problem was to
13384implement a mechanism where the late execution of such opcodes
13385does not attempt to lookup/create the name a second time in an
13386incorrect scope.  This fixes the "region size computed
13387incorrectly" problem.
13388
13389Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
13390Global Lock AE_BAD_PARAMETER error.
13391
13392Fixed several 64-bit issues with prototypes, casting and data
13393types.
13394
13395Removed duplicate prototype from acdisasm.h
13396
13397Fixed an issue involving EC Operation Region Detach (Shaohua Li)
13398
13399Code and Data Size: Current and previous core subsystem library
13400sizes are shown below.  These are the code and data sizes for the
13401acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13402these values do not include any ACPI driver or OSPM code.  The
13403debug version of the code includes the debug output trace
13404mechanism and has a much larger code and data size.  Note that
13405these values will vary depending on the efficiency of the compiler
13406and the compiler options used during generation.
13407
13408  Previous Release:
13409
13410    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
13411    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
13412  Current Release:
13413    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13414    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13415
13416
134172) Linux:
13418
13419Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
13420correct sleep time in seconds.
13421
13422----------------------------------------
1342314 July 2003.  Summary of changes for version 20030619:
13424
134251) ACPI CA Core Subsystem:
13426
13427Parse SSDTs in order discovered, as opposed to reverse order
13428(Hrvoje Habjanic)
13429
13430Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
13431Klausner,
13432   Nate Lawson)
13433
13434
134352) Linux:
13436
13437Dynamically allocate SDT list (suggested by Andi Kleen)
13438
13439proc function return value cleanups (Andi Kleen)
13440
13441Correctly handle NMI watchdog during long stalls (Andrew Morton)
13442
13443Make it so acpismp=force works (reported by Andrew Morton)
13444
13445
13446----------------------------------------
1344719 June 2003.  Summary of changes for version 20030619:
13448
134491) ACPI CA Core Subsystem:
13450
13451Fix To/FromBCD, eliminating the need for an arch-specific #define.
13452
13453Do not acquire a semaphore in the S5 shutdown path.
13454
13455Fix ex_digits_needed for 0. (Takayoshi Kochi)
13456
13457Fix sleep/stall code reversal. (Andi Kleen)
13458
13459Revert a change having to do with control method calling
13460semantics.
13461
134622) Linux:
13463
13464acpiphp update (Takayoshi Kochi)
13465
13466Export acpi_disabled for sonypi (Stelian Pop)
13467
13468Mention acpismp=force in config help
13469
13470Re-add acpitable.c and acpismp=force. This improves backwards
13471
13472compatibility and also cleans up the code to a significant degree.
13473
13474Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
13475
13476----------------------------------------
1347722 May 2003.  Summary of changes for version 20030522:
13478
134791) ACPI CA Core Subsystem:
13480
13481Found and fixed a reported problem where an AE_NOT_FOUND error
13482occurred occasionally during _BST evaluation.  This turned out to
13483be an Owner ID allocation issue where a called method did not get
13484a new ID assigned to it.  Eventually, (after 64k calls), the Owner
13485ID UINT16 would wraparound so that the ID would be the same as the
13486caller's and the called method would delete the caller's
13487namespace.
13488
13489Implemented extended error reporting for control methods that are
13490aborted due to a run-time exception.  Output includes the exact
13491AML instruction that caused the method abort, a dump of the method
13492locals and arguments at the time of the abort, and a trace of all
13493nested control method calls.
13494
13495Modified the interpreter to allow the creation of buffers of zero
13496length from the AML code. Implemented new code to ensure that no
13497attempt is made to actually allocate a memory buffer (of length
13498zero) - instead, a simple buffer object with a NULL buffer pointer
13499and length zero is created.  A warning is no longer issued when
13500the AML attempts to create a zero-length buffer.
13501
13502Implemented a workaround for the "leading asterisk issue" in
13503_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
13504asterisk is automatically removed if present in any HID, UID, or
13505CID strings.  The iASL compiler will still flag this asterisk as
13506an error, however.
13507
13508Implemented full support for _CID methods that return a package of
13509multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
13510now additionally returns a device _CID list if present.  This
13511required a change to the external interface in order to pass an
13512ACPI_BUFFER object as a parameter since the _CID list is of
13513variable length.
13514
13515Fixed a problem with the new AE_SAME_HANDLER exception where
13516handler initialization code did not know about this exception.
13517
13518Code and Data Size: Current and previous core subsystem library
13519sizes are shown below.  These are the code and data sizes for the
13520acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13521these values do not include any ACPI driver or OSPM code.  The
13522debug version of the code includes the debug output trace
13523mechanism and has a much larger code and data size.  Note that
13524these values will vary depending on the efficiency of the compiler
13525and the compiler options used during generation.
13526
13527  Previous Release (20030509):
13528    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
13529    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
13530  Current Release:
13531    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
13532    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
13533
13534
135352) Linux:
13536
13537Fixed a bug in which we would reinitialize the ACPI interrupt
13538after it was already working, thus disabling all ACPI and the IRQs
13539for any other device sharing the interrupt. (Thanks to Stian
13540Jordet)
13541
13542Toshiba driver update (John Belmonte)
13543
13544Return only 0 or 1 for our interrupt handler status (Andrew
13545Morton)
13546
13547
135483) iASL Compiler:
13549
13550Fixed a reported problem where multiple (nested) ElseIf()
13551statements were not handled correctly by the compiler, resulting
13552in incorrect warnings and incorrect AML code.  This was a problem
13553in both the ASL parser and the code generator.
13554
13555
135564) Documentation:
13557
13558Added changes to existing interfaces, new exception codes, and new
13559text concerning reference count object management versus garbage
13560collection.
13561
13562----------------------------------------
1356309 May 2003.  Summary of changes for version 20030509.
13564
13565
135661) ACPI CA Core Subsystem:
13567
13568Changed the subsystem initialization sequence to hold off
13569installation of address space handlers until the hardware has been
13570initialized and the system has entered ACPI mode.  This is because
13571the installation of space handlers can cause _REG methods to be
13572run.  Previously, the _REG methods could potentially be run before
13573ACPI mode was enabled.
13574
13575Fixed some memory leak issues related to address space handler and
13576notify handler installation.  There were some problems with the
13577reference count mechanism caused by the fact that the handler
13578objects are shared across several namespace objects.
13579
13580Fixed a reported problem where reference counts within the
13581namespace were not properly updated when named objects created by
13582method execution were deleted.
13583
13584Fixed a reported problem where multiple SSDTs caused a deletion
13585issue during subsystem termination.  Restructured the table data
13586structures to simplify the linked lists and the related code.
13587
13588Fixed a problem where the table ID associated with secondary
13589tables (SSDTs) was not being propagated into the namespace objects
13590created by those tables.  This would only present a problem for
13591tables that are unloaded at run-time, however.
13592
13593Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
13594type as the length parameter (instead of UINT32).
13595
13596Solved a long-standing problem where an ALREADY_EXISTS error
13597appears on various systems.  This problem could happen when there
13598are multiple PCI_Config operation regions under a single PCI root
13599bus.  This doesn't happen very frequently, but there are some
13600systems that do this in the ASL.
13601
13602Fixed a reported problem where the internal DeleteNode function
13603was incorrectly handling the case where a namespace node was the
13604first in the parent's child list, and had additional peers (not
13605the only child, but first in the list of children.)
13606
13607Code and Data Size: Current core subsystem library sizes are shown
13608below.  These are the code and data sizes for the acpica.lib
13609produced by the Microsoft Visual C++ 6.0 compiler, and these
13610values do not include any ACPI driver or OSPM code.  The debug
13611version of the code includes the debug output trace mechanism and
13612has a much larger code and data size.  Note that these values will
13613vary depending on the efficiency of the compiler and the compiler
13614options used during generation.
13615
13616  Previous Release
13617    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
13618    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
13619  Current Release:
13620    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
13621    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
13622
13623
136242) Linux:
13625
13626Allow ":" in OS override string (Ducrot Bruno)
13627
13628Kobject fix (Greg KH)
13629
13630
136313 iASL Compiler/Disassembler:
13632
13633Fixed a problem in the generation of the C source code files (AML
13634is emitted in C source statements for BIOS inclusion) where the
13635Ascii dump that appears within a C comment at the end of each line
13636could cause a compile time error if the AML sequence happens to
13637have an open comment or close comment sequence embedded.
13638
13639
13640----------------------------------------
1364124 April 2003.  Summary of changes for version 20030424.
13642
13643
136441) ACPI CA Core Subsystem:
13645
13646Support for big-endian systems has been implemented.  Most of the
13647support has been invisibly added behind big-endian versions of the
13648ACPI_MOVE_* macros.
13649
13650Fixed a problem in AcpiHwDisableGpeBlock() and
13651AcpiHwClearGpeBlock() where an incorrect offset was passed to the
13652low level hardware write routine.  The offset parameter was
13653actually eliminated from the low level read/write routines because
13654they had become obsolete.
13655
13656Fixed a problem where a handler object was deleted twice during
13657the removal of a fixed event handler.
13658
13659
136602) Linux:
13661
13662A fix for SMP systems with link devices was contributed by
13663
13664Compaq's Dan Zink.
13665
13666(2.5) Return whether we handled the interrupt in our IRQ handler.
13667(Linux ISRs no longer return void, so we can propagate the handler
13668return value from the ACPI CA core back to the OS.)
13669
13670
13671
136723) Documentation:
13673
13674The ACPI CA Programmer Reference has been updated to reflect new
13675interfaces and changes to existing interfaces.
13676
13677----------------------------------------
1367828 March 2003.  Summary of changes for version 20030328.
13679
136801) ACPI CA Core Subsystem:
13681
13682The GPE Block Device support has been completed.  New interfaces
13683are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
13684interfaces (enable, disable, clear, getstatus) have been split
13685into separate interfaces for Fixed Events and General Purpose
13686Events (GPEs) in order to support GPE Block Devices properly.
13687
13688Fixed a problem where the error message "Failed to acquire
13689semaphore" would appear during operations on the embedded
13690controller (EC).
13691
13692Code and Data Size: Current core subsystem library sizes are shown
13693below.  These are the code and data sizes for the acpica.lib
13694produced by the Microsoft Visual C++ 6.0 compiler, and these
13695values do not include any ACPI driver or OSPM code.  The debug
13696version of the code includes the debug output trace mechanism and
13697has a much larger code and data size.  Note that these values will
13698vary depending on the efficiency of the compiler and the compiler
13699options used during generation.
13700
13701  Previous Release
13702    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
13703    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
13704  Current Release:
13705    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
13706    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
13707
13708
13709----------------------------------------
1371028 February 2003.  Summary of changes for version 20030228.
13711
13712
137131) ACPI CA Core Subsystem:
13714
13715The GPE handling and dispatch code has been completely overhauled
13716in preparation for support of GPE Block Devices (ID ACPI0006).
13717This affects internal data structures and code only; there should
13718be no differences visible externally.  One new file has been
13719added, evgpeblk.c
13720
13721The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
13722fields that are used to determine the GPE block lengths.  The
13723REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
13724structures are ignored.  This is per the ACPI specification but it
13725isn't very clear.  The full 256 Block 0/1 GPEs are now supported
13726(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
13727
13728In the SCI interrupt handler, removed the read of the PM1_CONTROL
13729register to look at the SCI_EN bit.  On some machines, this read
13730causes an SMI event and greatly slows down SCI events.  (This may
13731in fact be the cause of slow battery status response on some
13732systems.)
13733
13734Fixed a problem where a store of a NULL string to a package object
13735could cause the premature deletion of the object.  This was seen
13736during execution of the battery _BIF method on some systems,
13737resulting in no battery data being returned.
13738
13739Added AcpiWalkResources interface to simplify parsing of resource
13740lists.
13741
13742Code and Data Size: Current core subsystem library sizes are shown
13743below.  These are the code and data sizes for the acpica.lib
13744produced by the Microsoft Visual C++ 6.0 compiler, and these
13745values do not include any ACPI driver or OSPM code.  The debug
13746version of the code includes the debug output trace mechanism and
13747has a much larger code and data size.  Note that these values will
13748vary depending on the efficiency of the compiler and the compiler
13749options used during generation.
13750
13751  Previous Release
13752    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13753    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13754  Current Release:
13755    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
13756    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
13757
13758
137592) Linux
13760
13761S3 fixes (Ole Rohne)
13762
13763Update ACPI PHP driver with to use new acpi_walk_resource API
13764(Bjorn Helgaas)
13765
13766Add S4BIOS support (Pavel Machek)
13767
13768Map in entire table before performing checksum (John Stultz)
13769
13770Expand the mem= cmdline to allow the specification of reserved and
13771ACPI DATA blocks (Pavel Machek)
13772
13773Never use ACPI on VISWS
13774
13775Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
13776
13777Revert a change that allowed P_BLK lengths to be 4 or 5. This is
13778causing us to think that some systems support C2 when they really
13779don't.
13780
13781Do not count processor objects for non-present CPUs (Thanks to
13782Dominik Brodowski)
13783
13784
137853) iASL Compiler:
13786
13787Fixed a problem where ASL include files could not be found and
13788opened.
13789
13790Added support for the _PDC reserved name.
13791
13792
13793----------------------------------------
1379422 January 2003.  Summary of changes for version 20030122.
13795
13796
137971) ACPI CA Core Subsystem:
13798
13799Added a check for constructs of the form:  Store (Local0, Local0)
13800where Local0 is not initialized.  Apparently, some BIOS
13801programmers believe that this is a NOOP.  Since this store doesn't
13802do anything anyway, the new prototype behavior will ignore this
13803error.  This is a case where we can relax the strict checking in
13804the interpreter in the name of compatibility.
13805
13806
138072) Linux
13808
13809The AcpiSrc Source Conversion Utility has been released with the
13810Linux package for the first time.  This is the utility that is
13811used to convert the ACPI CA base source code to the Linux version.
13812
13813(Both) Handle P_BLK lengths shorter than 6 more gracefully
13814
13815(Both) Move more headers to include/acpi, and delete an unused
13816header.
13817
13818(Both) Move drivers/acpi/include directory to include/acpi
13819
13820(Both) Boot functions don't use cmdline, so don't pass it around
13821
13822(Both) Remove include of unused header (Adrian Bunk)
13823
13824(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
13825the
13826former now also includes the latter, acpiphp.h only needs the one,
13827now.
13828
13829(2.5) Make it possible to select method of bios restoring after S3
13830resume. [=> no more ugly ifdefs] (Pavel Machek)
13831
13832(2.5) Make proc write interfaces work (Pavel Machek)
13833
13834(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
13835
13836(2.5) Break out ACPI Perf code into its own module, under cpufreq
13837(Dominik Brodowski)
13838
13839(2.4) S4BIOS support (Ducrot Bruno)
13840
13841(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
13842Visinoni)
13843
13844
138453) iASL Compiler:
13846
13847Added support to disassemble SSDT and PSDTs.
13848
13849Implemented support to obtain SSDTs from the Windows registry if
13850available.
13851
13852
13853----------------------------------------
1385409 January 2003.  Summary of changes for version 20030109.
13855
138561) ACPI CA Core Subsystem:
13857
13858Changed the behavior of the internal Buffer-to-String conversion
13859function.  The current ACPI specification states that the contents
13860of the buffer are "converted to a string of two-character
13861hexadecimal numbers, each separated by a space".  Unfortunately,
13862this definition is not backwards compatible with existing ACPI 1.0
13863implementations (although the behavior was not defined in the ACPI
138641.0 specification).  The new behavior simply copies data from the
13865buffer to the string until a null character is found or the end of
13866the buffer is reached.  The new String object is always null
13867terminated.  This problem was seen during the generation of _BIF
13868battery data where incorrect strings were returned for battery
13869type, etc.  This will also require an errata to the ACPI
13870specification.
13871
13872Renamed all instances of NATIVE_UINT and NATIVE_INT to
13873ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
13874
13875Copyright in all module headers (both Linux and non-Linux) has be
13876updated to 2003.
13877
13878Code and Data Size: Current core subsystem library sizes are shown
13879below.  These are the code and data sizes for the acpica.lib
13880produced by the Microsoft Visual C++ 6.0 compiler, and these
13881values do not include any ACPI driver or OSPM code.  The debug
13882version of the code includes the debug output trace mechanism and
13883has a much larger code and data size.  Note that these values will
13884vary depending on the efficiency of the compiler and the compiler
13885options used during generation.
13886
13887  Previous Release
13888    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13889    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13890  Current Release:
13891    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13892    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13893
13894
138952) Linux
13896
13897Fixed an oops on module insertion/removal (Matthew Tippett)
13898
13899(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
13900
13901(2.5) Replace pr_debug (Randy Dunlap)
13902
13903(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
13904
13905(Both) Eliminate spawning of thread from timer callback, in favor
13906of schedule_work()
13907
13908(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
13909
13910(Both) Added define for Fixed Function HW region (Matthew Wilcox)
13911
13912(Both) Add missing statics to button.c (Pavel Machek)
13913
13914Several changes have been made to the source code translation
13915utility that generates the Linux Code in order to make the code
13916more "Linux-like":
13917
13918All typedefs on structs and unions have been removed in keeping
13919with the Linux coding style.
13920
13921Removed the non-Linux SourceSafe module revision number from each
13922module header.
13923
13924Completed major overhaul of symbols to be lowercased for linux.
13925Doubled the number of symbols that are lowercased.
13926
13927Fixed a problem where identifiers within procedure headers and
13928within quotes were not fully lower cased (they were left with a
13929starting capital.)
13930
13931Some C macros whose only purpose is to allow the generation of 16-
13932bit code are now completely removed in the Linux code, increasing
13933readability and maintainability.
13934
13935----------------------------------------
13936
1393712 December 2002.  Summary of changes for version 20021212.
13938
13939
139401) ACPI CA Core Subsystem:
13941
13942Fixed a problem where the creation of a zero-length AML Buffer
13943would cause a fault.
13944
13945Fixed a problem where a Buffer object that pointed to a static AML
13946buffer (in an ACPI table) could inadvertently be deleted, causing
13947memory corruption.
13948
13949Fixed a problem where a user buffer (passed in to the external
13950ACPI CA interfaces) could be overwritten if the buffer was too
13951small to complete the operation, causing memory corruption.
13952
13953Fixed a problem in the Buffer-to-String conversion code where a
13954string of length one was always returned, regardless of the size
13955of the input Buffer object.
13956
13957Removed the NATIVE_CHAR data type across the entire source due to
13958lack of need and lack of consistent use.
13959
13960Code and Data Size: Current core subsystem library sizes are shown
13961below.  These are the code and data sizes for the acpica.lib
13962produced by the Microsoft Visual C++ 6.0 compiler, and these
13963values do not include any ACPI driver or OSPM code.  The debug
13964version of the code includes the debug output trace mechanism and
13965has a much larger code and data size.  Note that these values will
13966vary depending on the efficiency of the compiler and the compiler
13967options used during generation.
13968
13969  Previous Release
13970    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
13971    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
13972  Current Release:
13973    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
13974    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
13975
13976
13977----------------------------------------
1397805 December 2002.  Summary of changes for version 20021205.
13979
139801) ACPI CA Core Subsystem:
13981
13982Fixed a problem where a store to a String or Buffer object could
13983cause corruption of the DSDT if the object type being stored was
13984the same as the target object type and the length of the object
13985being stored was equal to or smaller than the original (existing)
13986target object.  This was seen to cause corruption of battery _BIF
13987buffers if the _BIF method modified the buffer on the fly.
13988
13989Fixed a problem where an internal error was generated if a control
13990method invocation was used in an OperationRegion, Buffer, or
13991Package declaration.  This was caused by the deferred parsing of
13992the control method and thus the deferred creation of the internal
13993method object.  The solution to this problem was to create the
13994internal method object at the moment the method is encountered in
13995the first pass - so that subsequent references to the method will
13996able to obtain the required parameter count and thus properly
13997parse the method invocation.  This problem presented itself as an
13998AE_AML_INTERNAL during the pass 1 parse phase during table load.
13999
14000Fixed a problem where the internal String object copy routine did
14001not always allocate sufficient memory for the target String object
14002and caused memory corruption.  This problem was seen to cause
14003"Allocation already present in list!" errors as memory allocation
14004became corrupted.
14005
14006Implemented a new function for the evaluation of namespace objects
14007that allows the specification of the allowable return object
14008types.  This simplifies a lot of code that checks for a return
14009object of one or more specific objects returned from the
14010evaluation (such as _STA, etc.)  This may become and external
14011function if it would be useful to ACPI-related drivers.
14012
14013Completed another round of prefixing #defines with "ACPI_" for
14014clarity.
14015
14016Completed additional code restructuring to allow more modular
14017linking for iASL compiler and AcpiExec.  Several files were split
14018creating new files.  New files:  nsparse.c dsinit.c evgpe.c
14019
14020Implemented an abort mechanism to terminate an executing control
14021method via the AML debugger.  This feature is useful for debugging
14022control methods that depend (wait) for specific hardware
14023responses.
14024
14025Code and Data Size: Current core subsystem library sizes are shown
14026below.  These are the code and data sizes for the acpica.lib
14027produced by the Microsoft Visual C++ 6.0 compiler, and these
14028values do not include any ACPI driver or OSPM code.  The debug
14029version of the code includes the debug output trace mechanism and
14030has a much larger code and data size.  Note that these values will
14031vary depending on the efficiency of the compiler and the compiler
14032options used during generation.
14033
14034  Previous Release
14035    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14036    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
14037  Current Release:
14038    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
14039    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
14040
14041
140422) iASL Compiler/Disassembler
14043
14044Fixed a compiler code generation problem for "Interrupt" Resource
14045Descriptors.  If specified in the ASL, the optional "Resource
14046Source Index" and "Resource Source" fields were not inserted into
14047the correct location within the AML resource descriptor, creating
14048an invalid descriptor.
14049
14050Fixed a disassembler problem for "Interrupt" resource descriptors.
14051The optional "Resource Source Index" and "Resource Source" fields
14052were ignored.
14053
14054
14055----------------------------------------
1405622 November 2002.  Summary of changes for version 20021122.
14057
14058
140591) ACPI CA Core Subsystem:
14060
14061Fixed a reported problem where an object stored to a Method Local
14062or Arg was not copied to a new object during the store - the
14063object pointer was simply copied to the Local/Arg.  This caused
14064all subsequent operations on the Local/Arg to also affect the
14065original source of the store operation.
14066
14067Fixed a problem where a store operation to a Method Local or Arg
14068was not completed properly if the Local/Arg contained a reference
14069(from RefOf) to a named field.  The general-purpose store-to-
14070namespace-node code is now used so that this case is handled
14071automatically.
14072
14073Fixed a problem where the internal object copy routine would cause
14074a protection fault if the object being copied was a Package and
14075contained either 1) a NULL package element or 2) a nested sub-
14076package.
14077
14078Fixed a problem with the GPE initialization that resulted from an
14079ambiguity in the ACPI specification.  One section of the
14080specification states that both the address and length of the GPE
14081block must be zero if the block is not supported.  Another section
14082implies that only the address need be zero if the block is not
14083supported.  The code has been changed so that both the address and
14084the length must be non-zero to indicate a valid GPE block (i.e.,
14085if either the address or the length is zero, the GPE block is
14086invalid.)
14087
14088Code and Data Size: Current core subsystem library sizes are shown
14089below.  These are the code and data sizes for the acpica.lib
14090produced by the Microsoft Visual C++ 6.0 compiler, and these
14091values do not include any ACPI driver or OSPM code.  The debug
14092version of the code includes the debug output trace mechanism and
14093has a much larger code and data size.  Note that these values will
14094vary depending on the efficiency of the compiler and the compiler
14095options used during generation.
14096
14097  Previous Release
14098    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
14099    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
14100  Current Release:
14101    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14102    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
14103
14104
141052) Linux
14106
14107Cleaned up EC driver. Exported an external EC read/write
14108interface. By going through this, other drivers (most notably
14109sonypi) will be able to serialize access to the EC.
14110
14111
141123) iASL Compiler/Disassembler
14113
14114Implemented support to optionally generate include files for both
14115ASM and C (the -i switch).  This simplifies BIOS development by
14116automatically creating include files that contain external
14117declarations for the symbols that are created within the
14118
14119(optionally generated) ASM and C AML source files.
14120
14121
14122----------------------------------------
1412315 November 2002.  Summary of changes for version 20021115.
14124
141251) ACPI CA Core Subsystem:
14126
14127Fixed a memory leak problem where an error during resolution of
14128
14129method arguments during a method invocation from another method
14130failed to cleanup properly by deleting all successfully resolved
14131argument objects.
14132
14133Fixed a problem where the target of the Index() operator was not
14134correctly constructed if the source object was a package.  This
14135problem has not been detected because the use of a target operand
14136with Index() is very rare.
14137
14138Fixed a problem with the Index() operator where an attempt was
14139made to delete the operand objects twice.
14140
14141Fixed a problem where an attempt was made to delete an operand
14142twice during execution of the CondRefOf() operator if the target
14143did not exist.
14144
14145Implemented the first of perhaps several internal create object
14146functions that create and initialize a specific object type.  This
14147consolidates duplicated code wherever the object is created, thus
14148shrinking the size of the subsystem.
14149
14150Implemented improved debug/error messages for errors that occur
14151during nested method invocations.  All executing method pathnames
14152are displayed (with the error) as the call stack is unwound - thus
14153simplifying debug.
14154
14155Fixed a problem introduced in the 10/02 release that caused
14156premature deletion of a buffer object if a buffer was used as an
14157ASL operand where an integer operand is required (Thus causing an
14158implicit object conversion from Buffer to Integer.)  The change in
14159the 10/02 release was attempting to fix a memory leak (albeit
14160incorrectly.)
14161
14162Code and Data Size: Current core subsystem library sizes are shown
14163below.  These are the code and data sizes for the acpica.lib
14164produced by the Microsoft Visual C++ 6.0 compiler, and these
14165values do not include any ACPI driver or OSPM code.  The debug
14166version of the code includes the debug output trace mechanism and
14167has a much larger code and data size.  Note that these values will
14168vary depending on the efficiency of the compiler and the compiler
14169options used during generation.
14170
14171  Previous Release
14172    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
14173    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
14174  Current Release:
14175    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
14176    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
14177
14178
141792) Linux
14180
14181Changed the implementation of the ACPI semaphores to use down()
14182instead of down_interruptable().  It is important that the
14183execution of ACPI control methods not be interrupted by signals.
14184Methods must run to completion, or the system may be left in an
14185unknown/unstable state.
14186
14187Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
14188(Shawn Starr)
14189
14190
141913) iASL Compiler/Disassembler
14192
14193
14194Changed the default location of output files.  All output files
14195are now placed in the current directory by default instead of in
14196the directory of the source file.  This change may affect some
14197existing makefiles, but it brings the behavior of the compiler in
14198line with other similar tools.  The location of the output files
14199can be overridden with the -p command line switch.
14200
14201
14202----------------------------------------
1420311 November 2002.  Summary of changes for version 20021111.
14204
14205
142060) ACPI Specification 2.0B is released and is now available at:
14207http://www.acpi.info/index.html
14208
14209
142101) ACPI CA Core Subsystem:
14211
14212Implemented support for the ACPI 2.0 SMBus Operation Regions.
14213This includes the early detection and handoff of the request to
14214the SMBus region handler (avoiding all of the complex field
14215support code), and support for the bidirectional return packet
14216from an SMBus write operation.  This paves the way for the
14217development of SMBus drivers in each host operating system.
14218
14219Fixed a problem where the semaphore WAIT_FOREVER constant was
14220defined as 32 bits, but must be 16 bits according to the ACPI
14221specification.  This had the side effect of causing ASL
14222Mutex/Event timeouts even though the ASL code requested a wait
14223forever.  Changed all internal references to the ACPI timeout
14224parameter to 16 bits to prevent future problems.  Changed the name
14225of WAIT_FOREVER to ACPI_WAIT_FOREVER.
14226
14227Code and Data Size: Current core subsystem library sizes are shown
14228below.  These are the code and data sizes for the acpica.lib
14229produced by the Microsoft Visual C++ 6.0 compiler, and these
14230values do not include any ACPI driver or OSPM code.  The debug
14231version of the code includes the debug output trace mechanism and
14232has a much larger code and data size.  Note that these values will
14233vary depending on the efficiency of the compiler and the compiler
14234options used during generation.
14235
14236  Previous Release
14237    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14238    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
14239  Current Release:
14240    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
14241    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
14242
14243
142442) Linux
14245
14246Module loading/unloading fixes (John Cagle)
14247
14248
142493) iASL Compiler/Disassembler
14250
14251Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
14252
14253Implemented support for the disassembly of all SMBus protocol
14254keywords (SMBQuick, SMBWord, etc.)
14255
14256----------------------------------------
1425701 November 2002.  Summary of changes for version 20021101.
14258
14259
142601) ACPI CA Core Subsystem:
14261
14262Fixed a problem where platforms that have a GPE1 block but no GPE0
14263block were not handled correctly.  This resulted in a "GPE
14264overlap" error message.  GPE0 is no longer required.
14265
14266Removed code added in the previous release that inserted nodes
14267into the namespace in alphabetical order.  This caused some side-
14268effects on various machines.  The root cause of the problem is
14269still under investigation since in theory, the internal ordering
14270of the namespace nodes should not matter.
14271
14272
14273Enhanced error reporting for the case where a named object is not
14274found during control method execution.  The full ACPI namepath
14275(name reference) of the object that was not found is displayed in
14276this case.
14277
14278Note: as a result of the overhaul of the namespace object types in
14279the previous release, the namespace nodes for the predefined
14280scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
14281instead of ACPI_TYPE_ANY.  This simplifies the namespace
14282management code but may affect code that walks the namespace tree
14283looking for specific object types.
14284
14285Code and Data Size: Current core subsystem library sizes are shown
14286below.  These are the code and data sizes for the acpica.lib
14287produced by the Microsoft Visual C++ 6.0 compiler, and these
14288values do not include any ACPI driver or OSPM code.  The debug
14289version of the code includes the debug output trace mechanism and
14290has a much larger code and data size.  Note that these values will
14291vary depending on the efficiency of the compiler and the compiler
14292options used during generation.
14293
14294  Previous Release
14295    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
14296    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
14297  Current Release:
14298    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14299    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
14300
14301
143022) Linux
14303
14304Fixed a problem introduced in the previous release where the
14305Processor and Thermal objects were not recognized and installed in
14306/proc.  This was related to the scope type change described above.
14307
14308
143093) iASL Compiler/Disassembler
14310
14311Implemented the -g option to get all of the required ACPI tables
14312from the registry and save them to files (Windows version of the
14313compiler only.)  The required tables are the FADT, FACS, and DSDT.
14314
14315Added ACPI table checksum validation during table disassembly in
14316order to catch corrupted tables.
14317
14318
14319----------------------------------------
1432022 October 2002.  Summary of changes for version 20021022.
14321
143221) ACPI CA Core Subsystem:
14323
14324Implemented a restriction on the Scope operator that the target
14325must already exist in the namespace at the time the operator is
14326encountered (during table load or method execution).  In other
14327words, forward references are not allowed and Scope() cannot
14328create a new object. This changes the previous behavior where the
14329interpreter would create the name if not found.  This new behavior
14330correctly enables the search-to-root algorithm during namespace
14331lookup of the target name.  Because of this upsearch, this fixes
14332the known Compaq _SB_.OKEC problem and makes both the AML
14333interpreter and iASL compiler compatible with other ACPI
14334implementations.
14335
14336Completed a major overhaul of the internal ACPI object types for
14337the ACPI Namespace and the associated operand objects.  Many of
14338these types had become obsolete with the introduction of the two-
14339pass namespace load.  This cleanup simplifies the code and makes
14340the entire namespace load mechanism much clearer and easier to
14341understand.
14342
14343Improved debug output for tracking scope opening/closing to help
14344diagnose scoping issues.  The old scope name as well as the new
14345scope name are displayed.  Also improved error messages for
14346problems with ASL Mutex objects and error messages for GPE
14347problems.
14348
14349Cleaned up the namespace dump code, removed obsolete code.
14350
14351All string output (for all namespace/object dumps) now uses the
14352common ACPI string output procedure which handles escapes properly
14353and does not emit non-printable characters.
14354
14355Fixed some issues with constants in the 64-bit version of the
14356local C library (utclib.c)
14357
14358
143592) Linux
14360
14361EC Driver:  No longer attempts to acquire the Global Lock at
14362interrupt level.
14363
14364
143653) iASL Compiler/Disassembler
14366
14367Implemented ACPI 2.0B grammar change that disallows all Type 1 and
143682 opcodes outside of a control method.  This means that the
14369"executable" operators (versus the "namespace" operators) cannot
14370be used at the table level; they can only be used within a control
14371method.
14372
14373Implemented the restriction on the Scope() operator where the
14374target must already exist in the namespace at the time the
14375operator is encountered (during ASL compilation). In other words,
14376forward references are not allowed and Scope() cannot create a new
14377object.  This makes the iASL compiler compatible with other ACPI
14378implementations and makes the Scope() implementation adhere to the
14379ACPI specification.
14380
14381Fixed a problem where namepath optimization for the Alias operator
14382was optimizing the wrong path (of the two namepaths.)  This caused
14383a "Missing alias link" error message.
14384
14385Fixed a problem where an "unknown reserved name" warning could be
14386incorrectly generated for names like "_SB" when the trailing
14387underscore is not used in the original ASL.
14388
14389Fixed a problem where the reserved name check did not handle
14390NamePaths with multiple NameSegs correctly.  The first nameseg of
14391the NamePath was examined instead of the last NameSeg.
14392
14393
14394----------------------------------------
14395
1439602 October 2002.  Summary of changes for this release.
14397
14398
143991) ACPI CA Core Subsystem version 20021002:
14400
14401Fixed a problem where a store/copy of a string to an existing
14402string did not always set the string length properly in the String
14403object.
14404
14405Fixed a reported problem with the ToString operator where the
14406behavior was identical to the ToHexString operator instead of just
14407simply converting a raw buffer to a string data type.
14408
14409Fixed a problem where CopyObject and the other "explicit"
14410conversion operators were not updating the internal namespace node
14411type as part of the store operation.
14412
14413Fixed a memory leak during implicit source operand conversion
14414where the original object was not deleted if it was converted to a
14415new object of a different type.
14416
14417Enhanced error messages for all problems associated with namespace
14418lookups.  Common procedure generates and prints the lookup name as
14419well as the formatted status.
14420
14421Completed implementation of a new design for the Alias support
14422within the namespace.  The existing design did not handle the case
14423where a new object was assigned to one of the two names due to the
14424use of an explicit conversion operator, resulting in the two names
14425pointing to two different objects.  The new design simply points
14426the Alias name to the original name node - not to the object.
14427This results in a level of indirection that must be handled in the
14428name resolution mechanism.
14429
14430Code and Data Size: Current core subsystem library sizes are shown
14431below.  These are the code and data sizes for the acpica.lib
14432produced by the Microsoft Visual C++ 6.0 compiler, and these
14433values do not include any ACPI driver or OSPM code.  The debug
14434version of the code includes the debug output trace mechanism and
14435has a larger code and data size.  Note that these values will vary
14436depending on the efficiency of the compiler and the compiler
14437options used during generation.
14438
14439  Previous Release
14440    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
14441    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
14442  Current Release:
14443    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
14444    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
14445
14446
144472) Linux
14448
14449Initialize thermal driver's timer before it is used. (Knut
14450Neumann)
14451
14452Allow handling negative celsius values. (Kochi Takayoshi)
14453
14454Fix thermal management and make trip points. R/W (Pavel Machek)
14455
14456Fix /proc/acpi/sleep. (P. Christeas)
14457
14458IA64 fixes. (David Mosberger)
14459
14460Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
14461
14462Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
14463Brodowski)
14464
14465
144663) iASL Compiler/Disassembler
14467
14468Clarified some warning/error messages.
14469
14470
14471----------------------------------------
1447218 September 2002.  Summary of changes for this release.
14473
14474
144751) ACPI CA Core Subsystem version 20020918:
14476
14477Fixed a reported problem with reference chaining (via the Index()
14478and RefOf() operators) in the ObjectType() and SizeOf() operators.
14479The definition of these operators includes the dereferencing of
14480all chained references to return information on the base object.
14481
14482Fixed a problem with stores to indexed package elements - the
14483existing code would not complete the store if an "implicit
14484conversion" was not performed.  In other words, if the existing
14485object (package element) was to be replaced completely, the code
14486didn't handle this case.
14487
14488Relaxed typechecking on the ASL "Scope" operator to allow the
14489target name to refer to an object of type Integer, String, or
14490Buffer, in addition to the scoping object types (Device,
14491predefined Scopes, Processor, PowerResource, and ThermalZone.)
14492This allows existing AML code that has workarounds for a bug in
14493Windows to function properly.  A warning is issued, however.  This
14494affects both the AML interpreter and the iASL compiler. Below is
14495an example of this type of ASL code:
14496
14497      Name(DEB,0x00)
14498      Scope(DEB)
14499      {
14500
14501Fixed some reported problems with 64-bit integer support in the
14502local implementation of C library functions (clib.c)
14503
14504
145052) Linux
14506
14507Use ACPI fix map region instead of IOAPIC region, since it is
14508undefined in non-SMP.
14509
14510Ensure that the SCI has the proper polarity and trigger, even on
14511systems that do not have an interrupt override entry in the MADT.
14512
145132.5 big driver reorganization (Pat Mochel)
14514
14515Use early table mapping code from acpitable.c (Andi Kleen)
14516
14517New blacklist entries (Andi Kleen)
14518
14519Blacklist improvements. Split blacklist code out into a separate
14520file. Move checking the blacklist to very early. Previously, we
14521would use ACPI tables, and then halfway through init, check the
14522blacklist -- too late. Now, it's early enough to completely fall-
14523back to non-ACPI.
14524
14525
145263) iASL Compiler/Disassembler version 20020918:
14527
14528Fixed a problem where the typechecking code didn't know that an
14529alias could point to a method.  In other words, aliases were not
14530being dereferenced during typechecking.
14531
14532
14533----------------------------------------
1453429 August 2002.  Summary of changes for this release.
14535
145361) ACPI CA Core Subsystem Version 20020829:
14537
14538If the target of a Scope() operator already exists, it must be an
14539object type that actually opens a scope -- such as a Device,
14540Method, Scope, etc.  This is a fatal runtime error.  Similar error
14541check has been added to the iASL compiler also.
14542
14543Tightened up the namespace load to disallow multiple names in the
14544same scope.  This previously was allowed if both objects were of
14545the same type.  (i.e., a lookup was the same as entering a new
14546name).
14547
14548
145492) Linux
14550
14551Ensure that the ACPI interrupt has the proper trigger and
14552polarity.
14553
14554local_irq_disable is extraneous. (Matthew Wilcox)
14555
14556Make "acpi=off" actually do what it says, and not use the ACPI
14557interpreter *or* the tables.
14558
14559Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
14560Takayoshi)
14561
14562
145633) iASL Compiler/Disassembler  Version 20020829:
14564
14565Implemented namepath optimization for name declarations.  For
14566example, a declaration like "Method (\_SB_.ABCD)" would get
14567optimized to "Method (ABCD)" if the declaration is within the
14568\_SB_ scope.  This optimization is in addition to the named
14569reference path optimization first released in the previous
14570version. This would seem to complete all possible optimizations
14571for namepaths within the ASL/AML.
14572
14573If the target of a Scope() operator already exists, it must be an
14574object type that actually opens a scope -- such as a Device,
14575Method, Scope, etc.
14576
14577Implemented a check and warning for unreachable code in the same
14578block below a Return() statement.
14579
14580Fixed a problem where the listing file was not generated if the
14581compiler aborted if the maximum error count was exceeded (200).
14582
14583Fixed a problem where the typechecking of method return values was
14584broken.  This includes the check for a return value when the
14585method is invoked as a TermArg (a return value is expected.)
14586
14587Fixed a reported problem where EOF conditions during a quoted
14588string or comment caused a fault.
14589
14590
14591----------------------------------------
1459215 August 2002.  Summary of changes for this release.
14593
145941) ACPI CA Core Subsystem Version 20020815:
14595
14596Fixed a reported problem where a Store to a method argument that
14597contains a reference did not perform the indirect store correctly.
14598This problem was created during the conversion to the new
14599reference object model - the indirect store to a method argument
14600code was not updated to reflect the new model.
14601
14602Reworked the ACPI mode change code to better conform to ACPI 2.0,
14603handle corner cases, and improve code legibility (Kochi Takayoshi)
14604
14605Fixed a problem with the pathname parsing for the carat (^)
14606prefix.  The heavy use of the carat operator by the new namepath
14607optimization in the iASL compiler uncovered a problem with the AML
14608interpreter handling of this prefix.  In the case where one or
14609more carats precede a single nameseg, the nameseg was treated as
14610standalone and the search rule (to root) was inadvertently
14611applied.  This could cause both the iASL compiler and the
14612interpreter to find the wrong object or to miss the error that
14613should occur if the object does not exist at that exact pathname.
14614
14615Found and fixed the problem where the HP Pavilion DSDT would not
14616load.  This was a relatively minor tweak to the table loading code
14617(a problem caused by the unexpected encounter with a method
14618invocation not within a control method), but it does not solve the
14619overall issue of the execution of AML code at the table level.
14620This investigation is still ongoing.
14621
14622Code and Data Size: Current core subsystem library sizes are shown
14623below.  These are the code and data sizes for the acpica.lib
14624produced by the Microsoft Visual C++ 6.0 compiler, and these
14625values do not include any ACPI driver or OSPM code.  The debug
14626version of the code includes the debug output trace mechanism and
14627has a larger code and data size.  Note that these values will vary
14628depending on the efficiency of the compiler and the compiler
14629options used during generation.
14630
14631  Previous Release
14632    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
14633    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
14634  Current Release:
14635    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
14636    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
14637
14638
146392) Linux
14640
14641Remove redundant slab.h include (Brad Hards)
14642
14643Fix several bugs in thermal.c (Herbert Nachtnebel)
14644
14645Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
14646
14647Change acpi_system_suspend to use updated irq functions (Pavel
14648Machek)
14649
14650Export acpi_get_firmware_table (Matthew Wilcox)
14651
14652Use proper root proc entry for ACPI (Kochi Takayoshi)
14653
14654Fix early-boot table parsing (Bjorn Helgaas)
14655
14656
146573) iASL Compiler/Disassembler
14658
14659Reworked the compiler options to make them more consistent and to
14660use two-letter options where appropriate.  We were running out of
14661sensible letters.   This may break some makefiles, so check the
14662current options list by invoking the compiler with no parameters.
14663
14664Completed the design and implementation of the ASL namepath
14665optimization option for the compiler.  This option optimizes all
14666references to named objects to the shortest possible path.  The
14667first attempt tries to utilize a single nameseg (4 characters) and
14668the "search-to-root" algorithm used by the interpreter.  If that
14669cannot be used (because either the name is not in the search path
14670or there is a conflict with another object with the same name),
14671the pathname is optimized using the carat prefix (usually a
14672shorter string than specifying the entire path from the root.)
14673
14674Implemented support to obtain the DSDT from the Windows registry
14675(when the disassembly option is specified with no input file).
14676Added this code as the implementation for AcpiOsTableOverride in
14677the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
14678utility) to scan memory for the DSDT to the AcpiOsTableOverride
14679function in the DOS OSL to make the disassembler truly OS
14680independent.
14681
14682Implemented a new option to disassemble and compile in one step.
14683When used without an input filename, this option will grab the
14684DSDT from the local machine, disassemble it, and compile it in one
14685step.
14686
14687Added a warning message for invalid escapes (a backslash followed
14688by any character other than the allowable escapes).  This catches
14689the quoted string error "\_SB_" (which should be "\\_SB_" ).
14690
14691Also, there are numerous instances in the ACPI specification where
14692this error occurs.
14693
14694Added a compiler option to disable all optimizations.  This is
14695basically the "compatibility mode" because by using this option,
14696the AML code will come out exactly the same as other ASL
14697compilers.
14698
14699Added error messages for incorrectly ordered dependent resource
14700functions.  This includes: missing EndDependentFn macro at end of
14701dependent resource list, nested dependent function macros (both
14702start and end), and missing StartDependentFn macro.  These are
14703common errors that should be caught at compile time.
14704
14705Implemented _OSI support for the disassembler and compiler.  _OSI
14706must be included in the namespace for proper disassembly (because
14707the disassembler must know the number of arguments.)
14708
14709Added an "optimization" message type that is optional (off by
14710default).  This message is used for all optimizations - including
14711constant folding, integer optimization, and namepath optimization.
14712
14713----------------------------------------
1471425 July 2002.  Summary of changes for this release.
14715
14716
147171) ACPI CA Core Subsystem Version 20020725:
14718
14719The AML Disassembler has been enhanced to produce compilable ASL
14720code and has been integrated into the iASL compiler (see below) as
14721well as the single-step disassembly for the AML debugger and the
14722disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
14723resource templates and macros are fully supported.  The
14724disassembler has been tested on over 30 different AML files,
14725producing identical AML when the resulting disassembled ASL file
14726is recompiled with the same ASL compiler.
14727
14728Modified the Resource Manager to allow zero interrupts and zero
14729dma channels during the GetCurrentResources call.  This was
14730causing problems on some platforms.
14731
14732Added the AcpiOsRedirectOutput interface to the OSL to simplify
14733output redirection for the AcpiOsPrintf and AcpiOsVprintf
14734interfaces.
14735
14736Code and Data Size: Current core subsystem library sizes are shown
14737below.  These are the code and data sizes for the acpica.lib
14738produced by the Microsoft Visual C++ 6.0 compiler, and these
14739values do not include any ACPI driver or OSPM code.  The debug
14740version of the code includes the debug output trace mechanism and
14741has a larger code and data size.  Note that these values will vary
14742depending on the efficiency of the compiler and the compiler
14743options used during generation.
14744
14745  Previous Release
14746    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
14747    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
14748  Current Release:
14749    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
14750    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
14751
14752
147532) Linux
14754
14755Fixed a panic in the EC driver (Dominik Brodowski)
14756
14757Implemented checksum of the R/XSDT itself during Linux table scan
14758(Richard Schaal)
14759
14760
147613) iASL compiler
14762
14763The AML disassembler is integrated into the compiler.  The "-d"
14764option invokes the disassembler  to completely disassemble an
14765input AML file, producing as output a text ASL file with the
14766extension ".dsl" (to avoid name collisions with existing .asl
14767source files.)  A future enhancement will allow the disassembler
14768to obtain the BIOS DSDT from the registry under Windows.
14769
14770Fixed a problem with the VendorShort and VendorLong resource
14771descriptors where an invalid AML sequence was created.
14772
14773Implemented a fix for BufferData term in the ASL parser.  It was
14774inadvertently defined twice, allowing invalid syntax to pass and
14775causing reduction conflicts.
14776
14777Fixed a problem where the Ones opcode could get converted to a
14778value of zero if "Ones" was used where a byte, word or dword value
14779was expected.  The 64-bit value is now truncated to the correct
14780size with the correct value.
14781
14782
14783
14784----------------------------------------
1478502 July 2002.  Summary of changes for this release.
14786
14787
147881) ACPI CA Core Subsystem Version 20020702:
14789
14790The Table Manager code has been restructured to add several new
14791features.  Tables that are not required by the core subsystem
14792(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
14793validated in any way and are returned from AcpiGetFirmwareTable if
14794requested.  The AcpiOsTableOverride interface is now called for
14795each table that is loaded by the subsystem in order to allow the
14796host to override any table it chooses.  Previously, only the DSDT
14797could be overridden.  Added one new files, tbrsdt.c and
14798tbgetall.c.
14799
14800Fixed a problem with the conversion of internal package objects to
14801external objects (when a package is returned from a control
14802method.)  The return buffer length was set to zero instead of the
14803proper length of the package object.
14804
14805Fixed a reported problem with the use of the RefOf and DeRefOf
14806operators when passing reference arguments to control methods.  A
14807new type of Reference object is used internally for references
14808produced by the RefOf operator.
14809
14810Added additional error messages in the Resource Manager to explain
14811AE_BAD_DATA errors when they occur during resource parsing.
14812
14813Split the AcpiEnableSubsystem into two primitives to enable a
14814finer granularity initialization sequence.  These two calls should
14815be called in this order: AcpiEnableSubsystem (flags),
14816AcpiInitializeObjects (flags).  The flags parameter remains the
14817same.
14818
14819
148202) Linux
14821
14822Updated the ACPI utilities module to understand the new style of
14823fully resolved package objects that are now returned from the core
14824subsystem.  This eliminates errors of the form:
14825
14826    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
14827    acpi_utils-0430 [145] acpi_evaluate_reference:
14828        Invalid element in package (not a device reference)
14829
14830The method evaluation utility uses the new buffer allocation
14831scheme instead of calling AcpiEvaluate Object twice.
14832
14833Added support for ECDT. This allows the use of the Embedded
14834
14835Controller before the namespace has been fully initialized, which
14836is necessary for ACPI 2.0 support, and for some laptops to
14837initialize properly. (Laptops using ECDT are still rare, so only
14838limited testing was performed of the added functionality.)
14839
14840Fixed memory leaks in the EC driver.
14841
14842Eliminated a brittle code structure in acpi_bus_init().
14843
14844Eliminated the acpi_evaluate() helper function in utils.c. It is
14845no longer needed since acpi_evaluate_object can optionally
14846allocate memory for the return object.
14847
14848Implemented fix for keyboard hang when getting battery readings on
14849some systems (Stephen White)
14850
14851PCI IRQ routing update (Dominik Brodowski)
14852
14853Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
14854support
14855
14856----------------------------------------
1485711 June 2002.  Summary of changes for this release.
14858
14859
148601) ACPI CA Core Subsystem Version 20020611:
14861
14862Fixed a reported problem where constants such as Zero and One
14863appearing within _PRT packages were not handled correctly within
14864the resource manager code.  Originally reported against the ASL
14865compiler because the code generator now optimizes integers to
14866their minimal AML representation (i.e. AML constants if possible.)
14867The _PRT code now handles all AML constant opcodes correctly
14868(Zero, One, Ones, Revision).
14869
14870Fixed a problem with the Concatenate operator in the AML
14871interpreter where a buffer result object was incorrectly marked as
14872not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
14873
14874All package sub-objects are now fully resolved before they are
14875returned from the external ACPI interfaces.  This means that name
14876strings are resolved to object handles, and constant operators
14877(Zero, One, Ones, Revision) are resolved to Integers.
14878
14879Implemented immediate resolution of the AML Constant opcodes
14880(Zero, One, Ones, Revision) to Integer objects upon detection
14881within the AML stream. This has simplified and reduced the
14882generated code size of the subsystem by eliminating about 10
14883switch statements for these constants (which previously were
14884contained in Reference objects.)  The complicating issues are that
14885the Zero opcode is used as a "placeholder" for unspecified
14886optional target operands and stores to constants are defined to be
14887no-ops.
14888
14889Code and Data Size: Current core subsystem library sizes are shown
14890below. These are the code and data sizes for the acpica.lib
14891produced by the Microsoft Visual C++ 6.0 compiler, and these
14892values do not include any ACPI driver or OSPM code.  The debug
14893version of the code includes the debug output trace mechanism and
14894has a larger code and data size.  Note that these values will vary
14895depending on the efficiency of the compiler and the compiler
14896options used during generation.
14897
14898  Previous Release
14899    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14900    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14901  Current Release:
14902    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
14903    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
14904
14905
149062) Linux
14907
14908
14909Added preliminary support for obtaining _TRA data for PCI root
14910bridges (Bjorn Helgaas).
14911
14912
149133) iASL Compiler Version X2046:
14914
14915Fixed a problem where the "_DDN" reserved name was defined to be a
14916control method with one argument.  There are no arguments, and
14917_DDN does not have to be a control method.
14918
14919Fixed a problem with the Linux version of the compiler where the
14920source lines printed with error messages were the wrong lines.
14921This turned out to be the "LF versus CR/LF" difference between
14922Windows and Unix.  This appears to be the longstanding issue
14923concerning listing output and error messages.
14924
14925Fixed a problem with the Linux version of compiler where opcode
14926names within error messages were wrong.  This was caused by a
14927slight difference in the output of the Flex tool on Linux versus
14928Windows.
14929
14930Fixed a problem with the Linux compiler where the hex output files
14931contained some garbage data caused by an internal buffer overrun.
14932
14933
14934----------------------------------------
1493517 May 2002.  Summary of changes for this release.
14936
14937
149381) ACPI CA Core Subsystem Version 20020517:
14939
14940Implemented a workaround to an BIOS bug discovered on the HP
14941OmniBook where the FADT revision number and the table size are
14942inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
14943behavior is to fallback to using only the ACPI 1.0 fields of the
14944FADT if the table is too small to be a ACPI 2.0 table as claimed
14945by the revision number.  Although this is a BIOS bug, this is a
14946case where the workaround is simple enough and with no side
14947effects, so it seemed prudent to add it.  A warning message is
14948issued, however.
14949
14950Implemented minimum size checks for the fixed-length ACPI tables -
14951- the FADT and FACS, as well as consistency checks between the
14952revision number and the table size.
14953
14954Fixed a reported problem in the table override support where the
14955new table pointer was incorrectly treated as a physical address
14956instead of a logical address.
14957
14958Eliminated the use of the AE_AML_ERROR exception and replaced it
14959with more descriptive codes.
14960
14961Fixed a problem where an exception would occur if an ASL Field was
14962defined with no named Field Units underneath it (used by some
14963index fields).
14964
14965Code and Data Size: Current core subsystem library sizes are shown
14966below.  These are the code and data sizes for the acpica.lib
14967produced by the Microsoft Visual C++ 6.0 compiler, and these
14968values do not include any ACPI driver or OSPM code.  The debug
14969version of the code includes the debug output trace mechanism and
14970has a larger code and data size.  Note that these values will vary
14971depending on the efficiency of the compiler and the compiler
14972options used during generation.
14973
14974  Previous Release
14975    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
14976    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
14977  Current Release:
14978    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
14979    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
14980
14981
14982
149832) Linux
14984
14985Much work done on ACPI init (MADT and PCI IRQ routing support).
14986(Paul D. and Dominik Brodowski)
14987
14988Fix PCI IRQ-related panic on boot (Sam Revitch)
14989
14990Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
14991
14992Fix "MHz" typo (Dominik Brodowski)
14993
14994Fix RTC year 2000 issue (Dominik Brodowski)
14995
14996Preclude multiple button proc entries (Eric Brunet)
14997
14998Moved arch-specific code out of include/platform/aclinux.h
14999
150003) iASL Compiler Version X2044:
15001
15002Implemented error checking for the string used in the EISAID macro
15003(Usually used in the definition of the _HID object.)  The code now
15004strictly enforces the PnP format - exactly 7 characters, 3
15005uppercase letters and 4 hex digits.
15006
15007If a raw string is used in the definition of the _HID object
15008(instead of the EISAID macro), the string must contain all
15009alphanumeric characters (e.g., "*PNP0011" is not allowed because
15010of the asterisk.)
15011
15012Implemented checking for invalid use of ACPI reserved names for
15013most of the name creation operators (Name, Device, Event, Mutex,
15014OperationRegion, PowerResource, Processor, and ThermalZone.)
15015Previously, this check was only performed for control methods.
15016
15017Implemented an additional check on the Name operator to emit an
15018error if a reserved name that must be implemented in ASL as a
15019control method is used.  We know that a reserved name must be a
15020method if it is defined with input arguments.
15021
15022The warning emitted when a namespace object reference is not found
15023during the cross reference phase has been changed into an error.
15024The "External" directive should be used for names defined in other
15025modules.
15026
15027
150284) Tools and Utilities
15029
15030The 16-bit tools (adump16 and aexec16) have been regenerated and
15031tested.
15032
15033Fixed a problem with the output of both acpidump and adump16 where
15034the indentation of closing parentheses and brackets was not
15035
15036aligned properly with the parent block.
15037
15038
15039----------------------------------------
1504003 May 2002.  Summary of changes for this release.
15041
15042
150431) ACPI CA Core Subsystem Version 20020503:
15044
15045Added support a new OSL interface that allows the host operating
15046
15047system software to override the DSDT found in the firmware -
15048AcpiOsTableOverride.  With this interface, the OSL can examine the
15049version of the firmware DSDT and replace it with a different one
15050if desired.
15051
15052Added new external interfaces for accessing ACPI registers from
15053device drivers and other system software - AcpiGetRegister and
15054AcpiSetRegister.  This was simply an externalization of the
15055existing AcpiHwBitRegister interfaces.
15056
15057Fixed a regression introduced in the previous build where the
15058ASL/AML CreateField operator always returned an error,
15059"destination must be a NS Node".
15060
15061Extended the maximum time (before failure) to successfully enable
15062ACPI mode to 3 seconds.
15063
15064Code and Data Size: Current core subsystem library sizes are shown
15065below.  These are the code and data sizes for the acpica.lib
15066produced by the Microsoft Visual C++ 6.0 compiler, and these
15067values do not include any ACPI driver or OSPM code.  The debug
15068version of the code includes the debug output trace mechanism and
15069has a larger code and data size.  Note that these values will vary
15070depending on the efficiency of the compiler and the compiler
15071options used during generation.
15072
15073  Previous Release
15074    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
15075    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
15076  Current Release:
15077    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
15078    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
15079
15080
150812) Linux
15082
15083Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
15084free. While 3 out of 4 of our in-house systems work fine, the last
15085one still hangs when testing the LAPIC timer.
15086
15087Renamed many files in 2.5 kernel release to omit "acpi_" from the
15088name.
15089
15090Added warning on boot for Presario 711FR.
15091
15092Sleep improvements (Pavel Machek)
15093
15094ACPI can now be built without CONFIG_PCI enabled.
15095
15096IA64: Fixed memory map functions (JI Lee)
15097
15098
150993) iASL Compiler Version X2043:
15100
15101Added support to allow the compiler to be integrated into the MS
15102VC++ development environment for one-button compilation of single
15103files or entire projects -- with error-to-source-line mapping.
15104
15105Implemented support for compile-time constant folding for the
15106Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
15107specification.  This allows the ASL writer to use expressions
15108instead of Integer/Buffer/String constants in terms that must
15109evaluate to constants at compile time and will also simplify the
15110emitted AML in any such sub-expressions that can be folded
15111(evaluated at compile-time.)  This increases the size of the
15112compiler significantly because a portion of the ACPI CA AML
15113interpreter is included within the compiler in order to pre-
15114evaluate constant expressions.
15115
15116
15117Fixed a problem with the "Unicode" ASL macro that caused the
15118compiler to fault.  (This macro is used in conjunction with the
15119_STR reserved name.)
15120
15121Implemented an AML opcode optimization to use the Zero, One, and
15122Ones opcodes where possible to further reduce the size of integer
15123constants and thus reduce the overall size of the generated AML
15124code.
15125
15126Implemented error checking for new reserved terms for ACPI version
151272.0A.
15128
15129Implemented the -qr option to display the current list of ACPI
15130reserved names known to the compiler.
15131
15132Implemented the -qc option to display the current list of ASL
15133operators that are allowed within constant expressions and can
15134therefore be folded at compile time if the operands are constants.
15135
15136
151374) Documentation
15138
15139Updated the Programmer's Reference for new interfaces, data types,
15140and memory allocation model options.
15141
15142Updated the iASL Compiler User Reference to apply new format and
15143add information about new features and options.
15144
15145----------------------------------------
1514619 April 2002.  Summary of changes for this release.
15147
151481) ACPI CA Core Subsystem Version 20020419:
15149
15150The source code base for the Core Subsystem has been completely
15151cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
15152versions.  The Lint option files used are included in the
15153/acpi/generate/lint directory.
15154
15155Implemented enhanced status/error checking across the entire
15156Hardware manager subsystem.  Any hardware errors (reported from
15157the OSL) are now bubbled up and will abort a running control
15158method.
15159
15160
15161Fixed a problem where the per-ACPI-table integer width (32 or 64)
15162was stored only with control method nodes, causing a fault when
15163non-control method code was executed during table loading.  The
15164solution implemented uses a global variable to indicate table
15165width across the entire ACPI subsystem.  Therefore, ACPI CA does
15166not support mixed integer widths across different ACPI tables
15167(DSDT, SSDT).
15168
15169Fixed a problem where NULL extended fields (X fields) in an ACPI
151702.0 ACPI FADT caused the table load to fail.  Although the
15171existing ACPI specification is a bit fuzzy on this topic, the new
15172behavior is to fall back on a ACPI 1.0 field if the corresponding
15173ACPI 2.0 X field is zero (even though the table revision indicates
15174a full ACPI 2.0 table.)  The ACPI specification will be updated to
15175clarify this issue.
15176
15177Fixed a problem with the SystemMemory operation region handler
15178where memory was always accessed byte-wise even if the AML-
15179specified access width was larger than a byte.  This caused
15180problems on systems with memory-mapped I/O.  Memory is now
15181accessed with the width specified.  On systems that do not support
15182non-aligned transfers, a check is made to guarantee proper address
15183alignment before proceeding in order to avoid an AML-caused
15184alignment fault within the kernel.
15185
15186
15187Fixed a problem with the ExtendedIrq resource where only one byte
15188of the 4-byte Irq field was extracted.
15189
15190Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
15191function was out of date and required a rewrite.
15192
15193Code and Data Size: Current core subsystem library sizes are shown
15194below.  These are the code and data sizes for the acpica.lib
15195produced by the Microsoft Visual C++ 6.0 compiler, and these
15196values do not include any ACPI driver or OSPM code.  The debug
15197version of the code includes the debug output trace mechanism and
15198has a larger code and data size.  Note that these values will vary
15199depending on the efficiency of the compiler and the compiler
15200options used during generation.
15201
15202  Previous Release
15203    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
15204    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
15205  Current Release:
15206    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
15207    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
15208
15209
152102) Linux
15211
15212PCI IRQ routing fixes (Dominik Brodowski)
15213
15214
152153) iASL Compiler Version X2042:
15216
15217Implemented an additional compile-time error check for a field
15218unit whose size + minimum access width would cause a run-time
15219access beyond the end-of-region.  Previously, only the field size
15220itself was checked.
15221
15222The Core subsystem and iASL compiler now share a common parse
15223object in preparation for compile-time evaluation of the type
152243/4/5 ASL operators.
15225
15226
15227----------------------------------------
15228Summary of changes for this release: 03_29_02
15229
152301) ACPI CA Core Subsystem Version 20020329:
15231
15232Implemented support for late evaluation of TermArg operands to
15233Buffer and Package objects.  This allows complex expressions to be
15234used in the declarations of these object types.
15235
15236Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
152371.0, if the field was larger than 32 bits, it was returned as a
15238buffer - otherwise it was returned as an integer.  In ACPI 2.0,
15239the field is returned as a buffer only if the field is larger than
1524064 bits.  The TableRevision is now considered when making this
15241conversion to avoid incompatibility with existing ASL code.
15242
15243Implemented logical addressing for AcpiOsGetRootPointer.  This
15244allows an RSDP with either a logical or physical address.  With
15245this support, the host OS can now override all ACPI tables with
15246one logical RSDP.  Includes implementation of  "typed" pointer
15247support to allow a common data type for both physical and logical
15248pointers internally.  This required a change to the
15249AcpiOsGetRootPointer interface.
15250
15251Implemented the use of ACPI 2.0 Generic Address Structures for all
15252GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
15253mapped I/O for these ACPI features.
15254
15255Initialization now ignores not only non-required tables (All
15256tables other than the FADT, FACS, DSDT, and SSDTs), but also does
15257not validate the table headers of unrecognized tables.
15258
15259Fixed a problem where a notify handler could only be
15260installed/removed on an object of type Device.  All "notify"
15261
15262objects are now supported -- Devices, Processor, Power, and
15263Thermal.
15264
15265Removed most verbosity from the ACPI_DB_INFO debug level.  Only
15266critical information is returned when this debug level is enabled.
15267
15268Code and Data Size: Current core subsystem library sizes are shown
15269below.  These are the code and data sizes for the acpica.lib
15270produced by the Microsoft Visual C++ 6.0 compiler, and these
15271values do not include any ACPI driver or OSPM code.  The debug
15272version of the code includes the debug output trace mechanism and
15273has a larger code and data size.  Note that these values will vary
15274depending on the efficiency of the compiler and the compiler
15275options used during generation.
15276
15277  Previous Release
15278    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
15279    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
15280  Current Release:
15281    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
15282    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
15283
15284
152852) Linux:
15286
15287The processor driver (acpi_processor.c) now fully supports ACPI
152882.0-based processor performance control (e.g. Intel(R)
15289SpeedStep(TM) technology) Note that older laptops that only have
15290the Intel "applet" interface are not supported through this.  The
15291'limit' and 'performance' interface (/proc) are fully functional.
15292[Note that basic policy for controlling performance state
15293transitions will be included in the next version of ospmd.]  The
15294idle handler was modified to more aggressively use C2, and PIIX4
15295errata handling underwent a complete overhaul (big thanks to
15296Dominik Brodowski).
15297
15298Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
15299based devices in the ACPI namespace are now dynamically bound
15300(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
15301This allows, among other things, ACPI to resolve bus numbers for
15302subordinate PCI bridges.
15303
15304Enhanced PCI IRQ routing to get the proper bus number for _PRT
15305entries defined underneath PCI bridges.
15306
15307Added IBM 600E to bad bios list due to invalid _ADR value for
15308PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
15309
15310In the process of adding full MADT support (e.g. IOAPIC) for IA32
15311(acpi.c, mpparse.c) -- stay tuned.
15312
15313Added back visual differentiation between fixed-feature and
15314control-method buttons in dmesg.  Buttons are also subtyped (e.g.
15315button/power/PWRF) to simplify button identification.
15316
15317We no longer use -Wno-unused when compiling debug. Please ignore
15318any "_THIS_MODULE defined but not used" messages.
15319
15320Can now shut down the system using "magic sysrq" key.
15321
15322
153233) iASL Compiler version 2041:
15324
15325Fixed a problem where conversion errors for hex/octal/decimal
15326constants were not reported.
15327
15328Implemented a fix for the General Register template Address field.
15329This field was 8 bits when it should be 64.
15330
15331Fixed a problem where errors/warnings were no longer being emitted
15332within the listing output file.
15333
15334Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
15335exactly 4 characters, alphanumeric only.
15336
15337
15338
15339
15340----------------------------------------
15341Summary of changes for this release: 03_08_02
15342
15343
153441) ACPI CA Core Subsystem Version 20020308:
15345
15346Fixed a problem with AML Fields where the use of the "AccessAny"
15347keyword could cause an interpreter error due to attempting to read
15348or write beyond the end of the parent Operation Region.
15349
15350Fixed a problem in the SystemMemory Operation Region handler where
15351an attempt was made to map memory beyond the end of the region.
15352This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
15353errors on some Linux systems.
15354
15355Fixed a problem where the interpreter/namespace "search to root"
15356algorithm was not functioning for some object types.  Relaxed the
15357internal restriction on the search to allow upsearches for all
15358external object types as well as most internal types.
15359
15360
153612) Linux:
15362
15363We now use safe_halt() macro versus individual calls to sti | hlt.
15364
15365Writing to the processor limit interface should now work. "echo 1"
15366will increase the limit, 2 will decrease, and 0 will reset to the
15367
15368default.
15369
15370
153713) ASL compiler:
15372
15373Fixed segfault on Linux version.
15374
15375
15376----------------------------------------
15377Summary of changes for this release: 02_25_02
15378
153791) ACPI CA Core Subsystem:
15380
15381
15382Fixed a problem where the GPE bit masks were not initialized
15383properly, causing erratic GPE behavior.
15384
15385Implemented limited support for multiple calling conventions.  The
15386code can be generated with either the VPL (variable parameter
15387list, or "C") convention, or the FPL (fixed parameter list, or
15388"Pascal") convention.  The core subsystem is about 3.4% smaller
15389when generated with FPL.
15390
15391
153922) Linux
15393
15394Re-add some /proc/acpi/event functionality that was lost during
15395the rewrite
15396
15397Resolved issue with /proc events for fixed-feature buttons showing
15398up as the system device.
15399
15400Fixed checks on C2/C3 latencies to be inclusive of maximum values.
15401
15402Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
15403
15404Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
15405
15406Fixed limit interface & usage to fix bugs with passive cooling
15407hysterisis.
15408
15409Restructured PRT support.
15410
15411
15412----------------------------------------
15413Summary of changes for this label: 02_14_02
15414
15415
154161) ACPI CA Core Subsystem:
15417
15418Implemented support in AcpiLoadTable to allow loading of FACS and
15419FADT tables.
15420
15421Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
15422been removed.  All 64-bit platforms should be migrated to the ACPI
154232.0 tables.  The actbl71.h header has been removed from the source
15424tree.
15425
15426All C macros defined within the subsystem have been prefixed with
15427"ACPI_" to avoid collision with other system include files.
15428
15429Removed the return value for the two AcpiOsPrint interfaces, since
15430it is never used and causes lint warnings for ignoring the return
15431value.
15432
15433Added error checking to all internal mutex acquire and release
15434calls.  Although a failure from one of these interfaces is
15435probably a fatal system error, these checks will cause the
15436immediate abort of the currently executing method or interface.
15437
15438Fixed a problem where the AcpiSetCurrentResources interface could
15439fault.  This was a side effect of the deployment of the new memory
15440allocation model.
15441
15442Fixed a couple of problems with the Global Lock support introduced
15443in the last major build.  The "common" (1.0/2.0) internal FACS was
15444being overwritten with the FACS signature and clobbering the
15445Global Lock pointer.  Also, the actual firmware FACS was being
15446unmapped after construction of the "common" FACS, preventing
15447access to the actual Global Lock field within it.  The "common"
15448internal FACS is no longer installed as an actual ACPI table; it
15449is used simply as a global.
15450
15451Code and Data Size: Current core subsystem library sizes are shown
15452below.  These are the code and data sizes for the acpica.lib
15453produced by the Microsoft Visual C++ 6.0 compiler, and these
15454values do not include any ACPI driver or OSPM code.  The debug
15455version of the code includes the debug output trace mechanism and
15456has a larger code and data size.  Note that these values will vary
15457depending on the efficiency of the compiler and the compiler
15458options used during generation.
15459
15460  Previous Release (02_07_01)
15461    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
15462    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
15463  Current Release:
15464    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
15465    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
15466
15467
154682) Linux
15469
15470Updated Linux-specific code for core macro and OSL interface
15471changes described above.
15472
15473Improved /proc/acpi/event. It now can be opened only once and has
15474proper poll functionality.
15475
15476Fixed and restructured power management (acpi_bus).
15477
15478Only create /proc "view by type" when devices of that class exist.
15479
15480Fixed "charging/discharging" bug (and others) in acpi_battery.
15481
15482Improved thermal zone code.
15483
15484
154853) ASL Compiler, version X2039:
15486
15487
15488Implemented the new compiler restriction on ASL String hex/octal
15489escapes to non-null, ASCII values.  An error results if an invalid
15490value is used.  (This will require an ACPI 2.0 specification
15491change.)
15492
15493AML object labels that are output to the optional C and ASM source
15494are now prefixed with both the ACPI table signature and table ID
15495to help guarantee uniqueness within a large BIOS project.
15496
15497
15498----------------------------------------
15499Summary of changes for this label: 02_01_02
15500
155011) ACPI CA Core Subsystem:
15502
15503ACPI 2.0 support is complete in the entire Core Subsystem and the
15504ASL compiler. All new ACPI 2.0 operators are implemented and all
15505other changes for ACPI 2.0 support are complete.  With
15506simultaneous code and data optimizations throughout the subsystem,
15507ACPI 2.0 support has been implemented with almost no additional
15508cost in terms of code and data size.
15509
15510Implemented a new mechanism for allocation of return buffers.  If
15511the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
15512be allocated on behalf of the caller.  Consolidated all return
15513buffer validation and allocation to a common procedure.  Return
15514buffers will be allocated via the primary OSL allocation interface
15515since it appears that a separate pool is not needed by most users.
15516If a separate pool is required for these buffers, the caller can
15517still use the original mechanism and pre-allocate the buffer(s).
15518
15519Implemented support for string operands within the DerefOf
15520operator.
15521
15522Restructured the Hardware and Event managers to be table driven,
15523simplifying the source code and reducing the amount of generated
15524code.
15525
15526Split the common read/write low-level ACPI register bitfield
15527procedure into a separate read and write, simplifying the code
15528considerably.
15529
15530Obsoleted the AcpiOsCallocate OSL interface.  This interface was
15531used only a handful of times and didn't have enough critical mass
15532for a separate interface.  Replaced with a common calloc procedure
15533in the core.
15534
15535Fixed a reported problem with the GPE number mapping mechanism
15536that allows GPE1 numbers to be non-contiguous with GPE0.
15537Reorganized the GPE information and shrunk a large array that was
15538originally large enough to hold info for all possible GPEs (256)
15539to simply large enough to hold all GPEs up to the largest GPE
15540number on the machine.
15541
15542Fixed a reported problem with resource structure alignment on 64-
15543bit platforms.
15544
15545Changed the AcpiEnableEvent and AcpiDisableEvent external
15546interfaces to not require any flags for the common case of
15547enabling/disabling a GPE.
15548
15549Implemented support to allow a "Notify" on a Processor object.
15550
15551Most TBDs in comments within the source code have been resolved
15552and eliminated.
15553
15554
15555Fixed a problem in the interpreter where a standalone parent
15556prefix (^) was not handled correctly in the interpreter and
15557debugger.
15558
15559Removed obsolete and unnecessary GPE save/restore code.
15560
15561Implemented Field support in the ASL Load operator.  This allows a
15562table to be loaded from a named field, in addition to loading a
15563table directly from an Operation Region.
15564
15565Implemented timeout and handle support in the external Global Lock
15566interfaces.
15567
15568Fixed a problem in the AcpiDump utility where pathnames were no
15569longer being generated correctly during the dump of named objects.
15570
15571Modified the AML debugger to give a full display of if/while
15572predicates instead of just one AML opcode at a time.  (The
15573predicate can have several nested ASL statements.)  The old method
15574was confusing during single stepping.
15575
15576Code and Data Size: Current core subsystem library sizes are shown
15577below. These are the code and data sizes for the acpica.lib
15578produced by the Microsoft Visual C++ 6.0 compiler, and these
15579values do not include any ACPI driver or OSPM code.  The debug
15580version of the code includes the debug output trace mechanism and
15581has a larger code and data size.  Note that these values will vary
15582depending on the efficiency of the compiler and the compiler
15583options used during generation.
15584
15585  Previous Release (12_18_01)
15586     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
15587     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
15588   Current Release:
15589     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
15590     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
15591
155922) Linux
15593
15594 Implemented fix for PIIX reverse throttling errata (Processor
15595driver)
15596
15597Added new Limit interface (Processor and Thermal drivers)
15598
15599New thermal policy (Thermal driver)
15600
15601Many updates to /proc
15602
15603Battery "low" event support (Battery driver)
15604
15605Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
15606
15607IA32 - IA64 initialization unification, no longer experimental
15608
15609Menuconfig options redesigned
15610
156113) ASL Compiler, version X2037:
15612
15613Implemented several new output features to simplify integration of
15614AML code into  firmware: 1) Output the AML in C source code with
15615labels for each named ASL object.  The    original ASL source code
15616is interleaved as C comments. 2) Output the AML in ASM source code
15617with labels and interleaved ASL    source. 3) Output the AML in
15618raw hex table form, in either C or ASM.
15619
15620Implemented support for optional string parameters to the
15621LoadTable operator.
15622
15623Completed support for embedded escape sequences within string
15624literals.  The compiler now supports all single character escapes
15625as well as the Octal and Hex escapes.  Note: the insertion of a
15626null byte into a string literal (via the hex/octal escape) causes
15627the string to be immediately terminated.  A warning is issued.
15628
15629Fixed a problem where incorrect AML was generated for the case
15630where an ASL namepath consists of a single parent prefix (
15631
15632) with no trailing name segments.
15633
15634The compiler has been successfully generated with a 64-bit C
15635compiler.
15636
15637
15638
15639
15640----------------------------------------
15641Summary of changes for this label: 12_18_01
15642
156431) Linux
15644
15645Enhanced blacklist with reason and severity fields. Any table's
15646signature may now be used to identify a blacklisted system.
15647
15648Call _PIC control method to inform the firmware which interrupt
15649model the OS is using. Turn on any disabled link devices.
15650
15651Cleaned up busmgr /proc error handling (Andreas Dilger)
15652
15653 2) ACPI CA Core Subsystem:
15654
15655Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
15656while loop)
15657
15658Completed implementation of the ACPI 2.0 "Continue",
15659"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
15660operators.  All new ACPI 2.0 operators are now implemented in both
15661the ASL compiler and the AML interpreter.  The only remaining ACPI
156622.0 task is support for the String data type in the DerefOf
15663operator.  Fixed a problem with AcquireMutex where the status code
15664was lost if the caller had to actually wait for the mutex.
15665
15666Increased the maximum ASL Field size from 64K bits to 4G bits.
15667
15668Completed implementation of the external Global Lock interfaces --
15669AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
15670Handler parameters were added.
15671
15672Completed another pass at removing warnings and issues when
15673compiling with 64-bit compilers.  The code now compiles cleanly
15674with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
15675add and subtract (diff) macros have changed considerably.
15676
15677
15678Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1567964-bit platforms, 32-bits on all others.  This type is used
15680wherever memory allocation and/or the C sizeof() operator is used,
15681and affects the OSL memory allocation interfaces AcpiOsAllocate
15682and AcpiOsCallocate.
15683
15684Implemented sticky user breakpoints in the AML debugger.
15685
15686Code and Data Size: Current core subsystem library sizes are shown
15687below. These are the code and data sizes for the acpica.lib
15688produced by the Microsoft Visual C++ 6.0 compiler, and these
15689values do not include any ACPI driver or OSPM code.  The debug
15690version of the code includes the debug output trace mechanism and
15691has a larger code and data size. Note that these values will vary
15692depending on the efficiency of the compiler and the compiler
15693options used during generation.
15694
15695  Previous Release (12_05_01)
15696     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
15697     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
15698   Current Release:
15699     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
15700     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
15701
15702 3) ASL Compiler, version X2034:
15703
15704Now checks for (and generates an error if detected) the use of a
15705Break or Continue statement without an enclosing While statement.
15706
15707
15708Successfully generated the compiler with the Intel 64-bit C
15709compiler.
15710
15711 ----------------------------------------
15712Summary of changes for this label: 12_05_01
15713
15714 1) ACPI CA Core Subsystem:
15715
15716The ACPI 2.0 CopyObject operator is fully implemented.  This
15717operator creates a new copy of an object (and is also used to
15718bypass the "implicit conversion" mechanism of the Store operator.)
15719
15720The ACPI 2.0 semantics for the SizeOf operator are fully
15721implemented.  The change is that performing a SizeOf on a
15722reference object causes an automatic dereference of the object to
15723tha actual value before the size is evaluated. This behavior was
15724undefined in ACPI 1.0.
15725
15726The ACPI 2.0 semantics for the Extended IRQ resource descriptor
15727have been implemented.  The interrupt polarity and mode are now
15728independently set.
15729
15730Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
15731appearing in Package objects were not properly converted to
15732integers when the internal Package was converted to an external
15733object (via the AcpiEvaluateObject interface.)
15734
15735Fixed a problem with the namespace object deletion mechanism for
15736objects created by control methods.  There were two parts to this
15737problem: 1) Objects created during the initialization phase method
15738parse were not being deleted, and 2) The object owner ID mechanism
15739to track objects was broken.
15740
15741Fixed a problem where the use of the ASL Scope operator within a
15742control method would result in an invalid opcode exception.
15743
15744Fixed a problem introduced in the previous label where the buffer
15745length required for the _PRT structure was not being returned
15746correctly.
15747
15748Code and Data Size: Current core subsystem library sizes are shown
15749below. These are the code and data sizes for the acpica.lib
15750produced by the Microsoft Visual C++ 6.0 compiler, and these
15751values do not include any ACPI driver or OSPM code.  The debug
15752version of the code includes the debug output trace mechanism and
15753has a larger code and data size.  Note that these values will vary
15754depending on the efficiency of the compiler and the compiler
15755options used during generation.
15756
15757  Previous Release (11_20_01)
15758     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
15759     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
15760
15761  Current Release:
15762     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
15763     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
15764
15765 2) Linux:
15766
15767Updated all files to apply cleanly against 2.4.16.
15768
15769Added basic PCI Interrupt Routing Table (PRT) support for IA32
15770(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
15771version supports both static and dyanmic PRT entries, but dynamic
15772entries are treated as if they were static (not yet
15773reconfigurable).  Architecture- specific code to use this data is
15774absent on IA32 but should be available shortly.
15775
15776Changed the initialization sequence to start the ACPI interpreter
15777(acpi_init) prior to initialization of the PCI driver (pci_init)
15778in init/main.c.  This ordering is required to support PRT and
15779facilitate other (future) enhancement.  A side effect is that the
15780ACPI bus driver and certain device drivers can no longer be loaded
15781as modules.
15782
15783Modified the 'make menuconfig' options to allow PCI Interrupt
15784Routing support to be included without the ACPI Bus and other
15785device drivers.
15786
15787 3) ASL Compiler, version X2033:
15788
15789Fixed some issues with the use of the new CopyObject and
15790DataTableRegion operators.  Both are fully functional.
15791
15792 ----------------------------------------
15793Summary of changes for this label: 11_20_01
15794
15795 20 November 2001.  Summary of changes for this release.
15796
15797 1) ACPI CA Core Subsystem:
15798
15799Updated Index support to match ACPI 2.0 semantics.  Storing a
15800Integer, String, or Buffer to an Index of a Buffer will store only
15801the least-significant byte of the source to the Indexed buffer
15802byte.  Multiple writes are not performed.
15803
15804Fixed a problem where the access type used in an AccessAs ASL
15805operator was not recorded correctly into the field object.
15806
15807Fixed a problem where ASL Event objects were created in a
15808signalled state. Events are now created in an unsignalled state.
15809
15810The internal object cache is now purged after table loading and
15811initialization to reduce the use of dynamic kernel memory -- on
15812the assumption that object use is greatest during the parse phase
15813of the entire table (versus the run-time use of individual control
15814methods.)
15815
15816ACPI 2.0 variable-length packages are now fully operational.
15817
15818Code and Data Size: Code and Data optimizations have permitted new
15819feature development with an actual reduction in the library size.
15820Current core subsystem library sizes are shown below.  These are
15821the code and data sizes for the acpica.lib produced by the
15822Microsoft Visual C++ 6.0 compiler, and these values do not include
15823any ACPI driver or OSPM code.  The debug version of the code
15824includes the debug output trace mechanism and has a larger code
15825and data size.  Note that these values will vary depending on the
15826efficiency of the compiler and the compiler options used during
15827generation.
15828
15829  Previous Release (11_09_01):
15830     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
15831     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
15832
15833  Current Release:
15834     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
15835     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
15836
15837 2) Linux:
15838
15839Enhanced the ACPI boot-time initialization code to allow the use
15840of Local APIC tables for processor enumeration on IA-32, and to
15841pave the way for a fully MPS-free boot (on SMP systems) in the
15842near future.  This functionality replaces
15843arch/i386/kernel/acpitables.c, which was introduced in an earlier
158442.4.15-preX release.  To enable this feature you must add
15845"acpi_boot=on" to the kernel command line -- see the help entry
15846for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
15847the works...
15848
15849Restructured the configuration options to allow boot-time table
15850parsing support without inclusion of the ACPI Interpreter (and
15851other) code.
15852
15853NOTE: This release does not include fixes for the reported events,
15854power-down, and thermal passive cooling issues (coming soon).
15855
15856 3) ASL Compiler:
15857
15858Added additional typechecking for Fields within restricted access
15859Operation Regions.  All fields within EC and CMOS regions must be
15860declared with ByteAcc. All fields withing SMBus regions must be
15861declared with the BufferAcc access type.
15862
15863Fixed a problem where the listing file output of control methods
15864no longer interleaved the actual AML code with the ASL source
15865code.
15866
15867
15868
15869
15870----------------------------------------
15871Summary of changes for this label: 11_09_01
15872
158731) ACPI CA Core Subsystem:
15874
15875Implemented ACPI 2.0-defined support for writes to fields with a
15876Buffer, String, or Integer source operand that is smaller than the
15877target field. In these cases, the source operand is zero-extended
15878to fill the target field.
15879
15880Fixed a problem where a Field starting bit offset (within the
15881parent operation region) was calculated incorrectly if the
15882
15883alignment of the field differed from the access width.  This
15884affected CreateWordField, CreateDwordField, CreateQwordField, and
15885possibly other fields that use the "AccessAny" keyword.
15886
15887Fixed a problem introduced in the 11_02_01 release where indirect
15888stores through method arguments did not operate correctly.
15889
158902) Linux:
15891
15892Implemented boot-time ACPI table parsing support
15893(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
15894facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
15895legacy BIOS interfaces (e.g. MPS) for the configuration of system
15896processors, memory, and interrupts during setup_arch().  Note that
15897this patch does not include the required architecture-specific
15898changes required to apply this information -- subsequent patches
15899will be posted for both IA32 and IA64 to achieve this.
15900
15901Added low-level sleep support for IA32 platforms, courtesy of Pat
15902Mochel. This allows IA32 systems to transition to/from various
15903sleeping states (e.g. S1, S3), although the lack of a centralized
15904driver model and power-manageable drivers will prevent its
15905(successful) use on most systems.
15906
15907Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
15908submenu, unified IA32 and IA64 options, added new "Boot using ACPI
15909tables" option, etc.
15910
15911Increased the default timeout for the EC driver from 1ms to 10ms
15912(1000 cycles of 10us) to try to address AE_TIME errors during EC
15913transactions.
15914
15915 ----------------------------------------
15916Summary of changes for this label: 11_02_01
15917
159181) ACPI CA Core Subsystem:
15919
15920ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
15921(QWordAcc keyword). All ACPI 2.0 64-bit support is now
15922implemented.
15923
15924OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
15925changes to support ACPI 2.0 Qword field access.  Read/Write
15926PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
15927accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
15928the value parameter for the address space handler interface is now
15929an ACPI_INTEGER.  OSL implementations of these interfaces must now
15930handle the case where the Width parameter is 64.
15931
15932Index Fields: Fixed a problem where unaligned bit assembly and
15933disassembly for IndexFields was not supported correctly.
15934
15935Index and Bank Fields:  Nested Index and Bank Fields are now
15936supported. During field access, a check is performed to ensure
15937that the value written to an Index or Bank register is not out of
15938the range of the register.  The Index (or Bank) register is
15939written before each access to the field data. Future support will
15940include allowing individual IndexFields to be wider than the
15941DataRegister width.
15942
15943Fields: Fixed a problem where the AML interpreter was incorrectly
15944attempting to write beyond the end of a Field/OpRegion.  This was
15945a boundary case that occurred when a DWORD field was written to a
15946BYTE access OpRegion, forcing multiple writes and causing the
15947interpreter to write one datum too many.
15948
15949Fields: Fixed a problem with Field/OpRegion access where the
15950starting bit address of a field was incorrectly calculated if the
15951current access type was wider than a byte (WordAcc, DwordAcc, or
15952QwordAcc).
15953
15954Fields: Fixed a problem where forward references to individual
15955FieldUnits (individual Field names within a Field definition) were
15956not resolved during the AML table load.
15957
15958Fields: Fixed a problem where forward references from a Field
15959definition to the parent Operation Region definition were not
15960resolved during the AML table load.
15961
15962Fields: Duplicate FieldUnit names within a scope are now detected
15963during AML table load.
15964
15965Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
15966returned an incorrect name for the root node.
15967
15968Code and Data Size: Code and Data optimizations have permitted new
15969feature development with an actual reduction in the library size.
15970Current core subsystem library sizes are shown below.  These are
15971the code and data sizes for the acpica.lib produced by the
15972Microsoft Visual C++ 6.0 compiler, and these values do not include
15973any ACPI driver or OSPM code.  The debug version of the code
15974includes the debug output trace mechanism and has a larger code
15975and data size.  Note that these values will vary depending on the
15976efficiency of the compiler and the compiler options used during
15977generation.
15978
15979  Previous Release (10_18_01):
15980     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
15981     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
15982
15983  Current Release:
15984     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
15985     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
15986
15987 2) Linux:
15988
15989Improved /proc processor output (Pavel Machek) Re-added
15990MODULE_LICENSE("GPL") to all modules.
15991
15992 3) ASL Compiler version X2030:
15993
15994Duplicate FieldUnit names within a scope are now detected and
15995flagged as errors.
15996
15997 4) Documentation:
15998
15999Programmer Reference updated to reflect OSL and address space
16000handler interface changes described above.
16001
16002----------------------------------------
16003Summary of changes for this label: 10_18_01
16004
16005ACPI CA Core Subsystem:
16006
16007Fixed a problem with the internal object reference count mechanism
16008that occasionally caused premature object deletion. This resolves
16009all of the outstanding problem reports where an object is deleted
16010in the middle of an interpreter evaluation.  Although this problem
16011only showed up in rather obscure cases, the solution to the
16012problem involved an adjustment of all reference counts involving
16013objects attached to namespace nodes.
16014
16015Fixed a problem with Field support in the interpreter where
16016writing to an aligned field whose length is an exact multiple (2
16017or greater) of the field access granularity would cause an attempt
16018to write beyond the end of the field.
16019
16020The top level AML opcode execution functions within the
16021interpreter have been renamed with a more meaningful and
16022consistent naming convention.  The modules exmonad.c and
16023exdyadic.c were eliminated.  New modules are exoparg1.c,
16024exoparg2.c, exoparg3.c, and exoparg6.c.
16025
16026Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
16027
16028Fixed a problem where the AML debugger was causing some internal
16029objects to not be deleted during subsystem termination.
16030
16031Fixed a problem with the external AcpiEvaluateObject interface
16032where the subsystem would fault if the named object to be
16033evaluated refered to a constant such as Zero, Ones, etc.
16034
16035Fixed a problem with IndexFields and BankFields where the
16036subsystem would fault if the index, data, or bank registers were
16037not defined in the same scope as the field itself.
16038
16039Added printf format string checking for compilers that support
16040this feature.  Corrected more than 50 instances of issues with
16041format specifiers within invocations of ACPI_DEBUG_PRINT
16042throughout the core subsystem code.
16043
16044The ASL "Revision" operator now returns the ACPI support level
16045implemented in the core - the value "2" since the ACPI 2.0 support
16046is more than 50% implemented.
16047
16048Enhanced the output of the AML debugger "dump namespace" command
16049to output in a more human-readable form.
16050
16051Current core subsystem library code sizes are shown below.  These
16052
16053are the code and data sizes for the acpica.lib produced by the
16054Microsoft Visual C++ 6.0 compiler, and these values do not include
16055any ACPI driver or OSPM code.  The debug version of the code
16056includes the full debug trace mechanism -- leading to a much
16057
16058larger code and data size.  Note that these values will vary
16059depending on the efficiency of the compiler and the compiler
16060options used during generation.
16061
16062     Previous Label (09_20_01):
16063     Non-Debug Version:    65K Code,     5K Data,     70K Total
16064     Debug Version:       138K Code,    58K Data,    196K Total
16065
16066     This Label:
16067
16068     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
16069     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
16070
16071Linux:
16072
16073Implemented a "Bad BIOS Blacklist" to track machines that have
16074known ASL/AML problems.
16075
16076Enhanced the /proc interface for the thermal zone driver and added
16077support for _HOT (the critical suspend trip point).  The 'info'
16078file now includes threshold/policy information, and allows setting
16079of _SCP (cooling preference) and _TZP (polling frequency) values
16080to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
16081frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
16082preference to the passive/quiet mode (if supported by the ASL).
16083
16084Implemented a workaround for a gcc bug that resuted in an OOPs
16085when loading the control method battery driver.
16086
16087 ----------------------------------------
16088Summary of changes for this label: 09_20_01
16089
16090 ACPI CA Core Subsystem:
16091
16092The AcpiEnableEvent and AcpiDisableEvent interfaces have been
16093modified to allow individual GPE levels to be flagged as wake-
16094enabled (i.e., these GPEs are to remain enabled when the platform
16095sleeps.)
16096
16097The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
16098support wake-enabled GPEs.  This means that upon entering the
16099sleep state, all GPEs that are not wake-enabled are disabled.
16100When leaving the sleep state, these GPEs are reenabled.
16101
16102A local double-precision divide/modulo module has been added to
16103enhance portability to OS kernels where a 64-bit math library is
16104not available.  The new module is "utmath.c".
16105
16106Several optimizations have been made to reduce the use of CPU
16107stack.  Originally over 2K, the maximum stack usage is now below
161082K at 1860  bytes (1.82k)
16109
16110Fixed a problem with the AcpiGetFirmwareTable interface where the
16111root table pointer was not mapped into a logical address properly.
16112
16113Fixed a problem where a NULL pointer was being dereferenced in the
16114interpreter code for the ASL Notify operator.
16115
16116Fixed a problem where the use of the ASL Revision operator
16117returned an error. This operator now returns the current version
16118of the ACPI CA core subsystem.
16119
16120Fixed a problem where objects passed as control method parameters
16121to AcpiEvaluateObject were always deleted at method termination.
16122However, these objects may end up being stored into the namespace
16123by the called method.  The object reference count mechanism was
16124applied to these objects instead of a force delete.
16125
16126Fixed a problem where static strings or buffers (contained in the
16127AML code) that are declared as package elements within the ASL
16128code could cause a fault because the interpreter would attempt to
16129delete them.  These objects are now marked with the "static
16130object" flag to prevent any attempt to delete them.
16131
16132Implemented an interpreter optimization to use operands directly
16133from the state object instead of extracting the operands to local
16134variables.  This reduces stack use and code size, and improves
16135performance.
16136
16137The module exxface.c was eliminated as it was an unnecessary extra
16138layer of code.
16139
16140Current core subsystem library code sizes are shown below.  These
16141are the code and data sizes for the acpica.lib produced by the
16142Microsoft Visual C++ 6.0 compiler, and these values do not include
16143any ACPI driver or OSPM code.  The debug version of the code
16144includes the full debug trace mechanism -- leading to a much
16145larger code and data size.  Note that these values will vary
16146depending on the efficiency of the compiler and the compiler
16147options used during generation.
16148
16149  Non-Debug Version:  65K Code,   5K Data,   70K Total
16150(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
16151Total  (Previously 195K)
16152
16153Linux:
16154
16155Support for ACPI 2.0 64-bit integers has been added.   All ACPI
16156Integer objects are now 64 bits wide
16157
16158All Acpi data types and structures are now in lower case.  Only
16159Acpi macros are upper case for differentiation.
16160
16161 Documentation:
16162
16163Changes to the external interfaces as described above.
16164
16165 ----------------------------------------
16166Summary of changes for this label: 08_31_01
16167
16168 ACPI CA Core Subsystem:
16169
16170A bug with interpreter implementation of the ASL Divide operator
16171was found and fixed.  The implicit function return value (not the
16172explicit store operands) was returning the remainder instead of
16173the quotient.  This was a longstanding bug and it fixes several
16174known outstanding issues on various platforms.
16175
16176The ACPI_DEBUG_PRINT and function trace entry/exit macros have
16177been further optimized for size.  There are 700 invocations of the
16178DEBUG_PRINT macro alone, so each optimization reduces the size of
16179the debug version of the subsystem significantly.
16180
16181A stack trace mechanism has been implemented.  The maximum stack
16182usage is about 2K on 32-bit platforms.  The debugger command "stat
16183stack" will display the current maximum stack usage.
16184
16185All public symbols and global variables within the subsystem are
16186now prefixed with the string "Acpi".  This keeps all of the
16187symbols grouped together in a kernel map, and avoids conflicts
16188with other kernel subsystems.
16189
16190Most of the internal fixed lookup tables have been moved into the
16191code segment via the const operator.
16192
16193Several enhancements have been made to the interpreter to both
16194reduce the code size and improve performance.
16195
16196Current core subsystem library code sizes are shown below.  These
16197are the code and data sizes for the acpica.lib produced by the
16198Microsoft Visual C++ 6.0 compiler, and these values do not include
16199any ACPI driver or OSPM code.  The debug version of the code
16200includes the full debug trace mechanism which contains over 700
16201invocations of the DEBUG_PRINT macro, 500 function entry macro
16202invocations, and over 900 function exit macro invocations --
16203leading to a much larger code and data size.  Note that these
16204values will vary depending on the efficiency of the compiler and
16205the compiler options used during generation.
16206
16207        Non-Debug Version:  64K Code,   5K Data,   69K Total
16208Debug Version:     137K Code,  58K Data,  195K Total
16209
16210 Linux:
16211
16212Implemented wbinvd() macro, pending a kernel-wide definition.
16213
16214Fixed /proc/acpi/event to handle poll() and short reads.
16215
16216 ASL Compiler, version X2026:
16217
16218Fixed a problem introduced in the previous label where the AML
16219
16220code emitted for package objects produced packages with zero
16221length.
16222
16223 ----------------------------------------
16224Summary of changes for this label: 08_16_01
16225
16226ACPI CA Core Subsystem:
16227
16228The following ACPI 2.0 ASL operators have been implemented in the
16229AML interpreter (These are already supported by the Intel ASL
16230compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
16231ToBuffer.  Support for 64-bit AML constants is implemented in the
16232AML parser, debugger, and disassembler.
16233
16234The internal memory tracking mechanism (leak detection code) has
16235been upgraded to reduce the memory overhead (a separate tracking
16236block is no longer allocated for each memory allocation), and now
16237supports all of the internal object caches.
16238
16239The data structures and code for the internal object caches have
16240been coelesced and optimized so that there is a single cache and
16241memory list data structure and a single group of functions that
16242implement generic cache management.  This has reduced the code
16243size in both the debug and release versions of the subsystem.
16244
16245The DEBUG_PRINT macro(s) have been optimized for size and replaced
16246by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
16247different, because it generates a single call to an internal
16248function.  This results in a savings of about 90 bytes per
16249invocation, resulting in an overall code and data savings of about
1625016% in the debug version of the subsystem.
16251
16252 Linux:
16253
16254Fixed C3 disk corruption problems and re-enabled C3 on supporting
16255machines.
16256
16257Integrated low-level sleep code by Patrick Mochel.
16258
16259Further tweaked source code Linuxization.
16260
16261Other minor fixes.
16262
16263 ASL Compiler:
16264
16265Support for ACPI 2.0 variable length packages is fixed/completed.
16266
16267Fixed a problem where the optional length parameter for the ACPI
162682.0 ToString operator.
16269
16270Fixed multiple extraneous error messages when a syntax error is
16271detected within the declaration line of a control method.
16272
16273 ----------------------------------------
16274Summary of changes for this label: 07_17_01
16275
16276ACPI CA Core Subsystem:
16277
16278Added a new interface named AcpiGetFirmwareTable to obtain any
16279ACPI table via the ACPI signature.  The interface can be called at
16280any time during kernel initialization, even before the kernel
16281virtual memory manager is initialized and paging is enabled.  This
16282allows kernel subsystems to obtain ACPI tables very early, even
16283before the ACPI CA subsystem is initialized.
16284
16285Fixed a problem where Fields defined with the AnyAcc attribute
16286could be resolved to the incorrect address under the following
16287conditions: 1) the field width is larger than 8 bits and 2) the
16288parent operation region is not defined on a DWORD boundary.
16289
16290Fixed a problem where the interpreter is not being locked during
16291namespace initialization (during execution of the _INI control
16292methods), causing an error when an attempt is made to release it
16293later.
16294
16295ACPI 2.0 support in the AML Interpreter has begun and will be
16296ongoing throughout the rest of this year.  In this label, The Mod
16297operator is implemented.
16298
16299Added a new data type to contain full PCI addresses named
16300ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
16301and Function values.
16302
16303 Linux:
16304
16305Enhanced the Linux version of the source code to change most
16306capitalized ACPI type names to lowercase. For example, all
16307instances of ACPI_STATUS are changed to acpi_status.  This will
16308result in a large diff, but the change is strictly cosmetic and
16309aligns the CA code closer to the Linux coding standard.
16310
16311OSL Interfaces:
16312
16313The interfaces to the PCI configuration space have been changed to
16314add the PCI Segment number and to split the single 32-bit combined
16315DeviceFunction field into two 16-bit fields.  This was
16316accomplished by moving the four values that define an address in
16317PCI configuration space (segment, bus, device, and function) to
16318the new ACPI_PCI_ID structure.
16319
16320The changes to the PCI configuration space interfaces led to a
16321reexamination of the complete set of address space access
16322interfaces for PCI, I/O, and Memory.  The previously existing 18
16323interfaces have proven difficult to maintain (any small change
16324must be propagated across at least 6 interfaces) and do not easily
16325allow for future expansion to 64 bits if necessary.  Also, on some
16326systems, it would not be appropriate to demultiplex the access
16327width (8, 16, 32,or 64) before calling the OSL if the
16328corresponding native OS interfaces contain a similar access width
16329parameter.  For these reasons, the 18 address space interfaces
16330have been replaced by these 6 new ones:
16331
16332AcpiOsReadPciConfiguration
16333AcpiOsWritePciConfiguration
16334AcpiOsReadMemory
16335AcpiOsWriteMemory
16336AcpiOsReadPort
16337AcpiOsWritePort
16338
16339Added a new interface named AcpiOsGetRootPointer to allow the OSL
16340to perform the platform and/or OS-specific actions necessary to
16341obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
16342interface will simply call down to the CA core to perform the low-
16343memory search for the table.  On IA-64, the RSDP is obtained from
16344EFI.  Migrating this interface to the OSL allows the CA core to
16345
16346remain OS and platform independent.
16347
16348Added a new interface named AcpiOsSignal to provide a generic
16349"function code and pointer" interface for various miscellaneous
16350signals and notifications that must be made to the host OS.   The
16351first such signals are intended to support the ASL Fatal and
16352Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
16353interface has been obsoleted.
16354
16355The definition of the AcpiFormatException interface has been
16356changed to simplify its use.  The caller no longer must supply a
16357buffer to the call; A pointer to a const string is now returned
16358directly.  This allows the call to be easily used in printf
16359statements, etc. since the caller does not have to manage a local
16360buffer.
16361
16362
16363 ASL Compiler, Version X2025:
16364
16365The ACPI 2.0 Switch/Case/Default operators have been implemented
16366and are fully functional.  They will work with all ACPI 1.0
16367interpreters, since the operators are simply translated to If/Else
16368pairs.
16369
16370The ACPI 2.0 ElseIf operator is implemented and will also work
16371with 1.0 interpreters, for the same reason.
16372
16373Implemented support for ACPI 2.0 variable-length packages.  These
16374packages have a separate opcode, and their size is determined by
16375the interpreter at run-time.
16376
16377Documentation The ACPI CA Programmer Reference has been updated to
16378reflect the new interfaces and changes to existing interfaces.
16379
16380 ------------------------------------------
16381Summary of changes for this label: 06_15_01
16382
16383 ACPI CA Core Subsystem:
16384
16385Fixed a problem where a DWORD-accessed field within a Buffer
16386object would get its byte address inadvertently rounded down to
16387the nearest DWORD.  Buffers are always Byte-accessible.
16388
16389 ASL Compiler, version X2024:
16390
16391Fixed a problem where the Switch() operator would either fault or
16392hang the compiler.  Note however, that the AML code for this ACPI
163932.0 operator is not yet implemented.
16394
16395Compiler uses the new AcpiOsGetTimer interface to obtain compile
16396timings.
16397
16398Implementation of the CreateField operator automatically converts
16399a reference to a named field within a resource descriptor from a
16400byte offset to a bit offset if required.
16401
16402Added some missing named fields from the resource descriptor
16403support. These are the names that are automatically created by the
16404compiler to reference fields within a descriptor.  They are only
16405valid at compile time and are not passed through to the AML
16406interpreter.
16407
16408Resource descriptor named fields are now typed as Integers and
16409subject to compile-time typechecking when used in expressions.
16410
16411 ------------------------------------------
16412Summary of changes for this label: 05_18_01
16413
16414 ACPI CA Core Subsystem:
16415
16416Fixed a couple of problems in the Field support code where bits
16417from adjacent fields could be returned along with the proper field
16418bits. Restructured the field support code to improve performance,
16419readability and maintainability.
16420
16421New DEBUG_PRINTP macro automatically inserts the procedure name
16422into the output, saving hundreds of copies of procedure name
16423strings within the source, shrinking the memory footprint of the
16424debug version of the core subsystem.
16425
16426 Source Code Structure:
16427
16428The source code directory tree was restructured to reflect the
16429current organization of the component architecture.  Some files
16430and directories have been moved and/or renamed.
16431
16432 Linux:
16433
16434Fixed leaking kacpidpc processes.
16435
16436Fixed queueing event data even when /proc/acpi/event is not
16437opened.
16438
16439 ASL Compiler, version X2020:
16440
16441Memory allocation performance enhancement - over 24X compile time
16442improvement on large ASL files.  Parse nodes and namestring
16443buffers are now allocated from a large internal compiler buffer.
16444
16445The temporary .SRC file is deleted unless the "-s" option is
16446specified
16447
16448The "-d" debug output option now sends all output to the .DBG file
16449instead of the console.
16450
16451"External" second parameter is now optional
16452
16453"ElseIf" syntax now properly allows the predicate
16454
16455Last operand to "Load" now recognized as a Target operand
16456
16457Debug object can now be used anywhere as a normal object.
16458
16459ResourceTemplate now returns an object of type BUFFER
16460
16461EISAID now returns an object of type INTEGER
16462
16463"Index" now works with a STRING operand
16464
16465"LoadTable" now accepts optional parameters
16466
16467"ToString" length parameter is now optional
16468
16469"Interrupt (ResourceType," parse error fixed.
16470
16471"Register" with a user-defined region space parse error fixed
16472
16473Escaped backslash at the end of a string ("\\") scan/parse error
16474fixed
16475
16476"Revision" is now an object of type INTEGER.
16477
16478
16479
16480------------------------------------------
16481Summary of changes for this label: 05_02_01
16482
16483Linux:
16484
16485/proc/acpi/event now blocks properly.
16486
16487Removed /proc/sys/acpi. You can still dump your DSDT from
16488/proc/acpi/dsdt.
16489
16490 ACPI CA Core Subsystem:
16491
16492Fixed a problem introduced in the previous label where some of the
16493"small" resource descriptor types were not recognized.
16494
16495Improved error messages for the case where an ASL Field is outside
16496the range of the parent operation region.
16497
16498 ASL Compiler, version X2018:
16499
16500
16501Added error detection for ASL Fields that extend beyond the length
16502of the parent operation region (only if the length of the region
16503is known at compile time.)  This includes fields that have a
16504minimum access width that is smaller than the parent region, and
16505individual field units that are partially or entirely beyond the
16506extent of the parent.
16507
16508
16509
16510------------------------------------------
16511Summary of changes for this label: 04_27_01
16512
16513 ACPI CA Core Subsystem:
16514
16515Fixed a problem where the namespace mutex could be released at the
16516wrong time during execution of AcpiRemoveAddressSpaceHandler.
16517
16518Added optional thread ID output for debug traces, to simplify
16519debugging of multiple threads.  Added context switch notification
16520when the debug code realizes that a different thread is now
16521executing ACPI code.
16522
16523Some additional external data types have been prefixed with the
16524string "ACPI_" for consistency.  This may effect existing code.
16525The data types affected are the external callback typedefs - e.g.,
16526
16527WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
16528
16529 Linux:
16530
16531Fixed an issue with the OSL semaphore implementation where a
16532thread was waking up with an error from receiving a SIGCHLD
16533signal.
16534
16535Linux version of ACPI CA now uses the system C library for string
16536manipulation routines instead of a local implementation.
16537
16538Cleaned up comments and removed TBDs.
16539
16540 ASL Compiler, version X2017:
16541
16542Enhanced error detection and reporting for all file I/O
16543operations.
16544
16545 Documentation:
16546
16547Programmer Reference updated to version 1.06.
16548
16549
16550
16551------------------------------------------
16552Summary of changes for this label: 04_13_01
16553
16554 ACPI CA Core Subsystem:
16555
16556Restructured support for BufferFields and RegionFields.
16557BankFields support is now fully operational.  All known 32-bit
16558limitations on field sizes have been removed.  Both BufferFields
16559and (Operation) RegionFields are now supported by the same field
16560management code.
16561
16562Resource support now supports QWORD address and IO resources. The
1656316/32/64 bit address structures and the Extended IRQ structure
16564have been changed to properly handle Source Resource strings.
16565
16566A ThreadId of -1 is now used to indicate a "mutex not acquired"
16567condition internally and must never be returned by AcpiOsThreadId.
16568This reserved value was changed from 0 since Unix systems allow a
16569thread ID of 0.
16570
16571Linux:
16572
16573Driver code reorganized to enhance portability
16574
16575Added a kernel configuration option to control ACPI_DEBUG
16576
16577Fixed the EC driver to honor _GLK.
16578
16579ASL Compiler, version X2016:
16580
16581Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
16582address space was set to 0, not 0x7f as it should be.
16583
16584 ------------------------------------------
16585Summary of changes for this label: 03_13_01
16586
16587 ACPI CA Core Subsystem:
16588
16589During ACPI initialization, the _SB_._INI method is now run if
16590present.
16591
16592Notify handler fix - notifies are deferred until the parent method
16593completes execution.  This fixes the "mutex already acquired"
16594issue seen occasionally.
16595
16596Part of the "implicit conversion" rules in ACPI 2.0 have been
16597found to cause compatibility problems with existing ASL/AML.  The
16598convert "result-to-target-type" implementation has been removed
16599for stores to method Args and Locals.  Source operand conversion
16600is still fully implemented.  Possible changes to ACPI 2.0
16601specification pending.
16602
16603Fix to AcpiRsCalculatePciRoutingTableLength to return correct
16604length.
16605
16606Fix for compiler warnings for 64-bit compiles.
16607
16608 Linux:
16609
16610/proc output aligned for easier parsing.
16611
16612Release-version compile problem fixed.
16613
16614New kernel configuration options documented in Configure.help.
16615
16616IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
16617context" message.
16618
16619 OSPM:
16620
16621Power resource driver integrated with bus manager.
16622
16623Fixed kernel fault during active cooling for thermal zones.
16624
16625Source Code:
16626
16627The source code tree has been restructured.
16628
16629
16630
16631------------------------------------------
16632Summary of changes for this label: 03_02_01
16633
16634 Linux OS Services Layer (OSL):
16635
16636Major revision of all Linux-specific code.
16637
16638Modularized all ACPI-specific drivers.
16639
16640Added new thermal zone and power resource drivers.
16641
16642Revamped /proc interface (new functionality is under /proc/acpi).
16643
16644New kernel configuration options.
16645
16646 Linux known issues:
16647
16648New kernel configuration options not documented in Configure.help
16649yet.
16650
16651
16652Module dependencies not currently implemented. If used, they
16653should be loaded in this order: busmgr, power, ec, system,
16654processor, battery, ac_adapter, button, thermal.
16655
16656Modules will not load if CONFIG_MODVERSION is set.
16657
16658IBM 600E - entering S5 may reboot instead of shutting down.
16659
16660IBM 600E - Sleep button may generate "Invalid <NULL> context"
16661message.
16662
16663Some systems may fail with "execution mutex already acquired"
16664message.
16665
16666 ACPI CA Core Subsystem:
16667
16668Added a new OSL Interface, AcpiOsGetThreadId.  This was required
16669for the  deadlock detection code. Defined to return a non-zero, 32-
16670bit thread ID for the currently executing thread.  May be a non-
16671zero constant integer on single-thread systems.
16672
16673Implemented deadlock detection for internal subsystem mutexes.  We
16674may add conditional compilation for this code (debug only) later.
16675
16676ASL/AML Mutex object semantics are now fully supported.  This
16677includes multiple acquires/releases by owner and support for the
16678
16679Mutex SyncLevel parameter.
16680
16681A new "Force Release" mechanism automatically frees all ASL
16682Mutexes that have been acquired but not released when a thread
16683exits the interpreter.  This forces conformance to the ACPI spec
16684("All mutexes must be released when an invocation exits") and
16685prevents deadlocked ASL threads.  This mechanism can be expanded
16686(later) to monitor other resource acquisitions if OEM ASL code
16687continues to misbehave (which it will).
16688
16689Several new ACPI exception codes have been added for the Mutex
16690support.
16691
16692Recursive method calls are now allowed and supported (the ACPI
16693spec does in fact allow recursive method calls.)  The number of
16694recursive calls is subject to the restrictions imposed by the
16695SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
16696parameter.
16697
16698Implemented support for the SyncLevel parameter for control
16699methods (ACPI 2.0 feature)
16700
16701Fixed a deadlock problem when multiple threads attempted to use
16702the interpreter.
16703
16704Fixed a problem where the string length of a String package
16705element was not always set in a package returned from
16706AcpiEvaluateObject.
16707
16708Fixed a problem where the length of a String package element was
16709not always included in the length of the overall package returned
16710from AcpiEvaluateObject.
16711
16712Added external interfaces (Acpi*) to the ACPI debug memory
16713manager.  This manager keeps a list of all outstanding
16714allocations, and can therefore detect memory leaks and attempts to
16715free memory blocks more than once. Useful for code such as the
16716power manager, etc.  May not be appropriate for device drivers.
16717Performance with the debug code enabled is slow.
16718
16719The ACPI Global Lock is now an optional hardware element.
16720
16721 ASL Compiler Version X2015:
16722
16723Integrated changes to allow the compiler to be generated on
16724multiple platforms.
16725
16726Linux makefile added to generate the compiler on Linux
16727
16728 Source Code:
16729
16730All platform-specific headers have been moved to their own
16731subdirectory, Include/Platform.
16732
16733New source file added, Interpreter/ammutex.c
16734
16735New header file, Include/acstruct.h
16736
16737 Documentation:
16738
16739The programmer reference has been updated for the following new
16740interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
16741
16742 ------------------------------------------
16743Summary of changes for this label: 02_08_01
16744
16745Core ACPI CA Subsystem: Fixed a problem where an error was
16746incorrectly returned if the return resource buffer was larger than
16747the actual data (in the resource interfaces).
16748
16749References to named objects within packages are resolved to the
16750
16751full pathname string before packages are returned directly (via
16752the AcpiEvaluateObject interface) or indirectly via the resource
16753interfaces.
16754
16755Linux OS Services Layer (OSL):
16756
16757Improved /proc battery interface.
16758
16759
16760Added C-state debugging output and other miscellaneous fixes.
16761
16762ASL Compiler Version X2014:
16763
16764All defined method arguments can now be used as local variables,
16765including the ones that are not actually passed in as parameters.
16766The compiler tracks initialization of the arguments and issues an
16767exception if they are used without prior assignment (just like
16768locals).
16769
16770The -o option now specifies a filename prefix that is used for all
16771output files, including the AML output file.  Otherwise, the
16772default behavior is as follows:  1) the AML goes to the file
16773specified in the DSDT.  2) all other output files use the input
16774source filename as the base.
16775
16776 ------------------------------------------
16777Summary of changes for this label: 01_25_01
16778
16779Core ACPI CA Subsystem: Restructured the implementation of object
16780store support within the  interpreter.  This includes support for
16781the Store operator as well  as any ASL operators that include a
16782target operand.
16783
16784Partially implemented support for Implicit Result-to-Target
16785conversion. This is when a result object is converted on the fly
16786to the type of  an existing target object.  Completion of this
16787support is pending  further analysis of the ACPI specification
16788concerning this matter.
16789
16790CPU-specific code has been removed from the subsystem (hardware
16791directory).
16792
16793New Power Management Timer functions added
16794
16795Linux OS Services Layer (OSL): Moved system state transition code
16796to the core, fixed it, and modified  Linux OSL accordingly.
16797
16798Fixed C2 and C3 latency calculations.
16799
16800
16801We no longer use the compilation date for the version message on
16802initialization, but retrieve the version from AcpiGetSystemInfo().
16803
16804Incorporated for fix Sony VAIO machines.
16805
16806Documentation:  The Programmer Reference has been updated and
16807reformatted.
16808
16809
16810ASL Compiler:  Version X2013: Fixed a problem where the line
16811numbering and error reporting could get out  of sync in the
16812presence of multiple include files.
16813
16814 ------------------------------------------
16815Summary of changes for this label: 01_15_01
16816
16817Core ACPI CA Subsystem:
16818
16819Implemented support for type conversions in the execution of the
16820ASL  Concatenate operator (The second operand is converted to
16821match the type  of the first operand before concatenation.)
16822
16823Support for implicit source operand conversion is partially
16824implemented.   The ASL source operand types Integer, Buffer, and
16825String are freely  interchangeable for most ASL operators and are
16826converted by the interpreter  on the fly as required.  Implicit
16827Target operand conversion (where the  result is converted to the
16828target type before storing) is not yet implemented.
16829
16830Support for 32-bit and 64-bit BCD integers is implemented.
16831
16832Problem fixed where a field read on an aligned field could cause a
16833read  past the end of the field.
16834
16835New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
16836does not return a value, but the caller expects one.  (The ASL
16837compiler flags this as a warning.)
16838
16839ASL Compiler:
16840
16841Version X2011:
168421. Static typechecking of all operands is implemented. This
16843prevents the use of invalid objects (such as using a Package where
16844an Integer is required) at compile time instead of at interpreter
16845run-time.
168462. The ASL source line is printed with ALL errors and warnings.
168473. Bug fix for source EOF without final linefeed.
168484. Debug option is split into a parse trace and a namespace trace.
168495. Namespace output option (-n) includes initial values for
16850integers and strings.
168516. Parse-only option added for quick syntax checking.
168527. Compiler checks for duplicate ACPI name declarations
16853
16854Version X2012:
168551. Relaxed typechecking to allow interchangeability between
16856strings, integers, and buffers.  These types are now converted by
16857the interpreter at runtime.
168582. Compiler reports time taken by each internal subsystem in the
16859debug         output file.
16860
16861
16862 ------------------------------------------
16863Summary of changes for this label: 12_14_00
16864
16865ASL Compiler:
16866
16867This is the first official release of the compiler. Since the
16868compiler requires elements of the Core Subsystem, this label
16869synchronizes everything.
16870
16871------------------------------------------
16872Summary of changes for this label: 12_08_00
16873
16874
16875Fixed a problem where named references within the ASL definition
16876of both OperationRegions and CreateXXXFields did not work
16877properly.  The symptom was an AE_AML_OPERAND_TYPE during
16878initialization of the region/field. This is similar (but not
16879related internally) to the problem that was fixed in the last
16880label.
16881
16882Implemented both 32-bit and 64-bit support for the BCD ASL
16883functions ToBCD and FromBCD.
16884
16885Updated all legal headers to include "2000" in the copyright
16886years.
16887
16888 ------------------------------------------
16889Summary of changes for this label: 12_01_00
16890
16891Fixed a problem where method invocations within the ASL definition
16892of both OperationRegions and CreateXXXFields did not work
16893properly.  The symptom was an AE_AML_OPERAND_TYPE during
16894initialization of the region/field:
16895
16896  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
16897[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
16898(0x3005)
16899
16900Fixed a problem where operators with more than one nested
16901subexpression would fail.  The symptoms were varied, by mostly
16902AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
16903problem that has gone unnoticed until now.
16904
16905  Subtract (Add (1,2), Multiply (3,4))
16906
16907Fixed a problem where AcpiGetHandle didn't quite get fixed in the
16908previous build (The prefix part of a relative path was handled
16909incorrectly).
16910
16911Fixed a problem where Operation Region initialization failed if
16912the operation region name was a "namepath" instead of a simple
16913"nameseg". Symptom was an AE_NO_OPERAND error.
16914
16915Fixed a problem where an assignment to a local variable via the
16916indirect RefOf mechanism only worked for the first such
16917assignment.  Subsequent assignments were ignored.
16918
16919 ------------------------------------------
16920Summary of changes for this label: 11_15_00
16921
16922ACPI 2.0 table support with backwards support for ACPI 1.0 and the
169230.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
16924the AML  interpreter does NOT have support for the new 2.0 ASL
16925grammar terms at this time.
16926
16927All ACPI hardware access is via the GAS structures in the ACPI 2.0
16928FADT.
16929
16930All physical memory addresses across all platforms are now 64 bits
16931wide. Logical address width remains dependent on the platform
16932(i.e., "void *").
16933
16934AcpiOsMapMemory interface changed to a 64-bit physical address.
16935
16936The AML interpreter integer size is now 64 bits, as per the ACPI
169372.0 specification.
16938
16939For backwards compatibility with ACPI 1.0, ACPI tables with a
16940revision number less than 2 use 32-bit integers only.
16941
16942Fixed a problem where the evaluation of OpRegion operands did not
16943always resolve them to numbers properly.
16944
16945------------------------------------------
16946Summary of changes for this label: 10_20_00
16947
16948Fix for CBN_._STA issue.  This fix will allow correct access to
16949CBN_ OpRegions when the _STA returns 0x8.
16950
16951Support to convert ACPI constants (Ones, Zeros, One) to actual
16952values before a package object is returned
16953
16954Fix for method call as predicate to if/while construct causing
16955incorrect if/while behavior
16956
16957Fix for Else block package lengths sometimes calculated wrong (if
16958block > 63 bytes)
16959
16960Fix for Processor object length field, was always zero
16961
16962Table load abort if FACP sanity check fails
16963
16964Fix for problem with Scope(name) if name already exists
16965
16966Warning emitted if a named object referenced cannot be found
16967(resolved) during method execution.
16968
16969
16970
16971
16972
16973------------------------------------------
16974Summary of changes for this label: 9_29_00
16975
16976New table initialization interfaces: AcpiInitializeSubsystem no
16977longer has any parameters AcpiFindRootPointer - Find the RSDP (if
16978necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
16979>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
16980AcpiLoadTables
16981
16982Note: These interface changes require changes to all existing OSDs
16983
16984The PCI_Config default address space handler is always installed
16985at the root namespace object.
16986
16987-------------------------------------------
16988Summary of changes for this label: 09_15_00
16989
16990The new initialization architecture is implemented.  New
16991interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
16992AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
16993
16994(Namespace is automatically loaded when a table is loaded)
16995
16996The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1699752 bytes to 32 bytes.  There is usually one of these for every
16998namespace object, so the memory savings is significant.
16999
17000Implemented just-in-time evaluation of the CreateField operators.
17001
17002Bug fixes for IA-64 support have been integrated.
17003
17004Additional code review comments have been implemented
17005
17006The so-called "third pass parse" has been replaced by a final walk
17007through the namespace to initialize all operation regions (address
17008spaces) and fields that have not yet been initialized during the
17009execution of the various _INI and REG methods.
17010
17011New file - namespace/nsinit.c
17012
17013-------------------------------------------
17014Summary of changes for this label: 09_01_00
17015
17016Namespace manager data structures have been reworked to change the
17017primary  object from a table to a single object.  This has
17018resulted in dynamic memory  savings of 3X within the namespace and
170192X overall in the ACPI CA subsystem.
17020
17021Fixed problem where the call to AcpiEvFindPciRootBuses was
17022inadvertently left  commented out.
17023
17024Reduced the warning count when generating the source with the GCC
17025compiler.
17026
17027Revision numbers added to each module header showing the
17028SourceSafe version of the file.  Please refer to this version
17029number when giving us feedback or comments on individual modules.
17030
17031The main object types within the subsystem have been renamed to
17032clarify their  purpose:
17033
17034ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
17035ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
17036ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
17037
17038NOTE: no changes to the initialization sequence are included in
17039this label.
17040
17041-------------------------------------------
17042Summary of changes for this label: 08_23_00
17043
17044Fixed problem where TerminateControlMethod was being called
17045multiple times per  method
17046
17047Fixed debugger problem where single stepping caused a semaphore to
17048be  oversignalled
17049
17050Improved performance through additional parse object caching -
17051added  ACPI_EXTENDED_OP type
17052
17053-------------------------------------------
17054Summary of changes for this label: 08_10_00
17055
17056Parser/Interpreter integration:  Eliminated the creation of
17057complete parse trees  for ACPI tables and control methods.
17058Instead, parse subtrees are created and  then deleted as soon as
17059they are processed (Either entered into the namespace or  executed
17060by the interpreter).  This reduces the use of dynamic kernel
17061memory  significantly. (about 10X)
17062
17063Exception codes broken into classes and renumbered.  Be sure to
17064recompile all  code that includes acexcep.h.  Hopefully we won't
17065have to renumber the codes  again now that they are split into
17066classes (environment, programmer, AML code,  ACPI table, and
17067internal).
17068
17069Fixed some additional alignment issues in the Resource Manager
17070subcomponent
17071
17072Implemented semaphore tracking in the AcpiExec utility, and fixed
17073several places  where mutexes/semaphores were being unlocked
17074without a corresponding lock  operation.  There are no known
17075semaphore or mutex "leaks" at this time.
17076
17077Fixed the case where an ASL Return operator is used to return an
17078unnamed  package.
17079
17080-------------------------------------------
17081Summary of changes for this label: 07_28_00
17082
17083Fixed a problem with the way addresses were calculated in
17084AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
17085manifested itself when a Field was  created with WordAccess or
17086DwordAccess, but the field unit defined within the  Field was less
17087
17088than a Word or Dword.
17089
17090Fixed a problem in AmlDumpOperands() module's loop to pull
17091operands off of the  operand stack to display information. The
17092problem manifested itself as a TLB  error on 64-bit systems when
17093accessing an operand stack with two or more  operands.
17094
17095Fixed a problem with the PCI configuration space handlers where
17096context was  getting confused between accesses. This required a
17097change to the generic address  space handler and address space
17098setup definitions. Handlers now get both a  global handler context
17099(this is the one passed in by the user when executing
17100AcpiInstallAddressSpaceHandler() and a specific region context
17101that is unique to  each region (For example, the _ADR, _SEG and
17102_BBN values associated with a  specific region). The generic
17103function definitions have changed to the  following:
17104
17105typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
17106UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
17107*HandlerContext, // This used to be void *Context void
17108*RegionContext); // This is an additional parameter
17109
17110typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
17111RegionHandle, UINT32 Function, void *HandlerContext,  void
17112**RegionContext); // This used to be **ReturnContext
17113
17114-------------------------------------------
17115Summary of changes for this label: 07_21_00
17116
17117Major file consolidation and rename.  All files within the
17118interpreter have been  renamed as well as most header files.  This
17119was done to prevent collisions with  existing files in the host
17120OSs -- filenames such as "config.h" and "global.h"  seem to be
17121quite common.  The VC project files have been updated.  All
17122makefiles  will require modification.
17123
17124The parser/interpreter integration continues in Phase 5 with the
17125implementation  of a complete 2-pass parse (the AML is parsed
17126twice) for each table;  This  avoids the construction of a huge
17127parse tree and therefore reduces the amount of  dynamic memory
17128required by the subsystem.  Greater use of the parse object cache
17129means that performance is unaffected.
17130
17131Many comments from the two code reviews have been rolled in.
17132
17133The 64-bit alignment support is complete.
17134
17135-------------------------------------------
17136Summary of changes for this label: 06_30_00
17137
17138With a nod and a tip of the hat to the technology of yesteryear,
17139we've added  support in the source code for 80 column output
17140devices.  The code is now mostly  constrained to 80 columns or
17141less to support environments and editors that 1)  cannot display
17142or print more than 80 characters on a single line, and 2) cannot
17143disable line wrapping.
17144
17145A major restructuring of the namespace data structure has been
17146completed.  The  result is 1) cleaner and more
17147understandable/maintainable code, and 2) a  significant reduction
17148in the dynamic memory requirement for each named ACPI  object
17149(almost half).
17150
17151-------------------------------------------
17152Summary of changes for this label: 06_23_00
17153
17154Linux support has been added.  In order to obtain approval to get
17155the ACPI CA  subsystem into the Linux kernel, we've had to make
17156quite a few changes to the  base subsystem that will affect all
17157users (all the changes are generic and OS- independent).  The
17158effects of these global changes have been somewhat far  reaching.
17159Files have been merged and/or renamed and interfaces have been
17160renamed.   The major changes are described below.
17161
17162Osd* interfaces renamed to AcpiOs* to eliminate namespace
17163pollution/confusion  within our target kernels.  All OSD
17164interfaces must be modified to match the new  naming convention.
17165
17166Files merged across the subsystem.  A number of the smaller source
17167and header  files have been merged to reduce the file count and
17168increase the density of the  existing files.  There are too many
17169to list here.  In general, makefiles that  call out individual
17170files will require rebuilding.
17171
17172Interpreter files renamed.  All interpreter files now have the
17173prefix am*  instead of ie* and is*.
17174
17175Header files renamed:  The acapi.h file is now acpixf.h.  The
17176acpiosd.h file is  now acpiosxf.h.  We are removing references to
17177the acronym "API" since it is  somewhat windowsy. The new name is
17178"external interface" or xface or xf in the  filenames.j
17179
17180
17181All manifest constants have been forced to upper case (some were
17182mixed case.)   Also, the string "ACPI_" has been prepended to many
17183(not all) of the constants,  typedefs, and structs.
17184
17185The globals "DebugLevel" and "DebugLayer" have been renamed
17186"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
17187
17188All other globals within the subsystem are now prefixed with
17189"AcpiGbl_" Internal procedures within the subsystem are now
17190prefixed with "Acpi" (with only  a few exceptions).  The original
17191two-letter abbreviation for the subcomponent  remains after "Acpi"
17192- for example, CmCallocate became AcpiCmCallocate.
17193
17194Added a source code translation/conversion utility.  Used to
17195generate the Linux  source code, it can be modified to generate
17196other types of source as well. Can  also be used to cleanup
17197existing source by removing extraneous spaces and blank  lines.
17198Found in tools/acpisrc/*
17199
17200OsdUnMapMemory was renamed to OsdUnmapMemory and then
17201AcpiOsUnmapMemory.  (UnMap  became Unmap).
17202
17203A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
17204When set to  one, this indicates that the caller wants to use the
17205
17206semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
17207both types.  However, implementers of this  call may want to use
17208different OS primitives depending on the type of semaphore
17209requested.  For example, some operating systems provide separate
17210
17211"mutex" and  "semaphore" interfaces - where the mutex interface is
17212much faster because it  doesn't have all the overhead of a full
17213semaphore implementation.
17214
17215Fixed a deadlock problem where a method that accesses the PCI
17216address space can  block forever if it is the first access to the
17217space.
17218
17219-------------------------------------------
17220Summary of changes for this label: 06_02_00
17221
17222Support for environments that cannot handle unaligned data
17223accesses (e.g.  firmware and OS environments devoid of alignment
17224handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
17225been added (via configurable macros) in  these three areas: -
17226Transfer of data from the raw AML byte stream is done via byte
17227moves instead of    word/dword/qword moves. - External objects are
17228aligned within the user buffer, including package   elements (sub-
17229objects). - Conversion of name strings to UINT32 Acpi Names is now
17230done byte-wise.
17231
17232The Store operator was modified to mimic Microsoft's
17233implementation when storing  to a Buffer Field.
17234
17235Added a check of the BM_STS bit before entering C3.
17236
17237The methods subdirectory has been obsoleted and removed.  A new
17238file, cmeval.c  subsumes the functionality.
17239
17240A 16-bit (DOS) version of AcpiExec has been developed.  The
17241makefile is under  the acpiexec directory.
17242