Sync ACPICA with Intel's version 20150930.
[dragonfly.git] / sys / contrib / dev / acpica / changes.txt
CommitLineData
3cc0afc6 1----------------------------------------
c6400d37
SW
230 September 2015. Summary of changes for version 20150930:
3
41) ACPICA kernel-resident subsystem:
5
6Debugger: Implemented several changes and bug fixes to assist support for
7the in-kernel version of the AML debugger. Lv Zheng.
8- Fix the "predefined" command for in-kernel debugger.
9- Do not enter debug command loop for the help and version commands.
10- Disallow "execute" command during execution/single-step of a method.
11
12Interpreter: Updated runtime typechecking for all operators that have
13target operands. The operand is resolved and validated that it is legal.
14For example, the target cannot be a non-data object such as a Device,
15Mutex, ThermalZone, etc., as per the ACPI specification.
16
17Debugger: Fixed the double-mutex user I/O handshake to work when local
18deadlock detection is enabled.
19
20Debugger: limited display of method locals and arguments (LocalX and
21ArgX) to only those that have actually been initialized. This prevents
22lines of extraneous output.
23
24Updated the definition of the NFIT table to correct the bit polarity of
25one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
26
27Example Code and Data Size: These are the sizes for the OS-independent
28acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
29debug version of the code includes the debug output trace mechanism and
30has a much larger code and data size.
31
32 Current Release:
33 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
34 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
35 Previous Release:
36 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
37 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
38
39
402) iASL Compiler/Disassembler and Tools:
41
42iASL: Improved the compile-time typechecking for operands of many of the
43ASL operators:
3cc0afc6 44
c6400d37
SW
45-- Added an option to disable compiler operand/operator typechecking (-
46ot).
47
48-- For the following operators, the TermArg operands are now validated
49when possible to be Integer data objects: BankField, OperationRegion,
50DataTableRegion, Buffer, and Package.
51
52-- Store (Source, Target): Both the source and target operands are
53resolved and checked that the operands are both legal. For example,
54neither operand can be a non-data object such as a Device, Mutex,
55ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
56operator can be used to store an object to any type of target object.
57
58-- Store (Source, Target): If the source is a Package object, the target
59must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
60is a Package, the source must also be a Package.
61
62-- Store (Source, Target): A warning is issued if the source and target
63resolve to the identical named object.
64
65-- Store (Source, <method invocation>): An error is generated for the
66target method invocation, as this construct is not supported by the AML
67interpreter.
68
69-- For all ASL math and logic operators, the target operand must be a
70data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
71includes the function return value also.
72
73-- External declarations are also included in the typechecking where
74possible. External objects defined using the UnknownObj keyword cannot be
75typechecked, however.
76
77iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
78operator:
79- Legacy code: Index(PKG1, 3)
80- New ASL+ code: PKG1[3]
81This completes the ACPI 6.0 ASL+ support as it was the only operator not
82supported.
83
84iASL: Fixed the file suffix for the preprocessor output file (.i). Two
85spaces were inadvertently appended to the filename, causing file access
86and deletion problems on some systems.
87
88ASL Test Suite (ASLTS): Updated the master makefile to generate all
89possible compiler output files when building the test suite -- thus
90exercising these features of the compiler. These files are automatically
91deleted when the test suite exits.
92
93----------------------------------------
9418 August 2015. Summary of changes for version 20150818:
3cc0afc6
SW
95
961) ACPICA kernel-resident subsystem:
97
98Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
99Zheng. ACPICA BZ 1186.
100
101Completed development to ensure that the ACPICA Disassembler and Debugger
102are fully standalone components of ACPICA. Removed cross-component
103dependences. Lv Zheng.
104
105The max-number-of-AML-loops is now runtime configurable (previously was
106compile-time only). This is essentially a loop timeout to force-abort
107infinite AML loops. ACPCIA BZ 1192.
108
109Debugger: Cleanup output to dump ACPI names and namepaths without any
110trailing underscores. Lv Zheng. ACPICA BZ 1135.
111
112Removed unnecessary conditional compilations across the Debugger and
113Disassembler components where entire modules could be left uncompiled.
114
115The aapits test is deprecated and has been removed from the ACPICA git
116tree. The test has never been completed and has not been maintained, thus
117becoming rather useless. ACPICA BZ 1015, 794.
118
119A batch of small changes to close bugzilla and other reports:
120- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
121- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
122- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
123- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
124Moore.
125- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
126ACPICA BZ 1184.
127- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
128operators.
129- Debugger: Split debugger initialization/termination interfaces. Lv
130Zheng.
131- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
132identification.
133- AcpiExec: Add debug message during _REG method phase during table
134load/init.
135- AcpiNames: Fix a regression where some output was missing and no longer
136emitted.
137- Debugger: General cleanup and simplification. Lv Zheng.
138- Disassembler: Cleanup use of several global option variables. Lv Zheng.
139
140Example Code and Data Size: These are the sizes for the OS-independent
141acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
142debug version of the code includes the debug output trace mechanism and
143has a much larger code and data size.
144
145 Current Release:
146 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
147 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
148 Previous Release:
149 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
150 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
151
152
1532) iASL Compiler/Disassembler and Tools:
154
155AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
156were not handled properly and caused load errors. Now, properly invoke
157and use the ACPICA auto-reallocate mechanism for ACPI table data
158structures. ACPICA BZ 1188
159
160AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
161BZ 1190.
162
163AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
164AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
165executed during initialization. ACPICA BZ 1187, 1189.
166
167iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
168that corresponds to each disassembled ASL statement, to simplify
169debugging. ACPICA BZ 1191.
170
171Debugger: Add option to the "objects" command to display a summary of the
172current namespace objects (Object type and count). This is displayed if
173the command is entered with no arguments.
174
175AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
176
267c04fd
SW
177----------------------------------------
17817 July 2015. Summary of changes for version 20150717:
179
1801) ACPICA kernel-resident subsystem:
181
182Improved the partitioning between the Debugger and Disassembler
183components. This allows the Debugger to be used standalone within kernel
184code without the Disassembler (which is used for single stepping also).
185This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
186
187Debugger: Implemented a new command to trace the execution of control
188methods (Trace). This is especially useful for the in-kernel version of
189the debugger when file I/O may not be available for method trace output.
190See the ACPICA reference for more information. Lv Zheng.
191
192Moved all C library prototypes (used for the local versions of these
193functions when requested) to a new header, acclib.h
194Cleaned up the use of non-ANSI C library functions. These functions are
195implemented locally in ACPICA. Moved all such functions to a common
196source file, utnonansi.c
197
198Debugger: Fixed a problem with the "!!" command (get last command
199executed) where the debugger could enter an infinite loop and eventually
200crash.
201
202Removed the use of local macros that were used for some of the standard C
203library functions to automatically cast input parameters. This mostly
204affected the is* functions where the input parameter is defined to be an
205int. This required a few modifications to the main ACPICA source code to
206provide casting for these functions and eliminate possible compiler
207warnings for these parameters.
208
209Across the source code, added additional status/error checking to resolve
210issues discovered by static source code analysis tools such as Coverity.
211
212Example Code and Data Size: These are the sizes for the OS-independent
213acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
214debug version of the code includes the debug output trace mechanism and
215has a much larger code and data size.
216
217 Current Release:
218 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
219 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
220 Previous Release:
221 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
222 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
223
224
2252) iASL Compiler/Disassembler and Tools:
226
227iASL: Fixed a regression where the device map file feature no longer
228worked properly when used in conjunction with the disassembler. It only
229worked properly with the compiler itself.
230
231iASL: Implemented a new warning for method LocalX variables that are set
232but never used (similar to a C compiler such as gcc). This also applies
233to ArgX variables that are not defined by the parent method, and are
234instead (legally) used as local variables.
235
236iASL/Preprocessor: Finished the pass-through of line numbers from the
237preprocessor to the compiler. This ensures that compiler errors/warnings
238have the correct original line numbers and filenames, regardless of any
239#include files.
240
241iASL/Preprocessor: Fixed a couple of issues with comment handling and the
242pass-through of comments to the preprocessor output file (which becomes
243the compiler input file). Also fixed a problem with // comments that
244appear after a math expression.
245
246iASL: Added support for the TCPA server table to the table compiler and
247template generator. (The client table was already previously supported)
248
249iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
250identify the iASL compiler.
251
252Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
253multiple times. The new names are ACPI_SIGN_NEGATIVE and
254ACPI_SIGN_POSITIVE.
255
256AcpiHelp: Update to expand help messages for the iASL preprocessor
257directives.
258
259
896f2e3a 260----------------------------------------
25ca8c79
SW
26119 June 2015. Summary of changes for version 20150619:
262
263Two regressions in version 20150616 have been addressed:
264
265Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
266etc.) This update changes ACPICA to only use the standard headers for
267functions, or the prototypes for the local versions of the C library
268functions. Across the source code, this required some additional casts
269for some Clib invocations for portability. Moved all local prototypes to
270a new file, acclib.h
271
272Fixes several problems with recent changes to the handling of the FACS
273table that could cause some systems not to boot.
274
275
276----------------------------------------
27716 June 2015. Summary of changes for version 20150616:
278
279
2801) ACPICA kernel-resident subsystem:
281
282Across the entire ACPICA source code base, the various macros for the C
283library functions (such as ACPI_STRLEN, etc.) have been removed and
284replaced by the standard C library names (strlen, etc.) The original
285purpose for these macros is no longer applicable. This simplification
286reduces the number of macros used in the ACPICA source code
287significantly, improving readability and maintainability.
288
289Implemented support for a new ACPI table, the OSDT. This table, the
290"override" SDT, can be loaded directly by the host OS at boot time. It
291enables the replacement of existing namespace objects that were installed
292via the DSDT and/or SSDTs. The primary purpose for this is to replace
293buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
294for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
295Moore.
296
297Added support for systems with (improperly) two FACS tables -- a "32-bit"
298table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
299X field). This change will support both automatically. There continues to
300be systems found with this issue. This support requires a change to the
301AcpiSetFirmwareWakingVector interface. Also, a public global variable has
302been added to allow the host to select which FACS is desired
303(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
304details Lv Zheng.
305
306Added a new feature to allow for systems that do not contain an FACS.
307Although this is already supported on hardware-reduced platforms, the
308feature has been extended for all platforms. The reasoning is that we do
309not want to abort the entire ACPICA initialization just because the
310system is seriously buggy and has no FACS.
311
312Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
313not correctly transcribed from the ACPI specification in ACPICA version
31420150515.
315
316Implemented support for the _CLS object in the AcpiGetObjectInfo external
317interface.
318
319Updated the definitions of the TCPA and TPM2 ACPI tables to the more
320recent TCG ACPI Specification, December 14, 2014. Table disassembler and
321compiler also updated. Note: The TCPA "server" table is not supported by
322the disassembler/table-compiler at this time.
323
324ACPI 6.0: Added definitions for the new GIC version field in the MADT.
325
326Example Code and Data Size: These are the sizes for the OS-independent
327acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
328debug version of the code includes the debug output trace mechanism and
329has a much larger code and data size.
330
331 Current Release:
332 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
333 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
334 Previous Release:
335 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
336 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
337
338
3392) iASL Compiler/Disassembler and Tools:
340
341Disassembler: Fixed a problem with the new symbolic operator disassembler
342where incorrect ASL code could be emitted in some cases for the "non-
343commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
344ShiftRight. The actual problem cases seem to be rather unusual in common
345ASL code, however. David Box.
346
347Modified the linux version of acpidump to obtain ACPI tables from not
348just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
349Zheng.
350
351iASL: Fixed a problem where the user preprocessor output file (.i)
352contained extra data that was not expected. The compiler was using this
353file as a temporary file and passed through #line directives in order to
354keep compiler error messages in sync with the input file and line number
355across multiple include files. The (.i) is no longer a temporary file as
356the compiler uses a new, different file for the original purpose.
357
358iASL: Fixed a problem where comments within the original ASL source code
359file were not passed through to the preprocessor output file, nor any
360listing files.
361
362iASL: Fixed some issues for the handling of the "#include" preprocessor
363directive and the similar (but not the same) "Include" ASL operator.
364
365iASL: Add support for the new OSDT in both the disassembler and compiler.
366
367iASL: Fixed a problem with the constant folding support where a Buffer
368object could be incorrectly generated (incorrectly formed) during a
369conversion to a Store() operator.
370
371AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
372description text for the _REV predefined name. _REV now permanently
373returns 2, as per the ACPI 6.0 specification.
374
375Debugger: Enhanced the output of the Debug ASL object for references
376produced by the Index operator. For Buffers and strings, only output the
377actual byte pointed to by the index. For packages, only print the single
378package element decoded by the index. Previously, the entire
379buffer/string/package was emitted.
380
381iASL/Table-compiler: Fixed a regression where the "generic" data types
382were no longer recognized, causing errors.
383
384
385----------------------------------------
38615 May 2015. Summary of changes for version 20150515:
896f2e3a
SW
387
388This release implements most of ACPI 6.0 as described below.
389
3901) ACPICA kernel-resident subsystem:
391
392Implemented runtime argument checking and return value checking for all
393new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
394_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
395
396Example Code and Data Size: These are the sizes for the OS-independent
397acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
398debug version of the code includes the debug output trace mechanism and
399has a much larger code and data size.
400
401 Current Release:
402 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
403 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
404 Previous Release:
405 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
406 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
407
408
4092) iASL Compiler/Disassembler and Tools:
410
411iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
412names (argument count validation and return value typechecking.)
413
414iASL disassembler and table compiler: implemented support for all new
415ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
416
417iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
418tables: FADT, MADT.
419
420iASL preprocessor: Added a new directive to enable inclusion of binary
25ca8c79 421blobs into ASL code. The new directive is #includebuffer. It takes a
896f2e3a
SW
422binary file as input and emits a named ascii buffer object into the ASL
423code.
424
425AcpiHelp: Added support for all new ACPI 6.0 predefined names.
426
427AcpiHelp: Added a new option, -d, to display all iASL preprocessor
428directives.
429
430AcpiHelp: Added a new option, -t, to display all known/supported ACPI
431tables.
432
48da03ce
SW
433----------------------------------------
43410 April 2015. Summary of changes for version 20150410:
435
436Reverted a change introduced in version 20150408 that caused
437a regression in the disassembler where incorrect operator
438symbols could be emitted.
439
fe7b5cb4 440----------------------------------------
5943f66c 44108 April 2015. Summary of changes for version 20150408:
fe7b5cb4 442
5943f66c
SW
443
4441) ACPICA kernel-resident subsystem:
445
446Permanently set the return value for the _REV predefined name. It now
447returns 2 (was 5). This matches other ACPI implementations. _REV will be
448deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
449for ACPI 2.0 and later. It should never be used to differentiate or
450identify operating systems.
451
452Added the "Windows 2015" string to the _OSI support. ACPICA will now
453return TRUE to a query with this string.
454
455Fixed several issues with the local version of the printf function.
456
457Added the C99 compiler option (-std=c99) to the Unix makefiles.
458
459 Current Release:
460 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total
461 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total
462 Previous Release:
463 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
464 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
465
466
4672) iASL Compiler/Disassembler and Tools:
468
469iASL: Implemented an enhancement to the constant folding feature to
470transform the parse tree to a simple Store operation whenever possible:
471 Add (2, 3, X) ==> is converted to: Store (5, X)
472 X = 2 + 3 ==> is converted to: Store (5, X)
473
474Updated support for the SLIC table (Software Licensing Description Table)
475in both the Data Table compiler and the disassembler. The SLIC table
476support now conforms to "Microsoft Software Licensing Tables (SLIC and
477MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
478following the ACPI header is now defined to be "Proprietary Data", and as
479such, can only be entered or displayed as a hex data block.
480
481Implemented full support for the MSDM table as described in the document
482above. Note: The format of MSDM is similar to SLIC. Any MSDM data
483following the ACPI header is defined to be "Proprietary Data", and can
484only be entered or displayed as a hex data block.
485
486Implemented the -Pn option for the iASL Table Compiler (was only
487implemented for the ASL compiler). This option disables the iASL
488preprocessor.
489
490Disassembler: For disassembly of Data Tables, added a comment field
491around the Ascii equivalent data that is emitted as part of the "Raw
492Table Data" block. This prevents the iASL Preprocessor from possible
493confusion if/when the table is compiled.
494
495Disassembler: Added an option (-df) to force the disassembler to assume
496that the table being disassembled contains valid AML. This feature is
497useful for disassembling AML files that contain ACPI signatures other
498than DSDT or SSDT (such as OEMx or other signatures).
499
500Changes for the EFI version of the tools:
5011) Fixed a build error/issue
5022) Fixed a cast warning
503
504iASL: Fixed a path issue with the __FILE__ operator by making the
505directory prefix optional within the internal SplitInputFilename
506function.
507
508Debugger: Removed some unused global variables.
509
510Tests: Updated the makefile for proper generation of the AAPITS suite.
511
512----------------------------------------
51304 February 2015. Summary of changes for version 20150204:
fe7b5cb4
SW
514
515ACPICA kernel-resident subsystem:
516
517Updated all ACPICA copyrights and signons to 2014. Added the 2014
518copyright to all module headers and signons, including the standard Linux
519header. This affects virtually every file in the ACPICA core subsystem,
520iASL compiler, all ACPICA utilities, and the test suites.
521
522Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
523A raw gpe handling mechanism was created to allow better handling of GPE
524storms that aren't easily managed by the normal handler. The raw handler
525allows disabling/renabling of the the GPE so that interrupt storms can be
5943f66c
SW
526avoided in cases where events cannot be timely serviced. In this
527scenario, handlers should use the AcpiSetGpe() API to disable/enable the
528GPE. This API will leave the reference counts undisturbed, thereby
529preventing unintentional clearing of the GPE when the intent in only to
530temporarily disable it. Raw handlers allow enabling and disabling of a
531GPE by removing GPE register locking. As such, raw handlers much provide
532their own locks while using GPE API's to protect access to GPE data
533structures.
fe7b5cb4
SW
534Lv Zheng
535
536Events: Always modify GPE registers under the GPE lock.
537Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
538values. Reported as bug by joe.liu@apple.com.
539
5943f66c
SW
540Unix makefiles: Separate option to disable optimizations and
541_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
542NOOPT disable option and creates a separate flag (NOFORTIFY) for this
543purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
544errors when building ACPICA. This allows disabling the option without
545also having to disable optimazations.
fe7b5cb4
SW
546David Box
547
548 Current Release:
549 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
550 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total
551
2e2672b8
SW
552----------------------------------------
55307 November 2014. Summary of changes for version 20141107:
554
555This release is available at https://acpica.org/downloads
556
557This release introduces and implements language extensions to ASL that
558provide support for symbolic ("C-style") operators and expressions. These
559language extensions are known collectively as ASL+.
560
561
5621) iASL Compiler/Disassembler and Tools:
563
564Disassembler: Fixed a problem with disassembly of the UartSerialBus
565macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
566Box.
567
568Disassembler: Fixed the Unicode macro support to add escape sequences.
569All non-printable ASCII values are emitted as escape sequences, as well
570as the standard escapes for quote and backslash. Ensures that the
571disassembled macro can be correctly recompiled.
572
573iASL: Added Printf/Fprintf macros for formatted output. These macros are
574translated to existing AML Concatenate and Store operations. Printf
575writes to the ASL Debug object. Fprintf allows the specification of an
576ASL name as the target. Only a single format specifier is required, %o,
577since the AML interpreter dynamically converts objects to the required
578type. David E. Box.
579
580 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
581 (Concatenate (Concatenate (Concatenate ("", Arg0),
582 ": Unexpected value for "), Arg1), ", "), Arg2),
583 " at line "), Arg3), Debug)
584
585 (new) Printf ("%o: Unexpected value for %o, %o at line %o",
586 Arg0, Arg1, Arg2, Arg3)
587
588 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
589 ("", Arg1), ": "), Arg0), " Successful"), STR1)
590
591 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
592
593iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
594ASL parse tree before the AML code is generated. This allows blocks of
595ASL code to be removed in order to help locate and identify problem
596devices and/or code. David E. Box.
597
598AcpiExec: Added support (-fi) for an optional namespace object
599initialization file. This file specifies initial values for namespace
600objects as necessary for debugging and testing different ASL code paths
601that may be taken as a result of BIOS options.
602
603
6042) Overview of symbolic operator support for ASL (ASL+)
605-------------------------------------------------------
606
607As an extension to the ASL language, iASL implements support for symbolic
608(C-style) operators for math and logical expressions. This can greatly
609simplify ASL code as well as improve both readability and
610maintainability. These language extensions can exist concurrently with
611all legacy ASL code and expressions.
612
613The symbolic extensions are 100% compatible with existing AML
614interpreters, since no new AML opcodes are created. To implement the
615extensions, the iASL compiler transforms the symbolic expressions into
616the legacy ASL/AML equivalents at compile time.
617
618Full symbolic expressions are supported, along with the standard C
619precedence and associativity rules.
620
621Full disassembler support for the symbolic expressions is provided, and
622creates an automatic migration path for existing ASL code to ASL+ code
623via the disassembly process. By default, the disassembler now emits ASL+
624code with symbolic expressions. An option (-dl) is provided to force the
625disassembler to emit legacy ASL code if desired.
626
627Below is the complete list of the currently supported symbolic operators
628with examples. See the iASL User Guide for additional information.
629
630
631ASL+ Syntax Legacy ASL Equivalent
632----------- ---------------------
633
634 // Math operators
635
636Z = X + Y Add (X, Y, Z)
637Z = X - Y Subtract (X, Y, Z)
638Z = X * Y Multiply (X, Y, Z)
639Z = X / Y Divide (X, Y, , Z)
640Z = X % Y Mod (X, Y, Z)
641Z = X << Y ShiftLeft (X, Y, Z)
642Z = X >> Y ShiftRight (X, Y, Z)
643Z = X & Y And (X, Y, Z)
644Z = X | Y Or (X, Y, Z)
645Z = X ^ Y Xor (X, Y, Z)
646Z = ~X Not (X, Z)
647X++ Increment (X)
648X-- Decrement (X)
649
650 // Logical operators
651
652(X == Y) LEqual (X, Y)
653(X != Y) LNotEqual (X, Y)
654(X < Y) LLess (X, Y)
655(X > Y) LGreater (X, Y)
656(X <= Y) LLessEqual (X, Y)
657(X >= Y) LGreaterEqual (X, Y)
658(X && Y) LAnd (X, Y)
659(X || Y) LOr (X, Y)
660(!X) LNot (X)
661
662 // Assignment and compound assignment operations
663
664X = Y Store (Y, X)
665X += Y Add (X, Y, X)
666X -= Y Subtract (X, Y, X)
667X *= Y Multiply (X, Y, X)
668X /= Y Divide (X, Y, , X)
669X %= Y Mod (X, Y, X)
670X <<= Y ShiftLeft (X, Y, X)
671X >>= Y ShiftRight (X, Y, X)
672X &= Y And (X, Y, X)
673X |= Y Or (X, Y, X)
674X ^= Y Xor (X, Y, X)
675
676
6773) ASL+ Examples:
678-----------------
679
680Legacy ASL:
681 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
682 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
6830x03FB),
684 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
685 {
686 And (MEMB, 0xFFFFFFF0, SRMB)
687 Store (MEMB, Local2)
688 Store (PDBM, Local1)
689 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
690 Store (SRMB, MEMB)
691 Or (PDBM, 0x02, PDBM)
692 }
693
694ASL+ version:
695 If (((R510 & 0x03FB) == 0x02E0) ||
696 ((R520 & 0x03FB) == 0x02E0) ||
697 ((R530 & 0x03FB) == 0x02E0) ||
698 ((R540 & 0x03FB) == 0x02E0))
699 {
700 SRMB = (MEMB & 0xFFFFFFF0)
701 Local2 = MEMB
702 Local1 = PDBM
703 PDBM &= 0xFFFFFFFFFFFFFFF9
704 MEMB = SRMB
705 PDBM |= 0x02
706 }
707
708Legacy ASL:
709 Store (0x1234, Local1)
710 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
711 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
712 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
713 Store (Index (PKG1, 0x03), Local6)
714 Store (Add (Local3, Local2), Debug)
715 Add (Local1, 0x0F, Local2)
716 Add (Local1, Multiply (Local2, Local3), Local2)
717 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
718
719ASL+ version:
720 Local1 = 0x1234
721 Local3 = (((Local1 + TEST) + 0x20) * Local2)
722 Local3 = (Local2 * ((Local1 + TEST) + 0x20))
723 Local3 = (Local1 + (TEST + (0x20 * Local2)))
724 Local6 = Index (PKG1, 0x03)
725 Debug = (Local3 + Local2)
726 Local2 = (Local1 + 0x0F)
727 Local2 = (Local1 + (Local2 * Local3))
728 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
729
730
731----------------------------------------
73226 September 2014. Summary of changes for version 20140926:
733
7341) ACPICA kernel-resident subsystem:
735
736Updated the GPIO operation region handler interface (GeneralPurposeIo).
737In order to support GPIO Connection objects with multiple pins, along
738with the related Field objects, the following changes to the interface
739have been made: The Address is now defined to be the offset in bits of
740the field unit from the previous invocation of a Connection. It can be
741viewed as a "Pin Number Index" into the connection resource descriptor.
742The BitWidth is the exact bit width of the field. It is usually one bit,
743but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
744additional information and examples.
745
746GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
747corresponding _Lxx/_Exx methods are disabled (they may have been enabled
748by the firmware), so that they cannot fire until they are enabled via
749AcpiUpdateAllGpes. Rafael J. Wysocki.
750
751Added a new return flag for the Event/GPE status interfaces --
752AcpiGetEventStatus and AcpiGetGpeStatus. The new
753ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
754GPE currently has a handler associated with it, and can thus actually
755affect the system. Lv Zheng.
756
757Example Code and Data Size: These are the sizes for the OS-independent
758acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
759debug version of the code includes the debug output trace mechanism and
760has a much larger code and data size.
761
762 Current Release:
763 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
764 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
765 Previous Release:
766 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
767 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
768
7692) iASL Compiler/Disassembler and Tools:
770
771iASL: Fixed a memory allocation/free regression introduced in 20140828
772that could cause the compiler to crash. This was introduced inadvertently
773during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
7741113.
775
776iASL: Removed two error messages that have been found to create false
777positives, until they can be fixed and fully validated (ACPICA BZ 1112):
7781) Illegal forward reference within a method
7792) Illegal reference across two methods
780
781iASL: Implemented a new option (-lm) to create a hardware mapping file
782that summarizes all GPIO, I2C, SPI, and UART connections. This option
783works for both the compiler and disassembler. See the iASL compiler user
784guide for additional information and examples (section 6.4.6).
785
786AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
787version 2. This corrects the AE_BAD_HEADER exception seen on systems with
788a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
789
790AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
791unless STDIN is actually a terminal. Assists with batch-mode processing.
792ACPICA BZ 1114.
793
794Disassembler/AcpiHelp: Added another large group of recognized _HID
795values.
796
797
5f39c7e7 798----------------------------------------
79eafdd7 79928 August 2014. Summary of changes for version 20140828:
066b6da2 800
79eafdd7
SW
8011) ACPICA kernel-resident subsystem:
802
803Fixed a problem related to the internal use of the Timer() operator where
804a 64-bit divide could cause an attempted link to a double-precision math
805library. This divide is not actually necessary, so the code was
806restructured to eliminate it. Lv Zheng.
807
808ACPI 5.1: Added support for the runtime validation of the _DSD package
809(similar to the iASL support).
810
811ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
812SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
813
814Example Code and Data Size: These are the sizes for the OS-independent
815acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
816debug version of the code includes the debug output trace mechanism and
817has a much larger code and data size.
818
819 Current Release:
820 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
821 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
822 Previous Release:
823 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1
824 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
825
8262) iASL Compiler/Disassembler and Tools:
827
828AcpiExec: Fixed a problem on unix systems where the original terminal
829state was not always properly restored upon exit. Seen when using the -v
830option. ACPICA BZ 1104.
831
832iASL: Fixed a problem with the validation of the ranges/length within the
833Memory24 resource descriptor. There was a boundary condition when the
834range was equal to the (length -1) caused by the fact that these values
835are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
836
2e2672b8
SW
837Disassembler: Fixed a problem with the GpioInt descriptor interrupt
838polarity
839flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
840is
79eafdd7 841now supported properly.
066b6da2 842
79eafdd7
SW
843ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
844in the disassembler, data table compiler, and table template generator.
845
846iASL: Added a requirement for Device() objects that one of either a _HID
847or _ADR must exist within the scope of a Device, as per the ACPI
848specification. Remove a similar requirement that was incorrectly in place
849for the _DSD object.
850
851iASL: Added error detection for illegal named references within control
852methods that would cause runtime failures. Now trapped as errors are: 1)
853References to objects within a non-parent control method. 2) Forward
854references (within a method) -- for control methods, AML interpreters use
855a one-pass parse of control methods. ACPICA BZ 1008.
856
857iASL: Added error checking for dependencies related to the _PSx power
858methods. ACPICA BZ 1029.
8591) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
860_PS3.
8612) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
862scope.
863
864iASL and table compiler: Cleanup miscellaneous memory leaks by fully
865deploying the existing object and string caches and adding new caches for
866the table compiler.
867
868iASL: Split the huge parser source file into multiple subfiles to improve
869manageability. Generation now requires the M4 macro preprocessor, which
870is part of the Bison distribution on both unix and windows platforms.
871
872AcpiSrc: Fixed and removed all extraneous warnings generated during
873entire ACPICA source code scan and/or conversion.
874
875
876----------------------------------------
877
87824 July 2014. Summary of changes for version 20140724:
066b6da2
SW
879
880The ACPI 5.1 specification has been released and is available at:
881http://uefi.org/specs/access
882
883
8840) ACPI 5.1 support in ACPICA:
885
886ACPI 5.1 is fully supported in ACPICA as of this release.
887
888New predefined names. Support includes iASL and runtime ACPICA
889validation.
890 _CCA (Cache Coherency Attribute).
891 _DSD (Device-Specific Data). David Box.
892
893Modifications to existing ACPI tables. Support includes headers, iASL
894Data Table compiler, disassembler, and the template generator.
895 FADT - New fields and flags. Graeme Gregory.
896 GTDT - One new subtable and new fields. Tomasz Nowicki.
897 MADT - Two new subtables. Tomasz Nowicki.
898 PCCT - One new subtable.
899
900Miscellaneous.
901 New notification type for System Resource Affinity change events.
902
903
9041) ACPICA kernel-resident subsystem:
905
906Fixed a regression introduced in 20140627 where a fault can happen during
907the deletion of Alias AML namespace objects. The problem affected both
908the core ACPICA and the ACPICA tools including iASL and AcpiExec.
909
910Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
911simple mechanism to enable wake GPEs that have no associated handler or
912control method. Rafael Wysocki.
913
914Updated the AcpiEnableGpe interface to disallow the enable if there is no
915handler or control method associated with the particular GPE. This will
916help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
917
918Updated GPE handling and dispatch by disabling the GPE before clearing
919the status bit for edge-triggered GPEs. Lv Zheng.
920
921Added Timer() support to the AML Debug object. The current timer value is
922now displayed with each invocation of (Store to) the debug object to
923enable simple generation of execution times for AML code (method
924execution for example.) ACPICA BZ 1093.
925
926Example Code and Data Size: These are the sizes for the OS-independent
927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
928debug version of the code includes the debug output trace mechanism and
929has a much larger code and data size.
930
931 Current Release:
932 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total
933 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
934 Previous Release:
935 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
936 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
937
938
9392) iASL Compiler/Disassembler and Tools:
940
941Fixed an issue with the recently added local printf implementation,
942concerning width/precision specifiers that could cause incorrect output.
943Lv Zheng. ACPICA BZ 1094.
944
945Disassembler: Added support to detect buffers that contain UUIDs and
946disassemble them to an invocation of the ToUUID operator. Also emit
947commented descriptions of known ACPI-related UUIDs.
948
949AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
950-u. Adds three new files.
951
952iASL: Update table compiler and disassembler for DMAR table changes that
953were introduced in September 2013. With assistance by David Woodhouse.
954
955----------------------------------------
5f39c7e7
SW
95627 June 2014. Summary of changes for version 20140627:
957
9581) ACPICA kernel-resident subsystem:
959
960Formatted Output: Implemented local versions of standard formatted output
961utilities such as printf, etc. Over time, it has been discovered that
962there are in fact many portability issues with printf, and the addition
963of this feature will fix/prevent these issues once and for all. Some
964known issues are summarized below:
965
9661) Output of 64-bit values is not portable. For example, UINT64 is %ull
967for the Linux kernel and is %uI64 for some MSVC versions.
9682) Invoking printf consistently in a manner that is portable across both
96932-bit and 64-bit platforms is difficult at best in many situations.
9703) The output format for pointers varies from system to system (leading
971zeros especially), and leads to inconsistent output from ACPICA across
972platforms.
9734) Certain platform-specific printf formats may conflict with ACPICA use.
9745) If there is no local C library available, ACPICA now has local support
975for printf.
976
977-- To address these printf issues in a complete manner, ACPICA now
978directly implements a small subset of printf format specifiers, only
979those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
980
981Implemented support for ACPICA generation within the EFI environment.
982Initially, the AcpiDump utility is supported in the UEFI shell
983environment. Lv Zheng.
984
985Added a new external interface, AcpiLogError, to improve ACPICA
986portability. This allows the host to redirect error messages from the
987ACPICA utilities. Lv Zheng.
988
989Added and deployed new OSL file I/O interfaces to improve ACPICA
990portability:
991 AcpiOsOpenFile
992 AcpiOsCloseFile
993 AcpiOsReadFile
994 AcpiOsWriteFile
995 AcpiOsGetFileOffset
996 AcpiOsSetFileOffset
997There are C library implementations of these functions in the new file
998service_layers/oslibcfs.c -- however, the functions can be implemented by
999the local host in any way necessary. Lv Zheng.
1000
1001Implemented a mechanism to disable/enable ACPI table checksum validation
1002at runtime. This can be useful when loading tables very early during OS
1003initialization when it may not be possible to map the entire table in
1004order to compute the checksum. Lv Zheng.
1005
1006Fixed a buffer allocation issue for the Generic Serial Bus support.
1007Originally, a fixed buffer length was used. This change allows for
1008variable-length buffers based upon the protocol indicated by the field
1009access attributes. Reported by Lan Tianyu. Lv Zheng.
1010
1011Fixed a problem where an object detached from a namespace node was not
1012properly terminated/cleared and could cause a circular list problem if
1013reattached. ACPICA BZ 1063. David Box.
1014
1015Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
1016
1017Fixed a possible memory leak in an error return path within the function
1018AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
1019
1020Example Code and Data Size: These are the sizes for the OS-independent
1021acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1022debug version of the code includes the debug output trace mechanism and
1023has a much larger code and data size.
1024
1025 Current Release:
1026 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
1027 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
1028 Previous Release:
1029 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
1030 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
1031
1032
10332) iASL Compiler/Disassembler and Tools:
1034
1035Disassembler: Add dump of ASCII equivalent text within a comment at the
1036end of each line of the output for the Buffer() ASL operator.
1037
1038AcpiDump: Miscellaneous changes:
1039 Fixed repetitive table dump in -n mode.
1040 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
1041the ACPI 2.0 GUID fails.
1042
1043iASL: Fixed a problem where the compiler could fault if incorrectly given
1044an acpidump output file as input. ACPICA BZ 1088. David Box.
1045
1046AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
1047they are invoked without any arguments.
1048
1049Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
10501086. Colin Ian King.
1051
1052Disassembler: Cleaned up a block of code that extracts a parent Op
1053object. Added a comment that explains that the parent is guaranteed to be
1054valid in this case. ACPICA BZ 1069.
1055
9e1c0880
SW
1056----------------------------------------
105724 April 2014. Summary of changes for version 20140424:
1058
10591) ACPICA kernel-resident subsystem:
1060
1061Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
1062Some of these tables are known to contain a trailing NULL entry. Lv
1063Zheng.
1064
1065Removed an extraneous error message for the case where there are a large
1066number of system GPEs (> 124). This was the "32-bit FADT register is too
1067long to convert to GAS struct" message, which is irrelevant for GPEs
1068since the GPEx_BLK_LEN fields of the FADT are always used instead of the
1069(limited capacity) GAS bit length. Also, several changes to ensure proper
1070support for GPE numbers > 255, where some "GPE number" fields were 8-bits
1071internally.
1072
1073Implemented and deployed additional configuration support for the public
1074ACPICA external interfaces. Entire classes of interfaces can now be
1075easily modified or configured out, replaced by stubbed inline functions
1076by default. Lv Zheng.
1077
1078Moved all public ACPICA runtime configuration globals to the public
1079ACPICA external interface file for convenience. Also, removed some
1080obsolete/unused globals. See the file acpixf.h. Lv Zheng.
1081
1082Documentation: Added a new section to the ACPICA reference describing the
1083maximum number of GPEs that can be supported by the FADT-defined GPEs in
1084block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
1085reference.
1086
1087Example Code and Data Size: These are the sizes for the OS-independent
1088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1089debug version of the code includes the debug output trace mechanism and
1090has a much larger code and data size.
1091
1092 Current Release:
1093 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
1094 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
1095 Previous Release:
1096 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
1097 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
1098
1099
11002) iASL Compiler/Disassembler and Tools:
1101
1102iASL and disassembler: Add full support for the LPIT table (Low Power
1103Idle Table). Includes support in the disassembler, data table compiler,
1104and template generator.
1105
1106AcpiDump utility:
11071) Add option to force the use of the RSDT (over the XSDT).
11082) Improve validation of the RSDP signature (use 8 chars instead of 4).
1109
1110iASL: Add check for predefined packages that are too large. For
1111predefined names that contain subpackages, check if each subpackage is
1112too large. (Check for too small already exists.)
1113
1114Debugger: Updated the GPE command (which simulates a GPE by executing the
1115GPE code paths in ACPICA). The GPE device is now optional, and defaults
1116to the GPE 0/1 FADT-defined blocks.
1117
1118Unix application OSL: Update line-editing support. Add additional error
1119checking and take care not to reset terminal attributes on exit if they
1120were never set. This should help guarantee that the terminal is always
1121left in the previous state on program exit.
1122
d4972a9c
SW
1123----------------------------------------
112425 March 2014. Summary of changes for version 20140325:
1125
11261) ACPICA kernel-resident subsystem:
1127
1128Updated the auto-serialize feature for control methods. This feature
1129automatically serializes all methods that create named objects in order
1130to prevent runtime errors. The update adds support to ignore the
1131currently executing AML SyncLevel when invoking such a method, in order
1132to prevent disruption of any existing SyncLevel priorities that may exist
1133in the AML code. Although the use of SyncLevels is relatively rare, this
1134change fixes a regression where an AE_AML_MUTEX_ORDER exception can
1135appear on some machines starting with the 20140214 release.
1136
1137Added a new external interface to allow the host to install ACPI tables
1138very early, before the namespace is even created. AcpiInstallTable gives
1139the host additional flexibility for ACPI table management. Tables can be
1140installed directly by the host as if they had originally appeared in the
1141XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
1142(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
1143with additional internal restructuring and cleanup. See the ACPICA
1144Reference for interface details. Lv Zheng.
1145
1146Added validation of the checksum for all incoming dynamically loaded
1147tables (via external interfaces or via AML Load/LoadTable operators). Lv
1148Zheng.
1149
1150Updated the use of the AcpiOsWaitEventsComplete interface during Notify
1151and GPE handler removal. Restructured calls to eliminate possible race
1152conditions. Lv Zheng.
1153
1154Added a warning for the use/execution of the ASL/AML Unload (table)
1155operator. This will help detect and identify machines that use this
1156operator if and when it is ever used. This operator has never been seen
1157in the field and the usage model and possible side-effects of the drastic
1158runtime action of a full table removal are unknown.
1159
1160Reverted the use of #pragma push/pop which was introduced in the 20140214
1161release. It appears that push and pop are not implemented by enough
1162compilers to make the use of this feature feasible for ACPICA at this
1163time. However, these operators may be deployed in a future ACPICA
1164release.
1165
1166Added the missing EXPORT_SYMBOL macros for the install and remove SCI
1167handler interfaces.
1168
1169Source code generation:
11701) Disabled the use of the "strchr" macro for the gcc-specific
1171generation. For some versions of gcc, this macro can periodically expose
1172a compiler bug which in turn causes compile-time error(s).
11732) Added support for PPC64 compilation. Colin Ian King.
1174
1175Example Code and Data Size: These are the sizes for the OS-independent
1176acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1177debug version of the code includes the debug output trace mechanism and
1178has a much larger code and data size.
1179
1180 Current Release:
1181 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
1182 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
1183 Previous Release:
1184 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
1185 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
1186
1187
11882) iASL Compiler/Disassembler and Tools:
1189
1190Disassembler: Added several new features to improve the readability of
1191the resulting ASL code. Extra information is emitted within comment
1192fields in the ASL code:
11931) Known _HID/_CID values are decoded to descriptive text.
11942) Standard values for the Notify() operator are decoded to descriptive
1195text.
11963) Target operands are expanded to full pathnames (in a comment) when
1197possible.
1198
1199Disassembler: Miscellaneous updates for extern() handling:
12001) Abort compiler if file specified by -fe option does not exist.
12012) Silence unnecessary warnings about argument count mismatches.
12023) Update warning messages concerning unresolved method externals.
12034) Emit "UnknownObj" keyword for externals whose type cannot be
1204determined.
1205
1206AcpiHelp utility:
12071) Added the -a option to display both the ASL syntax and the AML
1208encoding for an input ASL operator. This effectively displays all known
1209information about an ASL operator with one AcpiHelp invocation.
12102) Added substring match support (similar to a wildcard) for the -i
1211(_HID/PNP IDs) option.
1212
1213iASL/Disassembler: Since this tool does not yet support execution on big-
1214endian machines, added detection of endianness and an error message if
1215execution is attempted on big-endian. Support for big-endian within iASL
1216is a feature that is on the ACPICA to-be-done list.
1217
1218AcpiBin utility:
12191) Remove option to extract binary files from an acpidump; this function
1220is made obsolete by the AcpiXtract utility.
12212) General cleanup of open files and allocated buffers.
1222
6a0135c2
SW
1223----------------------------------------
122414 February 2014. Summary of changes for version 20140214:
1225
12261) ACPICA kernel-resident subsystem:
1227
1228Implemented a new mechanism to proactively prevent problems with ill-
1229behaved reentrant control methods that create named ACPI objects. This
1230behavior is illegal as per the ACPI specification, but is nonetheless
1231frequently seen in the field. Previously, this could lead to an
1232AE_ALREADY_EXISTS exception if the method was actually entered by more
1233than one thread. This new mechanism detects such methods at table load
1234time and marks them "serialized" to prevent reentrancy. A new global
1235option, AcpiGbl_AutoSerializeMethods, has been added to disable this
1236feature if desired. This mechanism and global option obsoletes and
1237supersedes the previous AcpiGbl_SerializeAllMethods option.
1238
1239Added the "Windows 2013" string to the _OSI support. ACPICA will now
1240respond TRUE to _OSI queries with this string. It is the stated policy of
1241ACPICA to add new strings to the _OSI support as soon as possible after
1242they are defined. See the full ACPICA _OSI policy which has been added to
1243the utilities/utosi.c file.
1244
1245Hardened/updated the _PRT return value auto-repair code:
12461) Do not abort the repair on a single subpackage failure, continue to
1247check all subpackages.
12482) Add check for the minimum subpackage length (4).
12493) Properly handle extraneous NULL package elements.
1250
1251Added support to avoid the possibility of infinite loops when traversing
1252object linked lists. Never allow an infinite loop, even in the face of
1253corrupted object lists.
1254
1255ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
1256pack(pop) directives to ensure that the ACPICA headers are independent of
1257compiler settings or other host headers.
1258
1259Example Code and Data Size: These are the sizes for the OS-independent
1260acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1261debug version of the code includes the debug output trace mechanism and
1262has a much larger code and data size.
1263
1264 Current 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 Previous Release:
1268 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
1269 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
1270
1271
12722) iASL Compiler/Disassembler and Tools:
1273
1274iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
1275first reserved field was incorrectly forced to have a value of zero. This
1276change correctly forces the field to have a value of one. ACPICA BZ 1081.
1277
1278Debugger: Added missing support for the "Extra" and "Data" subobjects
1279when displaying object data.
1280
1281Debugger: Added support to display entire object linked lists when
1282displaying object data.
1283
1284iASL: Removed the obsolete -g option to obtain ACPI tables from the
1285Windows registry. This feature has been superseded by the acpidump
1286utility.
1287
20294b7e
SW
1288----------------------------------------
128914 January 2014. Summary of changes for version 20140114:
1290
12911) ACPICA kernel-resident subsystem:
1292
1293Updated all ACPICA copyrights and signons to 2014. Added the 2014
1294copyright to all module headers and signons, including the standard Linux
1295header. This affects virtually every file in the ACPICA core subsystem,
1296iASL compiler, all ACPICA utilities, and the test suites.
1297
1298Improved parameter validation for AcpiInstallGpeBlock. Added the
1299following checks:
13001) The incoming device handle refers to type ACPI_TYPE_DEVICE.
13012) There is not already a GPE block attached to the device.
1302Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
1303device.
1304
1305Correctly support "references" in the ACPI_OBJECT. This change fixes the
1306support to allow references (namespace nodes) to be passed as arguments
1307to control methods via the evaluate object interface. This is probably
1308most useful for testing purposes, however.
1309
1310Improved support for 32/64 bit physical addresses in printf()-like
1311output. This change improves the support for physical addresses in printf
1312debug statements and other output on both 32-bit and 64-bit hosts. It
1313consistently outputs the appropriate number of bytes for each host. The
1314%p specifier is unsatisfactory since it does not emit uniform output on
1315all hosts/clib implementations (on some, leading zeros are not supported,
1316leading to difficult-to-read output).
1317
1318Example Code and Data Size: These are the sizes for the OS-independent
1319acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1320debug version of the code includes the debug output trace mechanism and
1321has a much larger code and data size.
1322
1323 Current Release:
1324 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
1325 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
1326 Previous Release:
1327 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
1328 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
1329
1330
13312) iASL Compiler/Disassembler and Tools:
1332
1333iASL: Fix a possible fault when using the Connection() operator. Fixes a
1334problem if the parent Field definition for the Connection operator refers
1335to an operation region that does not exist. ACPICA BZ 1064.
1336
1337AcpiExec: Load of local test tables is now optional. The utility has the
1338capability to load some various tables to test features of ACPICA.
1339However, there are enough of them that the output of the utility became
1340confusing. With this change, only the required local tables are displayed
1341(RSDP, XSDT, etc.) along with the actual tables loaded via the command
1342line specification. This makes the default output simler and easier to
1343understand. The -el command line option restores the original behavior
1344for testing purposes.
1345
1346AcpiExec: Added support for overlapping operation regions. This change
1347expands the simulation of operation regions by supporting regions that
1348overlap within the given address space. Supports SystemMemory and
1349SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
1350
1351AcpiExec: Added region handler support for PCI_Config and EC spaces. This
1352allows AcpiExec to simulate these address spaces, similar to the current
1353support for SystemMemory and SystemIO.
1354
1355Debugger: Added new command to read/write/compare all namespace objects.
1356The command "test objects" will exercise the entire namespace by writing
1357new values to each data object, and ensuring that the write was
1358successful. The original value is then restored and verified.
1359
1360Debugger: Added the "test predefined" command. This change makes this
1361test public and puts it under the new "test" command. The test executes
1362each and every predefined name within the current namespace.
1363
0d02842f
SW
1364----------------------------------------
136518 December 2013. Summary of changes for version 20131218:
1366
1367Global note: The ACPI 5.0A specification was released this month. There
1368are no changes needed for ACPICA since this release of ACPI is an
1369errata/clarification release. The specification is available at
1370acpi.info.
1371
1372
13731) ACPICA kernel-resident subsystem:
1374
1375Added validation of the XSDT root table if it is present. Some older
1376platforms contain an XSDT that is ill-formed or otherwise invalid (such
1377as containing some or all entries that are NULL pointers). This change
1378adds a new function to validate the XSDT before actually using it. If the
1379XSDT is found to be invalid, ACPICA will now automatically fall back to
1380using the RSDT instead. Original implementation by Zhao Yakui. Ported to
1381ACPICA and enhanced by Lv Zheng and Bob Moore.
1382
1383Added a runtime option to ignore the XSDT and force the use of the RSDT.
1384This change adds a runtime option that will force ACPICA to use the RSDT
1385instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
1386requires that an XSDT be used instead of the RSDT, the XSDT has been
1387found to be corrupt or ill-formed on some machines. Lv Zheng.
1388
1389Added a runtime option to favor 32-bit FADT register addresses over the
139064-bit addresses. This change adds an option to favor 32-bit FADT
1391addresses when there is a conflict between the 32-bit and 64-bit versions
1392of the same register. The default behavior is to use the 64-bit version
1393in accordance with the ACPI specification. This can now be overridden via
1394the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
1395
1396During the change above, the internal "Convert FADT" and "Verify FADT"
1397functions have been merged to simplify the code, making it easier to
1398understand and maintain. ACPICA BZ 933.
1399
1400Improve exception reporting and handling for GPE block installation.
1401Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
1402status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
1403
1404Added helper macros to extract bus/segment numbers from the HEST table.
1405This change adds two macros to extract the encoded bus and segment
1406numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
1407Betty Dall <betty.dall@hp.com>
1408
1409Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
1410by ACPICA. It is not a public macro, so it should have no effect on
1411existing OSV code. Lv Zheng.
1412
1413Example Code and Data Size: These are the sizes for the OS-independent
1414acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1415debug version of the code includes the debug output trace mechanism and
1416has a much larger code and data size.
1417
1418 Current Release:
1419 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
1420 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
1421 Previous Release:
1422 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
1423 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
1424
1425
14262) iASL Compiler/Disassembler and Tools:
1427
1428Disassembler: Improved pathname support for emitted External()
1429statements. This change adds full pathname support for external names
1430that have been resolved internally by the inclusion of additional ACPI
1431tables (via the iASL -e option). Without this change, the disassembler
1432can emit multiple externals for the same object, or it become confused
1433when the Scope() operator is used on an external object. Overall, greatly
1434improves the ability to actually recompile the emitted ASL code when
1435objects a referenced across multiple ACPI tables. Reported by Michael
1436Tsirkin (mst@redhat.com).
1437
1438Tests/ASLTS: Updated functional control suite to execute with no errors.
1439David Box. Fixed several errors related to the testing of the interpreter
1440slack mode. Lv Zheng.
1441
1442iASL: Added support to detect names that are declared within a control
1443method, but are unused (these are temporary names that are only valid
1444during the time the method is executing). A remark is issued for these
1445cases. ACPICA BZ 1022.
1446
1447iASL: Added full support for the DBG2 table. Adds full disassembler,
1448table compiler, and template generator support for the DBG2 table (Debug
1449Port 2 table).
1450
1451iASL: Added full support for the PCCT table, update the table definition.
1452Updates the PCCT table definition in the actbl3.h header and adds table
1453compiler and template generator support.
1454
1455iASL: Added an option to emit only error messages (no warnings/remarks).
1456The -ve option will enable only error messages, warnings and remarks are
1457suppressed. This can simplify debugging when only the errors are
1458important, such as when an ACPI table is disassembled and there are many
1459warnings and remarks -- but only the actual errors are of real interest.
1460
1461Example ACPICA code (source/tools/examples): Updated the example code so
1462that it builds to an actual working program, not just example code. Added
1463ACPI tables and execution of an example control method in the DSDT. Added
1464makefile support for Unix generation.
1465
1466----------------------------------------
146715 November 2013. Summary of changes for version 20131115:
1468
1469This release is available at https://acpica.org/downloads
1470
1471
14721) ACPICA kernel-resident subsystem:
1473
1474Resource Manager: Fixed loop termination for the "get AML length"
1475function. The loop previously had an error termination on a NULL resource
1476pointer, which can never happen since the loop simply increments a valid
1477resource pointer. This fix changes the loop to terminate with an error on
1478an invalid end-of-buffer condition. The problem can be seen as an
1479infinite loop by callers to AcpiSetCurrentResources with an invalid or
1480corrupted resource descriptor, or a resource descriptor that is missing
1481an END_TAG descriptor. Reported by Dan Carpenter
1482<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
1483
1484Table unload and ACPICA termination: Delete all attached data objects
1485during namespace node deletion. This fix updates namespace node deletion
1486to delete the entire list of attached objects (attached via
1487AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
14881024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
1489
1490ACPICA termination: Added support to delete all objects attached to the
1491root namespace node. This fix deletes any and all objects that have been
1492attached to the root node via AcpiAttachData. Previously, none of these
1493objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
1494
1495Debug output: Do not emit the function nesting level for the in-kernel
1496build. The nesting level is really only useful during a single-thread
1497execution. Therefore, only enable this output for the AcpiExec utility.
1498Also, only emit the thread ID when executing under AcpiExec (Context
1499switches are still always detected and a message is emitted). ACPICA BZ
1500972.
1501
1502Example Code and Data Size: These are the sizes for the OS-independent
1503acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1504debug version of the code includes the debug output trace mechanism and
1505has a much larger code and data size.
1506
1507 Current Release:
1508 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
1509 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
1510 Previous Release:
1511 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
1512 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
1513
1514
15152) iASL Compiler/Disassembler and Tools:
1516
1517AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
1518correct portable POSIX header for terminal control functions.
1519
1520Disassembler: Fixed control method invocation issues related to the use
1521of the CondRefOf() operator. The problem is seen in the disassembly where
1522control method invocations may not be disassembled properly if the
1523control method name has been used previously as an argument to CondRefOf.
1524The solution is to not attempt to emit an external declaration for the
1525CondRefOf target (it is not necessary in the first place). This prevents
1526disassembler object type confusion. ACPICA BZ 988.
1527
1528Unix Makefiles: Added an option to disable compiler optimizations and the
1529_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
1530with optimizations (reportedly, gcc 4.4 for example). This change adds a
1531command line option for make (NOOPT) that disables all compiler
1532optimizations and the _FORTIFY_SOURCE compiler flag. The default
1533optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
15341034. Lv Zheng, Bob Moore.
1535
1536Tests/ASLTS: Added options to specify individual test cases and modes.
1537This allows testers running aslts.sh to optionally specify individual
1538test modes and test cases. Also added an option to disable the forced
1539generation of the ACPICA tools from source if desired. Lv Zheng.
1540
1541----------------------------------------
154227 September 2013. Summary of changes for version 20130927:
1543
1544This release is available at https://acpica.org/downloads
1545
1546
15471) ACPICA kernel-resident subsystem:
1548
1549Fixed a problem with store operations to reference objects. This change
1550fixes a problem where a Store operation to an ArgX object that contained
1551a
1552reference to a field object did not complete the automatic dereference
1553and
1554then write to the actual field object. Instead, the object type of the
1555field object was inadvertently changed to match the type of the source
1556operand. The new behavior will actually write to the field object (buffer
1557field or field unit), thus matching the correct ACPI-defined behavior.
1558
1559Implemented support to allow the host to redefine individual OSL
1560prototypes. This change enables the host to redefine OSL prototypes found
1561in the acpiosxf.h file. This allows the host to implement OSL interfaces
1562with a macro or inlined function. Further, it allows the host to add any
1563additional required modifiers such as __iomem, __init, __exit, etc., as
1564necessary on a per-interface basis. Enables maximum flexibility for the
1565OSL interfaces. Lv Zheng.
1566
1567Hardcoded the access width for the FADT-defined reset register. The ACPI
1568specification requires the reset register width to be 8 bits. ACPICA now
1569hardcodes the width to 8 and ignores the FADT width value. This provides
1570compatibility with other ACPI implementations that have allowed BIOS code
1571with bad register width values to go unnoticed. Matthew Garett, Bob
1572Moore,
1573Lv Zheng.
1574
1575Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
1576used
1577in the OSL header (acpiosxf). The change modifies the position of this
1578macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
1579build issues if the OSL defines the implementation of the interface to be
1580an inline stub function. Lv Zheng.
1581
1582Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
1583initialization interfaces. This change adds a new macro for the main init
1584and terminate external interfaces in order to support hosts that require
1585additional or different processing for these functions. Changed from
1586ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
1587Zheng, Bob Moore.
1588
1589Cleaned up the memory allocation macros for configurability. In the
1590common
1591case, the ACPI_ALLOCATE and related macros now resolve directly to their
1592respective AcpiOs* OSL interfaces. Two options:
15931) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
1594default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
15952) For AcpiExec (and for debugging), the macros can optionally be
1596resolved
1597to the local ACPICA interfaces that track each allocation (local tracking
1598is used to immediately detect memory leaks).
1599Lv Zheng.
1600
1601Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
1602to predefine this macro to either TRUE or FALSE during the system build.
1603
1604Replaced __FUNCTION_ with __func__ in the gcc-specific header.
1605
1606Example Code and Data Size: These are the sizes for the OS-independent
1607acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1608debug version of the code includes the debug output trace mechanism and
1609has a much larger code and data size.
1610
1611 Current Release:
1612 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
1613 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
1614 Previous Release:
1615 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
1616 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
1617
1618
16192) iASL Compiler/Disassembler and Tools:
1620
1621iASL: Implemented wildcard support for the -e option. This simplifies use
1622when there are many SSDTs that must be included to resolve external
1623method
1624declarations. ACPICA BZ 1041. Example:
1625 iasl -e ssdt*.dat -d dsdt.dat
1626
1627AcpiExec: Add history/line-editing for Unix/Linux systems. This change
1628adds a portable module that implements full history and limited line
1629editing for Unix and Linux systems. It does not use readline() due to
1630portability issues. Instead it uses the POSIX termio interface to put the
1631terminal in raw input mode so that the various special keys can be
1632trapped
1633(such as up/down-arrow for history support and left/right-arrow for line
1634editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
1635
1636AcpiXtract: Add support to handle (ignore) "empty" lines containing only
1637one or more spaces. This provides compatible with early or different
1638versions of the AcpiDump utility. ACPICA BZ 1044.
1639
1640AcpiDump: Do not ignore tables that contain only an ACPI table header.
1641Apparently, some BIOSs create SSDTs that contain an ACPI table header but
1642no other data. This change adds support to dump these tables. Any tables
1643shorter than the length of an ACPI table header remain in error (an error
1644message is emitted). Reported by Yi Li.
1645
1646Debugger: Echo actual command along with the "unknown command" message.
1647
1648----------------------------------------
164923 August 2013. Summary of changes for version 20130823:
1650
16511) ACPICA kernel-resident subsystem:
1652
1653Implemented support for host-installed System Control Interrupt (SCI)
1654handlers. Certain ACPI functionality requires the host to handle raw
1655SCIs. For example, the "SCI Doorbell" that is defined for memory power
1656state support requires the host device driver to handle SCIs to examine
1657if the doorbell has been activated. Multiple SCI handlers can be
1658installed to allow for future expansion. New external interfaces are
1659AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
1660details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
1661
1662Operation region support: Never locally free the handler "context"
1663pointer. This change removes some dangerous code that attempts to free
1664the handler context pointer in some (rare) circumstances. The owner of
1665the handler owns this pointer and the ACPICA code should never touch it.
1666Although not seen to be an issue in any kernel, it did show up as a
1667problem (fault) under AcpiExec. Also, set the internal storage field for
1668the context pointer to zero when the region is deactivated, simply for
1669sanity. David Box. ACPICA BZ 1039.
1670
1671AcpiRead: On error, do not modify the return value target location. If an
1672error happens in the middle of a split 32/32 64-bit I/O operation, do not
1673modify the target of the return value pointer. Makes the code consistent
1674with the rest of ACPICA. Bjorn Helgaas.
1675
1676Example Code and Data Size: These are the sizes for the OS-independent
1677acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1678debug version of the code includes the debug output trace mechanism and
1679has a much larger code and data size.
1680
1681 Current Release:
1682 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
1683 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
1684 Previous Release:
1685 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
1686 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total
1687
1688
16892) iASL Compiler/Disassembler and Tools:
1690
1691AcpiDump: Implemented several new features and fixed some problems:
16921) Added support to dump the RSDP, RSDT, and XSDT tables.
16932) Added support for multiple table instances (SSDT, UEFI).
16943) Added option to dump "customized" (overridden) tables (-c).
16954) Fixed a problem where some table filenames were improperly
1696constructed.
16975) Improved some error messages, removed some unnecessary messages.
1698
1699iASL: Implemented additional support for disassembly of ACPI tables that
1700contain invocations of external control methods. The -fe<file> option
1701allows the import of a file that specifies the external methods along
1702with the required number of arguments for each -- allowing for the
1703correct disassembly of the table. This is a workaround for a limitation
1704of AML code where the disassembler often cannot determine the number of
1705arguments required for an external control method and generates incorrect
1706ASL code. See the iASL reference for details. ACPICA BZ 1030.
1707
1708Debugger: Implemented a new command (paths) that displays the full
1709pathnames (namepaths) and object types of all objects in the namespace.
1710This is an alternative to the namespace command.
1711
1712Debugger: Implemented a new command (sci) that invokes the SCI dispatch
1713mechanism and any installed handlers.
1714
1715iASL: Fixed a possible segfault for "too many parent prefixes" condition.
1716This can occur if there are too many parent prefixes in a namepath (for
1717example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
1718
1719Application OSLs: Set the return value for the PCI read functions. These
1720functions simply return AE_OK, but should set the return value to zero
1721also. This change implements this. ACPICA BZ 1038.
1722
1723Debugger: Prevent possible command line buffer overflow. Increase the
1724size of a couple of the debugger line buffers, and ensure that overflow
1725cannot happen. ACPICA BZ 1037.
1726
1727iASL: Changed to abort immediately on serious errors during the parsing
1728phase. Due to the nature of ASL, there is no point in attempting to
1729compile these types of errors, and they typically end up causing a
1730cascade of hundreds of errors which obscure the original problem.
1731
1732----------------------------------------
173325 July 2013. Summary of changes for version 20130725:
1734
17351) ACPICA kernel-resident subsystem:
1736
1737Fixed a problem with the DerefOf operator where references to FieldUnits
1738and BufferFields incorrectly returned the parent object, not the actual
1739value of the object. After this change, a dereference of a FieldUnit
1740reference results in a read operation on the field to get the value, and
1741likewise, the appropriate BufferField value is extracted from the target
1742buffer.
1743
1744Fixed a problem where the _WAK method could cause a fault under these
1745circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
1746method returned no value. The problem is rarely seen because most kernels
1747run ACPICA in slack mode.
1748
1749For the DerefOf operator, a fatal error now results if an attempt is made
1750to dereference a reference (created by the Index operator) to a NULL
1751package element. Provides compatibility with other ACPI implementations,
1752and this behavior will be added to a future version of the ACPI
1753specification.
1754
1755The ACPI Power Management Timer (defined in the FADT) is now optional.
1756This provides compatibility with other ACPI implementations and will
1757appear in the next version of the ACPI specification. If there is no PM
1758Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
1759zero in the FADT indicates no PM timer.
1760
1761Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
1762allows the host to globally enable/disable all vendor strings, all
1763feature strings, or both. Intended to be primarily used for debugging
1764purposes only. Lv Zheng.
1765
1766Expose the collected _OSI data to the host via a global variable. This
1767data tracks the highest level vendor ID that has been invoked by the BIOS
1768so that the host (and potentially ACPICA itself) can change behaviors
1769based upon the age of the BIOS.
1770
1771Example Code and Data Size: These are the sizes for the OS-independent
1772acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1773debug version of the code includes the debug output trace mechanism and
1774has a much larger code and data size.
1775
1776 Current Release:
1777 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
1778 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
1779 Previous Release:
1780 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
1781 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
1782
1783
17842) iASL Compiler/Disassembler and Tools:
1785
1786iASL: Created the following enhancements for the -so option (create
1787offset table):
17881)Add offsets for the last nameseg in each namepath for every supported
1789object type
17902)Add support for Processor, Device, Thermal Zone, and Scope objects
17913)Add the actual AML opcode for the parent object of every supported
1792object type
17934)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
1794
1795Disassembler: Emit all unresolved external symbols in a single block.
1796These are external references to control methods that could not be
1797resolved, and thus, the disassembler had to make a guess at the number of
1798arguments to parse.
1799
1800iASL: The argument to the -T option (create table template) is now
1801optional. If not specified, the default table is a DSDT, typically the
1802most common case.
1803
1804----------------------------------------
180526 June 2013. Summary of changes for version 20130626:
1806
18071) ACPICA kernel-resident subsystem:
1808
1809Fixed an issue with runtime repair of the _CST object. Null or invalid
1810elements were not always removed properly. Lv Zheng.
1811
1812Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
1813FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
1814the maximum number of GPEs is 1016. Use of multiple GPE block devices
1815makes the system-wide number of GPEs essentially unlimited.
1816
1817Example Code and Data Size: These are the sizes for the OS-independent
1818acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1819debug version of the code includes the debug output trace mechanism and
1820has a much larger code and data size.
1821
1822 Current Release:
1823 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
1824 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
1825 Previous Release:
1826 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
1827 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
1828
1829
18302) iASL Compiler/Disassembler and Tools:
1831
1832Portable AcpiDump: Implemented full support for the Linux and FreeBSD
1833hosts. Now supports Linux, FreeBSD, and Windows.
1834
1835Disassembler: Added some missing types for the HEST and EINJ tables: "Set
1836Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
1837
1838iASL/Preprocessor: Implemented full support for nested
1839#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
1840
1841Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
1842max. The original purpose of this constraint was to limit the amount of
1843debug output. However, the string function in question (UtPrintString) is
1844now used for the disassembler also, where 256 bytes is insufficient.
1845Reported by RehabMan@GitHub.
1846
1847iASL/DataTables: Fixed some problems and issues with compilation of DMAR
1848tables. ACPICA BZ 999. Lv Zheng.
1849
1850iASL: Fixed a couple of error exit issues that could result in a "Could
1851not delete <file>" message during ASL compilation.
1852
1853AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
1854the actual signatures for these tables are "FACP" and "APIC",
1855respectively.
1856
1857AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
1858tables are allowed to have multiple instances.
1859
1860----------------------------------------
186117 May 2013. Summary of changes for version 20130517:
1862
18631) ACPICA kernel-resident subsystem:
1864
1865Fixed a regression introduced in version 20130328 for _INI methods. This
1866change fixes a problem introduced in 20130328 where _INI methods are no
1867longer executed properly because of a memory block that was not
1868initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
1869<tomasz.nowicki@linaro.org>.
1870
1871Fixed a possible problem with the new extended sleep registers in the
1872ACPI
18735.0 FADT. Do not use these registers (even if populated) unless the HW-
1874reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
18751020. Lv Zheng.
1876
1877Implemented return value repair code for _CST predefined objects: Sort
1878the
1879list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
1880
1881Implemented a debug-only option to disable loading of SSDTs from the
1882RSDT/XSDT during ACPICA initialization. This can be useful for debugging
1883ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
1884acglobal.h - ACPICA BZ 1005. Lv Zheng.
1885
1886Fixed some issues in the ACPICA initialization and termination code:
1887Tomasz Nowicki <tomasz.nowicki@linaro.org>
18881) Clear events initialized flag upon event component termination. ACPICA
1889BZ 1013.
18902) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
18913) Delete global lock pending lock during termination. ACPICA BZ 1012.
18924) Clear debug buffer global on termination to prevent possible multiple
1893delete. ACPICA BZ 1010.
1894
1895Standardized all switch() blocks across the entire source base. After
1896many
1897years, different formatting for switch() had crept in. This change makes
1898the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
1899
1900Split some files to enhance ACPICA modularity and configurability:
19011) Split buffer dump routines into utilities/utbuffer.c
19022) Split internal error message routines into utilities/uterror.c
19033) Split table print utilities into tables/tbprint.c
19044) Split iASL command-line option processing into asloptions.c
1905
1906Makefile enhancements:
19071) Support for all new files above.
19082) Abort make on errors from any subcomponent. Chao Guan.
19093) Add build support for Apple Mac OS X. Liang Qi.
1910
1911Example Code and Data Size: These are the sizes for the OS-independent
1912acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1913debug version of the code includes the debug output trace mechanism and
1914has a much larger code and data size.
1915
1916 Current Release:
1917 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
1918 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
1919 Previous Release:
1920 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
1921 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
1922
1923
19242) iASL Compiler/Disassembler and Tools:
1925
1926New utility: Implemented an easily portable version of the acpidump
1927utility to extract ACPI tables from the system (or a file) in an ASCII
1928hex
1929dump format. The top-level code implements the various command line
1930options, file I/O, and table dump routines. To port to a new host, only
1931three functions need to be implemented to get tables -- since this
1932functionality is OS-dependent. See the tools/acpidump/apmain.c module and
1933the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
19341) The Windows version obtains the ACPI tables from the Registry.
19352) The Linux version is under development.
19363) Other hosts - If an OS-dependent module is submitted, it will be
1937distributed with ACPICA.
1938
1939iASL: Fixed a regression for -D preprocessor option (define symbol). A
1940restructuring/change to the initialization sequence caused this option to
1941no longer work properly.
1942
1943iASL: Implemented a mechanism to disable specific warnings and remarks.
1944Adds a new command line option, "-vw <messageid> as well as "#pragma
1945disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
1946
1947iASL: Fix for too-strict package object validation. The package object
1948validation for return values from the predefined names is a bit too
1949strict, it does not allow names references within the package (which will
1950be resolved at runtime.) These types of references cannot be validated at
1951compile time. This change ignores named references within package objects
1952for names that return or define static packages.
1953
1954Debugger: Fixed the 80-character command line limitation for the History
1955command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
1956
1957iASL: Added control method and package support for the -so option
1958(generates AML offset table for BIOS support.)
1959
1960iASL: issue a remark if a non-serialized method creates named objects. If
1961a thread blocks within the method for any reason, and another thread
1962enters the method, the method will fail because an attempt will be made
1963to
1964create the same (named) object twice. In this case, issue a remark that
1965the method should be marked serialized. NOTE: may become a warning later.
1966ACPICA BZ 909.
1967
1968----------------------------------------
196918 April 2013. Summary of changes for version 20130418:
1970
19711) ACPICA kernel-resident subsystem:
1972
1973Fixed a possible buffer overrun during some rare but specific field unit
1974read operations. This overrun can only happen if the DSDT version is 1 --
1975meaning that all AML integers are 32 bits -- and the field length is
1976between 33 and 55 bits long. During the read, an internal buffer object
1977is
1978created for the field unit because the field is larger than an integer
1979(32
1980bits). However, in this case, the buffer will be incorrectly written
1981beyond the end because the buffer length is less than the internal
1982minimum
1983of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
1984long, but a full 8 bytes will be written.
1985
1986Updated the Embedded Controller "orphan" _REG method support. This refers
1987to _REG methods under the EC device that have no corresponding operation
1988region. This is allowed by the ACPI specification. This update removes a
1989dependency on the existence an ECDT table. It will execute an orphan _REG
1990method as long as the operation region handler for the EC is installed at
1991the EC device node and not the namespace root. Rui Zhang (original
1992update), Bob Moore (update/integrate).
1993
1994Implemented run-time argument typechecking for all predefined ACPI names
1995(_STA, _BIF, etc.) This change performs object typechecking on all
1996incoming arguments for all predefined names executed via
1997AcpiEvaluateObject. This ensures that ACPI-related device drivers are
1998passing correct object types as well as the correct number of arguments
1999(therefore identifying any issues immediately). Also, the ASL/namespace
2000definition of the predefined name is checked against the ACPI
2001specification for the proper argument count. Adds one new file,
2002nsarguments.c
2003
2004Changed an exception code for the ASL UnLoad() operator. Changed the
2005exception code for the case where the input DdbHandle is invalid, from
2006AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
2007
2008Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
2009global makefile. The use of this flag causes compiler errors on earlier
2010versions of GCC, so it has been removed for compatibility.
2011
2012Miscellaneous cleanup:
20131) Removed some unused/obsolete macros
20142) Fixed a possible memory leak in the _OSI support
20153) Removed an unused variable in the predefined name support
20164) Windows OSL: remove obsolete reference to a memory list field
2017
2018Example Code and Data Size: These are the sizes for the OS-independent
2019acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2020debug version of the code includes the debug output trace mechanism and
2021has a much larger code and data size.
2022
2023 Current Release:
2024 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
2025 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
2026 Previous Release:
2027 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
2028 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
2029
2030
20312) iASL Compiler/Disassembler and Tools:
2032
2033AcpiExec: Added installation of a handler for the SystemCMOS address
2034space. This prevents control method abort if a method accesses this
2035space.
2036
2037AcpiExec: Added support for multiple EC devices, and now install EC
2038operation region handler(s) at the actual EC device instead of the
2039namespace root. This reflects the typical behavior of host operating
2040systems.
2041
2042AcpiExec: Updated to ensure that all operation region handlers are
2043installed before the _REG methods are executed. This prevents a _REG
2044method from aborting if it accesses an address space has no handler.
2045AcpiExec installs a handler for every possible address space.
2046
2047Debugger: Enhanced the "handlers" command to display non-root handlers.
2048This change enhances the handlers command to display handlers associated
2049with individual devices throughout the namespace, in addition to the
2050currently supported display of handlers associated with the root
2051namespace
2052node.
2053
2054ASL Test Suite: Several test suite errors have been identified and
2055resolved, reducing the total error count during execution. Chao Guan.
2056
2057----------------------------------------
205828 March 2013. Summary of changes for version 20130328:
2059
20601) ACPICA kernel-resident subsystem:
2061
2062Fixed several possible race conditions with the internal object reference
2063counting mechanism. Some of the external ACPICA interfaces update object
2064reference counts without holding the interpreter or namespace lock. This
2065change adds a spinlock to protect reference count updates on the internal
2066ACPICA objects. Reported by and with assistance from Andriy Gapon
2067(avg@FreeBSD.org).
2068
2069FADT support: Removed an extraneous warning for very large GPE register
2070sets. This change removes a size mismatch warning if the legacy length
2071field for a GPE register set is larger than the 64-bit GAS structure can
2072accommodate. GPE register sets can be larger than the 255-bit width
2073limitation of the GAS structure. Linn Crosetto (linn@hp.com).
2074
2075_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
2076return from this interface. Handles a possible timeout case if
2077ACPI_WAIT_FOREVER is modified by the host to be a value less than
2078"forever". Jung-uk Kim.
2079
2080Predefined name support: Add allowed/required argument type information
2081to
2082the master predefined info table. This change adds the infrastructure to
2083enable typechecking on incoming arguments for all predefined
2084methods/objects. It does not actually contain the code that will fully
2085utilize this information, this is still under development. Also condenses
2086some duplicate code for the predefined names into a new module,
2087utilities/utpredef.c
2088
2089Example Code and Data Size: These are the sizes for the OS-independent
2090acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2091debug version of the code includes the debug output trace mechanism and
2092has a much larger code and data size.
2093
2094 Previous Release:
2095 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
2096 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
2097 Current Release:
2098 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
2099 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
2100
2101
21022) iASL Compiler/Disassembler and Tools:
2103
2104iASL: Implemented a new option to simplify the development of ACPI-
2105related
2106BIOS code. Adds support for a new "offset table" output file. The -so
2107option will create a C table containing the AML table offsets of various
2108named objects in the namespace so that BIOS code can modify them easily
2109at
2110boot time. This can simplify BIOS runtime code by eliminating expensive
2111searches for "magic values", enhancing boot times and adding greater
2112reliability. With assistance from Lee Hamel.
2113
2114iASL: Allow additional predefined names to return zero-length packages.
2115Now, all predefined names that are defined by the ACPI specification to
2116return a "variable-length package of packages" are allowed to return a
2117zero length top-level package. This allows the BIOS to tell the host that
2118the requested feature is not supported, and supports existing BIOS/ASL
2119code and practices.
2120
2121iASL: Changed the "result not used" warning to an error. This is the case
2122where an ASL operator is effectively a NOOP because the result of the
2123operation is not stored anywhere. For example:
2124 Add (4, Local0)
2125There is no target (missing 3rd argument), nor is the function return
2126value used. This is potentially a very serious problem -- since the code
2127was probably intended to do something, but for whatever reason, the value
2128was not stored. Therefore, this issue has been upgraded from a warning to
2129an error.
2130
2131AcpiHelp: Added allowable/required argument types to the predefined names
2132info display. This feature utilizes the recent update to the predefined
2133names table (above).
2134
2135----------------------------------------
213614 February 2013. Summary of changes for version 20130214:
2137
21381) ACPICA Kernel-resident Subsystem:
2139
2140Fixed a possible regression on some hosts: Reinstated the safe return
2141macros (return_ACPI_STATUS, etc.) that ensure that the argument is
2142evaluated only once. Although these macros are not needed for the ACPICA
2143code itself, they are often used by ACPI-related host device drivers
2144where
2145the safe feature may be necessary.
2146
2147Fixed several issues related to the ACPI 5.0 reduced hardware support
2148(SOC): Now ensure that if the platform declares itself as hardware-
2149reduced
2150via the FADT, the following functions become NOOPs (and always return
2151AE_OK) because ACPI is always enabled by definition on these machines:
2152 AcpiEnable
2153 AcpiDisable
2154 AcpiHwGetMode
2155 AcpiHwSetMode
2156
2157Dynamic Object Repair: Implemented additional runtime repairs for
2158predefined name return values. Both of these repairs can simplify code in
2159the related device drivers that invoke these methods:
21601) For the _STR and _MLS names, automatically repair/convert an ASCII
2161string to a Unicode buffer.
21622) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
2163a
2164lone end tag descriptor in the following cases: A Return(0) was executed,
2165a null buffer was returned, or no object at all was returned (non-slack
2166mode only). Adds a new file, nsconvert.c
2167ACPICA BZ 998. Bob Moore, Lv Zheng.
2168
2169Resource Manager: Added additional code to prevent possible infinite
2170loops
2171while traversing corrupted or ill-formed resource template buffers. Check
2172for zero-length resource descriptors in all code that loops through
2173resource templates (the length field is used to index through the
2174template). This change also hardens the external AcpiWalkResources and
2175AcpiWalkResourceBuffer interfaces.
2176
2177Local Cache Manager: Enhanced the main data structure to eliminate an
2178unnecessary mechanism to access the next object in the list. Actually
2179provides a small performance enhancement for hosts that use the local
2180ACPICA cache manager. Jung-uk Kim.
2181
2182Example Code and Data Size: These are the sizes for the OS-independent
2183acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2184debug version of the code includes the debug output trace mechanism and
2185has a much larger code and data size.
2186
2187 Previous Release:
2188 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
2189 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
2190 Current Release:
2191 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
2192 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
2193
2194
21952) iASL Compiler/Disassembler and Tools:
2196
2197iASL/Disassembler: Fixed several issues with the definition of the ACPI
21985.0 RASF table (RAS Feature Table). This change incorporates late changes
2199that were made to the ACPI 5.0 specification.
2200
2201iASL/Disassembler: Added full support for the following new ACPI tables:
2202 1) The MTMR table (MID Timer Table)
2203 2) The VRTC table (Virtual Real Time Clock Table).
2204Includes header file, disassembler, table compiler, and template support
2205for both tables.
2206
2207iASL: Implemented compile-time validation of package objects returned by
2208predefined names. This new feature validates static package objects
2209returned by the various predefined names defined to return packages. Both
2210object types and package lengths are validated, for both parent packages
2211and sub-packages, if any. The code is similar in structure and behavior
2212to
2213the runtime repair mechanism within the AML interpreter and uses the
2214existing predefined name information table. Adds a new file, aslprepkg.c.
2215ACPICA BZ 938.
2216
2217iASL: Implemented auto-detection of binary ACPI tables for disassembly.
2218This feature detects a binary file with a valid ACPI table header and
2219invokes the disassembler automatically. Eliminates the need to
2220specifically invoke the disassembler with the -d option. ACPICA BZ 862.
2221
2222iASL/Disassembler: Added several warnings for the case where there are
2223unresolved control methods during the disassembly. This can potentially
2224cause errors when the output file is compiled, because the disassembler
2225assumes zero method arguments in these cases (it cannot determine the
2226actual number of arguments without resolution/definition of the method).
2227
2228Debugger: Added support to display all resources with a single command.
2229Invocation of the resources command with no arguments will now display
2230all
2231resources within the current namespace.
2232
2233AcpiHelp: Added descriptive text for each ACPICA exception code displayed
2234via the -e option.
2235
2236----------------------------------------
223717 January 2013. Summary of changes for version 20130117:
2238
22391) ACPICA Kernel-resident Subsystem:
2240
2241Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
2242return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
2243objects to return a package containing one integer, most BIOS code
2244returns
2245two integers and the previous code reflects that. However, we also need
2246to
2247support BIOS code that actually implements to the ACPI spec, and this
2248change reflects this.
2249
2250Fixed two issues with the ACPI_DEBUG_PRINT macros:
22511) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
2252C compilers that require this support.
22532) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
2254ACPI_DEBUG is already used by many of the various hosts.
2255
2256Updated all ACPICA copyrights and signons to 2013. Added the 2013
2257copyright to all module headers and signons, including the standard Linux
2258header. This affects virtually every file in the ACPICA core subsystem,
2259iASL compiler, all ACPICA utilities, and the test suites.
2260
2261Example Code and Data Size: These are the sizes for the OS-independent
2262acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2263debug version of the code includes the debug output trace mechanism and
2264has a much larger code and data size.
2265
2266 Previous Release:
2267 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
2268 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
2269 Current Release:
2270 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
2271 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
2272
2273
22742) iASL Compiler/Disassembler and Tools:
2275
2276Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
2277prevent a possible fault on some hosts. Some C libraries modify the arg
2278pointer parameter to vfprintf making it difficult to call it twice in the
2279AcpiOsVprintf function. Use a local buffer to workaround this issue. This
2280does not affect the Windows OSL since the Win C library does not modify
2281the arg pointer. Chao Guan, Bob Moore.
2282
2283iASL: Fixed a possible infinite loop when the maximum error count is
2284reached. If an output file other than the .AML file is specified (such as
2285a listing file), and the maximum number of errors is reached, do not
2286attempt to flush data to the output file(s) as the compiler is aborting.
2287This can cause an infinite loop as the max error count code essentially
2288keeps calling itself.
2289
2290iASL/Disassembler: Added an option (-in) to ignore NOOP
2291opcodes/operators.
2292Implemented for both the compiler and the disassembler. Often, the NOOP
2293opcode is used as padding for packages that are changed dynamically by
2294the
2295BIOS. When disassembled and recompiled, these NOOPs will cause syntax
2296errors. This option causes the disassembler to ignore all NOOP opcodes
2297(0xA3), and it also causes the compiler to ignore all ASL source code
2298NOOP
2299statements as well.
2300
2301Debugger: Enhanced the Sleep command to execute all sleep states. This
2302change allows Sleep to be invoked with no arguments and causes the
2303debugger to execute all of the sleep states, 0-5, automatically.
2304
2305----------------------------------------
230620 December 2012. Summary of changes for version 20121220:
2307
23081) ACPICA Kernel-resident Subsystem:
2309
2310Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
2311alternate entry point for AcpiWalkResources and improves the usability of
2312the resource manager by accepting as input a buffer containing the output
2313of either a _CRS, _PRS, or _AEI method. The key functionality is that the
2314input buffer is not deleted by this interface so that it can be used by
2315the host later. See the ACPICA reference for details.
2316
2317Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
2318(DSDT version < 2). The constant will be truncated and this warning
2319reflects that behavior.
2320
2321Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
2322ExtendedInterrupt, and GpioInt descriptors. This change adds support to
2323both get and set the new wake bit in these descriptors, separately from
2324the existing share bit. Reported by Aaron Lu.
2325
2326Interpreter: Fix Store() when an implicit conversion is not possible. For
2327example, in the cases such as a store of a string to an existing package
2328object, implement the store as a CopyObject(). This is a small departure
2329from the ACPI specification which states that the control method should
2330be
2331aborted in this case. However, the ASLTS suite depends on this behavior.
2332
2333Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
2334macros: check if debug output is currently enabled as soon as possible to
2335minimize performance impact if debug is in fact not enabled.
2336
2337Source code restructuring: Cleanup to improve modularity. The following
2338new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
2339psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
2340Associated makefiles and project files have been updated.
2341
2342Changed an exception code for LoadTable operator. For the case where one
2343of the input strings is too long, change the returned exception code from
2344AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
2345
2346Fixed a possible memory leak in dispatcher error path. On error, delete
2347the mutex object created during method mutex creation. Reported by
2348tim.gardner@canonical.com.
2349
2350Example Code and Data Size: These are the sizes for the OS-independent
2351acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2352debug version of the code includes the debug output trace mechanism and
2353has a much larger code and data size.
2354
2355 Previous Release:
2356 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
2357 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
2358 Current Release:
2359 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
2360 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
2361
2362
23632) iASL Compiler/Disassembler and Tools:
2364
2365iASL: Disallow a method call as argument to the ObjectType ASL operator.
2366This change tracks an errata to the ACPI 5.0 document. The AML grammar
2367will not allow the interpreter to differentiate between a method and a
2368method invocation when these are used as an argument to the ObjectType
2369operator. The ACPI specification change is to disallow a method
2370invocation
2371(UserTerm) for the ObjectType operator.
2372
2373Finish support for the TPM2 and CSRT tables in the headers, table
2374compiler, and disassembler.
2375
2376Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
2377always expires immediately if the semaphore is not available. The
2378original
2379code was using a relative-time timeout, but sem_timedwait requires the
2380use
2381of an absolute time.
2382
2383iASL: Added a remark if the Timer() operator is used within a 32-bit
2384table. This operator returns a 64-bit time value that will be truncated
2385within a 32-bit table.
2386
2387iASL Source code restructuring: Cleanup to improve modularity. The
2388following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
2389aslmethod.c, and aslfileio.c. Associated makefiles and project files have
2390been updated.
2391
2392
2393----------------------------------------
239414 November 2012. Summary of changes for version 20121114:
2395
23961) ACPICA Kernel-resident Subsystem:
2397
2398Implemented a performance enhancement for ACPI/AML Package objects. This
2399change greatly increases the performance of Package objects within the
2400interpreter. It changes the processing of reference counts for packages
2401by
2402optimizing for the most common case where the package sub-objects are
2403either Integers, Strings, or Buffers. Increases the overall performance
2404of
2405the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
24062X.)
2407Chao Guan. ACPICA BZ 943.
2408
2409Implemented and deployed common macros to extract flag bits from resource
2410descriptors. Improves readability and maintainability of the code. Fixes
2411a
2412problem with the UART serial bus descriptor for the number of data bits
2413flags (was incorrectly 2 bits, should be 3).
2414
2415Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
2416of the macros and changed the SETx macros to the style of (destination,
2417source). Also added ACPI_CASTx companion macros. Lv Zheng.
2418
2419Example Code and Data Size: These are the sizes for the OS-independent
2420acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2421debug version of the code includes the debug output trace mechanism and
2422has a much larger code and data size.
2423
2424 Previous Release:
2425 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
2426 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
2427 Current Release:
2428 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
2429 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
2430
2431
24322) iASL Compiler/Disassembler and Tools:
2433
2434Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
2435adds the ShareAndWake and ExclusiveAndWake flags which were added to the
2436Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
2437
2438Disassembler: Fixed a problem with external declaration generation. Fixes
2439a problem where an incorrect pathname could be generated for an external
2440declaration if the original reference to the object includes leading
2441carats (^). ACPICA BZ 984.
2442
2443Debugger: Completed a major update for the Disassemble<method> command.
2444This command was out-of-date and did not properly disassemble control
2445methods that had any reasonable complexity. This fix brings the command
2446up
2447to the same level as the rest of the disassembler. Adds one new file,
2448dmdeferred.c, which is existing code that is now common with the main
2449disassembler and the debugger disassemble command. ACPICA MZ 978.
2450
2451iASL: Moved the parser entry prototype to avoid a duplicate declaration.
2452Newer versions of Bison emit this prototype, so moved the prototype out
2453of
2454the iASL header to where it is actually used in order to avoid a
2455duplicate
2456declaration.
2457
2458iASL/Tools: Standardized use of the stream I/O functions:
2459 1) Ensure check for I/O error after every fopen/fread/fwrite
2460 2) Ensure proper order of size/count arguments for fread/fwrite
2461 3) Use test of (Actual != Requested) after all fwrite, and most fread
2462 4) Standardize I/O error messages
2463Improves reliability and maintainability of the code. Bob Moore, Lv
2464Zheng.
2465ACPICA BZ 981.
2466
2467Disassembler: Prevent duplicate External() statements. During generation
2468of external statements, detect similar pathnames that are actually
2469duplicates such as these:
2470 External (\ABCD)
2471 External (ABCD)
2472Remove all leading '\' characters from pathnames during the external
2473statement generation so that duplicates will be detected and tossed.
2474ACPICA BZ 985.
2475
2476Tools: Replace low-level I/O with stream I/O functions. Replace
2477open/read/write/close with the stream I/O equivalents
2478fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
2479Moore.
2480
2481AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
2482name header so that AcpiXtract recognizes the output file/table.
2483
2484iASL: Remove obsolete -2 option flag. Originally intended to force the
2485compiler/disassembler into an ACPI 2.0 mode, this was never implemented
2486and the entire concept is now obsolete.
2487
2488----------------------------------------
248918 October 2012. Summary of changes for version 20121018:
2490
2491
24921) ACPICA Kernel-resident Subsystem:
2493
2494Updated support for the ACPI 5.0 MPST table. Fixes some problems
2495introduced by late changes to the table as it was added to the ACPI 5.0
2496specification. Includes header, disassembler, and data table compiler
2497support as well as a new version of the MPST template.
2498
2499AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
25005.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
2501methods: _HID, _CID, and _UID.
2502
2503Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
2504ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
2505name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
2506names for their various drivers. Affects the AcpiGetObjectInfo external
2507interface, and other internal interfaces as well.
2508
2509Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
2510This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
2511on machines that support non-aligned transfers. Optimizes for this case
2512rather than using a strncpy. With assistance from Zheng Lv.
2513
2514Resource Manager: Small fix for buffer size calculation. Fixed a one byte
2515error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
2516
2517Added a new debug print message for AML mutex objects that are force-
2518released. At control method termination, any currently acquired mutex
2519objects are force-released. Adds a new debug-only message for each one
2520that is released.
2521
2522Audited/updated all ACPICA return macros and the function debug depth
2523counter: 1) Ensure that all functions that use the various TRACE macros
2524also use the appropriate ACPICA return macros. 2) Ensure that all normal
2525return statements surround the return expression (value) with parens to
2526ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
2527Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
2528
2529Global source code changes/maintenance: All extra lines at the start and
2530end of each source file have been removed for consistency. Also, within
2531comments, all new sentences start with a single space instead of a double
2532space, again for consistency across the code base.
2533
2534Example Code and Data Size: These are the sizes for the OS-independent
2535acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2536debug version of the code includes the debug output trace mechanism and
2537has a much larger code and data size.
2538
2539 Previous Release:
2540 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
2541 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
2542 Current Release:
2543 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
2544 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
2545
2546
25472) iASL Compiler/Disassembler and Tools:
2548
2549AcpiExec: Improved the algorithm used for memory leak/corruption
2550detection. Added some intelligence to the code that maintains the global
2551list of allocated memory. The list is now ordered by allocated memory
2552address, significantly improving performance. When running AcpiExec on
2553the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
2554on the platform and/or the environment. Note, this performance
2555enhancement affects the AcpiExec utility only, not the kernel-resident
2556ACPICA code.
2557
2558Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
2559the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
2560incorrect table offset reported for invalid opcodes. Report the original
256132-bit value for bad ACPI_NAMEs (as well as the repaired name.)
2562
2563Disassembler: Enhanced the -vt option to emit the binary table data in
2564hex format to assist with debugging.
2565
2566Fixed a potential filename buffer overflow in osunixdir.c. Increased the
2567size of file structure. Colin Ian King.
2568
2569----------------------------------------
257013 September 2012. Summary of changes for version 20120913:
2571
2572
25731) ACPICA Kernel-resident Subsystem:
2574
2575ACPI 5.0: Added two new notify types for the Hardware Error Notification
2576Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
2577and
2578MCE(6).
2579
2580Table Manager: Merged/removed duplicate code in the root table resize
2581functions. One function is external, the other is internal. Lv Zheng,
2582ACPICA
2583BZ 846.
2584
2585Makefiles: Completely removed the obsolete "Linux" makefiles under
2586acpica/generate/linux. These makefiles are obsolete and have been
2587replaced
2588by
2589the generic unix makefiles under acpica/generate/unix.
2590
2591Makefiles: Ensure that binary files always copied properly. Minor rule
2592change
2593to ensure that the final binary output files are always copied up to the
2594appropriate binary directory (bin32 or bin64.)
2595
2596Example Code and Data Size: These are the sizes for the OS-independent
2597acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2598debug
2599version of the code includes the debug output trace mechanism and has a
2600much
2601larger code and data size.
2602
2603 Previous Release:
2604 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
2605 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
2606 Current Release:
2607 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
2608 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
2609
2610
26112) iASL Compiler/Disassembler and Tools:
2612
2613Disassembler: Fixed a possible fault during the disassembly of resource
2614descriptors when a second parse is required because of the invocation of
2615external control methods within the table. With assistance from
2616adq@lidskialf.net. ACPICA BZ 976.
2617
2618iASL: Fixed a namepath optimization problem. An error can occur if the
2619parse
2620node that contains the namepath to be optimized does not have a parent
2621node
2622that is a named object. This change fixes the problem.
2623
2624iASL: Fixed a regression where the AML file is not deleted on errors. The
2625AML
2626output file should be deleted if there are any errors during the
2627compiler.
2628The
2629only exception is if the -f (force output) option is used. ACPICA BZ 974.
2630
2631iASL: Added a feature to automatically increase internal line buffer
2632sizes.
2633Via realloc(), automatically increase the internal line buffer sizes as
2634necessary to support very long source code lines. The current version of
2635the
2636preprocessor requires a buffer long enough to contain full source code
2637lines.
2638This change increases the line buffer(s) if the input lines go beyond the
2639current buffer size. This eliminates errors that occurred when a source
2640code
2641line was longer than the buffer.
2642
2643iASL: Fixed a problem with constant folding in method declarations. The
2644SyncLevel term is a ByteConstExpr, and incorrect code would be generated
2645if a
2646Type3 opcode was used.
2647
2648Debugger: Improved command help support. For incorrect argument count,
2649display
2650full help for the command. For help command itself, allow an argument to
2651specify a command.
2652
2653Test Suites: Several bug fixes for the ASLTS suite reduces the number of
2654errors during execution of the suite. Guan Chao.
2655
2656----------------------------------------
265716 August 2012. Summary of changes for version 20120816:
2658
2659
26601) ACPICA Kernel-resident Subsystem:
2661
2662Removed all use of the deprecated _GTS and _BFS predefined methods. The
2663_GTS
2664(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
2665deprecated and will probably be removed from the ACPI specification.
2666Windows
2667does not invoke them, and reportedly never will. The final nail in the
2668coffin
2669is that the ACPI specification states that these methods must be run with
2670interrupts off, which is not going to happen in a kernel interpreter.
2671Note:
2672Linux has removed all use of the methods also. It was discovered that
2673invoking these functions caused failures on some machines, probably
2674because
2675they were never tested since Windows does not call them. Affects two
2676external
2677interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
2678ACPICA BZ 969.
2679
2680Implemented support for complex bit-packed buffers returned from the _PLD
2681(Physical Location of Device) predefined method. Adds a new external
2682interface, AcpiDecodePldBuffer that parses the buffer into a more usable
2683C
2684structure. Note: C Bitfields cannot be used for this type of predefined
2685structure since the memory layout of individual bitfields is not defined
2686by
2687the C language. In addition, there are endian concerns where a compiler
2688will
2689change the bitfield ordering based on the machine type. The new ACPICA
2690interface eliminates these issues, and should be called after _PLD is
2691executed. ACPICA BZ 954.
2692
2693Implemented a change to allow a scope change to root (via "Scope (\)")
2694during
2695execution of module-level ASL code (code that is executed at table load
2696time.) Lin Ming.
2697
2698Added the Windows8/Server2012 string for the _OSI method. This change
2699adds
2700a
2701new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
27022012.
2703
2704Added header support for the new ACPI tables DBG2 (Debug Port Table Type
27052)
2706and CSRT (Core System Resource Table).
2707
2708Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
2709names. This simplifies access to the buffers returned by these predefined
2710names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
2711
2712GPE support: Removed an extraneous parameter from the various low-level
2713internal GPE functions. Tang Feng.
2714
2715Removed the linux makefiles from the unix packages. The generate/linux
2716makefiles are obsolete and have been removed from the unix tarball
2717release
2718packages. The replacement makefiles are under generate/unix, and there is
2719a
2720top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
2721
2722Updates for Unix makefiles:
27231) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
27242) Update linker flags (move to end of command line) for AcpiExec
2725utility.
2726Guan Chao.
2727
2728Split ACPICA initialization functions to new file, utxfinit.c. Split from
2729utxface.c to improve modularity and reduce file size.
2730
2731Example Code and Data Size: These are the sizes for the OS-independent
2732acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2733debug version of the code includes the debug output trace mechanism and
2734has a
2735much larger code and data size.
2736
2737 Previous Release:
2738 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
2739 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
2740 Current Release:
2741 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
2742 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
2743
2744
27452) iASL Compiler/Disassembler and Tools:
2746
2747iASL: Fixed a problem with constant folding for fixed-length constant
2748expressions. The constant-folding code was not being invoked for constant
2749expressions that allow the use of type 3/4/5 opcodes to generate
2750constants
2751for expressions such as ByteConstExpr, WordConstExpr, etc. This could
2752result
2753in the generation of invalid AML bytecode. ACPICA BZ 970.
2754
2755iASL: Fixed a generation issue on newer versions of Bison. Newer versions
2756apparently automatically emit some of the necessary externals. This
2757change
2758handles these versions in order to eliminate generation warnings.
2759
2760Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
2761
2762Disassembler: Add support to decode _PLD buffers. The decoded buffer
2763appears
2764within comments in the output file.
2765
2766Debugger: Fixed a regression with the "Threads" command where
2767AE_BAD_PARAMETER was always returned.
2768
2769----------------------------------------
277011 July 2012. Summary of changes for version 20120711:
2771
27721) ACPICA Kernel-resident Subsystem:
2773
2774Fixed a possible fault in the return package object repair code. Fixes a
2775problem that can occur when a lone package object is wrapped with an
2776outer
2777package object in order to force conformance to the ACPI specification.
2778Can
2779affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
2780_DLM,
2781_CSD, _PSD, _TSD.
2782
2783Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
2784PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
2785ARB_DIS bit must be implemented in the host-dependent C3 processor power
2786state
2787support. Note, ARB_DIS is obsolete and only applies to older chipsets,
2788both
2789Intel and other vendors. (for Intel: ICH4-M and earlier)
2790
2791This change removes the code to disable/enable bus master arbitration
2792during
2793suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
2794causes
2795resume problems on some machines. The change has been in use for over
2796seven
2797years within Linux.
2798
2799Implemented two new external interfaces to support host-directed dynamic
2800ACPI
2801table load and unload. They are intended to simplify the host
2802implementation
2803of hot-plug support:
2804 AcpiLoadTable: Load an SSDT from a buffer into the namespace.
2805 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
2806table.
2807See the ACPICA reference for additional details. Adds one new file,
2808components/tables/tbxfload.c
2809
2810Implemented and deployed two new interfaces for errors and warnings that
2811are
2812known to be caused by BIOS/firmware issues:
2813 AcpiBiosError: Prints "ACPI Firmware Error" message.
2814 AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
2815Deployed these new interfaces in the ACPICA Table Manager code for ACPI
2816table
2817and FADT errors. Additional deployment to be completed as appropriate in
2818the
2819future. The associated conditional macros are ACPI_BIOS_ERROR and
2820ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
2821ACPICA
2822BZ
2823843.
2824
2825Implicit notify support: ensure that no memory allocation occurs within a
2826critical region. This fix moves a memory allocation outside of the time
2827that a
2828spinlock is held. Fixes issues on systems that do not allow this
2829behavior.
2830Jung-uk Kim.
2831
2832Split exception code utilities and tables into a new file,
2833utilities/utexcep.c
2834
2835Example Code and Data Size: These are the sizes for the OS-independent
2836acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2837debug
2838version of the code includes the debug output trace mechanism and has a
2839much
2840larger code and data size.
2841
2842 Previous Release:
2843 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
2844 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
2845 Current Release:
2846 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
2847 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
2848
2849
28502) iASL Compiler/Disassembler and Tools:
2851
2852iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
2853of
28540. Jung-uk Kim.
2855
2856Debugger: Enhanced the "tables" command to emit additional information
2857about
2858the current set of ACPI tables, including the owner ID and flags decode.
2859
2860Debugger: Reimplemented the "unload" command to use the new
2861AcpiUnloadParentTable external interface. This command was disable
2862previously
2863due to need for an unload interface.
2864
2865AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
2866option
2867will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
2868
2869----------------------------------------
287020 June 2012. Summary of changes for version 20120620:
2871
2872
28731) ACPICA Kernel-resident Subsystem:
2874
2875Implemented support to expand the "implicit notify" feature to allow
2876multiple
2877devices to be notified by a single GPE. This feature automatically
2878generates a
2879runtime device notification in the absence of a BIOS-provided GPE control
2880method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
2881notify is
2882provided by ACPICA for Windows compatibility, and is a workaround for
2883BIOS
2884AML
2885code errors. See the description of the AcpiSetupGpeForWake interface in
2886the
2887APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
2888
2889Changed some comments and internal function names to simplify and ensure
2890correctness of the Linux code translation. No functional changes.
2891
2892Example Code and Data Size: These are the sizes for the OS-independent
2893acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2894debug
2895version of the code includes the debug output trace mechanism and has a
2896much
2897larger code and data size.
2898
2899 Previous Release:
2900 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
2901 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
2902 Current Release:
2903 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
2904 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
2905
2906
29072) iASL Compiler/Disassembler and Tools:
2908
2909Disassembler: Added support to emit short, commented descriptions for the
2910ACPI
2911predefined names in order to improve the readability of the disassembled
2912output. ACPICA BZ 959. Changes include:
2913 1) Emit descriptions for all standard predefined names (_INI, _STA,
2914_PRW,
2915etc.)
2916 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
2917 3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
2918etc.)
2919
2920AcpiSrc: Fixed several long-standing Linux code translation issues.
2921Argument
2922descriptions in function headers are now translated properly to lower
2923case
2924and
2925underscores. ACPICA BZ 961. Also fixes translation problems such as
2926these:
2927(old -> new)
2928 i_aSL -> iASL
2929 00-7_f -> 00-7F
2930 16_k -> 16K
2931 local_fADT -> local_FADT
2932 execute_oSI -> execute_OSI
2933
2934iASL: Fixed a problem where null bytes were inadvertently emitted into
2935some
2936listing files.
2937
2938iASL: Added the existing debug options to the standard help screen. There
2939are
2940no longer two different help screens. ACPICA BZ 957.
2941
2942AcpiHelp: Fixed some typos in the various predefined name descriptions.
2943Also
2944expand some of the descriptions where appropriate.
2945
2946iASL: Fixed the -ot option (display compile times/statistics). Was not
2947working
2948properly for standard output; only worked for the debug file case.
2949
2950----------------------------------------
295118 May 2012. Summary of changes for version 20120518:
2952
2953
29541) ACPICA Core Subsystem:
2955
2956Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
2957defined
2958to block until asynchronous events such as notifies and GPEs have
2959completed.
2960Within ACPICA, it is only called before a notify or GPE handler is
2961removed/uninstalled. It also may be useful for the host OS within related
2962drivers such as the Embedded Controller driver. See the ACPICA reference
2963for
2964additional information. ACPICA BZ 868.
2965
2966ACPI Tables: Added a new error message for a possible overflow failure
2967during
2968the conversion of FADT 32-bit legacy register addresses to internal
2969common
297064-
2971bit GAS structure representation. The GAS has a one-byte "bit length"
2972field,
2973thus limiting the register length to 255 bits. ACPICA BZ 953.
2974
2975Example Code and Data Size: These are the sizes for the OS-independent
2976acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2977debug
2978version of the code includes the debug output trace mechanism and has a
2979much
2980larger code and data size.
2981
2982 Previous Release:
2983 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
2984 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
2985 Current Release:
2986 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
2987 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
2988
2989
29902) iASL Compiler/Disassembler and Tools:
2991
2992iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
2993macro.
2994This keyword was added late in the ACPI 5.0 release cycle and was not
2995implemented until now.
2996
2997Disassembler: Added support for Operation Region externals. Adds missing
2998support for operation regions that are defined in another table, and
2999referenced locally via a Field or BankField ASL operator. Now generates
3000the
3001correct External statement.
3002
3003Disassembler: Several additional fixes for the External() statement
3004generation
3005related to some ASL operators. Also, order the External() statements
3006alphabetically in the disassembler output. Fixes the External()
3007generation
3008for
3009the Create* field, Alias, and Scope operators:
3010 1) Create* buffer field operators - fix type mismatch warning on
3011disassembly
3012 2) Alias - implement missing External support
3013 3) Scope - fix to make sure all necessary externals are emitted.
3014
3015iASL: Improved pathname support. For include files, merge the prefix
3016pathname
3017with the file pathname and eliminate unnecessary components. Convert
3018backslashes in all pathnames to forward slashes, for readability. Include
3019file
3020pathname changes affect both #include and Include() type operators.
3021
3022iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
3023end
3024of a valid line by inserting a newline and then returning the EOF during
3025the
3026next call to GetNextLine. Prevents the line from being ignored due to EOF
3027condition.
3028
3029iASL: Implemented some changes to enhance the IDE support (-vi option.)
3030Error
3031and Warning messages are now correctly recognized for both the source
3032code
3033browser and the global error and warning counts.
3034
3035----------------------------------------
303620 April 2012. Summary of changes for version 20120420:
3037
3038
30391) ACPICA Core Subsystem:
3040
3041Implemented support for multiple notify handlers. This change adds
3042support
3043to
3044allow multiple system and device notify handlers on Device, Thermal Zone,
3045and
3046Processor objects. This can simplify the host OS notification
3047implementation.
3048Also re-worked and restructured the entire notify support code to
3049simplify
3050handler installation, handler removal, notify event queuing, and notify
3051dispatch to handler(s). Note: there can still only be two global notify
3052handlers - one for system notifies and one for device notifies. There are
3053no
3054changes to the existing handler install/remove interfaces. Lin Ming, Bob
3055Moore, Rafael Wysocki.
3056
3057Fixed a regression in the package repair code where the object reference
3058count was calculated incorrectly. Regression was introduced in the commit
3059"Support to add Package wrappers".
3060
3061Fixed a couple possible memory leaks in the AML parser, in the error
3062recovery
3063path. Jesper Juhl, Lin Ming.
3064
3065Example Code and Data Size: These are the sizes for the OS-independent
3066acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3067debug version of the code includes the debug output trace mechanism and
3068has a
3069much larger code and data size.
3070
3071 Previous Release:
3072 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
3073 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
3074 Current Release:
3075 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
3076 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
3077
3078
30792) iASL Compiler/Disassembler and Tools:
3080
3081iASL: Fixed a problem with the resource descriptor support where the
3082length
3083of the StartDependentFn and StartDependentFnNoPrio descriptors were not
3084included in cumulative descriptor offset, resulting in incorrect values
3085for
3086resource tags within resource descriptors appearing after a
3087StartDependent*
3088descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
3089
3090iASL and Preprocessor: Implemented full support for the #line directive
3091to
3092correctly track original source file line numbers through the .i
3093preprocessor
3094output file - for error and warning messages.
3095
3096iASL: Expand the allowable byte constants for address space IDs.
3097Previously,
3098the allowable range was 0x80-0xFF (user-defined spaces), now the range is
30990x0A-0xFF to allow for custom and new IDs without changing the compiler.
3100
3101iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
3102
3103iASL: Add option to completely disable the preprocessor (-Pn).
3104
3105iASL: Now emit all error/warning messages to standard error (stderr) by
3106default (instead of the previous stdout).
3107
3108ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
3109Update
3110for resource descriptor offset fix above. Update/cleanup error output
3111routines. Enable and send iASL errors/warnings to an error logfile
3112(error.txt). Send all other iASL output to a logfile (compiler.txt).
3113Fixed
3114several extraneous "unrecognized operator" messages.
3115
3116----------------------------------------
311720 March 2012. Summary of changes for version 20120320:
3118
3119
31201) ACPICA Core Subsystem:
3121
3122Enhanced the sleep/wake interfaces to optionally execute the _GTS method
3123(Going To Sleep) and the _BFS method (Back From Sleep). Windows
3124apparently
3125does not execute these methods, and therefore these methods are often
3126untested. It has been seen on some systems where the execution of these
3127methods causes errors and also prevents the machine from entering S5. It
3128is
3129therefore suggested that host operating systems do not execute these
3130methods
3131by default. In the future, perhaps these methods can be optionally
3132executed
3133based on the age of the system and/or what is the newest version of
3134Windows
3135that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
3136and
3137AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
3138Ming.
3139
3140Fixed a problem where the length of the local/common FADT was set too
3141early.
3142The local FADT table length cannot be set to the common length until the
3143original length has been examined. There is code that checks the table
3144length
3145and sets various fields appropriately. This can affect older machines
3146with
3147early FADT versions. For example, this can cause inadvertent writes to
3148the
3149CST_CNT register. Julian Anastasov.
3150
3151Fixed a mapping issue related to a physical table override. Use the
3152deferred
3153mapping mechanism for tables loaded via the physical override OSL
3154interface.
3155This allows for early mapping before the virtual memory manager is
3156available.
3157Thomas Renninger, Bob Moore.
3158
3159Enhanced the automatic return-object repair code: Repair a common problem
3160with
3161predefined methods that are defined to return a variable-length Package
3162of
3163sub-objects. If there is only one sub-object, some BIOS ASL code
3164mistakenly
3165simply returns the single object instead of a Package with one sub-
3166object.
3167This new support will repair this error by wrapping a Package object
3168around
3169the original object, creating the correct and expected Package with one
3170sub-
3171object. Names that can be repaired in this manner include: _ALR, _CSD,
3172_HPX,
3173_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
3174939.
3175
3176Changed the exception code returned for invalid ACPI paths passed as
3177parameters to external interfaces such as AcpiEvaluateObject. Was
3178AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
3179
3180Example Code and Data Size: These are the sizes for the OS-independent
3181acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3182debug
3183version of the code includes the debug output trace mechanism and has a
3184much
3185larger code and data size.
3186
3187 Previous Release:
3188 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
3189 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
3190 Current Release:
3191 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
3192 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
3193
3194
31952) iASL Compiler/Disassembler and Tools:
3196
3197iASL: Added the infrastructure and initial implementation of a integrated
3198C-
3199like preprocessor. This will simplify BIOS development process by
3200eliminating
3201the need for a separate preprocessing step during builds. On Windows, it
3202also
3203eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
3204features including full #define() macro support are still under
3205development.
3206These preprocessor directives are supported:
3207 #define
3208 #elif
3209 #else
3210 #endif
3211 #error
3212 #if
3213 #ifdef
3214 #ifndef
3215 #include
3216 #pragma message
3217 #undef
3218 #warning
3219In addition, these new command line options are supported:
3220 -D <symbol> Define symbol for preprocessor use
3221 -li Create preprocessed output file (*.i)
3222 -P Preprocess only and create preprocessor output file (*.i)
3223
3224Table Compiler: Fixed a problem where the equals operator within an
3225expression
3226did not work properly.
3227
3228Updated iASL to use the current versions of Bison/Flex. Updated the
3229Windows
3230project file to invoke these tools from the standard location. ACPICA BZ
3231904.
3232Versions supported:
3233 Flex for Windows: V2.5.4
3234 Bison for Windows: V2.4.1
3235
3236----------------------------------------
323715 February 2012. Summary of changes for version 20120215:
3238
3239
32401) ACPICA Core Subsystem:
3241
3242There have been some major changes to the sleep/wake support code, as
3243described below (a - e).
3244
3245a) The AcpiLeaveSleepState has been split into two interfaces, similar to
3246AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
3247AcpiLeaveSleepStatePrep. This allows the host to perform actions between
3248the
3249time the _BFS method is called and the _WAK method is called. NOTE: all
3250hosts
3251must update their wake/resume code or else sleep/wake will not work
3252properly.
3253Rafael Wysocki.
3254
3255b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
3256_WAK
3257method. Some machines require that the GPEs are enabled before the _WAK
3258method
3259is executed. Thomas Renninger.
3260
3261c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
3262bit.
3263Some BIOS code assumes that WAK_STS will be cleared on resume and use it
3264to
3265determine whether the system is rebooting or resuming. Matthew Garrett.
3266
3267d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
3268Sleep) to
3269match the ACPI specification requirement. Rafael Wysocki.
3270
3271e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
3272registers within the V5 FADT. This support adds two new files:
3273hardware/hwesleep.c implements the support for the new registers. Moved
3274all
3275sleep/wake external interfaces to hardware/hwxfsleep.c.
3276
3277
3278Added a new OSL interface for ACPI table overrides,
3279AcpiOsPhysicalTableOverride. This interface allows the host to override a
3280table via a physical address, instead of the logical address required by
3281AcpiOsTableOverride. This simplifies the host implementation. Initial
3282implementation by Thomas Renninger. The ACPICA implementation creates a
3283single
3284shared function for table overrides that attempts both a logical and a
3285physical override.
3286
3287Expanded the OSL memory read/write interfaces to 64-bit data
3288(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
3289transfer support for GAS register structures passed to AcpiRead and
3290AcpiWrite.
3291
3292Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
3293custom
3294build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
3295model.
3296See the ACPICA reference for details. ACPICA BZ 942. This option removes
3297about
329810% of the code and 5% of the static data, and the following hardware
3299ACPI
3300features become unavailable:
3301 PM Event and Control registers
3302 SCI interrupt (and handler)
3303 Fixed Events
3304 General Purpose Events (GPEs)
3305 Global Lock
3306 ACPI PM timer
3307 FACS table (Waking vectors and Global Lock)
3308
3309Updated the unix tarball directory structure to match the ACPICA git
3310source
3311tree. This ensures that the generic unix makefiles work properly (in
3312generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
3313867.
3314
3315Updated the return value of the _REV predefined method to integer value 5
3316to
3317reflect ACPI 5.0 support.
3318
3319Moved the external ACPI PM timer interface prototypes to the public
3320acpixf.h
3321file where they belong.
3322
3323Example Code and Data Size: These are the sizes for the OS-independent
3324acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3325debug
3326version of the code includes the debug output trace mechanism and has a
3327much
3328larger code and data size.
3329
3330 Previous Release:
3331 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
3332 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
3333 Current Release:
3334 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
3335 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
3336
3337
33382) iASL Compiler/Disassembler and Tools:
3339
3340Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
3341descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
3342incorrectly displayed.
3343
3344AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
3345specification.
3346
3347----------------------------------------
334811 January 2012. Summary of changes for version 20120111:
3349
3350
33511) ACPICA Core Subsystem:
3352
3353Implemented a new mechanism to allow host device drivers to check for
3354address
3355range conflicts with ACPI Operation Regions. Both SystemMemory and
3356SystemIO
3357address spaces are supported. A new external interface,
3358AcpiCheckAddressRange,
3359allows drivers to check an address range against the ACPI namespace. See
3360the
3361ACPICA reference for additional details. Adds one new file,
3362utilities/utaddress.c. Lin Ming, Bob Moore.
3363
3364Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
3365Control
3366and
3367Status registers, update the ACPI 5.0 flags, and update internal data
3368structures to handle an FADT larger than 256 bytes. The size of the ACPI
33695.0
3370FADT is 268 bytes.
3371
3372Updated all ACPICA copyrights and signons to 2012. Added the 2012
3373copyright to
3374all module headers and signons, including the standard Linux header. This
3375affects virtually every file in the ACPICA core subsystem, iASL compiler,
3376and
3377all ACPICA utilities.
3378
3379Example Code and Data Size: These are the sizes for the OS-independent
3380acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3381debug
3382version of the code includes the debug output trace mechanism and has a
3383much
3384larger code and data size.
3385
3386 Previous Release:
3387 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
3388 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
3389 Current Release:
3390 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
3391 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
3392
3393
33942) iASL Compiler/Disassembler and Tools:
3395
3396Disassembler: fixed a problem with the automatic resource tag generation
3397support. Fixes a problem where the resource tags are inadvertently not
3398constructed if the table being disassembled contains external references
3399to
3400control methods. Moved the actual construction of the tags to after the
3401final
3402namespace is constructed (after 2nd parse is invoked due to external
3403control
3404method references.) ACPICA BZ 941.
3405
3406Table Compiler: Make all "generic" operators caseless. These are the
3407operators
3408like UINT8, String, etc. Making these caseless improves ease-of-use.
3409ACPICA BZ
3410934.
3411
3412----------------------------------------
341323 November 2011. Summary of changes for version 20111123:
3414
34150) ACPI 5.0 Support:
3416
3417This release contains full support for the ACPI 5.0 specification, as
3418summarized below.
3419
3420Reduced Hardware Support:
3421-------------------------
3422
3423This support allows for ACPI systems without the usual ACPI hardware.
3424This
3425support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
3426will
3427not attempt to initialize or use any of the usual ACPI hardware. Note,
3428when
3429this flag is set, all of the following ACPI hardware is assumed to be not
3430present and is not initialized or accessed:
3431
3432 General Purpose Events (GPEs)
3433 Fixed Events (PM1a/PM1b and PM Control)
3434 Power Management Timer and Console Buttons (power/sleep)
3435 Real-time Clock Alarm
3436 Global Lock
3437 System Control Interrupt (SCI)
3438 The FACS is assumed to be non-existent
3439
3440ACPI Tables:
3441------------
3442
3443All new tables and updates to existing tables are fully supported in the
3444ACPICA headers (for use by device drivers), the disassembler, and the
3445iASL
3446Data Table Compiler. ACPI 5.0 defines these new tables:
3447
3448 BGRT /* Boot Graphics Resource Table */
3449 DRTM /* Dynamic Root of Trust for Measurement table */
3450 FPDT /* Firmware Performance Data Table */
3451 GTDT /* Generic Timer Description Table */
3452 MPST /* Memory Power State Table */
3453 PCCT /* Platform Communications Channel Table */
3454 PMTT /* Platform Memory Topology Table */
3455 RASF /* RAS Feature table */
3456
3457Operation Regions/SpaceIDs:
3458---------------------------
3459
3460All new operation regions are fully supported by the iASL compiler, the
3461disassembler, and the ACPICA runtime code (for dispatch to region
3462handlers.)
3463The new operation region Space IDs are:
3464
3465 GeneralPurposeIo
3466 GenericSerialBus
3467
3468Resource Descriptors:
3469---------------------
3470
3471All new ASL resource descriptors are fully supported by the iASL
3472compiler,
3473the
3474ASL/AML disassembler, and the ACPICA runtime Resource Manager code
3475(including
3476all new predefined resource tags). New descriptors are:
3477
3478 FixedDma
3479 GpioIo
3480 GpioInt
3481 I2cSerialBus
3482 SpiSerialBus
3483 UartSerialBus
3484
3485ASL/AML Operators, New and Modified:
3486------------------------------------
3487
3488One new operator is added, the Connection operator, which is used to
3489associate
3490a GeneralPurposeIo or GenericSerialBus resource descriptor with
3491individual
3492field objects within an operation region. Several new protocols are
3493associated
3494with the AccessAs operator. All are fully supported by the iASL compiler,
3495disassembler, and runtime ACPICA AML interpreter:
3496
3497 Connection // Declare Field Connection
3498attributes
3499 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
3500 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
3501Protocol
3502 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
3503 RawDataBuffer // Data type for Vendor Data
3504fields
3505
3506Predefined ASL/AML Objects:
3507---------------------------
3508
3509All new predefined objects/control-methods are supported by the iASL
3510compiler
3511and the ACPICA runtime validation/repair (arguments and return values.)
3512New
3513predefined names include the following:
3514
3515Standard Predefined Names (Objects or Control Methods):
3516 _AEI, _CLS, _CPC, _CWS, _DEP,
3517 _DLM, _EVT, _GCP, _CRT, _GWS,
3518 _HRV, _PRE, _PSE, _SRT, _SUB.
3519
3520Resource Tags (Names used to access individual fields within resource
3521descriptors):
3522 _DBT, _DPL, _DRS, _END, _FLC,
3523 _IOR, _LIN, _MOD, _PAR, _PHA,
3524 _PIN, _PPI, _POL, _RXL, _SLV,
3525 _SPE, _STB, _TXL, _VEN.
3526
3527ACPICA External Interfaces:
3528---------------------------
3529
3530Several new interfaces have been defined for use by ACPI-related device
3531drivers and other host OS services:
3532
3533AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
3534to
3535acquire and release AML mutexes that are defined in the DSDT/SSDT tables
3536provided by the BIOS. They are intended to be used in conjunction with
3537the
3538ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
3539mutual exclusion with the AML code/interpreter.
3540
3541AcpiGetEventResources: Returns the (formatted) resource descriptors as
3542defined
3543by the ACPI 5.0 _AEI object (ACPI Event Information). This object
3544provides
3545resource descriptors associated with hardware-reduced platform events,
3546similar
3547to the AcpiGetCurrentResources interface.
3548
3549Operation Region Handlers: For General Purpose IO and Generic Serial Bus
3550operation regions, information about the Connection() object and any
3551optional
3552length information is passed to the region handler within the Context
3553parameter.
3554
3555AcpiBufferToResource: This interface converts a raw AML buffer containing
3556a
3557resource template or resource descriptor to the ACPI_RESOURCE internal
3558format
3559suitable for use by device drivers. Can be used by an operation region
3560handler
3561to convert the Connection() buffer object into a ACPI_RESOURCE.
3562
3563Miscellaneous/Tools/TestSuites:
3564-------------------------------
3565
3566Support for extended _HID names (Four alpha characters instead of three).
3567Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
3568Support for ACPI 5.0 features in the ASLTS test suite.
3569Fully updated documentation (ACPICA and iASL reference documents.)
3570
3571ACPI Table Definition Language:
3572-------------------------------
3573
3574Support for this language was implemented and released as a subsystem of
3575the
3576iASL compiler in 2010. (See the iASL compiler User Guide.)
3577
3578
3579Non-ACPI 5.0 changes for this release:
3580--------------------------------------
3581
35821) ACPICA Core Subsystem:
3583
3584Fix a problem with operation region declarations where a failure can
3585occur
3586if
3587the region name and an argument that evaluates to an object (such as the
3588region address) are in different namespace scopes. Lin Ming, ACPICA BZ
3589937.
3590
3591Do not abort an ACPI table load if an invalid space ID is found within.
3592This
3593will be caught later if the offending method is executed. ACPICA BZ 925.
3594
3595Fixed an issue with the FFixedHW space ID where the ID was not always
3596recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
3597
3598Fixed a problem with the 32-bit generation of the unix-specific OSL
3599(osunixxf.c). Lin Ming, ACPICA BZ 936.
3600
3601Several changes made to enable generation with the GCC 4.6 compiler.
3602ACPICA BZ
3603935.
3604
3605New error messages: Unsupported I/O requests (not 8/16/32 bit), and
3606Index/Bank
3607field registers out-of-range.
3608
36092) iASL Compiler/Disassembler and Tools:
3610
3611iASL: Implemented the __PATH__ operator, which returns the full pathname
3612of
3613the current source file.
3614
3615AcpiHelp: Automatically display expanded keyword information for all ASL
3616operators.
3617
3618Debugger: Add "Template" command to disassemble/dump resource template
3619buffers.
3620
3621Added a new master script to generate and execute the ASLTS test suite.
3622Automatically handles 32- and 64-bit generation. See tests/aslts.sh
3623
3624iASL: Fix problem with listing generation during processing of the
3625Switch()
3626operator where AML listing was disabled until the entire Switch block was
3627completed.
3628
3629iASL: Improve support for semicolon statement terminators. Fix "invalid
3630character" message for some cases when the semicolon is used. Semicolons
3631are
3632now allowed after every <Term> grammar element. ACPICA BZ 927.
3633
3634iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
3635923.
3636
3637Disassembler: Fix problem with disassembly of the DataTableRegion
3638operator
3639where an inadvertent "Unhandled deferred opcode" message could be
3640generated.
3641
36423) Example Code and Data Size
3643
3644These are the sizes for the OS-independent acpica.lib produced by the
3645Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3646includes the debug output trace mechanism and has a much larger code and
3647data
3648size.
3649
3650 Previous Release:
3651 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
3652 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
3653 Current Release:
3654 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
3655 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
3656
3657----------------------------------------
365822 September 2011. Summary of changes for version 20110922:
3659
36600) ACPI 5.0 News:
3661
3662Support for ACPI 5.0 in ACPICA has been underway for several months and
3663will
3664be released at the same time that ACPI 5.0 is officially released.
3665
3666The ACPI 5.0 specification is on track for release in the next few
3667months.
3668
36691) ACPICA Core Subsystem:
3670
3671Fixed a problem where the maximum sleep time for the Sleep() operator was
3672intended to be limited to two seconds, but was inadvertently limited to
367320
3674seconds instead.
3675
3676Linux and Unix makefiles: Added header file dependencies to ensure
3677correct
3678generation of ACPICA core code and utilities. Also simplified the
3679makefiles
3680considerably through the use of the vpath variable to specify search
3681paths.
3682ACPICA BZ 924.
3683
36842) iASL Compiler/Disassembler and Tools:
3685
3686iASL: Implemented support to check the access length for all fields
3687created to
3688access named Resource Descriptor fields. For example, if a resource field
3689is
3690defined to be two bits, a warning is issued if a CreateXxxxField() is
3691used
3692with an incorrect bit length. This is implemented for all current
3693resource
3694descriptor names. ACPICA BZ 930.
3695
3696Disassembler: Fixed a byte ordering problem with the output of 24-bit and
369756-
3698bit integers.
3699
3700iASL: Fixed a couple of issues associated with variable-length package
3701objects. 1) properly handle constants like One, Ones, Zero -- do not make
3702a
3703VAR_PACKAGE when these are used as a package length. 2) Allow the
3704VAR_PACKAGE
3705opcode (in addition to PACKAGE) when validating object types for
3706predefined
3707names.
3708
3709iASL: Emit statistics for all output files (instead of just the ASL input
3710and
3711AML output). Includes listings, hex files, etc.
3712
3713iASL: Added -G option to the table compiler to allow the compilation of
3714custom
3715ACPI tables. The only part of a table that is required is the standard
371636-
3717byte
3718ACPI header.
3719
3720AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
3721headers),
3722which also adds correct 64-bit support. Also, now all output filenames
3723are
3724completely lower case.
3725
3726AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
3727loading table files. A warning is issued for any such tables. The only
3728exception is an FADT. This also fixes a possible fault when attempting to
3729load
3730non-AML tables. ACPICA BZ 932.
3731
3732AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
3733a
3734missing table terminator could cause a fault when using the -p option.
3735
3736AcpiSrc: Fixed a possible divide-by-zero fault when generating file
3737statistics.
3738
37393) Example Code and Data Size
3740
3741These are the sizes for the OS-independent acpica.lib produced by the
3742Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3743includes the debug output trace mechanism and has a much larger code and
3744data
3745size.
3746
3747 Previous Release (VC 9.0):
3748 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
3749 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
3750 Current Release (VC 9.0):
3751 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
3752 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
3753
3754
3755----------------------------------------
375623 June 2011. Summary of changes for version 20110623:
3757
37581) ACPI CA Core Subsystem:
3759
3760Updated the predefined name repair mechanism to not attempt repair of a
3761_TSS
3762return object if a _PSS object is present. We can only sort the _TSS
3763return
3764package if there is no _PSS within the same scope. This is because if
3765_PSS
3766is
3767present, the ACPI specification dictates that the _TSS Power Dissipation
3768field
3769is to be ignored, and therefore some BIOSs leave garbage values in the
3770_TSS
3771Power field(s). In this case, it is best to just return the _TSS package
3772as-
3773is. Reported by, and fixed with assistance from Fenghua Yu.
3774
3775Added an option to globally disable the control method return value
3776validation
3777and repair. This runtime option can be used to disable return value
3778repair
3779