xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 820c5b08)
1----------------------------------------
224 November 2015. Summary of changes for version 20151124:
3
4This release is available at https://acpica.org/downloads
5
6
71) ACPICA kernel-resident subsystem:
8
9Fixed a possible regression for a previous update to FADT handling. The
10FADT no longer has a fixed table ID, causing some issues with code that
11was hardwired to a specific ID. Lv Zheng.
12
13Fixed a problem where the method auto-serialization could interfere with
14the current SyncLevel. This change makes the auto-serialization support
15transparent to the SyncLevel support and management.
16
17Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
18interface is intended for early access to the namespace during the
19initial namespace device discovery walk. The _SUB method has been seen to
20access operation regions in some cases, causing errors because the
21operation regions are not fully initialized.
22
23AML Debugger: Fixed some issues with the terminate/quit/exit commands
24that can cause faults. Lv Zheng.
25
26AML Debugger: Add thread ID support so that single-step mode only applies
27to the AML Debugger thread. This prevents runtime errors within some
28kernels. Lv Zheng.
29
30Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
31methods that are invoked by this interface are optional, removed warnings
32emitted for the case where one or more of these methods do not exist.
33ACPICA BZ 1208, original change by Prarit Bhargava.
34
35Made a major pass through the entire ACPICA source code base to
36standardize formatting that has diverged a bit over time. There are no
37functional changes, but this will of course cause quite a few code
38differences from the previous ACPICA release.
39
40Example Code and Data Size: These are the sizes for the OS-independent
41acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
42debug version of the code includes the debug output trace mechanism and
43has a much larger code and data size.
44
45  Current Release:
46    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
47    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
48  Previous Release:
49    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
50    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
51
52
532) iASL Compiler/Disassembler and Tools:
54
55iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
56definition blocks within a single ASL file and the resulting AML file.
57Support for this type of file was also added to the various tools that
58use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
59example code below shows two definition blocks within the same file:
60
61    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
620x12345678)
63    {
64    }
65    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
66    {
67    }
68
69iASL: Enhanced typechecking for the Name() operator. All expressions for
70the value of the named object must be reduced/folded to a single constant
71at compile time, as per the ACPI specification (the AML definition of
72Name()).
73
74iASL: Fixed some code indentation issues for the -ic and -ia options (C
75and assembly headers). Now all emitted code correctly begins in column 1.
76
77iASL: Added an error message for an attempt to open a Scope() on an
78object defined in an SSDT. The DSDT is always loaded into the namespace
79first, so any attempt to open a Scope on an SSDT object will fail at
80runtime.
81
82----------------------------------------
8330 September 2015. Summary of changes for version 20150930:
84
851) ACPICA kernel-resident subsystem:
86
87Debugger: Implemented several changes and bug fixes to assist support for
88the in-kernel version of the AML debugger. Lv Zheng.
89- Fix the "predefined" command for in-kernel debugger.
90- Do not enter debug command loop for the help and version commands.
91- Disallow "execute" command during execution/single-step of a method.
92
93Interpreter: Updated runtime typechecking for all operators that have
94target operands. The operand is resolved and validated that it is legal.
95For example, the target cannot be a non-data object such as a Device,
96Mutex, ThermalZone, etc., as per the ACPI specification.
97
98Debugger: Fixed the double-mutex user I/O handshake to work when local
99deadlock detection is enabled.
100
101Debugger: limited display of method locals and arguments (LocalX and
102ArgX) to only those that have actually been initialized. This prevents
103lines of extraneous output.
104
105Updated the definition of the NFIT table to correct the bit polarity of
106one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
107
108Example Code and Data Size: These are the sizes for the OS-independent
109acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
110debug version of the code includes the debug output trace mechanism and
111has a much larger code and data size.
112
113  Current Release:
114    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
115    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
116  Previous Release:
117    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
118    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
119
120
1212) iASL Compiler/Disassembler and Tools:
122
123iASL: Improved the compile-time typechecking for operands of many of the
124ASL operators:
125
126-- Added an option to disable compiler operand/operator typechecking (-
127ot).
128
129-- For the following operators, the TermArg operands are now validated
130when possible to be Integer data objects: BankField, OperationRegion,
131DataTableRegion, Buffer, and Package.
132
133-- Store (Source, Target): Both the source and target operands are
134resolved and checked that the operands are both legal. For example,
135neither operand can be a non-data object such as a Device, Mutex,
136ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
137operator can be used to store an object to any type of target object.
138
139-- Store (Source, Target): If the source is a Package object, the target
140must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
141is a Package, the source must also be a Package.
142
143-- Store (Source, Target): A warning is issued if the source and target
144resolve to the identical named object.
145
146-- Store (Source, <method invocation>): An error is generated for the
147target method invocation, as this construct is not supported by the AML
148interpreter.
149
150-- For all ASL math and logic operators, the target operand must be a
151data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
152includes the function return value also.
153
154-- External declarations are also included in the typechecking where
155possible. External objects defined using the UnknownObj keyword cannot be
156typechecked, however.
157
158iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
159operator:
160- Legacy code: Index(PKG1, 3)
161- New ASL+ code: PKG1[3]
162This completes the ACPI 6.0 ASL+ support as it was the only operator not
163supported.
164
165iASL: Fixed the file suffix for the preprocessor output file (.i). Two
166spaces were inadvertently appended to the filename, causing file access
167and deletion problems on some systems.
168
169ASL Test Suite (ASLTS): Updated the master makefile to generate all
170possible compiler output files when building the test suite -- thus
171exercising these features of the compiler. These files are automatically
172deleted when the test suite exits.
173
174----------------------------------------
17518 August 2015. Summary of changes for version 20150818:
176
1771) ACPICA kernel-resident subsystem:
178
179Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
180Zheng. ACPICA BZ 1186.
181
182Completed development to ensure that the ACPICA Disassembler and Debugger
183are fully standalone components of ACPICA. Removed cross-component
184dependences. Lv Zheng.
185
186The max-number-of-AML-loops is now runtime configurable (previously was
187compile-time only). This is essentially a loop timeout to force-abort
188infinite AML loops. ACPCIA BZ 1192.
189
190Debugger: Cleanup output to dump ACPI names and namepaths without any
191trailing underscores. Lv Zheng. ACPICA BZ 1135.
192
193Removed unnecessary conditional compilations across the Debugger and
194Disassembler components where entire modules could be left uncompiled.
195
196The aapits test is deprecated and has been removed from the ACPICA git
197tree. The test has never been completed and has not been maintained, thus
198becoming rather useless. ACPICA BZ 1015, 794.
199
200A batch of small changes to close bugzilla and other reports:
201- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
202- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
203- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
204- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
205Moore.
206- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
207ACPICA BZ 1184.
208- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
209operators.
210- Debugger: Split debugger initialization/termination interfaces. Lv
211Zheng.
212- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
213identification.
214- AcpiExec: Add debug message during _REG method phase during table
215load/init.
216- AcpiNames: Fix a regression where some output was missing and no longer
217emitted.
218- Debugger: General cleanup and simplification. Lv Zheng.
219- Disassembler: Cleanup use of several global option variables. Lv Zheng.
220
221Example Code and Data Size: These are the sizes for the OS-independent
222acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
223debug version of the code includes the debug output trace mechanism and
224has a much larger code and data size.
225
226  Current Release:
227    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
228    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
229  Previous Release:
230    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
231    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
232
233
2342) iASL Compiler/Disassembler and Tools:
235
236AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
237were not handled properly and caused load errors. Now, properly invoke
238and use the ACPICA auto-reallocate mechanism for ACPI table data
239structures. ACPICA BZ 1188
240
241AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
242BZ 1190.
243
244AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
245AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
246executed during initialization. ACPICA BZ 1187, 1189.
247
248iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
249that corresponds to each disassembled ASL statement, to simplify
250debugging. ACPICA BZ 1191.
251
252Debugger: Add option to the "objects" command to display a summary of the
253current namespace objects (Object type and count). This is displayed if
254the command is entered with no arguments.
255
256AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
257
258----------------------------------------
25917 July 2015. Summary of changes for version 20150717:
260
2611) ACPICA kernel-resident subsystem:
262
263Improved the partitioning between the Debugger and Disassembler
264components. This allows the Debugger to be used standalone within kernel
265code without the Disassembler (which is used for single stepping also).
266This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
267
268Debugger: Implemented a new command to trace the execution of control
269methods (Trace). This is especially useful for the in-kernel version of
270the debugger when file I/O may not be available for method trace output.
271See the ACPICA reference for more information. Lv Zheng.
272
273Moved all C library prototypes (used for the local versions of these
274functions when requested) to a new header, acclib.h
275Cleaned up the use of non-ANSI C library functions. These functions are
276implemented locally in ACPICA. Moved all such functions to a common
277source file, utnonansi.c
278
279Debugger: Fixed a problem with the "!!" command (get last command
280executed) where the debugger could enter an infinite loop and eventually
281crash.
282
283Removed the use of local macros that were used for some of the standard C
284library functions to automatically cast input parameters. This mostly
285affected the is* functions where the input parameter is defined to be an
286int. This required a few modifications to the main ACPICA source code to
287provide casting for these functions and eliminate possible compiler
288warnings for these parameters.
289
290Across the source code, added additional status/error checking to resolve
291issues discovered by static source code analysis tools such as Coverity.
292
293Example Code and Data Size: These are the sizes for the OS-independent
294acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
295debug version of the code includes the debug output trace mechanism and
296has a much larger code and data size.
297
298  Current Release:
299    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
300    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
301  Previous Release:
302    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
303    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
304
305
3062) iASL Compiler/Disassembler and Tools:
307
308iASL: Fixed a regression where the device map file feature no longer
309worked properly when used in conjunction with the disassembler. It only
310worked properly with the compiler itself.
311
312iASL: Implemented a new warning for method LocalX variables that are set
313but never used (similar to a C compiler such as gcc). This also applies
314to ArgX variables that are not defined by the parent method, and are
315instead (legally) used as local variables.
316
317iASL/Preprocessor: Finished the pass-through of line numbers from the
318preprocessor to the compiler. This ensures that compiler errors/warnings
319have the correct original line numbers and filenames, regardless of any
320#include files.
321
322iASL/Preprocessor: Fixed a couple of issues with comment handling and the
323pass-through of comments to the preprocessor output file (which becomes
324the compiler input file). Also fixed a problem with // comments that
325appear after a math expression.
326
327iASL: Added support for the TCPA server table to the table compiler and
328template generator. (The client table was already previously supported)
329
330iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
331identify the iASL compiler.
332
333Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
334multiple times. The new names are ACPI_SIGN_NEGATIVE and
335ACPI_SIGN_POSITIVE.
336
337AcpiHelp: Update to expand help messages for the iASL preprocessor
338directives.
339
340
341----------------------------------------
34219 June 2015. Summary of changes for version 20150619:
343
344Two regressions in version 20150616 have been addressed:
345
346Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
347etc.) This update changes ACPICA to only use the standard headers for
348functions, or the prototypes for the local versions of the C library
349functions. Across the source code, this required some additional casts
350for some Clib invocations for portability. Moved all local prototypes to
351a new file, acclib.h
352
353Fixes several problems with recent changes to the handling of the FACS
354table that could cause some systems not to boot.
355
356
357----------------------------------------
35816 June 2015. Summary of changes for version 20150616:
359
360
3611) ACPICA kernel-resident subsystem:
362
363Across the entire ACPICA source code base, the various macros for the C
364library functions (such as ACPI_STRLEN, etc.) have been removed and
365replaced by the standard C library names (strlen, etc.) The original
366purpose for these macros is no longer applicable. This simplification
367reduces the number of macros used in the ACPICA source code
368significantly, improving readability and maintainability.
369
370Implemented support for a new ACPI table, the OSDT. This table, the
371"override" SDT, can be loaded directly by the host OS at boot time. It
372enables the replacement of existing namespace objects that were installed
373via the DSDT and/or SSDTs. The primary purpose for this is to replace
374buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
375for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
376Moore.
377
378Added support for systems with (improperly) two FACS tables -- a "32-bit"
379table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
380X field). This change will support both automatically. There continues to
381be systems found with this issue. This support requires a change to the
382AcpiSetFirmwareWakingVector interface. Also, a public global variable has
383been added to allow the host to select which FACS is desired
384(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
385details Lv Zheng.
386
387Added a new feature to allow for systems that do not contain an FACS.
388Although this is already supported on hardware-reduced platforms, the
389feature has been extended for all platforms. The reasoning is that we do
390not want to abort the entire ACPICA initialization just because the
391system is seriously buggy and has no FACS.
392
393Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
394not correctly transcribed from the ACPI specification in ACPICA version
39520150515.
396
397Implemented support for the _CLS object in the AcpiGetObjectInfo external
398interface.
399
400Updated the definitions of the TCPA and TPM2 ACPI tables to the more
401recent TCG ACPI Specification, December 14, 2014. Table disassembler and
402compiler also updated. Note: The TCPA "server" table is not supported by
403the disassembler/table-compiler at this time.
404
405ACPI 6.0: Added definitions for the new GIC version field in the MADT.
406
407Example Code and Data Size: These are the sizes for the OS-independent
408acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
409debug version of the code includes the debug output trace mechanism and
410has a much larger code and data size.
411
412  Current Release:
413    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
414    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
415  Previous Release:
416    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
417    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
418
419
4202) iASL Compiler/Disassembler and Tools:
421
422Disassembler: Fixed a problem with the new symbolic operator disassembler
423where incorrect ASL code could be emitted in some cases for the "non-
424commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
425ShiftRight. The actual problem cases seem to be rather unusual in common
426ASL code, however. David Box.
427
428Modified the linux version of acpidump to obtain ACPI tables from not
429just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
430Zheng.
431
432iASL: Fixed a problem where the user preprocessor output file (.i)
433contained extra data that was not expected. The compiler was using this
434file as a temporary file and passed through #line directives in order to
435keep compiler error messages in sync with the input file and line number
436across multiple include files. The (.i) is no longer a temporary file as
437the compiler uses a new, different file for the original purpose.
438
439iASL: Fixed a problem where comments within the original ASL source code
440file were not passed through to the preprocessor output file, nor any
441listing files.
442
443iASL: Fixed some issues for the handling of the "#include" preprocessor
444directive and the similar (but not the same) "Include" ASL operator.
445
446iASL: Add support for the new OSDT in both the disassembler and compiler.
447
448iASL: Fixed a problem with the constant folding support where a Buffer
449object could be incorrectly generated (incorrectly formed) during a
450conversion to a Store() operator.
451
452AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
453description text for the _REV predefined name. _REV now permanently
454returns 2, as per the ACPI 6.0 specification.
455
456Debugger: Enhanced the output of the Debug ASL object for references
457produced by the Index operator. For Buffers and strings, only output the
458actual byte pointed to by the index. For packages, only print the single
459package element decoded by the index. Previously, the entire
460buffer/string/package was emitted.
461
462iASL/Table-compiler: Fixed a regression where the "generic" data types
463were no longer recognized, causing errors.
464
465
466----------------------------------------
46715 May 2015. Summary of changes for version 20150515:
468
469This release implements most of ACPI 6.0 as described below.
470
4711) ACPICA kernel-resident subsystem:
472
473Implemented runtime argument checking and return value checking for all
474new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
475_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
476
477Example Code and Data Size: These are the sizes for the OS-independent
478acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
479debug version of the code includes the debug output trace mechanism and
480has a much larger code and data size.
481
482  Current Release:
483    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
484    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
485  Previous Release:
486    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
487    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
488
489
4902) iASL Compiler/Disassembler and Tools:
491
492iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
493names (argument count validation and return value typechecking.)
494
495iASL disassembler and table compiler: implemented support for all new
496ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
497
498iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
499tables: FADT, MADT.
500
501iASL preprocessor: Added a new directive to enable inclusion of binary
502blobs into ASL code. The new directive is #includebuffer. It takes a
503binary file as input and emits a named ascii buffer object into the ASL
504code.
505
506AcpiHelp: Added support for all new ACPI 6.0 predefined names.
507
508AcpiHelp: Added a new option, -d, to display all iASL preprocessor
509directives.
510
511AcpiHelp: Added a new option, -t, to display all known/supported ACPI
512tables.
513
514----------------------------------------
51510 April 2015. Summary of changes for version 20150410:
516
517Reverted a change introduced in version 20150408 that caused
518a regression in the disassembler where incorrect operator
519symbols could be emitted.
520
521----------------------------------------
52208 April 2015. Summary of changes for version 20150408:
523
524
5251) ACPICA kernel-resident subsystem:
526
527Permanently set the return value for the _REV predefined name. It now
528returns 2 (was 5). This matches other ACPI implementations. _REV will be
529deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
530for ACPI 2.0 and later. It should never be used to differentiate or
531identify operating systems.
532
533Added the "Windows 2015" string to the _OSI support. ACPICA will now
534return TRUE to a query with this string.
535
536Fixed several issues with the local version of the printf function.
537
538Added the C99 compiler option (-std=c99) to the Unix makefiles.
539
540  Current Release:
541    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
542    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
543  Previous Release:
544    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
545    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
546
547
5482) iASL Compiler/Disassembler and Tools:
549
550iASL: Implemented an enhancement to the constant folding feature to
551transform the parse tree to a simple Store operation whenever possible:
552    Add (2, 3, X) ==> is converted to: Store (5, X)
553    X = 2 + 3     ==> is converted to: Store (5, X)
554
555Updated support for the SLIC table (Software Licensing Description Table)
556in both the Data Table compiler and the disassembler. The SLIC table
557support now conforms to "Microsoft Software Licensing Tables (SLIC and
558MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
559following the ACPI header is now defined to be "Proprietary Data", and as
560such, can only be entered or displayed as a hex data block.
561
562Implemented full support for the MSDM table as described in the document
563above. Note: The format of MSDM is similar to SLIC. Any MSDM data
564following the ACPI header is defined to be "Proprietary Data", and can
565only be entered or displayed as a hex data block.
566
567Implemented the -Pn option for the iASL Table Compiler (was only
568implemented for the ASL compiler). This option disables the iASL
569preprocessor.
570
571Disassembler: For disassembly of Data Tables, added a comment field
572around the Ascii equivalent data that is emitted as part of the "Raw
573Table Data" block. This prevents the iASL Preprocessor from possible
574confusion if/when the table is compiled.
575
576Disassembler: Added an option (-df) to force the disassembler to assume
577that the table being disassembled contains valid AML. This feature is
578useful for disassembling AML files that contain ACPI signatures other
579than DSDT or SSDT (such as OEMx or other signatures).
580
581Changes for the EFI version of the tools:
5821) Fixed a build error/issue
5832) Fixed a cast warning
584
585iASL: Fixed a path issue with the __FILE__ operator by making the
586directory prefix optional within the internal SplitInputFilename
587function.
588
589Debugger: Removed some unused global variables.
590
591Tests: Updated the makefile for proper generation of the AAPITS suite.
592
593----------------------------------------
59404 February 2015. Summary of changes for version 20150204:
595
596ACPICA kernel-resident subsystem:
597
598Updated all ACPICA copyrights and signons to 2014. Added the 2014
599copyright to all module headers and signons, including the standard Linux
600header. This affects virtually every file in the ACPICA core subsystem,
601iASL compiler, all ACPICA utilities, and the test suites.
602
603Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
604A raw gpe handling mechanism was created to allow better handling of GPE
605storms that aren't easily managed by the normal handler. The raw handler
606allows disabling/renabling of the the GPE so that interrupt storms can be
607avoided in cases where events cannot be timely serviced. In this
608scenario, handlers should use the AcpiSetGpe() API to disable/enable the
609GPE. This API will leave the reference counts undisturbed, thereby
610preventing unintentional clearing of the GPE when the intent in only to
611temporarily disable it. Raw handlers allow enabling and disabling of a
612GPE by removing GPE register locking. As such, raw handlers much provide
613their own locks while using GPE API's to protect access to GPE data
614structures.
615Lv Zheng
616
617Events: Always modify GPE registers under the GPE lock.
618Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
619values. Reported as bug by joe.liu@apple.com.
620
621Unix makefiles: Separate option to disable optimizations and
622_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
623NOOPT disable option and creates a separate flag (NOFORTIFY) for this
624purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
625errors when building ACPICA. This allows disabling the option without
626also having to disable optimazations.
627David Box
628
629  Current Release:
630    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
631    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
632
633----------------------------------------
63407 November 2014. Summary of changes for version 20141107:
635
636This release is available at https://acpica.org/downloads
637
638This release introduces and implements language extensions to ASL that
639provide support for symbolic ("C-style") operators and expressions. These
640language extensions are known collectively as ASL+.
641
642
6431) iASL Compiler/Disassembler and Tools:
644
645Disassembler: Fixed a problem with disassembly of the UartSerialBus
646macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
647Box.
648
649Disassembler: Fixed the Unicode macro support to add escape sequences.
650All non-printable ASCII values are emitted as escape sequences, as well
651as the standard escapes for quote and backslash. Ensures that the
652disassembled macro can be correctly recompiled.
653
654iASL: Added Printf/Fprintf macros for formatted output. These macros are
655translated to existing AML Concatenate and Store operations. Printf
656writes to the ASL Debug object. Fprintf allows the specification of an
657ASL name as the target. Only a single format specifier is required, %o,
658since the AML interpreter dynamically converts objects to the required
659type. David E. Box.
660
661    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
662                 (Concatenate (Concatenate (Concatenate ("", Arg0),
663                 ": Unexpected value for "), Arg1), ", "), Arg2),
664                 " at line "), Arg3), Debug)
665
666    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
667                 Arg0, Arg1, Arg2, Arg3)
668
669    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
670                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
671
672    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
673
674iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
675ASL parse tree before the AML code is generated. This allows blocks of
676ASL code to be removed in order to help locate and identify problem
677devices and/or code. David E. Box.
678
679AcpiExec: Added support (-fi) for an optional namespace object
680initialization file. This file specifies initial values for namespace
681objects as necessary for debugging and testing different ASL code paths
682that may be taken as a result of BIOS options.
683
684
6852) Overview of symbolic operator support for ASL (ASL+)
686-------------------------------------------------------
687
688As an extension to the ASL language, iASL implements support for symbolic
689(C-style) operators for math and logical expressions. This can greatly
690simplify ASL code as well as improve both readability and
691maintainability. These language extensions can exist concurrently with
692all legacy ASL code and expressions.
693
694The symbolic extensions are 100% compatible with existing AML
695interpreters, since no new AML opcodes are created. To implement the
696extensions, the iASL compiler transforms the symbolic expressions into
697the legacy ASL/AML equivalents at compile time.
698
699Full symbolic expressions are supported, along with the standard C
700precedence and associativity rules.
701
702Full disassembler support for the symbolic expressions is provided, and
703creates an automatic migration path for existing ASL code to ASL+ code
704via the disassembly process. By default, the disassembler now emits ASL+
705code with symbolic expressions. An option (-dl) is provided to force the
706disassembler to emit legacy ASL code if desired.
707
708Below is the complete list of the currently supported symbolic operators
709with examples. See the iASL User Guide for additional information.
710
711
712ASL+ Syntax      Legacy ASL Equivalent
713-----------      ---------------------
714
715    // Math operators
716
717Z = X + Y        Add (X, Y, Z)
718Z = X - Y        Subtract (X, Y, Z)
719Z = X * Y        Multiply (X, Y, Z)
720Z = X / Y        Divide (X, Y, , Z)
721Z = X % Y        Mod (X, Y, Z)
722Z = X << Y       ShiftLeft (X, Y, Z)
723Z = X >> Y       ShiftRight (X, Y, Z)
724Z = X & Y        And (X, Y, Z)
725Z = X | Y        Or (X, Y, Z)
726Z = X ^ Y        Xor (X, Y, Z)
727Z = ~X           Not (X, Z)
728X++              Increment (X)
729X--              Decrement (X)
730
731    // Logical operators
732
733(X == Y)         LEqual (X, Y)
734(X != Y)         LNotEqual (X, Y)
735(X < Y)          LLess (X, Y)
736(X > Y)          LGreater (X, Y)
737(X <= Y)         LLessEqual (X, Y)
738(X >= Y)         LGreaterEqual (X, Y)
739(X && Y)         LAnd (X, Y)
740(X || Y)         LOr (X, Y)
741(!X)             LNot (X)
742
743    // Assignment and compound assignment operations
744
745X = Y           Store (Y, X)
746X += Y          Add (X, Y, X)
747X -= Y          Subtract (X, Y, X)
748X *= Y          Multiply (X, Y, X)
749X /= Y          Divide (X, Y, , X)
750X %= Y          Mod (X, Y, X)
751X <<= Y         ShiftLeft (X, Y, X)
752X >>= Y         ShiftRight (X, Y, X)
753X &= Y          And (X, Y, X)
754X |= Y          Or (X, Y, X)
755X ^= Y          Xor (X, Y, X)
756
757
7583) ASL+ Examples:
759-----------------
760
761Legacy ASL:
762        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
763            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
7640x03FB),
765            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
766        {
767            And (MEMB, 0xFFFFFFF0, SRMB)
768            Store (MEMB, Local2)
769            Store (PDBM, Local1)
770            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
771            Store (SRMB, MEMB)
772            Or (PDBM, 0x02, PDBM)
773        }
774
775ASL+ version:
776        If (((R510 & 0x03FB) == 0x02E0) ||
777            ((R520 & 0x03FB) == 0x02E0) ||
778            ((R530 & 0x03FB) == 0x02E0) ||
779            ((R540 & 0x03FB) == 0x02E0))
780        {
781            SRMB = (MEMB & 0xFFFFFFF0)
782            Local2 = MEMB
783            Local1 = PDBM
784            PDBM &= 0xFFFFFFFFFFFFFFF9
785            MEMB = SRMB
786            PDBM |= 0x02
787        }
788
789Legacy ASL:
790        Store (0x1234, Local1)
791        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
792        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
793        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
794        Store (Index (PKG1, 0x03), Local6)
795        Store (Add (Local3, Local2), Debug)
796        Add (Local1, 0x0F, Local2)
797        Add (Local1, Multiply (Local2, Local3), Local2)
798        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
799
800ASL+ version:
801        Local1 = 0x1234
802        Local3 = (((Local1 + TEST) + 0x20) * Local2)
803        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
804        Local3 = (Local1 + (TEST + (0x20 * Local2)))
805        Local6 = Index (PKG1, 0x03)
806        Debug = (Local3 + Local2)
807        Local2 = (Local1 + 0x0F)
808        Local2 = (Local1 + (Local2 * Local3))
809        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
810
811
812----------------------------------------
81326 September 2014. Summary of changes for version 20140926:
814
8151) ACPICA kernel-resident subsystem:
816
817Updated the GPIO operation region handler interface (GeneralPurposeIo).
818In order to support GPIO Connection objects with multiple pins, along
819with the related Field objects, the following changes to the interface
820have been made: The Address is now defined to be the offset in bits of
821the field unit from the previous invocation of a Connection. It can be
822viewed as a "Pin Number Index" into the connection resource descriptor.
823The BitWidth is the exact bit width of the field. It is usually one bit,
824but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
825additional information and examples.
826
827GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
828corresponding _Lxx/_Exx methods are disabled (they may have been enabled
829by the firmware), so that they cannot fire until they are enabled via
830AcpiUpdateAllGpes. Rafael J. Wysocki.
831
832Added a new return flag for the Event/GPE status interfaces --
833AcpiGetEventStatus and AcpiGetGpeStatus. The new
834ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
835GPE currently has a handler associated with it, and can thus actually
836affect the system. Lv Zheng.
837
838Example Code and Data Size: These are the sizes for the OS-independent
839acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
840debug version of the code includes the debug output trace mechanism and
841has a much larger code and data size.
842
843  Current Release:
844    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
845    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
846  Previous Release:
847    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
848    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
849
8502) iASL Compiler/Disassembler and Tools:
851
852iASL: Fixed a memory allocation/free regression introduced in 20140828
853that could cause the compiler to crash. This was introduced inadvertently
854during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
8551113.
856
857iASL: Removed two error messages that have been found to create false
858positives, until they can be fixed and fully validated (ACPICA BZ 1112):
8591) Illegal forward reference within a method
8602) Illegal reference across two methods
861
862iASL: Implemented a new option (-lm) to create a hardware mapping file
863that summarizes all GPIO, I2C, SPI, and UART connections. This option
864works for both the compiler and disassembler. See the iASL compiler user
865guide for additional information and examples (section 6.4.6).
866
867AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
868version 2. This corrects the AE_BAD_HEADER exception seen on systems with
869a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
870
871AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
872unless STDIN is actually a terminal. Assists with batch-mode processing.
873ACPICA BZ 1114.
874
875Disassembler/AcpiHelp: Added another large group of recognized _HID
876values.
877
878
879----------------------------------------
88028 August 2014. Summary of changes for version 20140828:
881
8821) ACPICA kernel-resident subsystem:
883
884Fixed a problem related to the internal use of the Timer() operator where
885a 64-bit divide could cause an attempted link to a double-precision math
886library. This divide is not actually necessary, so the code was
887restructured to eliminate it. Lv Zheng.
888
889ACPI 5.1: Added support for the runtime validation of the _DSD package
890(similar to the iASL support).
891
892ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
893SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
894
895Example Code and Data Size: These are the sizes for the OS-independent
896acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
897debug version of the code includes the debug output trace mechanism and
898has a much larger code and data size.
899
900  Current Release:
901    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
902    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
903  Previous Release:
904    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
905    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
906
9072) iASL Compiler/Disassembler and Tools:
908
909AcpiExec: Fixed a problem on unix systems where the original terminal
910state was not always properly restored upon exit. Seen when using the -v
911option. ACPICA BZ 1104.
912
913iASL: Fixed a problem with the validation of the ranges/length within the
914Memory24 resource descriptor. There was a boundary condition when the
915range was equal to the (length -1) caused by the fact that these values
916are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
917
918Disassembler: Fixed a problem with the GpioInt descriptor interrupt
919polarity
920flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
921is
922now supported properly.
923
924ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
925in the disassembler, data table compiler, and table template generator.
926
927iASL: Added a requirement for Device() objects that one of either a _HID
928or _ADR must exist within the scope of a Device, as per the ACPI
929specification. Remove a similar requirement that was incorrectly in place
930for the _DSD object.
931
932iASL: Added error detection for illegal named references within control
933methods that would cause runtime failures. Now trapped as errors are: 1)
934References to objects within a non-parent control method. 2) Forward
935references (within a method) -- for control methods, AML interpreters use
936a one-pass parse of control methods. ACPICA BZ 1008.
937
938iASL: Added error checking for dependencies related to the _PSx power
939methods. ACPICA BZ 1029.
9401) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
941_PS3.
9422) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
943scope.
944
945iASL and table compiler: Cleanup miscellaneous memory leaks by fully
946deploying the existing object and string caches and adding new caches for
947the table compiler.
948
949iASL: Split the huge parser source file into multiple subfiles to improve
950manageability. Generation now requires the M4 macro preprocessor, which
951is part of the Bison distribution on both unix and windows platforms.
952
953AcpiSrc: Fixed and removed all extraneous warnings generated during
954entire ACPICA source code scan and/or conversion.
955
956
957----------------------------------------
958
95924 July 2014. Summary of changes for version 20140724:
960
961The ACPI 5.1 specification has been released and is available at:
962http://uefi.org/specs/access
963
964
9650) ACPI 5.1 support in ACPICA:
966
967ACPI 5.1 is fully supported in ACPICA as of this release.
968
969New predefined names. Support includes iASL and runtime ACPICA
970validation.
971    _CCA (Cache Coherency Attribute).
972    _DSD (Device-Specific Data). David Box.
973
974Modifications to existing ACPI tables. Support includes headers, iASL
975Data Table compiler, disassembler, and the template generator.
976    FADT - New fields and flags. Graeme Gregory.
977    GTDT - One new subtable and new fields. Tomasz Nowicki.
978    MADT - Two new subtables. Tomasz Nowicki.
979    PCCT - One new subtable.
980
981Miscellaneous.
982    New notification type for System Resource Affinity change events.
983
984
9851) ACPICA kernel-resident subsystem:
986
987Fixed a regression introduced in 20140627 where a fault can happen during
988the deletion of Alias AML namespace objects. The problem affected both
989the core ACPICA and the ACPICA tools including iASL and AcpiExec.
990
991Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
992simple mechanism to enable wake GPEs that have no associated handler or
993control method. Rafael Wysocki.
994
995Updated the AcpiEnableGpe interface to disallow the enable if there is no
996handler or control method associated with the particular GPE. This will
997help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
998
999Updated GPE handling and dispatch by disabling the GPE before clearing
1000the status bit for edge-triggered GPEs. Lv Zheng.
1001
1002Added Timer() support to the AML Debug object. The current timer value is
1003now displayed with each invocation of (Store to) the debug object to
1004enable simple generation of execution times for AML code (method
1005execution for example.) ACPICA BZ 1093.
1006
1007Example Code and Data Size: These are the sizes for the OS-independent
1008acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1009debug version of the code includes the debug output trace mechanism and
1010has a much larger code and data size.
1011
1012  Current Release:
1013    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
1014    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
1015  Previous Release:
1016    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
1017    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
1018
1019
10202) iASL Compiler/Disassembler and Tools:
1021
1022Fixed an issue with the recently added local printf implementation,
1023concerning width/precision specifiers that could cause incorrect output.
1024Lv Zheng. ACPICA BZ 1094.
1025
1026Disassembler: Added support to detect buffers that contain UUIDs and
1027disassemble them to an invocation of the ToUUID operator. Also emit
1028commented descriptions of known ACPI-related UUIDs.
1029
1030AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
1031-u. Adds three new files.
1032
1033iASL: Update table compiler and disassembler for DMAR table changes that
1034were introduced in September 2013. With assistance by David Woodhouse.
1035
1036----------------------------------------
103727 June 2014. Summary of changes for version 20140627:
1038
10391) ACPICA kernel-resident subsystem:
1040
1041Formatted Output: Implemented local versions of standard formatted output
1042utilities such as printf, etc. Over time, it has been discovered that
1043there are in fact many portability issues with printf, and the addition
1044of this feature will fix/prevent these issues once and for all. Some
1045known issues are summarized below:
1046
10471) Output of 64-bit values is not portable. For example, UINT64 is %ull
1048for the Linux kernel and is %uI64 for some MSVC versions.
10492) Invoking printf consistently in a manner that is portable across both
105032-bit and 64-bit platforms is difficult at best in many situations.
10513) The output format for pointers varies from system to system (leading
1052zeros especially), and leads to inconsistent output from ACPICA across
1053platforms.
10544) Certain platform-specific printf formats may conflict with ACPICA use.
10555) If there is no local C library available, ACPICA now has local support
1056for printf.
1057
1058-- To address these printf issues in a complete manner, ACPICA now
1059directly implements a small subset of printf format specifiers, only
1060those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
1061
1062Implemented support for ACPICA generation within the EFI environment.
1063Initially, the AcpiDump utility is supported in the UEFI shell
1064environment. Lv Zheng.
1065
1066Added a new external interface, AcpiLogError, to improve ACPICA
1067portability. This allows the host to redirect error messages from the
1068ACPICA utilities. Lv Zheng.
1069
1070Added and deployed new OSL file I/O interfaces to improve ACPICA
1071portability:
1072  AcpiOsOpenFile
1073  AcpiOsCloseFile
1074  AcpiOsReadFile
1075  AcpiOsWriteFile
1076  AcpiOsGetFileOffset
1077  AcpiOsSetFileOffset
1078There are C library implementations of these functions in the new file
1079service_layers/oslibcfs.c -- however, the functions can be implemented by
1080the local host in any way necessary. Lv Zheng.
1081
1082Implemented a mechanism to disable/enable ACPI table checksum validation
1083at runtime. This can be useful when loading tables very early during OS
1084initialization when it may not be possible to map the entire table in
1085order to compute the checksum. Lv Zheng.
1086
1087Fixed a buffer allocation issue for the Generic Serial Bus support.
1088Originally, a fixed buffer length was used. This change allows for
1089variable-length buffers based upon the protocol indicated by the field
1090access attributes. Reported by Lan Tianyu. Lv Zheng.
1091
1092Fixed a problem where an object detached from a namespace node was not
1093properly terminated/cleared and could cause a circular list problem if
1094reattached. ACPICA BZ 1063. David Box.
1095
1096Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
1097
1098Fixed a possible memory leak in an error return path within the function
1099AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
1100
1101Example Code and Data Size: These are the sizes for the OS-independent
1102acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1103debug version of the code includes the debug output trace mechanism and
1104has a much larger code and data size.
1105
1106  Current Release:
1107    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
1108    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
1109  Previous Release:
1110    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
1111    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
1112
1113
11142) iASL Compiler/Disassembler and Tools:
1115
1116Disassembler: Add dump of ASCII equivalent text within a comment at the
1117end of each line of the output for the Buffer() ASL operator.
1118
1119AcpiDump: Miscellaneous changes:
1120  Fixed repetitive table dump in -n mode.
1121  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
1122the ACPI 2.0 GUID fails.
1123
1124iASL: Fixed a problem where the compiler could fault if incorrectly given
1125an acpidump output file as input. ACPICA BZ 1088. David Box.
1126
1127AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
1128they are invoked without any arguments.
1129
1130Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
11311086. Colin Ian King.
1132
1133Disassembler: Cleaned up a block of code that extracts a parent Op
1134object. Added a comment that explains that the parent is guaranteed to be
1135valid in this case. ACPICA BZ 1069.
1136
1137----------------------------------------
113824 April 2014. Summary of changes for version 20140424:
1139
11401) ACPICA kernel-resident subsystem:
1141
1142Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
1143Some of these tables are known to contain a trailing NULL entry. Lv
1144Zheng.
1145
1146Removed an extraneous error message for the case where there are a large
1147number of system GPEs (> 124). This was the "32-bit FADT register is too
1148long to convert to GAS struct" message, which is irrelevant for GPEs
1149since the GPEx_BLK_LEN fields of the FADT are always used instead of the
1150(limited capacity) GAS bit length. Also, several changes to ensure proper
1151support for GPE numbers > 255, where some "GPE number" fields were 8-bits
1152internally.
1153
1154Implemented and deployed additional configuration support for the public
1155ACPICA external interfaces. Entire classes of interfaces can now be
1156easily modified or configured out, replaced by stubbed inline functions
1157by default. Lv Zheng.
1158
1159Moved all public ACPICA runtime configuration globals to the public
1160ACPICA external interface file for convenience. Also, removed some
1161obsolete/unused globals. See the file acpixf.h. Lv Zheng.
1162
1163Documentation: Added a new section to the ACPICA reference describing the
1164maximum number of GPEs that can be supported by the FADT-defined GPEs in
1165block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
1166reference.
1167
1168Example Code and Data Size: These are the sizes for the OS-independent
1169acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1170debug version of the code includes the debug output trace mechanism and
1171has a much larger code and data size.
1172
1173  Current Release:
1174    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
1175    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
1176  Previous Release:
1177    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
1178    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
1179
1180
11812) iASL Compiler/Disassembler and Tools:
1182
1183iASL and disassembler: Add full support for the LPIT table (Low Power
1184Idle Table). Includes support in the disassembler, data table compiler,
1185and template generator.
1186
1187AcpiDump utility:
11881) Add option to force the use of the RSDT (over the XSDT).
11892) Improve validation of the RSDP signature (use 8 chars instead of 4).
1190
1191iASL: Add check for predefined packages that are too large.  For
1192predefined names that contain subpackages, check if each subpackage is
1193too large. (Check for too small already exists.)
1194
1195Debugger: Updated the GPE command (which simulates a GPE by executing the
1196GPE code paths in ACPICA). The GPE device is now optional, and defaults
1197to the GPE 0/1 FADT-defined blocks.
1198
1199Unix application OSL: Update line-editing support. Add additional error
1200checking and take care not to reset terminal attributes on exit if they
1201were never set. This should help guarantee that the terminal is always
1202left in the previous state on program exit.
1203
1204----------------------------------------
120525 March 2014. Summary of changes for version 20140325:
1206
12071) ACPICA kernel-resident subsystem:
1208
1209Updated the auto-serialize feature for control methods. This feature
1210automatically serializes all methods that create named objects in order
1211to prevent runtime errors. The update adds support to ignore the
1212currently executing AML SyncLevel when invoking such a method, in order
1213to prevent disruption of any existing SyncLevel priorities that may exist
1214in the AML code. Although the use of SyncLevels is relatively rare, this
1215change fixes a regression where an AE_AML_MUTEX_ORDER exception can
1216appear on some machines starting with the 20140214 release.
1217
1218Added a new external interface to allow the host to install ACPI tables
1219very early, before the namespace is even created. AcpiInstallTable gives
1220the host additional flexibility for ACPI table management. Tables can be
1221installed directly by the host as if they had originally appeared in the
1222XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
1223(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
1224with additional internal restructuring and cleanup. See the ACPICA
1225Reference for interface details. Lv Zheng.
1226
1227Added validation of the checksum for all incoming dynamically loaded
1228tables (via external interfaces or via AML Load/LoadTable operators). Lv
1229Zheng.
1230
1231Updated the use of the AcpiOsWaitEventsComplete interface during Notify
1232and GPE handler removal. Restructured calls to eliminate possible race
1233conditions. Lv Zheng.
1234
1235Added a warning for the use/execution of the ASL/AML Unload (table)
1236operator. This will help detect and identify machines that use this
1237operator if and when it is ever used. This operator has never been seen
1238in the field and the usage model and possible side-effects of the drastic
1239runtime action of a full table removal are unknown.
1240
1241Reverted the use of #pragma push/pop which was introduced in the 20140214
1242release. It appears that push and pop are not implemented by enough
1243compilers to make the use of this feature feasible for ACPICA at this
1244time. However, these operators may be deployed in a future ACPICA
1245release.
1246
1247Added the missing EXPORT_SYMBOL macros for the install and remove SCI
1248handler interfaces.
1249
1250Source code generation:
12511) Disabled the use of the "strchr" macro for the gcc-specific
1252generation. For some versions of gcc, this macro can periodically expose
1253a compiler bug which in turn causes compile-time error(s).
12542) Added support for PPC64 compilation. Colin Ian King.
1255
1256Example Code and Data Size: These are the sizes for the OS-independent
1257acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1258debug version of the code includes the debug output trace mechanism and
1259has a much larger code and data size.
1260
1261  Current Release:
1262    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
1263    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
1264  Previous Release:
1265    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
1266    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
1267
1268
12692) iASL Compiler/Disassembler and Tools:
1270
1271Disassembler: Added several new features to improve the readability of
1272the resulting ASL code. Extra information is emitted within comment
1273fields in the ASL code:
12741) Known _HID/_CID values are decoded to descriptive text.
12752) Standard values for the Notify() operator are decoded to descriptive
1276text.
12773) Target operands are expanded to full pathnames (in a comment) when
1278possible.
1279
1280Disassembler: Miscellaneous updates for extern() handling:
12811) Abort compiler if file specified by -fe option does not exist.
12822) Silence unnecessary warnings about argument count mismatches.
12833) Update warning messages concerning unresolved method externals.
12844) Emit "UnknownObj" keyword for externals whose type cannot be
1285determined.
1286
1287AcpiHelp utility:
12881) Added the -a option to display both the ASL syntax and the AML
1289encoding for an input ASL operator. This effectively displays all known
1290information about an ASL operator with one AcpiHelp invocation.
12912) Added substring match support (similar to a wildcard) for the -i
1292(_HID/PNP IDs) option.
1293
1294iASL/Disassembler: Since this tool does not yet support execution on big-
1295endian machines, added detection of endianness and an error message if
1296execution is attempted on big-endian. Support for big-endian within iASL
1297is a feature that is on the ACPICA to-be-done list.
1298
1299AcpiBin utility:
13001) Remove option to extract binary files from an acpidump; this function
1301is made obsolete by the AcpiXtract utility.
13022) General cleanup of open files and allocated buffers.
1303
1304----------------------------------------
130514 February 2014. Summary of changes for version 20140214:
1306
13071) ACPICA kernel-resident subsystem:
1308
1309Implemented a new mechanism to proactively prevent problems with ill-
1310behaved reentrant control methods that create named ACPI objects. This
1311behavior is illegal as per the ACPI specification, but is nonetheless
1312frequently seen in the field. Previously, this could lead to an
1313AE_ALREADY_EXISTS exception if the method was actually entered by more
1314than one thread. This new mechanism detects such methods at table load
1315time and marks them "serialized" to prevent reentrancy. A new global
1316option, AcpiGbl_AutoSerializeMethods, has been added to disable this
1317feature if desired. This mechanism and global option obsoletes and
1318supersedes the previous AcpiGbl_SerializeAllMethods option.
1319
1320Added the "Windows 2013" string to the _OSI support. ACPICA will now
1321respond TRUE to _OSI queries with this string. It is the stated policy of
1322ACPICA to add new strings to the _OSI support as soon as possible after
1323they are defined. See the full ACPICA _OSI policy which has been added to
1324the utilities/utosi.c file.
1325
1326Hardened/updated the _PRT return value auto-repair code:
13271) Do not abort the repair on a single subpackage failure, continue to
1328check all subpackages.
13292) Add check for the minimum subpackage length (4).
13303) Properly handle extraneous NULL package elements.
1331
1332Added support to avoid the possibility of infinite loops when traversing
1333object linked lists. Never allow an infinite loop, even in the face of
1334corrupted object lists.
1335
1336ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
1337pack(pop) directives to ensure that the ACPICA headers are independent of
1338compiler settings or other host headers.
1339
1340Example Code and Data Size: These are the sizes for the OS-independent
1341acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1342debug version of the code includes the debug output trace mechanism and
1343has a much larger code and data size.
1344
1345  Current Release:
1346    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
1347    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
1348  Previous Release:
1349    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
1350    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
1351
1352
13532) iASL Compiler/Disassembler and Tools:
1354
1355iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
1356first reserved field was incorrectly forced to have a value of zero. This
1357change correctly forces the field to have a value of one. ACPICA BZ 1081.
1358
1359Debugger: Added missing support for the "Extra" and "Data" subobjects
1360when displaying object data.
1361
1362Debugger: Added support to display entire object linked lists when
1363displaying object data.
1364
1365iASL: Removed the obsolete -g option to obtain ACPI tables from the
1366Windows registry. This feature has been superseded by the acpidump
1367utility.
1368
1369----------------------------------------
137014 January 2014. Summary of changes for version 20140114:
1371
13721) ACPICA kernel-resident subsystem:
1373
1374Updated all ACPICA copyrights and signons to 2014. Added the 2014
1375copyright to all module headers and signons, including the standard Linux
1376header. This affects virtually every file in the ACPICA core subsystem,
1377iASL compiler, all ACPICA utilities, and the test suites.
1378
1379Improved parameter validation for AcpiInstallGpeBlock. Added the
1380following checks:
13811) The incoming device handle refers to type ACPI_TYPE_DEVICE.
13822) There is not already a GPE block attached to the device.
1383Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
1384device.
1385
1386Correctly support "references" in the ACPI_OBJECT. This change fixes the
1387support to allow references (namespace nodes) to be passed as arguments
1388to control methods via the evaluate object interface. This is probably
1389most useful for testing purposes, however.
1390
1391Improved support for 32/64 bit physical addresses in printf()-like
1392output. This change improves the support for physical addresses in printf
1393debug statements and other output on both 32-bit and 64-bit hosts. It
1394consistently outputs the appropriate number of bytes for each host. The
1395%p specifier is unsatisfactory since it does not emit uniform output on
1396all hosts/clib implementations (on some, leading zeros are not supported,
1397leading to difficult-to-read output).
1398
1399Example Code and Data Size: These are the sizes for the OS-independent
1400acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1401debug version of the code includes the debug output trace mechanism and
1402has a much larger code and data size.
1403
1404  Current Release:
1405    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
1406    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
1407  Previous Release:
1408    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
1409    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
1410
1411
14122) iASL Compiler/Disassembler and Tools:
1413
1414iASL: Fix a possible fault when using the Connection() operator. Fixes a
1415problem if the parent Field definition for the Connection operator refers
1416to an operation region that does not exist. ACPICA BZ 1064.
1417
1418AcpiExec: Load of local test tables is now optional. The utility has the
1419capability to load some various tables to test features of ACPICA.
1420However, there are enough of them that the output of the utility became
1421confusing. With this change, only the required local tables are displayed
1422(RSDP, XSDT, etc.) along with the actual tables loaded via the command
1423line specification. This makes the default output simler and easier to
1424understand. The -el command line option restores the original behavior
1425for testing purposes.
1426
1427AcpiExec: Added support for overlapping operation regions. This change
1428expands the simulation of operation regions by supporting regions that
1429overlap within the given address space. Supports SystemMemory and
1430SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
1431
1432AcpiExec: Added region handler support for PCI_Config and EC spaces. This
1433allows AcpiExec to simulate these address spaces, similar to the current
1434support for SystemMemory and SystemIO.
1435
1436Debugger: Added new command to read/write/compare all namespace objects.
1437The command "test objects" will exercise the entire namespace by writing
1438new values to each data object, and ensuring that the write was
1439successful. The original value is then restored and verified.
1440
1441Debugger: Added the "test predefined" command. This change makes this
1442test public and puts it under the new "test" command. The test executes
1443each and every predefined name within the current namespace.
1444
1445----------------------------------------
144618 December 2013. Summary of changes for version 20131218:
1447
1448Global note: The ACPI 5.0A specification was released this month. There
1449are no changes needed for ACPICA since this release of ACPI is an
1450errata/clarification release. The specification is available at
1451acpi.info.
1452
1453
14541) ACPICA kernel-resident subsystem:
1455
1456Added validation of the XSDT root table if it is present. Some older
1457platforms contain an XSDT that is ill-formed or otherwise invalid (such
1458as containing some or all entries that are NULL pointers). This change
1459adds a new function to validate the XSDT before actually using it. If the
1460XSDT is found to be invalid, ACPICA will now automatically fall back to
1461using the RSDT instead. Original implementation by Zhao Yakui. Ported to
1462ACPICA and enhanced by Lv Zheng and Bob Moore.
1463
1464Added a runtime option to ignore the XSDT and force the use of the RSDT.
1465This change adds a runtime option that will force ACPICA to use the RSDT
1466instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
1467requires that an XSDT be used instead of the RSDT, the XSDT has been
1468found to be corrupt or ill-formed on some machines. Lv Zheng.
1469
1470Added a runtime option to favor 32-bit FADT register addresses over the
147164-bit addresses. This change adds an option to favor 32-bit FADT
1472addresses when there is a conflict between the 32-bit and 64-bit versions
1473of the same register. The default behavior is to use the 64-bit version
1474in accordance with the ACPI specification. This can now be overridden via
1475the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
1476
1477During the change above, the internal "Convert FADT" and "Verify FADT"
1478functions have been merged to simplify the code, making it easier to
1479understand and maintain. ACPICA BZ 933.
1480
1481Improve exception reporting and handling for GPE block installation.
1482Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
1483status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
1484
1485Added helper macros to extract bus/segment numbers from the HEST table.
1486This change adds two macros to extract the encoded bus and segment
1487numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
1488Betty Dall <betty.dall@hp.com>
1489
1490Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
1491by ACPICA. It is not a public macro, so it should have no effect on
1492existing OSV code. Lv Zheng.
1493
1494Example Code and Data Size: These are the sizes for the OS-independent
1495acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1496debug version of the code includes the debug output trace mechanism and
1497has a much larger code and data size.
1498
1499  Current Release:
1500    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
1501    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
1502  Previous Release:
1503    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
1504    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
1505
1506
15072) iASL Compiler/Disassembler and Tools:
1508
1509Disassembler: Improved pathname support for emitted External()
1510statements. This change adds full pathname support for external names
1511that have been resolved internally by the inclusion of additional ACPI
1512tables (via the iASL -e option). Without this change, the disassembler
1513can emit multiple externals for the same object, or it become confused
1514when the Scope() operator is used on an external object. Overall, greatly
1515improves the ability to actually recompile the emitted ASL code when
1516objects a referenced across multiple ACPI tables. Reported by Michael
1517Tsirkin (mst@redhat.com).
1518
1519Tests/ASLTS: Updated functional control suite to execute with no errors.
1520David Box. Fixed several errors related to the testing of the interpreter
1521slack mode. Lv Zheng.
1522
1523iASL: Added support to detect names that are declared within a control
1524method, but are unused (these are temporary names that are only valid
1525during the time the method is executing). A remark is issued for these
1526cases. ACPICA BZ 1022.
1527
1528iASL: Added full support for the DBG2 table. Adds full disassembler,
1529table compiler, and template generator support for the DBG2 table (Debug
1530Port 2 table).
1531
1532iASL: Added full support for the PCCT table, update the table definition.
1533Updates the PCCT table definition in the actbl3.h header and adds table
1534compiler and template generator support.
1535
1536iASL: Added an option to emit only error messages (no warnings/remarks).
1537The -ve option will enable only error messages, warnings and remarks are
1538suppressed. This can simplify debugging when only the errors are
1539important, such as when an ACPI table is disassembled and there are many
1540warnings and remarks -- but only the actual errors are of real interest.
1541
1542Example ACPICA code (source/tools/examples): Updated the example code so
1543that it builds to an actual working program, not just example code. Added
1544ACPI tables and execution of an example control method in the DSDT. Added
1545makefile support for Unix generation.
1546
1547----------------------------------------
154815 November 2013. Summary of changes for version 20131115:
1549
1550This release is available at https://acpica.org/downloads
1551
1552
15531) ACPICA kernel-resident subsystem:
1554
1555Resource Manager: Fixed loop termination for the "get AML length"
1556function. The loop previously had an error termination on a NULL resource
1557pointer, which can never happen since the loop simply increments a valid
1558resource pointer. This fix changes the loop to terminate with an error on
1559an invalid end-of-buffer condition. The problem can be seen as an
1560infinite loop by callers to AcpiSetCurrentResources with an invalid or
1561corrupted resource descriptor, or a resource descriptor that is missing
1562an END_TAG descriptor. Reported by Dan Carpenter
1563<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
1564
1565Table unload and ACPICA termination: Delete all attached data objects
1566during namespace node deletion. This fix updates namespace node deletion
1567to delete the entire list of attached objects (attached via
1568AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
15691024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
1570
1571ACPICA termination: Added support to delete all objects attached to the
1572root namespace node. This fix deletes any and all objects that have been
1573attached to the root node via AcpiAttachData. Previously, none of these
1574objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
1575
1576Debug output: Do not emit the function nesting level for the in-kernel
1577build. The nesting level is really only useful during a single-thread
1578execution. Therefore, only enable this output for the AcpiExec utility.
1579Also, only emit the thread ID when executing under AcpiExec (Context
1580switches are still always detected and a message is emitted). ACPICA BZ
1581972.
1582
1583Example Code and Data Size: These are the sizes for the OS-independent
1584acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1585debug version of the code includes the debug output trace mechanism and
1586has a much larger code and data size.
1587
1588  Current Release:
1589    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
1590    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
1591  Previous Release:
1592    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1593    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1594
1595
15962) iASL Compiler/Disassembler and Tools:
1597
1598AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
1599correct portable POSIX header for terminal control functions.
1600
1601Disassembler: Fixed control method invocation issues related to the use
1602of the CondRefOf() operator. The problem is seen in the disassembly where
1603control method invocations may not be disassembled properly if the
1604control method name has been used previously as an argument to CondRefOf.
1605The solution is to not attempt to emit an external declaration for the
1606CondRefOf target (it is not necessary in the first place). This prevents
1607disassembler object type confusion. ACPICA BZ 988.
1608
1609Unix Makefiles: Added an option to disable compiler optimizations and the
1610_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
1611with optimizations (reportedly, gcc 4.4 for example). This change adds a
1612command line option for make (NOOPT) that disables all compiler
1613optimizations and the _FORTIFY_SOURCE compiler flag. The default
1614optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
16151034. Lv Zheng, Bob Moore.
1616
1617Tests/ASLTS: Added options to specify individual test cases and modes.
1618This allows testers running aslts.sh to optionally specify individual
1619test modes and test cases. Also added an option to disable the forced
1620generation of the ACPICA tools from source if desired. Lv Zheng.
1621
1622----------------------------------------
162327 September 2013. Summary of changes for version 20130927:
1624
1625This release is available at https://acpica.org/downloads
1626
1627
16281) ACPICA kernel-resident subsystem:
1629
1630Fixed a problem with store operations to reference objects. This change
1631fixes a problem where a Store operation to an ArgX object that contained
1632a
1633reference to a field object did not complete the automatic dereference
1634and
1635then write to the actual field object. Instead, the object type of the
1636field object was inadvertently changed to match the type of the source
1637operand. The new behavior will actually write to the field object (buffer
1638field or field unit), thus matching the correct ACPI-defined behavior.
1639
1640Implemented support to allow the host to redefine individual OSL
1641prototypes. This change enables the host to redefine OSL prototypes found
1642in the acpiosxf.h file. This allows the host to implement OSL interfaces
1643with a macro or inlined function. Further, it allows the host to add any
1644additional required modifiers such as __iomem, __init, __exit, etc., as
1645necessary on a per-interface basis. Enables maximum flexibility for the
1646OSL interfaces. Lv Zheng.
1647
1648Hardcoded the access width for the FADT-defined reset register. The ACPI
1649specification requires the reset register width to be 8 bits. ACPICA now
1650hardcodes the width to 8 and ignores the FADT width value. This provides
1651compatibility with other ACPI implementations that have allowed BIOS code
1652with bad register width values to go unnoticed. Matthew Garett, Bob
1653Moore,
1654Lv Zheng.
1655
1656Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
1657used
1658in the OSL header (acpiosxf). The change modifies the position of this
1659macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
1660build issues if the OSL defines the implementation of the interface to be
1661an inline stub function. Lv Zheng.
1662
1663Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
1664initialization interfaces. This change adds a new macro for the main init
1665and terminate external interfaces in order to support hosts that require
1666additional or different processing for these functions. Changed from
1667ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
1668Zheng, Bob Moore.
1669
1670Cleaned up the memory allocation macros for configurability. In the
1671common
1672case, the ACPI_ALLOCATE and related macros now resolve directly to their
1673respective AcpiOs* OSL interfaces. Two options:
16741) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
1675default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
16762) For AcpiExec (and for debugging), the macros can optionally be
1677resolved
1678to the local ACPICA interfaces that track each allocation (local tracking
1679is used to immediately detect memory leaks).
1680Lv Zheng.
1681
1682Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
1683to predefine this macro to either TRUE or FALSE during the system build.
1684
1685Replaced __FUNCTION_ with __func__ in the gcc-specific header.
1686
1687Example Code and Data Size: These are the sizes for the OS-independent
1688acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1689debug version of the code includes the debug output trace mechanism and
1690has a much larger code and data size.
1691
1692  Current Release:
1693    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1694    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1695  Previous Release:
1696    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
1697    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1698
1699
17002) iASL Compiler/Disassembler and Tools:
1701
1702iASL: Implemented wildcard support for the -e option. This simplifies use
1703when there are many SSDTs that must be included to resolve external
1704method
1705declarations. ACPICA BZ 1041. Example:
1706    iasl -e ssdt*.dat -d dsdt.dat
1707
1708AcpiExec: Add history/line-editing for Unix/Linux systems. This change
1709adds a portable module that implements full history and limited line
1710editing for Unix and Linux systems. It does not use readline() due to
1711portability issues. Instead it uses the POSIX termio interface to put the
1712terminal in raw input mode so that the various special keys can be
1713trapped
1714(such as up/down-arrow for history support and left/right-arrow for line
1715editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
1716
1717AcpiXtract: Add support to handle (ignore) "empty" lines containing only
1718one or more spaces. This provides compatible with early or different
1719versions of the AcpiDump utility. ACPICA BZ 1044.
1720
1721AcpiDump: Do not ignore tables that contain only an ACPI table header.
1722Apparently, some BIOSs create SSDTs that contain an ACPI table header but
1723no other data. This change adds support to dump these tables. Any tables
1724shorter than the length of an ACPI table header remain in error (an error
1725message is emitted). Reported by Yi Li.
1726
1727Debugger: Echo actual command along with the "unknown command" message.
1728
1729----------------------------------------
173023 August 2013. Summary of changes for version 20130823:
1731
17321) ACPICA kernel-resident subsystem:
1733
1734Implemented support for host-installed System Control Interrupt (SCI)
1735handlers. Certain ACPI functionality requires the host to handle raw
1736SCIs. For example, the "SCI Doorbell" that is defined for memory power
1737state support requires the host device driver to handle SCIs to examine
1738if the doorbell has been activated. Multiple SCI handlers can be
1739installed to allow for future expansion. New external interfaces are
1740AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
1741details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
1742
1743Operation region support: Never locally free the handler "context"
1744pointer. This change removes some dangerous code that attempts to free
1745the handler context pointer in some (rare) circumstances. The owner of
1746the handler owns this pointer and the ACPICA code should never touch it.
1747Although not seen to be an issue in any kernel, it did show up as a
1748problem (fault) under AcpiExec. Also, set the internal storage field for
1749the context pointer to zero when the region is deactivated, simply for
1750sanity. David Box. ACPICA BZ 1039.
1751
1752AcpiRead: On error, do not modify the return value target location. If an
1753error happens in the middle of a split 32/32 64-bit I/O operation, do not
1754modify the target of the return value pointer. Makes the code consistent
1755with the rest of ACPICA. Bjorn Helgaas.
1756
1757Example Code and Data Size: These are the sizes for the OS-independent
1758acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1759debug version of the code includes the debug output trace mechanism and
1760has a much larger code and data size.
1761
1762  Current Release:
1763    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
1764    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1765  Previous Release:
1766    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
1767    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
1768
1769
17702) iASL Compiler/Disassembler and Tools:
1771
1772AcpiDump: Implemented several new features and fixed some problems:
17731) Added support to dump the RSDP, RSDT, and XSDT tables.
17742) Added support for multiple table instances (SSDT, UEFI).
17753) Added option to dump "customized" (overridden) tables (-c).
17764) Fixed a problem where some table filenames were improperly
1777constructed.
17785) Improved some error messages, removed some unnecessary messages.
1779
1780iASL: Implemented additional support for disassembly of ACPI tables that
1781contain invocations of external control methods. The -fe<file> option
1782allows the import of a file that specifies the external methods along
1783with the required number of arguments for each -- allowing for the
1784correct disassembly of the table. This is a workaround for a limitation
1785of AML code where the disassembler often cannot determine the number of
1786arguments required for an external control method and generates incorrect
1787ASL code. See the iASL reference for details. ACPICA BZ 1030.
1788
1789Debugger: Implemented a new command (paths) that displays the full
1790pathnames (namepaths) and object types of all objects in the namespace.
1791This is an alternative to the namespace command.
1792
1793Debugger: Implemented a new command (sci) that invokes the SCI dispatch
1794mechanism and any installed handlers.
1795
1796iASL: Fixed a possible segfault for "too many parent prefixes" condition.
1797This can occur if there are too many parent prefixes in a namepath (for
1798example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
1799
1800Application OSLs: Set the return value for the PCI read functions. These
1801functions simply return AE_OK, but should set the return value to zero
1802also. This change implements this. ACPICA BZ 1038.
1803
1804Debugger: Prevent possible command line buffer overflow. Increase the
1805size of a couple of the debugger line buffers, and ensure that overflow
1806cannot happen. ACPICA BZ 1037.
1807
1808iASL: Changed to abort immediately on serious errors during the parsing
1809phase. Due to the nature of ASL, there is no point in attempting to
1810compile these types of errors, and they typically end up causing a
1811cascade of hundreds of errors which obscure the original problem.
1812
1813----------------------------------------
181425 July 2013. Summary of changes for version 20130725:
1815
18161) ACPICA kernel-resident subsystem:
1817
1818Fixed a problem with the DerefOf operator where references to FieldUnits
1819and BufferFields incorrectly returned the parent object, not the actual
1820value of the object. After this change, a dereference of a FieldUnit
1821reference results in a read operation on the field to get the value, and
1822likewise, the appropriate BufferField value is extracted from the target
1823buffer.
1824
1825Fixed a problem where the _WAK method could cause a fault under these
1826circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
1827method returned no value. The problem is rarely seen because most kernels
1828run ACPICA in slack mode.
1829
1830For the DerefOf operator, a fatal error now results if an attempt is made
1831to dereference a reference (created by the Index operator) to a NULL
1832package element. Provides compatibility with other ACPI implementations,
1833and this behavior will be added to a future version of the ACPI
1834specification.
1835
1836The ACPI Power Management Timer (defined in the FADT) is now optional.
1837This provides compatibility with other ACPI implementations and will
1838appear in the next version of the ACPI specification. If there is no PM
1839Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
1840zero in the FADT indicates no PM timer.
1841
1842Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
1843allows the host to globally enable/disable all vendor strings, all
1844feature strings, or both. Intended to be primarily used for debugging
1845purposes only. Lv Zheng.
1846
1847Expose the collected _OSI data to the host via a global variable. This
1848data tracks the highest level vendor ID that has been invoked by the BIOS
1849so that the host (and potentially ACPICA itself) can change behaviors
1850based upon the age of the BIOS.
1851
1852Example Code and Data Size: These are the sizes for the OS-independent
1853acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1854debug version of the code includes the debug output trace mechanism and
1855has a much larger code and data size.
1856
1857  Current Release:
1858    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
1859    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1860  Previous Release:
1861    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1862    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1863
1864
18652) iASL Compiler/Disassembler and Tools:
1866
1867iASL: Created the following enhancements for the -so option (create
1868offset table):
18691)Add offsets for the last nameseg in each namepath for every supported
1870object type
18712)Add support for Processor, Device, Thermal Zone, and Scope objects
18723)Add the actual AML opcode for the parent object of every supported
1873object type
18744)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
1875
1876Disassembler: Emit all unresolved external symbols in a single block.
1877These are external references to control methods that could not be
1878resolved, and thus, the disassembler had to make a guess at the number of
1879arguments to parse.
1880
1881iASL: The argument to the -T option (create table template) is now
1882optional. If not specified, the default table is a DSDT, typically the
1883most common case.
1884
1885----------------------------------------
188626 June 2013. Summary of changes for version 20130626:
1887
18881) ACPICA kernel-resident subsystem:
1889
1890Fixed an issue with runtime repair of the _CST object. Null or invalid
1891elements were not always removed properly. Lv Zheng.
1892
1893Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
1894FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
1895the maximum number of GPEs is 1016. Use of multiple GPE block devices
1896makes the system-wide number of GPEs essentially unlimited.
1897
1898Example Code and Data Size: These are the sizes for the OS-independent
1899acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1900debug version of the code includes the debug output trace mechanism and
1901has a much larger code and data size.
1902
1903  Current Release:
1904    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1905    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1906  Previous Release:
1907    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1908    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1909
1910
19112) iASL Compiler/Disassembler and Tools:
1912
1913Portable AcpiDump: Implemented full support for the Linux and FreeBSD
1914hosts. Now supports Linux, FreeBSD, and Windows.
1915
1916Disassembler: Added some missing types for the HEST and EINJ tables: "Set
1917Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
1918
1919iASL/Preprocessor: Implemented full support for nested
1920#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
1921
1922Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
1923max. The original purpose of this constraint was to limit the amount of
1924debug output. However, the string function in question (UtPrintString) is
1925now used for the disassembler also, where 256 bytes is insufficient.
1926Reported by RehabMan@GitHub.
1927
1928iASL/DataTables: Fixed some problems and issues with compilation of DMAR
1929tables. ACPICA BZ 999. Lv Zheng.
1930
1931iASL: Fixed a couple of error exit issues that could result in a "Could
1932not delete <file>" message during ASL compilation.
1933
1934AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
1935the actual signatures for these tables are "FACP" and "APIC",
1936respectively.
1937
1938AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
1939tables are allowed to have multiple instances.
1940
1941----------------------------------------
194217 May 2013. Summary of changes for version 20130517:
1943
19441) ACPICA kernel-resident subsystem:
1945
1946Fixed a regression introduced in version 20130328 for _INI methods. This
1947change fixes a problem introduced in 20130328 where _INI methods are no
1948longer executed properly because of a memory block that was not
1949initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
1950<tomasz.nowicki@linaro.org>.
1951
1952Fixed a possible problem with the new extended sleep registers in the
1953ACPI
19545.0 FADT. Do not use these registers (even if populated) unless the HW-
1955reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
19561020. Lv Zheng.
1957
1958Implemented return value repair code for _CST predefined objects: Sort
1959the
1960list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
1961
1962Implemented a debug-only option to disable loading of SSDTs from the
1963RSDT/XSDT during ACPICA initialization. This can be useful for debugging
1964ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
1965acglobal.h - ACPICA BZ 1005. Lv Zheng.
1966
1967Fixed some issues in the ACPICA initialization and termination code:
1968Tomasz Nowicki <tomasz.nowicki@linaro.org>
19691) Clear events initialized flag upon event component termination. ACPICA
1970BZ 1013.
19712) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
19723) Delete global lock pending lock during termination. ACPICA BZ 1012.
19734) Clear debug buffer global on termination to prevent possible multiple
1974delete. ACPICA BZ 1010.
1975
1976Standardized all switch() blocks across the entire source base. After
1977many
1978years, different formatting for switch() had crept in. This change makes
1979the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
1980
1981Split some files to enhance ACPICA modularity and configurability:
19821) Split buffer dump routines into utilities/utbuffer.c
19832) Split internal error message routines into utilities/uterror.c
19843) Split table print utilities into tables/tbprint.c
19854) Split iASL command-line option processing into asloptions.c
1986
1987Makefile enhancements:
19881) Support for all new files above.
19892) Abort make on errors from any subcomponent. Chao Guan.
19903) Add build support for Apple Mac OS X. Liang Qi.
1991
1992Example Code and Data Size: These are the sizes for the OS-independent
1993acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1994debug version of the code includes the debug output trace mechanism and
1995has a much larger code and data size.
1996
1997  Current Release:
1998    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1999    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
2000  Previous Release:
2001    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
2002    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
2003
2004
20052) iASL Compiler/Disassembler and Tools:
2006
2007New utility: Implemented an easily portable version of the acpidump
2008utility to extract ACPI tables from the system (or a file) in an ASCII
2009hex
2010dump format. The top-level code implements the various command line
2011options, file I/O, and table dump routines. To port to a new host, only
2012three functions need to be implemented to get tables -- since this
2013functionality is OS-dependent. See the tools/acpidump/apmain.c module and
2014the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
20151) The Windows version obtains the ACPI tables from the Registry.
20162) The Linux version is under development.
20173) Other hosts - If an OS-dependent module is submitted, it will be
2018distributed with ACPICA.
2019
2020iASL: Fixed a regression for -D preprocessor option (define symbol). A
2021restructuring/change to the initialization sequence caused this option to
2022no longer work properly.
2023
2024iASL: Implemented a mechanism to disable specific warnings and remarks.
2025Adds a new command line option, "-vw <messageid> as well as "#pragma
2026disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
2027
2028iASL: Fix for too-strict package object validation. The package object
2029validation for return values from the predefined names is a bit too
2030strict, it does not allow names references within the package (which will
2031be resolved at runtime.) These types of references cannot be validated at
2032compile time. This change ignores named references within package objects
2033for names that return or define static packages.
2034
2035Debugger: Fixed the 80-character command line limitation for the History
2036command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
2037
2038iASL: Added control method and package support for the -so option
2039(generates AML offset table for BIOS support.)
2040
2041iASL: issue a remark if a non-serialized method creates named objects. If
2042a thread blocks within the method for any reason, and another thread
2043enters the method, the method will fail because an attempt will be made
2044to
2045create the same (named) object twice. In this case, issue a remark that
2046the method should be marked serialized. NOTE: may become a warning later.
2047ACPICA BZ 909.
2048
2049----------------------------------------
205018 April 2013. Summary of changes for version 20130418:
2051
20521) ACPICA kernel-resident subsystem:
2053
2054Fixed a possible buffer overrun during some rare but specific field unit
2055read operations. This overrun can only happen if the DSDT version is 1 --
2056meaning that all AML integers are 32 bits -- and the field length is
2057between 33 and 55 bits long. During the read, an internal buffer object
2058is
2059created for the field unit because the field is larger than an integer
2060(32
2061bits). However, in this case, the buffer will be incorrectly written
2062beyond the end because the buffer length is less than the internal
2063minimum
2064of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
2065long, but a full 8 bytes will be written.
2066
2067Updated the Embedded Controller "orphan" _REG method support. This refers
2068to _REG methods under the EC device that have no corresponding operation
2069region. This is allowed by the ACPI specification. This update removes a
2070dependency on the existence an ECDT table. It will execute an orphan _REG
2071method as long as the operation region handler for the EC is installed at
2072the EC device node and not the namespace root. Rui Zhang (original
2073update), Bob Moore (update/integrate).
2074
2075Implemented run-time argument typechecking for all predefined ACPI names
2076(_STA, _BIF, etc.) This change performs object typechecking on all
2077incoming arguments for all predefined names executed via
2078AcpiEvaluateObject. This ensures that ACPI-related device drivers are
2079passing correct object types as well as the correct number of arguments
2080(therefore identifying any issues immediately). Also, the ASL/namespace
2081definition of the predefined name is checked against the ACPI
2082specification for the proper argument count. Adds one new file,
2083nsarguments.c
2084
2085Changed an exception code for the ASL UnLoad() operator. Changed the
2086exception code for the case where the input DdbHandle is invalid, from
2087AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
2088
2089Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
2090global makefile. The use of this flag causes compiler errors on earlier
2091versions of GCC, so it has been removed for compatibility.
2092
2093Miscellaneous cleanup:
20941) Removed some unused/obsolete macros
20952) Fixed a possible memory leak in the _OSI support
20963) Removed an unused variable in the predefined name support
20974) Windows OSL: remove obsolete reference to a memory list field
2098
2099Example Code and Data Size: These are the sizes for the OS-independent
2100acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2101debug version of the code includes the debug output trace mechanism and
2102has a much larger code and data size.
2103
2104  Current Release:
2105    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
2106    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
2107  Previous Release:
2108    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
2109    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
2110
2111
21122) iASL Compiler/Disassembler and Tools:
2113
2114AcpiExec: Added installation of a handler for the SystemCMOS address
2115space. This prevents control method abort if a method accesses this
2116space.
2117
2118AcpiExec: Added support for multiple EC devices, and now install EC
2119operation region handler(s) at the actual EC device instead of the
2120namespace root. This reflects the typical behavior of host operating
2121systems.
2122
2123AcpiExec: Updated to ensure that all operation region handlers are
2124installed before the _REG methods are executed. This prevents a _REG
2125method from aborting if it accesses an address space has no handler.
2126AcpiExec installs a handler for every possible address space.
2127
2128Debugger: Enhanced the "handlers" command to display non-root handlers.
2129This change enhances the handlers command to display handlers associated
2130with individual devices throughout the namespace, in addition to the
2131currently supported display of handlers associated with the root
2132namespace
2133node.
2134
2135ASL Test Suite: Several test suite errors have been identified and
2136resolved, reducing the total error count during execution. Chao Guan.
2137
2138----------------------------------------
213928 March 2013. Summary of changes for version 20130328:
2140
21411) ACPICA kernel-resident subsystem:
2142
2143Fixed several possible race conditions with the internal object reference
2144counting mechanism. Some of the external ACPICA interfaces update object
2145reference counts without holding the interpreter or namespace lock. This
2146change adds a spinlock to protect reference count updates on the internal
2147ACPICA objects. Reported by and with assistance from Andriy Gapon
2148(avg@FreeBSD.org).
2149
2150FADT support: Removed an extraneous warning for very large GPE register
2151sets. This change removes a size mismatch warning if the legacy length
2152field for a GPE register set is larger than the 64-bit GAS structure can
2153accommodate. GPE register sets can be larger than the 255-bit width
2154limitation of the GAS structure. Linn Crosetto (linn@hp.com).
2155
2156_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
2157return from this interface. Handles a possible timeout case if
2158ACPI_WAIT_FOREVER is modified by the host to be a value less than
2159"forever". Jung-uk Kim.
2160
2161Predefined name support: Add allowed/required argument type information
2162to
2163the master predefined info table. This change adds the infrastructure to
2164enable typechecking on incoming arguments for all predefined
2165methods/objects. It does not actually contain the code that will fully
2166utilize this information, this is still under development. Also condenses
2167some duplicate code for the predefined names into a new module,
2168utilities/utpredef.c
2169
2170Example Code and Data Size: These are the sizes for the OS-independent
2171acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2172debug version of the code includes the debug output trace mechanism and
2173has a much larger code and data size.
2174
2175  Previous Release:
2176    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
2177    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
2178  Current Release:
2179    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
2180    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
2181
2182
21832) iASL Compiler/Disassembler and Tools:
2184
2185iASL: Implemented a new option to simplify the development of ACPI-
2186related
2187BIOS code. Adds support for a new "offset table" output file. The -so
2188option will create a C table containing the AML table offsets of various
2189named objects in the namespace so that BIOS code can modify them easily
2190at
2191boot time. This can simplify BIOS runtime code by eliminating expensive
2192searches for "magic values", enhancing boot times and adding greater
2193reliability. With assistance from Lee Hamel.
2194
2195iASL: Allow additional predefined names to return zero-length packages.
2196Now, all predefined names that are defined by the ACPI specification to
2197return a "variable-length package of packages" are allowed to return a
2198zero length top-level package. This allows the BIOS to tell the host that
2199the requested feature is not supported, and supports existing BIOS/ASL
2200code and practices.
2201
2202iASL: Changed the "result not used" warning to an error. This is the case
2203where an ASL operator is effectively a NOOP because the result of the
2204operation is not stored anywhere. For example:
2205    Add (4, Local0)
2206There is no target (missing 3rd argument), nor is the function return
2207value used. This is potentially a very serious problem -- since the code
2208was probably intended to do something, but for whatever reason, the value
2209was not stored. Therefore, this issue has been upgraded from a warning to
2210an error.
2211
2212AcpiHelp: Added allowable/required argument types to the predefined names
2213info display. This feature utilizes the recent update to the predefined
2214names table (above).
2215
2216----------------------------------------
221714 February 2013. Summary of changes for version 20130214:
2218
22191) ACPICA Kernel-resident Subsystem:
2220
2221Fixed a possible regression on some hosts: Reinstated the safe return
2222macros (return_ACPI_STATUS, etc.) that ensure that the argument is
2223evaluated only once. Although these macros are not needed for the ACPICA
2224code itself, they are often used by ACPI-related host device drivers
2225where
2226the safe feature may be necessary.
2227
2228Fixed several issues related to the ACPI 5.0 reduced hardware support
2229(SOC): Now ensure that if the platform declares itself as hardware-
2230reduced
2231via the FADT, the following functions become NOOPs (and always return
2232AE_OK) because ACPI is always enabled by definition on these machines:
2233  AcpiEnable
2234  AcpiDisable
2235  AcpiHwGetMode
2236  AcpiHwSetMode
2237
2238Dynamic Object Repair: Implemented additional runtime repairs for
2239predefined name return values. Both of these repairs can simplify code in
2240the related device drivers that invoke these methods:
22411) For the _STR and _MLS names, automatically repair/convert an ASCII
2242string to a Unicode buffer.
22432) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
2244a
2245lone end tag descriptor in the following cases: A Return(0) was executed,
2246a null buffer was returned, or no object at all was returned (non-slack
2247mode only). Adds a new file, nsconvert.c
2248ACPICA BZ 998. Bob Moore, Lv Zheng.
2249
2250Resource Manager: Added additional code to prevent possible infinite
2251loops
2252while traversing corrupted or ill-formed resource template buffers. Check
2253for zero-length resource descriptors in all code that loops through
2254resource templates (the length field is used to index through the
2255template). This change also hardens the external AcpiWalkResources and
2256AcpiWalkResourceBuffer interfaces.
2257
2258Local Cache Manager: Enhanced the main data structure to eliminate an
2259unnecessary mechanism to access the next object in the list. Actually
2260provides a small performance enhancement for hosts that use the local
2261ACPICA cache manager. Jung-uk Kim.
2262
2263Example Code and Data Size: These are the sizes for the OS-independent
2264acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2265debug version of the code includes the debug output trace mechanism and
2266has a much larger code and data size.
2267
2268  Previous Release:
2269    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
2270    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
2271  Current Release:
2272    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
2273    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
2274
2275
22762) iASL Compiler/Disassembler and Tools:
2277
2278iASL/Disassembler: Fixed several issues with the definition of the ACPI
22795.0 RASF table (RAS Feature Table). This change incorporates late changes
2280that were made to the ACPI 5.0 specification.
2281
2282iASL/Disassembler: Added full support for the following new ACPI tables:
2283  1) The MTMR table (MID Timer Table)
2284  2) The VRTC table (Virtual Real Time Clock Table).
2285Includes header file, disassembler, table compiler, and template support
2286for both tables.
2287
2288iASL: Implemented compile-time validation of package objects returned by
2289predefined names. This new feature validates static package objects
2290returned by the various predefined names defined to return packages. Both
2291object types and package lengths are validated, for both parent packages
2292and sub-packages, if any. The code is similar in structure and behavior
2293to
2294the runtime repair mechanism within the AML interpreter and uses the
2295existing predefined name information table. Adds a new file, aslprepkg.c.
2296ACPICA BZ 938.
2297
2298iASL: Implemented auto-detection of binary ACPI tables for disassembly.
2299This feature detects a binary file with a valid ACPI table header and
2300invokes the disassembler automatically. Eliminates the need to
2301specifically invoke the disassembler with the -d option. ACPICA BZ 862.
2302
2303iASL/Disassembler: Added several warnings for the case where there are
2304unresolved control methods during the disassembly. This can potentially
2305cause errors when the output file is compiled, because the disassembler
2306assumes zero method arguments in these cases (it cannot determine the
2307actual number of arguments without resolution/definition of the method).
2308
2309Debugger: Added support to display all resources with a single command.
2310Invocation of the resources command with no arguments will now display
2311all
2312resources within the current namespace.
2313
2314AcpiHelp: Added descriptive text for each ACPICA exception code displayed
2315via the -e option.
2316
2317----------------------------------------
231817 January 2013. Summary of changes for version 20130117:
2319
23201) ACPICA Kernel-resident Subsystem:
2321
2322Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
2323return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
2324objects to return a package containing one integer, most BIOS code
2325returns
2326two integers and the previous code reflects that. However, we also need
2327to
2328support BIOS code that actually implements to the ACPI spec, and this
2329change reflects this.
2330
2331Fixed two issues with the ACPI_DEBUG_PRINT macros:
23321) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
2333C compilers that require this support.
23342) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
2335ACPI_DEBUG is already used by many of the various hosts.
2336
2337Updated all ACPICA copyrights and signons to 2013. Added the 2013
2338copyright to all module headers and signons, including the standard Linux
2339header. This affects virtually every file in the ACPICA core subsystem,
2340iASL compiler, all ACPICA utilities, and the test suites.
2341
2342Example Code and Data Size: These are the sizes for the OS-independent
2343acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2344debug version of the code includes the debug output trace mechanism and
2345has a much larger code and data size.
2346
2347  Previous Release:
2348    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
2349    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
2350  Current Release:
2351    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
2352    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
2353
2354
23552) iASL Compiler/Disassembler and Tools:
2356
2357Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
2358prevent a possible fault on some hosts. Some C libraries modify the arg
2359pointer parameter to vfprintf making it difficult to call it twice in the
2360AcpiOsVprintf function. Use a local buffer to workaround this issue. This
2361does not affect the Windows OSL since the Win C library does not modify
2362the arg pointer. Chao Guan, Bob Moore.
2363
2364iASL: Fixed a possible infinite loop when the maximum error count is
2365reached. If an output file other than the .AML file is specified (such as
2366a listing file), and the maximum number of errors is reached, do not
2367attempt to flush data to the output file(s) as the compiler is aborting.
2368This can cause an infinite loop as the max error count code essentially
2369keeps calling itself.
2370
2371iASL/Disassembler: Added an option (-in) to ignore NOOP
2372opcodes/operators.
2373Implemented for both the compiler and the disassembler. Often, the NOOP
2374opcode is used as padding for packages that are changed dynamically by
2375the
2376BIOS. When disassembled and recompiled, these NOOPs will cause syntax
2377errors. This option causes the disassembler to ignore all NOOP opcodes
2378(0xA3), and it also causes the compiler to ignore all ASL source code
2379NOOP
2380statements as well.
2381
2382Debugger: Enhanced the Sleep command to execute all sleep states. This
2383change allows Sleep to be invoked with no arguments and causes the
2384debugger to execute all of the sleep states, 0-5, automatically.
2385
2386----------------------------------------
238720 December 2012. Summary of changes for version 20121220:
2388
23891) ACPICA Kernel-resident Subsystem:
2390
2391Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
2392alternate entry point for AcpiWalkResources and improves the usability of
2393the resource manager by accepting as input a buffer containing the output
2394of either a _CRS, _PRS, or _AEI method. The key functionality is that the
2395input buffer is not deleted by this interface so that it can be used by
2396the host later. See the ACPICA reference for details.
2397
2398Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
2399(DSDT version < 2). The constant will be truncated and this warning
2400reflects that behavior.
2401
2402Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
2403ExtendedInterrupt, and GpioInt descriptors. This change adds support to
2404both get and set the new wake bit in these descriptors, separately from
2405the existing share bit. Reported by Aaron Lu.
2406
2407Interpreter: Fix Store() when an implicit conversion is not possible. For
2408example, in the cases such as a store of a string to an existing package
2409object, implement the store as a CopyObject(). This is a small departure
2410from the ACPI specification which states that the control method should
2411be
2412aborted in this case. However, the ASLTS suite depends on this behavior.
2413
2414Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
2415macros: check if debug output is currently enabled as soon as possible to
2416minimize performance impact if debug is in fact not enabled.
2417
2418Source code restructuring: Cleanup to improve modularity. The following
2419new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
2420psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
2421Associated makefiles and project files have been updated.
2422
2423Changed an exception code for LoadTable operator. For the case where one
2424of the input strings is too long, change the returned exception code from
2425AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
2426
2427Fixed a possible memory leak in dispatcher error path. On error, delete
2428the mutex object created during method mutex creation. Reported by
2429tim.gardner@canonical.com.
2430
2431Example Code and Data Size: These are the sizes for the OS-independent
2432acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2433debug version of the code includes the debug output trace mechanism and
2434has a much larger code and data size.
2435
2436  Previous Release:
2437    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
2438    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2439  Current Release:
2440    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
2441    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
2442
2443
24442) iASL Compiler/Disassembler and Tools:
2445
2446iASL: Disallow a method call as argument to the ObjectType ASL operator.
2447This change tracks an errata to the ACPI 5.0 document. The AML grammar
2448will not allow the interpreter to differentiate between a method and a
2449method invocation when these are used as an argument to the ObjectType
2450operator. The ACPI specification change is to disallow a method
2451invocation
2452(UserTerm) for the ObjectType operator.
2453
2454Finish support for the TPM2 and CSRT tables in the headers, table
2455compiler, and disassembler.
2456
2457Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
2458always expires immediately if the semaphore is not available. The
2459original
2460code was using a relative-time timeout, but sem_timedwait requires the
2461use
2462of an absolute time.
2463
2464iASL: Added a remark if the Timer() operator is used within a 32-bit
2465table. This operator returns a 64-bit time value that will be truncated
2466within a 32-bit table.
2467
2468iASL Source code restructuring: Cleanup to improve modularity. The
2469following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
2470aslmethod.c, and aslfileio.c. Associated makefiles and project files have
2471been updated.
2472
2473
2474----------------------------------------
247514 November 2012. Summary of changes for version 20121114:
2476
24771) ACPICA Kernel-resident Subsystem:
2478
2479Implemented a performance enhancement for ACPI/AML Package objects. This
2480change greatly increases the performance of Package objects within the
2481interpreter. It changes the processing of reference counts for packages
2482by
2483optimizing for the most common case where the package sub-objects are
2484either Integers, Strings, or Buffers. Increases the overall performance
2485of
2486the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
24872X.)
2488Chao Guan. ACPICA BZ 943.
2489
2490Implemented and deployed common macros to extract flag bits from resource
2491descriptors. Improves readability and maintainability of the code. Fixes
2492a
2493problem with the UART serial bus descriptor for the number of data bits
2494flags (was incorrectly 2 bits, should be 3).
2495
2496Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
2497of the macros and changed the SETx macros to the style of (destination,
2498source). Also added ACPI_CASTx companion macros. Lv Zheng.
2499
2500Example Code and Data Size: These are the sizes for the OS-independent
2501acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2502debug version of the code includes the debug output trace mechanism and
2503has a much larger code and data size.
2504
2505  Previous Release:
2506    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
2507    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2508  Current Release:
2509    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
2510    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2511
2512
25132) iASL Compiler/Disassembler and Tools:
2514
2515Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
2516adds the ShareAndWake and ExclusiveAndWake flags which were added to the
2517Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
2518
2519Disassembler: Fixed a problem with external declaration generation. Fixes
2520a problem where an incorrect pathname could be generated for an external
2521declaration if the original reference to the object includes leading
2522carats (^). ACPICA BZ 984.
2523
2524Debugger: Completed a major update for the Disassemble<method> command.
2525This command was out-of-date and did not properly disassemble control
2526methods that had any reasonable complexity. This fix brings the command
2527up
2528to the same level as the rest of the disassembler. Adds one new file,
2529dmdeferred.c, which is existing code that is now common with the main
2530disassembler and the debugger disassemble command. ACPICA MZ 978.
2531
2532iASL: Moved the parser entry prototype to avoid a duplicate declaration.
2533Newer versions of Bison emit this prototype, so moved the prototype out
2534of
2535the iASL header to where it is actually used in order to avoid a
2536duplicate
2537declaration.
2538
2539iASL/Tools: Standardized use of the stream I/O functions:
2540  1) Ensure check for I/O error after every fopen/fread/fwrite
2541  2) Ensure proper order of size/count arguments for fread/fwrite
2542  3) Use test of (Actual != Requested) after all fwrite, and most fread
2543  4) Standardize I/O error messages
2544Improves reliability and maintainability of the code. Bob Moore, Lv
2545Zheng.
2546ACPICA BZ 981.
2547
2548Disassembler: Prevent duplicate External() statements. During generation
2549of external statements, detect similar pathnames that are actually
2550duplicates such as these:
2551  External (\ABCD)
2552  External (ABCD)
2553Remove all leading '\' characters from pathnames during the external
2554statement generation so that duplicates will be detected and tossed.
2555ACPICA BZ 985.
2556
2557Tools: Replace low-level I/O with stream I/O functions. Replace
2558open/read/write/close with the stream I/O equivalents
2559fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
2560Moore.
2561
2562AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
2563name header so that AcpiXtract recognizes the output file/table.
2564
2565iASL: Remove obsolete -2 option flag. Originally intended to force the
2566compiler/disassembler into an ACPI 2.0 mode, this was never implemented
2567and the entire concept is now obsolete.
2568
2569----------------------------------------
257018 October 2012. Summary of changes for version 20121018:
2571
2572
25731) ACPICA Kernel-resident Subsystem:
2574
2575Updated support for the ACPI 5.0 MPST table. Fixes some problems
2576introduced by late changes to the table as it was added to the ACPI 5.0
2577specification. Includes header, disassembler, and data table compiler
2578support as well as a new version of the MPST template.
2579
2580AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
25815.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
2582methods: _HID, _CID, and _UID.
2583
2584Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
2585ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
2586name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
2587names for their various drivers. Affects the AcpiGetObjectInfo external
2588interface, and other internal interfaces as well.
2589
2590Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
2591This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
2592on machines that support non-aligned transfers. Optimizes for this case
2593rather than using a strncpy. With assistance from Zheng Lv.
2594
2595Resource Manager: Small fix for buffer size calculation. Fixed a one byte
2596error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
2597
2598Added a new debug print message for AML mutex objects that are force-
2599released. At control method termination, any currently acquired mutex
2600objects are force-released. Adds a new debug-only message for each one
2601that is released.
2602
2603Audited/updated all ACPICA return macros and the function debug depth
2604counter: 1) Ensure that all functions that use the various TRACE macros
2605also use the appropriate ACPICA return macros. 2) Ensure that all normal
2606return statements surround the return expression (value) with parens to
2607ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
2608Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
2609
2610Global source code changes/maintenance: All extra lines at the start and
2611end of each source file have been removed for consistency. Also, within
2612comments, all new sentences start with a single space instead of a double
2613space, again for consistency across the code base.
2614
2615Example Code and Data Size: These are the sizes for the OS-independent
2616acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2617debug version of the code includes the debug output trace mechanism and
2618has a much larger code and data size.
2619
2620  Previous Release:
2621    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2622    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2623  Current Release:
2624    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
2625    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2626
2627
26282) iASL Compiler/Disassembler and Tools:
2629
2630AcpiExec: Improved the algorithm used for memory leak/corruption
2631detection. Added some intelligence to the code that maintains the global
2632list of allocated memory. The list is now ordered by allocated memory
2633address, significantly improving performance. When running AcpiExec on
2634the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
2635on the platform and/or the environment. Note, this performance
2636enhancement affects the AcpiExec utility only, not the kernel-resident
2637ACPICA code.
2638
2639Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
2640the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
2641incorrect table offset reported for invalid opcodes. Report the original
264232-bit value for bad ACPI_NAMEs (as well as the repaired name.)
2643
2644Disassembler: Enhanced the -vt option to emit the binary table data in
2645hex format to assist with debugging.
2646
2647Fixed a potential filename buffer overflow in osunixdir.c. Increased the
2648size of file structure. Colin Ian King.
2649
2650----------------------------------------
265113 September 2012. Summary of changes for version 20120913:
2652
2653
26541) ACPICA Kernel-resident Subsystem:
2655
2656ACPI 5.0: Added two new notify types for the Hardware Error Notification
2657Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
2658and
2659MCE(6).
2660
2661Table Manager: Merged/removed duplicate code in the root table resize
2662functions. One function is external, the other is internal. Lv Zheng,
2663ACPICA
2664BZ 846.
2665
2666Makefiles: Completely removed the obsolete "Linux" makefiles under
2667acpica/generate/linux. These makefiles are obsolete and have been
2668replaced
2669by
2670the generic unix makefiles under acpica/generate/unix.
2671
2672Makefiles: Ensure that binary files always copied properly. Minor rule
2673change
2674to ensure that the final binary output files are always copied up to the
2675appropriate binary directory (bin32 or bin64.)
2676
2677Example Code and Data Size: These are the sizes for the OS-independent
2678acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2679debug
2680version of the code includes the debug output trace mechanism and has a
2681much
2682larger code and data size.
2683
2684  Previous Release:
2685    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2686    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2687  Current Release:
2688    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2689    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2690
2691
26922) iASL Compiler/Disassembler and Tools:
2693
2694Disassembler: Fixed a possible fault during the disassembly of resource
2695descriptors when a second parse is required because of the invocation of
2696external control methods within the table. With assistance from
2697adq@lidskialf.net. ACPICA BZ 976.
2698
2699iASL: Fixed a namepath optimization problem. An error can occur if the
2700parse
2701node that contains the namepath to be optimized does not have a parent
2702node
2703that is a named object. This change fixes the problem.
2704
2705iASL: Fixed a regression where the AML file is not deleted on errors. The
2706AML
2707output file should be deleted if there are any errors during the
2708compiler.
2709The
2710only exception is if the -f (force output) option is used. ACPICA BZ 974.
2711
2712iASL: Added a feature to automatically increase internal line buffer
2713sizes.
2714Via realloc(), automatically increase the internal line buffer sizes as
2715necessary to support very long source code lines. The current version of
2716the
2717preprocessor requires a buffer long enough to contain full source code
2718lines.
2719This change increases the line buffer(s) if the input lines go beyond the
2720current buffer size. This eliminates errors that occurred when a source
2721code
2722line was longer than the buffer.
2723
2724iASL: Fixed a problem with constant folding in method declarations. The
2725SyncLevel term is a ByteConstExpr, and incorrect code would be generated
2726if a
2727Type3 opcode was used.
2728
2729Debugger: Improved command help support. For incorrect argument count,
2730display
2731full help for the command. For help command itself, allow an argument to
2732specify a command.
2733
2734Test Suites: Several bug fixes for the ASLTS suite reduces the number of
2735errors during execution of the suite. Guan Chao.
2736
2737----------------------------------------
273816 August 2012. Summary of changes for version 20120816:
2739
2740
27411) ACPICA Kernel-resident Subsystem:
2742
2743Removed all use of the deprecated _GTS and _BFS predefined methods. The
2744_GTS
2745(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
2746deprecated and will probably be removed from the ACPI specification.
2747Windows
2748does not invoke them, and reportedly never will. The final nail in the
2749coffin
2750is that the ACPI specification states that these methods must be run with
2751interrupts off, which is not going to happen in a kernel interpreter.
2752Note:
2753Linux has removed all use of the methods also. It was discovered that
2754invoking these functions caused failures on some machines, probably
2755because
2756they were never tested since Windows does not call them. Affects two
2757external
2758interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
2759ACPICA BZ 969.
2760
2761Implemented support for complex bit-packed buffers returned from the _PLD
2762(Physical Location of Device) predefined method. Adds a new external
2763interface, AcpiDecodePldBuffer that parses the buffer into a more usable
2764C
2765structure. Note: C Bitfields cannot be used for this type of predefined
2766structure since the memory layout of individual bitfields is not defined
2767by
2768the C language. In addition, there are endian concerns where a compiler
2769will
2770change the bitfield ordering based on the machine type. The new ACPICA
2771interface eliminates these issues, and should be called after _PLD is
2772executed. ACPICA BZ 954.
2773
2774Implemented a change to allow a scope change to root (via "Scope (\)")
2775during
2776execution of module-level ASL code (code that is executed at table load
2777time.) Lin Ming.
2778
2779Added the Windows8/Server2012 string for the _OSI method. This change
2780adds
2781a
2782new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
27832012.
2784
2785Added header support for the new ACPI tables DBG2 (Debug Port Table Type
27862)
2787and CSRT (Core System Resource Table).
2788
2789Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
2790names. This simplifies access to the buffers returned by these predefined
2791names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
2792
2793GPE support: Removed an extraneous parameter from the various low-level
2794internal GPE functions. Tang Feng.
2795
2796Removed the linux makefiles from the unix packages. The generate/linux
2797makefiles are obsolete and have been removed from the unix tarball
2798release
2799packages. The replacement makefiles are under generate/unix, and there is
2800a
2801top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
2802
2803Updates for Unix makefiles:
28041) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
28052) Update linker flags (move to end of command line) for AcpiExec
2806utility.
2807Guan Chao.
2808
2809Split ACPICA initialization functions to new file, utxfinit.c. Split from
2810utxface.c to improve modularity and reduce file size.
2811
2812Example Code and Data Size: These are the sizes for the OS-independent
2813acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2814debug version of the code includes the debug output trace mechanism and
2815has a
2816much larger code and data size.
2817
2818  Previous Release:
2819    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2820    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2821  Current Release:
2822    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2823    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2824
2825
28262) iASL Compiler/Disassembler and Tools:
2827
2828iASL: Fixed a problem with constant folding for fixed-length constant
2829expressions. The constant-folding code was not being invoked for constant
2830expressions that allow the use of type 3/4/5 opcodes to generate
2831constants
2832for expressions such as ByteConstExpr, WordConstExpr, etc. This could
2833result
2834in the generation of invalid AML bytecode. ACPICA BZ 970.
2835
2836iASL: Fixed a generation issue on newer versions of Bison. Newer versions
2837apparently automatically emit some of the necessary externals. This
2838change
2839handles these versions in order to eliminate generation warnings.
2840
2841Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
2842
2843Disassembler: Add support to decode _PLD buffers. The decoded buffer
2844appears
2845within comments in the output file.
2846
2847Debugger: Fixed a regression with the "Threads" command where
2848AE_BAD_PARAMETER was always returned.
2849
2850----------------------------------------
285111 July 2012. Summary of changes for version 20120711:
2852
28531) ACPICA Kernel-resident Subsystem:
2854
2855Fixed a possible fault in the return package object repair code. Fixes a
2856problem that can occur when a lone package object is wrapped with an
2857outer
2858package object in order to force conformance to the ACPI specification.
2859Can
2860affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
2861_DLM,
2862_CSD, _PSD, _TSD.
2863
2864Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
2865PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
2866ARB_DIS bit must be implemented in the host-dependent C3 processor power
2867state
2868support. Note, ARB_DIS is obsolete and only applies to older chipsets,
2869both
2870Intel and other vendors. (for Intel: ICH4-M and earlier)
2871
2872This change removes the code to disable/enable bus master arbitration
2873during
2874suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
2875causes
2876resume problems on some machines. The change has been in use for over
2877seven
2878years within Linux.
2879
2880Implemented two new external interfaces to support host-directed dynamic
2881ACPI
2882table load and unload. They are intended to simplify the host
2883implementation
2884of hot-plug support:
2885  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
2886  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
2887table.
2888See the ACPICA reference for additional details. Adds one new file,
2889components/tables/tbxfload.c
2890
2891Implemented and deployed two new interfaces for errors and warnings that
2892are
2893known to be caused by BIOS/firmware issues:
2894  AcpiBiosError: Prints "ACPI Firmware Error" message.
2895  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
2896Deployed these new interfaces in the ACPICA Table Manager code for ACPI
2897table
2898and FADT errors. Additional deployment to be completed as appropriate in
2899the
2900future. The associated conditional macros are ACPI_BIOS_ERROR and
2901ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
2902ACPICA
2903BZ
2904843.
2905
2906Implicit notify support: ensure that no memory allocation occurs within a
2907critical region. This fix moves a memory allocation outside of the time
2908that a
2909spinlock is held. Fixes issues on systems that do not allow this
2910behavior.
2911Jung-uk Kim.
2912
2913Split exception code utilities and tables into a new file,
2914utilities/utexcep.c
2915
2916Example Code and Data Size: These are the sizes for the OS-independent
2917acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2918debug
2919version of the code includes the debug output trace mechanism and has a
2920much
2921larger code and data size.
2922
2923  Previous Release:
2924    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2925    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2926  Current Release:
2927    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2928    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2929
2930
29312) iASL Compiler/Disassembler and Tools:
2932
2933iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
2934of
29350. Jung-uk Kim.
2936
2937Debugger: Enhanced the "tables" command to emit additional information
2938about
2939the current set of ACPI tables, including the owner ID and flags decode.
2940
2941Debugger: Reimplemented the "unload" command to use the new
2942AcpiUnloadParentTable external interface. This command was disable
2943previously
2944due to need for an unload interface.
2945
2946AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
2947option
2948will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
2949
2950----------------------------------------
295120 June 2012. Summary of changes for version 20120620:
2952
2953
29541) ACPICA Kernel-resident Subsystem:
2955
2956Implemented support to expand the "implicit notify" feature to allow
2957multiple
2958devices to be notified by a single GPE. This feature automatically
2959generates a
2960runtime device notification in the absence of a BIOS-provided GPE control
2961method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
2962notify is
2963provided by ACPICA for Windows compatibility, and is a workaround for
2964BIOS
2965AML
2966code errors. See the description of the AcpiSetupGpeForWake interface in
2967the
2968APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
2969
2970Changed some comments and internal function names to simplify and ensure
2971correctness of the Linux code translation. No functional changes.
2972
2973Example Code and Data Size: These are the sizes for the OS-independent
2974acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2975debug
2976version of the code includes the debug output trace mechanism and has a
2977much
2978larger code and data size.
2979
2980  Previous Release:
2981    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2982    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2983  Current Release:
2984    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2985    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2986
2987
29882) iASL Compiler/Disassembler and Tools:
2989
2990Disassembler: Added support to emit short, commented descriptions for the
2991ACPI
2992predefined names in order to improve the readability of the disassembled
2993output. ACPICA BZ 959. Changes include:
2994  1) Emit descriptions for all standard predefined names (_INI, _STA,
2995_PRW,
2996etc.)
2997  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
2998  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
2999etc.)
3000
3001AcpiSrc: Fixed several long-standing Linux code translation issues.
3002Argument
3003descriptions in function headers are now translated properly to lower
3004case
3005and
3006underscores. ACPICA BZ 961. Also fixes translation problems such as
3007these:
3008(old -> new)
3009  i_aSL -> iASL
3010  00-7_f -> 00-7F
3011  16_k -> 16K
3012  local_fADT -> local_FADT
3013  execute_oSI -> execute_OSI
3014
3015iASL: Fixed a problem where null bytes were inadvertently emitted into
3016some
3017listing files.
3018
3019iASL: Added the existing debug options to the standard help screen. There
3020are
3021no longer two different help screens. ACPICA BZ 957.
3022
3023AcpiHelp: Fixed some typos in the various predefined name descriptions.
3024Also
3025expand some of the descriptions where appropriate.
3026
3027iASL: Fixed the -ot option (display compile times/statistics). Was not
3028working
3029properly for standard output; only worked for the debug file case.
3030
3031----------------------------------------
303218 May 2012. Summary of changes for version 20120518:
3033
3034
30351) ACPICA Core Subsystem:
3036
3037Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
3038defined
3039to block until asynchronous events such as notifies and GPEs have
3040completed.
3041Within ACPICA, it is only called before a notify or GPE handler is
3042removed/uninstalled. It also may be useful for the host OS within related
3043drivers such as the Embedded Controller driver. See the ACPICA reference
3044for
3045additional information. ACPICA BZ 868.
3046
3047ACPI Tables: Added a new error message for a possible overflow failure
3048during
3049the conversion of FADT 32-bit legacy register addresses to internal
3050common
305164-
3052bit GAS structure representation. The GAS has a one-byte "bit length"
3053field,
3054thus limiting the register length to 255 bits. ACPICA BZ 953.
3055
3056Example Code and Data Size: These are the sizes for the OS-independent
3057acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3058debug
3059version of the code includes the debug output trace mechanism and has a
3060much
3061larger code and data size.
3062
3063  Previous Release:
3064    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3065    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
3066  Current Release:
3067    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
3068    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
3069
3070
30712) iASL Compiler/Disassembler and Tools:
3072
3073iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
3074macro.
3075This keyword was added late in the ACPI 5.0 release cycle and was not
3076implemented until now.
3077
3078Disassembler: Added support for Operation Region externals. Adds missing
3079support for operation regions that are defined in another table, and
3080referenced locally via a Field or BankField ASL operator. Now generates
3081the
3082correct External statement.
3083
3084Disassembler: Several additional fixes for the External() statement
3085generation
3086related to some ASL operators. Also, order the External() statements
3087alphabetically in the disassembler output. Fixes the External()
3088generation
3089for
3090the Create* field, Alias, and Scope operators:
3091 1) Create* buffer field operators - fix type mismatch warning on
3092disassembly
3093 2) Alias - implement missing External support
3094 3) Scope - fix to make sure all necessary externals are emitted.
3095
3096iASL: Improved pathname support. For include files, merge the prefix
3097pathname
3098with the file pathname and eliminate unnecessary components. Convert
3099backslashes in all pathnames to forward slashes, for readability. Include
3100file
3101pathname changes affect both #include and Include() type operators.
3102
3103iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
3104end
3105of a valid line by inserting a newline and then returning the EOF during
3106the
3107next call to GetNextLine. Prevents the line from being ignored due to EOF
3108condition.
3109
3110iASL: Implemented some changes to enhance the IDE support (-vi option.)
3111Error
3112and Warning messages are now correctly recognized for both the source
3113code
3114browser and the global error and warning counts.
3115
3116----------------------------------------
311720 April 2012. Summary of changes for version 20120420:
3118
3119
31201) ACPICA Core Subsystem:
3121
3122Implemented support for multiple notify handlers. This change adds
3123support
3124to
3125allow multiple system and device notify handlers on Device, Thermal Zone,
3126and
3127Processor objects. This can simplify the host OS notification
3128implementation.
3129Also re-worked and restructured the entire notify support code to
3130simplify
3131handler installation, handler removal, notify event queuing, and notify
3132dispatch to handler(s). Note: there can still only be two global notify
3133handlers - one for system notifies and one for device notifies. There are
3134no
3135changes to the existing handler install/remove interfaces. Lin Ming, Bob
3136Moore, Rafael Wysocki.
3137
3138Fixed a regression in the package repair code where the object reference
3139count was calculated incorrectly. Regression was introduced in the commit
3140"Support to add Package wrappers".
3141
3142Fixed a couple possible memory leaks in the AML parser, in the error
3143recovery
3144path. Jesper Juhl, Lin Ming.
3145
3146Example Code and Data Size: These are the sizes for the OS-independent
3147acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3148debug version of the code includes the debug output trace mechanism and
3149has a
3150much larger code and data size.
3151
3152  Previous Release:
3153    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3154    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3155  Current Release:
3156    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3157    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
3158
3159
31602) iASL Compiler/Disassembler and Tools:
3161
3162iASL: Fixed a problem with the resource descriptor support where the
3163length
3164of the StartDependentFn and StartDependentFnNoPrio descriptors were not
3165included in cumulative descriptor offset, resulting in incorrect values
3166for
3167resource tags within resource descriptors appearing after a
3168StartDependent*
3169descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
3170
3171iASL and Preprocessor: Implemented full support for the #line directive
3172to
3173correctly track original source file line numbers through the .i
3174preprocessor
3175output file - for error and warning messages.
3176
3177iASL: Expand the allowable byte constants for address space IDs.
3178Previously,
3179the allowable range was 0x80-0xFF (user-defined spaces), now the range is
31800x0A-0xFF to allow for custom and new IDs without changing the compiler.
3181
3182iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
3183
3184iASL: Add option to completely disable the preprocessor (-Pn).
3185
3186iASL: Now emit all error/warning messages to standard error (stderr) by
3187default (instead of the previous stdout).
3188
3189ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
3190Update
3191for resource descriptor offset fix above. Update/cleanup error output
3192routines. Enable and send iASL errors/warnings to an error logfile
3193(error.txt). Send all other iASL output to a logfile (compiler.txt).
3194Fixed
3195several extraneous "unrecognized operator" messages.
3196
3197----------------------------------------
319820 March 2012. Summary of changes for version 20120320:
3199
3200
32011) ACPICA Core Subsystem:
3202
3203Enhanced the sleep/wake interfaces to optionally execute the _GTS method
3204(Going To Sleep) and the _BFS method (Back From Sleep). Windows
3205apparently
3206does not execute these methods, and therefore these methods are often
3207untested. It has been seen on some systems where the execution of these
3208methods causes errors and also prevents the machine from entering S5. It
3209is
3210therefore suggested that host operating systems do not execute these
3211methods
3212by default. In the future, perhaps these methods can be optionally
3213executed
3214based on the age of the system and/or what is the newest version of
3215Windows
3216that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
3217and
3218AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
3219Ming.
3220
3221Fixed a problem where the length of the local/common FADT was set too
3222early.
3223The local FADT table length cannot be set to the common length until the
3224original length has been examined. There is code that checks the table
3225length
3226and sets various fields appropriately. This can affect older machines
3227with
3228early FADT versions. For example, this can cause inadvertent writes to
3229the
3230CST_CNT register. Julian Anastasov.
3231
3232Fixed a mapping issue related to a physical table override. Use the
3233deferred
3234mapping mechanism for tables loaded via the physical override OSL
3235interface.
3236This allows for early mapping before the virtual memory manager is
3237available.
3238Thomas Renninger, Bob Moore.
3239
3240Enhanced the automatic return-object repair code: Repair a common problem
3241with
3242predefined methods that are defined to return a variable-length Package
3243of
3244sub-objects. If there is only one sub-object, some BIOS ASL code
3245mistakenly
3246simply returns the single object instead of a Package with one sub-
3247object.
3248This new support will repair this error by wrapping a Package object
3249around
3250the original object, creating the correct and expected Package with one
3251sub-
3252object. Names that can be repaired in this manner include: _ALR, _CSD,
3253_HPX,
3254_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
3255939.
3256
3257Changed the exception code returned for invalid ACPI paths passed as
3258parameters to external interfaces such as AcpiEvaluateObject. Was
3259AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
3260
3261Example Code and Data Size: These are the sizes for the OS-independent
3262acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3263debug
3264version of the code includes the debug output trace mechanism and has a
3265much
3266larger code and data size.
3267
3268  Previous Release:
3269    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
3270    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3271  Current Release:
3272    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
3273    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3274
3275
32762) iASL Compiler/Disassembler and Tools:
3277
3278iASL: Added the infrastructure and initial implementation of a integrated
3279C-
3280like preprocessor. This will simplify BIOS development process by
3281eliminating
3282the need for a separate preprocessing step during builds. On Windows, it
3283also
3284eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
3285features including full #define() macro support are still under
3286development.
3287These preprocessor directives are supported:
3288    #define
3289    #elif
3290    #else
3291    #endif
3292    #error
3293    #if
3294    #ifdef
3295    #ifndef
3296    #include
3297    #pragma message
3298    #undef
3299    #warning
3300In addition, these new command line options are supported:
3301    -D <symbol> Define symbol for preprocessor use
3302    -li         Create preprocessed output file (*.i)
3303    -P          Preprocess only and create preprocessor output file (*.i)
3304
3305Table Compiler: Fixed a problem where the equals operator within an
3306expression
3307did not work properly.
3308
3309Updated iASL to use the current versions of Bison/Flex. Updated the
3310Windows
3311project file to invoke these tools from the standard location. ACPICA BZ
3312904.
3313Versions supported:
3314    Flex for Windows:  V2.5.4
3315    Bison for Windows: V2.4.1
3316
3317----------------------------------------
331815 February 2012. Summary of changes for version 20120215:
3319
3320
33211) ACPICA Core Subsystem:
3322
3323There have been some major changes to the sleep/wake support code, as
3324described below (a - e).
3325
3326a) The AcpiLeaveSleepState has been split into two interfaces, similar to
3327AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
3328AcpiLeaveSleepStatePrep. This allows the host to perform actions between
3329the
3330time the _BFS method is called and the _WAK method is called. NOTE: all
3331hosts
3332must update their wake/resume code or else sleep/wake will not work
3333properly.
3334Rafael Wysocki.
3335
3336b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
3337_WAK
3338method. Some machines require that the GPEs are enabled before the _WAK
3339method
3340is executed. Thomas Renninger.
3341
3342c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
3343bit.
3344Some BIOS code assumes that WAK_STS will be cleared on resume and use it
3345to
3346determine whether the system is rebooting or resuming. Matthew Garrett.
3347
3348d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
3349Sleep) to
3350match the ACPI specification requirement. Rafael Wysocki.
3351
3352e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
3353registers within the V5 FADT. This support adds two new files:
3354hardware/hwesleep.c implements the support for the new registers. Moved
3355all
3356sleep/wake external interfaces to hardware/hwxfsleep.c.
3357
3358
3359Added a new OSL interface for ACPI table overrides,
3360AcpiOsPhysicalTableOverride. This interface allows the host to override a
3361table via a physical address, instead of the logical address required by
3362AcpiOsTableOverride. This simplifies the host implementation. Initial
3363implementation by Thomas Renninger. The ACPICA implementation creates a
3364single
3365shared function for table overrides that attempts both a logical and a
3366physical override.
3367
3368Expanded the OSL memory read/write interfaces to 64-bit data
3369(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
3370transfer support for GAS register structures passed to AcpiRead and
3371AcpiWrite.
3372
3373Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
3374custom
3375build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
3376model.
3377See the ACPICA reference for details. ACPICA BZ 942. This option removes
3378about
337910% of the code and 5% of the static data, and the following hardware
3380ACPI
3381features become unavailable:
3382    PM Event and Control registers
3383    SCI interrupt (and handler)
3384    Fixed Events
3385    General Purpose Events (GPEs)
3386    Global Lock
3387    ACPI PM timer
3388    FACS table (Waking vectors and Global Lock)
3389
3390Updated the unix tarball directory structure to match the ACPICA git
3391source
3392tree. This ensures that the generic unix makefiles work properly (in
3393generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
3394867.
3395
3396Updated the return value of the _REV predefined method to integer value 5
3397to
3398reflect ACPI 5.0 support.
3399
3400Moved the external ACPI PM timer interface prototypes to the public
3401acpixf.h
3402file where they belong.
3403
3404Example Code and Data Size: These are the sizes for the OS-independent
3405acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3406debug
3407version of the code includes the debug output trace mechanism and has a
3408much
3409larger code and data size.
3410
3411  Previous Release:
3412    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
3413    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
3414  Current Release:
3415    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
3416    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
3417
3418
34192) iASL Compiler/Disassembler and Tools:
3420
3421Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
3422descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
3423incorrectly displayed.
3424
3425AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
3426specification.
3427
3428----------------------------------------
342911 January 2012. Summary of changes for version 20120111:
3430
3431
34321) ACPICA Core Subsystem:
3433
3434Implemented a new mechanism to allow host device drivers to check for
3435address
3436range conflicts with ACPI Operation Regions. Both SystemMemory and
3437SystemIO
3438address spaces are supported. A new external interface,
3439AcpiCheckAddressRange,
3440allows drivers to check an address range against the ACPI namespace. See
3441the
3442ACPICA reference for additional details. Adds one new file,
3443utilities/utaddress.c. Lin Ming, Bob Moore.
3444
3445Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
3446Control
3447and
3448Status registers, update the ACPI 5.0 flags, and update internal data
3449structures to handle an FADT larger than 256 bytes. The size of the ACPI
34505.0
3451FADT is 268 bytes.
3452
3453Updated all ACPICA copyrights and signons to 2012. Added the 2012
3454copyright to
3455all module headers and signons, including the standard Linux header. This
3456affects virtually every file in the ACPICA core subsystem, iASL compiler,
3457and
3458all ACPICA utilities.
3459
3460Example Code and Data Size: These are the sizes for the OS-independent
3461acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3462debug
3463version of the code includes the debug output trace mechanism and has a
3464much
3465larger code and data size.
3466
3467  Previous Release:
3468    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
3469    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
3470  Current Release:
3471    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
3472    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
3473
3474
34752) iASL Compiler/Disassembler and Tools:
3476
3477Disassembler: fixed a problem with the automatic resource tag generation
3478support. Fixes a problem where the resource tags are inadvertently not
3479constructed if the table being disassembled contains external references
3480to
3481control methods. Moved the actual construction of the tags to after the
3482final
3483namespace is constructed (after 2nd parse is invoked due to external
3484control
3485method references.) ACPICA BZ 941.
3486
3487Table Compiler: Make all "generic" operators caseless. These are the
3488operators
3489like UINT8, String, etc. Making these caseless improves ease-of-use.
3490ACPICA BZ
3491934.
3492
3493----------------------------------------
349423 November 2011. Summary of changes for version 20111123:
3495
34960) ACPI 5.0 Support:
3497
3498This release contains full support for the ACPI 5.0 specification, as
3499summarized below.
3500
3501Reduced Hardware Support:
3502-------------------------
3503
3504This support allows for ACPI systems without the usual ACPI hardware.
3505This
3506support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
3507will
3508not attempt to initialize or use any of the usual ACPI hardware. Note,
3509when
3510this flag is set, all of the following ACPI hardware is assumed to be not
3511present and is not initialized or accessed:
3512
3513    General Purpose Events (GPEs)
3514    Fixed Events (PM1a/PM1b and PM Control)
3515    Power Management Timer and Console Buttons (power/sleep)
3516    Real-time Clock Alarm
3517    Global Lock
3518    System Control Interrupt (SCI)
3519    The FACS is assumed to be non-existent
3520
3521ACPI Tables:
3522------------
3523
3524All new tables and updates to existing tables are fully supported in the
3525ACPICA headers (for use by device drivers), the disassembler, and the
3526iASL
3527Data Table Compiler. ACPI 5.0 defines these new tables:
3528
3529    BGRT        /* Boot Graphics Resource Table */
3530    DRTM        /* Dynamic Root of Trust for Measurement table */
3531    FPDT        /* Firmware Performance Data Table */
3532    GTDT        /* Generic Timer Description Table */
3533    MPST        /* Memory Power State Table */
3534    PCCT        /* Platform Communications Channel Table */
3535    PMTT        /* Platform Memory Topology Table */
3536    RASF        /* RAS Feature table */
3537
3538Operation Regions/SpaceIDs:
3539---------------------------
3540
3541All new operation regions are fully supported by the iASL compiler, the
3542disassembler, and the ACPICA runtime code (for dispatch to region
3543handlers.)
3544The new operation region Space IDs are:
3545
3546    GeneralPurposeIo
3547    GenericSerialBus
3548
3549Resource Descriptors:
3550---------------------
3551
3552All new ASL resource descriptors are fully supported by the iASL
3553compiler,
3554the
3555ASL/AML disassembler, and the ACPICA runtime Resource Manager code
3556(including
3557all new predefined resource tags). New descriptors are:
3558
3559    FixedDma
3560    GpioIo
3561    GpioInt
3562    I2cSerialBus
3563    SpiSerialBus
3564    UartSerialBus
3565
3566ASL/AML Operators, New and Modified:
3567------------------------------------
3568
3569One new operator is added, the Connection operator, which is used to
3570associate
3571a GeneralPurposeIo or GenericSerialBus resource descriptor with
3572individual
3573field objects within an operation region. Several new protocols are
3574associated
3575with the AccessAs operator. All are fully supported by the iASL compiler,
3576disassembler, and runtime ACPICA AML interpreter:
3577
3578    Connection                      // Declare Field Connection
3579attributes
3580    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
3581    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
3582Protocol
3583    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
3584    RawDataBuffer                       // Data type for Vendor Data
3585fields
3586
3587Predefined ASL/AML Objects:
3588---------------------------
3589
3590All new predefined objects/control-methods are supported by the iASL
3591compiler
3592and the ACPICA runtime validation/repair (arguments and return values.)
3593New
3594predefined names include the following:
3595
3596Standard Predefined Names (Objects or Control Methods):
3597    _AEI, _CLS, _CPC, _CWS, _DEP,
3598    _DLM, _EVT, _GCP, _CRT, _GWS,
3599    _HRV, _PRE, _PSE, _SRT, _SUB.
3600
3601Resource Tags (Names used to access individual fields within resource
3602descriptors):
3603    _DBT, _DPL, _DRS, _END, _FLC,
3604    _IOR, _LIN, _MOD, _PAR, _PHA,
3605    _PIN, _PPI, _POL, _RXL, _SLV,
3606    _SPE, _STB, _TXL, _VEN.
3607
3608ACPICA External Interfaces:
3609---------------------------
3610
3611Several new interfaces have been defined for use by ACPI-related device
3612drivers and other host OS services:
3613
3614AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
3615to
3616acquire and release AML mutexes that are defined in the DSDT/SSDT tables
3617provided by the BIOS. They are intended to be used in conjunction with
3618the
3619ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
3620mutual exclusion with the AML code/interpreter.
3621
3622AcpiGetEventResources: Returns the (formatted) resource descriptors as
3623defined
3624by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
3625provides
3626resource descriptors associated with hardware-reduced platform events,
3627similar
3628to the AcpiGetCurrentResources interface.
3629
3630Operation Region Handlers: For General Purpose IO and Generic Serial Bus
3631operation regions, information about the Connection() object and any
3632optional
3633length information is passed to the region handler within the Context
3634parameter.
3635
3636AcpiBufferToResource: This interface converts a raw AML buffer containing
3637a
3638resource template or resource descriptor to the ACPI_RESOURCE internal
3639format
3640suitable for use by device drivers. Can be used by an operation region
3641handler
3642to convert the Connection() buffer object into a ACPI_RESOURCE.
3643
3644Miscellaneous/Tools/TestSuites:
3645-------------------------------
3646
3647Support for extended _HID names (Four alpha characters instead of three).
3648Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
3649Support for ACPI 5.0 features in the ASLTS test suite.
3650Fully updated documentation (ACPICA and iASL reference documents.)
3651
3652ACPI Table Definition Language:
3653-------------------------------
3654
3655Support for this language was implemented and released as a subsystem of
3656the
3657iASL compiler in 2010. (See the iASL compiler User Guide.)
3658
3659
3660Non-ACPI 5.0 changes for this release:
3661--------------------------------------
3662
36631) ACPICA Core Subsystem:
3664
3665Fix a problem with operation region declarations where a failure can
3666occur
3667if
3668the region name and an argument that evaluates to an object (such as the
3669region address) are in different namespace scopes. Lin Ming, ACPICA BZ
3670937.
3671
3672Do not abort an ACPI table load if an invalid space ID is found within.
3673This
3674will be caught later if the offending method is executed. ACPICA BZ 925.
3675
3676Fixed an issue with the FFixedHW space ID where the ID was not always
3677recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
3678
3679Fixed a problem with the 32-bit generation of the unix-specific OSL
3680(osunixxf.c). Lin Ming, ACPICA BZ 936.
3681
3682Several changes made to enable generation with the GCC 4.6 compiler.
3683ACPICA BZ
3684935.
3685
3686New error messages: Unsupported I/O requests (not 8/16/32 bit), and
3687Index/Bank
3688field registers out-of-range.
3689
36902) iASL Compiler/Disassembler and Tools:
3691
3692iASL: Implemented the __PATH__ operator, which returns the full pathname
3693of
3694the current source file.
3695
3696AcpiHelp: Automatically display expanded keyword information for all ASL
3697operators.
3698
3699Debugger: Add "Template" command to disassemble/dump resource template
3700buffers.
3701
3702Added a new master script to generate and execute the ASLTS test suite.
3703Automatically handles 32- and 64-bit generation. See tests/aslts.sh
3704
3705iASL: Fix problem with listing generation during processing of the
3706Switch()
3707operator where AML listing was disabled until the entire Switch block was
3708completed.
3709
3710iASL: Improve support for semicolon statement terminators. Fix "invalid
3711character" message for some cases when the semicolon is used. Semicolons
3712are
3713now allowed after every <Term> grammar element. ACPICA BZ 927.
3714
3715iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
3716923.
3717
3718Disassembler: Fix problem with disassembly of the DataTableRegion
3719operator
3720where an inadvertent "Unhandled deferred opcode" message could be
3721generated.
3722
37233) Example Code and Data Size
3724
3725These are the sizes for the OS-independent acpica.lib produced by the
3726Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3727includes the debug output trace mechanism and has a much larger code and
3728data
3729size.
3730
3731  Previous Release:
3732    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3733    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3734  Current Release:
3735    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
3736    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
3737
3738----------------------------------------
373922 September 2011. Summary of changes for version 20110922:
3740
37410) ACPI 5.0 News:
3742
3743Support for ACPI 5.0 in ACPICA has been underway for several months and
3744will
3745be released at the same time that ACPI 5.0 is officially released.
3746
3747The ACPI 5.0 specification is on track for release in the next few
3748months.
3749
37501) ACPICA Core Subsystem:
3751
3752Fixed a problem where the maximum sleep time for the Sleep() operator was
3753intended to be limited to two seconds, but was inadvertently limited to
375420
3755seconds instead.
3756
3757Linux and Unix makefiles: Added header file dependencies to ensure
3758correct
3759generation of ACPICA core code and utilities. Also simplified the
3760makefiles
3761considerably through the use of the vpath variable to specify search
3762paths.
3763ACPICA BZ 924.
3764
37652) iASL Compiler/Disassembler and Tools:
3766
3767iASL: Implemented support to check the access length for all fields
3768created to
3769access named Resource Descriptor fields. For example, if a resource field
3770is
3771defined to be two bits, a warning is issued if a CreateXxxxField() is
3772used
3773with an incorrect bit length. This is implemented for all current
3774resource
3775descriptor names. ACPICA BZ 930.
3776
3777Disassembler: Fixed a byte ordering problem with the output of 24-bit and
377856-
3779bit integers.
3780
3781iASL: Fixed a couple of issues associated with variable-length package
3782objects. 1) properly handle constants like One, Ones, Zero -- do not make
3783a
3784VAR_PACKAGE when these are used as a package length. 2) Allow the
3785VAR_PACKAGE
3786opcode (in addition to PACKAGE) when validating object types for
3787predefined
3788names.
3789
3790iASL: Emit statistics for all output files (instead of just the ASL input
3791and
3792AML output). Includes listings, hex files, etc.
3793
3794iASL: Added -G option to the table compiler to allow the compilation of
3795custom
3796ACPI tables. The only part of a table that is required is the standard
379736-
3798byte
3799ACPI header.
3800
3801AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
3802headers),
3803which also adds correct 64-bit support. Also, now all output filenames
3804are
3805completely lower case.
3806
3807AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
3808loading table files. A warning is issued for any such tables. The only
3809exception is an FADT. This also fixes a possible fault when attempting to
3810load
3811non-AML tables. ACPICA BZ 932.
3812
3813AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
3814a
3815missing table terminator could cause a fault when using the -p option.
3816
3817AcpiSrc: Fixed a possible divide-by-zero fault when generating file
3818statistics.
3819
38203) Example Code and Data Size
3821
3822These are the sizes for the OS-independent acpica.lib produced by the
3823Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3824includes the debug output trace mechanism and has a much larger code and
3825data
3826size.
3827
3828  Previous Release (VC 9.0):
3829    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3830    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3831  Current Release (VC 9.0):
3832    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3833    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3834
3835
3836----------------------------------------
383723 June 2011. Summary of changes for version 20110623:
3838
38391) ACPI CA Core Subsystem:
3840
3841Updated the predefined name repair mechanism to not attempt repair of a
3842_TSS
3843return object if a _PSS object is present. We can only sort the _TSS
3844return
3845package if there is no _PSS within the same scope. This is because if
3846_PSS
3847is
3848present, the ACPI specification dictates that the _TSS Power Dissipation
3849field
3850is to be ignored, and therefore some BIOSs leave garbage values in the
3851_TSS
3852Power field(s). In this case, it is best to just return the _TSS package
3853as-
3854is. Reported by, and fixed with assistance from Fenghua Yu.
3855
3856Added an option to globally disable the control method return value
3857validation
3858and repair. This runtime option can be used to disable return value
3859repair
3860if
3861this is causing a problem on a particular machine. Also added an option
3862to
3863AcpiExec (-dr) to set this disable flag.
3864
3865All makefiles and project files: Major changes to improve generation of
3866ACPICA
3867tools. ACPICA BZ 912:
3868    Reduce default optimization levels to improve compatibility
3869    For Linux, add strict-aliasing=0 for gcc 4
3870    Cleanup and simplify use of command line defines
3871    Cleanup multithread library support
3872    Improve usage messages
3873
3874Linux-specific header: update handling of THREAD_ID and pthread. For the
387532-
3876bit case, improve casting to eliminate possible warnings, especially with
3877the
3878acpica tools.
3879
3880Example Code and Data Size: These are the sizes for the OS-independent
3881acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3882debug
3883version of the code includes the debug output trace mechanism and has a
3884much
3885larger code and data size.
3886
3887  Previous Release (VC 9.0):
3888    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3889    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3890  Current Release (VC 9.0):
3891    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3892    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3893
38942) iASL Compiler/Disassembler and Tools:
3895
3896With this release, a new utility named "acpihelp" has been added to the
3897ACPICA
3898package. This utility summarizes the ACPI specification chapters for the
3899ASL
3900and AML languages. It generates under Linux/Unix as well as Windows, and
3901provides the following functionality:
3902    Find/display ASL operator(s) -- with description and syntax.
3903    Find/display ASL keyword(s) -- with exact spelling and descriptions.
3904    Find/display ACPI predefined name(s) -- with description, number
3905        of arguments, and the return value data type.
3906    Find/display AML opcode name(s) -- with opcode, arguments, and
3907grammar.
3908    Decode/display AML opcode -- with opcode name, arguments, and
3909grammar.
3910
3911Service Layers: Make multi-thread support configurable. Conditionally
3912compile
3913the multi-thread support so that threading libraries will not be linked
3914if
3915not
3916necessary. The only tool that requires multi-thread support is AcpiExec.
3917
3918iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
3919of
3920Bison appear to want the interface to yyerror to be a const char * (or at
3921least this is a problem when generating iASL on some systems.) ACPICA BZ
3922923
3923Pierre Lejeune.
3924
3925Tools: Fix for systems where O_BINARY is not defined. Only used for
3926Windows
3927versions of the tools.
3928
3929----------------------------------------
393027 May 2011. Summary of changes for version 20110527:
3931
39321) ACPI CA Core Subsystem:
3933
3934ASL Load() operator: Reinstate most restrictions on the incoming ACPI
3935table
3936signature. Now, only allow SSDT, OEMx, and a null signature. History:
3937    1) Originally, we checked the table signature for "SSDT" or "PSDT".
3938       (PSDT is now obsolete.)
3939    2) We added support for OEMx tables, signature "OEM" plus a fourth
3940       "don't care" character.
3941    3) Valid tables were encountered with a null signature, so we just
3942       gave up on validating the signature, (05/2008).
3943    4) We encountered non-AML tables such as the MADT, which caused
3944       interpreter errors and kernel faults. So now, we once again allow
3945       only SSDT, OEMx, and now, also a null signature. (05/2011).
3946
3947Added the missing _TDL predefined name to the global name list in order
3948to
3949enable validation. Affects both the core ACPICA code and the iASL
3950compiler.
3951
3952Example Code and Data Size: These are the sizes for the OS-independent
3953acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3954debug
3955version of the code includes the debug output trace mechanism and has a
3956much
3957larger code and data size.
3958
3959  Previous Release (VC 9.0):
3960    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3961    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3962  Current Release (VC 9.0):
3963    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3964    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3965
39662) iASL Compiler/Disassembler and Tools:
3967
3968Debugger/AcpiExec: Implemented support for "complex" method arguments on
3969the
3970debugger command line. This adds support beyond simple integers --
3971including
3972Strings, Buffers, and Packages. Includes support for nested packages.
3973Increased the default command line buffer size to accommodate these
3974arguments.
3975See the ACPICA reference for details and syntax. ACPICA BZ 917.
3976
3977Debugger/AcpiExec: Implemented support for "default" method arguments for
3978the
3979Execute/Debug command. Now, the debugger will always invoke a control
3980method
3981with the required number of arguments -- even if the command line
3982specifies
3983none or insufficient arguments. It uses default integer values for any
3984missing
3985arguments. Also fixes a bug where only six method arguments maximum were
3986supported instead of the required seven.
3987
3988Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
3989and
3990also return status in order to prevent buffer overruns. See the ACPICA
3991reference for details and syntax. ACPICA BZ 921
3992
3993iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
3994makefiles to simplify support for the two different but similar parser
3995generators, bison and yacc.
3996
3997Updated the generic unix makefile for gcc 4. The default gcc version is
3998now
3999expected to be 4 or greater, since options specific to gcc 4 are used.
4000
4001----------------------------------------
400213 April 2011. Summary of changes for version 20110413:
4003
40041) ACPI CA Core Subsystem:
4005
4006Implemented support to execute a so-called "orphan" _REG method under the
4007EC
4008device. This change will force the execution of a _REG method underneath
4009the
4010EC
4011device even if there is no corresponding operation region of type
4012EmbeddedControl. Fixes a problem seen on some machines and apparently is
4013compatible with Windows behavior. ACPICA BZ 875.
4014
4015Added more predefined methods that are eligible for automatic NULL
4016package
4017element removal. This change adds another group of predefined names to
4018the
4019list
4020of names that can be repaired by having NULL package elements dynamically
4021removed. This group are those methods that return a single variable-
4022length
4023package containing simple data types such as integers, buffers, strings.
4024This
4025includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
4026_PSL,
4027_Sx,
4028and _TZD. ACPICA BZ 914.
4029
4030Split and segregated all internal global lock functions to a new file,
4031evglock.c.
4032
4033Updated internal address SpaceID for DataTable regions. Moved this
4034internal
4035space
4036id in preparation for ACPI 5.0 changes that will include some new space
4037IDs.
4038This
4039change should not affect user/host code.
4040
4041Example Code and Data Size: These are the sizes for the OS-independent
4042acpica.lib
4043produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
4044version of
4045the code includes the debug output trace mechanism and has a much larger
4046code
4047and
4048data size.
4049
4050  Previous Release (VC 9.0):
4051    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
4052    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
4053  Current Release (VC 9.0):
4054    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
4055    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
4056
40572) iASL Compiler/Disassembler and Tools:
4058
4059iASL/DTC: Major update for new grammar features. Allow generic data types
4060in
4061custom ACPI tables. Field names are now optional. Any line can be split
4062to
4063multiple lines using the continuation char (\). Large buffers now use
4064line-
4065continuation character(s) and no colon on the continuation lines. See the
4066grammar
4067update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
4068Moore.
4069
4070iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
4071statements.
4072Since the parser stuffs a "zero" as the return value for these statements
4073(due
4074to
4075the underlying AML grammar), they were seen as "return with value" by the
4076iASL
4077semantic checking. They are now seen correctly as "null" return
4078statements.
4079
4080iASL: Check if a_REG declaration has a corresponding Operation Region.
4081Adds a
4082check for each _REG to ensure that there is in fact a corresponding
4083operation
4084region declaration in the same scope. If not, the _REG method is not very
4085useful
4086since it probably won't be executed. ACPICA BZ 915.
4087
4088iASL/DTC: Finish support for expression evaluation. Added a new
4089expression
4090parser
4091that implements c-style operator precedence and parenthesization. ACPICA
4092bugzilla
4093908.
4094
4095Disassembler/DTC: Remove support for () and <> style comments in data
4096tables.
4097Now
4098that DTC has full expression support, we don't want to have comment
4099strings
4100that
4101start with a parentheses or a less-than symbol. Now, only the standard /*
4102and
4103//
4104comments are supported, as well as the bracket [] comments.
4105
4106AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
4107"unusual"
4108headers in the acpidump file. Update the header validation to support
4109these
4110tables. Problem introduced in previous AcpiXtract version in the change
4111to
4112support "wrong checksum" error messages emitted by acpidump utility.
4113
4114iASL: Add a * option to generate all template files (as a synonym for
4115ALL)
4116as
4117in
4118"iasl -T *" or "iasl -T ALL".
4119
4120iASL/DTC: Do not abort compiler on fatal errors. We do not want to
4121completely
4122abort the compiler on "fatal" errors, simply should abort the current
4123compile.
4124This allows multiple compiles with a single (possibly wildcard) compiler
4125invocation.
4126
4127----------------------------------------
412816 March 2011. Summary of changes for version 20110316:
4129
41301) ACPI CA Core Subsystem:
4131
4132Fixed a problem caused by a _PRW method appearing at the namespace root
4133scope
4134during the setup of wake GPEs. A fault could occur if a _PRW directly
4135under
4136the
4137root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
4138
4139Implemented support for "spurious" Global Lock interrupts. On some
4140systems, a
4141global lock interrupt can occur without the pending flag being set. Upon
4142a
4143GL
4144interrupt, we now ensure that a thread is actually waiting for the lock
4145before
4146signaling GL availability. Rafael Wysocki, Bob Moore.
4147
4148Example Code and Data Size: These are the sizes for the OS-independent
4149acpica.lib
4150produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
4151version of
4152the code includes the debug output trace mechanism and has a much larger
4153code
4154and
4155data size.
4156
4157  Previous Release (VC 9.0):
4158    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4159    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4160  Current Release (VC 9.0):
4161    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
4162    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
4163
41642) iASL Compiler/Disassembler and Tools:
4165
4166Implemented full support for the "SLIC" ACPI table. Includes support in
4167the
4168header files, disassembler, table compiler, and template generator. Bob
4169Moore,
4170Lin Ming.
4171
4172AcpiXtract: Correctly handle embedded comments and messages from
4173AcpiDump.
4174Apparently some or all versions of acpidump will occasionally emit a
4175comment
4176like
4177"Wrong checksum", etc., into the dump file. This was causing problems for
4178AcpiXtract. ACPICA BZ 905.
4179
4180iASL: Fix the Linux makefile by removing an inadvertent double file
4181inclusion.
4182ACPICA BZ 913.
4183
4184AcpiExec: Update installation of operation region handlers. Install one
4185handler
4186for a user-defined address space. This is used by the ASL test suite
4187(ASLTS).
4188
4189----------------------------------------
419011 February 2011. Summary of changes for version 20110211:
4191
41921) ACPI CA Core Subsystem:
4193
4194Added a mechanism to defer _REG methods for some early-installed
4195handlers.
4196Most user handlers should be installed before call to
4197AcpiEnableSubsystem.
4198However, Event handlers and region handlers should be installed after
4199AcpiInitializeObjects. Override handlers for the "default" regions should
4200be
4201installed early, however. This change executes all _REG methods for the
4202default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
4203chicken/egg issues between them. ACPICA BZ 848.
4204
4205Implemented an optimization for GPE detection. This optimization will
4206simply
4207ignore GPE registers that contain no enabled GPEs -- there is no need to
4208read the register since this information is available internally. This
4209becomes more important on machines with a large GPE space. ACPICA
4210bugzilla
4211884. Lin Ming. Suggestion from Joe Liu.
4212
4213Removed all use of the highly unreliable FADT revision field. The
4214revision
4215number in the FADT has been found to be completely unreliable and cannot
4216be
4217trusted. Only the actual table length can be used to infer the version.
4218This
4219change updates the ACPICA core and the disassembler so that both no
4220longer
4221even look at the FADT version and instead depend solely upon the FADT
4222length.
4223
4224Fix an unresolved name issue for the no-debug and no-error-message source
4225generation cases. The _AcpiModuleName was left undefined in these cases,
4226but
4227it is actually needed as a parameter to some interfaces. Define
4228_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
4229
4230Split several large files (makefiles and project files updated)
4231  utglobal.c   -> utdecode.c
4232  dbcomds.c    -> dbmethod.c dbnames.c
4233  dsopcode.c   -> dsargs.c dscontrol.c
4234  dsload.c     -> dsload2.c
4235  aslanalyze.c -> aslbtypes.c aslwalks.c
4236
4237Example Code and Data Size: These are the sizes for the OS-independent
4238acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4239debug version of the code includes the debug output trace mechanism and
4240has
4241a much larger code and data size.
4242
4243  Previous Release (VC 9.0):
4244    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4245    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4246  Current Release (VC 9.0):
4247    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4248    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4249
42502) iASL Compiler/Disassembler and Tools:
4251
4252iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
4253These are useful C-style macros with the standard definitions. ACPICA
4254bugzilla 898.
4255
4256iASL/DTC: Added support for integer expressions and labels. Support for
4257full
4258expressions for all integer fields in all ACPI tables. Support for labels
4259in
4260"generic" portions of tables such as UEFI. See the iASL reference manual.
4261
4262Debugger: Added a command to display the status of global handlers. The
4263"handlers" command will display op region, fixed event, and miscellaneous
4264global handlers. installation status -- and for op regions, whether
4265default
4266or user-installed handler will be used.
4267
4268iASL: Warn if reserved method incorrectly returns a value. Many
4269predefined
4270names are defined such that they do not return a value. If implemented as
4271a
4272method, issue a warning if such a name explicitly returns a value. ACPICA
4273Bugzilla 855.
4274
4275iASL: Added detection of GPE method name conflicts. Detects a conflict
4276where
4277there are two GPE methods of the form _Lxy and _Exy in the same scope.
4278(For
4279example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
4280
4281iASL/DTC: Fixed a couple input scanner issues with comments and line
4282numbers. Comment remover could get confused and miss a comment ending.
4283Fixed
4284a problem with line counter maintenance.
4285
4286iASL/DTC: Reduced the severity of some errors from fatal to error. There
4287is
4288no need to abort on simple errors within a field definition.
4289
4290Debugger: Simplified the output of the help command. All help output now
4291in
4292a single screen, instead of help subcommands. ACPICA Bugzilla 897.
4293
4294----------------------------------------
429512 January 2011. Summary of changes for version 20110112:
4296
42971) ACPI CA Core Subsystem:
4298
4299Fixed a race condition between method execution and namespace walks that
4300can
4301possibly cause a fault. The problem was apparently introduced in version
430220100528 as a result of a performance optimization that reduces the
4303number
4304of
4305namespace walks upon method exit by using the delete_namespace_subtree
4306function instead of the delete_namespace_by_owner function used
4307previously.
4308Bug is a missing namespace lock in the delete_namespace_subtree function.
4309dana.myers@oracle.com
4310
4311Fixed several issues and a possible fault with the automatic "serialized"
4312method support. History: This support changes a method to "serialized" on
4313the
4314fly if the method generates an AE_ALREADY_EXISTS error, indicating the
4315possibility that it cannot handle reentrancy. This fix repairs a couple
4316of
4317issues seen in the field, especially on machines with many cores:
4318
4319    1) Delete method children only upon the exit of the last thread,
4320       so as to not delete objects out from under other running threads
4321      (and possibly causing a fault.)
4322    2) Set the "serialized" bit for the method only upon the exit of the
4323       Last thread, so as to not cause deadlock when running threads
4324       attempt to exit.
4325    3) Cleanup the use of the AML "MethodFlags" and internal method flags
4326       so that there is no longer any confusion between the two.
4327
4328    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
4329
4330Debugger: Now lock the namespace for duration of a namespace dump.
4331Prevents
4332issues if the namespace is changing dynamically underneath the debugger.
4333Especially affects temporary namespace nodes, since the debugger displays
4334these also.
4335
4336Updated the ordering of include files. The ACPICA headers should appear
4337before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
4338set
4339any necessary compiler-specific defines, etc. Affects the ACPI-related
4340tools
4341and utilities.
4342
4343Updated all ACPICA copyrights and signons to 2011. Added the 2011
4344copyright
4345to all module headers and signons, including the Linux header. This
4346affects
4347virtually every file in the ACPICA core subsystem, iASL compiler, and all
4348utilities.
4349
4350Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
4351project files for VC++ 6.0 are now obsolete. New project files can be
4352found
4353under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
4354details.
4355
4356Example Code and Data Size: These are the sizes for the OS-independent
4357acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4358debug version of the code includes the debug output trace mechanism and
4359has a
4360much larger code and data size.
4361
4362  Previous Release (VC 6.0):
4363    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
4364    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
4365  Current Release (VC 9.0):
4366    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
4367    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
4368
43692) iASL Compiler/Disassembler and Tools:
4370
4371iASL: Added generic data types to the Data Table compiler. Add "generic"
4372data
4373types such as UINT32, String, Unicode, etc., to simplify the generation
4374of
4375platform-defined tables such as UEFI. Lin Ming.
4376
4377iASL: Added listing support for the Data Table Compiler. Adds listing
4378support
4379(-l) to display actual binary output for each line of input code.
4380
4381----------------------------------------
438209 December 2010. Summary of changes for version 20101209:
4383
43841) ACPI CA Core Subsystem:
4385
4386Completed the major overhaul of the GPE support code that was begun in
4387July
43882010. Major features include: removal of _PRW execution in ACPICA (host
4389executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
4390changes to existing interfaces, simplification of GPE handler operation,
4391and
4392a handful of new interfaces:
4393
4394    AcpiUpdateAllGpes
4395    AcpiFinishGpe
4396    AcpiSetupGpeForWake
4397    AcpiSetGpeWakeMask
4398    One new file, evxfgpe.c to consolidate all external GPE interfaces.
4399
4400See the ACPICA Programmer Reference for full details and programming
4401information. See the new section 4.4 "General Purpose Event (GPE)
4402Support"
4403for a full overview, and section 8.7 "ACPI General Purpose Event
4404Management"
4405for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
4406Ming,
4407Bob Moore, Rafael Wysocki.
4408
4409Implemented a new GPE feature for Windows compatibility, the "Implicit
4410Wake
4411GPE Notify". This feature will automatically issue a Notify(2) on a
4412device
4413when a Wake GPE is received if there is no corresponding GPE method or
4414handler. ACPICA BZ 870.
4415
4416Fixed a problem with the Scope() operator during table parse and load
4417phase.
4418During load phase (table load or method execution), the scope operator
4419should
4420not enter the target into the namespace. Instead, it should open a new
4421scope
4422at the target location. Linux BZ 19462, ACPICA BZ 882.
4423
4424Example Code and Data Size: These are the sizes for the OS-independent
4425acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4426debug version of the code includes the debug output trace mechanism and
4427has a
4428much larger code and data size.
4429
4430  Previous Release:
4431    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
4432    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
4433  Current Release:
4434    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4435    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4436
44372) iASL Compiler/Disassembler and Tools:
4438
4439iASL: Relax the alphanumeric restriction on _CID strings. These strings
4440are
4441"bus-specific" per the ACPI specification, and therefore any characters
4442are
4443acceptable. The only checks that can be performed are for a null string
4444and
4445perhaps for a leading asterisk. ACPICA BZ 886.
4446
4447iASL: Fixed a problem where a syntax error that caused a premature EOF
4448condition on the source file emitted a very confusing error message. The
4449premature EOF is now detected correctly. ACPICA BZ 891.
4450
4451Disassembler: Decode the AccessSize within a Generic Address Structure
4452(byte
4453access, word access, etc.) Note, this field does not allow arbitrary bit
4454access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
4455
4456New: AcpiNames utility - Example namespace dump utility. Shows an example
4457of
4458ACPICA configuration for a minimal namespace dump utility. Uses table and
4459namespace managers, but no AML interpreter. Does not add any
4460functionality
4461over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
4462partition and configure ACPICA. ACPICA BZ 883.
4463
4464AML Debugger: Increased the debugger buffer size for method return
4465objects.
4466Was 4K, increased to 16K. Also enhanced error messages for debugger
4467method
4468execution, including the buffer overflow case.
4469
4470----------------------------------------
447113 October 2010. Summary of changes for version 20101013:
4472
44731) ACPI CA Core Subsystem:
4474
4475Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
4476now
4477clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
4478HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
4479
4480Changed the type of the predefined namespace object _TZ from ThermalZone
4481to
4482Device. This was found to be confusing to the host software that
4483processes
4484the various thermal zones, since _TZ is not really a ThermalZone.
4485However,
4486a
4487Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
4488Zhang.
4489
4490Added Windows Vista SP2 to the list of supported _OSI strings. The actual
4491string is "Windows 2006 SP2".
4492
4493Eliminated duplicate code in AcpiUtExecute* functions. Now that the
4494nsrepair
4495code automatically repairs _HID-related strings, this type of code is no
4496longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
4497878.
4498
4499Example Code and Data Size: These are the sizes for the OS-independent
4500acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4501debug version of the code includes the debug output trace mechanism and
4502has a
4503much larger code and data size.
4504
4505  Previous Release:
4506    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4507    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4508  Current Release:
4509    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4510    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4511
45122) iASL Compiler/Disassembler and Tools:
4513
4514iASL: Implemented additional compile-time validation for _HID strings.
4515The
4516non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
4517length
4518of
4519the string must be exactly seven or eight characters. For both _HID and
4520_CID
4521strings, all characters must be alphanumeric. ACPICA BZ 874.
4522
4523iASL: Allow certain "null" resource descriptors. Some BIOS code creates
4524descriptors that are mostly or all zeros, with the expectation that they
4525will
4526be filled in at runtime. iASL now allows this as long as there is a
4527"resource
4528tag" (name) associated with the descriptor, which gives the ASL a handle
4529needed to modify the descriptor. ACPICA BZ 873.
4530
4531Added single-thread support to the generic Unix application OSL.
4532Primarily
4533for iASL support, this change removes the use of semaphores in the
4534single-
4535threaded ACPICA tools/applications - increasing performance. The
4536_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
4537option. ACPICA BZ 879.
4538
4539AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
4540support
4541for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
4542
4543iASL: Moved all compiler messages to a new file, aslmessages.h.
4544
4545----------------------------------------
454615 September 2010. Summary of changes for version 20100915:
4547
45481) ACPI CA Core Subsystem:
4549
4550Removed the AcpiOsDerivePciId OSL interface. The various host
4551implementations
4552of this function were not OS-dependent and are now obsolete and can be
4553removed from all host OSLs. This function has been replaced by
4554AcpiHwDerivePciId, which is now part of the ACPICA core code.
4555AcpiHwDerivePciId has been implemented without recursion. Adds one new
4556module, hwpci.c. ACPICA BZ 857.
4557
4558Implemented a dynamic repair for _HID and _CID strings. The following
4559problems are now repaired at runtime: 1) Remove a leading asterisk in the
4560string, and 2) the entire string is uppercased. Both repairs are in
4561accordance with the ACPI specification and will simplify host driver
4562code.
4563ACPICA BZ 871.
4564
4565The ACPI_THREAD_ID type is no longer configurable, internally it is now
4566always UINT64. This simplifies the ACPICA code, especially any printf
4567output.
4568UINT64 is the only common data type for all thread_id types across all
4569operating systems. It is now up to the host OSL to cast the native
4570thread_id
4571type to UINT64 before returning the value to ACPICA (via
4572AcpiOsGetThreadId).
4573Lin Ming, Bob Moore.
4574
4575Added the ACPI_INLINE type to enhance the ACPICA configuration. The
4576"inline"
4577keyword is not standard across compilers, and this type allows inline to
4578be
4579configured on a per-compiler basis. Lin Ming.
4580
4581Made the system global AcpiGbl_SystemAwakeAndRunning publically
4582available.
4583Added an extern for this boolean in acpixf.h. Some hosts utilize this
4584value
4585during suspend/restore operations. ACPICA BZ 869.
4586
4587All code that implements error/warning messages with the "ACPI:" prefix
4588has
4589been moved to a new module, utxferror.c.
4590
4591The UINT64_OVERLAY was moved to utmath.c, which is the only module where
4592it
4593is used. ACPICA BZ 829. Lin Ming, Bob Moore.
4594
4595Example Code and Data Size: These are the sizes for the OS-independent
4596acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4597debug version of the code includes the debug output trace mechanism and
4598has a
4599much larger code and data size.
4600
4601  Previous Release:
4602    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4603    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4604  Current Release:
4605    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4606    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4607
46082) iASL Compiler/Disassembler and Tools:
4609
4610iASL/Disassembler: Write ACPI errors to stderr instead of the output
4611file.
4612This keeps the output files free of random error messages that may
4613originate
4614from within the namespace/interpreter code. Used this opportunity to
4615merge
4616all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
4617866. Lin Ming, Bob Moore.
4618
4619Tools: update some printfs for ansi warnings on size_t. Handle width
4620change
4621of size_t on 32-bit versus 64-bit generations. Lin Ming.
4622
4623----------------------------------------
462406 August 2010. Summary of changes for version 20100806:
4625
46261) ACPI CA Core Subsystem:
4627
4628Designed and implemented a new host interface to the _OSI support code.
4629This
4630will allow the host to dynamically add or remove multiple _OSI strings,
4631as
4632well as install an optional handler that is called for each _OSI
4633invocation.
4634Also added a new AML debugger command, 'osi' to display and modify the
4635global
4636_OSI string table, and test support in the AcpiExec utility. See the
4637ACPICA
4638reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
4639New Functions:
4640    AcpiInstallInterface - Add an _OSI string.
4641    AcpiRemoveInterface - Delete an _OSI string.
4642    AcpiInstallInterfaceHandler - Install optional _OSI handler.
4643Obsolete Functions:
4644    AcpiOsValidateInterface - no longer used.
4645New Files:
4646    source/components/utilities/utosi.c
4647
4648Re-introduced the support to enable multi-byte transfers for Embedded
4649Controller (EC) operation regions. A reported problem was found to be a
4650bug
4651in the host OS, not in the multi-byte support. Previously, the maximum
4652data
4653size passed to the EC operation region handler was a single byte. There
4654are
4655often EC Fields larger than one byte that need to be transferred, and it
4656is
4657useful for the EC driver to lock these as a single transaction. This
4658change
4659enables single transfers larger than 8 bits. This effectively changes the
4660access to the EC space from ByteAcc to AnyAcc, and will probably require
4661changes to the host OS Embedded Controller driver to enable 16/32/64/256-
4662bit
4663transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
4664
4665Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
4666prototype in acpiosxf.h had the output value pointer as a (void *).
4667It should be a (UINT64 *). This may affect some host OSL code.
4668
4669Fixed a couple problems with the recently modified Linux makefiles for
4670iASL
4671and AcpiExec. These new makefiles place the generated object files in the
4672local directory so that there can be no collisions between the files that
4673are
4674shared between them that are compiled with different options.
4675
4676Example Code and Data Size: These are the sizes for the OS-independent
4677acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4678debug version of the code includes the debug output trace mechanism and
4679has a
4680much larger code and data size.
4681
4682  Previous Release:
4683    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4684    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
4685  Current Release:
4686    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4687    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4688
46892) iASL Compiler/Disassembler and Tools:
4690
4691iASL/Disassembler: Added a new option (-da, "disassemble all") to load
4692the
4693namespace from and disassemble an entire group of AML files. Useful for
4694loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
4695and
4696disassembling with one simple command. ACPICA BZ 865. Lin Ming.
4697
4698iASL: Allow multiple invocations of -e option. This change allows
4699multiple
4700uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
4701834.
4702Lin Ming.
4703
4704----------------------------------------
470502 July 2010. Summary of changes for version 20100702:
4706
47071) ACPI CA Core Subsystem:
4708
4709Implemented several updates to the recently added GPE reference count
4710support. The model for "wake" GPEs is changing to give the host OS
4711complete
4712control of these GPEs. Eventually, the ACPICA core will not execute any
4713_PRW
4714methods, since the host already must execute them. Also, additional
4715changes
4716were made to help ensure that the reference counts are kept in proper
4717synchronization with reality. Rafael J. Wysocki.
4718
47191) Ensure that GPEs are not enabled twice during initialization.
47202) Ensure that GPE enable masks stay in sync with the reference count.
47213) Do not inadvertently enable GPEs when writing GPE registers.
47224) Remove the internal wake reference counter and add new AcpiGpeWakeup
4723interface. This interface will set or clear individual GPEs for wakeup.
47245) Remove GpeType argument from AcpiEnable and AcpiDisable. These
4725interfaces
4726are now used for "runtime" GPEs only.
4727
4728Changed the behavior of the GPE install/remove handler interfaces. The
4729GPE
4730is
4731no longer disabled during this process, as it was found to cause problems
4732on
4733some machines. Rafael J. Wysocki.
4734
4735Reverted a change introduced in version 20100528 to enable Embedded
4736Controller multi-byte transfers. This change was found to cause problems
4737with
4738Index Fields and possibly Bank Fields. It will be reintroduced when these
4739problems have been resolved.
4740
4741Fixed a problem with references to Alias objects within Package Objects.
4742A
4743reference to an Alias within the definition of a Package was not always
4744resolved properly. Aliases to objects like Processors, Thermal zones,
4745etc.
4746were resolved to the actual object instead of a reference to the object
4747as
4748it
4749should be. Package objects are only allowed to contain integer, string,
4750buffer, package, and reference objects. Redhat bugzilla 608648.
4751
4752Example Code and Data Size: These are the sizes for the OS-independent
4753acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4754debug version of the code includes the debug output trace mechanism and
4755has a
4756much larger code and data size.
4757
4758  Previous Release:
4759    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4760    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
4761  Current Release:
4762    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4763    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
4764
47652) iASL Compiler/Disassembler and Tools:
4766
4767iASL: Implemented a new compiler subsystem to allow definition and
4768compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
4769These
4770are called "ACPI Data Tables", and the new compiler is the "Data Table
4771Compiler". This compiler is intended to simplify the existing error-prone
4772process of creating these tables for the BIOS, as well as allowing the
4773disassembly, modification, recompilation, and override of existing ACPI
4774data
4775tables. See the iASL User Guide for detailed information.
4776
4777iASL: Implemented a new Template Generator option in support of the new
4778Data
4779Table Compiler. This option will create examples of all known ACPI tables
4780that can be used as the basis for table development. See the iASL
4781documentation and the -T option.
4782
4783Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
4784Descriptor Table).
4785
4786Updated the Linux makefiles for iASL and AcpiExec to place the generated
4787object files in the local directory so that there can be no collisions
4788between the shared files between them that are generated with different
4789options.
4790
4791Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
4792Use
4793the #define __APPLE__ to enable this support.
4794
4795----------------------------------------
479628 May 2010. Summary of changes for version 20100528:
4797
4798Note: The ACPI 4.0a specification was released on April 5, 2010 and is
4799available at www.acpi.info. This is primarily an errata release.
4800
48011) ACPI CA Core Subsystem:
4802
4803Undefined ACPI tables: We are looking for the definitions for the
4804following
4805ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
4806
4807Implemented support to enable multi-byte transfers for Embedded
4808Controller
4809(EC) operation regions. Previously, the maximum data size passed to the
4810EC
4811operation region handler was a single byte. There are often EC Fields
4812larger
4813than one byte that need to be transferred, and it is useful for the EC
4814driver
4815to lock these as a single transaction. This change enables single
4816transfers
4817larger than 8 bits. This effectively changes the access to the EC space
4818from
4819ByteAcc to AnyAcc, and will probably require changes to the host OS
4820Embedded
4821Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
4822bit
4823transfers. Alexey Starikovskiy, Lin Ming
4824
4825Implemented a performance enhancement for namespace search and access.
4826This
4827change enhances the performance of namespace searches and walks by adding
4828a
4829backpointer to the parent in each namespace node. On large namespaces,
4830this
4831change can improve overall ACPI performance by up to 9X. Adding a pointer
4832to
4833each namespace node increases the overall size of the internal namespace
4834by
4835about 5%, since each namespace entry usually consists of both a namespace
4836node and an ACPI operand object. However, this is the first growth of the
4837namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
4838
4839Implemented a performance optimization that reduces the number of
4840namespace
4841walks. On control method exit, only walk the namespace if the method is
4842known
4843to have created namespace objects outside of its local scope. Previously,
4844the
4845entire namespace was traversed on each control method exit. This change
4846can
4847improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
4848Moore.
4849
4850Added support to truncate I/O addresses to 16 bits for Windows
4851compatibility.
4852Some ASL code has been seen in the field that inadvertently has bits set
4853above bit 15. This feature is optional and is enabled if the BIOS
4854requests
4855any Windows OSI strings. It can also be enabled by the host OS. Matthew
4856Garrett, Bob Moore.
4857
4858Added support to limit the maximum time for the ASL Sleep() operator. To
4859prevent accidental deep sleeps, limit the maximum time that Sleep() will
4860actually sleep. Configurable, the default maximum is two seconds. ACPICA
4861bugzilla 854.
4862
4863Added run-time validation support for the _WDG and_WED Microsoft
4864predefined
4865methods. These objects are defined by "Windows Instrumentation", and are
4866not
4867part of the ACPI spec. ACPICA BZ 860.
4868
4869Expanded all statistic counters used during namespace and device
4870initialization from 16 to 32 bits in order to support very large
4871namespaces.
4872
4873Replaced all instances of %d in printf format specifiers with %u since
4874nearly
4875all integers in ACPICA are unsigned.
4876
4877Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
4878returned
4879as AE_NO_HANDLER.
4880
4881Example Code and Data Size: These are the sizes for the OS-independent
4882acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4883debug version of the code includes the debug output trace mechanism and
4884has a
4885much larger code and data size.
4886
4887  Previous Release:
4888    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4889    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4890  Current Release:
4891    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4892    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
4893
48942) iASL Compiler/Disassembler and Tools:
4895
4896iASL: Added compiler support for the _WDG and_WED Microsoft predefined
4897methods. These objects are defined by "Windows Instrumentation", and are
4898not
4899part of the ACPI spec. ACPICA BZ 860.
4900
4901AcpiExec: added option to disable the memory tracking mechanism. The -dt
4902option will disable the tracking mechanism, which improves performance
4903considerably.
4904
4905AcpiExec: Restructured the command line options into -d (disable) and -e
4906(enable) options.
4907
4908----------------------------------------
490928 April 2010. Summary of changes for version 20100428:
4910
49111) ACPI CA Core Subsystem:
4912
4913Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
4914including FADT-based and GPE Block Devices, execute any _PRW methods in
4915the
4916new table, and process any _Lxx/_Exx GPE methods in the new table. Any
4917runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
4918immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
4919Devices. Provides compatibility with other ACPI implementations. Two new
4920files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
4921Moore.
4922
4923Fixed a regression introduced in version 20100331 within the table
4924manager
4925where initial table loading could fail. This was introduced in the fix
4926for
4927AcpiReallocateRootTable. Also, renamed some of fields in the table
4928manager
4929data structures to clarify their meaning and use.
4930
4931Fixed a possible allocation overrun during internal object copy in
4932AcpiUtCopySimpleObject. The original code did not correctly handle the
4933case
4934where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
4935847.
4936
4937Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
4938possible access beyond end-of-allocation. Also, now fully validate
4939descriptor
4940(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
4941
4942Example Code and Data Size: These are the sizes for the OS-independent
4943acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4944debug version of the code includes the debug output trace mechanism and
4945has a
4946much larger code and data size.
4947
4948  Previous Release:
4949    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4950    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4951  Current Release:
4952    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4953    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4954
49552) iASL Compiler/Disassembler and Tools:
4956
4957iASL: Implemented Min/Max/Len/Gran validation for address resource
4958descriptors. This change implements validation for the address fields
4959that
4960are common to all address-type resource descriptors. These checks are
4961implemented: Checks for valid Min/Max, length within the Min/Max window,
4962valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
4963per
4964table 6-40 in the ACPI 4.0a specification. Also split the large
4965aslrestype1.c
4966and aslrestype2.c files into five new files. ACPICA BZ 840.
4967
4968iASL: Added support for the _Wxx predefined names. This support was
4969missing
4970and these names were not recognized by the compiler as valid predefined
4971names. ACPICA BZ 851.
4972
4973iASL: Added an error for all predefined names that are defined to return
4974no
4975value and thus must be implemented as Control Methods. These include all
4976of
4977the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
4978names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
4979
4980iASL: Implemented the -ts option to emit hex AML data in ASL format, as
4981an
4982ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
4983be
4984dynamically loaded via the Load() operator. Also cleaned up output for
4985the
4986-
4987ta and -tc options. ACPICA BZ 853.
4988
4989Tests: Added a new file with examples of extended iASL error checking.
4990Demonstrates the advanced error checking ability of the iASL compiler.
4991Available at tests/misc/badcode.asl.
4992
4993----------------------------------------
499431 March 2010. Summary of changes for version 20100331:
4995
49961) ACPI CA Core Subsystem:
4997
4998Completed a major update for the GPE support in order to improve support
4999for
5000shared GPEs and to simplify both host OS and ACPICA code. Added a
5001reference
5002count mechanism to support shared GPEs that require multiple device
5003drivers.
5004Several external interfaces have changed. One external interface has been
5005removed. One new external interface was added. Most of the GPE external
5006interfaces now use the GPE spinlock instead of the events mutex (and the
5007Flags parameter for many GPE interfaces has been removed.) See the
5008updated
5009ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
5010Rafael
5011Wysocki. ACPICA BZ 831.
5012
5013Changed:
5014    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
5015Removed:
5016    AcpiSetGpeType
5017New:
5018    AcpiSetGpe
5019
5020Implemented write support for DataTable operation regions. These regions
5021are
5022defined via the DataTableRegion() operator. Previously, only read support
5023was
5024implemented. The ACPI specification allows DataTableRegions to be
5025read/write,
5026however.
5027
5028Implemented a new subsystem option to force a copy of the DSDT to local
5029memory. Optionally copy the entire DSDT to local memory (instead of
5030simply
5031mapping it.) There are some (albeit very rare) BIOSs that corrupt or
5032replace
5033the original DSDT, creating the need for this option. Default is FALSE,
5034do
5035not copy the DSDT.
5036
5037Implemented detection of a corrupted or replaced DSDT. This change adds
5038support to detect a DSDT that has been corrupted and/or replaced from
5039outside
5040the OS (by firmware). This is typically catastrophic for the system, but
5041has
5042been seen on some machines. Once this problem has been detected, the DSDT
5043copy option can be enabled via system configuration. Lin Ming, Bob Moore.
5044
5045Fixed two problems with AcpiReallocateRootTable during the root table
5046copy.
5047When copying the root table to the new allocation, the length used was
5048incorrect. The new size was used instead of the current table size,
5049meaning
5050too much data was copied. Also, the count of available slots for ACPI
5051tables
5052was not set correctly. Alexey Starikovskiy, Bob Moore.
5053
5054Example Code and Data Size: These are the sizes for the OS-independent
5055acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5056debug version of the code includes the debug output trace mechanism and
5057has a
5058much larger code and data size.
5059
5060  Previous Release:
5061    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
5062    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
5063  Current Release:
5064    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
5065    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
5066
50672) iASL Compiler/Disassembler and Tools:
5068
5069iASL: Implement limited typechecking for values returned from predefined
5070control methods. The type of any returned static (unnamed) object is now
5071validated. For example, Return(1). ACPICA BZ 786.
5072
5073iASL: Fixed a predefined name object verification regression. Fixes a
5074problem
5075introduced in version 20100304. An error is incorrectly generated if a
5076predefined name is declared as a static named object with a value defined
5077using the keywords "Zero", "One", or "Ones". Lin Ming.
5078
5079iASL: Added Windows 7 support for the -g option (get local ACPI tables)
5080by
5081reducing the requested registry access rights. ACPICA BZ 842.
5082
5083Disassembler: fixed a possible fault when generating External()
5084statements.
5085Introduced in commit ae7d6fd: Properly handle externals with parent-
5086prefix
5087(carat). Fixes a string length allocation calculation. Lin Ming.
5088
5089----------------------------------------
509004 March 2010. Summary of changes for version 20100304:
5091
50921) ACPI CA Core Subsystem:
5093
5094Fixed a possible problem with the AML Mutex handling function
5095AcpiExReleaseMutex where the function could fault under the very rare
5096condition when the interpreter has blocked, the interpreter lock is
5097released,
5098the interpreter is then reentered via the same thread, and attempts to
5099acquire an AML mutex that was previously acquired. FreeBSD report 140979.
5100Lin
5101Ming.
5102
5103Implemented additional configuration support for the AML "Debug Object".
5104Output from the debug object can now be enabled via a global variable,
5105AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
5106debugging.
5107This debug output is now available in the release version of ACPICA
5108instead
5109of just the debug version. Also, the entire debug output module can now
5110be
5111configured out of the ACPICA build if desired. One new file added,
5112executer/exdebug.c. Lin Ming, Bob Moore.
5113
5114Added header support for the ACPI MCHI table (Management Controller Host
5115Interface Table). This table was added in ACPI 4.0, but the defining
5116document
5117has only recently become available.
5118
5119Standardized output of integer values for ACPICA warnings/errors. Always
5120use
51210x prefix for hex output, always use %u for unsigned integer decimal
5122output.
5123Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
5124400
5125invocations.) These invocations were converted from the original
5126ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
5127
5128Example Code and Data Size: These are the sizes for the OS-independent
5129acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5130debug version of the code includes the debug output trace mechanism and
5131has a
5132much larger code and data size.
5133
5134  Previous Release:
5135    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
5136    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
5137  Current Release:
5138    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
5139    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
5140
51412) iASL Compiler/Disassembler and Tools:
5142
5143iASL: Implemented typechecking support for static (non-control method)
5144predefined named objects that are declared with the Name() operator. For
5145example, the type of this object is now validated to be of type Integer:
5146Name(_BBN, 1). This change migrates the compiler to using the core
5147predefined
5148name table instead of maintaining a local version. Added a new file,
5149aslpredef.c. ACPICA BZ 832.
5150
5151Disassembler: Added support for the ACPI 4.0 MCHI table.
5152
5153----------------------------------------
515421 January 2010. Summary of changes for version 20100121:
5155
51561) ACPI CA Core Subsystem:
5157
5158Added the 2010 copyright to all module headers and signons. This affects
5159virtually every file in the ACPICA core subsystem, the iASL compiler, the
5160tools/utilities, and the test suites.
5161
5162Implemented a change to the AcpiGetDevices interface to eliminate
5163unnecessary
5164invocations of the _STA method. In the case where a specific _HID is
5165requested, do not run _STA until a _HID match is found. This eliminates
5166potentially dozens of _STA calls during a search for a particular
5167device/HID,
5168which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
5169
5170Implemented an additional repair for predefined method return values.
5171Attempt
5172to repair unexpected NULL elements within returned Package objects.
5173Create
5174an
5175Integer of value zero, a NULL String, or a zero-length Buffer as
5176appropriate.
5177ACPICA BZ 818. Lin Ming, Bob Moore.
5178
5179Removed the obsolete ACPI_INTEGER data type. This type was introduced as
5180the
5181code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
5182(with
518364-bit AML integers). It is now obsolete and this change removes it from
5184the
5185ACPICA code base, replaced by UINT64. The original typedef has been
5186retained
5187for now for compatibility with existing device driver code. ACPICA BZ
5188824.
5189
5190Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
5191in
5192the parse tree object.
5193
5194Added additional warning options for the gcc-4 generation. Updated the
5195source
5196accordingly. This includes some code restructuring to eliminate
5197unreachable
5198code, elimination of some gotos, elimination of unused return values,
5199some
5200additional casting, and removal of redundant declarations.
5201
5202Example Code and Data Size: These are the sizes for the OS-independent
5203acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5204debug version of the code includes the debug output trace mechanism and
5205has a
5206much larger code and data size.
5207
5208  Previous Release:
5209    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
5210    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
5211  Current Release:
5212    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
5213    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
5214
52152) iASL Compiler/Disassembler and Tools:
5216
5217No functional changes for this release.
5218
5219----------------------------------------
522014 December 2009. Summary of changes for version 20091214:
5221
52221) ACPI CA Core Subsystem:
5223
5224Enhanced automatic data type conversions for predefined name repairs.
5225This
5226change expands the automatic repairs/conversions for predefined name
5227return
5228values to make Integers, Strings, and Buffers fully interchangeable.
5229Also,
5230a
5231Buffer can be converted to a Package of Integers if necessary. The
5232nsrepair.c
5233module was completely restructured. Lin Ming, Bob Moore.
5234
5235Implemented automatic removal of null package elements during predefined
5236name
5237repairs. This change will automatically remove embedded and trailing NULL
5238package elements from returned package objects that are defined to
5239contain
5240a
5241variable number of sub-packages. The driver is then presented with a
5242package
5243with no null elements to deal with. ACPICA BZ 819.
5244
5245Implemented a repair for the predefined _FDE and _GTM names. The expected
5246return value for both names is a Buffer of 5 DWORDs. This repair fixes
5247two
5248possible problems (both seen in the field), where a package of integers
5249is
5250returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
5251Kim.
5252
5253Implemented additional module-level code support. This change will
5254properly
5255execute module-level code that is not at the root of the namespace (under
5256a
5257Device object, etc.). Now executes the code within the current scope
5258instead
5259of the root. ACPICA BZ 762. Lin Ming.
5260
5261Fixed possible mutex acquisition errors when running _REG methods. Fixes
5262a
5263problem where mutex errors can occur when running a _REG method that is
5264in
5265the same scope as a method-defined operation region or an operation
5266region
5267under a module-level IF block. This type of code is rare, so the problem
5268has
5269not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
5270
5271Fixed a possible memory leak during module-level code execution. An
5272object
5273could be leaked for each block of executed module-level code if the
5274interpreter slack mode is enabled This change deletes any implicitly
5275returned
5276object from the module-level code block. Lin Ming.
5277
5278Removed messages for successful predefined repair(s). The repair
5279mechanism
5280was considered too wordy. Now, messages are only unconditionally emitted
5281if
5282the return object cannot be repaired. Existing messages for successful
5283repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
5284827.
5285
5286Example Code and Data Size: These are the sizes for the OS-independent
5287acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5288debug version of the code includes the debug output trace mechanism and
5289has a
5290much larger code and data size.
5291
5292  Previous Release:
5293    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
5294    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
5295  Current Release:
5296    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
5297    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
5298
52992) iASL Compiler/Disassembler and Tools:
5300
5301iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
5302files
5303were no longer automatically removed at the termination of the compile.
5304
5305acpiexec: Implemented the -f option to specify default region fill value.
5306This option specifies the value used to initialize buffers that simulate
5307operation regions. Default value is zero. Useful for debugging problems
5308that
5309depend on a specific initial value for a region or field.
5310
5311----------------------------------------
531212 November 2009. Summary of changes for version 20091112:
5313
53141) ACPI CA Core Subsystem:
5315
5316Implemented a post-order callback to AcpiWalkNamespace. The existing
5317interface only has a pre-order callback. This change adds an additional
5318parameter for a post-order callback which will be more useful for bus
5319scans.
5320ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
5321
5322Modified the behavior of the operation region memory mapping cache for
5323SystemMemory. Ensure that the memory mappings created for operation
5324regions
5325do not cross 4K page boundaries. Crossing a page boundary while mapping
5326regions can cause kernel warnings on some hosts if the pages have
5327different
5328attributes. Such regions are probably BIOS bugs, and this is the
5329workaround.
5330Linux BZ 14445. Lin Ming.
5331
5332Implemented an automatic repair for predefined methods that must return
5333sorted lists. This change will repair (by sorting) packages returned by
5334_ALR,
5335_PSS, and _TSS. Drivers can now assume that the packages are correctly
5336sorted
5337and do not contain NULL package elements. Adds one new file,
5338namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
5339
5340Fixed a possible fault during predefined name validation if a return
5341Package
5342object contains NULL elements. Also adds a warning if a NULL element is
5343followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
5344may
5345include repair or removal of all such NULL elements where possible.
5346
5347Implemented additional module-level executable AML code support. This
5348change
5349will execute module-level code that is not at the root of the namespace
5350(under a Device object, etc.) at table load time. Module-level executable
5351AML
5352code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
5353
5354Implemented a new internal function to create Integer objects. This
5355function
5356simplifies miscellaneous object creation code. ACPICA BZ 823.
5357
5358Reduced the severity of predefined repair messages, Warning to Info.
5359Since
5360the object was successfully repaired, a warning is too severe. Reduced to
5361an
5362info message for now. These messages may eventually be changed to debug-
5363only.
5364ACPICA BZ 812.
5365
5366Example Code and Data Size: These are the sizes for the OS-independent
5367acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5368debug version of the code includes the debug output trace mechanism and
5369has a
5370much larger code and data size.
5371
5372  Previous Release:
5373    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
5374    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
5375  Current Release:
5376    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
5377    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
5378
53792) iASL Compiler/Disassembler and Tools:
5380
5381iASL: Implemented Switch() with While(1) so that Break works correctly.
5382This
5383change correctly implements the Switch operator with a surrounding
5384While(1)
5385so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
5386
5387iASL: Added a message if a package initializer list is shorter than
5388package
5389length. Adds a new remark for a Package() declaration if an initializer
5390list
5391exists, but is shorter than the declared length of the package. Although
5392technically legal, this is probably a coding error and it is seen in the
5393field. ACPICA BZ 815. Lin Ming, Bob Moore.
5394
5395iASL: Fixed a problem where the compiler could fault after the maximum
5396number
5397of errors was reached (200).
5398
5399acpixtract: Fixed a possible warning for pointer cast if the compiler
5400warning
5401level set very high.
5402
5403----------------------------------------
540413 October 2009. Summary of changes for version 20091013:
5405
54061) ACPI CA Core Subsystem:
5407
5408Fixed a problem where an Operation Region _REG method could be executed
5409more
5410than once. If a custom address space handler is installed by the host
5411before
5412the "initialize operation regions" phase of the ACPICA initialization,
5413any
5414_REG methods for that address space could be executed twice. This change
5415fixes the problem. ACPICA BZ 427. Lin Ming.
5416
5417Fixed a possible memory leak for the Scope() ASL operator. When the exact
5418invocation of "Scope(\)" is executed (change scope to root), one internal
5419operand object was leaked. Lin Ming.
5420
5421Implemented a run-time repair for the _MAT predefined method. If the _MAT
5422return value is defined as a Field object in the AML, and the field
5423size is less than or equal to the default width of an integer (32 or
542464),_MAT
5425can incorrectly return an Integer instead of a Buffer. ACPICA now
5426automatically repairs this problem. ACPICA BZ 810.
5427
5428Implemented a run-time repair for the _BIF and _BIX predefined methods.
5429The
5430"OEM Information" field is often incorrectly returned as an Integer with
5431value zero if the field is not supported by the platform. This is due to
5432an
5433ambiguity in the ACPI specification. The field should always be a string.
5434ACPICA now automatically repairs this problem by returning a NULL string
5435within the returned Package. ACPICA BZ 807.
5436
5437Example Code and Data Size: These are the sizes for the OS-independent
5438acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5439debug version of the code includes the debug output trace mechanism and
5440has a
5441much larger code and data size.
5442
5443  Previous Release:
5444    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
5445    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
5446  Current Release:
5447    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
5448    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
5449
54502) iASL Compiler/Disassembler and Tools:
5451
5452Disassembler: Fixed a problem where references to external symbols that
5453contained one or more parent-prefixes (carats) were not handled
5454correctly,
5455possibly causing a fault. ACPICA BZ 806. Lin Ming.
5456
5457Disassembler: Restructured the code so that all functions that handle
5458external symbols are in a single module. One new file is added,
5459common/dmextern.c.
5460
5461AML Debugger: Added a max count argument for the Batch command (which
5462executes multiple predefined methods within the namespace.)
5463
5464iASL: Updated the compiler documentation (User Reference.) Available at
5465http://www.acpica.org/documentation/. ACPICA BZ 750.
5466
5467AcpiXtract: Updated for Lint and other formatting changes. Close all open
5468files.
5469
5470----------------------------------------
547103 September 2009. Summary of changes for version 20090903:
5472
54731) ACPI CA Core Subsystem:
5474
5475For Windows Vista compatibility, added the automatic execution of an _INI
5476method located at the namespace root (\_INI). This method is executed at
5477table load time. This support is in addition to the automatic execution
5478of
5479\_SB._INI. Lin Ming.
5480
5481Fixed a possible memory leak in the interpreter for AML package objects
5482if
5483the package initializer list is longer than the defined size of the
5484package.
5485This apparently can only happen if the BIOS changes the package size on
5486the
5487fly (seen in a _PSS object), as ASL compilers do not allow this. The
5488interpreter will truncate the package to the defined size (and issue an
5489error
5490message), but previously could leave the extra objects undeleted if they
5491were
5492pre-created during the argument processing (such is the case if the
5493package
5494consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
5495
5496Fixed a problem seen when a Buffer or String is stored to itself via ASL.
5497This has been reported in the field. Previously, ACPICA would zero out
5498the
5499buffer/string. Now, the operation is treated as a noop. Provides Windows
5500compatibility. ACPICA BZ 803. Lin Ming.
5501
5502Removed an extraneous error message for ASL constructs of the form
5503Store(LocalX,LocalX) when LocalX is uninitialized. These curious
5504statements
5505are seen in many BIOSs and are once again treated as NOOPs and no error
5506is
5507emitted when they are encountered. ACPICA BZ 785.
5508
5509Fixed an extraneous warning message if a _DSM reserved method returns a
5510Package object. _DSM can return any type of object, so validation on the
5511return type cannot be performed. ACPICA BZ 802.
5512
5513Example Code and Data Size: These are the sizes for the OS-independent
5514acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5515debug version of the code includes the debug output trace mechanism and
5516has a
5517much larger code and data size.
5518
5519  Previous Release:
5520    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
5521    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
5522  Current Release:
5523    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
5524    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
5525
55262) iASL Compiler/Disassembler and Tools:
5527
5528iASL: Fixed a problem with the use of the Alias operator and Resource
5529Templates. The correct alias is now constructed and no error is emitted.
5530ACPICA BZ 738.
5531
5532iASL: Implemented the -I option to specify additional search directories
5533for
5534include files. Allows multiple additional search paths for include files.
5535Directories are searched in the order specified on the command line
5536(after
5537the local directory is searched.) ACPICA BZ 800.
5538
5539iASL: Fixed a problem where the full pathname for include files was not
5540emitted for warnings/errors. This caused the IDE support to not work
5541properly. ACPICA BZ 765.
5542
5543iASL: Implemented the -@ option to specify a Windows-style response file
5544containing additional command line options. ACPICA BZ 801.
5545
5546AcpiExec: Added support to load multiple AML files simultaneously (such
5547as
5548a
5549DSDT and multiple SSDTs). Also added support for wildcards within the AML
5550pathname. These features allow all machine tables to be easily loaded and
5551debugged together. ACPICA BZ 804.
5552
5553Disassembler: Added missing support for disassembly of HEST table Error
5554Bank
5555subtables.
5556
5557----------------------------------------
555830 July 2009. Summary of changes for version 20090730:
5559
5560The ACPI 4.0 implementation for ACPICA is complete with this release.
5561
55621) ACPI CA Core Subsystem:
5563
5564ACPI 4.0: Added header file support for all new and changed ACPI tables.
5565Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
5566new
5567for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
5568BERT,
5569EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
5570There
5571have been some ACPI 4.0 changes to other existing tables. Split the large
5572actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
5573
5574ACPI 4.0: Implemented predefined name validation for all new names. There
5575are
557631 new names in ACPI 4.0. The predefined validation module was split into
5577two
5578files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
5579
5580Implemented support for so-called "module-level executable code". This is
5581executable AML code that exists outside of any control method and is
5582intended
5583to be executed at table load time. Although illegal since ACPI 2.0, this
5584type
5585of code still exists and is apparently still being created. Blocks of
5586this
5587code are now detected and executed as intended. Currently, the code
5588blocks
5589must exist under either an If, Else, or While construct; these are the
5590typical cases seen in the field. ACPICA BZ 762. Lin Ming.
5591
5592Implemented an automatic dynamic repair for predefined names that return
5593nested Package objects. This applies to predefined names that are defined
5594to
5595return a variable-length Package of sub-packages. If the number of sub-
5596packages is one, BIOS code is occasionally seen that creates a simple
5597single
5598package with no sub-packages. This code attempts to fix the problem by
5599wrapping a new package object around the existing package. These methods
5600can
5601be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
5602BZ
5603790.
5604
5605Fixed a regression introduced in 20090625 for the AcpiGetDevices
5606interface.
5607The _HID/_CID matching was broken and no longer matched IDs correctly.
5608ACPICA
5609BZ 793.
5610
5611Fixed a problem with AcpiReset where the reset would silently fail if the
5612register was one of the protected I/O ports. AcpiReset now bypasses the
5613port
5614validation mechanism. This may eventually be driven into the
5615AcpiRead/Write
5616interfaces.
5617
5618Fixed a regression related to the recent update of the AcpiRead/Write
5619interfaces. A sleep/suspend could fail if the optional PM2 Control
5620register
5621does not exist during an attempt to write the Bus Master Arbitration bit.
5622(However, some hosts already delete the code that writes this bit, and
5623the
5624code may in fact be obsolete at this date.) ACPICA BZ 799.
5625
5626Fixed a problem where AcpiTerminate could fault if inadvertently called
5627twice
5628in succession. ACPICA BZ 795.
5629
5630Example Code and Data Size: These are the sizes for the OS-independent
5631acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5632debug version of the code includes the debug output trace mechanism and
5633has a
5634much larger code and data size.
5635
5636  Previous Release:
5637    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5638    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
5639  Current Release:
5640    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
5641    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
5642
56432) iASL Compiler/Disassembler and Tools:
5644
5645ACPI 4.0: Implemented disassembler support for all new ACPI tables and
5646changes to existing tables. ACPICA BZ 775.
5647
5648----------------------------------------
564925 June 2009. Summary of changes for version 20090625:
5650
5651The ACPI 4.0 Specification was released on June 16 and is available at
5652www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
5653continue for the next few releases.
5654
56551) ACPI CA Core Subsystem:
5656
5657ACPI 4.0: Implemented interpreter support for the IPMI operation region
5658address space. Includes support for bi-directional data buffers and an
5659IPMI
5660address space handler (to be installed by an IPMI device driver.) ACPICA
5661BZ
5662773. Lin Ming.
5663
5664ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
5665Includes
5666support in both the header files and the disassembler.
5667
5668Completed a major update for the AcpiGetObjectInfo external interface.
5669Changes include:
5670 - Support for variable, unlimited length HID, UID, and CID strings.
5671 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
5672etc.)
5673 - Call the _SxW power methods on behalf of a device object.
5674 - Determine if a device is a PCI root bridge.
5675 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
5676These changes will require an update to all callers of this interface.
5677See
5678the updated ACPICA Programmer Reference for details. One new source file
5679has
5680been added - utilities/utids.c. ACPICA BZ 368, 780.
5681
5682Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
5683transfers. The Value parameter has been extended from 32 bits to 64 bits
5684in
5685order to support new ACPI 4.0 tables. These changes will require an
5686update
5687to
5688all callers of these interfaces. See the ACPICA Programmer Reference for
5689details. ACPICA BZ 768.
5690
5691Fixed several problems with AcpiAttachData. The handler was not invoked
5692when
5693the host node was deleted. The data sub-object was not automatically
5694deleted
5695when the host node was deleted. The interface to the handler had an
5696unused
5697parameter, this was removed. ACPICA BZ 778.
5698
5699Enhanced the function that dumps ACPI table headers. All non-printable
5700characters in the string fields are now replaced with '?' (Signature,
5701OemId,
5702OemTableId, and CompilerId.) ACPI tables with non-printable characters in
5703these fields are occasionally seen in the field. ACPICA BZ 788.
5704
5705Fixed a problem with predefined method repair code where the code that
5706attempts to repair/convert an object of incorrect type is only executed
5707on
5708the first time the predefined method is called. The mechanism that
5709disables
5710warnings on subsequent calls was interfering with the repair mechanism.
5711ACPICA BZ 781.
5712
5713Fixed a possible memory leak in the predefined validation/repair code
5714when
5715a
5716buffer is automatically converted to an expected string object.
5717
5718Removed obsolete 16-bit files from the distribution and from the current
5719git
5720tree head. ACPICA BZ 776.
5721
5722Example Code and Data Size: These are the sizes for the OS-independent
5723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5724debug version of the code includes the debug output trace mechanism and
5725has a
5726much larger code and data size.
5727
5728  Previous Release:
5729    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5730    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5731  Current Release:
5732    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5733    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
5734
57352) iASL Compiler/Disassembler and Tools:
5736
5737ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
5738operation region keyword. ACPICA BZ 771, 772. Lin Ming.
5739
5740ACPI 4.0: iASL - implemented compile-time validation support for all new
5741predefined names and control methods (31 total). ACPICA BZ 769.
5742
5743----------------------------------------
574421 May 2009. Summary of changes for version 20090521:
5745
57461) ACPI CA Core Subsystem:
5747
5748Disabled the preservation of the SCI enable bit in the PM1 control
5749register.
5750The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
5751to
5752be
5753a "preserved" bit - "OSPM always preserves this bit position", section
57544.7.3.2.1. However, some machines fail if this bit is in fact preserved
5755because the bit needs to be explicitly set by the OS as a workaround. No
5756machines fail if the bit is not preserved. Therefore, ACPICA no longer
5757attempts to preserve this bit.
5758
5759Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
5760incorrectly formed _PRT package could cause a fault. Added validation to
5761ensure that each package element is actually a sub-package.
5762
5763Implemented a new interface to install or override a single control
5764method,
5765AcpiInstallMethod. This interface is useful when debugging in order to
5766repair
5767an existing method or to install a missing method without having to
5768override
5769the entire ACPI table. See the ACPICA Programmer Reference for use and
5770examples. Lin Ming, Bob Moore.
5771
5772Fixed several reference count issues with the DdbHandle object that is
5773created from a Load or LoadTable operator. Prevent premature deletion of
5774the
5775object. Also, mark the object as invalid once the table has been
5776unloaded.
5777This is needed because the handle itself may not be deleted after the
5778table
5779unload, depending on whether it has been stored in a named object by the
5780caller. Lin Ming.
5781
5782Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
5783mutexes of the same sync level are acquired but then not released in
5784strict
5785opposite order, the internally maintained Current Sync Level becomes
5786confused
5787and can cause subsequent execution errors. ACPICA BZ 471.
5788
5789Changed the allowable release order for ASL mutex objects. The ACPI 4.0
5790specification has been changed to make the SyncLevel for mutex objects
5791more
5792useful. When releasing a mutex, the SyncLevel of the mutex must now be
5793the
5794same as the current sync level. This makes more sense than the previous
5795rule
5796(SyncLevel less than or equal). This change updates the code to match the
5797specification.
5798
5799Fixed a problem with the local version of the AcpiOsPurgeCache function.
5800The
5801(local) cache must be locked during all cache object deletions. Andrew
5802Baumann.
5803
5804Updated the Load operator to use operation region interfaces. This
5805replaces
5806direct memory mapping with region access calls. Now, all region accesses
5807go
5808through the installed region handler as they should.
5809
5810Simplified and optimized the NsGetNextNode function. Reduced parameter
5811count
5812and reduced code for this frequently used function.
5813
5814Example Code and Data Size: These are the sizes for the OS-independent
5815acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5816debug version of the code includes the debug output trace mechanism and
5817has a
5818much larger code and data size.
5819
5820  Previous Release:
5821    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5822    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5823  Current Release:
5824    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5825    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5826
58272) iASL Compiler/Disassembler and Tools:
5828
5829Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
5830problems
5831with sub-table disassembly and handling invalid sub-tables. Attempt
5832recovery
5833after an invalid sub-table ID.
5834
5835----------------------------------------
583622 April 2009. Summary of changes for version 20090422:
5837
58381) ACPI CA Core Subsystem:
5839
5840Fixed a compatibility issue with the recently released I/O port
5841protection
5842mechanism. For windows compatibility, 1) On a port protection violation,
5843simply ignore the request and do not return an exception (allow the
5844control
5845method to continue execution.) 2) If only part of the request overlaps a
5846protected port, read/write the individual ports that are not protected.
5847Linux
5848BZ 13036. Lin Ming
5849
5850Enhanced the execution of the ASL/AML BreakPoint operator so that it
5851actually
5852breaks into the AML debugger if the debugger is present. This matches the
5853ACPI-defined behavior.
5854
5855Fixed several possible warnings related to the use of the configurable
5856ACPI_THREAD_ID. This type can now be configured as either an integer or a
5857pointer with no warnings. Also fixes several warnings in printf-like
5858statements for the 64-bit build when the type is configured as a pointer.
5859ACPICA BZ 766, 767.
5860
5861Fixed a number of possible warnings when compiling with gcc 4+ (depending
5862on
5863warning options.) Examples include printf formats, aliasing, unused
5864globals,
5865missing prototypes, missing switch default statements, use of non-ANSI
5866library functions, use of non-ANSI constructs. See generate/unix/Makefile
5867for
5868a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
5869
5870Example Code and Data Size: These are the sizes for the OS-independent
5871acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5872debug version of the code includes the debug output trace mechanism and
5873has a
5874much larger code and data size.
5875
5876  Previous Release:
5877    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5878    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5879  Current Release:
5880    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5881    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5882
58832) iASL Compiler/Disassembler and Tools:
5884
5885iASL: Fixed a generation warning from Bison 2.3 and fixed several
5886warnings
5887on
5888the 64-bit build.
5889
5890iASL: Fixed a problem where the Unix/Linux versions of the compiler could
5891not
5892correctly digest Windows/DOS formatted files (with CR/LF).
5893
5894iASL: Added a new option for "quiet mode" (-va) that produces only the
5895compilation summary, not individual errors and warnings. Useful for large
5896batch compilations.
5897
5898AcpiExec: Implemented a new option (-z) to enable a forced
5899semaphore/mutex
5900timeout that can be used to detect hang conditions during execution of
5901AML
5902code (includes both internal semaphores and AML-defined mutexes and
5903events.)
5904
5905Added new makefiles for the generation of acpica in a generic unix-like
5906environment. These makefiles are intended to generate the acpica tools
5907and
5908utilities from the original acpica git source tree structure.
5909
5910Test Suites: Updated and cleaned up the documentation files. Updated the
5911copyrights to 2009, affecting all source files. Use the new version of
5912iASL
5913with quiet mode. Increased the number of available semaphores in the
5914Windows
5915OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
5916added
5917an alternate implementation of the semaphore timeout to allow aslts to
5918execute fully on Cygwin.
5919
5920----------------------------------------
592120 March 2009. Summary of changes for version 20090320:
5922
59231) ACPI CA Core Subsystem:
5924
5925Fixed a possible race condition between AcpiWalkNamespace and dynamic
5926table
5927unloads. Added a reader/writer locking mechanism to allow multiple
5928concurrent
5929namespace walks (readers), but block a dynamic table unload until it can
5930gain
5931exclusive write access to the namespace. This fixes a problem where a
5932table
5933unload could (possibly catastrophically) delete the portion of the
5934namespace
5935that is currently being examined by a walk. Adds a new file, utlock.c,
5936that
5937implements the reader/writer lock mechanism. ACPICA BZ 749.
5938
5939Fixed a regression introduced in version 20090220 where a change to the
5940FADT
5941handling could cause the ACPICA subsystem to access non-existent I/O
5942ports.
5943
5944Modified the handling of FADT register and table (FACS/DSDT) addresses.
5945The
5946FADT can contain both 32-bit and 64-bit versions of these addresses.
5947Previously, the 64-bit versions were favored, meaning that if both 32 and
594864
5949versions were valid, but not equal, the 64-bit version was used. This was
5950found to cause some machines to fail. Now, in this case, the 32-bit
5951version
5952is used instead. This now matches the Windows behavior.
5953
5954Implemented a new mechanism to protect certain I/O ports. Provides
5955Microsoft
5956compatibility and protects the standard PC I/O ports from access via AML
5957code. Adds a new file, hwvalid.c
5958
5959Fixed a possible extraneous warning message from the FADT support. The
5960message warns of a 32/64 length mismatch between the legacy and GAS
5961definitions for a register.
5962
5963Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
5964is
5965made obsolete by the port protection mechanism above. It was previously
5966used
5967to validate the entire address range of an operation region, which could
5968be
5969incorrect if the range included illegal ports, but fields within the
5970operation region did not actually access those ports. Validation is now
5971performed on a per-field basis instead of the entire region.
5972
5973Modified the handling of the PM1 Status Register ignored bit (bit 11.)
5974Ignored bits must be "preserved" according to the ACPI spec. Usually,
5975this
5976means a read/modify/write when writing to the register. However, for
5977status
5978registers, writing a one means clear the event. Writing a zero means
5979preserve
5980the event (do not clear.) This behavior is clarified in the ACPI 4.0
5981spec,
5982and the ACPICA code now simply always writes a zero to the ignored bit.
5983
5984Modified the handling of ignored bits for the PM1 A/B Control Registers.
5985As
5986per the ACPI specification, for the control registers, preserve
5987(read/modify/write) all bits that are defined as either reserved or
5988ignored.
5989
5990Updated the handling of write-only bits in the PM1 A/B Control Registers.
5991When reading the register, zero the write-only bits as per the ACPI spec.
5992ACPICA BZ 443. Lin Ming.
5993
5994Removed "Linux" from the list of supported _OSI strings. Linux no longer
5995wants to reply true to this request. The Windows strings are the only
5996paths
5997through the AML that are tested and known to work properly.
5998
5999  Previous Release:
6000    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
6001    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
6002  Current Release:
6003    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
6004    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
6005
60062) iASL Compiler/Disassembler and Tools:
6007
6008Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
6009and
6010aetables.c
6011
6012----------------------------------------
601320 February 2009. Summary of changes for version 20090220:
6014
60151) ACPI CA Core Subsystem:
6016
6017Optimized the ACPI register locking. Removed locking for reads from the
6018ACPI
6019bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
6020is
6021not required when reading the single-bit registers. The
6022AcpiGetRegisterUnlocked function is no longer needed and has been
6023removed.
6024This will improve performance for reads on these registers. ACPICA BZ
6025760.
6026
6027Fixed the parameter validation for AcpiRead/Write. Now return
6028AE_BAD_PARAMETER if the input register pointer is null, and
6029AE_BAD_ADDRESS
6030if
6031the register has an address of zero. Previously, these cases simply
6032returned
6033AE_OK. For optional registers such as PM1B status/enable/control, the
6034caller
6035should check for a valid register address before calling. ACPICA BZ 748.
6036
6037Renamed the external ACPI bit register access functions. Renamed
6038AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
6039functions. The new names are AcpiReadBitRegister and
6040AcpiWriteBitRegister.
6041Also, restructured the code for these functions by simplifying the code
6042path
6043and condensing duplicate code to reduce code size.
6044
6045Added new functions to transparently handle the possibly split PM1 A/B
6046registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
6047functions
6048now handle the split registers for PM1 Status, Enable, and Control.
6049ACPICA
6050BZ
6051746.
6052
6053Added a function to handle the PM1 control registers,
6054AcpiHwWritePm1Control.
6055This function writes both of the PM1 control registers (A/B). These
6056registers
6057are different than the PM1 A/B status and enable registers in that
6058different
6059values can be written to the A/B registers. Most notably, the SLP_TYP
6060bits
6061can be different, as per the values returned from the _Sx predefined
6062methods.
6063
6064Removed an extra register write within AcpiHwClearAcpiStatus. This
6065function
6066was writing an optional PM1B status register twice. The existing call to
6067the
6068low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
6069A/B
6070register. ACPICA BZ 751.
6071
6072Split out the PM1 Status registers from the FADT. Added new globals for
6073these
6074registers (A/B), similar to the way the PM1 Enable registers are handled.
6075Instead of overloading the FADT Event Register blocks. This makes the
6076code
6077clearer and less prone to error.
6078
6079Fixed the warning message for when the platform contains too many ACPI
6080tables
6081for the default size of the global root table data structure. The
6082calculation
6083for the truncation value was incorrect.
6084
6085Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
6086obsolete macro, since it is now a simple reference to ->common.type.
6087There
6088were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
6089
6090Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
6091TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
6092simply SLEEP_TYPE. ACPICA BZ 754.
6093
6094Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
6095function is only needed on 64-bit host operating systems and is thus not
6096included for 32-bit hosts.
6097
6098Debug output: print the input and result for invocations of the _OSI
6099reserved
6100control method via the ACPI_LV_INFO debug level. Also, reduced some of
6101the
6102verbosity of this debug level. Len Brown.
6103
6104Example Code and Data Size: These are the sizes for the OS-independent
6105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6106debug version of the code includes the debug output trace mechanism and
6107has a
6108much larger code and data size.
6109
6110  Previous Release:
6111    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
6112    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
6113  Current Release:
6114    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
6115    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
6116
61172) iASL Compiler/Disassembler and Tools:
6118
6119Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
6120various legal performance profiles.
6121
6122----------------------------------------
612323 January 2009. Summary of changes for version 20090123:
6124
61251) ACPI CA Core Subsystem:
6126
6127Added the 2009 copyright to all module headers and signons. This affects
6128virtually every file in the ACPICA core subsystem, the iASL compiler, and
6129the tools/utilities.
6130
6131Implemented a change to allow the host to override any ACPI table,
6132including
6133dynamically loaded tables. Previously, only the DSDT could be replaced by
6134the
6135host. With this change, the AcpiOsTableOverride interface is called for
6136each
6137table found in the RSDT/XSDT during ACPICA initialization, and also
6138whenever
6139a table is dynamically loaded via the AML Load operator.
6140
6141Updated FADT flag definitions, especially the Boot Architecture flags.
6142
6143Debugger: For the Find command, automatically pad the input ACPI name
6144with
6145underscores if the name is shorter than 4 characters. This enables a
6146match
6147with the actual namespace entry which is itself padded with underscores.
6148
6149Example Code and Data Size: These are the sizes for the OS-independent
6150acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6151debug version of the code includes the debug output trace mechanism and
6152has a
6153much larger code and data size.
6154
6155  Previous Release:
6156    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
6157    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
6158  Current Release:
6159    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
6160    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
6161
61622) iASL Compiler/Disassembler and Tools:
6163
6164Fix build error under Bison-2.4.
6165
6166Dissasembler: Enhanced FADT support. Added decoding of the Boot
6167Architecture
6168flags. Now decode all flags, regardless of the FADT version. Flag output
6169includes the FADT version which first defined each flag.
6170
6171The iASL -g option now dumps the RSDT to a file (in addition to the FADT
6172and
6173DSDT). Windows only.
6174
6175----------------------------------------
617604 December 2008. Summary of changes for version 20081204:
6177
61781) ACPI CA Core Subsystem:
6179
6180The ACPICA Programmer Reference has been completely updated and revamped
6181for
6182this release. This includes updates to the external interfaces, OSL
6183interfaces, the overview sections, and the debugger reference.
6184
6185Several new ACPICA interfaces have been implemented and documented in the
6186programmer reference:
6187AcpiReset - Writes the reset value to the FADT-defined reset register.
6188AcpiDisableAllGpes - Disable all available GPEs.
6189AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
6190AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
6191AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
6192AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
6193AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
6194
6195Most of the public ACPI hardware-related interfaces have been moved to a
6196new
6197file, components/hardware/hwxface.c
6198
6199Enhanced the FADT parsing and low-level ACPI register access: The ACPI
6200register lengths within the FADT are now used, and the low level ACPI
6201register access no longer hardcodes the ACPI register lengths. Given that
6202there may be some risk in actually trusting the FADT register lengths, a
6203run-
6204time option was added to fall back to the default hardcoded lengths if
6205the
6206FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
6207option is set to true for now, and a warning is issued if a suspicious
6208FADT
6209register length is overridden with the default value.
6210
6211Fixed a reference count issue in NsRepairObject. This problem was
6212introduced
6213in version 20081031 as part of a fix to repair Buffer objects within
6214Packages. Lin Ming.
6215
6216Added semaphore support to the Linux/Unix application OS-services layer
6217(OSL). ACPICA BZ 448. Lin Ming.
6218
6219Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
6220will
6221be implemented in the OSL, or will binary semaphores be used instead.
6222
6223Example Code and Data Size: These are the sizes for the OS-independent
6224acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6225debug version of the code includes the debug output trace mechanism and
6226has a
6227much larger code and data size.
6228
6229  Previous Release:
6230    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
6231    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
6232  Current Release:
6233    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
6234    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
6235
62362) iASL Compiler/Disassembler and Tools:
6237
6238iASL: Completed the '-e' option to include additional ACPI tables in
6239order
6240to
6241aid with disassembly and External statement generation. ACPICA BZ 742.
6242Lin
6243Ming.
6244
6245iASL: Removed the "named object in while loop" error. The compiler cannot
6246determine how many times a loop will execute. ACPICA BZ 730.
6247
6248Disassembler: Implemented support for FADT revision 2 (MS extension).
6249ACPICA
6250BZ 743.
6251
6252Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
6253MCFG).
6254
6255----------------------------------------
625631 October 2008. Summary of changes for version 20081031:
6257
62581) ACPI CA Core Subsystem:
6259
6260Restructured the ACPICA header files into public/private. acpi.h now
6261includes
6262only the "public" acpica headers. All other acpica headers are "private"
6263and
6264should not be included by acpica users. One new file, accommon.h is used
6265to
6266include the commonly used private headers for acpica code generation.
6267Future
6268plans include moving all private headers to a new subdirectory.
6269
6270Implemented an automatic Buffer->String return value conversion for
6271predefined ACPI methods. For these methods (such as _BIF), added
6272automatic
6273conversion for return objects that are required to be a String, but a
6274Buffer
6275was found instead. This can happen when reading string battery data from
6276an
6277operation region, because it used to be difficult to convert the data
6278from
6279buffer to string from within the ASL. Ensures that the host OS is
6280provided
6281with a valid null-terminated string. Linux BZ 11822.
6282
6283Updated the FACS waking vector interfaces. Split
6284AcpiSetFirmwareWakingVector
6285into two: one for the 32-bit vector, another for the 64-bit vector. This
6286is
6287required because the host OS must setup the wake much differently for
6288each
6289vector (real vs. protected mode, etc.) and the interface itself should
6290not
6291be
6292deciding which vector to use. Also, eliminated the
6293GetFirmwareWakingVector
6294interface, as it served no purpose (only the firmware reads the vector,
6295OS
6296only writes the vector.) ACPICA BZ 731.
6297
6298Implemented a mechanism to escape infinite AML While() loops. Added a
6299loop
6300counter to force exit from AML While loops if the count becomes too
6301large.
6302This can occur in poorly written AML when the hardware does not respond
6303within a while loop and the loop does not implement a timeout. The
6304maximum
6305loop count is configurable. A new exception code is returned when a loop
6306is
6307broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
6308
6309Optimized the execution of AML While loops. Previously, a control state
6310object was allocated and freed for each execution of the loop. The
6311optimization is to simply reuse the control state for each iteration.
6312This
6313speeds up the raw loop execution time by about 5%.
6314
6315Enhanced the implicit return mechanism. For Windows compatibility, return
6316an
6317implicit integer of value zero for methods that contain no executable
6318code.
6319Such methods are seen in the field as stubs (presumably), and can cause
6320drivers to fail if they expect a return value. Lin Ming.
6321
6322Allow multiple backslashes as root prefixes in namepaths. In a fully
6323qualified namepath, allow multiple backslash prefixes. This can happen
6324(and
6325is seen in the field) because of the use of a double-backslash in strings
6326(since backslash is the escape character) causing confusion. ACPICA BZ
6327739
6328Lin Ming.
6329
6330Emit a warning if two different FACS or DSDT tables are discovered in the
6331FADT. Checks if there are two valid but different addresses for the FACS
6332and
6333DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
6334
6335Consolidated the method argument count validation code. Merged the code
6336that
6337validates control method argument counts into the predefined validation
6338module. Eliminates possible multiple warnings for incorrect argument
6339counts.
6340
6341Implemented ACPICA example code. Includes code for ACPICA initialization,
6342handler installation, and calling a control method. Available at
6343source/tools/examples.
6344
6345Added a global pointer for FACS table to simplify internal FACS access.
6346Use
6347the global pointer instead of using AcpiGetTableByIndex for each FACS
6348access.
6349This simplifies the code for the Global Lock and the Firmware Waking
6350Vector(s).
6351
6352Example Code and Data Size: These are the sizes for the OS-independent
6353acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6354debug version of the code includes the debug output trace mechanism and
6355has a
6356much larger code and data size.
6357
6358  Previous Release:
6359    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
6360    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
6361  Current Release:
6362    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
6363    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
6364
63652) iASL Compiler/Disassembler and Tools:
6366
6367iASL: Improved disassembly of external method calls. Added the -e option
6368to
6369allow the inclusion of additional ACPI tables to help with the
6370disassembly
6371of
6372method invocations and the generation of external declarations during the
6373disassembly. Certain external method invocations cannot be disassembled
6374properly without the actual declaration of the method. Use the -e option
6375to
6376include the table where the external method(s) are actually declared.
6377Most
6378useful for disassembling SSDTs that make method calls back to the master
6379DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
6380-d
6381-e dsdt.aml ssdt1.aml
6382
6383iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
6384problem where the use of an alias within a namepath would result in a not
6385found error or cause the compiler to fault. Also now allows forward
6386references from the Alias operator itself. ACPICA BZ 738.
6387
6388----------------------------------------
638926 September 2008. Summary of changes for version 20080926:
6390
63911) ACPI CA Core Subsystem:
6392
6393Designed and implemented a mechanism to validate predefined ACPI methods
6394and
6395objects. This code validates the predefined ACPI objects (objects whose
6396names
6397start with underscore) that appear in the namespace, at the time they are
6398evaluated. The argument count and the type of the returned object are
6399validated against the ACPI specification. The purpose of this validation
6400is
6401to detect problems with the BIOS-implemented predefined ACPI objects
6402before
6403the results are returned to the ACPI-related drivers. Future enhancements
6404may
6405include actual repair of incorrect return objects where possible. Two new
6406files are nspredef.c and acpredef.h.
6407
6408Fixed a fault in the AML parser if a memory allocation fails during the
6409Op
6410completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
6411
6412Fixed an issue with implicit return compatibility. This change improves
6413the
6414implicit return mechanism to be more compatible with the MS interpreter.
6415Lin
6416Ming, ACPICA BZ 349.
6417
6418Implemented support for zero-length buffer-to-string conversions. Allow
6419zero
6420length strings during interpreter buffer-to-string conversions. For
6421example,
6422during the ToDecimalString and ToHexString operators, as well as implicit
6423conversions. Fiodor Suietov, ACPICA BZ 585.
6424
6425Fixed two possible memory leaks in the error exit paths of
6426AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
6427are
6428similar in that they use a stack of state objects in order to eliminate
6429recursion. The stack must be fully unwound and deallocated if an error
6430occurs. Lin Ming. ACPICA BZ 383.
6431
6432Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
6433global
6434ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
6435Moore ACPICA BZ 442.
6436
6437Removed the obsolete version number in module headers. Removed the
6438"$Revision" number that appeared in each module header. This version
6439number
6440was useful under SourceSafe and CVS, but has no meaning under git. It is
6441not
6442only incorrect, it could also be misleading.
6443
6444Example Code and Data Size: These are the sizes for the OS-independent
6445acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6446debug version of the code includes the debug output trace mechanism and
6447has a
6448much larger code and data size.
6449
6450  Previous Release:
6451    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6452    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
6453  Current Release:
6454    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
6455    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
6456
6457----------------------------------------
645829 August 2008. Summary of changes for version 20080829:
6459
64601) ACPI CA Core Subsystem:
6461
6462Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
6463Reference. Changes include the elimination of cheating on the Object
6464field
6465for the DdbHandle subtype, addition of a reference class field to
6466differentiate the various reference types (instead of an AML opcode), and
6467the
6468cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
6469
6470Reduce an error to a warning for an incorrect method argument count.
6471Previously aborted with an error if too few arguments were passed to a
6472control method via the external ACPICA interface. Now issue a warning
6473instead
6474and continue. Handles the case where the method inadvertently declares
6475too
6476many arguments, but does not actually use the extra ones. Applies mainly
6477to
6478the predefined methods. Lin Ming. Linux BZ 11032.
6479
6480Disallow the evaluation of named object types with no intrinsic value.
6481Return
6482AE_TYPE for objects that have no value and therefore evaluation is
6483undefined:
6484Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
6485of
6486these types were allowed, but an exception would be generated at some
6487point
6488during the evaluation. Now, the error is generated up front.
6489
6490Fixed a possible memory leak in the AcpiNsGetExternalPathname function
6491(nsnames.c). Fixes a leak in the error exit path.
6492
6493Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
6494debug
6495levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
6496ACPI_EXCEPTION
6497interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
6498ACPI_LV_EVENTS.
6499
6500Removed obsolete and/or unused exception codes from the acexcep.h header.
6501There is the possibility that certain device drivers may be affected if
6502they
6503use any of these exceptions.
6504
6505The ACPICA documentation has been added to the public git source tree,
6506under
6507acpica/documents. Included are the ACPICA programmer reference, the iASL
6508compiler reference, and the changes.txt release logfile.
6509
6510Example Code and Data Size: These are the sizes for the OS-independent
6511acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6512debug version of the code includes the debug output trace mechanism and
6513has a
6514much larger code and data size.
6515
6516  Previous Release:
6517    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6518    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
6519  Current Release:
6520    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6521    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
6522
65232) iASL Compiler/Disassembler and Tools:
6524
6525Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
6526defines _SCP with 3 arguments. Previous versions defined it with only 1
6527argument. iASL now allows both definitions.
6528
6529iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
6530zero-
6531length subtables when disassembling ACPI tables. Also fixed a couple of
6532errors where a full 16-bit table type field was not extracted from the
6533input
6534properly.
6535
6536acpisrc: Improve comment counting mechanism for generating source code
6537statistics. Count first and last lines of multi-line comments as
6538whitespace,
6539not comment lines. Handle Linux legal header in addition to standard
6540acpica
6541header.
6542
6543----------------------------------------
6544
654529 July 2008. Summary of changes for version 20080729:
6546
65471) ACPI CA Core Subsystem:
6548
6549Fix a possible deadlock in the GPE dispatch. Remove call to
6550AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
6551attempt
6552to acquire the GPE lock but can deadlock since the GPE lock is already
6553held
6554at dispatch time. This code was introduced in version 20060831 as a
6555response
6556to Linux BZ 6881 and has since been removed from Linux.
6557
6558Add a function to dereference returned reference objects. Examines the
6559return
6560object from a call to AcpiEvaluateObject. Any Index or RefOf references
6561are
6562automatically dereferenced in an attempt to return something useful
6563(these
6564reference types cannot be converted into an external ACPI_OBJECT.)
6565Provides
6566MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
6567
6568x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
6569subtables for the MADT and one new subtable for the SRAT. Includes
6570disassembler and AcpiSrc support. Data from the Intel 64 Architecture
6571x2APIC
6572Specification, June 2008.
6573
6574Additional error checking for pathname utilities. Add error check after
6575all
6576calls to AcpiNsGetPathnameLength. Add status return from
6577AcpiNsBuildExternalPath and check after all calls. Add parameter
6578validation
6579to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
6580
6581Return status from the global init function AcpiUtGlobalInitialize. This
6582is
6583used by both the kernel subsystem and the utilities such as iASL
6584compiler.
6585The function could possibly fail when the caches are initialized. Yang
6586Yi.
6587
6588Add a function to decode reference object types to strings. Created for
6589improved error messages.
6590
6591Improve object conversion error messages. Better error messages during
6592object
6593conversion from internal to the external ACPI_OBJECT. Used for external
6594calls
6595to AcpiEvaluateObject.
6596
6597Example Code and Data Size: These are the sizes for the OS-independent
6598acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6599debug version of the code includes the debug output trace mechanism and
6600has a
6601much larger code and data size.
6602
6603  Previous Release:
6604    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
6605    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
6606  Current Release:
6607    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6608    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
6609
66102) iASL Compiler/Disassembler and Tools:
6611
6612Debugger: fix a possible hang when evaluating non-methods. Fixes a
6613problem
6614introduced in version 20080701. If the object being evaluated (via
6615execute
6616command) is not a method, the debugger can hang while trying to obtain
6617non-
6618existent parameters.
6619
6620iASL: relax error for using reserved "_T_x" identifiers. These names can
6621appear in a disassembled ASL file if they were emitted by the original
6622compiler. Instead of issuing an error or warning and forcing the user to
6623manually change these names, issue a remark instead.
6624
6625iASL: error if named object created in while loop. Emit an error if any
6626named
6627object is created within a While loop. If allowed, this code will
6628generate
6629a
6630run-time error on the second iteration of the loop when an attempt is
6631made
6632to
6633create the same named object twice. ACPICA bugzilla 730.
6634
6635iASL: Support absolute pathnames for include files. Add support for
6636absolute
6637pathnames within the Include operator. previously, only relative
6638pathnames
6639were supported.
6640
6641iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
6642Descriptor.
6643The ACPI spec requires one interrupt minimum. BZ 423
6644
6645iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
6646Handles the case for the Interrupt Resource Descriptor where
6647the ResourceSource argument is omitted but ResourceSourceIndex
6648is present. Now leave room for the Index. BZ 426
6649
6650iASL: Prevent error message if CondRefOf target does not exist. Fixes
6651cases
6652where an error message is emitted if the target does not exist. BZ 516
6653
6654iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
6655(get ACPI tables on Windows). This was apparently broken in version
665620070919.
6657
6658AcpiXtract: Handle EOF while extracting data. Correctly handle the case
6659where
6660the EOF happens immediately after the last table in the input file. Print
6661completion message. Previously, no message was displayed in this case.
6662
6663----------------------------------------
666401 July 2008. Summary of changes for version 20080701:
6665
66660) Git source tree / acpica.org
6667
6668Fixed a problem where a git-clone from http would not transfer the entire
6669source tree.
6670
66711) ACPI CA Core Subsystem:
6672
6673Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
6674enable bit. Now performs a read-change-write of the enable register
6675instead
6676of simply writing out the cached enable mask. This will prevent
6677inadvertent
6678enabling of GPEs if a rogue GPE is received during initialization (before
6679GPE
6680handlers are installed.)
6681
6682Implemented a copy for dynamically loaded tables. Previously, dynamically
6683loaded tables were simply mapped - but on some machines this memory is
6684corrupted after suspend. Now copy the table to a local buffer. For the
6685OpRegion case, added checksum verify. Use the table length from the table
6686header, not the region length. For the Buffer case, use the table length
6687also. Dennis Noordsij, Bob Moore. BZ 10734
6688
6689Fixed a problem where the same ACPI table could not be dynamically loaded
6690and
6691unloaded more than once. Without this change, a table cannot be loaded
6692again
6693once it has been loaded/unloaded one time. The current mechanism does not
6694unregister a table upon an unload. During a load, if the same table is
6695found,
6696this no longer returns an exception. BZ 722
6697
6698Fixed a problem where the wrong descriptor length was calculated for the
6699EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
6700EndTag
6701are calculated as 12 bytes long, but the actual length in the internal
6702descriptor is 16 because of the round-up to 8 on the 64-bit build.
6703Reported
6704by Linn Crosetto. BZ 728
6705
6706Fixed a possible memory leak in the Unload operator. The DdbHandle
6707returned
6708by Load() did not have its reference count decremented during unload,
6709leading
6710to a memory leak. Lin Ming. BZ 727
6711
6712Fixed a possible memory leak when deleting thermal/processor objects. Any
6713associated notify handlers (and objects) were not being deleted. Fiodor
6714Suietov. BZ 506
6715
6716Fixed the ordering of the ASCII names in the global mutex table to match
6717the
6718actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
6719only.
6720Vegard Nossum. BZ 726
6721
6722Enhanced the AcpiGetObjectInfo interface to return the number of required
6723arguments if the object is a control method. Added this call to the
6724debugger
6725so the proper number of default arguments are passed to a method. This
6726prevents a warning when executing methods from AcpiExec.
6727
6728Added a check for an invalid handle in AcpiGetObjectInfo. Return
6729AE_BAD_PARAMETER if input handle is invalid. BZ 474
6730
6731Fixed an extraneous warning from exconfig.c on the 64-bit build.
6732
6733Example Code and Data Size: These are the sizes for the OS-independent
6734acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6735debug version of the code includes the debug output trace mechanism and
6736has a
6737much larger code and data size.
6738
6739  Previous Release:
6740    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
6741    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
6742  Current Release:
6743    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
6744    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
6745
67462) iASL Compiler/Disassembler and Tools:
6747
6748iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
6749resource descriptor names.
6750
6751iASL: Detect invalid ASCII characters in input (windows version). Removed
6752the
6753"-CF" flag from the flex compile, enables correct detection of non-ASCII
6754characters in the input. BZ 441
6755
6756iASL: Eliminate warning when result of LoadTable is not used. Eliminate
6757the
6758"result of operation not used" warning when the DDB handle returned from
6759LoadTable is not used. The warning is not needed. BZ 590
6760
6761AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
6762method
6763to
6764pass address of table to the AML. Added option to disable OpRegion
6765simulation
6766to allow creation of an OpRegion with a real address that was passed to
6767_CFG.
6768All of this allows testing of the Load and Unload operators from
6769AcpiExec.
6770
6771Debugger: update tables command for unloaded tables. Handle unloaded
6772tables
6773and use the standard table header output routine.
6774
6775----------------------------------------
677609 June 2008. Summary of changes for version 20080609:
6777
67781) ACPI CA Core Subsystem:
6779
6780Implemented a workaround for reversed _PRT entries. A significant number
6781of
6782BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
6783change dynamically detects and repairs this problem. Provides
6784compatibility
6785with MS ACPI. BZ 6859
6786
6787Simplified the internal ACPI hardware interfaces to eliminate the locking
6788flag parameter from Register Read/Write. Added a new external interface,
6789AcpiGetRegisterUnlocked.
6790
6791Fixed a problem where the invocation of a GPE control method could hang.
6792This
6793was a regression introduced in 20080514. The new method argument count
6794validation mechanism can enter an infinite loop when a GPE method is
6795dispatched. Problem fixed by removing the obsolete code that passed GPE
6796block
6797information to the notify handler via the control method parameter
6798pointer.
6799
6800Fixed a problem where the _SST execution status was incorrectly returned
6801to
6802the caller of AcpiEnterSleepStatePrep. This was a regression introduced
6803in
680420080514. _SST is optional and a NOT_FOUND exception should never be
6805returned. BZ 716
6806
6807Fixed a problem where a deleted object could be accessed from within the
6808AML
6809parser. This was a regression introduced in version 20080123 as a fix for
6810the
6811Unload operator. Lin Ming. BZ 10669
6812
6813Cleaned up the debug operand dump mechanism. Eliminated unnecessary
6814operands
6815and eliminated the use of a negative index in a loop. Operands are now
6816displayed in the correct order, not backwards. This also fixes a
6817regression
6818introduced in 20080514 on 64-bit systems where the elimination of
6819ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
6820715
6821
6822Fixed a possible memory leak in EvPciConfigRegionSetup where the error
6823exit
6824path did not delete a locally allocated structure.
6825
6826Updated definitions for the DMAR and SRAT tables to synchronize with the
6827current specifications. Includes disassembler support.
6828
6829Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
6830loop termination value was used. Loop terminated on iteration early,
6831missing
6832one mutex. Linn Crosetto
6833
6834Example Code and Data Size: These are the sizes for the OS-independent
6835acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6836debug version of the code includes the debug output trace mechanism and
6837has a
6838much larger code and data size.
6839
6840  Previous Release:
6841    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6842    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6843  Current Release:
6844    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
6845    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
6846
68472) iASL Compiler/Disassembler and Tools:
6848
6849Disassembler: Implemented support for EisaId() within _CID objects. Now
6850disassemble integer _CID objects back to EisaId invocations, including
6851multiple integers within _CID packages. Includes single-step support for
6852debugger also.
6853
6854Disassembler: Added support for DMAR and SRAT table definition changes.
6855
6856----------------------------------------
685714 May 2008. Summary of changes for version 20080514:
6858
68591) ACPI CA Core Subsystem:
6860
6861Fixed a problem where GPEs were enabled too early during the ACPICA
6862initialization. This could lead to "handler not installed" errors on some
6863machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
6864This
6865ensures that all operation regions and devices throughout the namespace
6866have
6867been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
6868
6869Implemented a change to the enter sleep code. Moved execution of the _GTS
6870method to just before setting sleep enable bit. The execution was moved
6871from
6872AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
6873immediately before the SLP_EN bit is set, as per the ACPI specification.
6874Luming Yu, BZ 1653.
6875
6876Implemented a fix to disable unknown GPEs (2nd version). Now always
6877disable
6878the GPE, even if ACPICA thinks that that it is already disabled. It is
6879possible that the AML or some other code has enabled the GPE unbeknownst
6880to
6881the ACPICA code.
6882
6883Fixed a problem with the Field operator where zero-length fields would
6884return
6885an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
6886ASL
6887field declarations in Field(), BankField(), and IndexField(). BZ 10606.
6888
6889Implemented a fix for the Load operator, now load the table at the
6890namespace
6891root. This reverts a change introduced in version 20071019. The table is
6892now
6893loaded at the namespace root even though this goes against the ACPI
6894specification. This provides compatibility with other ACPI
6895implementations.
6896The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
6897Ming.
6898
6899Fixed a problem where ACPICA would not Load() tables with unusual
6900signatures.
6901Now ignore ACPI table signature for Load() operator. Only "SSDT" is
6902acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
6903Therefore, signature validation is worthless. Apparently MS ACPI accepts
6904such
6905signatures, ACPICA must be compatible. BZ 10454.
6906
6907Fixed a possible negative array index in AcpiUtValidateException. Added
6908NULL
6909fields to the exception string arrays to eliminate a -1 subtraction on
6910the
6911SubStatus field.
6912
6913Updated the debug tracking macros to reduce overall code and data size.
6914Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
6915instead of pointers to static strings. Jan Beulich and Bob Moore.
6916
6917Implemented argument count checking in control method invocation via
6918AcpiEvaluateObject. Now emit an error if too few arguments, warning if
6919too
6920many. This applies only to extern programmatic control method execution,
6921not
6922method-to-method calls within the AML. Lin Ming.
6923
6924Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
6925no
6926longer needed, especially with the removal of 16-bit support. It was
6927replaced
6928mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
6929bit
6930on
693132/64-bit platforms is required.
6932
6933Added the C const qualifier for appropriate string constants -- mostly
6934MODULE_NAME and printf format strings. Jan Beulich.
6935
6936Example Code and Data Size: These are the sizes for the OS-independent
6937acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6938debug version of the code includes the debug output trace mechanism and
6939has a
6940much larger code and data size.
6941
6942  Previous Release:
6943    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6944    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6945  Current Release:
6946    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6947    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6948
69492) iASL Compiler/Disassembler and Tools:
6950
6951Implemented ACPI table revision ID validation in the disassembler. Zero
6952is
6953always invalid. For DSDTs, the ID controls the interpreter integer width.
69541
6955means 32-bit and this is unusual. 2 or greater is 64-bit.
6956
6957----------------------------------------
695821 March 2008. Summary of changes for version 20080321:
6959
69601) ACPI CA Core Subsystem:
6961
6962Implemented an additional change to the GPE support in order to suppress
6963spurious or stray GPEs. The AcpiEvDisableGpe function will now
6964permanently
6965disable incoming GPEs that are neither enabled nor disabled -- meaning
6966that
6967the GPE is unknown to the system. This should prevent future interrupt
6968floods
6969from that GPE. BZ 6217 (Zhang Rui)
6970
6971Fixed a problem where NULL package elements were not returned to the
6972AcpiEvaluateObject interface correctly. The element was simply ignored
6973instead of returning a NULL ACPI_OBJECT package element, potentially
6974causing
6975a buffer overflow and/or confusing the caller who expected a fixed number
6976of
6977elements. BZ 10132 (Lin Ming, Bob Moore)
6978
6979Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
6980Dword,
6981Qword), Field, BankField, and IndexField operators when invoked from
6982inside
6983an executing control method. In this case, these operators created
6984namespace
6985nodes that were incorrectly left marked as permanent nodes instead of
6986temporary nodes. This could cause a problem if there is race condition
6987between an exiting control method and a running namespace walk. (Reported
6988by
6989Linn Crosetto)
6990
6991Fixed a problem where the CreateField and CreateXXXField operators would
6992incorrectly allow duplicate names (the name of the field) with no
6993exception
6994generated.
6995
6996Implemented several changes for Notify handling. Added support for new
6997Notify
6998values (ACPI 2.0+) and improved the Notify debug output. Notify on
6999PowerResource objects is no longer allowed, as per the ACPI
7000specification.
7001(Bob Moore, Zhang Rui)
7002
7003All Reference Objects returned via the AcpiEvaluateObject interface are
7004now
7005marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
7006for
7007NULL objects - either NULL package elements or unresolved named
7008references.
7009
7010Fixed a problem where an extraneous debug message was produced for
7011package
7012objects (when debugging enabled). The message "Package List length larger
7013than NumElements count" is now produced in the correct case, and is now
7014an
7015error message rather than a debug message. Added a debug message for the
7016opposite case, where NumElements is larger than the Package List (the
7017package
7018will be padded out with NULL elements as per the ACPI spec.)
7019
7020Implemented several improvements for the output of the ASL "Debug" object
7021to
7022clarify and keep all data for a given object on one output line.
7023
7024Fixed two size calculation issues with the variable-length Start
7025Dependent
7026resource descriptor.
7027
7028Example Code and Data Size: These are the sizes for the OS-independent
7029acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7030debug version of the code includes the debug output trace mechanism and
7031has
7032a much larger code and data size.
7033
7034  Previous Release:
7035    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
7036    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
7037  Current Release:
7038    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
7039    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
7040
70412) iASL Compiler/Disassembler and Tools:
7042
7043Fixed a problem with the use of the Switch operator where execution of
7044the
7045containing method by multiple concurrent threads could cause an
7046AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
7047actual Switch opcode, it must be simulated with local named temporary
7048variables and if/else pairs. The solution chosen was to mark any method
7049that
7050uses Switch as Serialized, thus preventing multiple thread entries. BZ
7051469.
7052
7053----------------------------------------
705413 February 2008. Summary of changes for version 20080213:
7055
70561) ACPI CA Core Subsystem:
7057
7058Implemented another MS compatibility design change for GPE/Notify
7059handling.
7060GPEs are now cleared/enabled asynchronously to allow all pending notifies
7061to
7062complete first. It is expected that the OSL will queue the enable request
7063behind all pending notify requests (may require changes to the local host
7064OSL
7065in AcpiOsExecute). Alexey Starikovskiy.
7066
7067Fixed a problem where buffer and package objects passed as arguments to a
7068control method via the external AcpiEvaluateObject interface could cause
7069an
7070AE_AML_INTERNAL exception depending on the order and type of operators
7071executed by the target control method.
7072
7073Fixed a problem where resource descriptor size optimization could cause a
7074problem when a _CRS resource template is passed to a _SRS method. The
7075_SRS
7076resource template must use the same descriptors (with the same size) as
7077returned from _CRS. This change affects the following resource
7078descriptors:
7079IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
70809487)
7081
7082Fixed a problem where a CopyObject to RegionField, BankField, and
7083IndexField
7084objects did not perform an implicit conversion as it should. These types
7085must
7086retain their initial type permanently as per the ACPI specification.
7087However,
7088a CopyObject to all other object types should not perform an implicit
7089conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
7090
7091Fixed a problem with the AcpiGetDevices interface where the mechanism to
7092match device CIDs did not examine the entire list of available CIDs, but
7093instead aborted on the first non-matching CID. Andrew Patterson.
7094
7095Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
7096was
7097inadvertently changed to return a 16-bit value instead of a 32-bit value,
7098truncating the upper dword of a 64-bit value. This macro is only used to
7099display debug output, so no incorrect calculations were made. Also,
7100reimplemented the macro so that a 64-bit shift is not performed by
7101inefficient compilers.
7102
7103Added missing va_end statements that should correspond with each va_start
7104statement.
7105
7106Example Code and Data Size: These are the sizes for the OS-independent
7107acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7108debug version of the code includes the debug output trace mechanism and
7109has
7110a much larger code and data size.
7111
7112  Previous Release:
7113    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
7114    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
7115  Current Release:
7116    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
7117    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
7118
71192) iASL Compiler/Disassembler and Tools:
7120
7121Implemented full disassembler support for the following new ACPI tables:
7122BERT, EINJ, and ERST. Implemented partial disassembler support for the
7123complicated HEST table. These tables support the Windows Hardware Error
7124Architecture (WHEA).
7125
7126----------------------------------------
712723 January 2008. Summary of changes for version 20080123:
7128
71291) ACPI CA Core Subsystem:
7130
7131Added the 2008 copyright to all module headers and signons. This affects
7132virtually every file in the ACPICA core subsystem, the iASL compiler, and
7133the tools/utilities.
7134
7135Fixed a problem with the SizeOf operator when used with Package and
7136Buffer
7137objects. These objects have deferred execution for some arguments, and
7138the
7139execution is now completed before the SizeOf is executed. This problem
7140caused
7141unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
7142BZ
71439558
7144
7145Implemented an enhancement to the interpreter "slack mode". In the
7146absence
7147of
7148an explicit return or an implicitly returned object from the last
7149executed
7150opcode, a control method will now implicitly return an integer of value 0
7151for
7152Microsoft compatibility. (Lin Ming) BZ 392
7153
7154Fixed a problem with the Load operator where an exception was not
7155returned
7156in
7157the case where the table is already loaded. (Lin Ming) BZ 463
7158
7159Implemented support for the use of DDBHandles as an Indexed Reference, as
7160per
7161the ACPI spec. (Lin Ming) BZ 486
7162
7163Implemented support for UserTerm (Method invocation) for the Unload
7164operator
7165as per the ACPI spec. (Lin Ming) BZ 580
7166
7167Fixed a problem with the LoadTable operator where the OemId and
7168OemTableId
7169input strings could cause unexpected failures if they were shorter than
7170the
7171maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
7172
7173Implemented support for UserTerm (Method invocation) for the Unload
7174operator
7175as per the ACPI spec. (Lin Ming) BZ 580
7176
7177Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
7178HEST,
7179IBFT, UEFI, WDAT. Disassembler support is forthcoming.
7180
7181Example Code and Data Size: These are the sizes for the OS-independent
7182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7183debug version of the code includes the debug output trace mechanism and
7184has
7185a much larger code and data size.
7186
7187  Previous Release:
7188    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
7189    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
7190  Current Release:
7191    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
7192    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
7193
71942) iASL Compiler/Disassembler and Tools:
7195
7196Implemented support in the disassembler for checksum validation on
7197incoming
7198binary DSDTs and SSDTs. If incorrect, a message is displayed within the
7199table
7200header dump at the start of the disassembly.
7201
7202Implemented additional debugging information in the namespace listing
7203file
7204created during compilation. In addition to the namespace hierarchy, the
7205full
7206pathname to each namespace object is displayed.
7207
7208Fixed a problem with the disassembler where invalid ACPI tables could
7209cause
7210faults or infinite loops.
7211
7212Fixed an unexpected parse error when using the optional "parameter types"
7213list in a control method declaration. (Lin Ming) BZ 397
7214
7215Fixed a problem where two External declarations with the same name did
7216not
7217cause an error (Lin Ming) BZ 509
7218
7219Implemented support for full TermArgs (adding Argx, Localx and method
7220invocation) for the ParameterData parameter to the LoadTable operator.
7221(Lin
7222Ming) BZ 583,587
7223
7224----------------------------------------
722519 December 2007. Summary of changes for version 20071219:
7226
72271) ACPI CA Core Subsystem:
7228
7229Implemented full support for deferred execution for the TermArg string
7230arguments for DataTableRegion. This enables forward references and full
7231operand resolution for the three string arguments. Similar to
7232OperationRegion
7233deferred argument execution.) Lin Ming. BZ 430
7234
7235Implemented full argument resolution support for the BankValue argument
7236to
7237BankField. Previously, only constants were supported, now any TermArg may
7238be
7239used. Lin Ming BZ 387, 393
7240
7241Fixed a problem with AcpiGetDevices where the search of a branch of the
7242device tree could be terminated prematurely. In accordance with the ACPI
7243specification, the search down the current branch is terminated if a
7244device
7245is both not present and not functional (instead of just not present.)
7246Yakui
7247Zhao.
7248
7249Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
7250if
7251the underlying AML code changed the GPE enable registers. Now, any
7252unknown
7253incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
7254disabled
7255instead of simply ignored. Rui Zhang.
7256
7257Fixed a problem with Index Fields where the Index register was
7258incorrectly
7259limited to a maximum of 32 bits. Now any size may be used.
7260
7261Fixed a couple memory leaks associated with "implicit return" objects
7262when
7263the AML Interpreter slack mode is enabled. Lin Ming BZ 349
7264
7265Example Code and Data Size: These are the sizes for the OS-independent
7266acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7267debug version of the code includes the debug output trace mechanism and
7268has
7269a much larger code and data size.
7270
7271  Previous Release:
7272    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
7273    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
7274  Current Release:
7275    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
7276    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
7277
7278----------------------------------------
727914 November 2007. Summary of changes for version 20071114:
7280
72811) ACPI CA Core Subsystem:
7282
7283Implemented event counters for each of the Fixed Events, the ACPI SCI
7284(interrupt) itself, and control methods executed. Named
7285AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
7286These
7287should be useful for debugging and statistics.
7288
7289Implemented a new external interface, AcpiGetStatistics, to retrieve the
7290contents of the various event counters. Returns the current values for
7291AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
7292AcpiMethodCount. The interface can be expanded in the future if new
7293counters
7294are added. Device drivers should use this interface rather than access
7295the
7296counters directly.
7297
7298Fixed a problem with the FromBCD and ToBCD operators. With some
7299compilers,
7300the ShortDivide function worked incorrectly, causing problems with the
7301BCD
7302functions with large input values. A truncation from 64-bit to 32-bit
7303inadvertently occurred. Internal BZ 435. Lin Ming
7304
7305Fixed a problem with Index references passed as method arguments.
7306References
7307passed as arguments to control methods were dereferenced immediately
7308(before
7309control was passed to the called method). The references are now
7310correctly
7311passed directly to the called method. BZ 5389. Lin Ming
7312
7313Fixed a problem with CopyObject used in conjunction with the Index
7314operator.
7315The reference was incorrectly dereferenced before the copy. The reference
7316is
7317now correctly copied. BZ 5391. Lin Ming
7318
7319Fixed a problem with Control Method references within Package objects.
7320These
7321references are now correctly generated. This completes the package
7322construction overhaul that began in version 20071019.
7323
7324Example Code and Data Size: These are the sizes for the OS-independent
7325acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7326debug version of the code includes the debug output trace mechanism and
7327has
7328a much larger code and data size.
7329
7330  Previous Release:
7331    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
7332    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
7333  Current Release:
7334    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
7335    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
7336
7337
73382) iASL Compiler/Disassembler and Tools:
7339
7340The AcpiExec utility now installs handlers for all of the predefined
7341Operation Region types. New types supported are: PCI_Config, CMOS, and
7342PCIBARTarget.
7343
7344Fixed a problem with the 64-bit version of AcpiExec where the extended
7345(64-
7346bit) address fields for the DSDT and FACS within the FADT were not being
7347used, causing truncation of the upper 32-bits of these addresses. Lin
7348Ming
7349and Bob Moore
7350
7351----------------------------------------
735219 October 2007. Summary of changes for version 20071019:
7353
73541) ACPI CA Core Subsystem:
7355
7356Fixed a problem with the Alias operator when the target of the alias is a
7357named ASL operator that opens a new scope -- Scope, Device,
7358PowerResource,
7359Processor, and ThermalZone. In these cases, any children of the original
7360operator could not be accessed via the alias, potentially causing
7361unexpected
7362AE_NOT_FOUND exceptions. (BZ 9067)
7363
7364Fixed a problem with the Package operator where all named references were
7365created as object references and left otherwise unresolved. According to
7366the
7367ACPI specification, a Package can only contain Data Objects or references
7368to
7369control methods. The implication is that named references to Data Objects
7370(Integer, Buffer, String, Package, BufferField, Field) should be resolved
7371immediately upon package creation. This is the approach taken with this
7372change. References to all other named objects (Methods, Devices, Scopes,
7373etc.) are all now properly created as reference objects. (BZ 5328)
7374
7375Reverted a change to Notify handling that was introduced in version
737620070508. This version changed the Notify handling from asynchronous to
7377fully synchronous (Device driver Notify handling with respect to the
7378Notify
7379ASL operator). It was found that this change caused more problems than it
7380solved and was removed by most users.
7381
7382Fixed a problem with the Increment and Decrement operators where the type
7383of
7384the target object could be unexpectedly and incorrectly changed. (BZ 353)
7385Lin Ming.
7386
7387Fixed a problem with the Load and LoadTable operators where the table
7388location within the namespace was ignored. Instead, the table was always
7389loaded into the root or current scope. Lin Ming.
7390
7391Fixed a problem with the Load operator when loading a table from a buffer
7392object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
7393
7394Fixed a problem with the Debug object where a store of a DdbHandle
7395reference
7396object to the Debug object could cause a fault.
7397
7398Added a table checksum verification for the Load operator, in the case
7399where
7400the load is from a buffer. (BZ 578).
7401
7402Implemented additional parameter validation for the LoadTable operator.
7403The
7404length of the input strings SignatureString, OemIdString, and OemTableId
7405are
7406now checked for maximum lengths. (BZ 582) Lin Ming.
7407
7408Example Code and Data Size: These are the sizes for the OS-independent
7409acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7410debug version of the code includes the debug output trace mechanism and
7411has
7412a much larger code and data size.
7413
7414  Previous Release:
7415    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
7416    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
7417  Current Release:
7418    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
7419    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
7420
7421
74222) iASL Compiler/Disassembler:
7423
7424Fixed a problem where if a single file was specified and the file did not
7425exist, no error message was emitted. (Introduced with wildcard support in
7426version 20070917.)
7427
7428----------------------------------------
742919 September 2007. Summary of changes for version 20070919:
7430
74311) ACPI CA Core Subsystem:
7432
7433Designed and implemented new external interfaces to install and remove
7434handlers for ACPI table-related events. Current events that are defined
7435are
7436LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
7437they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
7438AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
7439
7440Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
7441(acpi_serialized option on Linux) could cause some systems to hang during
7442initialization. (Bob Moore) BZ 8171
7443
7444Fixed a problem where objects of certain types (Device, ThermalZone,
7445Processor, PowerResource) can be not found if they are declared and
7446referenced from within the same control method (Lin Ming) BZ 341
7447
7448Example Code and Data Size: These are the sizes for the OS-independent
7449acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7450debug version of the code includes the debug output trace mechanism and
7451has
7452a much larger code and data size.
7453
7454  Previous Release:
7455    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
7456    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
7457  Current Release:
7458    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
7459    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
7460
7461
74622) iASL Compiler/Disassembler:
7463
7464Implemented support to allow multiple files to be compiled/disassembled
7465in
7466a
7467single invocation. This includes command line wildcard support for both
7468the
7469Windows and Unix versions of the compiler. This feature simplifies the
7470disassembly and compilation of multiple ACPI tables in a single
7471directory.
7472
7473----------------------------------------
747408 May 2007. Summary of changes for version 20070508:
7475
74761) ACPI CA Core Subsystem:
7477
7478Implemented a Microsoft compatibility design change for the handling of
7479the
7480Notify AML operator. Previously, notify handlers were dispatched and
7481executed completely asynchronously in a deferred thread. The new design
7482still executes the notify handlers in a different thread, but the
7483original
7484thread that executed the Notify() now waits at a synchronization point
7485for
7486the notify handler to complete. Some machines depend on a synchronous
7487Notify
7488operator in order to operate correctly.
7489
7490Implemented support to allow Package objects to be passed as method
7491arguments to the external AcpiEvaluateObject interface. Previously, this
7492would return the AE_NOT_IMPLEMENTED exception. This feature had not been
7493implemented since there were no reserved control methods that required it
7494until recently.
7495
7496Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
7497that
7498contained invalid non-zero values in reserved fields could cause later
7499failures because these fields have meaning in later revisions of the
7500FADT.
7501For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
7502fields
7503are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
7504
7505Fixed a problem where the Global Lock handle was not properly updated if
7506a
7507thread that acquired the Global Lock via executing AML code then
7508attempted
7509to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
7510Joe
7511Liu.
7512
7513Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
7514could be corrupted if the interrupt being removed was at the head of the
7515list. Reported by Linn Crosetto.
7516
7517Example Code and Data Size: These are the sizes for the OS-independent
7518acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7519debug version of the code includes the debug output trace mechanism and
7520has
7521a much larger code and data size.
7522
7523  Previous Release:
7524    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7525    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
7526  Current Release:
7527    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
7528    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
7529
7530----------------------------------------
753120 March 2007. Summary of changes for version 20070320:
7532
75331) ACPI CA Core Subsystem:
7534
7535Implemented a change to the order of interpretation and evaluation of AML
7536operand objects within the AML interpreter. The interpreter now evaluates
7537operands in the order that they appear in the AML stream (and the
7538corresponding ASL code), instead of in the reverse order (after the
7539entire
7540operand list has been parsed). The previous behavior caused several
7541subtle
7542incompatibilities with the Microsoft AML interpreter as well as being
7543somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
7544
7545Implemented a change to the ACPI Global Lock support. All interfaces to
7546the
7547global lock now allow the same thread to acquire the lock multiple times.
7548This affects the AcpiAcquireGlobalLock external interface to the global
7549lock
7550as well as the internal use of the global lock to support AML fields -- a
7551control method that is holding the global lock can now simultaneously
7552access
7553AML fields that require global lock protection. Previously, in both
7554cases,
7555this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
7556to
7557AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
7558Controller. There is no change to the behavior of the AML Acquire
7559operator,
7560as this can already be used to acquire a mutex multiple times by the same
7561thread. BZ 8066. With assistance from Alexey Starikovskiy.
7562
7563Fixed a problem where invalid objects could be referenced in the AML
7564Interpreter after error conditions. During operand evaluation, ensure
7565that
7566the internal "Return Object" field is cleared on error and only valid
7567pointers are stored there. Caused occasional access to deleted objects
7568that
7569resulted in "large reference count" warning messages. Valery Podrezov.
7570
7571Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
7572on
7573deeply nested control method invocations. BZ 7873, local BZ 487. Valery
7574Podrezov.
7575
7576Fixed an internal problem with the handling of result objects on the
7577interpreter result stack. BZ 7872. Valery Podrezov.
7578
7579Removed obsolete code that handled the case where AML_NAME_OP is the
7580target
7581of a reference (Reference.Opcode). This code was no longer necessary. BZ
75827874. Valery Podrezov.
7583
7584Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
7585was
7586a
7587remnant from the previously discontinued 16-bit support.
7588
7589Example Code and Data Size: These are the sizes for the OS-independent
7590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7591debug version of the code includes the debug output trace mechanism and
7592has
7593a much larger code and data size.
7594
7595  Previous Release:
7596    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7597    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7598  Current Release:
7599    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7600    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
7601
7602----------------------------------------
760326 January 2007. Summary of changes for version 20070126:
7604
76051) ACPI CA Core Subsystem:
7606
7607Added the 2007 copyright to all module headers and signons. This affects
7608virtually every file in the ACPICA core subsystem, the iASL compiler, and
7609the utilities.
7610
7611Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
7612during a table load. A bad pointer was passed in the case where the DSDT
7613is
7614overridden, causing a fault in this case.
7615
7616Example Code and Data Size: These are the sizes for the OS-independent
7617acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7618debug version of the code includes the debug output trace mechanism and
7619has
7620a much larger code and data size.
7621
7622  Previous Release:
7623    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7624    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7625  Current Release:
7626    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7627    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7628
7629----------------------------------------
763015 December 2006. Summary of changes for version 20061215:
7631
76321) ACPI CA Core Subsystem:
7633
7634Support for 16-bit ACPICA has been completely removed since it is no
7635longer
7636necessary and it clutters the code. All 16-bit macros, types, and
7637conditional compiles have been removed, cleaning up and simplifying the
7638code
7639across the entire subsystem. DOS support is no longer needed since the
7640bootable Linux firmware kit is now available.
7641
7642The handler for the Global Lock is now removed during AcpiTerminate to
7643enable a clean subsystem restart, via the implementation of the
7644AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
7645HP)
7646
7647Implemented enhancements to the multithreading support within the
7648debugger
7649to enable improved multithreading debugging and evaluation of the
7650subsystem.
7651(Valery Podrezov)
7652
7653Debugger: Enhanced the Statistics/Memory command to emit the total
7654(maximum)
7655memory used during the execution, as well as the maximum memory consumed
7656by
7657each of the various object types. (Valery Podrezov)
7658
7659Example Code and Data Size: These are the sizes for the OS-independent
7660acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7661debug version of the code includes the debug output trace mechanism and
7662has
7663a much larger code and data size.
7664
7665  Previous Release:
7666    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7667    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7668  Current Release:
7669    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7670    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7671
7672
76732) iASL Compiler/Disassembler and Tools:
7674
7675AcpiExec: Implemented a new option (-m) to display full memory use
7676statistics upon subsystem/program termination. (Valery Podrezov)
7677
7678----------------------------------------
767909 November 2006. Summary of changes for version 20061109:
7680
76811) ACPI CA Core Subsystem:
7682
7683Optimized the Load ASL operator in the case where the source operand is
7684an
7685operation region. Simply map the operation region memory, instead of
7686performing a bytewise read. (Region must be of type SystemMemory, see
7687below.)
7688
7689Fixed the Load ASL operator for the case where the source operand is a
7690region field. A buffer object is also allowed as the source operand. BZ
7691480
7692
7693Fixed a problem where the Load ASL operator allowed the source operand to
7694be
7695an operation region of any type. It is now restricted to regions of type
7696SystemMemory, as per the ACPI specification. BZ 481
7697
7698Additional cleanup and optimizations for the new Table Manager code.
7699
7700AcpiEnable will now fail if all of the required ACPI tables are not
7701loaded
7702(FADT, FACS, DSDT). BZ 477
7703
7704Added #pragma pack(8/4) to acobject.h to ensure that the structures in
7705this
7706header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
7707manually optimized to be aligned and will not work if it is byte-packed.
7708
7709Example Code and Data Size: These are the sizes for the OS-independent
7710acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7711debug version of the code includes the debug output trace mechanism and
7712has
7713a much larger code and data size.
7714
7715  Previous Release:
7716    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
7717    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
7718  Current Release:
7719    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7720    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7721
7722
77232) iASL Compiler/Disassembler and Tools:
7724
7725Fixed a problem where the presence of the _OSI predefined control method
7726within complex expressions could cause an internal compiler error.
7727
7728AcpiExec: Implemented full region support for multiple address spaces.
7729SpaceId is now part of the REGION object. BZ 429
7730
7731----------------------------------------
773211 October 2006. Summary of changes for version 20061011:
7733
77341) ACPI CA Core Subsystem:
7735
7736Completed an AML interpreter performance enhancement for control method
7737execution. Previously a 2-pass parse/execution, control methods are now
7738completely parsed and executed in a single pass. This improves overall
7739interpreter performance by ~25%, reduces code size, and reduces CPU stack
7740use. (Valery Podrezov + interpreter changes in version 20051202 that
7741eliminated namespace loading during the pass one parse.)
7742
7743Implemented _CID support for PCI Root Bridge detection. If the _HID does
7744not
7745match the predefined PCI Root Bridge IDs, the _CID list (if present) is
7746now
7747obtained and also checked for an ID match.
7748
7749Implemented additional support for the PCI _ADR execution: upsearch until
7750a
7751device scope is found before executing _ADR. This allows PCI_Config
7752operation regions to be declared locally within control methods
7753underneath
7754PCI device objects.
7755
7756Fixed a problem with a possible race condition between threads executing
7757AcpiWalkNamespace and the AML interpreter. This condition was removed by
7758modifying AcpiWalkNamespace to (by default) ignore all temporary
7759namespace
7760entries created during any concurrent control method execution. An
7761additional namespace race condition is known to exist between
7762AcpiWalkNamespace and the Load/Unload ASL operators and is still under
7763investigation.
7764
7765Restructured the AML ParseLoop function, breaking it into several
7766subfunctions in order to reduce CPU stack use and improve
7767maintainability.
7768(Mikhail Kouzmich)
7769
7770AcpiGetHandle: Fix for parameter validation to detect invalid
7771combinations
7772of prefix handle and pathname. BZ 478
7773
7774Example Code and Data Size: These are the sizes for the OS-independent
7775acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7776debug version of the code includes the debug output trace mechanism and
7777has
7778a much larger code and data size.
7779
7780  Previous Release:
7781    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7782    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
7783  Current Release:
7784    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
7785    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
7786
77872) iASL Compiler/Disassembler and Tools:
7788
7789Ported the -g option (get local ACPI tables) to the new ACPICA Table
7790Manager
7791to restore original behavior.
7792
7793----------------------------------------
779427 September 2006. Summary of changes for version 20060927:
7795
77961) ACPI CA Core Subsystem:
7797
7798Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
7799These functions now use a spinlock for mutual exclusion and the interrupt
7800level indication flag is not needed.
7801
7802Fixed a problem with the Global Lock where the lock could appear to be
7803obtained before it is actually obtained. The global lock semaphore was
7804inadvertently created with one unit instead of zero units. (BZ 464)
7805Fiodor
7806Suietov.
7807
7808Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
7809during
7810a read from a buffer or region field. (BZ 458) Fiodor Suietov.
7811
7812Example Code and Data Size: These are the sizes for the OS-independent
7813acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7814debug version of the code includes the debug output trace mechanism and
7815has
7816a much larger code and data size.
7817
7818  Previous Release:
7819    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7820    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7821  Current Release:
7822    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7823    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
7824
7825
78262) iASL Compiler/Disassembler and Tools:
7827
7828Fixed a compilation problem with the pre-defined Resource Descriptor
7829field
7830names where an "object does not exist" error could be incorrectly
7831generated
7832if the parent ResourceTemplate pathname places the template within a
7833different namespace scope than the current scope. (BZ 7212)
7834
7835Fixed a problem where the compiler could hang after syntax errors
7836detected
7837in an ElseIf construct. (BZ 453)
7838
7839Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
7840operator. An incorrect output filename was produced when this parameter
7841was
7842a null string (""). Now, the original input filename is used as the AML
7843output filename, with an ".aml" extension.
7844
7845Implemented a generic batch command mode for the AcpiExec utility
7846(execute
7847any AML debugger command) (Valery Podrezov).
7848
7849----------------------------------------
785012 September 2006. Summary of changes for version 20060912:
7851
78521) ACPI CA Core Subsystem:
7853
7854Enhanced the implementation of the "serialized mode" of the interpreter
7855(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
7856specified, instead of creating a serialization semaphore per control
7857method,
7858the interpreter lock is simply no longer released before a blocking
7859operation during control method execution. This effectively makes the AML
7860Interpreter single-threaded. The overhead of a semaphore per-method is
7861eliminated.
7862
7863Fixed a regression where an error was no longer emitted if a control
7864method
7865attempts to create 2 objects of the same name. This once again returns
7866AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
7867that
7868will dynamically serialize the control method to possible prevent future
7869errors. (BZ 440)
7870
7871Integrated a fix for a problem with PCI Express HID detection in the PCI
7872Config Space setup procedure. (BZ 7145)
7873
7874Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
7875AcpiHwInitialize function - the FADT registers are now validated when the
7876table is loaded.
7877
7878Added two new warnings during FADT verification - 1) if the FADT is
7879larger
7880than the largest known FADT version, and 2) if there is a mismatch
7881between
7882a
788332-bit block address and the 64-bit X counterpart (when both are non-
7884zero.)
7885
7886Example Code and Data Size: These are the sizes for the OS-independent
7887acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7888debug version of the code includes the debug output trace mechanism and
7889has
7890a much larger code and data size.
7891
7892  Previous Release:
7893    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7894    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7895  Current Release:
7896    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7897    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7898
7899
79002) iASL Compiler/Disassembler and Tools:
7901
7902Fixed a problem with the implementation of the Switch() operator where
7903the
7904temporary variable was declared too close to the actual Switch, instead
7905of
7906at method level. This could cause a problem if the Switch() operator is
7907within a while loop, causing an error on the second iteration. (BZ 460)
7908
7909Disassembler - fix for error emitted for unknown type for target of scope
7910operator. Now, ignore it and continue.
7911
7912Disassembly of an FADT now verifies the input FADT and reports any errors
7913found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
7914
7915Disassembly of raw data buffers with byte initialization data now
7916prefixes
7917each output line with the current buffer offset.
7918
7919Disassembly of ASF! table now includes all variable-length data fields at
7920the end of some of the subtables.
7921
7922The disassembler now emits a comment if a buffer appears to be a
7923ResourceTemplate, but cannot be disassembled as such because the EndTag
7924does
7925not appear at the very end of the buffer.
7926
7927AcpiExec - Added the "-t" command line option to enable the serialized
7928mode
7929of the AML interpreter.
7930
7931----------------------------------------
793231 August 2006. Summary of changes for version 20060831:
7933
79341) ACPI CA Core Subsystem:
7935
7936Miscellaneous fixes for the Table Manager:
7937- Correctly initialize internal common FADT for all 64-bit "X" fields
7938- Fixed a couple table mapping issues during table load
7939- Fixed a couple alignment issues for IA64
7940- Initialize input array to zero in AcpiInitializeTables
7941- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
7942AcpiGetTableByIndex
7943
7944Change for GPE support: when a "wake" GPE is received, all wake GPEs are
7945now
7946immediately disabled to prevent the waking GPE from firing again and to
7947prevent other wake GPEs from interrupting the wake process.
7948
7949Added the AcpiGpeCount global that tracks the number of processed GPEs,
7950to
7951be used for debugging systems with a large number of ACPI interrupts.
7952
7953Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
7954both the ACPICA headers and the disassembler.
7955
7956Example Code and Data Size: These are the sizes for the OS-independent
7957acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7958debug version of the code includes the debug output trace mechanism and
7959has
7960a much larger code and data size.
7961
7962  Previous Release:
7963    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7964    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7965  Current Release:
7966    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7967    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7968
7969
79702) iASL Compiler/Disassembler and Tools:
7971
7972Disassembler support for the DMAR ACPI table.
7973
7974----------------------------------------
797523 August 2006. Summary of changes for version 20060823:
7976
79771) ACPI CA Core Subsystem:
7978
7979The Table Manager component has been completely redesigned and
7980reimplemented. The new design is much simpler, and reduces the overall
7981code
7982and data size of the kernel-resident ACPICA by approximately 5%. Also, it
7983is
7984now possible to obtain the ACPI tables very early during kernel
7985initialization, even before dynamic memory management is initialized.
7986(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
7987
7988Obsolete ACPICA interfaces:
7989
7990- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
7991init
7992time).
7993- AcpiLoadTable: Not needed.
7994- AcpiUnloadTable: Not needed.
7995
7996New ACPICA interfaces:
7997
7998- AcpiInitializeTables: Must be called before the table manager can be
7999used.
8000- AcpiReallocateRootTable: Used to transfer the root table to dynamically
8001allocated memory after it becomes available.
8002- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
8003tables
8004in the RSDT/XSDT.
8005
8006Other ACPICA changes:
8007
8008- AcpiGetTableHeader returns the actual mapped table header, not a copy.
8009Use
8010AcpiOsUnmapMemory to free this mapping.
8011- AcpiGetTable returns the actual mapped table. The mapping is managed
8012internally and must not be deleted by the caller. Use of this interface
8013causes no additional dynamic memory allocation.
8014- AcpiFindRootPointer: Support for physical addressing has been
8015eliminated,
8016it appeared to be unused.
8017- The interface to AcpiOsMapMemory has changed to be consistent with the
8018other allocation interfaces.
8019- The interface to AcpiOsGetRootPointer has changed to eliminate
8020unnecessary
8021parameters.
8022- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
802364-
8024bit platforms. Was previously 64 bits on all platforms.
8025- The interface to the ACPI Global Lock acquire/release macros have
8026changed
8027slightly since ACPICA no longer keeps a local copy of the FACS with a
8028constructed pointer to the actual global lock.
8029
8030Porting to the new table manager:
8031
8032- AcpiInitializeTables: Must be called once, and can be called anytime
8033during the OS initialization process. It allows the host to specify an
8034area
8035of memory to be used to store the internal version of the RSDT/XSDT (root
8036table). This allows the host to access ACPI tables before memory
8037management
8038is initialized and running.
8039- AcpiReallocateRootTable: Can be called after memory management is
8040running
8041to copy the root table to a dynamically allocated array, freeing up the
8042scratch memory specified in the call to AcpiInitializeTables.
8043- AcpiSubsystemInitialize: This existing interface is independent of the
8044Table Manager, and does not have to be called before the Table Manager
8045can
8046be used, it only must be called before the rest of ACPICA can be used.
8047- ACPI Tables: Some changes have been made to the names and structure of
8048the
8049actbl.h and actbl1.h header files and may require changes to existing
8050code.
8051For example, bitfields have been completely removed because of their lack
8052of
8053portability across C compilers.
8054- Update interfaces to the Global Lock acquire/release macros if local
8055versions are used. (see acwin.h)
8056
8057Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
8058
8059New files: tbfind.c
8060
8061Example Code and Data Size: These are the sizes for the OS-independent
8062acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8063debug version of the code includes the debug output trace mechanism and
8064has
8065a much larger code and data size.
8066
8067  Previous Release:
8068    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8069    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8070  Current Release:
8071    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
8072    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
8073
8074
80752) iASL Compiler/Disassembler and Tools:
8076
8077No changes for this release.
8078
8079----------------------------------------
808021 July 2006. Summary of changes for version 20060721:
8081
80821) ACPI CA Core Subsystem:
8083
8084The full source code for the ASL test suite used to validate the iASL
8085compiler and the ACPICA core subsystem is being released with the ACPICA
8086source for the first time. The source is contained in a separate package
8087and
8088consists of over 1100 files that exercise all ASL/AML operators. The
8089package
8090should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
8091Fiodor
8092Suietov)
8093
8094Completed a new design and implementation for support of the ACPI Global
8095Lock. On the OS side, the global lock is now treated as a standard AML
8096mutex. Previously, multiple OS threads could "acquire" the global lock
8097simultaneously. However, this could cause the BIOS to be starved out of
8098the
8099lock - especially in cases such as the Embedded Controller driver where
8100there is a tight coupling between the OS and the BIOS.
8101
8102Implemented an optimization for the ACPI Global Lock interrupt mechanism.
8103The Global Lock interrupt handler no longer queues the execution of a
8104separate thread to signal the global lock semaphore. Instead, the
8105semaphore
8106is signaled directly from the interrupt handler.
8107
8108Implemented support within the AML interpreter for package objects that
8109contain a larger AML length (package list length) than the package
8110element
8111count. In this case, the length of the package is truncated to match the
8112package element count. Some BIOS code apparently modifies the package
8113length
8114on the fly, and this change supports this behavior. Provides
8115compatibility
8116with the MS AML interpreter. (With assistance from Fiodor Suietov)
8117
8118Implemented a temporary fix for the BankValue parameter of a Bank Field
8119to
8120support all constant values, now including the Zero and One opcodes.
8121Evaluation of this parameter must eventually be converted to a full
8122TermArg
8123evaluation. A not-implemented error is now returned (temporarily) for
8124non-
8125constant values for this parameter.
8126
8127Fixed problem reports (Fiodor Suietov) integrated:
8128- Fix for premature object deletion after CopyObject on Operation Region
8129(BZ
8130350)
8131
8132Example Code and Data Size: These are the sizes for the OS-independent
8133acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8134debug version of the code includes the debug output trace mechanism and
8135has
8136a much larger code and data size.
8137
8138  Previous Release:
8139    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
8140    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
8141  Current Release:
8142    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8143    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8144
8145
81462) iASL Compiler/Disassembler and Tools:
8147
8148No changes for this release.
8149
8150----------------------------------------
815107 July 2006. Summary of changes for version 20060707:
8152
81531) ACPI CA Core Subsystem:
8154
8155Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
8156that do not allow the initialization of address pointers within packed
8157structures - even though the hardware itself may support misaligned
8158transfers. Some of the debug data structures are packed by default to
8159minimize size.
8160
8161Added an error message for the case where AcpiOsGetThreadId() returns
8162zero.
8163A non-zero value is required by the core ACPICA code to ensure the proper
8164operation of AML mutexes and recursive control methods.
8165
8166The DSDT is now the only ACPI table that determines whether the AML
8167interpreter is in 32-bit or 64-bit mode. Not really a functional change,
8168but
8169the hooks for per-table 32/64 switching have been removed from the code.
8170A
8171clarification to the ACPI specification is forthcoming in ACPI 3.0B.
8172
8173Fixed a possible leak of an OwnerID in the error path of
8174AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
8175deletion to a single place in AcpiTbUninstallTable to correct possible
8176leaks
8177when using the AcpiTbDeleteTablesByType interface (with assistance from
8178Lance Ortiz.)
8179
8180Fixed a problem with Serialized control methods where the semaphore
8181associated with the method could be over-signaled after multiple method
8182invocations.
8183
8184Fixed two issues with the locking of the internal namespace data
8185structure.
8186Both the Unload() operator and AcpiUnloadTable interface now lock the
8187namespace during the namespace deletion associated with the table unload
8188(with assistance from Linn Crosetto.)
8189
8190Fixed problem reports (Valery Podrezov) integrated:
8191- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
8192
8193Fixed problem reports (Fiodor Suietov) integrated:
8194- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
8195- On Address Space handler deletion, needless deactivation call (BZ 374)
8196- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
8197375)
8198- Possible memory leak, Notify sub-objects of Processor, Power,
8199ThermalZone
8200(BZ 376)
8201- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
8202- Minimum Length of RSDT should be validated (BZ 379)
8203- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
8204Handler (BZ (380)
8205- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
8206loaded
8207(BZ 381)
8208
8209Example Code and Data Size: These are the sizes for the OS-independent
8210acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8211debug version of the code includes the debug output trace mechanism and
8212has
8213a much larger code and data size.
8214
8215  Previous Release:
8216    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
8217    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
8218  Current Release:
8219    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
8220    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
8221
8222
82232) iASL Compiler/Disassembler and Tools:
8224
8225Fixed problem reports:
8226Compiler segfault when ASL contains a long (>1024) String declaration (BZ
8227436)
8228
8229----------------------------------------
823023 June 2006. Summary of changes for version 20060623:
8231
82321) ACPI CA Core Subsystem:
8233
8234Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
8235allows the type to be customized to the host OS for improved efficiency
8236(since a spinlock is usually a very small object.)
8237
8238Implemented support for "ignored" bits in the ACPI registers. According
8239to
8240the ACPI specification, these bits should be preserved when writing the
8241registers via a read/modify/write cycle. There are 3 bits preserved in
8242this
8243manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
8244
8245Implemented the initial deployment of new OSL mutex interfaces. Since
8246some
8247host operating systems have separate mutex and semaphore objects, this
8248feature was requested. The base code now uses mutexes (and the new mutex
8249interfaces) wherever a binary semaphore was used previously. However, for
8250the current release, the mutex interfaces are defined as macros to map
8251them
8252to the existing semaphore interfaces. Therefore, no OSL changes are
8253required
8254at this time. (See acpiosxf.h)
8255
8256Fixed several problems with the support for the control method SyncLevel
8257parameter. The SyncLevel now works according to the ACPI specification
8258and
8259in concert with the Mutex SyncLevel parameter, since the current
8260SyncLevel
8261is a property of the executing thread. Mutual exclusion for control
8262methods
8263is now implemented with a mutex instead of a semaphore.
8264
8265Fixed three instances of the use of the C shift operator in the bitfield
8266support code (exfldio.c) to avoid the use of a shift value larger than
8267the
8268target data width. The behavior of C compilers is undefined in this case
8269and
8270can cause unpredictable results, and therefore the case must be detected
8271and
8272avoided. (Fiodor Suietov)
8273
8274Added an info message whenever an SSDT or OEM table is loaded dynamically
8275via the Load() or LoadTable() ASL operators. This should improve
8276debugging
8277capability since it will show exactly what tables have been loaded
8278(beyond
8279the tables present in the RSDT/XSDT.)
8280
8281Example Code and Data Size: These are the sizes for the OS-independent
8282acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8283debug version of the code includes the debug output trace mechanism and
8284has
8285a much larger code and data size.
8286
8287  Previous Release:
8288    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
8289    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
8290  Current Release:
8291    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
8292    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
8293
8294
82952) iASL Compiler/Disassembler and Tools:
8296
8297No changes for this release.
8298
8299----------------------------------------
830008 June 2006. Summary of changes for version 20060608:
8301
83021) ACPI CA Core Subsystem:
8303
8304Converted the locking mutex used for the ACPI hardware to a spinlock.
8305This
8306change should eliminate all problems caused by attempting to acquire a
8307semaphore at interrupt level, and it means that all ACPICA external
8308interfaces that directly access the ACPI hardware can be safely called
8309from
8310interrupt level. OSL code that implements the semaphore interfaces should
8311be
8312able to eliminate any workarounds for being called at interrupt level.
8313
8314Fixed a regression introduced in 20060526 where the ACPI device
8315initialization could be prematurely aborted with an AE_NOT_FOUND if a
8316device
8317did not have an optional _INI method.
8318
8319Fixed an IndexField issue where a write to the Data Register should be
8320limited in size to the AccessSize (width) of the IndexField itself. (BZ
8321433,
8322Fiodor Suietov)
8323
8324Fixed problem reports (Valery Podrezov) integrated:
8325- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
8326
8327Fixed problem reports (Fiodor Suietov) integrated:
8328- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
8329
8330Removed four global mutexes that were obsolete and were no longer being
8331used.
8332
8333Example Code and Data Size: These are the sizes for the OS-independent
8334acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8335debug version of the code includes the debug output trace mechanism and
8336has
8337a much larger code and data size.
8338
8339  Previous Release:
8340    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
8341    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
8342  Current Release:
8343    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
8344    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
8345
8346
83472) iASL Compiler/Disassembler and Tools:
8348
8349Fixed a fault when using -g option (get tables from registry) on Windows
8350machines.
8351
8352Fixed problem reports integrated:
8353- Generate error if CreateField NumBits parameter is zero. (BZ 405)
8354- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
8355Suietov)
8356- Global table revision override (-r) is ignored (BZ 413)
8357
8358----------------------------------------
835926 May 2006. Summary of changes for version 20060526:
8360
83611) ACPI CA Core Subsystem:
8362
8363Restructured, flattened, and simplified the internal interfaces for
8364namespace object evaluation - resulting in smaller code, less CPU stack
8365use,
8366and fewer interfaces. (With assistance from Mikhail Kouzmich)
8367
8368Fixed a problem with the CopyObject operator where the first parameter
8369was
8370not typed correctly for the parser, interpreter, compiler, and
8371disassembler.
8372Caused various errors and unexpected behavior.
8373
8374Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
8375produced incorrect results with some C compilers. Since the behavior of C
8376compilers when the shift value is larger than the datatype width is
8377apparently not well defined, the interpreter now detects this condition
8378and
8379simply returns zero as expected in all such cases. (BZ 395)
8380
8381Fixed problem reports (Valery Podrezov) integrated:
8382- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
8383- Allow interpreter to handle nested method declarations (BZ 5361)
8384
8385Fixed problem reports (Fiodor Suietov) integrated:
8386- AcpiTerminate doesn't free debug memory allocation list objects (BZ
8387355)
8388- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
8389356)
8390- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
8391- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
8392- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
8393- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
8394- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
8395- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
8396- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
8397365)
8398- Status of the Global Initialization Handler call not used (BZ 366)
8399- Incorrect object parameter to Global Initialization Handler (BZ 367)
8400
8401Example Code and Data Size: These are the sizes for the OS-independent
8402acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8403debug version of the code includes the debug output trace mechanism and
8404has
8405a much larger code and data size.
8406
8407  Previous Release:
8408    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
8409    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
8410  Current Release:
8411    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
8412    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
8413
8414
84152) iASL Compiler/Disassembler and Tools:
8416
8417Modified the parser to allow the names IO, DMA, and IRQ to be used as
8418namespace identifiers with no collision with existing resource descriptor
8419macro names. This provides compatibility with other ASL compilers and is
8420most useful for disassembly/recompilation of existing tables without
8421parse
8422errors. (With assistance from Thomas Renninger)
8423
8424Disassembler: fixed an incorrect disassembly problem with the
8425DataTableRegion and CopyObject operators. Fixed a possible fault during
8426disassembly of some Alias operators.
8427
8428----------------------------------------
842912 May 2006. Summary of changes for version 20060512:
8430
84311) ACPI CA Core Subsystem:
8432
8433Replaced the AcpiOsQueueForExecution interface with a new interface named
8434AcpiOsExecute. The major difference is that the new interface does not
8435have
8436a Priority parameter, this appeared to be useless and has been replaced
8437by
8438a
8439Type parameter. The Type tells the host what type of execution is being
8440requested, such as global lock handler, notify handler, GPE handler, etc.
8441This allows the host to queue and execute the request as appropriate for
8442the
8443request type, possibly using different work queues and different
8444priorities
8445for the various request types. This enables fixes for multithreading
8446deadlock problems such as BZ #5534, and will require changes to all
8447existing
8448OS interface layers. (Alexey Starikovskiy and Bob Moore)
8449
8450Fixed a possible memory leak associated with the support for the so-
8451called
8452"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
8453Suietov)
8454
8455Fixed a problem with the Load() operator where a table load from an
8456operation region could overwrite an internal table buffer by up to 7
8457bytes
8458and cause alignment faults on IPF systems. (With assistance from Luming
8459Yu)
8460
8461Example Code and Data Size: These are the sizes for the OS-independent
8462acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8463debug version of the code includes the debug output trace mechanism and
8464has
8465a much larger code and data size.
8466
8467  Previous Release:
8468    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
8469    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
8470  Current Release:
8471    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
8472    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
8473
8474
8475
84762) iASL Compiler/Disassembler and Tools:
8477
8478Disassembler: Implemented support to cross reference the internal
8479namespace
8480and automatically generate ASL External() statements for symbols not
8481defined
8482within the current table being disassembled. This will simplify the
8483disassembly and recompilation of interdependent tables such as SSDTs
8484since
8485these statements will no longer have to be added manually.
8486
8487Disassembler: Implemented experimental support to automatically detect
8488invocations of external control methods and generate appropriate
8489External()
8490statements. This is problematic because the AML cannot be correctly
8491parsed
8492until the number of arguments for each control method is known.
8493Currently,
8494standalone method invocations and invocations as the source operand of a
8495Store() statement are supported.
8496
8497Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
8498LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
8499LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
8500more readable and likely closer to the original ASL source.
8501
8502----------------------------------------
850321 April 2006. Summary of changes for version 20060421:
8504
85051) ACPI CA Core Subsystem:
8506
8507Removed a device initialization optimization introduced in 20051216 where
8508the _STA method was not run unless an _INI was also present for the same
8509device. This optimization could cause problems because it could allow
8510_INI
8511methods to be run within a not-present device subtree. (If a not-present
8512device had no _INI, _STA would not be run, the not-present status would
8513not
8514be discovered, and the children of the device would be incorrectly
8515traversed.)
8516
8517Implemented a new _STA optimization where namespace subtrees that do not
8518contain _INI are identified and ignored during device initialization.
8519Selectively running _STA can significantly improve boot time on large
8520machines (with assistance from Len Brown.)
8521
8522Implemented support for the device initialization case where the returned
8523_STA flags indicate a device not-present but functioning. In this case,
8524_INI
8525is not run, but the device children are examined for presence, as per the
8526ACPI specification.
8527
8528Implemented an additional change to the IndexField support in order to
8529conform to MS behavior. The value written to the Index Register is not
8530simply a byte offset, it is a byte offset in units of the access width of
8531the parent Index Field. (Fiodor Suietov)
8532
8533Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
8534interface is called during the creation of all AML operation regions, and
8535allows the host OS to exert control over what addresses it will allow the
8536AML code to access. Operation Regions whose addresses are disallowed will
8537cause a runtime exception when they are actually accessed (will not
8538affect
8539or abort table loading.) See oswinxf or osunixxf for an example
8540implementation.
8541
8542Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
8543interface allows the host OS to match the various "optional"
8544interface/behavior strings for the _OSI predefined control method as
8545appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
8546for an example implementation.
8547
8548Restructured and corrected various problems in the exception handling
8549code
8550paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
8551(with assistance from Takayoshi Kochi.)
8552
8553Modified the Linux source converter to ignore quoted string literals
8554while
8555converting identifiers from mixed to lower case. This will correct
8556problems
8557with the disassembler and other areas where such strings must not be
8558modified.
8559
8560The ACPI_FUNCTION_* macros no longer require quotes around the function
8561name. This allows the Linux source converter to convert the names, now
8562that
8563the converter ignores quoted strings.
8564
8565Example Code and Data Size: These are the sizes for the OS-independent
8566acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8567debug version of the code includes the debug output trace mechanism and
8568has
8569a much larger code and data size.
8570
8571  Previous Release:
8572
8573    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
8574    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
8575  Current Release:
8576    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
8577    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
8578
8579
85802) iASL Compiler/Disassembler and Tools:
8581
8582Implemented 3 new warnings for iASL, and implemented multiple warning
8583levels
8584(w2 flag).
8585
85861) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
8587not
8588WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
8589check for the possible timeout, a warning is issued.
8590
85912) Useless operators: If an ASL operator does not specify an optional
8592target
8593operand and it also does not use the function return value from the
8594operator, a warning is issued since the operator effectively does
8595nothing.
8596
85973) Unreferenced objects: If a namespace object is created, but never
8598referenced, a warning is issued. This is a warning level 2 since there
8599are
8600cases where this is ok, such as when a secondary table is loaded that
8601uses
8602the unreferenced objects. Even so, care is taken to only flag objects
8603that
8604don't look like they will ever be used. For example, the reserved methods
8605(starting with an underscore) are usually not referenced because it is
8606expected that the OS will invoke them.
8607
8608----------------------------------------
860931 March 2006. Summary of changes for version 20060331:
8610
86111) ACPI CA Core Subsystem:
8612
8613Implemented header file support for the following additional ACPI tables:
8614ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
8615support,
8616all current and known ACPI tables are now defined in the ACPICA headers
8617and
8618are available for use by device drivers and other software.
8619
8620Implemented support to allow tables that contain ACPI names with invalid
8621characters to be loaded. Previously, this would cause the table load to
8622fail, but since there are several known cases of such tables on existing
8623machines, this change was made to enable ACPI support for them. Also,
8624this
8625matches the behavior of the Microsoft ACPI implementation.
8626
8627Fixed a couple regressions introduced during the memory optimization in
8628the
862920060317 release. The namespace node definition required additional
8630reorganization and an internal datatype that had been changed to 8-bit
8631was
8632restored to 32-bit. (Valery Podrezov)
8633
8634Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
8635could be passed through to AcpiOsReleaseObject which is unexpected. Such
8636null pointers are now trapped and ignored, matching the behavior of the
8637previous implementation before the deployment of AcpiOsReleaseObject.
8638(Valery Podrezov, Fiodor Suietov)
8639
8640Fixed a memory mapping leak during the deletion of a SystemMemory
8641operation
8642region where a cached memory mapping was not deleted. This became a
8643noticeable problem for operation regions that are defined within
8644frequently
8645used control methods. (Dana Meyers)
8646
8647Reorganized the ACPI table header files into two main files: one for the
8648ACPI tables consumed by the ACPICA core, and another for the
8649miscellaneous
8650ACPI tables that are consumed by the drivers and other software. The
8651various
8652FADT definitions were merged into one common section and three different
8653tables (ACPI 1.0, 1.0+, and 2.0)
8654
8655Example Code and Data Size: These are the sizes for the OS-independent
8656acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8657debug version of the code includes the debug output trace mechanism and
8658has
8659a much larger code and data size.
8660
8661  Previous Release:
8662    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
8663    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
8664  Current Release:
8665    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
8666    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
8667
8668
86692) iASL Compiler/Disassembler and Tools:
8670
8671Disassembler: Implemented support to decode and format all non-AML ACPI
8672tables (tables other than DSDTs and SSDTs.) This includes the new tables
8673added to the ACPICA headers, therefore all current and known ACPI tables
8674are
8675supported.
8676
8677Disassembler: The change to allow ACPI names with invalid characters also
8678enables the disassembly of such tables. Invalid characters within names
8679are
8680changed to '*' to make the name printable; the iASL compiler will still
8681generate an error for such names, however, since this is an invalid ACPI
8682character.
8683
8684Implemented an option for AcpiXtract (-a) to extract all tables found in
8685the
8686input file. The default invocation extracts only the DSDTs and SSDTs.
8687
8688Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
8689makefile for the AcpiXtract utility.
8690
8691----------------------------------------
869217 March 2006. Summary of changes for version 20060317:
8693
86941) ACPI CA Core Subsystem:
8695
8696Implemented the use of a cache object for all internal namespace nodes.
8697Since there are about 1000 static nodes in a typical system, this will
8698decrease memory use for cache implementations that minimize per-
8699allocation
8700overhead (such as a slab allocator.)
8701
8702Removed the reference count mechanism for internal namespace nodes, since
8703it
8704was deemed unnecessary. This reduces the size of each namespace node by
8705about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
8706case,
8707and 32 bytes for the 64-bit case.
8708
8709Optimized several internal data structures to reduce object size on 64-
8710bit
8711platforms by packing data within the 64-bit alignment. This includes the
8712frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
8713instances corresponding to the namespace objects.
8714
8715Added two new strings for the predefined _OSI method: "Windows 2001.1
8716SP1"
8717and "Windows 2006".
8718
8719Split the allocation tracking mechanism out to a separate file, from
8720utalloc.c to uttrack.c. This mechanism appears to be only useful for
8721application-level code. Kernels may wish to not include uttrack.c in
8722distributions.
8723
8724Removed all remnants of the obsolete ACPI_REPORT_* macros and the
8725associated
8726code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
8727macros.)
8728
8729Code and Data Size: These are the sizes for the acpica.lib produced by
8730the
8731Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8732ACPI
8733driver or OSPM code. The debug version of the code includes the debug
8734output
8735trace mechanism and has a much larger code and data size. Note that these
8736values will vary depending on the efficiency of the compiler and the
8737compiler options used during generation.
8738
8739  Previous Release:
8740    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8741    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
8742  Current Release:
8743    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
8744    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
8745
8746
87472) iASL Compiler/Disassembler and Tools:
8748
8749Implemented an ANSI C version of the acpixtract utility. This version
8750will
8751automatically extract the DSDT and all SSDTs from the input acpidump text
8752file and dump the binary output to separate files. It can also display a
8753summary of the input file including the headers for each table found and
8754will extract any single ACPI table, with any signature. (See
8755source/tools/acpixtract)
8756
8757----------------------------------------
875810 March 2006. Summary of changes for version 20060310:
8759
87601) ACPI CA Core Subsystem:
8761
8762Tagged all external interfaces to the subsystem with the new
8763ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
8764assist
8765kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
8766macro. The default definition is NULL.
8767
8768Added the ACPI_THREAD_ID type for the return value from
8769AcpiOsGetThreadId.
8770This allows the host to define this as necessary to simplify kernel
8771integration. The default definition is ACPI_NATIVE_UINT.
8772
8773Fixed two interpreter problems related to error processing, the deletion
8774of
8775objects, and placing invalid pointers onto the internal operator result
8776stack. BZ 6028, 6151 (Valery Podrezov)
8777
8778Increased the reference count threshold where a warning is emitted for
8779large
8780reference counts in order to eliminate unnecessary warnings on systems
8781with
8782large namespaces (especially 64-bit.) Increased the value from 0x400 to
87830x800.
8784
8785Due to universal disagreement as to the meaning of the 'c' in the
8786calloc()
8787function, the ACPI_MEM_CALLOCATE macro has been renamed to
8788ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
8789ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
8790ACPI_FREE.
8791
8792Code and Data Size: These are the sizes for the acpica.lib produced by
8793the
8794Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8795ACPI
8796driver or OSPM code. The debug version of the code includes the debug
8797output
8798trace mechanism and has a much larger code and data size. Note that these
8799values will vary depending on the efficiency of the compiler and the
8800compiler options used during generation.
8801
8802  Previous Release:
8803    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
8804    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
8805  Current Release:
8806    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8807    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
8808
8809
88102) iASL Compiler/Disassembler:
8811
8812Disassembler: implemented support for symbolic resource descriptor
8813references. If a CreateXxxxField operator references a fixed offset
8814within
8815a
8816resource descriptor, a name is assigned to the descriptor and the offset
8817is
8818translated to the appropriate resource tag and pathname. The addition of
8819this support brings the disassembled code very close to the original ASL
8820source code and helps eliminate run-time errors when the disassembled
8821code
8822is modified (and recompiled) in such a way as to invalidate the original
8823fixed offsets.
8824
8825Implemented support for a Descriptor Name as the last parameter to the
8826ASL
8827Register() macro. This parameter was inadvertently left out of the ACPI
8828specification, and will be added for ACPI 3.0b.
8829
8830Fixed a problem where the use of the "_OSI" string (versus the full path
8831"\_OSI") caused an internal compiler error. ("No back ptr to op")
8832
8833Fixed a problem with the error message that occurs when an invalid string
8834is
8835used for a _HID object (such as one with an embedded asterisk:
8836"*PNP010A".)
8837The correct message is now displayed.
8838
8839----------------------------------------
884017 February 2006. Summary of changes for version 20060217:
8841
88421) ACPI CA Core Subsystem:
8843
8844Implemented a change to the IndexField support to match the behavior of
8845the
8846Microsoft AML interpreter. The value written to the Index register is now
8847a
8848byte offset, no longer an index based upon the width of the Data
8849register.
8850This should fix IndexField problems seen on some machines where the Data
8851register is not exactly one byte wide. The ACPI specification will be
8852clarified on this point.
8853
8854Fixed a problem where several resource descriptor types could overrun the
8855internal descriptor buffer due to size miscalculation: VendorShort,
8856VendorLong, and Interrupt. This was noticed on IA64 machines, but could
8857affect all platforms.
8858
8859Fixed a problem where individual resource descriptors were misaligned
8860within
8861the internal buffer, causing alignment faults on IA64 platforms.
8862
8863Code and Data Size: These are the sizes for the acpica.lib produced by
8864the
8865Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8866ACPI
8867driver or OSPM code. The debug version of the code includes the debug
8868output
8869trace mechanism and has a much larger code and data size. Note that these
8870values will vary depending on the efficiency of the compiler and the
8871compiler options used during generation.
8872
8873  Previous Release:
8874    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8875    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8876  Current Release:
8877    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
8878    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
8879
8880
88812) iASL Compiler/Disassembler:
8882
8883Implemented support for new reserved names: _WDG and _WED are Microsoft
8884extensions for Windows Instrumentation Management, _TDL is a new ACPI-
8885defined method (Throttling Depth Limit.)
8886
8887Fixed a problem where a zero-length VendorShort or VendorLong resource
8888descriptor was incorrectly emitted as a descriptor of length one.
8889
8890----------------------------------------
889110 February 2006. Summary of changes for version 20060210:
8892
88931) ACPI CA Core Subsystem:
8894
8895Removed a couple of extraneous ACPI_ERROR messages that appeared during
8896normal execution. These became apparent after the conversion from
8897ACPI_DEBUG_PRINT.
8898
8899Fixed a problem where the CreateField operator could hang if the BitIndex
8900or
8901NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
8902
8903Fixed a problem where a DeRefOf operation on a buffer object incorrectly
8904failed with an exception. This also fixes a couple of related RefOf and
8905DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
8906
8907Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
8908of
8909AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
8910BZ
89115480)
8912
8913Implemented a memory cleanup at the end of the execution of each
8914iteration
8915of an AML While() loop, preventing the accumulation of outstanding
8916objects.
8917(Valery Podrezov, BZ 5427)
8918
8919Eliminated a chunk of duplicate code in the object resolution code.
8920(Valery
8921Podrezov, BZ 5336)
8922
8923Fixed several warnings during the 64-bit code generation.
8924
8925The AcpiSrc source code conversion tool now inserts one line of
8926whitespace
8927after an if() statement that is followed immediately by a comment,
8928improving
8929readability of the Linux code.
8930
8931Code and Data Size: The current and previous library sizes for the core
8932subsystem are shown below. These are the code and data sizes for the
8933acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8934These
8935values do not include any ACPI driver or OSPM code. The debug version of
8936the
8937code includes the debug output trace mechanism and has a much larger code
8938and data size. Note that these values will vary depending on the
8939efficiency
8940of the compiler and the compiler options used during generation.
8941
8942  Previous Release:
8943    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8944    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8945  Current Release:
8946    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8947    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8948
8949
89502) iASL Compiler/Disassembler:
8951
8952Fixed a problem with the disassembly of a BankField operator with a
8953complex
8954expression for the BankValue parameter.
8955
8956----------------------------------------
895727 January 2006. Summary of changes for version 20060127:
8958
89591) ACPI CA Core Subsystem:
8960
8961Implemented support in the Resource Manager to allow unresolved
8962namestring
8963references within resource package objects for the _PRT method. This
8964support
8965is in addition to the previously implemented unresolved reference support
8966within the AML parser. If the interpreter slack mode is enabled, these
8967unresolved references will be passed through to the caller as a NULL
8968package
8969entry.
8970
8971Implemented and deployed new macros and functions for error and warning
8972messages across the subsystem. These macros are simpler and generate less
8973code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
8974ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
8975macros remain defined to allow ACPI drivers time to migrate to the new
8976macros.
8977
8978Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
8979the
8980Acquire/Release Lock OSL interfaces.
8981
8982Fixed a problem where Alias ASL operators are sometimes not correctly
8983resolved, in both the interpreter and the iASL compiler.
8984
8985Fixed several problems with the implementation of the
8986ConcatenateResTemplate
8987ASL operator. As per the ACPI specification, zero length buffers are now
8988treated as a single EndTag. One-length buffers always cause a fatal
8989exception. Non-zero length buffers that do not end with a full 2-byte
8990EndTag
8991cause a fatal exception.
8992
8993Fixed a possible structure overwrite in the AcpiGetObjectInfo external
8994interface. (With assistance from Thomas Renninger)
8995
8996Code and Data Size: The current and previous library sizes for the core
8997subsystem are shown below. These are the code and data sizes for the
8998acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8999These
9000values do not include any ACPI driver or OSPM code. The debug version of
9001the
9002code includes the debug output trace mechanism and has a much larger code
9003and data size. Note that these values will vary depending on the
9004efficiency
9005of the compiler and the compiler options used during generation.
9006
9007  Previous Release:
9008    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9009    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9010  Current Release:
9011    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
9012    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
9013
9014
90152) iASL Compiler/Disassembler:
9016
9017Fixed an internal error that was generated for any forward references to
9018ASL
9019Alias objects.
9020
9021----------------------------------------
902213 January 2006. Summary of changes for version 20060113:
9023
90241) ACPI CA Core Subsystem:
9025
9026Added 2006 copyright to all module headers and signons. This affects
9027virtually every file in the ACPICA core subsystem, iASL compiler, and the
9028utilities.
9029
9030Enhanced the ACPICA error reporting in order to simplify user migration
9031to
9032the non-debug version of ACPICA. Replaced all instances of the
9033ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
9034debug
9035levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
9036respectively. This preserves all error and warning messages in the non-
9037debug
9038version of the ACPICA code (this has been referred to as the "debug lite"
9039option.) Over 200 cases were converted to create a total of over 380
9040error/warning messages across the ACPICA code. This increases the code
9041and
9042data size of the default non-debug version of the code somewhat (about
904313K),
9044but all error/warning reporting may be disabled if desired (and code
9045eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
9046configuration option. The size of the debug version of ACPICA remains
9047about
9048the same.
9049
9050Fixed a memory leak within the AML Debugger "Set" command. One object was
9051not properly deleted for every successful invocation of the command.
9052
9053Code and Data Size: The current and previous library sizes for the core
9054subsystem are shown below. These are the code and data sizes for the
9055acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9056These
9057values do not include any ACPI driver or OSPM code. The debug version of
9058the
9059code includes the debug output trace mechanism and has a much larger code
9060and data size. Note that these values will vary depending on the
9061efficiency
9062of the compiler and the compiler options used during generation.
9063
9064  Previous Release:
9065    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
9066    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
9067  Current Release:
9068    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
9069    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
9070
9071
90722) iASL Compiler/Disassembler:
9073
9074The compiler now officially supports the ACPI 3.0a specification that was
9075released on December 30, 2005. (Specification is available at
9076www.acpi.info)
9077
9078----------------------------------------
907916 December 2005. Summary of changes for version 20051216:
9080
90811) ACPI CA Core Subsystem:
9082
9083Implemented optional support to allow unresolved names within ASL Package
9084objects. A null object is inserted in the package when a named reference
9085cannot be located in the current namespace. Enabled via the interpreter
9086slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
9087machines
9088that contain such code.
9089
9090Implemented an optimization to the initialization sequence that can
9091improve
9092boot time. During ACPI device initialization, the _STA method is now run
9093if
9094and only if the _INI method exists. The _STA method is used to determine
9095if
9096the device is present; An _INI can only be run if _STA returns present,
9097but
9098it is a waste of time to run the _STA method if the _INI does not exist.
9099(Prototype and assistance from Dong Wei)
9100
9101Implemented use of the C99 uintptr_t for the pointer casting macros if it
9102is
9103available in the current compiler. Otherwise, the default (void *) cast
9104is
9105used as before.
9106
9107Fixed some possible memory leaks found within the execution path of the
9108Break, Continue, If, and CreateField operators. (Valery Podrezov)
9109
9110Fixed a problem introduced in the 20051202 release where an exception is
9111generated during method execution if a control method attempts to declare
9112another method.
9113
9114Moved resource descriptor string constants that are used by both the AML
9115disassembler and AML debugger to the common utilities directory so that
9116these components are independent.
9117
9118Implemented support in the AcpiExec utility (-e switch) to globally
9119ignore
9120exceptions during control method execution (method is not aborted.)
9121
9122Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
9123generation.
9124
9125Code and Data Size: The current and previous library sizes for the core
9126subsystem are shown below. These are the code and data sizes for the
9127acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9128These
9129values do not include any ACPI driver or OSPM code. The debug version of
9130the
9131code includes the debug output trace mechanism and has a much larger code
9132and data size. Note that these values will vary depending on the
9133efficiency
9134of the compiler and the compiler options used during generation.
9135
9136  Previous Release:
9137    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9138    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
9139  Current Release:
9140    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
9141    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
9142
9143
91442) iASL Compiler/Disassembler:
9145
9146Fixed a problem where a CPU stack overflow fault could occur if a
9147recursive
9148method call was made from within a Return statement.
9149
9150----------------------------------------
915102 December 2005. Summary of changes for version 20051202:
9152
91531) ACPI CA Core Subsystem:
9154
9155Modified the parsing of control methods to no longer create namespace
9156objects during the first pass of the parse. Objects are now created only
9157during the execute phase, at the moment the namespace creation operator
9158is
9159encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
9160This
9161should eliminate ALREADY_EXISTS exceptions seen on some machines where
9162reentrant control methods are protected by an AML mutex. The mutex will
9163now
9164correctly block multiple threads from attempting to create the same
9165object
9166more than once.
9167
9168Increased the number of available Owner Ids for namespace object tracking
9169from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
9170on
9171some machines with a large number of ACPI tables (either static or
9172dynamic).
9173
9174Fixed a problem with the AcpiExec utility where a fault could occur when
9175the
9176-b switch (batch mode) is used.
9177
9178Enhanced the namespace dump routine to output the owner ID for each
9179namespace object.
9180
9181Code and Data Size: The current and previous library sizes for the core
9182subsystem are shown below. These are the code and data sizes for the
9183acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9184These
9185values do not include any ACPI driver or OSPM code. The debug version of
9186the
9187code includes the debug output trace mechanism and has a much larger code
9188and data size. Note that these values will vary depending on the
9189efficiency
9190of the compiler and the compiler options used during generation.
9191
9192  Previous Release:
9193    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9194    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9195  Current Release:
9196    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9197    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
9198
9199
92002) iASL Compiler/Disassembler:
9201
9202Fixed a parse error during compilation of certain Switch/Case constructs.
9203To
9204simplify the parse, the grammar now allows for multiple Default
9205statements
9206and this error is now detected and flagged during the analysis phase.
9207
9208Disassembler: The disassembly now includes the contents of the original
9209table header within a comment at the start of the file. This includes the
9210name and version of the original ASL compiler.
9211
9212----------------------------------------
921317 November 2005. Summary of changes for version 20051117:
9214
92151) ACPI CA Core Subsystem:
9216
9217Fixed a problem in the AML parser where the method thread count could be
9218decremented below zero if any errors occurred during the method parse
9219phase.
9220This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
9221machines.
9222This also fixed a related regression with the mechanism that detects and
9223corrects methods that cannot properly handle reentrancy (related to the
9224deployment of the new OwnerId mechanism.)
9225
9226Eliminated the pre-parsing of control methods (to detect errors) during
9227table load. Related to the problem above, this was causing unwind issues
9228if
9229any errors occurred during the parse, and it seemed to be overkill. A
9230table
9231load should not be aborted if there are problems with any single control
9232method, thus rendering this feature rather pointless.
9233
9234Fixed a problem with the new table-driven resource manager where an
9235internal
9236buffer overflow could occur for small resource templates.
9237
9238Implemented a new external interface, AcpiGetVendorResource. This
9239interface
9240will find and return a vendor-defined resource descriptor within a _CRS
9241or
9242_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
9243Helgaas.
9244
9245Removed the length limit (200) on string objects as per the upcoming ACPI
92463.0A specification. This affects the following areas of the interpreter:
92471)
9248any implicit conversion of a Buffer to a String, 2) a String object
9249result
9250of the ASL Concatentate operator, 3) the String object result of the ASL
9251ToString operator.
9252
9253Fixed a problem in the Windows OS interface layer (OSL) where a
9254WAIT_FOREVER
9255on a semaphore object would incorrectly timeout. This allows the
9256multithreading features of the AcpiExec utility to work properly under
9257Windows.
9258
9259Updated the Linux makefiles for the iASL compiler and AcpiExec to include
9260the recently added file named "utresrc.c".
9261
9262Code and Data Size: The current and previous library sizes for the core
9263subsystem are shown below. These are the code and data sizes for the
9264acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9265These
9266values do not include any ACPI driver or OSPM code. The debug version of
9267the
9268code includes the debug output trace mechanism and has a much larger code
9269and data size. Note that these values will vary depending on the
9270efficiency
9271of the compiler and the compiler options used during generation.
9272
9273  Previous Release:
9274    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
9275    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9276  Current Release:
9277    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
9278    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9279
9280
92812) iASL Compiler/Disassembler:
9282
9283Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
9284specification. For the iASL compiler, this means that string literals
9285within
9286the source ASL can be of any length.
9287
9288Enhanced the listing output to dump the AML code for resource descriptors
9289immediately after the ASL code for each descriptor, instead of in a block
9290at
9291the end of the entire resource template.
9292
9293Enhanced the compiler debug output to dump the entire original parse tree
9294constructed during the parse phase, before any transforms are applied to
9295the
9296tree. The transformed tree is dumped also.
9297
9298----------------------------------------
929902 November 2005. Summary of changes for version 20051102:
9300
93011) ACPI CA Core Subsystem:
9302
9303Modified the subsystem initialization sequence to improve GPE support.
9304The
9305GPE initialization has been split into two parts in order to defer
9306execution
9307of the _PRW methods (Power Resources for Wake) until after the hardware
9308is
9309fully initialized and the SCI handler is installed. This allows the _PRW
9310methods to access fields protected by the Global Lock. This will fix
9311systems
9312where a NO_GLOBAL_LOCK exception has been seen during initialization.
9313
9314Converted the ACPI internal object disassemble and display code within
9315the
9316AML debugger to fully table-driven operation, reducing code size and
9317increasing maintainability.
9318
9319Fixed a regression with the ConcatenateResTemplate() ASL operator
9320introduced
9321in the 20051021 release.
9322
9323Implemented support for "local" internal ACPI object types within the
9324debugger "Object" command and the AcpiWalkNamespace external interfaces.
9325These local types include RegionFields, BankFields, IndexFields, Alias,
9326and
9327reference objects.
9328
9329Moved common AML resource handling code into a new file, "utresrc.c".
9330This
9331code is shared by both the Resource Manager and the AML Debugger.
9332
9333Code and Data Size: The current and previous library sizes for the core
9334subsystem are shown below. These are the code and data sizes for the
9335acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9336These
9337values do not include any ACPI driver or OSPM code. The debug version of
9338the
9339code includes the debug output trace mechanism and has a much larger code
9340and data size. Note that these values will vary depending on the
9341efficiency
9342of the compiler and the compiler options used during generation.
9343
9344  Previous Release:
9345    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
9346    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
9347  Current Release:
9348    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
9349    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
9350
9351
93522) iASL Compiler/Disassembler:
9353
9354Fixed a problem with very large initializer lists (more than 4000
9355elements)
9356for both Buffer and Package objects where the parse stack could overflow.
9357
9358Enhanced the pre-compile source code scan for non-ASCII characters to
9359ignore
9360characters within comment fields. The scan is now always performed and is
9361no
9362longer optional, detecting invalid characters within a source file
9363immediately rather than during the parse phase or later.
9364
9365Enhanced the ASL grammar definition to force early reductions on all
9366list-
9367style grammar elements so that the overall parse stack usage is greatly
9368reduced. This should improve performance and reduce the possibility of
9369parse
9370stack overflow.
9371
9372Eliminated all reduce/reduce conflicts in the iASL parser generation.
9373Also,
9374with the addition of a %expected statement, the compiler generates from
9375source with no warnings.
9376
9377Fixed a possible segment fault in the disassembler if the input filename
9378does not contain a "dot" extension (Thomas Renninger).
9379
9380----------------------------------------
938121 October 2005. Summary of changes for version 20051021:
9382
93831) ACPI CA Core Subsystem:
9384
9385Implemented support for the EM64T and other x86-64 processors. This
9386essentially entails recognizing that these processors support non-aligned
9387memory transfers. Previously, all 64-bit processors were assumed to lack
9388hardware support for non-aligned transfers.
9389
9390Completed conversion of the Resource Manager to nearly full table-driven
9391operation. Specifically, the resource conversion code (convert AML to
9392internal format and the reverse) and the debug code to dump internal
9393resource descriptors are fully table-driven, reducing code and data size
9394and
9395improving maintainability.
9396
9397The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
9398word
9399on 64-bit processors instead of a fixed 32-bit word. (With assistance
9400from
9401Alexey Starikovskiy)
9402
9403Implemented support within the resource conversion code for the Type-
9404Specific byte within the various ACPI 3.0 *WordSpace macros.
9405
9406Fixed some issues within the resource conversion code for the type-
9407specific
9408flags for both Memory and I/O address resource descriptors. For Memory,
9409implemented support for the MTP and TTP flags. For I/O, split the TRS and
9410TTP flags into two separate fields.
9411
9412Code and Data Size: The current and previous library sizes for the core
9413subsystem are shown below. These are the code and data sizes for the
9414acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9415These
9416values do not include any ACPI driver or OSPM code. The debug version of
9417the
9418code includes the debug output trace mechanism and has a much larger code
9419and data size. Note that these values will vary depending on the
9420efficiency
9421of the compiler and the compiler options used during generation.
9422
9423  Previous Release:
9424    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
9425    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
9426  Current Release:
9427    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
9428    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
9429
9430
9431
94322) iASL Compiler/Disassembler:
9433
9434Relaxed a compiler restriction that disallowed a ResourceIndex byte if
9435the
9436corresponding ResourceSource string was not also present in a resource
9437descriptor declaration. This restriction caused problems with existing
9438AML/ASL code that includes the Index byte without the string. When such
9439AML
9440was disassembled, it could not be compiled without modification. Further,
9441the modified code created a resource template with a different size than
9442the
9443original, breaking code that used fixed offsets into the resource
9444template
9445buffer.
9446
9447Removed a recent feature of the disassembler to ignore a lone
9448ResourceIndex
9449byte. This byte is now emitted if present so that the exact AML can be
9450reproduced when the disassembled code is recompiled.
9451
9452Improved comments and text alignment for the resource descriptor code
9453emitted by the disassembler.
9454
9455Implemented disassembler support for the ACPI 3.0 AccessSize field within
9456a
9457Register() resource descriptor.
9458
9459----------------------------------------
946030 September 2005. Summary of changes for version 20050930:
9461
94621) ACPI CA Core Subsystem:
9463
9464Completed a major overhaul of the Resource Manager code - specifically,
9465optimizations in the area of the AML/internal resource conversion code.
9466The
9467code has been optimized to simplify and eliminate duplicated code, CPU
9468stack
9469use has been decreased by optimizing function parameters and local
9470variables, and naming conventions across the manager have been
9471standardized
9472for clarity and ease of maintenance (this includes function, parameter,
9473variable, and struct/typedef names.) The update may force changes in some
9474driver code, depending on how resources are handled by the host OS.
9475
9476All Resource Manager dispatch and information tables have been moved to a
9477single location for clarity and ease of maintenance. One new file was
9478created, named "rsinfo.c".
9479
9480The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
9481guarantee that the argument is not evaluated twice, making them less
9482prone
9483to macro side-effects. However, since there exists the possibility of
9484additional stack use if a particular compiler cannot optimize them (such
9485as
9486in the debug generation case), the original macros are optionally
9487available.
9488Note that some invocations of the return_VALUE macro may now cause size
9489mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
9490to
9491eliminate these. (From Randy Dunlap)
9492
9493Implemented a new mechanism to enable debug tracing for individual
9494control
9495methods. A new external interface, AcpiDebugTrace, is provided to enable
9496this mechanism. The intent is to allow the host OS to easily enable and
9497disable tracing for problematic control methods. This interface can be
9498easily exposed to a user or debugger interface if desired. See the file
9499psxface.c for details.
9500
9501AcpiUtCallocate will now return a valid pointer if a length of zero is
9502specified - a length of one is used and a warning is issued. This matches
9503the behavior of AcpiUtAllocate.
9504
9505Code and Data Size: The current and previous library sizes for the core
9506subsystem are shown below. These are the code and data sizes for the
9507acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9508These
9509values do not include any ACPI driver or OSPM code. The debug version of
9510the
9511code includes the debug output trace mechanism and has a much larger code
9512and data size. Note that these values will vary depending on the
9513efficiency
9514of the compiler and the compiler options used during generation.
9515
9516  Previous Release:
9517    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
9518    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
9519  Current Release:
9520    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
9521    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
9522
9523
95242) iASL Compiler/Disassembler:
9525
9526A remark is issued if the effective compile-time length of a package or
9527buffer is zero. Previously, this was a warning.
9528
9529----------------------------------------
953016 September 2005. Summary of changes for version 20050916:
9531
95321) ACPI CA Core Subsystem:
9533
9534Fixed a problem within the Resource Manager where support for the Generic
9535Register descriptor was not fully implemented. This descriptor is now
9536fully
9537recognized, parsed, disassembled, and displayed.
9538
9539Completely restructured the Resource Manager code to utilize table-driven
9540dispatch and lookup, eliminating many of the large switch() statements.
9541This
9542reduces overall subsystem code size and code complexity. Affects the
9543resource parsing and construction, disassembly, and debug dump output.
9544
9545Cleaned up and restructured the debug dump output for all resource
9546descriptors. Improved readability of the output and reduced code size.
9547
9548Fixed a problem where changes to internal data structures caused the
9549optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
9550
9551Code and Data Size: The current and previous library sizes for the core
9552subsystem are shown below. These are the code and data sizes for the
9553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
9554These
9555values do not include any ACPI driver or OSPM code. The debug version of
9556the
9557code includes the debug output trace mechanism and has a much larger code
9558and data size. Note that these values will vary depending on the
9559efficiency
9560of the compiler and the compiler options used during generation.
9561
9562  Previous Release:
9563    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
9564    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
9565  Current Release:
9566    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
9567    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
9568
9569
95702) iASL Compiler/Disassembler:
9571
9572Updated the disassembler to automatically insert an EndDependentFn()
9573macro
9574into the ASL stream if this macro is missing in the original AML code,
9575simplifying compilation of the resulting ASL module.
9576
9577Fixed a problem in the disassembler where a disassembled ResourceSource
9578string (within a large resource descriptor) was not surrounded by quotes
9579and
9580not followed by a comma, causing errors when the resulting ASL module was
9581compiled. Also, escape sequences within a ResourceSource string are now
9582handled correctly (especially "\\")
9583
9584----------------------------------------
958502 September 2005. Summary of changes for version 20050902:
9586
95871) ACPI CA Core Subsystem:
9588
9589Fixed a problem with the internal Owner ID allocation and deallocation
9590mechanisms for control method execution and recursive method invocation.
9591This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
9592messages seen on some systems. Recursive method invocation depth is
9593currently limited to 255. (Alexey Starikovskiy)
9594
9595Completely eliminated all vestiges of support for the "module-level
9596executable code" until this support is fully implemented and debugged.
9597This
9598should eliminate the NO_RETURN_VALUE exceptions seen during table load on
9599some systems that invoke this support.
9600
9601Fixed a problem within the resource manager code where the transaction
9602flags
9603for a 64-bit address descriptor were handled incorrectly in the type-
9604specific flag byte.
9605
9606Consolidated duplicate code within the address descriptor resource
9607manager
9608code, reducing overall subsystem code size.
9609
9610Fixed a fault when using the AML debugger "disassemble" command to
9611disassemble individual control methods.
9612
9613Removed references to the "release_current" directory within the Unix
9614release package.
9615
9616Code and Data Size: The current and previous core subsystem library sizes
9617are shown below. These are the code and data sizes for the acpica.lib
9618produced by the Microsoft Visual C++ 6.0 compiler. These values do not
9619include any ACPI driver or OSPM code. The debug version of the code
9620includes
9621the debug output trace mechanism and has a much larger code and data
9622size.
9623Note that these values will vary depending on the efficiency of the
9624compiler
9625and the compiler options used during generation.
9626
9627  Previous Release:
9628    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9629    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9630  Current Release:
9631    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
9632    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
9633
9634
96352) iASL Compiler/Disassembler:
9636
9637Implemented an error check for illegal duplicate values in the interrupt
9638and
9639dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
9640Interrupt().
9641
9642Implemented error checking for the Irq() and IrqNoFlags() macros to
9643detect
9644too many values in the interrupt list (16 max) and invalid values in the
9645list (range 0 - 15)
9646
9647The maximum length string literal within an ASL file is now restricted to
9648200 characters as per the ACPI specification.
9649
9650Fixed a fault when using the -ln option (generate namespace listing).
9651
9652Implemented an error check to determine if a DescriptorName within a
9653resource descriptor has already been used within the current scope.
9654
9655----------------------------------------
965615 August 2005.  Summary of changes for version 20050815:
9657
96581) ACPI CA Core Subsystem:
9659
9660Implemented a full bytewise compare to determine if a table load request
9661is
9662attempting to load a duplicate table. The compare is performed if the
9663table
9664signatures and table lengths match. This will allow different tables with
9665the same OEM Table ID and revision to be loaded - probably against the
9666ACPI
9667specification, but discovered in the field nonetheless.
9668
9669Added the changes.txt logfile to each of the zipped release packages.
9670
9671Code and Data Size: Current and previous core subsystem library sizes are
9672shown below. These are the code and data sizes for the acpica.lib
9673produced
9674by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9675any ACPI driver or OSPM code. The debug version of the code includes the
9676debug output trace mechanism and has a much larger code and data size.
9677Note
9678that these values will vary depending on the efficiency of the compiler
9679and
9680the compiler options used during generation.
9681
9682  Previous Release:
9683    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9684    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
9685  Current Release:
9686    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9687    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9688
9689
96902) iASL Compiler/Disassembler:
9691
9692Fixed a problem where incorrect AML code could be generated for Package
9693objects if optimization is disabled (via the -oa switch).
9694
9695Fixed a problem with where incorrect AML code is generated for variable-
9696length packages when the package length is not specified and the number
9697of
9698initializer values is greater than 255.
9699
9700
9701----------------------------------------
970229 July 2005.  Summary of changes for version 20050729:
9703
97041) ACPI CA Core Subsystem:
9705
9706Implemented support to ignore an attempt to install/load a particular
9707ACPI
9708table more than once. Apparently there exists BIOS code that repeatedly
9709attempts to load the same SSDT upon certain events. With assistance from
9710Venkatesh Pallipadi.
9711
9712Restructured the main interface to the AML parser in order to correctly
9713handle all exceptional conditions. This will prevent leakage of the
9714OwnerId
9715resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
9716some
9717machines. With assistance from Alexey Starikovskiy.
9718
9719Support for "module level code" has been disabled in this version due to
9720a
9721number of issues that have appeared on various machines. The support can
9722be
9723enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
9724compilation. When the issues are fully resolved, the code will be enabled
9725by
9726default again.
9727
9728Modified the internal functions for debug print support to define the
9729FunctionName parameter as a (const char *) for compatibility with
9730compiler
9731built-in macros such as __FUNCTION__, etc.
9732
9733Linted the entire ACPICA source tree for both 32-bit and 64-bit.
9734
9735Implemented support to display an object count summary for the AML
9736Debugger
9737commands Object and Methods.
9738
9739Code and Data Size: Current and previous core subsystem library sizes are
9740shown below. These are the code and data sizes for the acpica.lib
9741produced
9742by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9743any ACPI driver or OSPM code. The debug version of the code includes the
9744debug output trace mechanism and has a much larger code and data size.
9745Note
9746that these values will vary depending on the efficiency of the compiler
9747and
9748the compiler options used during generation.
9749
9750  Previous Release:
9751    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
9752    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
9753  Current Release:
9754    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9755    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
9756
9757
97582) iASL Compiler/Disassembler:
9759
9760Fixed a regression that appeared in the 20050708 version of the compiler
9761where an error message was inadvertently emitted for invocations of the
9762_OSI
9763reserved control method.
9764
9765----------------------------------------
976608 July 2005.  Summary of changes for version 20050708:
9767
97681) ACPI CA Core Subsystem:
9769
9770The use of the CPU stack in the debug version of the subsystem has been
9771considerably reduced. Previously, a debug structure was declared in every
9772function that used the debug macros. This structure has been removed in
9773favor of declaring the individual elements as parameters to the debug
9774functions. This reduces the cumulative stack use during nested execution
9775of
9776ACPI function calls at the cost of a small increase in the code size of
9777the
9778debug version of the subsystem. With assistance from Alexey Starikovskiy
9779and
9780Len Brown.
9781
9782Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
9783headers to define a macro that will return the current function name at
9784runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
9785by
9786the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
9787compiler-dependent header, the function name is saved on the CPU stack
9788(one
9789pointer per function.) This mechanism is used because apparently there
9790exists no standard ANSI-C defined macro that that returns the function
9791name.
9792
9793Redesigned and reimplemented the "Owner ID" mechanism used to track
9794namespace objects created/deleted by ACPI tables and control method
9795execution. A bitmap is now used to allocate and free the IDs, thus
9796solving
9797the wraparound problem present in the previous implementation. The size
9798of
9799the namespace node descriptor was reduced by 2 bytes as a result (Alexey
9800Starikovskiy).
9801
9802Removed the UINT32_BIT and UINT16_BIT types that were used for the
9803bitfield
9804flag definitions within the headers for the predefined ACPI tables. These
9805have been replaced by UINT8_BIT in order to increase the code portability
9806of
9807the subsystem. If the use of UINT8 remains a problem, we may be forced to
9808eliminate bitfields entirely because of a lack of portability.
9809
9810Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
9811This
9812is a frequently used function and this improvement increases the
9813performance
9814of the entire subsystem (Alexey Starikovskiy).
9815
9816Fixed several possible memory leaks and the inverse - premature object
9817deletion (Alexey Starikovskiy).
9818
9819Code and Data Size: Current and previous core subsystem library sizes are
9820shown below. These are the code and data sizes for the acpica.lib
9821produced
9822by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9823any ACPI driver or OSPM code. The debug version of the code includes the
9824debug output trace mechanism and has a much larger code and data size.
9825Note
9826that these values will vary depending on the efficiency of the compiler
9827and
9828the compiler options used during generation.
9829
9830  Previous Release:
9831    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9832    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9833  Current Release:
9834    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
9835    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
9836
9837----------------------------------------
983824 June 2005.  Summary of changes for version 20050624:
9839
98401) ACPI CA Core Subsystem:
9841
9842Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
9843the host-defined cache object. This allows the OSL implementation to
9844define
9845and type this object in any manner desired, simplifying the OSL
9846implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
9847Linux, and should be defined in the OS-specific header file for other
9848operating systems as required.
9849
9850Changed the interface to AcpiOsAcquireObject to directly return the
9851requested object as the function return (instead of ACPI_STATUS.) This
9852change was made for performance reasons, since this is the purpose of the
9853interface in the first place. AcpiOsAcquireObject is now similar to the
9854AcpiOsAllocate interface.
9855
9856Implemented a new AML debugger command named Businfo. This command
9857displays
9858information about all devices that have an associate _PRT object. The
9859_ADR,
9860_HID, _UID, and _CID are displayed for these devices.
9861
9862Modified the initialization sequence in AcpiInitializeSubsystem to call
9863the
9864OSL interface AcpiOslInitialize first, before any local initialization.
9865This
9866change was required because the global initialization now calls OSL
9867interfaces.
9868
9869Enhanced the Dump command to display the entire contents of Package
9870objects
9871(including all sub-objects and their values.)
9872
9873Restructured the code base to split some files because of size and/or
9874because the code logically belonged in a separate file. New files are
9875listed
9876below. All makefiles and project files included in the ACPI CA release
9877have
9878been updated.
9879    utilities/utcache.c           /* Local cache interfaces */
9880    utilities/utmutex.c           /* Local mutex support */
9881    utilities/utstate.c           /* State object support */
9882    interpreter/parser/psloop.c   /* Main AML parse loop */
9883
9884Code and Data Size: Current and previous core subsystem library sizes are
9885shown below. These are the code and data sizes for the acpica.lib
9886produced
9887by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9888any ACPI driver or OSPM code. The debug version of the code includes the
9889debug output trace mechanism and has a much larger code and data size.
9890Note
9891that these values will vary depending on the efficiency of the compiler
9892and
9893the compiler options used during generation.
9894
9895  Previous Release:
9896    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9897    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9898  Current Release:
9899    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9900    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9901
9902
99032) iASL Compiler/Disassembler:
9904
9905Fixed a regression introduced in version 20050513 where the use of a
9906Package
9907object within a Case() statement caused a compile time exception. The
9908original behavior has been restored (a Match() operator is emitted.)
9909
9910----------------------------------------
991117 June 2005.  Summary of changes for version 20050617:
9912
99131) ACPI CA Core Subsystem:
9914
9915Moved the object cache operations into the OS interface layer (OSL) to
9916allow
9917the host OS to handle these operations if desired (for example, the Linux
9918OSL will invoke the slab allocator). This support is optional; the
9919compile
9920time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
9921cache
9922code in the ACPI CA core. The new OSL interfaces are shown below. See
9923utalloc.c for an example implementation, and acpiosxf.h for the exact
9924interface definitions. With assistance from Alexey Starikovskiy.
9925    AcpiOsCreateCache
9926    AcpiOsDeleteCache
9927    AcpiOsPurgeCache
9928    AcpiOsAcquireObject
9929    AcpiOsReleaseObject
9930
9931Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
9932return
9933and restore a flags parameter. This fits better with many OS lock models.
9934Note: the current execution state (interrupt handler or not) is no longer
9935passed to these interfaces. If necessary, the OSL must determine this
9936state
9937by itself, a simple and fast operation. With assistance from Alexey
9938Starikovskiy.
9939
9940Fixed a problem in the ACPI table handling where a valid XSDT was assumed
9941present if the revision of the RSDP was 2 or greater. According to the
9942ACPI
9943specification, the XSDT is optional in all cases, and the table manager
9944therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
9945Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
9946contain
9947only the RSDT.
9948
9949Fixed an interpreter problem with the Mid() operator in the case of an
9950input
9951string where the resulting output string is of zero length. It now
9952correctly
9953returns a valid, null terminated string object instead of a string object
9954with a null pointer.
9955
9956Fixed a problem with the control method argument handling to allow a
9957store
9958to an Arg object that already contains an object of type Device. The
9959Device
9960object is now correctly overwritten. Previously, an error was returned.
9961
9962
9963Enhanced the debugger Find command to emit object values in addition to
9964the
9965found object pathnames. The output format is the same as the dump
9966namespace
9967command.
9968
9969Enhanced the debugger Set command. It now has the ability to set the
9970value
9971of any Named integer object in the namespace (Previously, only method
9972locals
9973and args could be set.)
9974
9975Code and Data Size: Current and previous core subsystem library sizes are
9976shown below. These are the code and data sizes for the acpica.lib
9977produced
9978by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9979any ACPI driver or OSPM code. The debug version of the code includes the
9980debug output trace mechanism and has a much larger code and data size.
9981Note
9982that these values will vary depending on the efficiency of the compiler
9983and
9984the compiler options used during generation.
9985
9986  Previous Release:
9987    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9988    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9989  Current Release:
9990    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9991    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9992
9993
99942) iASL Compiler/Disassembler:
9995
9996Fixed a regression in the disassembler where if/else/while constructs
9997were
9998output incorrectly. This problem was introduced in the previous release
9999(20050526). This problem also affected the single-step disassembly in the
10000debugger.
10001
10002Fixed a problem where compiling the reserved _OSI method would randomly
10003(but
10004rarely) produce compile errors.
10005
10006Enhanced the disassembler to emit compilable code in the face of
10007incorrect
10008AML resource descriptors. If the optional ResourceSourceIndex is present,
10009but the ResourceSource is not, do not emit the ResourceSourceIndex in the
10010disassembly. Otherwise, the resulting code cannot be compiled without
10011errors.
10012
10013----------------------------------------
1001426 May 2005.  Summary of changes for version 20050526:
10015
100161) ACPI CA Core Subsystem:
10017
10018Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
10019the module level (not within a control method.) These opcodes are
10020executed
10021exactly once at the time the table is loaded. This type of code was legal
10022up
10023until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
10024in
10025order to provide backwards compatibility with earlier BIOS
10026implementations.
10027This eliminates the "Encountered executable code at module level" warning
10028that was previously generated upon detection of such code.
10029
10030Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
10031inadvertently be generated during the lookup of namespace objects in the
10032second pass parse of ACPI tables and control methods. It appears that
10033this
10034problem could occur during the resolution of forward references to
10035namespace
10036objects.
10037
10038Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
10039corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
10040allows the deadlock detection debug code to be compiled out in the normal
10041case, improving mutex performance (and overall subsystem performance)
10042considerably.
10043
10044Implemented a handful of miscellaneous fixes for possible memory leaks on
10045error conditions and error handling control paths. These fixes were
10046suggested by FreeBSD and the Coverity Prevent source code analysis tool.
10047
10048Added a check for a null RSDT pointer in AcpiGetFirmwareTable
10049(tbxfroot.c)
10050to prevent a fault in this error case.
10051
10052Code and Data Size: Current and previous core subsystem library sizes are
10053shown below. These are the code and data sizes for the acpica.lib
10054produced
10055by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10056any ACPI driver or OSPM code. The debug version of the code includes the
10057debug output trace mechanism and has a much larger code and data size.
10058Note
10059that these values will vary depending on the efficiency of the compiler
10060and
10061the compiler options used during generation.
10062
10063  Previous Release:
10064    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10065    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10066  Current Release:
10067    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
10068    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
10069
10070
100712) iASL Compiler/Disassembler:
10072
10073Implemented support to allow Type 1 and Type 2 ASL operators to appear at
10074the module level (not within a control method.) These operators will be
10075executed once at the time the table is loaded. This type of code was
10076legal
10077up until the release of ACPI 2.0B (2002) and is now supported by the iASL
10078compiler in order to provide backwards compatibility with earlier BIOS
10079ASL
10080code.
10081
10082The ACPI integer width (specified via the table revision ID or the -r
10083override, 32 or 64 bits) is now used internally during compile-time
10084constant
10085folding to ensure that constants are truncated to 32 bits if necessary.
10086Previously, the revision ID value was only emitted in the AML table
10087header.
10088
10089An error message is now generated for the Mutex and Method operators if
10090the
10091SyncLevel parameter is outside the legal range of 0 through 15.
10092
10093Fixed a problem with the Method operator ParameterTypes list handling
10094(ACPI
100953.0). Previously, more than 2 types or 2 arguments generated a syntax
10096error.
10097The actual underlying implementation of method argument typechecking is
10098still under development, however.
10099
10100----------------------------------------
1010113 May 2005.  Summary of changes for version 20050513:
10102
101031) ACPI CA Core Subsystem:
10104
10105Implemented support for PCI Express root bridges -- added support for
10106device
10107PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
10108
10109The interpreter now automatically truncates incoming 64-bit constants to
1011032
10111bits if currently executing out of a 32-bit ACPI table (Revision < 2).
10112This
10113also affects the iASL compiler constant folding. (Note: as per below, the
10114iASL compiler no longer allows 64-bit constants within 32-bit tables.)
10115
10116Fixed a problem where string and buffer objects with "static" pointers
10117(pointers to initialization data within an ACPI table) were not handled
10118consistently. The internal object copy operation now always copies the
10119data
10120to a newly allocated buffer, regardless of whether the source object is
10121static or not.
10122
10123Fixed a problem with the FromBCD operator where an implicit result
10124conversion was improperly performed while storing the result to the
10125target
10126operand. Since this is an "explicit conversion" operator, the implicit
10127conversion should never be performed on the output.
10128
10129Fixed a problem with the CopyObject operator where a copy to an existing
10130named object did not always completely overwrite the existing object
10131stored
10132at name. Specifically, a buffer-to-buffer copy did not delete the
10133existing
10134buffer.
10135
10136Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
10137and
10138structs for consistency.
10139
10140Code and Data Size: Current and previous core subsystem library sizes are
10141shown below. These are the code and data sizes for the acpica.lib
10142produced
10143by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10144any ACPI driver or OSPM code. The debug version of the code includes the
10145debug output trace mechanism and has a much larger code and data size.
10146Note
10147that these values will vary depending on the efficiency of the compiler
10148and
10149the compiler options used during generation.
10150
10151  Previous Release:
10152    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10153    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10154  Current Release: (Same sizes)
10155    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10156    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10157
10158
101592) iASL Compiler/Disassembler:
10160
10161The compiler now emits a warning if an attempt is made to generate a 64-
10162bit
10163integer constant from within a 32-bit ACPI table (Revision < 2). The
10164integer
10165is truncated to 32 bits.
10166
10167Fixed a problem with large package objects: if the static length of the
10168package is greater than 255, the "variable length package" opcode is
10169emitted. Previously, this caused an error. This requires an update to the
10170ACPI spec, since it currently (incorrectly) states that packages larger
10171than
10172255 elements are not allowed.
10173
10174The disassembler now correctly handles variable length packages and
10175packages
10176larger than 255 elements.
10177
10178----------------------------------------
1017908 April 2005.  Summary of changes for version 20050408:
10180
101811) ACPI CA Core Subsystem:
10182
10183Fixed three cases in the interpreter where an "index" argument to an ASL
10184function was still (internally) 32 bits instead of the required 64 bits.
10185This was the Index argument to the Index, Mid, and Match operators.
10186
10187The "strupr" function is now permanently local (AcpiUtStrupr), since this
10188is
10189not a POSIX-defined function and not present in most kernel-level C
10190libraries. All references to the C library strupr function have been
10191removed
10192from the headers.
10193
10194Completed the deployment of static functions/prototypes. All prototypes
10195with
10196the static attribute have been moved from the headers to the owning C
10197file.
10198
10199Implemented an extract option (-e) for the AcpiBin utility (AML binary
10200utility). This option allows the utility to extract individual ACPI
10201tables
10202from the output of AcpiDmp. It provides the same functionality of the
10203acpixtract.pl perl script without the worry of setting the correct perl
10204options. AcpiBin runs on Windows and has not yet been generated/validated
10205in
10206the Linux/Unix environment (but should be soon).
10207
10208Updated and fixed the table dump option for AcpiBin (-d). This option
10209converts a single ACPI table to a hex/ascii file, similar to the output
10210of
10211AcpiDmp.
10212
10213Code and Data Size: Current and previous core subsystem library sizes are
10214shown below. These are the code and data sizes for the acpica.lib
10215produced
10216by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10217any ACPI driver or OSPM code. The debug version of the code includes the
10218debug output trace mechanism and has a much larger code and data size.
10219Note
10220that these values will vary depending on the efficiency of the compiler
10221and
10222the compiler options used during generation.
10223
10224  Previous Release:
10225    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
10226    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
10227  Current Release:
10228    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
10229    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
10230
10231
102322) iASL Compiler/Disassembler:
10233
10234Disassembler fix: Added a check to ensure that the table length found in
10235the
10236ACPI table header within the input file is not longer than the actual
10237input
10238file size. This indicates some kind of file or table corruption.
10239
10240----------------------------------------
1024129 March 2005.  Summary of changes for version 20050329:
10242
102431) ACPI CA Core Subsystem:
10244
10245An error is now generated if an attempt is made to create a Buffer Field
10246of
10247length zero (A CreateField with a length operand of zero.)
10248
10249The interpreter now issues a warning whenever executable code at the
10250module
10251level is detected during ACPI table load. This will give some idea of the
10252prevalence of this type of code.
10253
10254Implemented support for references to named objects (other than control
10255methods) within package objects.
10256
10257Enhanced package object output for the debug object. Package objects are
10258now
10259completely dumped, showing all elements.
10260
10261Enhanced miscellaneous object output for the debug object. Any object can
10262now be written to the debug object (for example, a device object can be
10263written, and the type of the object will be displayed.)
10264
10265The "static" qualifier has been added to all local functions across both
10266the
10267core subsystem and the iASL compiler.
10268
10269The number of "long" lines (> 80 chars) within the source has been
10270significantly reduced, by about 1/3.
10271
10272Cleaned up all header files to ensure that all CA/iASL functions are
10273prototyped (even static functions) and the formatting is consistent.
10274
10275Two new header files have been added, acopcode.h and acnames.h.
10276
10277Removed several obsolete functions that were no longer used.
10278
10279Code and Data Size: Current and previous core subsystem library sizes are
10280shown below. These are the code and data sizes for the acpica.lib
10281produced
10282by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10283any ACPI driver or OSPM code. The debug version of the code includes the
10284debug output trace mechanism and has a much larger code and data size.
10285Note
10286that these values will vary depending on the efficiency of the compiler
10287and
10288the compiler options used during generation.
10289
10290  Previous Release:
10291    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10292    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
10293  Current Release:
10294    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
10295    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
10296
10297
10298
102992) iASL Compiler/Disassembler:
10300
10301Fixed a problem with the resource descriptor generation/support. For the
10302ResourceSourceIndex and the ResourceSource fields, both must be present,
10303or
10304both must be not present - can't have one without the other.
10305
10306The compiler now returns non-zero from the main procedure if any errors
10307have
10308occurred during the compilation.
10309
10310
10311----------------------------------------
1031209 March 2005.  Summary of changes for version 20050309:
10313
103141) ACPI CA Core Subsystem:
10315
10316The string-to-buffer implicit conversion code has been modified again
10317after
10318a change to the ACPI specification.  In order to match the behavior of
10319the
10320other major ACPI implementation, the target buffer is no longer truncated
10321if
10322the source string is smaller than an existing target buffer. This change
10323requires an update to the ACPI spec, and should eliminate the recent
10324AE_AML_BUFFER_LIMIT issues.
10325
10326The "implicit return" support was rewritten to a new algorithm that
10327solves
10328the general case. Rather than attempt to determine when a method is about
10329to
10330exit, the result of every ASL operator is saved momentarily until the
10331very
10332next ASL operator is executed. Therefore, no matter how the method exits,
10333there will always be a saved implicit return value. This feature is only
10334enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
10335eliminate
10336AE_AML_NO_RETURN_VALUE errors when enabled.
10337
10338Implemented implicit conversion support for the predicate (operand) of
10339the
10340If, Else, and While operators. String and Buffer arguments are
10341automatically
10342converted to Integers.
10343
10344Changed the string-to-integer conversion behavior to match the new ACPI
10345errata: "If no integer object exists, a new integer is created. The ASCII
10346string is interpreted as a hexadecimal constant. Each string character is
10347interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
10348with the first character as the most significant digit, and ending with
10349the
10350first non-hexadecimal character or end-of-string." This means that the
10351first
10352non-hex character terminates the conversion and this is the code that was
10353changed.
10354
10355Fixed a problem where the ObjectType operator would fail (fault) when
10356used
10357on an Index of a Package which pointed to a null package element. The
10358operator now properly returns zero (Uninitialized) in this case.
10359
10360Fixed a problem where the While operator used excessive memory by not
10361properly popping the result stack during execution. There was no memory
10362leak
10363after execution, however. (Code provided by Valery Podrezov.)
10364
10365Fixed a problem where references to control methods within Package
10366objects
10367caused the method to be invoked, instead of producing a reference object
10368pointing to the method.
10369
10370Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
10371to
10372improve performance and reduce code size. (Code provided by Alexey
10373Starikovskiy.)
10374
10375Code and Data Size: Current and previous core subsystem library sizes are
10376shown below. These are the code and data sizes for the acpica.lib
10377produced
10378by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10379any ACPI driver or OSPM code. The debug version of the code includes the
10380debug output trace mechanism and has a much larger code and data size.
10381Note
10382that these values will vary depending on the efficiency of the compiler
10383and
10384the compiler options used during generation.
10385
10386  Previous Release:
10387    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10388    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
10389  Current Release:
10390    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10391    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
10392
10393
103942) iASL Compiler/Disassembler:
10395
10396Fixed a problem with the Return operator with no arguments. Since the AML
10397grammar for the byte encoding requires an operand for the Return opcode,
10398the
10399compiler now emits a Return(Zero) for this case.  An ACPI specification
10400update has been written for this case.
10401
10402For tables other than the DSDT, namepath optimization is automatically
10403disabled. This is because SSDTs can be loaded anywhere in the namespace,
10404the
10405compiler has no knowledge of where, and thus cannot optimize namepaths.
10406
10407Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
10408inadvertently omitted from the ACPI specification, and will require an
10409update to the spec.
10410
10411The source file scan for ASCII characters is now optional (-a). This
10412change
10413was made because some vendors place non-ascii characters within comments.
10414However, the scan is simply a brute-force byte compare to ensure all
10415characters in the file are in the range 0x00 to 0x7F.
10416
10417Fixed a problem with the CondRefOf operator where the compiler was
10418inappropriately checking for the existence of the target. Since the point
10419of
10420the operator is to check for the existence of the target at run-time, the
10421compiler no longer checks for the target existence.
10422
10423Fixed a problem where errors generated from the internal AML interpreter
10424during constant folding were not handled properly, causing a fault.
10425
10426Fixed a problem with overly aggressive range checking for the Stall
10427operator. The valid range (max 255) is now only checked if the operand is
10428of
10429type Integer. All other operand types cannot be statically checked.
10430
10431Fixed a problem where control method references within the RefOf,
10432DeRefOf,
10433and ObjectType operators were not treated properly. They are now treated
10434as
10435actual references, not method invocations.
10436
10437Fixed and enhanced the "list namespace" option (-ln). This option was
10438broken
10439a number of releases ago.
10440
10441Improved error handling for the Field, IndexField, and BankField
10442operators.
10443The compiler now cleanly reports and recovers from errors in the field
10444component (FieldUnit) list.
10445
10446Fixed a disassembler problem where the optional ResourceDescriptor fields
10447TRS and TTP were not always handled correctly.
10448
10449Disassembler - Comments in output now use "//" instead of "/*"
10450
10451----------------------------------------
1045228 February 2005.  Summary of changes for version 20050228:
10453
104541) ACPI CA Core Subsystem:
10455
10456Fixed a problem where the result of an Index() operator (an object
10457reference) must increment the reference count on the target object for
10458the
10459life of the object reference.
10460
10461Implemented AML Interpreter and Debugger support for the new ACPI 3.0
10462Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
10463WordSpace
10464resource descriptors.
10465
10466Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
10467Space Descriptor" string, indicating interpreter support for the
10468descriptors
10469above.
10470
10471Implemented header support for the new ACPI 3.0 FADT flag bits.
10472
10473Implemented header support for the new ACPI 3.0 PCI Express bits for the
10474PM1
10475status/enable registers.
10476
10477Updated header support for the MADT processor local Apic struct and MADT
10478platform interrupt source struct for new ACPI 3.0 fields.
10479
10480Implemented header support for the SRAT and SLIT ACPI tables.
10481
10482Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
10483flag
10484at runtime.
10485
10486Code and Data Size: Current and previous core subsystem library sizes are
10487shown below. These are the code and data sizes for the acpica.lib
10488produced
10489by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10490any ACPI driver or OSPM code. The debug version of the code includes the
10491debug output trace mechanism and has a much larger code and data size.
10492Note
10493that these values will vary depending on the efficiency of the compiler
10494and
10495the compiler options used during generation.
10496
10497  Previous Release:
10498    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
10499    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
10500  Current Release:
10501    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
10502    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
10503
10504
105052) iASL Compiler/Disassembler:
10506
10507Fixed a problem with the internal 64-bit String-to-integer conversion
10508with
10509strings less than two characters long.
10510
10511Fixed a problem with constant folding where the result of the Index()
10512operator can not be considered a constant. This means that Index() cannot
10513be
10514a type3 opcode and this will require an update to the ACPI specification.
10515
10516Disassembler: Implemented support for the TTP, MTP, and TRS resource
10517descriptor fields. These fields were inadvertently ignored and not output
10518in
10519the disassembly of the resource descriptor.
10520
10521
10522 ----------------------------------------
1052311 February 2005.  Summary of changes for version 20050211:
10524
105251) ACPI CA Core Subsystem:
10526
10527Implemented ACPI 3.0 support for implicit conversion within the Match()
10528operator. MatchObjects can now be of type integer, buffer, or string
10529instead
10530of just type integer.  Package elements are implicitly converted to the
10531type
10532of the MatchObject. This change aligns the behavior of Match() with the
10533behavior of the other logical operators (LLess(), etc.) It also requires
10534an
10535errata change to the ACPI specification as this support was intended for
10536ACPI 3.0, but was inadvertently omitted.
10537
10538Fixed a problem with the internal implicit "to buffer" conversion.
10539Strings
10540that are converted to buffers will cause buffer truncation if the string
10541is
10542smaller than the target buffer. Integers that are converted to buffers
10543will
10544not cause buffer truncation, only zero extension (both as per the ACPI
10545spec.) The problem was introduced when code was added to truncate the
10546buffer, but this should not be performed in all cases, only the string
10547case.
10548
10549Fixed a problem with the Buffer and Package operators where the
10550interpreter
10551would get confused if two such operators were used as operands to an ASL
10552operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
10553stack was not being popped after the execution of these operators,
10554resulting
10555in an AE_NO_RETURN_VALUE exception.
10556
10557Fixed a problem with constructs of the form Store(Index(...),...). The
10558reference object returned from Index was inadvertently resolved to an
10559actual
10560value. This problem was introduced in version 20050114 when the behavior
10561of
10562Store() was modified to restrict the object types that can be used as the
10563source operand (to match the ACPI specification.)
10564
10565Reduced excessive stack use within the AcpiGetObjectInfo procedure.
10566
10567Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
10568
10569Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
10570
10571Code and Data Size: Current and previous core subsystem library sizes are
10572shown below. These are the code and data sizes for the acpica.lib
10573produced
10574by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10575any ACPI driver or OSPM code. The debug version of the code includes the
10576debug output trace mechanism and has a much larger code and data size.
10577Note
10578that these values will vary depending on the efficiency of the compiler
10579and
10580the compiler options used during generation.
10581
10582  Previous Release:
10583    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
10584    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
10585  Current Release:
10586    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
10587    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
10588
10589
105902) iASL Compiler/Disassembler:
10591
10592Fixed a code generation problem in the constant folding optimization code
10593where incorrect code was generated if a constant was reduced to a buffer
10594object (i.e., a reduced type 5 opcode.)
10595
10596Fixed a typechecking problem for the ToBuffer operator. Caused by an
10597incorrect return type in the internal opcode information table.
10598
10599----------------------------------------
1060025 January 2005.  Summary of changes for version 20050125:
10601
106021) ACPI CA Core Subsystem:
10603
10604Fixed a recently introduced problem with the Global Lock where the
10605underlying semaphore was not created.  This problem was introduced in
10606version 20050114, and caused an AE_AML_NO_OPERAND exception during an
10607Acquire() operation on _GL.
10608
10609The local object cache is now optional, and is disabled by default. Both
10610AcpiExec and the iASL compiler enable the cache because they run in user
10611mode and this enhances their performance. #define
10612ACPI_ENABLE_OBJECT_CACHE
10613to enable the local cache.
10614
10615Fixed an issue in the internal function AcpiUtEvaluateObject concerning
10616the
10617optional "implicit return" support where an error was returned if no
10618return
10619object was expected, but one was implicitly returned. AE_OK is now
10620returned
10621in this case and the implicitly returned object is deleted.
10622AcpiUtEvaluateObject is only occasionally used, and only to execute
10623reserved
10624methods such as _STA and _INI where the return type is known up front.
10625
10626Fixed a few issues with the internal convert-to-integer code. It now
10627returns
10628an error if an attempt is made to convert a null string, a string of only
10629blanks/tabs, or a zero-length buffer. This affects both implicit
10630conversion
10631and explicit conversion via the ToInteger() operator.
10632
10633The internal debug code in AcpiUtAcquireMutex has been commented out. It
10634is
10635not needed for normal operation and should increase the performance of
10636the
10637entire subsystem. The code remains in case it is needed for debug
10638purposes
10639again.
10640
10641The AcpiExec source and makefile are included in the Unix/Linux package
10642for
10643the first time.
10644
10645Code and Data Size: Current and previous core subsystem library sizes are
10646shown below. These are the code and data sizes for the acpica.lib
10647produced
10648by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10649any ACPI driver or OSPM code. The debug version of the code includes the
10650debug output trace mechanism and has a much larger code and data size.
10651Note
10652that these values will vary depending on the efficiency of the compiler
10653and
10654the compiler options used during generation.
10655
10656  Previous Release:
10657    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
10658    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
10659  Current Release:
10660    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
10661    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
10662
106632) iASL Compiler/Disassembler:
10664
10665Switch/Case support: A warning is now issued if the type of the Switch
10666value
10667cannot be determined at compile time. For example, Switch(Arg0) will
10668generate the warning, and the type is assumed to be an integer. As per
10669the
10670ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
10671the
10672warning.
10673
10674Switch/Case support: Implemented support for buffer and string objects as
10675the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
10676buffers and strings.
10677
10678Switch/Case support: The emitted code for the LEqual() comparisons now
10679uses
10680the switch value as the first operand, not the second. The case value is
10681now
10682the second operand, and this allows the case value to be implicitly
10683converted to the type of the switch value, not the other way around.
10684
10685Switch/Case support: Temporary variables are now emitted immediately
10686within
10687the control method, not at the global level. This means that there are
10688now
1068936 temps available per-method, not 36 temps per-module as was the case
10690with
10691the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
10692
10693----------------------------------------
1069414 January 2005.  Summary of changes for version 20050114:
10695
10696Added 2005 copyright to all module headers.  This affects every module in
10697the core subsystem, iASL compiler, and the utilities.
10698
106991) ACPI CA Core Subsystem:
10700
10701Fixed an issue with the String-to-Buffer conversion code where the string
10702null terminator was not included in the buffer after conversion, but
10703there
10704is existing ASL that assumes the string null terminator is included. This
10705is
10706the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
10707introduced in the previous version when the code was updated to correctly
10708set the converted buffer size as per the ACPI specification. The ACPI
10709spec
10710is ambiguous and will be updated to specify that the null terminator must
10711be
10712included in the converted buffer. This also affects the ToBuffer() ASL
10713operator.
10714
10715Fixed a problem with the Mid() ASL/AML operator where it did not work
10716correctly on Buffer objects. Newly created sub-buffers were not being
10717marked
10718as initialized.
10719
10720
10721Fixed a problem in AcpiTbFindTable where incorrect string compares were
10722performed on the OemId and OemTableId table header fields.  These fields
10723are
10724not null terminated, so strncmp is now used instead of strcmp.
10725
10726Implemented a restriction on the Store() ASL/AML operator to align the
10727behavior with the ACPI specification.  Previously, any object could be
10728used
10729as the source operand.  Now, the only objects that may be used are
10730Integers,
10731Buffers, Strings, Packages, Object References, and DDB Handles.  If
10732necessary, the original behavior can be restored by enabling the
10733EnableInterpreterSlack flag.
10734
10735Enhanced the optional "implicit return" support to allow an implicit
10736return
10737value from methods that are invoked externally via the AcpiEvaluateObject
10738interface.  This enables implicit returns from the _STA and _INI methods,
10739for example.
10740
10741Changed the Revision() ASL/AML operator to return the current version of
10742the
10743AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
10744returned
10745the supported ACPI version (This is the function of the _REV method).
10746
10747Updated the _REV predefined method to return the currently supported
10748version
10749of ACPI, now 3.
10750
10751Implemented batch mode option for the AcpiExec utility (-b).
10752
10753Code and Data Size: Current and previous core subsystem library sizes are
10754shown below. These are the code and data sizes for the acpica.lib
10755produced
10756by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10757any ACPI driver or OSPM code. The debug version of the code includes the
10758debug output trace mechanism and has a much larger code and data size.
10759Note
10760that these values will vary depending on the efficiency of the compiler
10761and
10762the compiler options used during generation.
10763
10764  Previous Release:
10765    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10766    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
10767  Current Release:
10768    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
10769    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
10770
10771----------------------------------------
1077210 December 2004.  Summary of changes for version 20041210:
10773
10774ACPI 3.0 support is nearing completion in both the iASL compiler and the
10775ACPI CA core subsystem.
10776
107771) ACPI CA Core Subsystem:
10778
10779Fixed a problem in the ToDecimalString operator where the resulting
10780string
10781length was incorrectly calculated. The length is now calculated exactly,
10782eliminating incorrect AE_STRING_LIMIT exceptions.
10783
10784Fixed a problem in the ToHexString operator to allow a maximum 200
10785character
10786string to be produced.
10787
10788Fixed a problem in the internal string-to-buffer and buffer-to-buffer
10789copy
10790routine where the length of the resulting buffer was not truncated to the
10791new size (if the target buffer already existed).
10792
10793Code and Data Size: Current and previous core subsystem library sizes are
10794shown below. These are the code and data sizes for the acpica.lib
10795produced
10796by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10797any ACPI driver or OSPM code. The debug version of the code includes the
10798debug output trace mechanism and has a much larger code and data size.
10799Note
10800that these values will vary depending on the efficiency of the compiler
10801and
10802the compiler options used during generation.
10803
10804  Previous Release:
10805    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10806    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
10807  Current Release:
10808    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10809    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
10810
10811
108122) iASL Compiler/Disassembler:
10813
10814Implemented the new ACPI 3.0 resource template macros - DWordSpace,
10815ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
10816Includes support in the disassembler.
10817
10818Implemented support for the new (ACPI 3.0) parameter to the Register
10819macro,
10820AccessSize.
10821
10822Fixed a problem where the _HE resource name for the Interrupt macro was
10823referencing bit 0 instead of bit 1.
10824
10825Implemented check for maximum 255 interrupts in the Interrupt macro.
10826
10827Fixed a problem with the predefined resource descriptor names where
10828incorrect AML code was generated if the offset within the resource buffer
10829was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
10830but did not update the surrounding package lengths.
10831
10832Changes to the Dma macro:  All channels within the channel list must be
10833in
10834the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
10835optional (default is BusMaster).
10836
10837Implemented check for maximum 7 data bytes for the VendorShort macro.
10838
10839The ReadWrite parameter is now optional for the Memory32 and similar
10840macros.
10841
10842----------------------------------------
1084303 December 2004.  Summary of changes for version 20041203:
10844
108451) ACPI CA Core Subsystem:
10846
10847The low-level field insertion/extraction code (exfldio) has been
10848completely
10849rewritten to eliminate unnecessary complexity, bugs, and boundary
10850conditions.
10851
10852Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
10853ToDecimalString
10854operators where the input operand could be inadvertently deleted if no
10855conversion was necessary (e.g., if the input to ToInteger was an Integer
10856object.)
10857
10858Fixed a problem with the ToDecimalString and ToHexString where an
10859incorrect
10860exception code was returned if the resulting string would be > 200 chars.
10861AE_STRING_LIMIT is now returned.
10862
10863Fixed a problem with the Concatenate operator where AE_OK was always
10864returned, even if the operation failed.
10865
10866Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
10867semaphores to be allocated.
10868
10869Code and Data Size: Current and previous core subsystem library sizes are
10870shown below. These are the code and data sizes for the acpica.lib
10871produced
10872by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10873any ACPI driver or OSPM code. The debug version of the code includes the
10874debug output trace mechanism and has a much larger code and data size.
10875Note
10876that these values will vary depending on the efficiency of the compiler
10877and
10878the compiler options used during generation.
10879
10880  Previous Release:
10881    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10882    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10883  Current Release:
10884    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10885    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
10886
10887
108882) iASL Compiler/Disassembler:
10889
10890Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
10891recently introduced in 20041119.
10892
10893Fixed a problem with the ToUUID macro where the upper nybble of each
10894buffer
10895byte was inadvertently set to zero.
10896
10897----------------------------------------
1089819 November 2004.  Summary of changes for version 20041119:
10899
109001) ACPI CA Core Subsystem:
10901
10902Fixed a problem in the internal ConvertToInteger routine where new
10903integers
10904were not truncated to 32 bits for 32-bit ACPI tables. This routine
10905converts
10906buffers and strings to integers.
10907
10908Implemented support to store a value to an Index() on a String object.
10909This
10910is an ACPI 2.0 feature that had not yet been implemented.
10911
10912Implemented new behavior for storing objects to individual package
10913elements
10914(via the Index() operator). The previous behavior was to invoke the
10915implicit
10916conversion rules if an object was already present at the index.  The new
10917behavior is to simply delete any existing object and directly store the
10918new
10919object. Although the ACPI specification seems unclear on this subject,
10920other
10921ACPI implementations behave in this manner.  (This is the root of the
10922AE_BAD_HEX_CONSTANT issue.)
10923
10924Modified the RSDP memory scan mechanism to support the extended checksum
10925for
10926ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
10927RSDP signature is found with a valid checksum.
10928
10929Code and Data Size: Current and previous core subsystem library sizes are
10930shown below. These are the code and data sizes for the acpica.lib
10931produced
10932by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10933any ACPI driver or OSPM code. The debug version of the code includes the
10934debug output trace mechanism and has a much larger code and data size.
10935Note
10936that these values will vary depending on the efficiency of the compiler
10937and
10938the compiler options used during generation.
10939
10940  Previous Release:
10941    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10942    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10943  Current Release:
10944    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10945    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10946
10947
109482) iASL Compiler/Disassembler:
10949
10950Fixed a missing semicolon in the aslcompiler.y file.
10951
10952----------------------------------------
1095305 November 2004.  Summary of changes for version 20041105:
10954
109551) ACPI CA Core Subsystem:
10956
10957Implemented support for FADT revision 2.  This was an interim table
10958(between
10959ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
10960
10961Implemented optional support to allow uninitialized LocalX and ArgX
10962variables in a control method.  The variables are initialized to an
10963Integer
10964object with a value of zero.  This support is enabled by setting the
10965AcpiGbl_EnableInterpreterSlack flag to TRUE.
10966
10967Implemented support for Integer objects for the SizeOf operator.  Either
109684
10969or 8 is returned, depending on the current integer size (32-bit or 64-
10970bit,
10971depending on the parent table revision).
10972
10973Fixed a problem in the implementation of the SizeOf and ObjectType
10974operators
10975where the operand was resolved to a value too early, causing incorrect
10976return values for some objects.
10977
10978Fixed some possible memory leaks during exceptional conditions.
10979
10980Code and Data Size: Current and previous core subsystem library sizes are
10981shown below. These are the code and data sizes for the acpica.lib
10982produced
10983by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10984any ACPI driver or OSPM code. The debug version of the code includes the
10985debug output trace mechanism and has a much larger code and data size.
10986Note
10987that these values will vary depending on the efficiency of the compiler
10988and
10989the compiler options used during generation.
10990
10991  Previous Release:
10992    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10993    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10994  Current Release:
10995    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10996    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10997
10998
109992) iASL Compiler/Disassembler:
11000
11001Implemented support for all ACPI 3.0 reserved names and methods.
11002
11003Implemented all ACPI 3.0 grammar elements in the front-end, including
11004support for semicolons.
11005
11006Implemented the ACPI 3.0 Function() and ToUUID() macros
11007
11008Fixed a problem in the disassembler where a Scope() operator would not be
11009emitted properly if the target of the scope was in another table.
11010
11011----------------------------------------
1101215 October 2004.  Summary of changes for version 20041015:
11013
11014Note:  ACPI CA is currently undergoing an in-depth and complete formal
11015evaluation to test/verify the following areas. Other suggestions are
11016welcome. This will result in an increase in the frequency of releases and
11017the number of bug fixes in the next few months.
11018  - Functional tests for all ASL/AML operators
11019  - All implicit/explicit type conversions
11020  - Bit fields and operation regions
11021  - 64-bit math support and 32-bit-only "truncated" math support
11022  - Exceptional conditions, both compiler and interpreter
11023  - Dynamic object deletion and memory leaks
11024  - ACPI 3.0 support when implemented
11025  - External interfaces to the ACPI subsystem
11026
11027
110281) ACPI CA Core Subsystem:
11029
11030Fixed two alignment issues on 64-bit platforms - within debug statements
11031in
11032AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
11033Address
11034field within the non-aligned ACPI generic address structure.
11035
11036Fixed a problem in the Increment and Decrement operators where incorrect
11037operand resolution could result in the inadvertent modification of the
11038original integer when the integer is passed into another method as an
11039argument and the arg is then incremented/decremented.
11040
11041Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
11042bit
11043BCD number were truncated during conversion.
11044
11045Fixed a problem in the ToDecimal operator where the length of the
11046resulting
11047string could be set incorrectly too long if the input operand was a
11048Buffer
11049object.
11050
11051Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
11052(0)
11053within a buffer would prematurely terminate a compare between buffer
11054objects.
11055
11056Added a check for string overflow (>200 characters as per the ACPI
11057specification) during the Concatenate operator with two string operands.
11058
11059Code and Data Size: Current and previous core subsystem library sizes are
11060shown below. These are the code and data sizes for the acpica.lib
11061produced
11062by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11063any ACPI driver or OSPM code. The debug version of the code includes the
11064debug output trace mechanism and has a much larger code and data size.
11065Note
11066that these values will vary depending on the efficiency of the compiler
11067and
11068the compiler options used during generation.
11069
11070  Previous Release:
11071    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11072    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
11073  Current Release:
11074    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11075    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
11076
11077
11078
110792) iASL Compiler/Disassembler:
11080
11081Allow the use of the ObjectType operator on uninitialized Locals and Args
11082(returns 0 as per the ACPI specification).
11083
11084Fixed a problem where the compiler would fault if there was a syntax
11085error
11086in the FieldName of all of the various CreateXXXField operators.
11087
11088Disallow the use of lower case letters within the EISAID macro, as per
11089the
11090ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
11091Where
11092U is an uppercase letter and N is a hex digit.
11093
11094
11095----------------------------------------
1109606 October 2004.  Summary of changes for version 20041006:
11097
110981) ACPI CA Core Subsystem:
11099
11100Implemented support for the ACPI 3.0 Timer operator. This ASL function
11101implements a 64-bit timer with 100 nanosecond granularity.
11102
11103Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
11104implement the ACPI 3.0 Timer operator.  This allows the host OS to
11105implement
11106the timer with the best clock available. Also, it keeps the core
11107subsystem
11108out of the clock handling business, since the host OS (usually) performs
11109this function.
11110
11111Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
11112functions use a 64-bit address which is part of the packed ACPI Generic
11113Address Structure. Since the structure is non-aligned, the alignment
11114macros
11115are now used to extract the address to a local variable before use.
11116
11117Fixed a problem where the ToInteger operator assumed all input strings
11118were
11119hexadecimal. The operator now handles both decimal strings and hex
11120strings
11121(prefixed with "0x").
11122
11123Fixed a problem where the string length in the string object created as a
11124result of the internal ConvertToString procedure could be incorrect. This
11125potentially affected all implicit conversions and also the
11126ToDecimalString
11127and ToHexString operators.
11128
11129Fixed two problems in the ToString operator. If the length parameter was
11130zero, an incorrect string object was created and the value of the input
11131length parameter was inadvertently changed from zero to Ones.
11132
11133Fixed a problem where the optional ResourceSource string in the
11134ExtendedIRQ
11135resource macro was ignored.
11136
11137Simplified the interfaces to the internal division functions, reducing
11138code
11139size and complexity.
11140
11141Code and Data Size: Current and previous core subsystem library sizes are
11142shown below. These are the code and data sizes for the acpica.lib
11143produced
11144by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11145any ACPI driver or OSPM code. The debug version of the code includes the
11146debug output trace mechanism and has a much larger code and data size.
11147Note
11148that these values will vary depending on the efficiency of the compiler
11149and
11150the compiler options used during generation.
11151
11152  Previous Release:
11153    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
11154    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
11155  Current Release:
11156    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11157    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
11158
11159
111602) iASL Compiler/Disassembler:
11161
11162Implemented support for the ACPI 3.0 Timer operator.
11163
11164Fixed a problem where the Default() operator was inadvertently ignored in
11165a
11166Switch/Case block.  This was a problem in the translation of the Switch
11167statement to If...Else pairs.
11168
11169Added support to allow a standalone Return operator, with no parentheses
11170(or
11171operands).
11172
11173Fixed a problem with code generation for the ElseIf operator where the
11174translated Else...If parse tree was improperly constructed leading to the
11175loss of some code.
11176
11177----------------------------------------
1117822 September 2004.  Summary of changes for version 20040922:
11179
111801) ACPI CA Core Subsystem:
11181
11182Fixed a problem with the implementation of the LNot() operator where
11183"Ones"
11184was not returned for the TRUE case. Changed the code to return Ones
11185instead
11186of (!Arg) which was usually 1. This change affects iASL constant folding
11187for
11188this operator also.
11189
11190Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
11191not
11192initialized properly -- Now zero the entire buffer in this case where the
11193buffer already exists.
11194
11195Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
11196Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
11197related code considerably. This will require changes/updates to all OS
11198interface layers (OSLs.)
11199
11200Implemented a new external interface, AcpiInstallExceptionHandler, to
11201allow
11202a system exception handler to be installed. This handler is invoked upon
11203any
11204run-time exception that occurs during control method execution.
11205
11206Added support for the DSDT in AcpiTbFindTable. This allows the
11207DataTableRegion() operator to access the local copy of the DSDT.
11208
11209Code and Data Size: Current and previous core subsystem library sizes are
11210shown below. These are the code and data sizes for the acpica.lib
11211produced
11212by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11213any ACPI driver or OSPM code. The debug version of the code includes the
11214debug output trace mechanism and has a much larger code and data size.
11215Note
11216that these values will vary depending on the efficiency of the compiler
11217and
11218the compiler options used during generation.
11219
11220  Previous Release:
11221    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
11222    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
11223  Current Release:
11224    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
11225    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
11226
11227
112282) iASL Compiler/Disassembler:
11229
11230Fixed a problem with constant folding and the LNot operator. LNot was
11231returning 1 in the TRUE case, not Ones as per the ACPI specification.
11232This
11233could result in the generation of an incorrect folded/reduced constant.
11234
11235End-Of-File is now allowed within a "//"-style comment.  A parse error no
11236longer occurs if such a comment is at the very end of the input ASL
11237source
11238file.
11239
11240Implemented the "-r" option to override the Revision in the table header.
11241The initial use of this option will be to simplify the evaluation of the
11242AML
11243interpreter by allowing a single ASL source module to be compiled for
11244either
1124532-bit or 64-bit integers.
11246
11247
11248----------------------------------------
1124927 August 2004.  Summary of changes for version 20040827:
11250
112511) ACPI CA Core Subsystem:
11252
11253- Implemented support for implicit object conversion in the non-numeric
11254logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
11255and
11256LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
11257the second operand is implicitly converted on the fly to match the type
11258of
11259the first operand.  For example:
11260
11261    LEqual (Source1, Source2)
11262
11263Source1 and Source2 must each evaluate to an integer, a string, or a
11264buffer.
11265The data type of Source1 dictates the required type of Source2. Source2
11266is
11267implicitly converted if necessary to match the type of Source1.
11268
11269- Updated and corrected the behavior of the string conversion support.
11270The
11271rules concerning conversion of buffers to strings (according to the ACPI
11272specification) are as follows:
11273
11274ToDecimalString - explicit byte-wise conversion of buffer to string of
11275decimal values (0-255) separated by commas. ToHexString - explicit byte-
11276wise
11277conversion of buffer to string of hex values (0-FF) separated by commas.
11278ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
11279byte
11280copy with no transform except NULL terminated. Any other implicit buffer-
11281to-
11282string conversion - byte-wise conversion of buffer to string of hex
11283values
11284(0-FF) separated by spaces.
11285
11286- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
11287
11288- Fixed a problem in AcpiNsGetPathnameLength where the returned length
11289was
11290one byte too short in the case of a node in the root scope.  This could
11291cause a fault during debug output.
11292
11293- Code and Data Size: Current and previous core subsystem library sizes
11294are
11295shown below.  These are the code and data sizes for the acpica.lib
11296produced
11297by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11298any ACPI driver or OSPM code.  The debug version of the code includes the
11299debug output trace mechanism and has a much larger code and data size.
11300Note
11301that these values will vary depending on the efficiency of the compiler
11302and
11303the compiler options used during generation.
11304
11305  Previous Release:
11306    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
11307    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
11308  Current Release:
11309    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
11310    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
11311
11312
113132) iASL Compiler/Disassembler:
11314
11315- Fixed a Linux generation error.
11316
11317
11318----------------------------------------
1131916 August 2004.  Summary of changes for version 20040816:
11320
113211) ACPI CA Core Subsystem:
11322
11323Designed and implemented support within the AML interpreter for the so-
11324called "implicit return".  This support returns the result of the last
11325ASL
11326operation within a control method, in the absence of an explicit Return()
11327operator.  A few machines depend on this behavior, even though it is not
11328explicitly supported by the ASL language.  It is optional support that
11329can
11330be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
11331
11332Removed support for the PCI_Config address space from the internal low
11333level
11334hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
11335support was not used internally, and would not work correctly anyway
11336because
11337the PCI bus number and segment number were not supported.  There are
11338separate interfaces for PCI configuration space access because of the
11339unique
11340interface.
11341
11342Code and Data Size: Current and previous core subsystem library sizes are
11343shown below.  These are the code and data sizes for the acpica.lib
11344produced
11345by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11346any ACPI driver or OSPM code.  The debug version of the code includes the
11347debug output trace mechanism and has a much larger code and data size.
11348Note
11349that these values will vary depending on the efficiency of the compiler
11350and
11351the compiler options used during generation.
11352
11353  Previous Release:
11354    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11355    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
11356  Current Release:
11357    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
11358    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
11359
11360
113612) iASL Compiler/Disassembler:
11362
11363Fixed a problem where constants in ASL expressions at the root level (not
11364within a control method) could be inadvertently truncated during code
11365generation.  This problem was introduced in the 20040715 release.
11366
11367
11368----------------------------------------
1136915 July 2004.  Summary of changes for version 20040715:
11370
113711) ACPI CA Core Subsystem:
11372
11373Restructured the internal HW GPE interfaces to pass/track the current
11374state
11375of interrupts (enabled/disabled) in order to avoid possible deadlock and
11376increase flexibility of the interfaces.
11377
11378Implemented a "lexicographical compare" for String and Buffer objects
11379within
11380the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
11381-
11382as per further clarification to the ACPI specification.  Behavior is
11383similar
11384to C library "strcmp".
11385
11386Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
11387external function.  In the 32-bit non-debug case, the stack use has been
11388reduced from 168 bytes to 32 bytes.
11389
11390Deployed a new run-time configuration flag,
11391AcpiGbl_EnableInterpreterSlack,
11392whose purpose is to allow the AML interpreter to forgive certain bad AML
11393constructs.  Default setting is FALSE.
11394
11395Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
11396IO
11397support code.  If enabled, it allows field access to go beyond the end of
11398a
11399region definition if the field is within the region length rounded up to
11400the
11401next access width boundary (a common coding error.)
11402
11403Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
11404ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
11405these
11406symbols are lowercased by the latest version of the AcpiSrc tool.
11407
11408The prototypes for the PCI interfaces in acpiosxf.h have been updated to
11409rename "Register" to simply "Reg" to prevent certain compilers from
11410complaining.
11411
11412Code and Data Size: Current and previous core subsystem library sizes are
11413shown below.  These are the code and data sizes for the acpica.lib
11414produced
11415by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11416any ACPI driver or OSPM code.  The debug version of the code includes the
11417debug output trace mechanism and has a much larger code and data size.
11418Note
11419that these values will vary depending on the efficiency of the compiler
11420and
11421the compiler options used during generation.
11422
11423  Previous Release:
11424    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11425    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
11426  Current Release:
11427    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
11428    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
11429
11430
114312) iASL Compiler/Disassembler:
11432
11433Implemented full support for Package objects within the Case() operator.
11434Note: The Break() operator is currently not supported within Case blocks
11435(TermLists) as there is some question about backward compatibility with
11436ACPI
114371.0 interpreters.
11438
11439
11440Fixed a problem where complex terms were not supported properly within
11441the
11442Switch() operator.
11443
11444Eliminated extraneous warning for compiler-emitted reserved names of the
11445form "_T_x".  (Used in Switch/Case operators.)
11446
11447Eliminated optimization messages for "_T_x" objects and small constants
11448within the DefinitionBlock operator.
11449
11450
11451----------------------------------------
1145215 June 2004.  Summary of changes for version 20040615:
11453
114541) ACPI CA Core Subsystem:
11455
11456Implemented support for Buffer and String objects (as per ACPI 2.0) for
11457the
11458following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
11459LLessEqual.
11460
11461All directory names in the entire source package are lower case, as they
11462were in earlier releases.
11463
11464Implemented "Disassemble" command in the AML debugger that will
11465disassemble
11466a single control method.
11467
11468Code and Data Size: Current and previous core subsystem library sizes are
11469shown below.  These are the code and data sizes for the acpica.lib
11470produced
11471by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11472any ACPI driver or OSPM code.  The debug version of the code includes the
11473debug output trace mechanism and has a much larger code and data size.
11474Note
11475that these values will vary depending on the efficiency of the compiler
11476and
11477the compiler options used during generation.
11478
11479  Previous Release:
11480    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
11481    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
11482
11483  Current Release:
11484    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
11485    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
11486
11487
114882) iASL Compiler/Disassembler:
11489
11490Implemented support for Buffer and String objects (as per ACPI 2.0) for
11491the
11492following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
11493LLessEqual.
11494
11495All directory names in the entire source package are lower case, as they
11496were in earlier releases.
11497
11498Fixed a fault when using the -g or -d<nofilename> options if the FADT was
11499not found.
11500
11501Fixed an issue with the Windows version of the compiler where later
11502versions
11503of Windows place the FADT in the registry under the name "FADT" and not
11504"FACP" as earlier versions did.  This applies when using the -g or -
11505d<nofilename> options.  The compiler now looks for both strings as
11506necessary.
11507
11508Fixed a problem with compiler namepath optimization where a namepath
11509within
11510the Scope() operator could not be optimized if the namepath was a subpath
11511of
11512the current scope path.
11513
11514----------------------------------------
1151527 May 2004.  Summary of changes for version 20040527:
11516
115171) ACPI CA Core Subsystem:
11518
11519Completed a new design and implementation for EBDA (Extended BIOS Data
11520Area)
11521support in the RSDP scan code.  The original code improperly scanned for
11522the
11523EBDA by simply scanning from memory location 0 to 0x400.  The correct
11524method
11525is to first obtain the EBDA pointer from within the BIOS data area, then
11526scan 1K of memory starting at the EBDA pointer.  There appear to be few
11527if
11528any machines that place the RSDP in the EBDA, however.
11529
11530Integrated a fix for a possible fault during evaluation of BufferField
11531arguments.  Obsolete code that was causing the problem was removed.
11532
11533Found and fixed a problem in the Field Support Code where data could be
11534corrupted on a bit field read that starts on an aligned boundary but does
11535not end on an aligned boundary.  Merged the read/write "datum length"
11536calculation code into a common procedure.
11537
11538Rolled in a couple of changes to the FreeBSD-specific header.
11539
11540
11541Code and Data Size: Current and previous core subsystem library sizes are
11542shown below.  These are the code and data sizes for the acpica.lib
11543produced
11544by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11545any ACPI driver or OSPM code.  The debug version of the code includes the
11546debug output trace mechanism and has a much larger code and data size.
11547Note
11548that these values will vary depending on the efficiency of the compiler
11549and
11550the compiler options used during generation.
11551
11552  Previous Release:
11553    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11554    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
11555  Current Release:
11556    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
11557    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
11558
11559
115602) iASL Compiler/Disassembler:
11561
11562Fixed a generation warning produced by some overly-verbose compilers for
11563a
1156464-bit constant.
11565
11566----------------------------------------
1156714 May 2004.  Summary of changes for version 20040514:
11568
115691) ACPI CA Core Subsystem:
11570
11571Fixed a problem where hardware GPE enable bits sometimes not set properly
11572during and after GPE method execution.  Result of 04/27 changes.
11573
11574Removed extra "clear all GPEs" when sleeping/waking.
11575
11576Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
11577AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
11578to
11579the new AcpiEv* calls as appropriate.
11580
11581ACPI_OS_NAME was removed from the OS-specific headers.  The default name
11582is
11583now "Microsoft Windows NT" for maximum compatibility.  However this can
11584be
11585changed by modifying the acconfig.h file.
11586
11587Allow a single invocation of AcpiInstallNotifyHandler for a handler that
11588traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
11589
11590Run _INI methods on ThermalZone objects.  This is against the ACPI
11591specification, but there is apparently ASL code in the field that has
11592these
11593_INI methods, and apparently "other" AML interpreters execute them.
11594
11595Performed a full 16/32/64 bit lint that resulted in some small changes.
11596
11597Added a sleep simulation command to the AML debugger to test sleep code.
11598
11599Code and Data Size: Current and previous core subsystem library sizes are
11600shown below.  These are the code and data sizes for the acpica.lib
11601produced
11602by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11603any ACPI driver or OSPM code.  The debug version of the code includes the
11604debug output trace mechanism and has a much larger code and data size.
11605Note
11606that these values will vary depending on the efficiency of the compiler
11607and
11608the compiler options used during generation.
11609
11610  Previous Release:
11611    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11612    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
11613  Current Release:
11614    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11615    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
11616
11617----------------------------------------
1161827 April 2004.  Summary of changes for version 20040427:
11619
116201) ACPI CA Core Subsystem:
11621
11622Completed a major overhaul of the GPE handling within ACPI CA.  There are
11623now three types of GPEs:  wake-only, runtime-only, and combination
11624wake/run.
11625The only GPEs allowed to be combination wake/run are for button-style
11626devices such as a control-method power button, control-method sleep
11627button,
11628or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
11629not
11630referenced by any _PRW methods are marked for "runtime" and hardware
11631enabled.  Any GPE that is referenced by a _PRW method is marked for
11632"wake"
11633(and disabled at runtime).  However, at sleep time, only those GPEs that
11634have been specifically enabled for wake via the AcpiEnableGpe interface
11635will
11636actually be hardware enabled.
11637
11638A new external interface has been added, AcpiSetGpeType(), that is meant
11639to
11640be used by device drivers to force a GPE to a particular type.  It will
11641be
11642especially useful for the drivers for the button devices mentioned above.
11643
11644Completed restructuring of the ACPI CA initialization sequence so that
11645default operation region handlers are installed before GPEs are
11646initialized
11647and the _PRW methods are executed.  This will prevent errors when the
11648_PRW
11649methods attempt to access system memory or I/O space.
11650
11651GPE enable/disable no longer reads the GPE enable register.  We now keep
11652the
11653enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
11654thus no longer depend on the hardware to maintain these bits.
11655
11656Always clear the wake status and fixed/GPE status bits before sleep, even
11657for state S5.
11658
11659Improved the AML debugger output for displaying the GPE blocks and their
11660current status.
11661
11662Added new strings for the _OSI method, of the form "Windows 2001 SPx"
11663where
11664x = 0,1,2,3,4.
11665
11666Fixed a problem where the physical address was incorrectly calculated
11667when
11668the Load() operator was used to directly load from an Operation Region
11669(vs.
11670loading from a Field object.)  Also added check for minimum table length
11671for
11672this case.
11673
11674Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
11675mutex release.
11676
11677Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
11678consistency with the other fields returned.
11679
11680Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
11681structure for each GPE in the system, so the size of this structure is
11682important.
11683
11684CPU stack requirement reduction:  Cleaned up the method execution and
11685object
11686evaluation paths so that now a parameter structure is passed, instead of
11687copying the various method parameters over and over again.
11688
11689In evregion.c:  Correctly exit and reenter the interpreter region if and
11690only if dispatching an operation region request to a user-installed
11691handler.
11692Do not exit/reenter when dispatching to a default handler (e.g., default
11693system memory or I/O handlers)
11694
11695
11696Notes for updating drivers for the new GPE support.  The following
11697changes
11698must be made to ACPI-related device drivers that are attached to one or
11699more
11700GPEs: (This information will be added to the ACPI CA Programmer
11701Reference.)
11702
117031) AcpiInstallGpeHandler no longer automatically enables the GPE, you
11704must
11705explicitly call AcpiEnableGpe.
117062) There is a new interface called AcpiSetGpeType. This should be called
11707before enabling the GPE.  Also, this interface will automatically disable
11708the GPE if it is currently enabled.
117093) AcpiEnableGpe no longer supports a GPE type flag.
11710
11711Specific drivers that must be changed:
117121) EC driver:
11713    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
11714AeGpeHandler, NULL);
11715    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
11716    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
11717
117182) Button Drivers (Power, Lid, Sleep):
11719Run _PRW method under parent device
11720If _PRW exists: /* This is a control-method button */
11721    Extract GPE number and possibly GpeDevice
11722    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
11723    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
11724
11725For all other devices that have _PRWs, we automatically set the GPE type
11726to
11727ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
11728This
11729must be done on a selective basis, usually requiring some kind of user
11730app
11731to allow the user to pick the wake devices.
11732
11733
11734Code and Data Size: Current and previous core subsystem library sizes are
11735shown below.  These are the code and data sizes for the acpica.lib
11736produced
11737by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11738any ACPI driver or OSPM code.  The debug version of the code includes the
11739debug output trace mechanism and has a much larger code and data size.
11740Note
11741that these values will vary depending on the efficiency of the compiler
11742and
11743the compiler options used during generation.
11744
11745  Previous Release:
11746    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
11747    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
11748  Current Release:
11749
11750    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11751    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
11752
11753
11754
11755----------------------------------------
1175602 April 2004.  Summary of changes for version 20040402:
11757
117581) ACPI CA Core Subsystem:
11759
11760Fixed an interpreter problem where an indirect store through an ArgX
11761parameter was incorrectly applying the "implicit conversion rules" during
11762the store.  From the ACPI specification: "If the target is a method local
11763or
11764argument (LocalX or ArgX), no conversion is performed and the result is
11765stored directly to the target".  The new behavior is to disable implicit
11766conversion during ALL stores to an ArgX.
11767
11768Changed the behavior of the _PRW method scan to ignore any and all errors
11769returned by a given _PRW.  This prevents the scan from aborting from the
11770failure of any single _PRW.
11771
11772Moved the runtime configuration parameters from the global init procedure
11773to
11774static variables in acglobal.h.  This will allow the host to override the
11775default values easily.
11776
11777Code and Data Size: Current and previous core subsystem library sizes are
11778shown below.  These are the code and data sizes for the acpica.lib
11779produced
11780by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11781any ACPI driver or OSPM code.  The debug version of the code includes the
11782debug output trace mechanism and has a much larger code and data size.
11783Note
11784that these values will vary depending on the efficiency of the compiler
11785and
11786the compiler options used during generation.
11787
11788  Previous Release:
11789    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
11790    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
11791  Current Release:
11792    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
11793    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
11794
11795
117962) iASL Compiler/Disassembler:
11797
11798iASL now fully disassembles SSDTs.  However, External() statements are
11799not
11800generated automatically for unresolved symbols at this time.  This is a
11801planned feature for future implementation.
11802
11803Fixed a scoping problem in the disassembler that occurs when the type of
11804the
11805target of a Scope() operator is overridden.  This problem caused an
11806incorrectly nested internal namespace to be constructed.
11807
11808Any warnings or errors that are emitted during disassembly are now
11809commented
11810out automatically so that the resulting file can be recompiled without
11811any
11812hand editing.
11813
11814----------------------------------------
1181526 March 2004.  Summary of changes for version 20040326:
11816
118171) ACPI CA Core Subsystem:
11818
11819Implemented support for "wake" GPEs via interaction between GPEs and the
11820_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
11821identified as a WAKE GPE and by default will no longer be enabled at
11822runtime.  Previously, we were blindly enabling all GPEs with a
11823corresponding
11824_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
11825We
11826believe this has been the cause of thousands of "spurious" GPEs on some
11827systems.
11828
11829This new GPE behavior is can be reverted to the original behavior (enable
11830ALL GPEs at runtime) via a runtime flag.
11831
11832Fixed a problem where aliased control methods could not access objects
11833properly.  The proper scope within the namespace was not initialized
11834(transferred to the target of the aliased method) before executing the
11835target method.
11836
11837Fixed a potential race condition on internal object deletion on the
11838return
11839object in AcpiEvaluateObject.
11840
11841Integrated a fix for resource descriptors where both _MEM and _MTP were
11842being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
11843wide, 0x0F instead of 0x03.)
11844
11845Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
11846preventing
11847a
11848fault in some cases.
11849
11850Updated Notify() values for debug statements in evmisc.c
11851
11852Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
11853
11854Code and Data Size: Current and previous core subsystem library sizes are
11855shown below.  These are the code and data sizes for the acpica.lib
11856produced
11857by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11858any ACPI driver or OSPM code.  The debug version of the code includes the
11859debug output trace mechanism and has a much larger code and data size.
11860Note
11861that these values will vary depending on the efficiency of the compiler
11862and
11863the compiler options used during generation.
11864
11865  Previous Release:
11866
11867    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11868    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11869  Current Release:
11870    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
11871    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
11872
11873----------------------------------------
1187411 March 2004.  Summary of changes for version 20040311:
11875
118761) ACPI CA Core Subsystem:
11877
11878Fixed a problem where errors occurring during the parse phase of control
11879method execution did not abort cleanly.  For example, objects created and
11880installed in the namespace were not deleted.  This caused all subsequent
11881invocations of the method to return the AE_ALREADY_EXISTS exception.
11882
11883Implemented a mechanism to force a control method to "Serialized"
11884execution
11885if the method attempts to create namespace objects. (The root of the
11886AE_ALREADY_EXISTS problem.)
11887
11888Implemented support for the predefined _OSI "internal" control method.
11889Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
11890and
11891"Windows 2001.1", and can be easily upgraded for new strings as
11892necessary.
11893This feature will allow "other" operating systems to execute the fully
11894tested, "Windows" code path through the ASL code
11895
11896Global Lock Support:  Now allows multiple acquires and releases with any
11897internal thread.  Removed concept of "owning thread" for this special
11898mutex.
11899
11900Fixed two functions that were inappropriately declaring large objects on
11901the
11902CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
11903during
11904method execution considerably.
11905
11906Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
11907S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
11908
11909Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
11910defined on the machine.
11911
11912Implemented two runtime options:  One to force all control method
11913execution
11914to "Serialized" to mimic Windows behavior, another to disable _OSI
11915support
11916if it causes problems on a given machine.
11917
11918Code and Data Size: Current and previous core subsystem library sizes are
11919shown below.  These are the code and data sizes for the acpica.lib
11920produced
11921by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11922any ACPI driver or OSPM code.  The debug version of the code includes the
11923debug output trace mechanism and has a much larger code and data size.
11924Note
11925that these values will vary depending on the efficiency of the compiler
11926and
11927the compiler options used during generation.
11928
11929  Previous Release:
11930    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11931    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11932  Current Release:
11933    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11934    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11935
119362) iASL Compiler/Disassembler:
11937
11938Fixed an array size problem for FreeBSD that would cause the compiler to
11939fault.
11940
11941----------------------------------------
1194220 February 2004.  Summary of changes for version 20040220:
11943
11944
119451) ACPI CA Core Subsystem:
11946
11947Implemented execution of _SxD methods for Device objects in the
11948GetObjectInfo interface.
11949
11950Fixed calls to _SST method to pass the correct arguments.
11951
11952Added a call to _SST on wake to restore to "working" state.
11953
11954Check for End-Of-Buffer failure case in the WalkResources interface.
11955
11956Integrated fix for 64-bit alignment issue in acglobal.h by moving two
11957structures to the beginning of the file.
11958
11959After wake, clear GPE status register(s) before enabling GPEs.
11960
11961After wake, clear/enable power button.  (Perhaps we should clear/enable
11962all
11963fixed events upon wake.)
11964
11965Fixed a couple of possible memory leaks in the Namespace manager.
11966
11967Integrated latest acnetbsd.h file.
11968
11969----------------------------------------
1197011 February 2004.  Summary of changes for version 20040211:
11971
11972
119731) ACPI CA Core Subsystem:
11974
11975Completed investigation and implementation of the call-by-reference
11976mechanism for control method arguments.
11977
11978Fixed a problem where a store of an object into an indexed package could
11979fail if the store occurs within a different method than the method that
11980created the package.
11981
11982Fixed a problem where the ToDecimal operator could return incorrect
11983results.
11984
11985Fixed a problem where the CopyObject operator could fail on some of the
11986more
11987obscure objects (e.g., Reference objects.)
11988
11989Improved the output of the Debug object to display buffer, package, and
11990index objects.
11991
11992Fixed a problem where constructs of the form "RefOf (ArgX)" did not
11993return
11994the expected result.
11995
11996Added permanent ACPI_REPORT_ERROR macros for all instances of the
11997ACPI_AML_INTERNAL exception.
11998
11999Integrated latest version of acfreebsd.h
12000
12001----------------------------------------
1200216 January 2004.  Summary of changes for version 20040116:
12003
12004The purpose of this release is primarily to update the copyright years in
12005each module, thus causing a huge number of diffs.  There are a few small
12006functional changes, however.
12007
120081) ACPI CA Core Subsystem:
12009
12010Improved error messages when there is a problem finding one or more of
12011the
12012required base ACPI tables
12013
12014Reintroduced the definition of APIC_HEADER in actbl.h
12015
12016Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
12017
12018Removed extraneous reference to NewObj in dsmthdat.c
12019
120202) iASL compiler
12021
12022Fixed a problem introduced in December that disabled the correct
12023disassembly
12024of Resource Templates
12025
12026
12027----------------------------------------
1202803 December 2003.  Summary of changes for version 20031203:
12029
120301) ACPI CA Core Subsystem:
12031
12032Changed the initialization of Operation Regions during subsystem
12033init to perform two entire walks of the ACPI namespace; The first
12034to initialize the regions themselves, the second to execute the
12035_REG methods.  This fixed some interdependencies across _REG
12036methods found on some machines.
12037
12038Fixed a problem where a Store(Local0, Local1) could simply update
12039the object reference count, and not create a new copy of the
12040object if the Local1 is uninitialized.
12041
12042Implemented support for the _SST reserved method during sleep
12043transitions.
12044
12045Implemented support to clear the SLP_TYP and SLP_EN bits when
12046waking up, this is apparently required by some machines.
12047
12048When sleeping, clear the wake status only if SleepState is not S5.
12049
12050Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
12051pointer arithmetic advanced a string pointer too far.
12052
12053Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
12054could be returned if the requested table has not been loaded.
12055
12056Within the support for IRQ resources, restructured the handling of
12057the active and edge/level bits.
12058
12059Fixed a few problems in AcpiPsxExecute() where memory could be
12060leaked under certain error conditions.
12061
12062Improved error messages for the cases where the ACPI mode could
12063not be entered.
12064
12065Code and Data Size: Current and previous core subsystem library
12066sizes are shown below.  These are the code and data sizes for the
12067acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12068these values do not include any ACPI driver or OSPM code.  The
12069debug version of the code includes the debug output trace
12070mechanism and has a much larger code and data size.  Note that
12071these values will vary depending on the efficiency of the compiler
12072and the compiler options used during generation.
12073
12074  Previous Release (20031029):
12075    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
12076    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
12077  Current Release:
12078    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
12079    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
12080
120812) iASL Compiler/Disassembler:
12082
12083Implemented a fix for the iASL disassembler where a bad index was
12084generated.  This was most noticeable on 64-bit platforms
12085
12086
12087----------------------------------------
1208829 October 2003.  Summary of changes for version 20031029:
12089
120901) ACPI CA Core Subsystem:
12091
12092
12093Fixed a problem where a level-triggered GPE with an associated
12094_Lxx control method was incorrectly cleared twice.
12095
12096Fixed a problem with the Field support code where an access can
12097occur beyond the end-of-region if the field is non-aligned but
12098extends to the very end of the parent region (resulted in an
12099AE_AML_REGION_LIMIT exception.)
12100
12101Fixed a problem with ACPI Fixed Events where an RT Clock handler
12102would not get invoked on an RTC event.  The RTC event bitmasks for
12103the PM1 registers were not being initialized properly.
12104
12105Implemented support for executing _STA and _INI methods for
12106Processor objects.  Although this is currently not part of the
12107ACPI specification, there is existing ASL code that depends on the
12108init-time execution of these methods.
12109
12110Implemented and deployed a GetDescriptorName function to decode
12111the various types of internal descriptors.  Guards against null
12112descriptors during debug output also.
12113
12114Implemented and deployed a GetNodeName function to extract the 4-
12115character namespace node name.  This function simplifies the debug
12116and error output, as well as guarding against null pointers during
12117output.
12118
12119Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
12120simplify the debug and error output of 64-bit integers.  This
12121macro replaces the HIDWORD and LODWORD macros for dumping these
12122integers.
12123
12124Updated the implementation of the Stall() operator to only call
12125AcpiOsStall(), and also return an error if the operand is larger
12126than 255.  This preserves the required behavior of not
12127relinquishing the processor, as would happen if AcpiOsSleep() was
12128called for "long stalls".
12129
12130Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
12131initialized are now treated as NOOPs.
12132
12133Cleaned up a handful of warnings during 64-bit generation.
12134
12135Fixed a reported error where and incorrect GPE number was passed
12136to the GPE dispatch handler.  This value is only used for error
12137output, however.  Used this opportunity to clean up and streamline
12138the GPE dispatch code.
12139
12140Code and Data Size: Current and previous core subsystem library
12141sizes are shown below.  These are the code and data sizes for the
12142acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12143these values do not include any ACPI driver or OSPM code.  The
12144
12145debug version of the code includes the debug output trace
12146mechanism and has a much larger code and data size.  Note that
12147these values will vary depending on the efficiency of the compiler
12148and the compiler options used during generation.
12149
12150  Previous Release (20031002):
12151    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
12152    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
12153  Current Release:
12154    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
12155    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
12156
12157
121582) iASL Compiler/Disassembler:
12159
12160Updated the iASL compiler to return an error if the operand to the
12161Stall() operator is larger than 255.
12162
12163
12164----------------------------------------
1216502 October 2003.  Summary of changes for version 20031002:
12166
12167
121681) ACPI CA Core Subsystem:
12169
12170Fixed a problem with Index Fields where the index was not
12171incremented for fields that require multiple writes to the
12172index/data registers (Fields that are wider than the data
12173register.)
12174
12175Fixed a problem with all Field objects where a write could go
12176beyond the end-of-field if the field was larger than the access
12177granularity and therefore required multiple writes to complete the
12178request.  An extra write beyond the end of the field could happen
12179inadvertently.
12180
12181Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
12182would incorrectly be returned if the width of the Data Register
12183was larger than the specified field access width.
12184
12185Completed fixes for LoadTable() and Unload() and verified their
12186operation.  Implemented full support for the "DdbHandle" object
12187throughout the ACPI CA subsystem.
12188
12189Implemented full support for the MADT and ECDT tables in the ACPI
12190CA header files.  Even though these tables are not directly
12191consumed by ACPI CA, the header definitions are useful for ACPI
12192device drivers.
12193
12194Integrated resource descriptor fixes posted to the Linux ACPI
12195list.  This included checks for minimum descriptor length, and
12196support for trailing NULL strings within descriptors that have
12197optional string elements.
12198
12199Code and Data Size: Current and previous core subsystem library
12200sizes are shown below.  These are the code and data sizes for the
12201acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12202these values do not include any ACPI driver or OSPM code.  The
12203debug version of the code includes the debug output trace
12204mechanism and has a much larger code and data size.  Note that
12205these values will vary depending on the efficiency of the compiler
12206and the compiler options used during generation.
12207
12208  Previous Release (20030918):
12209    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
12210    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
12211  Current Release:
12212    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
12213    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
12214
12215
122162) iASL Compiler:
12217
12218Implemented detection of non-ASCII characters within the input
12219source ASL file.  This catches attempts to compile binary (AML)
12220files early in the compile, with an informative error message.
12221
12222Fixed a problem where the disassembler would fault if the output
12223filename could not be generated or if the output file could not be
12224opened.
12225
12226----------------------------------------
1222718 September 2003.  Summary of changes for version 20030918:
12228
12229
122301) ACPI CA Core Subsystem:
12231
12232Found and fixed a longstanding problem with the late execution of
12233the various deferred AML opcodes (such as Operation Regions,
12234Buffer Fields, Buffers, and Packages).  If the name string
12235specified for the name of the new object placed the object in a
12236scope other than the current scope, the initialization/execution
12237of the opcode failed.  The solution to this problem was to
12238implement a mechanism where the late execution of such opcodes
12239does not attempt to lookup/create the name a second time in an
12240incorrect scope.  This fixes the "region size computed
12241incorrectly" problem.
12242
12243Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
12244Global Lock AE_BAD_PARAMETER error.
12245
12246Fixed several 64-bit issues with prototypes, casting and data
12247types.
12248
12249Removed duplicate prototype from acdisasm.h
12250
12251Fixed an issue involving EC Operation Region Detach (Shaohua Li)
12252
12253Code and Data Size: Current and previous core subsystem library
12254sizes are shown below.  These are the code and data sizes for the
12255acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12256these values do not include any ACPI driver or OSPM code.  The
12257debug version of the code includes the debug output trace
12258mechanism and has a much larger code and data size.  Note that
12259these values will vary depending on the efficiency of the compiler
12260and the compiler options used during generation.
12261
12262  Previous Release:
12263
12264    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
12265    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
12266  Current Release:
12267    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
12268    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
12269
12270
122712) Linux:
12272
12273Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
12274correct sleep time in seconds.
12275
12276----------------------------------------
1227714 July 2003.  Summary of changes for version 20030619:
12278
122791) ACPI CA Core Subsystem:
12280
12281Parse SSDTs in order discovered, as opposed to reverse order
12282(Hrvoje Habjanic)
12283
12284Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
12285Klausner,
12286   Nate Lawson)
12287
12288
122892) Linux:
12290
12291Dynamically allocate SDT list (suggested by Andi Kleen)
12292
12293proc function return value cleanups (Andi Kleen)
12294
12295Correctly handle NMI watchdog during long stalls (Andrew Morton)
12296
12297Make it so acpismp=force works (reported by Andrew Morton)
12298
12299
12300----------------------------------------
1230119 June 2003.  Summary of changes for version 20030619:
12302
123031) ACPI CA Core Subsystem:
12304
12305Fix To/FromBCD, eliminating the need for an arch-specific #define.
12306
12307Do not acquire a semaphore in the S5 shutdown path.
12308
12309Fix ex_digits_needed for 0. (Takayoshi Kochi)
12310
12311Fix sleep/stall code reversal. (Andi Kleen)
12312
12313Revert a change having to do with control method calling
12314semantics.
12315
123162) Linux:
12317
12318acpiphp update (Takayoshi Kochi)
12319
12320Export acpi_disabled for sonypi (Stelian Pop)
12321
12322Mention acpismp=force in config help
12323
12324Re-add acpitable.c and acpismp=force. This improves backwards
12325
12326compatibility and also cleans up the code to a significant degree.
12327
12328Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
12329
12330----------------------------------------
1233122 May 2003.  Summary of changes for version 20030522:
12332
123331) ACPI CA Core Subsystem:
12334
12335Found and fixed a reported problem where an AE_NOT_FOUND error
12336occurred occasionally during _BST evaluation.  This turned out to
12337be an Owner ID allocation issue where a called method did not get
12338a new ID assigned to it.  Eventually, (after 64k calls), the Owner
12339ID UINT16 would wraparound so that the ID would be the same as the
12340caller's and the called method would delete the caller's
12341namespace.
12342
12343Implemented extended error reporting for control methods that are
12344aborted due to a run-time exception.  Output includes the exact
12345AML instruction that caused the method abort, a dump of the method
12346locals and arguments at the time of the abort, and a trace of all
12347nested control method calls.
12348
12349Modified the interpreter to allow the creation of buffers of zero
12350length from the AML code. Implemented new code to ensure that no
12351attempt is made to actually allocate a memory buffer (of length
12352zero) - instead, a simple buffer object with a NULL buffer pointer
12353and length zero is created.  A warning is no longer issued when
12354the AML attempts to create a zero-length buffer.
12355
12356Implemented a workaround for the "leading asterisk issue" in
12357_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
12358asterisk is automatically removed if present in any HID, UID, or
12359CID strings.  The iASL compiler will still flag this asterisk as
12360an error, however.
12361
12362Implemented full support for _CID methods that return a package of
12363multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
12364now additionally returns a device _CID list if present.  This
12365required a change to the external interface in order to pass an
12366ACPI_BUFFER object as a parameter since the _CID list is of
12367variable length.
12368
12369Fixed a problem with the new AE_SAME_HANDLER exception where
12370handler initialization code did not know about this exception.
12371
12372Code and Data Size: Current and previous core subsystem library
12373sizes are shown below.  These are the code and data sizes for the
12374acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
12375these values do not include any ACPI driver or OSPM code.  The
12376debug version of the code includes the debug output trace
12377mechanism and has a much larger code and data size.  Note that
12378these values will vary depending on the efficiency of the compiler
12379and the compiler options used during generation.
12380
12381  Previous Release (20030509):
12382    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
12383    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
12384  Current Release:
12385    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
12386    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
12387
12388
123892) Linux:
12390
12391Fixed a bug in which we would reinitialize the ACPI interrupt
12392after it was already working, thus disabling all ACPI and the IRQs
12393for any other device sharing the interrupt. (Thanks to Stian
12394Jordet)
12395
12396Toshiba driver update (John Belmonte)
12397
12398Return only 0 or 1 for our interrupt handler status (Andrew
12399Morton)
12400
12401
124023) iASL Compiler:
12403
12404Fixed a reported problem where multiple (nested) ElseIf()
12405statements were not handled correctly by the compiler, resulting
12406in incorrect warnings and incorrect AML code.  This was a problem
12407in both the ASL parser and the code generator.
12408
12409
124104) Documentation:
12411
12412Added changes to existing interfaces, new exception codes, and new
12413text concerning reference count object management versus garbage
12414collection.
12415
12416----------------------------------------
1241709 May 2003.  Summary of changes for version 20030509.
12418
12419
124201) ACPI CA Core Subsystem:
12421
12422Changed the subsystem initialization sequence to hold off
12423installation of address space handlers until the hardware has been
12424initialized and the system has entered ACPI mode.  This is because
12425the installation of space handlers can cause _REG methods to be
12426run.  Previously, the _REG methods could potentially be run before
12427ACPI mode was enabled.
12428
12429Fixed some memory leak issues related to address space handler and
12430notify handler installation.  There were some problems with the
12431reference count mechanism caused by the fact that the handler
12432objects are shared across several namespace objects.
12433
12434Fixed a reported problem where reference counts within the
12435namespace were not properly updated when named objects created by
12436method execution were deleted.
12437
12438Fixed a reported problem where multiple SSDTs caused a deletion
12439issue during subsystem termination.  Restructured the table data
12440structures to simplify the linked lists and the related code.
12441
12442Fixed a problem where the table ID associated with secondary
12443tables (SSDTs) was not being propagated into the namespace objects
12444created by those tables.  This would only present a problem for
12445tables that are unloaded at run-time, however.
12446
12447Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
12448type as the length parameter (instead of UINT32).
12449
12450Solved a long-standing problem where an ALREADY_EXISTS error
12451appears on various systems.  This problem could happen when there
12452are multiple PCI_Config operation regions under a single PCI root
12453bus.  This doesn't happen very frequently, but there are some
12454systems that do this in the ASL.
12455
12456Fixed a reported problem where the internal DeleteNode function
12457was incorrectly handling the case where a namespace node was the
12458first in the parent's child list, and had additional peers (not
12459the only child, but first in the list of children.)
12460
12461Code and Data Size: Current core subsystem library sizes are shown
12462below.  These are the code and data sizes for the acpica.lib
12463produced by the Microsoft Visual C++ 6.0 compiler, and these
12464values do not include any ACPI driver or OSPM code.  The debug
12465version of the code includes the debug output trace mechanism and
12466has a much larger code and data size.  Note that these values will
12467vary depending on the efficiency of the compiler and the compiler
12468options used during generation.
12469
12470  Previous Release
12471    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
12472    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
12473  Current Release:
12474    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
12475    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
12476
12477
124782) Linux:
12479
12480Allow ":" in OS override string (Ducrot Bruno)
12481
12482Kobject fix (Greg KH)
12483
12484
124853 iASL Compiler/Disassembler:
12486
12487Fixed a problem in the generation of the C source code files (AML
12488is emitted in C source statements for BIOS inclusion) where the
12489Ascii dump that appears within a C comment at the end of each line
12490could cause a compile time error if the AML sequence happens to
12491have an open comment or close comment sequence embedded.
12492
12493
12494----------------------------------------
1249524 April 2003.  Summary of changes for version 20030424.
12496
12497
124981) ACPI CA Core Subsystem:
12499
12500Support for big-endian systems has been implemented.  Most of the
12501support has been invisibly added behind big-endian versions of the
12502ACPI_MOVE_* macros.
12503
12504Fixed a problem in AcpiHwDisableGpeBlock() and
12505AcpiHwClearGpeBlock() where an incorrect offset was passed to the
12506low level hardware write routine.  The offset parameter was
12507actually eliminated from the low level read/write routines because
12508they had become obsolete.
12509
12510Fixed a problem where a handler object was deleted twice during
12511the removal of a fixed event handler.
12512
12513
125142) Linux:
12515
12516A fix for SMP systems with link devices was contributed by
12517
12518Compaq's Dan Zink.
12519
12520(2.5) Return whether we handled the interrupt in our IRQ handler.
12521(Linux ISRs no longer return void, so we can propagate the handler
12522return value from the ACPI CA core back to the OS.)
12523
12524
12525
125263) Documentation:
12527
12528The ACPI CA Programmer Reference has been updated to reflect new
12529interfaces and changes to existing interfaces.
12530
12531----------------------------------------
1253228 March 2003.  Summary of changes for version 20030328.
12533
125341) ACPI CA Core Subsystem:
12535
12536The GPE Block Device support has been completed.  New interfaces
12537are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
12538interfaces (enable, disable, clear, getstatus) have been split
12539into separate interfaces for Fixed Events and General Purpose
12540Events (GPEs) in order to support GPE Block Devices properly.
12541
12542Fixed a problem where the error message "Failed to acquire
12543semaphore" would appear during operations on the embedded
12544controller (EC).
12545
12546Code and Data Size: Current core subsystem library sizes are shown
12547below.  These are the code and data sizes for the acpica.lib
12548produced by the Microsoft Visual C++ 6.0 compiler, and these
12549values do not include any ACPI driver or OSPM code.  The debug
12550version of the code includes the debug output trace mechanism and
12551has a much larger code and data size.  Note that these values will
12552vary depending on the efficiency of the compiler and the compiler
12553options used during generation.
12554
12555  Previous Release
12556    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
12557    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
12558  Current Release:
12559    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
12560    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
12561
12562
12563----------------------------------------
1256428 February 2003.  Summary of changes for version 20030228.
12565
12566
125671) ACPI CA Core Subsystem:
12568
12569The GPE handling and dispatch code has been completely overhauled
12570in preparation for support of GPE Block Devices (ID ACPI0006).
12571This affects internal data structures and code only; there should
12572be no differences visible externally.  One new file has been
12573added, evgpeblk.c
12574
12575The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
12576fields that are used to determine the GPE block lengths.  The
12577REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
12578structures are ignored.  This is per the ACPI specification but it
12579isn't very clear.  The full 256 Block 0/1 GPEs are now supported
12580(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
12581
12582In the SCI interrupt handler, removed the read of the PM1_CONTROL
12583register to look at the SCI_EN bit.  On some machines, this read
12584causes an SMI event and greatly slows down SCI events.  (This may
12585in fact be the cause of slow battery status response on some
12586systems.)
12587
12588Fixed a problem where a store of a NULL string to a package object
12589could cause the premature deletion of the object.  This was seen
12590during execution of the battery _BIF method on some systems,
12591resulting in no battery data being returned.
12592
12593Added AcpiWalkResources interface to simplify parsing of resource
12594lists.
12595
12596Code and Data Size: Current core subsystem library sizes are shown
12597below.  These are the code and data sizes for the acpica.lib
12598produced by the Microsoft Visual C++ 6.0 compiler, and these
12599values do not include any ACPI driver or OSPM code.  The debug
12600version of the code includes the debug output trace mechanism and
12601has a much larger code and data size.  Note that these values will
12602vary depending on the efficiency of the compiler and the compiler
12603options used during generation.
12604
12605  Previous Release
12606    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12607    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12608  Current Release:
12609    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
12610    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
12611
12612
126132) Linux
12614
12615S3 fixes (Ole Rohne)
12616
12617Update ACPI PHP driver with to use new acpi_walk_resource API
12618(Bjorn Helgaas)
12619
12620Add S4BIOS support (Pavel Machek)
12621
12622Map in entire table before performing checksum (John Stultz)
12623
12624Expand the mem= cmdline to allow the specification of reserved and
12625ACPI DATA blocks (Pavel Machek)
12626
12627Never use ACPI on VISWS
12628
12629Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
12630
12631Revert a change that allowed P_BLK lengths to be 4 or 5. This is
12632causing us to think that some systems support C2 when they really
12633don't.
12634
12635Do not count processor objects for non-present CPUs (Thanks to
12636Dominik Brodowski)
12637
12638
126393) iASL Compiler:
12640
12641Fixed a problem where ASL include files could not be found and
12642opened.
12643
12644Added support for the _PDC reserved name.
12645
12646
12647----------------------------------------
1264822 January 2003.  Summary of changes for version 20030122.
12649
12650
126511) ACPI CA Core Subsystem:
12652
12653Added a check for constructs of the form:  Store (Local0, Local0)
12654where Local0 is not initialized.  Apparently, some BIOS
12655programmers believe that this is a NOOP.  Since this store doesn't
12656do anything anyway, the new prototype behavior will ignore this
12657error.  This is a case where we can relax the strict checking in
12658the interpreter in the name of compatibility.
12659
12660
126612) Linux
12662
12663The AcpiSrc Source Conversion Utility has been released with the
12664Linux package for the first time.  This is the utility that is
12665used to convert the ACPI CA base source code to the Linux version.
12666
12667(Both) Handle P_BLK lengths shorter than 6 more gracefully
12668
12669(Both) Move more headers to include/acpi, and delete an unused
12670header.
12671
12672(Both) Move drivers/acpi/include directory to include/acpi
12673
12674(Both) Boot functions don't use cmdline, so don't pass it around
12675
12676(Both) Remove include of unused header (Adrian Bunk)
12677
12678(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
12679the
12680former now also includes the latter, acpiphp.h only needs the one,
12681now.
12682
12683(2.5) Make it possible to select method of bios restoring after S3
12684resume. [=> no more ugly ifdefs] (Pavel Machek)
12685
12686(2.5) Make proc write interfaces work (Pavel Machek)
12687
12688(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
12689
12690(2.5) Break out ACPI Perf code into its own module, under cpufreq
12691(Dominik Brodowski)
12692
12693(2.4) S4BIOS support (Ducrot Bruno)
12694
12695(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
12696Visinoni)
12697
12698
126993) iASL Compiler:
12700
12701Added support to disassemble SSDT and PSDTs.
12702
12703Implemented support to obtain SSDTs from the Windows registry if
12704available.
12705
12706
12707----------------------------------------
1270809 January 2003.  Summary of changes for version 20030109.
12709
127101) ACPI CA Core Subsystem:
12711
12712Changed the behavior of the internal Buffer-to-String conversion
12713function.  The current ACPI specification states that the contents
12714of the buffer are "converted to a string of two-character
12715hexadecimal numbers, each separated by a space".  Unfortunately,
12716this definition is not backwards compatible with existing ACPI 1.0
12717implementations (although the behavior was not defined in the ACPI
127181.0 specification).  The new behavior simply copies data from the
12719buffer to the string until a null character is found or the end of
12720the buffer is reached.  The new String object is always null
12721terminated.  This problem was seen during the generation of _BIF
12722battery data where incorrect strings were returned for battery
12723type, etc.  This will also require an errata to the ACPI
12724specification.
12725
12726Renamed all instances of NATIVE_UINT and NATIVE_INT to
12727ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
12728
12729Copyright in all module headers (both Linux and non-Linux) has be
12730updated to 2003.
12731
12732Code and Data Size: Current core subsystem library sizes are shown
12733below.  These are the code and data sizes for the acpica.lib
12734produced by the Microsoft Visual C++ 6.0 compiler, and these
12735values do not include any ACPI driver or OSPM code.  The debug
12736version of the code includes the debug output trace mechanism and
12737has a much larger code and data size.  Note that these values will
12738vary depending on the efficiency of the compiler and the compiler
12739options used during generation.
12740
12741  Previous Release
12742    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12743    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12744  Current Release:
12745    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12746    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12747
12748
127492) Linux
12750
12751Fixed an oops on module insertion/removal (Matthew Tippett)
12752
12753(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
12754
12755(2.5) Replace pr_debug (Randy Dunlap)
12756
12757(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
12758
12759(Both) Eliminate spawning of thread from timer callback, in favor
12760of schedule_work()
12761
12762(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
12763
12764(Both) Added define for Fixed Function HW region (Matthew Wilcox)
12765
12766(Both) Add missing statics to button.c (Pavel Machek)
12767
12768Several changes have been made to the source code translation
12769utility that generates the Linux Code in order to make the code
12770more "Linux-like":
12771
12772All typedefs on structs and unions have been removed in keeping
12773with the Linux coding style.
12774
12775Removed the non-Linux SourceSafe module revision number from each
12776module header.
12777
12778Completed major overhaul of symbols to be lowercased for linux.
12779Doubled the number of symbols that are lowercased.
12780
12781Fixed a problem where identifiers within procedure headers and
12782within quotes were not fully lower cased (they were left with a
12783starting capital.)
12784
12785Some C macros whose only purpose is to allow the generation of 16-
12786bit code are now completely removed in the Linux code, increasing
12787readability and maintainability.
12788
12789----------------------------------------
12790
1279112 December 2002.  Summary of changes for version 20021212.
12792
12793
127941) ACPI CA Core Subsystem:
12795
12796Fixed a problem where the creation of a zero-length AML Buffer
12797would cause a fault.
12798
12799Fixed a problem where a Buffer object that pointed to a static AML
12800buffer (in an ACPI table) could inadvertently be deleted, causing
12801memory corruption.
12802
12803Fixed a problem where a user buffer (passed in to the external
12804ACPI CA interfaces) could be overwritten if the buffer was too
12805small to complete the operation, causing memory corruption.
12806
12807Fixed a problem in the Buffer-to-String conversion code where a
12808string of length one was always returned, regardless of the size
12809of the input Buffer object.
12810
12811Removed the NATIVE_CHAR data type across the entire source due to
12812lack of need and lack of consistent use.
12813
12814Code and Data Size: Current core subsystem library sizes are shown
12815below.  These are the code and data sizes for the acpica.lib
12816produced by the Microsoft Visual C++ 6.0 compiler, and these
12817values do not include any ACPI driver or OSPM code.  The debug
12818version of the code includes the debug output trace mechanism and
12819has a much larger code and data size.  Note that these values will
12820vary depending on the efficiency of the compiler and the compiler
12821options used during generation.
12822
12823  Previous Release
12824    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12825    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12826  Current Release:
12827    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12828    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12829
12830
12831----------------------------------------
1283205 December 2002.  Summary of changes for version 20021205.
12833
128341) ACPI CA Core Subsystem:
12835
12836Fixed a problem where a store to a String or Buffer object could
12837cause corruption of the DSDT if the object type being stored was
12838the same as the target object type and the length of the object
12839being stored was equal to or smaller than the original (existing)
12840target object.  This was seen to cause corruption of battery _BIF
12841buffers if the _BIF method modified the buffer on the fly.
12842
12843Fixed a problem where an internal error was generated if a control
12844method invocation was used in an OperationRegion, Buffer, or
12845Package declaration.  This was caused by the deferred parsing of
12846the control method and thus the deferred creation of the internal
12847method object.  The solution to this problem was to create the
12848internal method object at the moment the method is encountered in
12849the first pass - so that subsequent references to the method will
12850able to obtain the required parameter count and thus properly
12851parse the method invocation.  This problem presented itself as an
12852AE_AML_INTERNAL during the pass 1 parse phase during table load.
12853
12854Fixed a problem where the internal String object copy routine did
12855not always allocate sufficient memory for the target String object
12856and caused memory corruption.  This problem was seen to cause
12857"Allocation already present in list!" errors as memory allocation
12858became corrupted.
12859
12860Implemented a new function for the evaluation of namespace objects
12861that allows the specification of the allowable return object
12862types.  This simplifies a lot of code that checks for a return
12863object of one or more specific objects returned from the
12864evaluation (such as _STA, etc.)  This may become and external
12865function if it would be useful to ACPI-related drivers.
12866
12867Completed another round of prefixing #defines with "ACPI_" for
12868clarity.
12869
12870Completed additional code restructuring to allow more modular
12871linking for iASL compiler and AcpiExec.  Several files were split
12872creating new files.  New files:  nsparse.c dsinit.c evgpe.c
12873
12874Implemented an abort mechanism to terminate an executing control
12875method via the AML debugger.  This feature is useful for debugging
12876control methods that depend (wait) for specific hardware
12877responses.
12878
12879Code and Data Size: Current core subsystem library sizes are shown
12880below.  These are the code and data sizes for the acpica.lib
12881produced by the Microsoft Visual C++ 6.0 compiler, and these
12882values do not include any ACPI driver or OSPM code.  The debug
12883version of the code includes the debug output trace mechanism and
12884has a much larger code and data size.  Note that these values will
12885vary depending on the efficiency of the compiler and the compiler
12886options used during generation.
12887
12888  Previous Release
12889    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12890    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12891  Current Release:
12892    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12893    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12894
12895
128962) iASL Compiler/Disassembler
12897
12898Fixed a compiler code generation problem for "Interrupt" Resource
12899Descriptors.  If specified in the ASL, the optional "Resource
12900Source Index" and "Resource Source" fields were not inserted into
12901the correct location within the AML resource descriptor, creating
12902an invalid descriptor.
12903
12904Fixed a disassembler problem for "Interrupt" resource descriptors.
12905The optional "Resource Source Index" and "Resource Source" fields
12906were ignored.
12907
12908
12909----------------------------------------
1291022 November 2002.  Summary of changes for version 20021122.
12911
12912
129131) ACPI CA Core Subsystem:
12914
12915Fixed a reported problem where an object stored to a Method Local
12916or Arg was not copied to a new object during the store - the
12917object pointer was simply copied to the Local/Arg.  This caused
12918all subsequent operations on the Local/Arg to also affect the
12919original source of the store operation.
12920
12921Fixed a problem where a store operation to a Method Local or Arg
12922was not completed properly if the Local/Arg contained a reference
12923(from RefOf) to a named field.  The general-purpose store-to-
12924namespace-node code is now used so that this case is handled
12925automatically.
12926
12927Fixed a problem where the internal object copy routine would cause
12928a protection fault if the object being copied was a Package and
12929contained either 1) a NULL package element or 2) a nested sub-
12930package.
12931
12932Fixed a problem with the GPE initialization that resulted from an
12933ambiguity in the ACPI specification.  One section of the
12934specification states that both the address and length of the GPE
12935block must be zero if the block is not supported.  Another section
12936implies that only the address need be zero if the block is not
12937supported.  The code has been changed so that both the address and
12938the length must be non-zero to indicate a valid GPE block (i.e.,
12939if either the address or the length is zero, the GPE block is
12940invalid.)
12941
12942Code and Data Size: Current core subsystem library sizes are shown
12943below.  These are the code and data sizes for the acpica.lib
12944produced by the Microsoft Visual C++ 6.0 compiler, and these
12945values do not include any ACPI driver or OSPM code.  The debug
12946version of the code includes the debug output trace mechanism and
12947has a much larger code and data size.  Note that these values will
12948vary depending on the efficiency of the compiler and the compiler
12949options used during generation.
12950
12951  Previous Release
12952    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12953    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12954  Current Release:
12955    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12956    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12957
12958
129592) Linux
12960
12961Cleaned up EC driver. Exported an external EC read/write
12962interface. By going through this, other drivers (most notably
12963sonypi) will be able to serialize access to the EC.
12964
12965
129663) iASL Compiler/Disassembler
12967
12968Implemented support to optionally generate include files for both
12969ASM and C (the -i switch).  This simplifies BIOS development by
12970automatically creating include files that contain external
12971declarations for the symbols that are created within the
12972
12973(optionally generated) ASM and C AML source files.
12974
12975
12976----------------------------------------
1297715 November 2002.  Summary of changes for version 20021115.
12978
129791) ACPI CA Core Subsystem:
12980
12981Fixed a memory leak problem where an error during resolution of
12982
12983method arguments during a method invocation from another method
12984failed to cleanup properly by deleting all successfully resolved
12985argument objects.
12986
12987Fixed a problem where the target of the Index() operator was not
12988correctly constructed if the source object was a package.  This
12989problem has not been detected because the use of a target operand
12990with Index() is very rare.
12991
12992Fixed a problem with the Index() operator where an attempt was
12993made to delete the operand objects twice.
12994
12995Fixed a problem where an attempt was made to delete an operand
12996twice during execution of the CondRefOf() operator if the target
12997did not exist.
12998
12999Implemented the first of perhaps several internal create object
13000functions that create and initialize a specific object type.  This
13001consolidates duplicated code wherever the object is created, thus
13002shrinking the size of the subsystem.
13003
13004Implemented improved debug/error messages for errors that occur
13005during nested method invocations.  All executing method pathnames
13006are displayed (with the error) as the call stack is unwound - thus
13007simplifying debug.
13008
13009Fixed a problem introduced in the 10/02 release that caused
13010premature deletion of a buffer object if a buffer was used as an
13011ASL operand where an integer operand is required (Thus causing an
13012implicit object conversion from Buffer to Integer.)  The change in
13013the 10/02 release was attempting to fix a memory leak (albeit
13014incorrectly.)
13015
13016Code and Data Size: Current core subsystem library sizes are shown
13017below.  These are the code and data sizes for the acpica.lib
13018produced by the Microsoft Visual C++ 6.0 compiler, and these
13019values do not include any ACPI driver or OSPM code.  The debug
13020version of the code includes the debug output trace mechanism and
13021has a much larger code and data size.  Note that these values will
13022vary depending on the efficiency of the compiler and the compiler
13023options used during generation.
13024
13025  Previous Release
13026    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
13027    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
13028  Current Release:
13029    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
13030    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
13031
13032
130332) Linux
13034
13035Changed the implementation of the ACPI semaphores to use down()
13036instead of down_interruptable().  It is important that the
13037execution of ACPI control methods not be interrupted by signals.
13038Methods must run to completion, or the system may be left in an
13039unknown/unstable state.
13040
13041Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
13042(Shawn Starr)
13043
13044
130453) iASL Compiler/Disassembler
13046
13047
13048Changed the default location of output files.  All output files
13049are now placed in the current directory by default instead of in
13050the directory of the source file.  This change may affect some
13051existing makefiles, but it brings the behavior of the compiler in
13052line with other similar tools.  The location of the output files
13053can be overridden with the -p command line switch.
13054
13055
13056----------------------------------------
1305711 November 2002.  Summary of changes for version 20021111.
13058
13059
130600) ACPI Specification 2.0B is released and is now available at:
13061http://www.acpi.info/index.html
13062
13063
130641) ACPI CA Core Subsystem:
13065
13066Implemented support for the ACPI 2.0 SMBus Operation Regions.
13067This includes the early detection and handoff of the request to
13068the SMBus region handler (avoiding all of the complex field
13069support code), and support for the bidirectional return packet
13070from an SMBus write operation.  This paves the way for the
13071development of SMBus drivers in each host operating system.
13072
13073Fixed a problem where the semaphore WAIT_FOREVER constant was
13074defined as 32 bits, but must be 16 bits according to the ACPI
13075specification.  This had the side effect of causing ASL
13076Mutex/Event timeouts even though the ASL code requested a wait
13077forever.  Changed all internal references to the ACPI timeout
13078parameter to 16 bits to prevent future problems.  Changed the name
13079of WAIT_FOREVER to ACPI_WAIT_FOREVER.
13080
13081Code and Data Size: Current core subsystem library sizes are shown
13082below.  These are the code and data sizes for the acpica.lib
13083produced by the Microsoft Visual C++ 6.0 compiler, and these
13084values do not include any ACPI driver or OSPM code.  The debug
13085version of the code includes the debug output trace mechanism and
13086has a much larger code and data size.  Note that these values will
13087vary depending on the efficiency of the compiler and the compiler
13088options used during generation.
13089
13090  Previous Release
13091    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13092    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
13093  Current Release:
13094    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
13095    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
13096
13097
130982) Linux
13099
13100Module loading/unloading fixes (John Cagle)
13101
13102
131033) iASL Compiler/Disassembler
13104
13105Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
13106
13107Implemented support for the disassembly of all SMBus protocol
13108keywords (SMBQuick, SMBWord, etc.)
13109
13110----------------------------------------
1311101 November 2002.  Summary of changes for version 20021101.
13112
13113
131141) ACPI CA Core Subsystem:
13115
13116Fixed a problem where platforms that have a GPE1 block but no GPE0
13117block were not handled correctly.  This resulted in a "GPE
13118overlap" error message.  GPE0 is no longer required.
13119
13120Removed code added in the previous release that inserted nodes
13121into the namespace in alphabetical order.  This caused some side-
13122effects on various machines.  The root cause of the problem is
13123still under investigation since in theory, the internal ordering
13124of the namespace nodes should not matter.
13125
13126
13127Enhanced error reporting for the case where a named object is not
13128found during control method execution.  The full ACPI namepath
13129(name reference) of the object that was not found is displayed in
13130this case.
13131
13132Note: as a result of the overhaul of the namespace object types in
13133the previous release, the namespace nodes for the predefined
13134scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
13135instead of ACPI_TYPE_ANY.  This simplifies the namespace
13136management code but may affect code that walks the namespace tree
13137looking for specific object types.
13138
13139Code and Data Size: Current core subsystem library sizes are shown
13140below.  These are the code and data sizes for the acpica.lib
13141produced by the Microsoft Visual C++ 6.0 compiler, and these
13142values do not include any ACPI driver or OSPM code.  The debug
13143version of the code includes the debug output trace mechanism and
13144has a much larger code and data size.  Note that these values will
13145vary depending on the efficiency of the compiler and the compiler
13146options used during generation.
13147
13148  Previous Release
13149    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
13150    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
13151  Current Release:
13152    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
13153    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
13154
13155
131562) Linux
13157
13158Fixed a problem introduced in the previous release where the
13159Processor and Thermal objects were not recognized and installed in
13160/proc.  This was related to the scope type change described above.
13161
13162
131633) iASL Compiler/Disassembler
13164
13165Implemented the -g option to get all of the required ACPI tables
13166from the registry and save them to files (Windows version of the
13167compiler only.)  The required tables are the FADT, FACS, and DSDT.
13168
13169Added ACPI table checksum validation during table disassembly in
13170order to catch corrupted tables.
13171
13172
13173----------------------------------------
1317422 October 2002.  Summary of changes for version 20021022.
13175
131761) ACPI CA Core Subsystem:
13177
13178Implemented a restriction on the Scope operator that the target
13179must already exist in the namespace at the time the operator is
13180encountered (during table load or method execution).  In other
13181words, forward references are not allowed and Scope() cannot
13182create a new object. This changes the previous behavior where the
13183interpreter would create the name if not found.  This new behavior
13184correctly enables the search-to-root algorithm during namespace
13185lookup of the target name.  Because of this upsearch, this fixes
13186the known Compaq _SB_.OKEC problem and makes both the AML
13187interpreter and iASL compiler compatible with other ACPI
13188implementations.
13189
13190Completed a major overhaul of the internal ACPI object types for
13191the ACPI Namespace and the associated operand objects.  Many of
13192these types had become obsolete with the introduction of the two-
13193pass namespace load.  This cleanup simplifies the code and makes
13194the entire namespace load mechanism much clearer and easier to
13195understand.
13196
13197Improved debug output for tracking scope opening/closing to help
13198diagnose scoping issues.  The old scope name as well as the new
13199scope name are displayed.  Also improved error messages for
13200problems with ASL Mutex objects and error messages for GPE
13201problems.
13202
13203Cleaned up the namespace dump code, removed obsolete code.
13204
13205All string output (for all namespace/object dumps) now uses the
13206common ACPI string output procedure which handles escapes properly
13207and does not emit non-printable characters.
13208
13209Fixed some issues with constants in the 64-bit version of the
13210local C library (utclib.c)
13211
13212
132132) Linux
13214
13215EC Driver:  No longer attempts to acquire the Global Lock at
13216interrupt level.
13217
13218
132193) iASL Compiler/Disassembler
13220
13221Implemented ACPI 2.0B grammar change that disallows all Type 1 and
132222 opcodes outside of a control method.  This means that the
13223"executable" operators (versus the "namespace" operators) cannot
13224be used at the table level; they can only be used within a control
13225method.
13226
13227Implemented the restriction on the Scope() operator where the
13228target must already exist in the namespace at the time the
13229operator is encountered (during ASL compilation). In other words,
13230forward references are not allowed and Scope() cannot create a new
13231object.  This makes the iASL compiler compatible with other ACPI
13232implementations and makes the Scope() implementation adhere to the
13233ACPI specification.
13234
13235Fixed a problem where namepath optimization for the Alias operator
13236was optimizing the wrong path (of the two namepaths.)  This caused
13237a "Missing alias link" error message.
13238
13239Fixed a problem where an "unknown reserved name" warning could be
13240incorrectly generated for names like "_SB" when the trailing
13241underscore is not used in the original ASL.
13242
13243Fixed a problem where the reserved name check did not handle
13244NamePaths with multiple NameSegs correctly.  The first nameseg of
13245the NamePath was examined instead of the last NameSeg.
13246
13247
13248----------------------------------------
13249
1325002 October 2002.  Summary of changes for this release.
13251
13252
132531) ACPI CA Core Subsystem version 20021002:
13254
13255Fixed a problem where a store/copy of a string to an existing
13256string did not always set the string length properly in the String
13257object.
13258
13259Fixed a reported problem with the ToString operator where the
13260behavior was identical to the ToHexString operator instead of just
13261simply converting a raw buffer to a string data type.
13262
13263Fixed a problem where CopyObject and the other "explicit"
13264conversion operators were not updating the internal namespace node
13265type as part of the store operation.
13266
13267Fixed a memory leak during implicit source operand conversion
13268where the original object was not deleted if it was converted to a
13269new object of a different type.
13270
13271Enhanced error messages for all problems associated with namespace
13272lookups.  Common procedure generates and prints the lookup name as
13273well as the formatted status.
13274
13275Completed implementation of a new design for the Alias support
13276within the namespace.  The existing design did not handle the case
13277where a new object was assigned to one of the two names due to the
13278use of an explicit conversion operator, resulting in the two names
13279pointing to two different objects.  The new design simply points
13280the Alias name to the original name node - not to the object.
13281This results in a level of indirection that must be handled in the
13282name resolution mechanism.
13283
13284Code and Data Size: Current core subsystem library sizes are shown
13285below.  These are the code and data sizes for the acpica.lib
13286produced by the Microsoft Visual C++ 6.0 compiler, and these
13287values do not include any ACPI driver or OSPM code.  The debug
13288version of the code includes the debug output trace mechanism and
13289has a larger code and data size.  Note that these values will vary
13290depending on the efficiency of the compiler and the compiler
13291options used during generation.
13292
13293  Previous Release
13294    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
13295    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
13296  Current Release:
13297    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
13298    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
13299
13300
133012) Linux
13302
13303Initialize thermal driver's timer before it is used. (Knut
13304Neumann)
13305
13306Allow handling negative celsius values. (Kochi Takayoshi)
13307
13308Fix thermal management and make trip points. R/W (Pavel Machek)
13309
13310Fix /proc/acpi/sleep. (P. Christeas)
13311
13312IA64 fixes. (David Mosberger)
13313
13314Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
13315
13316Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
13317Brodowski)
13318
13319
133203) iASL Compiler/Disassembler
13321
13322Clarified some warning/error messages.
13323
13324
13325----------------------------------------
1332618 September 2002.  Summary of changes for this release.
13327
13328
133291) ACPI CA Core Subsystem version 20020918:
13330
13331Fixed a reported problem with reference chaining (via the Index()
13332and RefOf() operators) in the ObjectType() and SizeOf() operators.
13333The definition of these operators includes the dereferencing of
13334all chained references to return information on the base object.
13335
13336Fixed a problem with stores to indexed package elements - the
13337existing code would not complete the store if an "implicit
13338conversion" was not performed.  In other words, if the existing
13339object (package element) was to be replaced completely, the code
13340didn't handle this case.
13341
13342Relaxed typechecking on the ASL "Scope" operator to allow the
13343target name to refer to an object of type Integer, String, or
13344Buffer, in addition to the scoping object types (Device,
13345predefined Scopes, Processor, PowerResource, and ThermalZone.)
13346This allows existing AML code that has workarounds for a bug in
13347Windows to function properly.  A warning is issued, however.  This
13348affects both the AML interpreter and the iASL compiler. Below is
13349an example of this type of ASL code:
13350
13351      Name(DEB,0x00)
13352      Scope(DEB)
13353      {
13354
13355Fixed some reported problems with 64-bit integer support in the
13356local implementation of C library functions (clib.c)
13357
13358
133592) Linux
13360
13361Use ACPI fix map region instead of IOAPIC region, since it is
13362undefined in non-SMP.
13363
13364Ensure that the SCI has the proper polarity and trigger, even on
13365systems that do not have an interrupt override entry in the MADT.
13366
133672.5 big driver reorganization (Pat Mochel)
13368
13369Use early table mapping code from acpitable.c (Andi Kleen)
13370
13371New blacklist entries (Andi Kleen)
13372
13373Blacklist improvements. Split blacklist code out into a separate
13374file. Move checking the blacklist to very early. Previously, we
13375would use ACPI tables, and then halfway through init, check the
13376blacklist -- too late. Now, it's early enough to completely fall-
13377back to non-ACPI.
13378
13379
133803) iASL Compiler/Disassembler version 20020918:
13381
13382Fixed a problem where the typechecking code didn't know that an
13383alias could point to a method.  In other words, aliases were not
13384being dereferenced during typechecking.
13385
13386
13387----------------------------------------
1338829 August 2002.  Summary of changes for this release.
13389
133901) ACPI CA Core Subsystem Version 20020829:
13391
13392If the target of a Scope() operator already exists, it must be an
13393object type that actually opens a scope -- such as a Device,
13394Method, Scope, etc.  This is a fatal runtime error.  Similar error
13395check has been added to the iASL compiler also.
13396
13397Tightened up the namespace load to disallow multiple names in the
13398same scope.  This previously was allowed if both objects were of
13399the same type.  (i.e., a lookup was the same as entering a new
13400name).
13401
13402
134032) Linux
13404
13405Ensure that the ACPI interrupt has the proper trigger and
13406polarity.
13407
13408local_irq_disable is extraneous. (Matthew Wilcox)
13409
13410Make "acpi=off" actually do what it says, and not use the ACPI
13411interpreter *or* the tables.
13412
13413Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
13414Takayoshi)
13415
13416
134173) iASL Compiler/Disassembler  Version 20020829:
13418
13419Implemented namepath optimization for name declarations.  For
13420example, a declaration like "Method (\_SB_.ABCD)" would get
13421optimized to "Method (ABCD)" if the declaration is within the
13422\_SB_ scope.  This optimization is in addition to the named
13423reference path optimization first released in the previous
13424version. This would seem to complete all possible optimizations
13425for namepaths within the ASL/AML.
13426
13427If the target of a Scope() operator already exists, it must be an
13428object type that actually opens a scope -- such as a Device,
13429Method, Scope, etc.
13430
13431Implemented a check and warning for unreachable code in the same
13432block below a Return() statement.
13433
13434Fixed a problem where the listing file was not generated if the
13435compiler aborted if the maximum error count was exceeded (200).
13436
13437Fixed a problem where the typechecking of method return values was
13438broken.  This includes the check for a return value when the
13439method is invoked as a TermArg (a return value is expected.)
13440
13441Fixed a reported problem where EOF conditions during a quoted
13442string or comment caused a fault.
13443
13444
13445----------------------------------------
1344615 August 2002.  Summary of changes for this release.
13447
134481) ACPI CA Core Subsystem Version 20020815:
13449
13450Fixed a reported problem where a Store to a method argument that
13451contains a reference did not perform the indirect store correctly.
13452This problem was created during the conversion to the new
13453reference object model - the indirect store to a method argument
13454code was not updated to reflect the new model.
13455
13456Reworked the ACPI mode change code to better conform to ACPI 2.0,
13457handle corner cases, and improve code legibility (Kochi Takayoshi)
13458
13459Fixed a problem with the pathname parsing for the carat (^)
13460prefix.  The heavy use of the carat operator by the new namepath
13461optimization in the iASL compiler uncovered a problem with the AML
13462interpreter handling of this prefix.  In the case where one or
13463more carats precede a single nameseg, the nameseg was treated as
13464standalone and the search rule (to root) was inadvertently
13465applied.  This could cause both the iASL compiler and the
13466interpreter to find the wrong object or to miss the error that
13467should occur if the object does not exist at that exact pathname.
13468
13469Found and fixed the problem where the HP Pavilion DSDT would not
13470load.  This was a relatively minor tweak to the table loading code
13471(a problem caused by the unexpected encounter with a method
13472invocation not within a control method), but it does not solve the
13473overall issue of the execution of AML code at the table level.
13474This investigation is still ongoing.
13475
13476Code and Data Size: Current core subsystem library sizes are shown
13477below.  These are the code and data sizes for the acpica.lib
13478produced by the Microsoft Visual C++ 6.0 compiler, and these
13479values do not include any ACPI driver or OSPM code.  The debug
13480version of the code includes the debug output trace mechanism and
13481has a larger code and data size.  Note that these values will vary
13482depending on the efficiency of the compiler and the compiler
13483options used during generation.
13484
13485  Previous Release
13486    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
13487    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
13488  Current Release:
13489    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
13490    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
13491
13492
134932) Linux
13494
13495Remove redundant slab.h include (Brad Hards)
13496
13497Fix several bugs in thermal.c (Herbert Nachtnebel)
13498
13499Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
13500
13501Change acpi_system_suspend to use updated irq functions (Pavel
13502Machek)
13503
13504Export acpi_get_firmware_table (Matthew Wilcox)
13505
13506Use proper root proc entry for ACPI (Kochi Takayoshi)
13507
13508Fix early-boot table parsing (Bjorn Helgaas)
13509
13510
135113) iASL Compiler/Disassembler
13512
13513Reworked the compiler options to make them more consistent and to
13514use two-letter options where appropriate.  We were running out of
13515sensible letters.   This may break some makefiles, so check the
13516current options list by invoking the compiler with no parameters.
13517
13518Completed the design and implementation of the ASL namepath
13519optimization option for the compiler.  This option optimizes all
13520references to named objects to the shortest possible path.  The
13521first attempt tries to utilize a single nameseg (4 characters) and
13522the "search-to-root" algorithm used by the interpreter.  If that
13523cannot be used (because either the name is not in the search path
13524or there is a conflict with another object with the same name),
13525the pathname is optimized using the carat prefix (usually a
13526shorter string than specifying the entire path from the root.)
13527
13528Implemented support to obtain the DSDT from the Windows registry
13529(when the disassembly option is specified with no input file).
13530Added this code as the implementation for AcpiOsTableOverride in
13531the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
13532utility) to scan memory for the DSDT to the AcpiOsTableOverride
13533function in the DOS OSL to make the disassembler truly OS
13534independent.
13535
13536Implemented a new option to disassemble and compile in one step.
13537When used without an input filename, this option will grab the
13538DSDT from the local machine, disassemble it, and compile it in one
13539step.
13540
13541Added a warning message for invalid escapes (a backslash followed
13542by any character other than the allowable escapes).  This catches
13543the quoted string error "\_SB_" (which should be "\\_SB_" ).
13544
13545Also, there are numerous instances in the ACPI specification where
13546this error occurs.
13547
13548Added a compiler option to disable all optimizations.  This is
13549basically the "compatibility mode" because by using this option,
13550the AML code will come out exactly the same as other ASL
13551compilers.
13552
13553Added error messages for incorrectly ordered dependent resource
13554functions.  This includes: missing EndDependentFn macro at end of
13555dependent resource list, nested dependent function macros (both
13556start and end), and missing StartDependentFn macro.  These are
13557common errors that should be caught at compile time.
13558
13559Implemented _OSI support for the disassembler and compiler.  _OSI
13560must be included in the namespace for proper disassembly (because
13561the disassembler must know the number of arguments.)
13562
13563Added an "optimization" message type that is optional (off by
13564default).  This message is used for all optimizations - including
13565constant folding, integer optimization, and namepath optimization.
13566
13567----------------------------------------
1356825 July 2002.  Summary of changes for this release.
13569
13570
135711) ACPI CA Core Subsystem Version 20020725:
13572
13573The AML Disassembler has been enhanced to produce compilable ASL
13574code and has been integrated into the iASL compiler (see below) as
13575well as the single-step disassembly for the AML debugger and the
13576disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
13577resource templates and macros are fully supported.  The
13578disassembler has been tested on over 30 different AML files,
13579producing identical AML when the resulting disassembled ASL file
13580is recompiled with the same ASL compiler.
13581
13582Modified the Resource Manager to allow zero interrupts and zero
13583dma channels during the GetCurrentResources call.  This was
13584causing problems on some platforms.
13585
13586Added the AcpiOsRedirectOutput interface to the OSL to simplify
13587output redirection for the AcpiOsPrintf and AcpiOsVprintf
13588interfaces.
13589
13590Code and Data Size: Current core subsystem library sizes are shown
13591below.  These are the code and data sizes for the acpica.lib
13592produced by the Microsoft Visual C++ 6.0 compiler, and these
13593values do not include any ACPI driver or OSPM code.  The debug
13594version of the code includes the debug output trace mechanism and
13595has a larger code and data size.  Note that these values will vary
13596depending on the efficiency of the compiler and the compiler
13597options used during generation.
13598
13599  Previous Release
13600    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
13601    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
13602  Current Release:
13603    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
13604    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
13605
13606
136072) Linux
13608
13609Fixed a panic in the EC driver (Dominik Brodowski)
13610
13611Implemented checksum of the R/XSDT itself during Linux table scan
13612(Richard Schaal)
13613
13614
136153) iASL compiler
13616
13617The AML disassembler is integrated into the compiler.  The "-d"
13618option invokes the disassembler  to completely disassemble an
13619input AML file, producing as output a text ASL file with the
13620extension ".dsl" (to avoid name collisions with existing .asl
13621source files.)  A future enhancement will allow the disassembler
13622to obtain the BIOS DSDT from the registry under Windows.
13623
13624Fixed a problem with the VendorShort and VendorLong resource
13625descriptors where an invalid AML sequence was created.
13626
13627Implemented a fix for BufferData term in the ASL parser.  It was
13628inadvertently defined twice, allowing invalid syntax to pass and
13629causing reduction conflicts.
13630
13631Fixed a problem where the Ones opcode could get converted to a
13632value of zero if "Ones" was used where a byte, word or dword value
13633was expected.  The 64-bit value is now truncated to the correct
13634size with the correct value.
13635
13636
13637
13638----------------------------------------
1363902 July 2002.  Summary of changes for this release.
13640
13641
136421) ACPI CA Core Subsystem Version 20020702:
13643
13644The Table Manager code has been restructured to add several new
13645features.  Tables that are not required by the core subsystem
13646(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
13647validated in any way and are returned from AcpiGetFirmwareTable if
13648requested.  The AcpiOsTableOverride interface is now called for
13649each table that is loaded by the subsystem in order to allow the
13650host to override any table it chooses.  Previously, only the DSDT
13651could be overridden.  Added one new files, tbrsdt.c and
13652tbgetall.c.
13653
13654Fixed a problem with the conversion of internal package objects to
13655external objects (when a package is returned from a control
13656method.)  The return buffer length was set to zero instead of the
13657proper length of the package object.
13658
13659Fixed a reported problem with the use of the RefOf and DeRefOf
13660operators when passing reference arguments to control methods.  A
13661new type of Reference object is used internally for references
13662produced by the RefOf operator.
13663
13664Added additional error messages in the Resource Manager to explain
13665AE_BAD_DATA errors when they occur during resource parsing.
13666
13667Split the AcpiEnableSubsystem into two primitives to enable a
13668finer granularity initialization sequence.  These two calls should
13669be called in this order: AcpiEnableSubsystem (flags),
13670AcpiInitializeObjects (flags).  The flags parameter remains the
13671same.
13672
13673
136742) Linux
13675
13676Updated the ACPI utilities module to understand the new style of
13677fully resolved package objects that are now returned from the core
13678subsystem.  This eliminates errors of the form:
13679
13680    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
13681    acpi_utils-0430 [145] acpi_evaluate_reference:
13682        Invalid element in package (not a device reference)
13683
13684The method evaluation utility uses the new buffer allocation
13685scheme instead of calling AcpiEvaluate Object twice.
13686
13687Added support for ECDT. This allows the use of the Embedded
13688
13689Controller before the namespace has been fully initialized, which
13690is necessary for ACPI 2.0 support, and for some laptops to
13691initialize properly. (Laptops using ECDT are still rare, so only
13692limited testing was performed of the added functionality.)
13693
13694Fixed memory leaks in the EC driver.
13695
13696Eliminated a brittle code structure in acpi_bus_init().
13697
13698Eliminated the acpi_evaluate() helper function in utils.c. It is
13699no longer needed since acpi_evaluate_object can optionally
13700allocate memory for the return object.
13701
13702Implemented fix for keyboard hang when getting battery readings on
13703some systems (Stephen White)
13704
13705PCI IRQ routing update (Dominik Brodowski)
13706
13707Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
13708support
13709
13710----------------------------------------
1371111 June 2002.  Summary of changes for this release.
13712
13713
137141) ACPI CA Core Subsystem Version 20020611:
13715
13716Fixed a reported problem where constants such as Zero and One
13717appearing within _PRT packages were not handled correctly within
13718the resource manager code.  Originally reported against the ASL
13719compiler because the code generator now optimizes integers to
13720their minimal AML representation (i.e. AML constants if possible.)
13721The _PRT code now handles all AML constant opcodes correctly
13722(Zero, One, Ones, Revision).
13723
13724Fixed a problem with the Concatenate operator in the AML
13725interpreter where a buffer result object was incorrectly marked as
13726not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
13727
13728All package sub-objects are now fully resolved before they are
13729returned from the external ACPI interfaces.  This means that name
13730strings are resolved to object handles, and constant operators
13731(Zero, One, Ones, Revision) are resolved to Integers.
13732
13733Implemented immediate resolution of the AML Constant opcodes
13734(Zero, One, Ones, Revision) to Integer objects upon detection
13735within the AML stream. This has simplified and reduced the
13736generated code size of the subsystem by eliminating about 10
13737switch statements for these constants (which previously were
13738contained in Reference objects.)  The complicating issues are that
13739the Zero opcode is used as a "placeholder" for unspecified
13740optional target operands and stores to constants are defined to be
13741no-ops.
13742
13743Code and Data Size: Current core subsystem library sizes are shown
13744below. These are the code and data sizes for the acpica.lib
13745produced by the Microsoft Visual C++ 6.0 compiler, and these
13746values do not include any ACPI driver or OSPM code.  The debug
13747version of the code includes the debug output trace mechanism and
13748has a larger code and data size.  Note that these values will vary
13749depending on the efficiency of the compiler and the compiler
13750options used during generation.
13751
13752  Previous Release
13753    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
13754    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
13755  Current Release:
13756    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
13757    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
13758
13759
137602) Linux
13761
13762
13763Added preliminary support for obtaining _TRA data for PCI root
13764bridges (Bjorn Helgaas).
13765
13766
137673) iASL Compiler Version X2046:
13768
13769Fixed a problem where the "_DDN" reserved name was defined to be a
13770control method with one argument.  There are no arguments, and
13771_DDN does not have to be a control method.
13772
13773Fixed a problem with the Linux version of the compiler where the
13774source lines printed with error messages were the wrong lines.
13775This turned out to be the "LF versus CR/LF" difference between
13776Windows and Unix.  This appears to be the longstanding issue
13777concerning listing output and error messages.
13778
13779Fixed a problem with the Linux version of compiler where opcode
13780names within error messages were wrong.  This was caused by a
13781slight difference in the output of the Flex tool on Linux versus
13782Windows.
13783
13784Fixed a problem with the Linux compiler where the hex output files
13785contained some garbage data caused by an internal buffer overrun.
13786
13787
13788----------------------------------------
1378917 May 2002.  Summary of changes for this release.
13790
13791
137921) ACPI CA Core Subsystem Version 20020517:
13793
13794Implemented a workaround to an BIOS bug discovered on the HP
13795OmniBook where the FADT revision number and the table size are
13796inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
13797behavior is to fallback to using only the ACPI 1.0 fields of the
13798FADT if the table is too small to be a ACPI 2.0 table as claimed
13799by the revision number.  Although this is a BIOS bug, this is a
13800case where the workaround is simple enough and with no side
13801effects, so it seemed prudent to add it.  A warning message is
13802issued, however.
13803
13804Implemented minimum size checks for the fixed-length ACPI tables -
13805- the FADT and FACS, as well as consistency checks between the
13806revision number and the table size.
13807
13808Fixed a reported problem in the table override support where the
13809new table pointer was incorrectly treated as a physical address
13810instead of a logical address.
13811
13812Eliminated the use of the AE_AML_ERROR exception and replaced it
13813with more descriptive codes.
13814
13815Fixed a problem where an exception would occur if an ASL Field was
13816defined with no named Field Units underneath it (used by some
13817index fields).
13818
13819Code and Data Size: Current core subsystem library sizes are shown
13820below.  These are the code and data sizes for the acpica.lib
13821produced by the Microsoft Visual C++ 6.0 compiler, and these
13822values do not include any ACPI driver or OSPM code.  The debug
13823version of the code includes the debug output trace mechanism and
13824has a larger code and data size.  Note that these values will vary
13825depending on the efficiency of the compiler and the compiler
13826options used during generation.
13827
13828  Previous Release
13829    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13830    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13831  Current Release:
13832    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
13833    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
13834
13835
13836
138372) Linux
13838
13839Much work done on ACPI init (MADT and PCI IRQ routing support).
13840(Paul D. and Dominik Brodowski)
13841
13842Fix PCI IRQ-related panic on boot (Sam Revitch)
13843
13844Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
13845
13846Fix "MHz" typo (Dominik Brodowski)
13847
13848Fix RTC year 2000 issue (Dominik Brodowski)
13849
13850Preclude multiple button proc entries (Eric Brunet)
13851
13852Moved arch-specific code out of include/platform/aclinux.h
13853
138543) iASL Compiler Version X2044:
13855
13856Implemented error checking for the string used in the EISAID macro
13857(Usually used in the definition of the _HID object.)  The code now
13858strictly enforces the PnP format - exactly 7 characters, 3
13859uppercase letters and 4 hex digits.
13860
13861If a raw string is used in the definition of the _HID object
13862(instead of the EISAID macro), the string must contain all
13863alphanumeric characters (e.g., "*PNP0011" is not allowed because
13864of the asterisk.)
13865
13866Implemented checking for invalid use of ACPI reserved names for
13867most of the name creation operators (Name, Device, Event, Mutex,
13868OperationRegion, PowerResource, Processor, and ThermalZone.)
13869Previously, this check was only performed for control methods.
13870
13871Implemented an additional check on the Name operator to emit an
13872error if a reserved name that must be implemented in ASL as a
13873control method is used.  We know that a reserved name must be a
13874method if it is defined with input arguments.
13875
13876The warning emitted when a namespace object reference is not found
13877during the cross reference phase has been changed into an error.
13878The "External" directive should be used for names defined in other
13879modules.
13880
13881
138824) Tools and Utilities
13883
13884The 16-bit tools (adump16 and aexec16) have been regenerated and
13885tested.
13886
13887Fixed a problem with the output of both acpidump and adump16 where
13888the indentation of closing parentheses and brackets was not
13889
13890aligned properly with the parent block.
13891
13892
13893----------------------------------------
1389403 May 2002.  Summary of changes for this release.
13895
13896
138971) ACPI CA Core Subsystem Version 20020503:
13898
13899Added support a new OSL interface that allows the host operating
13900
13901system software to override the DSDT found in the firmware -
13902AcpiOsTableOverride.  With this interface, the OSL can examine the
13903version of the firmware DSDT and replace it with a different one
13904if desired.
13905
13906Added new external interfaces for accessing ACPI registers from
13907device drivers and other system software - AcpiGetRegister and
13908AcpiSetRegister.  This was simply an externalization of the
13909existing AcpiHwBitRegister interfaces.
13910
13911Fixed a regression introduced in the previous build where the
13912ASL/AML CreateField operator always returned an error,
13913"destination must be a NS Node".
13914
13915Extended the maximum time (before failure) to successfully enable
13916ACPI mode to 3 seconds.
13917
13918Code and Data Size: Current core subsystem library sizes are shown
13919below.  These are the code and data sizes for the acpica.lib
13920produced by the Microsoft Visual C++ 6.0 compiler, and these
13921values do not include any ACPI driver or OSPM code.  The debug
13922version of the code includes the debug output trace mechanism and
13923has a larger code and data size.  Note that these values will vary
13924depending on the efficiency of the compiler and the compiler
13925options used during generation.
13926
13927  Previous Release
13928    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13929    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13930  Current Release:
13931    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13932    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13933
13934
139352) Linux
13936
13937Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
13938free. While 3 out of 4 of our in-house systems work fine, the last
13939one still hangs when testing the LAPIC timer.
13940
13941Renamed many files in 2.5 kernel release to omit "acpi_" from the
13942name.
13943
13944Added warning on boot for Presario 711FR.
13945
13946Sleep improvements (Pavel Machek)
13947
13948ACPI can now be built without CONFIG_PCI enabled.
13949
13950IA64: Fixed memory map functions (JI Lee)
13951
13952
139533) iASL Compiler Version X2043:
13954
13955Added support to allow the compiler to be integrated into the MS
13956VC++ development environment for one-button compilation of single
13957files or entire projects -- with error-to-source-line mapping.
13958
13959Implemented support for compile-time constant folding for the
13960Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
13961specification.  This allows the ASL writer to use expressions
13962instead of Integer/Buffer/String constants in terms that must
13963evaluate to constants at compile time and will also simplify the
13964emitted AML in any such sub-expressions that can be folded
13965(evaluated at compile-time.)  This increases the size of the
13966compiler significantly because a portion of the ACPI CA AML
13967interpreter is included within the compiler in order to pre-
13968evaluate constant expressions.
13969
13970
13971Fixed a problem with the "Unicode" ASL macro that caused the
13972compiler to fault.  (This macro is used in conjunction with the
13973_STR reserved name.)
13974
13975Implemented an AML opcode optimization to use the Zero, One, and
13976Ones opcodes where possible to further reduce the size of integer
13977constants and thus reduce the overall size of the generated AML
13978code.
13979
13980Implemented error checking for new reserved terms for ACPI version
139812.0A.
13982
13983Implemented the -qr option to display the current list of ACPI
13984reserved names known to the compiler.
13985
13986Implemented the -qc option to display the current list of ASL
13987operators that are allowed within constant expressions and can
13988therefore be folded at compile time if the operands are constants.
13989
13990
139914) Documentation
13992
13993Updated the Programmer's Reference for new interfaces, data types,
13994and memory allocation model options.
13995
13996Updated the iASL Compiler User Reference to apply new format and
13997add information about new features and options.
13998
13999----------------------------------------
1400019 April 2002.  Summary of changes for this release.
14001
140021) ACPI CA Core Subsystem Version 20020419:
14003
14004The source code base for the Core Subsystem has been completely
14005cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
14006versions.  The Lint option files used are included in the
14007/acpi/generate/lint directory.
14008
14009Implemented enhanced status/error checking across the entire
14010Hardware manager subsystem.  Any hardware errors (reported from
14011the OSL) are now bubbled up and will abort a running control
14012method.
14013
14014
14015Fixed a problem where the per-ACPI-table integer width (32 or 64)
14016was stored only with control method nodes, causing a fault when
14017non-control method code was executed during table loading.  The
14018solution implemented uses a global variable to indicate table
14019width across the entire ACPI subsystem.  Therefore, ACPI CA does
14020not support mixed integer widths across different ACPI tables
14021(DSDT, SSDT).
14022
14023Fixed a problem where NULL extended fields (X fields) in an ACPI
140242.0 ACPI FADT caused the table load to fail.  Although the
14025existing ACPI specification is a bit fuzzy on this topic, the new
14026behavior is to fall back on a ACPI 1.0 field if the corresponding
14027ACPI 2.0 X field is zero (even though the table revision indicates
14028a full ACPI 2.0 table.)  The ACPI specification will be updated to
14029clarify this issue.
14030
14031Fixed a problem with the SystemMemory operation region handler
14032where memory was always accessed byte-wise even if the AML-
14033specified access width was larger than a byte.  This caused
14034problems on systems with memory-mapped I/O.  Memory is now
14035accessed with the width specified.  On systems that do not support
14036non-aligned transfers, a check is made to guarantee proper address
14037alignment before proceeding in order to avoid an AML-caused
14038alignment fault within the kernel.
14039
14040
14041Fixed a problem with the ExtendedIrq resource where only one byte
14042of the 4-byte Irq field was extracted.
14043
14044Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
14045function was out of date and required a rewrite.
14046
14047Code and Data Size: Current core subsystem library sizes are shown
14048below.  These are the code and data sizes for the acpica.lib
14049produced by the Microsoft Visual C++ 6.0 compiler, and these
14050values do not include any ACPI driver or OSPM code.  The debug
14051version of the code includes the debug output trace mechanism and
14052has a larger code and data size.  Note that these values will vary
14053depending on the efficiency of the compiler and the compiler
14054options used during generation.
14055
14056  Previous Release
14057    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
14058    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
14059  Current Release:
14060    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
14061    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
14062
14063
140642) Linux
14065
14066PCI IRQ routing fixes (Dominik Brodowski)
14067
14068
140693) iASL Compiler Version X2042:
14070
14071Implemented an additional compile-time error check for a field
14072unit whose size + minimum access width would cause a run-time
14073access beyond the end-of-region.  Previously, only the field size
14074itself was checked.
14075
14076The Core subsystem and iASL compiler now share a common parse
14077object in preparation for compile-time evaluation of the type
140783/4/5 ASL operators.
14079
14080
14081----------------------------------------
14082Summary of changes for this release: 03_29_02
14083
140841) ACPI CA Core Subsystem Version 20020329:
14085
14086Implemented support for late evaluation of TermArg operands to
14087Buffer and Package objects.  This allows complex expressions to be
14088used in the declarations of these object types.
14089
14090Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
140911.0, if the field was larger than 32 bits, it was returned as a
14092buffer - otherwise it was returned as an integer.  In ACPI 2.0,
14093the field is returned as a buffer only if the field is larger than
1409464 bits.  The TableRevision is now considered when making this
14095conversion to avoid incompatibility with existing ASL code.
14096
14097Implemented logical addressing for AcpiOsGetRootPointer.  This
14098allows an RSDP with either a logical or physical address.  With
14099this support, the host OS can now override all ACPI tables with
14100one logical RSDP.  Includes implementation of  "typed" pointer
14101support to allow a common data type for both physical and logical
14102pointers internally.  This required a change to the
14103AcpiOsGetRootPointer interface.
14104
14105Implemented the use of ACPI 2.0 Generic Address Structures for all
14106GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
14107mapped I/O for these ACPI features.
14108
14109Initialization now ignores not only non-required tables (All
14110tables other than the FADT, FACS, DSDT, and SSDTs), but also does
14111not validate the table headers of unrecognized tables.
14112
14113Fixed a problem where a notify handler could only be
14114installed/removed on an object of type Device.  All "notify"
14115
14116objects are now supported -- Devices, Processor, Power, and
14117Thermal.
14118
14119Removed most verbosity from the ACPI_DB_INFO debug level.  Only
14120critical information is returned when this debug level is enabled.
14121
14122Code and Data Size: Current core subsystem library sizes are shown
14123below.  These are the code and data sizes for the acpica.lib
14124produced by the Microsoft Visual C++ 6.0 compiler, and these
14125values do not include any ACPI driver or OSPM code.  The debug
14126version of the code includes the debug output trace mechanism and
14127has a larger code and data size.  Note that these values will vary
14128depending on the efficiency of the compiler and the compiler
14129options used during generation.
14130
14131  Previous Release
14132    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
14133    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
14134  Current Release:
14135    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
14136    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
14137
14138
141392) Linux:
14140
14141The processor driver (acpi_processor.c) now fully supports ACPI
141422.0-based processor performance control (e.g. Intel(R)
14143SpeedStep(TM) technology) Note that older laptops that only have
14144the Intel "applet" interface are not supported through this.  The
14145'limit' and 'performance' interface (/proc) are fully functional.
14146[Note that basic policy for controlling performance state
14147transitions will be included in the next version of ospmd.]  The
14148idle handler was modified to more aggressively use C2, and PIIX4
14149errata handling underwent a complete overhaul (big thanks to
14150Dominik Brodowski).
14151
14152Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
14153based devices in the ACPI namespace are now dynamically bound
14154(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
14155This allows, among other things, ACPI to resolve bus numbers for
14156subordinate PCI bridges.
14157
14158Enhanced PCI IRQ routing to get the proper bus number for _PRT
14159entries defined underneath PCI bridges.
14160
14161Added IBM 600E to bad bios list due to invalid _ADR value for
14162PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
14163
14164In the process of adding full MADT support (e.g. IOAPIC) for IA32
14165(acpi.c, mpparse.c) -- stay tuned.
14166
14167Added back visual differentiation between fixed-feature and
14168control-method buttons in dmesg.  Buttons are also subtyped (e.g.
14169button/power/PWRF) to simplify button identification.
14170
14171We no longer use -Wno-unused when compiling debug. Please ignore
14172any "_THIS_MODULE defined but not used" messages.
14173
14174Can now shut down the system using "magic sysrq" key.
14175
14176
141773) iASL Compiler version 2041:
14178
14179Fixed a problem where conversion errors for hex/octal/decimal
14180constants were not reported.
14181
14182Implemented a fix for the General Register template Address field.
14183This field was 8 bits when it should be 64.
14184
14185Fixed a problem where errors/warnings were no longer being emitted
14186within the listing output file.
14187
14188Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
14189exactly 4 characters, alphanumeric only.
14190
14191
14192
14193
14194----------------------------------------
14195Summary of changes for this release: 03_08_02
14196
14197
141981) ACPI CA Core Subsystem Version 20020308:
14199
14200Fixed a problem with AML Fields where the use of the "AccessAny"
14201keyword could cause an interpreter error due to attempting to read
14202or write beyond the end of the parent Operation Region.
14203
14204Fixed a problem in the SystemMemory Operation Region handler where
14205an attempt was made to map memory beyond the end of the region.
14206This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
14207errors on some Linux systems.
14208
14209Fixed a problem where the interpreter/namespace "search to root"
14210algorithm was not functioning for some object types.  Relaxed the
14211internal restriction on the search to allow upsearches for all
14212external object types as well as most internal types.
14213
14214
142152) Linux:
14216
14217We now use safe_halt() macro versus individual calls to sti | hlt.
14218
14219Writing to the processor limit interface should now work. "echo 1"
14220will increase the limit, 2 will decrease, and 0 will reset to the
14221
14222default.
14223
14224
142253) ASL compiler:
14226
14227Fixed segfault on Linux version.
14228
14229
14230----------------------------------------
14231Summary of changes for this release: 02_25_02
14232
142331) ACPI CA Core Subsystem:
14234
14235
14236Fixed a problem where the GPE bit masks were not initialized
14237properly, causing erratic GPE behavior.
14238
14239Implemented limited support for multiple calling conventions.  The
14240code can be generated with either the VPL (variable parameter
14241list, or "C") convention, or the FPL (fixed parameter list, or
14242"Pascal") convention.  The core subsystem is about 3.4% smaller
14243when generated with FPL.
14244
14245
142462) Linux
14247
14248Re-add some /proc/acpi/event functionality that was lost during
14249the rewrite
14250
14251Resolved issue with /proc events for fixed-feature buttons showing
14252up as the system device.
14253
14254Fixed checks on C2/C3 latencies to be inclusive of maximum values.
14255
14256Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
14257
14258Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
14259
14260Fixed limit interface & usage to fix bugs with passive cooling
14261hysterisis.
14262
14263Restructured PRT support.
14264
14265
14266----------------------------------------
14267Summary of changes for this label: 02_14_02
14268
14269
142701) ACPI CA Core Subsystem:
14271
14272Implemented support in AcpiLoadTable to allow loading of FACS and
14273FADT tables.
14274
14275Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
14276been removed.  All 64-bit platforms should be migrated to the ACPI
142772.0 tables.  The actbl71.h header has been removed from the source
14278tree.
14279
14280All C macros defined within the subsystem have been prefixed with
14281"ACPI_" to avoid collision with other system include files.
14282
14283Removed the return value for the two AcpiOsPrint interfaces, since
14284it is never used and causes lint warnings for ignoring the return
14285value.
14286
14287Added error checking to all internal mutex acquire and release
14288calls.  Although a failure from one of these interfaces is
14289probably a fatal system error, these checks will cause the
14290immediate abort of the currently executing method or interface.
14291
14292Fixed a problem where the AcpiSetCurrentResources interface could
14293fault.  This was a side effect of the deployment of the new memory
14294allocation model.
14295
14296Fixed a couple of problems with the Global Lock support introduced
14297in the last major build.  The "common" (1.0/2.0) internal FACS was
14298being overwritten with the FACS signature and clobbering the
14299Global Lock pointer.  Also, the actual firmware FACS was being
14300unmapped after construction of the "common" FACS, preventing
14301access to the actual Global Lock field within it.  The "common"
14302internal FACS is no longer installed as an actual ACPI table; it
14303is used simply as a global.
14304
14305Code and Data Size: Current core subsystem library sizes are shown
14306below.  These are the code and data sizes for the acpica.lib
14307produced by the Microsoft Visual C++ 6.0 compiler, and these
14308values do not include any ACPI driver or OSPM code.  The debug
14309version of the code includes the debug output trace mechanism and
14310has a larger code and data size.  Note that these values will vary
14311depending on the efficiency of the compiler and the compiler
14312options used during generation.
14313
14314  Previous Release (02_07_01)
14315    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
14316    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
14317  Current Release:
14318    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
14319    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
14320
14321
143222) Linux
14323
14324Updated Linux-specific code for core macro and OSL interface
14325changes described above.
14326
14327Improved /proc/acpi/event. It now can be opened only once and has
14328proper poll functionality.
14329
14330Fixed and restructured power management (acpi_bus).
14331
14332Only create /proc "view by type" when devices of that class exist.
14333
14334Fixed "charging/discharging" bug (and others) in acpi_battery.
14335
14336Improved thermal zone code.
14337
14338
143393) ASL Compiler, version X2039:
14340
14341
14342Implemented the new compiler restriction on ASL String hex/octal
14343escapes to non-null, ASCII values.  An error results if an invalid
14344value is used.  (This will require an ACPI 2.0 specification
14345change.)
14346
14347AML object labels that are output to the optional C and ASM source
14348are now prefixed with both the ACPI table signature and table ID
14349to help guarantee uniqueness within a large BIOS project.
14350
14351
14352----------------------------------------
14353Summary of changes for this label: 02_01_02
14354
143551) ACPI CA Core Subsystem:
14356
14357ACPI 2.0 support is complete in the entire Core Subsystem and the
14358ASL compiler. All new ACPI 2.0 operators are implemented and all
14359other changes for ACPI 2.0 support are complete.  With
14360simultaneous code and data optimizations throughout the subsystem,
14361ACPI 2.0 support has been implemented with almost no additional
14362cost in terms of code and data size.
14363
14364Implemented a new mechanism for allocation of return buffers.  If
14365the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
14366be allocated on behalf of the caller.  Consolidated all return
14367buffer validation and allocation to a common procedure.  Return
14368buffers will be allocated via the primary OSL allocation interface
14369since it appears that a separate pool is not needed by most users.
14370If a separate pool is required for these buffers, the caller can
14371still use the original mechanism and pre-allocate the buffer(s).
14372
14373Implemented support for string operands within the DerefOf
14374operator.
14375
14376Restructured the Hardware and Event managers to be table driven,
14377simplifying the source code and reducing the amount of generated
14378code.
14379
14380Split the common read/write low-level ACPI register bitfield
14381procedure into a separate read and write, simplifying the code
14382considerably.
14383
14384Obsoleted the AcpiOsCallocate OSL interface.  This interface was
14385used only a handful of times and didn't have enough critical mass
14386for a separate interface.  Replaced with a common calloc procedure
14387in the core.
14388
14389Fixed a reported problem with the GPE number mapping mechanism
14390that allows GPE1 numbers to be non-contiguous with GPE0.
14391Reorganized the GPE information and shrunk a large array that was
14392originally large enough to hold info for all possible GPEs (256)
14393to simply large enough to hold all GPEs up to the largest GPE
14394number on the machine.
14395
14396Fixed a reported problem with resource structure alignment on 64-
14397bit platforms.
14398
14399Changed the AcpiEnableEvent and AcpiDisableEvent external
14400interfaces to not require any flags for the common case of
14401enabling/disabling a GPE.
14402
14403Implemented support to allow a "Notify" on a Processor object.
14404
14405Most TBDs in comments within the source code have been resolved
14406and eliminated.
14407
14408
14409Fixed a problem in the interpreter where a standalone parent
14410prefix (^) was not handled correctly in the interpreter and
14411debugger.
14412
14413Removed obsolete and unnecessary GPE save/restore code.
14414
14415Implemented Field support in the ASL Load operator.  This allows a
14416table to be loaded from a named field, in addition to loading a
14417table directly from an Operation Region.
14418
14419Implemented timeout and handle support in the external Global Lock
14420interfaces.
14421
14422Fixed a problem in the AcpiDump utility where pathnames were no
14423longer being generated correctly during the dump of named objects.
14424
14425Modified the AML debugger to give a full display of if/while
14426predicates instead of just one AML opcode at a time.  (The
14427predicate can have several nested ASL statements.)  The old method
14428was confusing during single stepping.
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 (12_18_01)
14440     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
14441     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
14442   Current Release:
14443     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
14444     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
14445
144462) Linux
14447
14448 Implemented fix for PIIX reverse throttling errata (Processor
14449driver)
14450
14451Added new Limit interface (Processor and Thermal drivers)
14452
14453New thermal policy (Thermal driver)
14454
14455Many updates to /proc
14456
14457Battery "low" event support (Battery driver)
14458
14459Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
14460
14461IA32 - IA64 initialization unification, no longer experimental
14462
14463Menuconfig options redesigned
14464
144653) ASL Compiler, version X2037:
14466
14467Implemented several new output features to simplify integration of
14468AML code into  firmware: 1) Output the AML in C source code with
14469labels for each named ASL object.  The    original ASL source code
14470is interleaved as C comments. 2) Output the AML in ASM source code
14471with labels and interleaved ASL    source. 3) Output the AML in
14472raw hex table form, in either C or ASM.
14473
14474Implemented support for optional string parameters to the
14475LoadTable operator.
14476
14477Completed support for embedded escape sequences within string
14478literals.  The compiler now supports all single character escapes
14479as well as the Octal and Hex escapes.  Note: the insertion of a
14480null byte into a string literal (via the hex/octal escape) causes
14481the string to be immediately terminated.  A warning is issued.
14482
14483Fixed a problem where incorrect AML was generated for the case
14484where an ASL namepath consists of a single parent prefix (
14485
14486) with no trailing name segments.
14487
14488The compiler has been successfully generated with a 64-bit C
14489compiler.
14490
14491
14492
14493
14494----------------------------------------
14495Summary of changes for this label: 12_18_01
14496
144971) Linux
14498
14499Enhanced blacklist with reason and severity fields. Any table's
14500signature may now be used to identify a blacklisted system.
14501
14502Call _PIC control method to inform the firmware which interrupt
14503model the OS is using. Turn on any disabled link devices.
14504
14505Cleaned up busmgr /proc error handling (Andreas Dilger)
14506
14507 2) ACPI CA Core Subsystem:
14508
14509Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
14510while loop)
14511
14512Completed implementation of the ACPI 2.0 "Continue",
14513"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
14514operators.  All new ACPI 2.0 operators are now implemented in both
14515the ASL compiler and the AML interpreter.  The only remaining ACPI
145162.0 task is support for the String data type in the DerefOf
14517operator.  Fixed a problem with AcquireMutex where the status code
14518was lost if the caller had to actually wait for the mutex.
14519
14520Increased the maximum ASL Field size from 64K bits to 4G bits.
14521
14522Completed implementation of the external Global Lock interfaces --
14523AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
14524Handler parameters were added.
14525
14526Completed another pass at removing warnings and issues when
14527compiling with 64-bit compilers.  The code now compiles cleanly
14528with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
14529add and subtract (diff) macros have changed considerably.
14530
14531
14532Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1453364-bit platforms, 32-bits on all others.  This type is used
14534wherever memory allocation and/or the C sizeof() operator is used,
14535and affects the OSL memory allocation interfaces AcpiOsAllocate
14536and AcpiOsCallocate.
14537
14538Implemented sticky user breakpoints in the AML debugger.
14539
14540Code and Data Size: Current core subsystem library sizes are shown
14541below. These are the code and data sizes for the acpica.lib
14542produced by the Microsoft Visual C++ 6.0 compiler, and these
14543values do not include any ACPI driver or OSPM code.  The debug
14544version of the code includes the debug output trace mechanism and
14545has a larger code and data size. Note that these values will vary
14546depending on the efficiency of the compiler and the compiler
14547options used during generation.
14548
14549  Previous Release (12_05_01)
14550     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
14551     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
14552   Current Release:
14553     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
14554     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
14555
14556 3) ASL Compiler, version X2034:
14557
14558Now checks for (and generates an error if detected) the use of a
14559Break or Continue statement without an enclosing While statement.
14560
14561
14562Successfully generated the compiler with the Intel 64-bit C
14563compiler.
14564
14565 ----------------------------------------
14566Summary of changes for this label: 12_05_01
14567
14568 1) ACPI CA Core Subsystem:
14569
14570The ACPI 2.0 CopyObject operator is fully implemented.  This
14571operator creates a new copy of an object (and is also used to
14572bypass the "implicit conversion" mechanism of the Store operator.)
14573
14574The ACPI 2.0 semantics for the SizeOf operator are fully
14575implemented.  The change is that performing a SizeOf on a
14576reference object causes an automatic dereference of the object to
14577tha actual value before the size is evaluated. This behavior was
14578undefined in ACPI 1.0.
14579
14580The ACPI 2.0 semantics for the Extended IRQ resource descriptor
14581have been implemented.  The interrupt polarity and mode are now
14582independently set.
14583
14584Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
14585appearing in Package objects were not properly converted to
14586integers when the internal Package was converted to an external
14587object (via the AcpiEvaluateObject interface.)
14588
14589Fixed a problem with the namespace object deletion mechanism for
14590objects created by control methods.  There were two parts to this
14591problem: 1) Objects created during the initialization phase method
14592parse were not being deleted, and 2) The object owner ID mechanism
14593to track objects was broken.
14594
14595Fixed a problem where the use of the ASL Scope operator within a
14596control method would result in an invalid opcode exception.
14597
14598Fixed a problem introduced in the previous label where the buffer
14599length required for the _PRT structure was not being returned
14600correctly.
14601
14602Code and Data Size: Current core subsystem library sizes are shown
14603below. These are the code and data sizes for the acpica.lib
14604produced by the Microsoft Visual C++ 6.0 compiler, and these
14605values do not include any ACPI driver or OSPM code.  The debug
14606version of the code includes the debug output trace mechanism and
14607has a larger code and data size.  Note that these values will vary
14608depending on the efficiency of the compiler and the compiler
14609options used during generation.
14610
14611  Previous Release (11_20_01)
14612     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14613     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14614
14615  Current Release:
14616     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
14617     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
14618
14619 2) Linux:
14620
14621Updated all files to apply cleanly against 2.4.16.
14622
14623Added basic PCI Interrupt Routing Table (PRT) support for IA32
14624(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
14625version supports both static and dyanmic PRT entries, but dynamic
14626entries are treated as if they were static (not yet
14627reconfigurable).  Architecture- specific code to use this data is
14628absent on IA32 but should be available shortly.
14629
14630Changed the initialization sequence to start the ACPI interpreter
14631(acpi_init) prior to initialization of the PCI driver (pci_init)
14632in init/main.c.  This ordering is required to support PRT and
14633facilitate other (future) enhancement.  A side effect is that the
14634ACPI bus driver and certain device drivers can no longer be loaded
14635as modules.
14636
14637Modified the 'make menuconfig' options to allow PCI Interrupt
14638Routing support to be included without the ACPI Bus and other
14639device drivers.
14640
14641 3) ASL Compiler, version X2033:
14642
14643Fixed some issues with the use of the new CopyObject and
14644DataTableRegion operators.  Both are fully functional.
14645
14646 ----------------------------------------
14647Summary of changes for this label: 11_20_01
14648
14649 20 November 2001.  Summary of changes for this release.
14650
14651 1) ACPI CA Core Subsystem:
14652
14653Updated Index support to match ACPI 2.0 semantics.  Storing a
14654Integer, String, or Buffer to an Index of a Buffer will store only
14655the least-significant byte of the source to the Indexed buffer
14656byte.  Multiple writes are not performed.
14657
14658Fixed a problem where the access type used in an AccessAs ASL
14659operator was not recorded correctly into the field object.
14660
14661Fixed a problem where ASL Event objects were created in a
14662signalled state. Events are now created in an unsignalled state.
14663
14664The internal object cache is now purged after table loading and
14665initialization to reduce the use of dynamic kernel memory -- on
14666the assumption that object use is greatest during the parse phase
14667of the entire table (versus the run-time use of individual control
14668methods.)
14669
14670ACPI 2.0 variable-length packages are now fully operational.
14671
14672Code and Data Size: Code and Data optimizations have permitted new
14673feature development with an actual reduction in the library size.
14674Current core subsystem library sizes are shown below.  These are
14675the code and data sizes for the acpica.lib produced by the
14676Microsoft Visual C++ 6.0 compiler, and these values do not include
14677any ACPI driver or OSPM code.  The debug version of the code
14678includes the debug output trace mechanism and has a larger code
14679and data size.  Note that these values will vary depending on the
14680efficiency of the compiler and the compiler options used during
14681generation.
14682
14683  Previous Release (11_09_01):
14684     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14685     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14686
14687  Current Release:
14688     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14689     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14690
14691 2) Linux:
14692
14693Enhanced the ACPI boot-time initialization code to allow the use
14694of Local APIC tables for processor enumeration on IA-32, and to
14695pave the way for a fully MPS-free boot (on SMP systems) in the
14696near future.  This functionality replaces
14697arch/i386/kernel/acpitables.c, which was introduced in an earlier
146982.4.15-preX release.  To enable this feature you must add
14699"acpi_boot=on" to the kernel command line -- see the help entry
14700for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
14701the works...
14702
14703Restructured the configuration options to allow boot-time table
14704parsing support without inclusion of the ACPI Interpreter (and
14705other) code.
14706
14707NOTE: This release does not include fixes for the reported events,
14708power-down, and thermal passive cooling issues (coming soon).
14709
14710 3) ASL Compiler:
14711
14712Added additional typechecking for Fields within restricted access
14713Operation Regions.  All fields within EC and CMOS regions must be
14714declared with ByteAcc. All fields withing SMBus regions must be
14715declared with the BufferAcc access type.
14716
14717Fixed a problem where the listing file output of control methods
14718no longer interleaved the actual AML code with the ASL source
14719code.
14720
14721
14722
14723
14724----------------------------------------
14725Summary of changes for this label: 11_09_01
14726
147271) ACPI CA Core Subsystem:
14728
14729Implemented ACPI 2.0-defined support for writes to fields with a
14730Buffer, String, or Integer source operand that is smaller than the
14731target field. In these cases, the source operand is zero-extended
14732to fill the target field.
14733
14734Fixed a problem where a Field starting bit offset (within the
14735parent operation region) was calculated incorrectly if the
14736
14737alignment of the field differed from the access width.  This
14738affected CreateWordField, CreateDwordField, CreateQwordField, and
14739possibly other fields that use the "AccessAny" keyword.
14740
14741Fixed a problem introduced in the 11_02_01 release where indirect
14742stores through method arguments did not operate correctly.
14743
147442) Linux:
14745
14746Implemented boot-time ACPI table parsing support
14747(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
14748facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
14749legacy BIOS interfaces (e.g. MPS) for the configuration of system
14750processors, memory, and interrupts during setup_arch().  Note that
14751this patch does not include the required architecture-specific
14752changes required to apply this information -- subsequent patches
14753will be posted for both IA32 and IA64 to achieve this.
14754
14755Added low-level sleep support for IA32 platforms, courtesy of Pat
14756Mochel. This allows IA32 systems to transition to/from various
14757sleeping states (e.g. S1, S3), although the lack of a centralized
14758driver model and power-manageable drivers will prevent its
14759(successful) use on most systems.
14760
14761Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
14762submenu, unified IA32 and IA64 options, added new "Boot using ACPI
14763tables" option, etc.
14764
14765Increased the default timeout for the EC driver from 1ms to 10ms
14766(1000 cycles of 10us) to try to address AE_TIME errors during EC
14767transactions.
14768
14769 ----------------------------------------
14770Summary of changes for this label: 11_02_01
14771
147721) ACPI CA Core Subsystem:
14773
14774ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
14775(QWordAcc keyword). All ACPI 2.0 64-bit support is now
14776implemented.
14777
14778OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
14779changes to support ACPI 2.0 Qword field access.  Read/Write
14780PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
14781accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
14782the value parameter for the address space handler interface is now
14783an ACPI_INTEGER.  OSL implementations of these interfaces must now
14784handle the case where the Width parameter is 64.
14785
14786Index Fields: Fixed a problem where unaligned bit assembly and
14787disassembly for IndexFields was not supported correctly.
14788
14789Index and Bank Fields:  Nested Index and Bank Fields are now
14790supported. During field access, a check is performed to ensure
14791that the value written to an Index or Bank register is not out of
14792the range of the register.  The Index (or Bank) register is
14793written before each access to the field data. Future support will
14794include allowing individual IndexFields to be wider than the
14795DataRegister width.
14796
14797Fields: Fixed a problem where the AML interpreter was incorrectly
14798attempting to write beyond the end of a Field/OpRegion.  This was
14799a boundary case that occurred when a DWORD field was written to a
14800BYTE access OpRegion, forcing multiple writes and causing the
14801interpreter to write one datum too many.
14802
14803Fields: Fixed a problem with Field/OpRegion access where the
14804starting bit address of a field was incorrectly calculated if the
14805current access type was wider than a byte (WordAcc, DwordAcc, or
14806QwordAcc).
14807
14808Fields: Fixed a problem where forward references to individual
14809FieldUnits (individual Field names within a Field definition) were
14810not resolved during the AML table load.
14811
14812Fields: Fixed a problem where forward references from a Field
14813definition to the parent Operation Region definition were not
14814resolved during the AML table load.
14815
14816Fields: Duplicate FieldUnit names within a scope are now detected
14817during AML table load.
14818
14819Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
14820returned an incorrect name for the root node.
14821
14822Code and Data Size: Code and Data optimizations have permitted new
14823feature development with an actual reduction in the library size.
14824Current core subsystem library sizes are shown below.  These are
14825the code and data sizes for the acpica.lib produced by the
14826Microsoft Visual C++ 6.0 compiler, and these values do not include
14827any ACPI driver or OSPM code.  The debug version of the code
14828includes the debug output trace mechanism and has a larger code
14829and data size.  Note that these values will vary depending on the
14830efficiency of the compiler and the compiler options used during
14831generation.
14832
14833  Previous Release (10_18_01):
14834     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14835     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14836
14837  Current Release:
14838     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14839     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14840
14841 2) Linux:
14842
14843Improved /proc processor output (Pavel Machek) Re-added
14844MODULE_LICENSE("GPL") to all modules.
14845
14846 3) ASL Compiler version X2030:
14847
14848Duplicate FieldUnit names within a scope are now detected and
14849flagged as errors.
14850
14851 4) Documentation:
14852
14853Programmer Reference updated to reflect OSL and address space
14854handler interface changes described above.
14855
14856----------------------------------------
14857Summary of changes for this label: 10_18_01
14858
14859ACPI CA Core Subsystem:
14860
14861Fixed a problem with the internal object reference count mechanism
14862that occasionally caused premature object deletion. This resolves
14863all of the outstanding problem reports where an object is deleted
14864in the middle of an interpreter evaluation.  Although this problem
14865only showed up in rather obscure cases, the solution to the
14866problem involved an adjustment of all reference counts involving
14867objects attached to namespace nodes.
14868
14869Fixed a problem with Field support in the interpreter where
14870writing to an aligned field whose length is an exact multiple (2
14871or greater) of the field access granularity would cause an attempt
14872to write beyond the end of the field.
14873
14874The top level AML opcode execution functions within the
14875interpreter have been renamed with a more meaningful and
14876consistent naming convention.  The modules exmonad.c and
14877exdyadic.c were eliminated.  New modules are exoparg1.c,
14878exoparg2.c, exoparg3.c, and exoparg6.c.
14879
14880Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
14881
14882Fixed a problem where the AML debugger was causing some internal
14883objects to not be deleted during subsystem termination.
14884
14885Fixed a problem with the external AcpiEvaluateObject interface
14886where the subsystem would fault if the named object to be
14887evaluated refered to a constant such as Zero, Ones, etc.
14888
14889Fixed a problem with IndexFields and BankFields where the
14890subsystem would fault if the index, data, or bank registers were
14891not defined in the same scope as the field itself.
14892
14893Added printf format string checking for compilers that support
14894this feature.  Corrected more than 50 instances of issues with
14895format specifiers within invocations of ACPI_DEBUG_PRINT
14896throughout the core subsystem code.
14897
14898The ASL "Revision" operator now returns the ACPI support level
14899implemented in the core - the value "2" since the ACPI 2.0 support
14900is more than 50% implemented.
14901
14902Enhanced the output of the AML debugger "dump namespace" command
14903to output in a more human-readable form.
14904
14905Current core subsystem library code sizes are shown below.  These
14906
14907are the code and data sizes for the acpica.lib produced by the
14908Microsoft Visual C++ 6.0 compiler, and these values do not include
14909any ACPI driver or OSPM code.  The debug version of the code
14910includes the full debug trace mechanism -- leading to a much
14911
14912larger code and data size.  Note that these values will vary
14913depending on the efficiency of the compiler and the compiler
14914options used during generation.
14915
14916     Previous Label (09_20_01):
14917     Non-Debug Version:    65K Code,     5K Data,     70K Total
14918     Debug Version:       138K Code,    58K Data,    196K Total
14919
14920     This Label:
14921
14922     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14923     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14924
14925Linux:
14926
14927Implemented a "Bad BIOS Blacklist" to track machines that have
14928known ASL/AML problems.
14929
14930Enhanced the /proc interface for the thermal zone driver and added
14931support for _HOT (the critical suspend trip point).  The 'info'
14932file now includes threshold/policy information, and allows setting
14933of _SCP (cooling preference) and _TZP (polling frequency) values
14934to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
14935frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
14936preference to the passive/quiet mode (if supported by the ASL).
14937
14938Implemented a workaround for a gcc bug that resuted in an OOPs
14939when loading the control method battery driver.
14940
14941 ----------------------------------------
14942Summary of changes for this label: 09_20_01
14943
14944 ACPI CA Core Subsystem:
14945
14946The AcpiEnableEvent and AcpiDisableEvent interfaces have been
14947modified to allow individual GPE levels to be flagged as wake-
14948enabled (i.e., these GPEs are to remain enabled when the platform
14949sleeps.)
14950
14951The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
14952support wake-enabled GPEs.  This means that upon entering the
14953sleep state, all GPEs that are not wake-enabled are disabled.
14954When leaving the sleep state, these GPEs are reenabled.
14955
14956A local double-precision divide/modulo module has been added to
14957enhance portability to OS kernels where a 64-bit math library is
14958not available.  The new module is "utmath.c".
14959
14960Several optimizations have been made to reduce the use of CPU
14961stack.  Originally over 2K, the maximum stack usage is now below
149622K at 1860  bytes (1.82k)
14963
14964Fixed a problem with the AcpiGetFirmwareTable interface where the
14965root table pointer was not mapped into a logical address properly.
14966
14967Fixed a problem where a NULL pointer was being dereferenced in the
14968interpreter code for the ASL Notify operator.
14969
14970Fixed a problem where the use of the ASL Revision operator
14971returned an error. This operator now returns the current version
14972of the ACPI CA core subsystem.
14973
14974Fixed a problem where objects passed as control method parameters
14975to AcpiEvaluateObject were always deleted at method termination.
14976However, these objects may end up being stored into the namespace
14977by the called method.  The object reference count mechanism was
14978applied to these objects instead of a force delete.
14979
14980Fixed a problem where static strings or buffers (contained in the
14981AML code) that are declared as package elements within the ASL
14982code could cause a fault because the interpreter would attempt to
14983delete them.  These objects are now marked with the "static
14984object" flag to prevent any attempt to delete them.
14985
14986Implemented an interpreter optimization to use operands directly
14987from the state object instead of extracting the operands to local
14988variables.  This reduces stack use and code size, and improves
14989performance.
14990
14991The module exxface.c was eliminated as it was an unnecessary extra
14992layer of code.
14993
14994Current core subsystem library code sizes are shown below.  These
14995are the code and data sizes for the acpica.lib produced by the
14996Microsoft Visual C++ 6.0 compiler, and these values do not include
14997any ACPI driver or OSPM code.  The debug version of the code
14998includes the full debug trace mechanism -- leading to a much
14999larger code and data size.  Note that these values will vary
15000depending on the efficiency of the compiler and the compiler
15001options used during generation.
15002
15003  Non-Debug Version:  65K Code,   5K Data,   70K Total
15004(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
15005Total  (Previously 195K)
15006
15007Linux:
15008
15009Support for ACPI 2.0 64-bit integers has been added.   All ACPI
15010Integer objects are now 64 bits wide
15011
15012All Acpi data types and structures are now in lower case.  Only
15013Acpi macros are upper case for differentiation.
15014
15015 Documentation:
15016
15017Changes to the external interfaces as described above.
15018
15019 ----------------------------------------
15020Summary of changes for this label: 08_31_01
15021
15022 ACPI CA Core Subsystem:
15023
15024A bug with interpreter implementation of the ASL Divide operator
15025was found and fixed.  The implicit function return value (not the
15026explicit store operands) was returning the remainder instead of
15027the quotient.  This was a longstanding bug and it fixes several
15028known outstanding issues on various platforms.
15029
15030The ACPI_DEBUG_PRINT and function trace entry/exit macros have
15031been further optimized for size.  There are 700 invocations of the
15032DEBUG_PRINT macro alone, so each optimization reduces the size of
15033the debug version of the subsystem significantly.
15034
15035A stack trace mechanism has been implemented.  The maximum stack
15036usage is about 2K on 32-bit platforms.  The debugger command "stat
15037stack" will display the current maximum stack usage.
15038
15039All public symbols and global variables within the subsystem are
15040now prefixed with the string "Acpi".  This keeps all of the
15041symbols grouped together in a kernel map, and avoids conflicts
15042with other kernel subsystems.
15043
15044Most of the internal fixed lookup tables have been moved into the
15045code segment via the const operator.
15046
15047Several enhancements have been made to the interpreter to both
15048reduce the code size and improve performance.
15049
15050Current core subsystem library code sizes are shown below.  These
15051are the code and data sizes for the acpica.lib produced by the
15052Microsoft Visual C++ 6.0 compiler, and these values do not include
15053any ACPI driver or OSPM code.  The debug version of the code
15054includes the full debug trace mechanism which contains over 700
15055invocations of the DEBUG_PRINT macro, 500 function entry macro
15056invocations, and over 900 function exit macro invocations --
15057leading to a much larger code and data size.  Note that these
15058values will vary depending on the efficiency of the compiler and
15059the compiler options used during generation.
15060
15061        Non-Debug Version:  64K Code,   5K Data,   69K Total
15062Debug Version:     137K Code,  58K Data,  195K Total
15063
15064 Linux:
15065
15066Implemented wbinvd() macro, pending a kernel-wide definition.
15067
15068Fixed /proc/acpi/event to handle poll() and short reads.
15069
15070 ASL Compiler, version X2026:
15071
15072Fixed a problem introduced in the previous label where the AML
15073
15074code emitted for package objects produced packages with zero
15075length.
15076
15077 ----------------------------------------
15078Summary of changes for this label: 08_16_01
15079
15080ACPI CA Core Subsystem:
15081
15082The following ACPI 2.0 ASL operators have been implemented in the
15083AML interpreter (These are already supported by the Intel ASL
15084compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
15085ToBuffer.  Support for 64-bit AML constants is implemented in the
15086AML parser, debugger, and disassembler.
15087
15088The internal memory tracking mechanism (leak detection code) has
15089been upgraded to reduce the memory overhead (a separate tracking
15090block is no longer allocated for each memory allocation), and now
15091supports all of the internal object caches.
15092
15093The data structures and code for the internal object caches have
15094been coelesced and optimized so that there is a single cache and
15095memory list data structure and a single group of functions that
15096implement generic cache management.  This has reduced the code
15097size in both the debug and release versions of the subsystem.
15098
15099The DEBUG_PRINT macro(s) have been optimized for size and replaced
15100by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
15101different, because it generates a single call to an internal
15102function.  This results in a savings of about 90 bytes per
15103invocation, resulting in an overall code and data savings of about
1510416% in the debug version of the subsystem.
15105
15106 Linux:
15107
15108Fixed C3 disk corruption problems and re-enabled C3 on supporting
15109machines.
15110
15111Integrated low-level sleep code by Patrick Mochel.
15112
15113Further tweaked source code Linuxization.
15114
15115Other minor fixes.
15116
15117 ASL Compiler:
15118
15119Support for ACPI 2.0 variable length packages is fixed/completed.
15120
15121Fixed a problem where the optional length parameter for the ACPI
151222.0 ToString operator.
15123
15124Fixed multiple extraneous error messages when a syntax error is
15125detected within the declaration line of a control method.
15126
15127 ----------------------------------------
15128Summary of changes for this label: 07_17_01
15129
15130ACPI CA Core Subsystem:
15131
15132Added a new interface named AcpiGetFirmwareTable to obtain any
15133ACPI table via the ACPI signature.  The interface can be called at
15134any time during kernel initialization, even before the kernel
15135virtual memory manager is initialized and paging is enabled.  This
15136allows kernel subsystems to obtain ACPI tables very early, even
15137before the ACPI CA subsystem is initialized.
15138
15139Fixed a problem where Fields defined with the AnyAcc attribute
15140could be resolved to the incorrect address under the following
15141conditions: 1) the field width is larger than 8 bits and 2) the
15142parent operation region is not defined on a DWORD boundary.
15143
15144Fixed a problem where the interpreter is not being locked during
15145namespace initialization (during execution of the _INI control
15146methods), causing an error when an attempt is made to release it
15147later.
15148
15149ACPI 2.0 support in the AML Interpreter has begun and will be
15150ongoing throughout the rest of this year.  In this label, The Mod
15151operator is implemented.
15152
15153Added a new data type to contain full PCI addresses named
15154ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
15155and Function values.
15156
15157 Linux:
15158
15159Enhanced the Linux version of the source code to change most
15160capitalized ACPI type names to lowercase. For example, all
15161instances of ACPI_STATUS are changed to acpi_status.  This will
15162result in a large diff, but the change is strictly cosmetic and
15163aligns the CA code closer to the Linux coding standard.
15164
15165OSL Interfaces:
15166
15167The interfaces to the PCI configuration space have been changed to
15168add the PCI Segment number and to split the single 32-bit combined
15169DeviceFunction field into two 16-bit fields.  This was
15170accomplished by moving the four values that define an address in
15171PCI configuration space (segment, bus, device, and function) to
15172the new ACPI_PCI_ID structure.
15173
15174The changes to the PCI configuration space interfaces led to a
15175reexamination of the complete set of address space access
15176interfaces for PCI, I/O, and Memory.  The previously existing 18
15177interfaces have proven difficult to maintain (any small change
15178must be propagated across at least 6 interfaces) and do not easily
15179allow for future expansion to 64 bits if necessary.  Also, on some
15180systems, it would not be appropriate to demultiplex the access
15181width (8, 16, 32,or 64) before calling the OSL if the
15182corresponding native OS interfaces contain a similar access width
15183parameter.  For these reasons, the 18 address space interfaces
15184have been replaced by these 6 new ones:
15185
15186AcpiOsReadPciConfiguration
15187AcpiOsWritePciConfiguration
15188AcpiOsReadMemory
15189AcpiOsWriteMemory
15190AcpiOsReadPort
15191AcpiOsWritePort
15192
15193Added a new interface named AcpiOsGetRootPointer to allow the OSL
15194to perform the platform and/or OS-specific actions necessary to
15195obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
15196interface will simply call down to the CA core to perform the low-
15197memory search for the table.  On IA-64, the RSDP is obtained from
15198EFI.  Migrating this interface to the OSL allows the CA core to
15199
15200remain OS and platform independent.
15201
15202Added a new interface named AcpiOsSignal to provide a generic
15203"function code and pointer" interface for various miscellaneous
15204signals and notifications that must be made to the host OS.   The
15205first such signals are intended to support the ASL Fatal and
15206Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
15207interface has been obsoleted.
15208
15209The definition of the AcpiFormatException interface has been
15210changed to simplify its use.  The caller no longer must supply a
15211buffer to the call; A pointer to a const string is now returned
15212directly.  This allows the call to be easily used in printf
15213statements, etc. since the caller does not have to manage a local
15214buffer.
15215
15216
15217 ASL Compiler, Version X2025:
15218
15219The ACPI 2.0 Switch/Case/Default operators have been implemented
15220and are fully functional.  They will work with all ACPI 1.0
15221interpreters, since the operators are simply translated to If/Else
15222pairs.
15223
15224The ACPI 2.0 ElseIf operator is implemented and will also work
15225with 1.0 interpreters, for the same reason.
15226
15227Implemented support for ACPI 2.0 variable-length packages.  These
15228packages have a separate opcode, and their size is determined by
15229the interpreter at run-time.
15230
15231Documentation The ACPI CA Programmer Reference has been updated to
15232reflect the new interfaces and changes to existing interfaces.
15233
15234 ------------------------------------------
15235Summary of changes for this label: 06_15_01
15236
15237 ACPI CA Core Subsystem:
15238
15239Fixed a problem where a DWORD-accessed field within a Buffer
15240object would get its byte address inadvertently rounded down to
15241the nearest DWORD.  Buffers are always Byte-accessible.
15242
15243 ASL Compiler, version X2024:
15244
15245Fixed a problem where the Switch() operator would either fault or
15246hang the compiler.  Note however, that the AML code for this ACPI
152472.0 operator is not yet implemented.
15248
15249Compiler uses the new AcpiOsGetTimer interface to obtain compile
15250timings.
15251
15252Implementation of the CreateField operator automatically converts
15253a reference to a named field within a resource descriptor from a
15254byte offset to a bit offset if required.
15255
15256Added some missing named fields from the resource descriptor
15257support. These are the names that are automatically created by the
15258compiler to reference fields within a descriptor.  They are only
15259valid at compile time and are not passed through to the AML
15260interpreter.
15261
15262Resource descriptor named fields are now typed as Integers and
15263subject to compile-time typechecking when used in expressions.
15264
15265 ------------------------------------------
15266Summary of changes for this label: 05_18_01
15267
15268 ACPI CA Core Subsystem:
15269
15270Fixed a couple of problems in the Field support code where bits
15271from adjacent fields could be returned along with the proper field
15272bits. Restructured the field support code to improve performance,
15273readability and maintainability.
15274
15275New DEBUG_PRINTP macro automatically inserts the procedure name
15276into the output, saving hundreds of copies of procedure name
15277strings within the source, shrinking the memory footprint of the
15278debug version of the core subsystem.
15279
15280 Source Code Structure:
15281
15282The source code directory tree was restructured to reflect the
15283current organization of the component architecture.  Some files
15284and directories have been moved and/or renamed.
15285
15286 Linux:
15287
15288Fixed leaking kacpidpc processes.
15289
15290Fixed queueing event data even when /proc/acpi/event is not
15291opened.
15292
15293 ASL Compiler, version X2020:
15294
15295Memory allocation performance enhancement - over 24X compile time
15296improvement on large ASL files.  Parse nodes and namestring
15297buffers are now allocated from a large internal compiler buffer.
15298
15299The temporary .SRC file is deleted unless the "-s" option is
15300specified
15301
15302The "-d" debug output option now sends all output to the .DBG file
15303instead of the console.
15304
15305"External" second parameter is now optional
15306
15307"ElseIf" syntax now properly allows the predicate
15308
15309Last operand to "Load" now recognized as a Target operand
15310
15311Debug object can now be used anywhere as a normal object.
15312
15313ResourceTemplate now returns an object of type BUFFER
15314
15315EISAID now returns an object of type INTEGER
15316
15317"Index" now works with a STRING operand
15318
15319"LoadTable" now accepts optional parameters
15320
15321"ToString" length parameter is now optional
15322
15323"Interrupt (ResourceType," parse error fixed.
15324
15325"Register" with a user-defined region space parse error fixed
15326
15327Escaped backslash at the end of a string ("\\") scan/parse error
15328fixed
15329
15330"Revision" is now an object of type INTEGER.
15331
15332
15333
15334------------------------------------------
15335Summary of changes for this label: 05_02_01
15336
15337Linux:
15338
15339/proc/acpi/event now blocks properly.
15340
15341Removed /proc/sys/acpi. You can still dump your DSDT from
15342/proc/acpi/dsdt.
15343
15344 ACPI CA Core Subsystem:
15345
15346Fixed a problem introduced in the previous label where some of the
15347"small" resource descriptor types were not recognized.
15348
15349Improved error messages for the case where an ASL Field is outside
15350the range of the parent operation region.
15351
15352 ASL Compiler, version X2018:
15353
15354
15355Added error detection for ASL Fields that extend beyond the length
15356of the parent operation region (only if the length of the region
15357is known at compile time.)  This includes fields that have a
15358minimum access width that is smaller than the parent region, and
15359individual field units that are partially or entirely beyond the
15360extent of the parent.
15361
15362
15363
15364------------------------------------------
15365Summary of changes for this label: 04_27_01
15366
15367 ACPI CA Core Subsystem:
15368
15369Fixed a problem where the namespace mutex could be released at the
15370wrong time during execution of AcpiRemoveAddressSpaceHandler.
15371
15372Added optional thread ID output for debug traces, to simplify
15373debugging of multiple threads.  Added context switch notification
15374when the debug code realizes that a different thread is now
15375executing ACPI code.
15376
15377Some additional external data types have been prefixed with the
15378string "ACPI_" for consistency.  This may effect existing code.
15379The data types affected are the external callback typedefs - e.g.,
15380
15381WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
15382
15383 Linux:
15384
15385Fixed an issue with the OSL semaphore implementation where a
15386thread was waking up with an error from receiving a SIGCHLD
15387signal.
15388
15389Linux version of ACPI CA now uses the system C library for string
15390manipulation routines instead of a local implementation.
15391
15392Cleaned up comments and removed TBDs.
15393
15394 ASL Compiler, version X2017:
15395
15396Enhanced error detection and reporting for all file I/O
15397operations.
15398
15399 Documentation:
15400
15401Programmer Reference updated to version 1.06.
15402
15403
15404
15405------------------------------------------
15406Summary of changes for this label: 04_13_01
15407
15408 ACPI CA Core Subsystem:
15409
15410Restructured support for BufferFields and RegionFields.
15411BankFields support is now fully operational.  All known 32-bit
15412limitations on field sizes have been removed.  Both BufferFields
15413and (Operation) RegionFields are now supported by the same field
15414management code.
15415
15416Resource support now supports QWORD address and IO resources. The
1541716/32/64 bit address structures and the Extended IRQ structure
15418have been changed to properly handle Source Resource strings.
15419
15420A ThreadId of -1 is now used to indicate a "mutex not acquired"
15421condition internally and must never be returned by AcpiOsThreadId.
15422This reserved value was changed from 0 since Unix systems allow a
15423thread ID of 0.
15424
15425Linux:
15426
15427Driver code reorganized to enhance portability
15428
15429Added a kernel configuration option to control ACPI_DEBUG
15430
15431Fixed the EC driver to honor _GLK.
15432
15433ASL Compiler, version X2016:
15434
15435Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
15436address space was set to 0, not 0x7f as it should be.
15437
15438 ------------------------------------------
15439Summary of changes for this label: 03_13_01
15440
15441 ACPI CA Core Subsystem:
15442
15443During ACPI initialization, the _SB_._INI method is now run if
15444present.
15445
15446Notify handler fix - notifies are deferred until the parent method
15447completes execution.  This fixes the "mutex already acquired"
15448issue seen occasionally.
15449
15450Part of the "implicit conversion" rules in ACPI 2.0 have been
15451found to cause compatibility problems with existing ASL/AML.  The
15452convert "result-to-target-type" implementation has been removed
15453for stores to method Args and Locals.  Source operand conversion
15454is still fully implemented.  Possible changes to ACPI 2.0
15455specification pending.
15456
15457Fix to AcpiRsCalculatePciRoutingTableLength to return correct
15458length.
15459
15460Fix for compiler warnings for 64-bit compiles.
15461
15462 Linux:
15463
15464/proc output aligned for easier parsing.
15465
15466Release-version compile problem fixed.
15467
15468New kernel configuration options documented in Configure.help.
15469
15470IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
15471context" message.
15472
15473 OSPM:
15474
15475Power resource driver integrated with bus manager.
15476
15477Fixed kernel fault during active cooling for thermal zones.
15478
15479Source Code:
15480
15481The source code tree has been restructured.
15482
15483
15484
15485------------------------------------------
15486Summary of changes for this label: 03_02_01
15487
15488 Linux OS Services Layer (OSL):
15489
15490Major revision of all Linux-specific code.
15491
15492Modularized all ACPI-specific drivers.
15493
15494Added new thermal zone and power resource drivers.
15495
15496Revamped /proc interface (new functionality is under /proc/acpi).
15497
15498New kernel configuration options.
15499
15500 Linux known issues:
15501
15502New kernel configuration options not documented in Configure.help
15503yet.
15504
15505
15506Module dependencies not currently implemented. If used, they
15507should be loaded in this order: busmgr, power, ec, system,
15508processor, battery, ac_adapter, button, thermal.
15509
15510Modules will not load if CONFIG_MODVERSION is set.
15511
15512IBM 600E - entering S5 may reboot instead of shutting down.
15513
15514IBM 600E - Sleep button may generate "Invalid <NULL> context"
15515message.
15516
15517Some systems may fail with "execution mutex already acquired"
15518message.
15519
15520 ACPI CA Core Subsystem:
15521
15522Added a new OSL Interface, AcpiOsGetThreadId.  This was required
15523for the  deadlock detection code. Defined to return a non-zero, 32-
15524bit thread ID for the currently executing thread.  May be a non-
15525zero constant integer on single-thread systems.
15526
15527Implemented deadlock detection for internal subsystem mutexes.  We
15528may add conditional compilation for this code (debug only) later.
15529
15530ASL/AML Mutex object semantics are now fully supported.  This
15531includes multiple acquires/releases by owner and support for the
15532
15533Mutex SyncLevel parameter.
15534
15535A new "Force Release" mechanism automatically frees all ASL
15536Mutexes that have been acquired but not released when a thread
15537exits the interpreter.  This forces conformance to the ACPI spec
15538("All mutexes must be released when an invocation exits") and
15539prevents deadlocked ASL threads.  This mechanism can be expanded
15540(later) to monitor other resource acquisitions if OEM ASL code
15541continues to misbehave (which it will).
15542
15543Several new ACPI exception codes have been added for the Mutex
15544support.
15545
15546Recursive method calls are now allowed and supported (the ACPI
15547spec does in fact allow recursive method calls.)  The number of
15548recursive calls is subject to the restrictions imposed by the
15549SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
15550parameter.
15551
15552Implemented support for the SyncLevel parameter for control
15553methods (ACPI 2.0 feature)
15554
15555Fixed a deadlock problem when multiple threads attempted to use
15556the interpreter.
15557
15558Fixed a problem where the string length of a String package
15559element was not always set in a package returned from
15560AcpiEvaluateObject.
15561
15562Fixed a problem where the length of a String package element was
15563not always included in the length of the overall package returned
15564from AcpiEvaluateObject.
15565
15566Added external interfaces (Acpi*) to the ACPI debug memory
15567manager.  This manager keeps a list of all outstanding
15568allocations, and can therefore detect memory leaks and attempts to
15569free memory blocks more than once. Useful for code such as the
15570power manager, etc.  May not be appropriate for device drivers.
15571Performance with the debug code enabled is slow.
15572
15573The ACPI Global Lock is now an optional hardware element.
15574
15575 ASL Compiler Version X2015:
15576
15577Integrated changes to allow the compiler to be generated on
15578multiple platforms.
15579
15580Linux makefile added to generate the compiler on Linux
15581
15582 Source Code:
15583
15584All platform-specific headers have been moved to their own
15585subdirectory, Include/Platform.
15586
15587New source file added, Interpreter/ammutex.c
15588
15589New header file, Include/acstruct.h
15590
15591 Documentation:
15592
15593The programmer reference has been updated for the following new
15594interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
15595
15596 ------------------------------------------
15597Summary of changes for this label: 02_08_01
15598
15599Core ACPI CA Subsystem: Fixed a problem where an error was
15600incorrectly returned if the return resource buffer was larger than
15601the actual data (in the resource interfaces).
15602
15603References to named objects within packages are resolved to the
15604
15605full pathname string before packages are returned directly (via
15606the AcpiEvaluateObject interface) or indirectly via the resource
15607interfaces.
15608
15609Linux OS Services Layer (OSL):
15610
15611Improved /proc battery interface.
15612
15613
15614Added C-state debugging output and other miscellaneous fixes.
15615
15616ASL Compiler Version X2014:
15617
15618All defined method arguments can now be used as local variables,
15619including the ones that are not actually passed in as parameters.
15620The compiler tracks initialization of the arguments and issues an
15621exception if they are used without prior assignment (just like
15622locals).
15623
15624The -o option now specifies a filename prefix that is used for all
15625output files, including the AML output file.  Otherwise, the
15626default behavior is as follows:  1) the AML goes to the file
15627specified in the DSDT.  2) all other output files use the input
15628source filename as the base.
15629
15630 ------------------------------------------
15631Summary of changes for this label: 01_25_01
15632
15633Core ACPI CA Subsystem: Restructured the implementation of object
15634store support within the  interpreter.  This includes support for
15635the Store operator as well  as any ASL operators that include a
15636target operand.
15637
15638Partially implemented support for Implicit Result-to-Target
15639conversion. This is when a result object is converted on the fly
15640to the type of  an existing target object.  Completion of this
15641support is pending  further analysis of the ACPI specification
15642concerning this matter.
15643
15644CPU-specific code has been removed from the subsystem (hardware
15645directory).
15646
15647New Power Management Timer functions added
15648
15649Linux OS Services Layer (OSL): Moved system state transition code
15650to the core, fixed it, and modified  Linux OSL accordingly.
15651
15652Fixed C2 and C3 latency calculations.
15653
15654
15655We no longer use the compilation date for the version message on
15656initialization, but retrieve the version from AcpiGetSystemInfo().
15657
15658Incorporated for fix Sony VAIO machines.
15659
15660Documentation:  The Programmer Reference has been updated and
15661reformatted.
15662
15663
15664ASL Compiler:  Version X2013: Fixed a problem where the line
15665numbering and error reporting could get out  of sync in the
15666presence of multiple include files.
15667
15668 ------------------------------------------
15669Summary of changes for this label: 01_15_01
15670
15671Core ACPI CA Subsystem:
15672
15673Implemented support for type conversions in the execution of the
15674ASL  Concatenate operator (The second operand is converted to
15675match the type  of the first operand before concatenation.)
15676
15677Support for implicit source operand conversion is partially
15678implemented.   The ASL source operand types Integer, Buffer, and
15679String are freely  interchangeable for most ASL operators and are
15680converted by the interpreter  on the fly as required.  Implicit
15681Target operand conversion (where the  result is converted to the
15682target type before storing) is not yet implemented.
15683
15684Support for 32-bit and 64-bit BCD integers is implemented.
15685
15686Problem fixed where a field read on an aligned field could cause a
15687read  past the end of the field.
15688
15689New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
15690does not return a value, but the caller expects one.  (The ASL
15691compiler flags this as a warning.)
15692
15693ASL Compiler:
15694
15695Version X2011:
156961. Static typechecking of all operands is implemented. This
15697prevents the use of invalid objects (such as using a Package where
15698an Integer is required) at compile time instead of at interpreter
15699run-time.
157002. The ASL source line is printed with ALL errors and warnings.
157013. Bug fix for source EOF without final linefeed.
157024. Debug option is split into a parse trace and a namespace trace.
157035. Namespace output option (-n) includes initial values for
15704integers and strings.
157056. Parse-only option added for quick syntax checking.
157067. Compiler checks for duplicate ACPI name declarations
15707
15708Version X2012:
157091. Relaxed typechecking to allow interchangeability between
15710strings, integers, and buffers.  These types are now converted by
15711the interpreter at runtime.
157122. Compiler reports time taken by each internal subsystem in the
15713debug         output file.
15714
15715
15716 ------------------------------------------
15717Summary of changes for this label: 12_14_00
15718
15719ASL Compiler:
15720
15721This is the first official release of the compiler. Since the
15722compiler requires elements of the Core Subsystem, this label
15723synchronizes everything.
15724
15725------------------------------------------
15726Summary of changes for this label: 12_08_00
15727
15728
15729Fixed a problem where named references within the ASL definition
15730of both OperationRegions and CreateXXXFields did not work
15731properly.  The symptom was an AE_AML_OPERAND_TYPE during
15732initialization of the region/field. This is similar (but not
15733related internally) to the problem that was fixed in the last
15734label.
15735
15736Implemented both 32-bit and 64-bit support for the BCD ASL
15737functions ToBCD and FromBCD.
15738
15739Updated all legal headers to include "2000" in the copyright
15740years.
15741
15742 ------------------------------------------
15743Summary of changes for this label: 12_01_00
15744
15745Fixed a problem where method invocations within the ASL definition
15746of both OperationRegions and CreateXXXFields did not work
15747properly.  The symptom was an AE_AML_OPERAND_TYPE during
15748initialization of the region/field:
15749
15750  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
15751[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
15752(0x3005)
15753
15754Fixed a problem where operators with more than one nested
15755subexpression would fail.  The symptoms were varied, by mostly
15756AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
15757problem that has gone unnoticed until now.
15758
15759  Subtract (Add (1,2), Multiply (3,4))
15760
15761Fixed a problem where AcpiGetHandle didn't quite get fixed in the
15762previous build (The prefix part of a relative path was handled
15763incorrectly).
15764
15765Fixed a problem where Operation Region initialization failed if
15766the operation region name was a "namepath" instead of a simple
15767"nameseg". Symptom was an AE_NO_OPERAND error.
15768
15769Fixed a problem where an assignment to a local variable via the
15770indirect RefOf mechanism only worked for the first such
15771assignment.  Subsequent assignments were ignored.
15772
15773 ------------------------------------------
15774Summary of changes for this label: 11_15_00
15775
15776ACPI 2.0 table support with backwards support for ACPI 1.0 and the
157770.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
15778the AML  interpreter does NOT have support for the new 2.0 ASL
15779grammar terms at this time.
15780
15781All ACPI hardware access is via the GAS structures in the ACPI 2.0
15782FADT.
15783
15784All physical memory addresses across all platforms are now 64 bits
15785wide. Logical address width remains dependent on the platform
15786(i.e., "void *").
15787
15788AcpiOsMapMemory interface changed to a 64-bit physical address.
15789
15790The AML interpreter integer size is now 64 bits, as per the ACPI
157912.0 specification.
15792
15793For backwards compatibility with ACPI 1.0, ACPI tables with a
15794revision number less than 2 use 32-bit integers only.
15795
15796Fixed a problem where the evaluation of OpRegion operands did not
15797always resolve them to numbers properly.
15798
15799------------------------------------------
15800Summary of changes for this label: 10_20_00
15801
15802Fix for CBN_._STA issue.  This fix will allow correct access to
15803CBN_ OpRegions when the _STA returns 0x8.
15804
15805Support to convert ACPI constants (Ones, Zeros, One) to actual
15806values before a package object is returned
15807
15808Fix for method call as predicate to if/while construct causing
15809incorrect if/while behavior
15810
15811Fix for Else block package lengths sometimes calculated wrong (if
15812block > 63 bytes)
15813
15814Fix for Processor object length field, was always zero
15815
15816Table load abort if FACP sanity check fails
15817
15818Fix for problem with Scope(name) if name already exists
15819
15820Warning emitted if a named object referenced cannot be found
15821(resolved) during method execution.
15822
15823
15824
15825
15826
15827------------------------------------------
15828Summary of changes for this label: 9_29_00
15829
15830New table initialization interfaces: AcpiInitializeSubsystem no
15831longer has any parameters AcpiFindRootPointer - Find the RSDP (if
15832necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
15833>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
15834AcpiLoadTables
15835
15836Note: These interface changes require changes to all existing OSDs
15837
15838The PCI_Config default address space handler is always installed
15839at the root namespace object.
15840
15841-------------------------------------------
15842Summary of changes for this label: 09_15_00
15843
15844The new initialization architecture is implemented.  New
15845interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
15846AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
15847
15848(Namespace is automatically loaded when a table is loaded)
15849
15850The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1585152 bytes to 32 bytes.  There is usually one of these for every
15852namespace object, so the memory savings is significant.
15853
15854Implemented just-in-time evaluation of the CreateField operators.
15855
15856Bug fixes for IA-64 support have been integrated.
15857
15858Additional code review comments have been implemented
15859
15860The so-called "third pass parse" has been replaced by a final walk
15861through the namespace to initialize all operation regions (address
15862spaces) and fields that have not yet been initialized during the
15863execution of the various _INI and REG methods.
15864
15865New file - namespace/nsinit.c
15866
15867-------------------------------------------
15868Summary of changes for this label: 09_01_00
15869
15870Namespace manager data structures have been reworked to change the
15871primary  object from a table to a single object.  This has
15872resulted in dynamic memory  savings of 3X within the namespace and
158732X overall in the ACPI CA subsystem.
15874
15875Fixed problem where the call to AcpiEvFindPciRootBuses was
15876inadvertently left  commented out.
15877
15878Reduced the warning count when generating the source with the GCC
15879compiler.
15880
15881Revision numbers added to each module header showing the
15882SourceSafe version of the file.  Please refer to this version
15883number when giving us feedback or comments on individual modules.
15884
15885The main object types within the subsystem have been renamed to
15886clarify their  purpose:
15887
15888ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
15889ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
15890ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
15891
15892NOTE: no changes to the initialization sequence are included in
15893this label.
15894
15895-------------------------------------------
15896Summary of changes for this label: 08_23_00
15897
15898Fixed problem where TerminateControlMethod was being called
15899multiple times per  method
15900
15901Fixed debugger problem where single stepping caused a semaphore to
15902be  oversignalled
15903
15904Improved performance through additional parse object caching -
15905added  ACPI_EXTENDED_OP type
15906
15907-------------------------------------------
15908Summary of changes for this label: 08_10_00
15909
15910Parser/Interpreter integration:  Eliminated the creation of
15911complete parse trees  for ACPI tables and control methods.
15912Instead, parse subtrees are created and  then deleted as soon as
15913they are processed (Either entered into the namespace or  executed
15914by the interpreter).  This reduces the use of dynamic kernel
15915memory  significantly. (about 10X)
15916
15917Exception codes broken into classes and renumbered.  Be sure to
15918recompile all  code that includes acexcep.h.  Hopefully we won't
15919have to renumber the codes  again now that they are split into
15920classes (environment, programmer, AML code,  ACPI table, and
15921internal).
15922
15923Fixed some additional alignment issues in the Resource Manager
15924subcomponent
15925
15926Implemented semaphore tracking in the AcpiExec utility, and fixed
15927several places  where mutexes/semaphores were being unlocked
15928without a corresponding lock  operation.  There are no known
15929semaphore or mutex "leaks" at this time.
15930
15931Fixed the case where an ASL Return operator is used to return an
15932unnamed  package.
15933
15934-------------------------------------------
15935Summary of changes for this label: 07_28_00
15936
15937Fixed a problem with the way addresses were calculated in
15938AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
15939manifested itself when a Field was  created with WordAccess or
15940DwordAccess, but the field unit defined within the  Field was less
15941
15942than a Word or Dword.
15943
15944Fixed a problem in AmlDumpOperands() module's loop to pull
15945operands off of the  operand stack to display information. The
15946problem manifested itself as a TLB  error on 64-bit systems when
15947accessing an operand stack with two or more  operands.
15948
15949Fixed a problem with the PCI configuration space handlers where
15950context was  getting confused between accesses. This required a
15951change to the generic address  space handler and address space
15952setup definitions. Handlers now get both a  global handler context
15953(this is the one passed in by the user when executing
15954AcpiInstallAddressSpaceHandler() and a specific region context
15955that is unique to  each region (For example, the _ADR, _SEG and
15956_BBN values associated with a  specific region). The generic
15957function definitions have changed to the  following:
15958
15959typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
15960UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
15961*HandlerContext, // This used to be void *Context void
15962*RegionContext); // This is an additional parameter
15963
15964typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
15965RegionHandle, UINT32 Function, void *HandlerContext,  void
15966**RegionContext); // This used to be **ReturnContext
15967
15968-------------------------------------------
15969Summary of changes for this label: 07_21_00
15970
15971Major file consolidation and rename.  All files within the
15972interpreter have been  renamed as well as most header files.  This
15973was done to prevent collisions with  existing files in the host
15974OSs -- filenames such as "config.h" and "global.h"  seem to be
15975quite common.  The VC project files have been updated.  All
15976makefiles  will require modification.
15977
15978The parser/interpreter integration continues in Phase 5 with the
15979implementation  of a complete 2-pass parse (the AML is parsed
15980twice) for each table;  This  avoids the construction of a huge
15981parse tree and therefore reduces the amount of  dynamic memory
15982required by the subsystem.  Greater use of the parse object cache
15983means that performance is unaffected.
15984
15985Many comments from the two code reviews have been rolled in.
15986
15987The 64-bit alignment support is complete.
15988
15989-------------------------------------------
15990Summary of changes for this label: 06_30_00
15991
15992With a nod and a tip of the hat to the technology of yesteryear,
15993we've added  support in the source code for 80 column output
15994devices.  The code is now mostly  constrained to 80 columns or
15995less to support environments and editors that 1)  cannot display
15996or print more than 80 characters on a single line, and 2) cannot
15997disable line wrapping.
15998
15999A major restructuring of the namespace data structure has been
16000completed.  The  result is 1) cleaner and more
16001understandable/maintainable code, and 2) a  significant reduction
16002in the dynamic memory requirement for each named ACPI  object
16003(almost half).
16004
16005-------------------------------------------
16006Summary of changes for this label: 06_23_00
16007
16008Linux support has been added.  In order to obtain approval to get
16009the ACPI CA  subsystem into the Linux kernel, we've had to make
16010quite a few changes to the  base subsystem that will affect all
16011users (all the changes are generic and OS- independent).  The
16012effects of these global changes have been somewhat far  reaching.
16013Files have been merged and/or renamed and interfaces have been
16014renamed.   The major changes are described below.
16015
16016Osd* interfaces renamed to AcpiOs* to eliminate namespace
16017pollution/confusion  within our target kernels.  All OSD
16018interfaces must be modified to match the new  naming convention.
16019
16020Files merged across the subsystem.  A number of the smaller source
16021and header  files have been merged to reduce the file count and
16022increase the density of the  existing files.  There are too many
16023to list here.  In general, makefiles that  call out individual
16024files will require rebuilding.
16025
16026Interpreter files renamed.  All interpreter files now have the
16027prefix am*  instead of ie* and is*.
16028
16029Header files renamed:  The acapi.h file is now acpixf.h.  The
16030acpiosd.h file is  now acpiosxf.h.  We are removing references to
16031the acronym "API" since it is  somewhat windowsy. The new name is
16032"external interface" or xface or xf in the  filenames.j
16033
16034
16035All manifest constants have been forced to upper case (some were
16036mixed case.)   Also, the string "ACPI_" has been prepended to many
16037(not all) of the constants,  typedefs, and structs.
16038
16039The globals "DebugLevel" and "DebugLayer" have been renamed
16040"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
16041
16042All other globals within the subsystem are now prefixed with
16043"AcpiGbl_" Internal procedures within the subsystem are now
16044prefixed with "Acpi" (with only  a few exceptions).  The original
16045two-letter abbreviation for the subcomponent  remains after "Acpi"
16046- for example, CmCallocate became AcpiCmCallocate.
16047
16048Added a source code translation/conversion utility.  Used to
16049generate the Linux  source code, it can be modified to generate
16050other types of source as well. Can  also be used to cleanup
16051existing source by removing extraneous spaces and blank  lines.
16052Found in tools/acpisrc/*
16053
16054OsdUnMapMemory was renamed to OsdUnmapMemory and then
16055AcpiOsUnmapMemory.  (UnMap  became Unmap).
16056
16057A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
16058When set to  one, this indicates that the caller wants to use the
16059
16060semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
16061both types.  However, implementers of this  call may want to use
16062different OS primitives depending on the type of semaphore
16063requested.  For example, some operating systems provide separate
16064
16065"mutex" and  "semaphore" interfaces - where the mutex interface is
16066much faster because it  doesn't have all the overhead of a full
16067semaphore implementation.
16068
16069Fixed a deadlock problem where a method that accesses the PCI
16070address space can  block forever if it is the first access to the
16071space.
16072
16073-------------------------------------------
16074Summary of changes for this label: 06_02_00
16075
16076Support for environments that cannot handle unaligned data
16077accesses (e.g.  firmware and OS environments devoid of alignment
16078handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
16079been added (via configurable macros) in  these three areas: -
16080Transfer of data from the raw AML byte stream is done via byte
16081moves instead of    word/dword/qword moves. - External objects are
16082aligned within the user buffer, including package   elements (sub-
16083objects). - Conversion of name strings to UINT32 Acpi Names is now
16084done byte-wise.
16085
16086The Store operator was modified to mimic Microsoft's
16087implementation when storing  to a Buffer Field.
16088
16089Added a check of the BM_STS bit before entering C3.
16090
16091The methods subdirectory has been obsoleted and removed.  A new
16092file, cmeval.c  subsumes the functionality.
16093
16094A 16-bit (DOS) version of AcpiExec has been developed.  The
16095makefile is under  the acpiexec directory.
16096