1---------------------------------------- 218 August 2015. Summary of changes for version 20150818: 3 4This release is available at https://acpica.org/downloads 5 61) ACPICA kernel-resident subsystem: 7 8Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 9Zheng. ACPICA BZ 1186. 10 11Completed development to ensure that the ACPICA Disassembler and Debugger 12are fully standalone components of ACPICA. Removed cross-component 13dependences. Lv Zheng. 14 15The max-number-of-AML-loops is now runtime configurable (previously was 16compile-time only). This is essentially a loop timeout to force-abort 17infinite AML loops. ACPCIA BZ 1192. 18 19Debugger: Cleanup output to dump ACPI names and namepaths without any 20trailing underscores. Lv Zheng. ACPICA BZ 1135. 21 22Removed unnecessary conditional compilations across the Debugger and 23Disassembler components where entire modules could be left uncompiled. 24 25The aapits test is deprecated and has been removed from the ACPICA git 26tree. The test has never been completed and has not been maintained, thus 27becoming rather useless. ACPICA BZ 1015, 794. 28 29A batch of small changes to close bugzilla and other reports: 30- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 31- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 32- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 33- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 34Moore. 35- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 36ACPICA BZ 1184. 37- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 38operators. 39- Debugger: Split debugger initialization/termination interfaces. Lv 40Zheng. 41- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 42identification. 43- AcpiExec: Add debug message during _REG method phase during table 44load/init. 45- AcpiNames: Fix a regression where some output was missing and no longer 46emitted. 47- Debugger: General cleanup and simplification. Lv Zheng. 48- Disassembler: Cleanup use of several global option variables. Lv Zheng. 49 50Example Code and Data Size: These are the sizes for the OS-independent 51acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 52debug version of the code includes the debug output trace mechanism and 53has a much larger code and data size. 54 55 Current Release: 56 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 57 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 58 Previous Release: 59 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 60 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 61 62 632) iASL Compiler/Disassembler and Tools: 64 65AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 66were not handled properly and caused load errors. Now, properly invoke 67and use the ACPICA auto-reallocate mechanism for ACPI table data 68structures. ACPICA BZ 1188 69 70AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 71BZ 1190. 72 73AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 74AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 75executed during initialization. ACPICA BZ 1187, 1189. 76 77iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 78that corresponds to each disassembled ASL statement, to simplify 79debugging. ACPICA BZ 1191. 80 81Debugger: Add option to the "objects" command to display a summary of the 82current namespace objects (Object type and count). This is displayed if 83the command is entered with no arguments. 84 85AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 86 87---------------------------------------- 8817 July 2015. Summary of changes for version 20150717: 89 901) ACPICA kernel-resident subsystem: 91 92Improved the partitioning between the Debugger and Disassembler 93components. This allows the Debugger to be used standalone within kernel 94code without the Disassembler (which is used for single stepping also). 95This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 96 97Debugger: Implemented a new command to trace the execution of control 98methods (Trace). This is especially useful for the in-kernel version of 99the debugger when file I/O may not be available for method trace output. 100See the ACPICA reference for more information. Lv Zheng. 101 102Moved all C library prototypes (used for the local versions of these 103functions when requested) to a new header, acclib.h 104Cleaned up the use of non-ANSI C library functions. These functions are 105implemented locally in ACPICA. Moved all such functions to a common 106source file, utnonansi.c 107 108Debugger: Fixed a problem with the "!!" command (get last command 109executed) where the debugger could enter an infinite loop and eventually 110crash. 111 112Removed the use of local macros that were used for some of the standard C 113library functions to automatically cast input parameters. This mostly 114affected the is* functions where the input parameter is defined to be an 115int. This required a few modifications to the main ACPICA source code to 116provide casting for these functions and eliminate possible compiler 117warnings for these parameters. 118 119Across the source code, added additional status/error checking to resolve 120issues discovered by static source code analysis tools such as Coverity. 121 122Example Code and Data Size: These are the sizes for the OS-independent 123acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 124debug version of the code includes the debug output trace mechanism and 125has a much larger code and data size. 126 127 Current Release: 128 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 129 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 130 Previous Release: 131 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 132 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 133 134 1352) iASL Compiler/Disassembler and Tools: 136 137iASL: Fixed a regression where the device map file feature no longer 138worked properly when used in conjunction with the disassembler. It only 139worked properly with the compiler itself. 140 141iASL: Implemented a new warning for method LocalX variables that are set 142but never used (similar to a C compiler such as gcc). This also applies 143to ArgX variables that are not defined by the parent method, and are 144instead (legally) used as local variables. 145 146iASL/Preprocessor: Finished the pass-through of line numbers from the 147preprocessor to the compiler. This ensures that compiler errors/warnings 148have the correct original line numbers and filenames, regardless of any 149#include files. 150 151iASL/Preprocessor: Fixed a couple of issues with comment handling and the 152pass-through of comments to the preprocessor output file (which becomes 153the compiler input file). Also fixed a problem with // comments that 154appear after a math expression. 155 156iASL: Added support for the TCPA server table to the table compiler and 157template generator. (The client table was already previously supported) 158 159iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 160identify the iASL compiler. 161 162Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 163multiple times. The new names are ACPI_SIGN_NEGATIVE and 164ACPI_SIGN_POSITIVE. 165 166AcpiHelp: Update to expand help messages for the iASL preprocessor 167directives. 168 169 170---------------------------------------- 17119 June 2015. Summary of changes for version 20150619: 172 173Two regressions in version 20150616 have been addressed: 174 175Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 176etc.) This update changes ACPICA to only use the standard headers for 177functions, or the prototypes for the local versions of the C library 178functions. Across the source code, this required some additional casts 179for some Clib invocations for portability. Moved all local prototypes to 180a new file, acclib.h 181 182Fixes several problems with recent changes to the handling of the FACS 183table that could cause some systems not to boot. 184 185 186---------------------------------------- 18716 June 2015. Summary of changes for version 20150616: 188 189 1901) ACPICA kernel-resident subsystem: 191 192Across the entire ACPICA source code base, the various macros for the C 193library functions (such as ACPI_STRLEN, etc.) have been removed and 194replaced by the standard C library names (strlen, etc.) The original 195purpose for these macros is no longer applicable. This simplification 196reduces the number of macros used in the ACPICA source code 197significantly, improving readability and maintainability. 198 199Implemented support for a new ACPI table, the OSDT. This table, the 200"override" SDT, can be loaded directly by the host OS at boot time. It 201enables the replacement of existing namespace objects that were installed 202via the DSDT and/or SSDTs. The primary purpose for this is to replace 203buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 204for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 205Moore. 206 207Added support for systems with (improperly) two FACS tables -- a "32-bit" 208table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 209X field). This change will support both automatically. There continues to 210be systems found with this issue. This support requires a change to the 211AcpiSetFirmwareWakingVector interface. Also, a public global variable has 212been added to allow the host to select which FACS is desired 213(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 214details Lv Zheng. 215 216Added a new feature to allow for systems that do not contain an FACS. 217Although this is already supported on hardware-reduced platforms, the 218feature has been extended for all platforms. The reasoning is that we do 219not want to abort the entire ACPICA initialization just because the 220system is seriously buggy and has no FACS. 221 222Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 223not correctly transcribed from the ACPI specification in ACPICA version 22420150515. 225 226Implemented support for the _CLS object in the AcpiGetObjectInfo external 227interface. 228 229Updated the definitions of the TCPA and TPM2 ACPI tables to the more 230recent TCG ACPI Specification, December 14, 2014. Table disassembler and 231compiler also updated. Note: The TCPA "server" table is not supported by 232the disassembler/table-compiler at this time. 233 234ACPI 6.0: Added definitions for the new GIC version field in the MADT. 235 236Example Code and Data Size: These are the sizes for the OS-independent 237acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 238debug version of the code includes the debug output trace mechanism and 239has a much larger code and data size. 240 241 Current Release: 242 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 243 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 244 Previous Release: 245 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 246 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 247 248 2492) iASL Compiler/Disassembler and Tools: 250 251Disassembler: Fixed a problem with the new symbolic operator disassembler 252where incorrect ASL code could be emitted in some cases for the "non- 253commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 254ShiftRight. The actual problem cases seem to be rather unusual in common 255ASL code, however. David Box. 256 257Modified the linux version of acpidump to obtain ACPI tables from not 258just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 259Zheng. 260 261iASL: Fixed a problem where the user preprocessor output file (.i) 262contained extra data that was not expected. The compiler was using this 263file as a temporary file and passed through #line directives in order to 264keep compiler error messages in sync with the input file and line number 265across multiple include files. The (.i) is no longer a temporary file as 266the compiler uses a new, different file for the original purpose. 267 268iASL: Fixed a problem where comments within the original ASL source code 269file were not passed through to the preprocessor output file, nor any 270listing files. 271 272iASL: Fixed some issues for the handling of the "#include" preprocessor 273directive and the similar (but not the same) "Include" ASL operator. 274 275iASL: Add support for the new OSDT in both the disassembler and compiler. 276 277iASL: Fixed a problem with the constant folding support where a Buffer 278object could be incorrectly generated (incorrectly formed) during a 279conversion to a Store() operator. 280 281AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 282description text for the _REV predefined name. _REV now permanently 283returns 2, as per the ACPI 6.0 specification. 284 285Debugger: Enhanced the output of the Debug ASL object for references 286produced by the Index operator. For Buffers and strings, only output the 287actual byte pointed to by the index. For packages, only print the single 288package element decoded by the index. Previously, the entire 289buffer/string/package was emitted. 290 291iASL/Table-compiler: Fixed a regression where the "generic" data types 292were no longer recognized, causing errors. 293 294 295---------------------------------------- 29615 May 2015. Summary of changes for version 20150515: 297 298This release implements most of ACPI 6.0 as described below. 299 3001) ACPICA kernel-resident subsystem: 301 302Implemented runtime argument checking and return value checking for all 303new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 304_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 305 306Example Code and Data Size: These are the sizes for the OS-independent 307acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 308debug version of the code includes the debug output trace mechanism and 309has a much larger code and data size. 310 311 Current Release: 312 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 313 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 314 Previous Release: 315 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 316 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 317 318 3192) iASL Compiler/Disassembler and Tools: 320 321iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 322names (argument count validation and return value typechecking.) 323 324iASL disassembler and table compiler: implemented support for all new 325ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 326 327iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 328tables: FADT, MADT. 329 330iASL preprocessor: Added a new directive to enable inclusion of binary 331blobs into ASL code. The new directive is #includebuffer. It takes a 332binary file as input and emits a named ascii buffer object into the ASL 333code. 334 335AcpiHelp: Added support for all new ACPI 6.0 predefined names. 336 337AcpiHelp: Added a new option, -d, to display all iASL preprocessor 338directives. 339 340AcpiHelp: Added a new option, -t, to display all known/supported ACPI 341tables. 342 343---------------------------------------- 34410 April 2015. Summary of changes for version 20150410: 345 346Reverted a change introduced in version 20150408 that caused 347a regression in the disassembler where incorrect operator 348symbols could be emitted. 349 350---------------------------------------- 35108 April 2015. Summary of changes for version 20150408: 352 353 3541) ACPICA kernel-resident subsystem: 355 356Permanently set the return value for the _REV predefined name. It now 357returns 2 (was 5). This matches other ACPI implementations. _REV will be 358deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 359for ACPI 2.0 and later. It should never be used to differentiate or 360identify operating systems. 361 362Added the "Windows 2015" string to the _OSI support. ACPICA will now 363return TRUE to a query with this string. 364 365Fixed several issues with the local version of the printf function. 366 367Added the C99 compiler option (-std=c99) to the Unix makefiles. 368 369 Current Release: 370 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 371 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 372 Previous Release: 373 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 374 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 375 376 3772) iASL Compiler/Disassembler and Tools: 378 379iASL: Implemented an enhancement to the constant folding feature to 380transform the parse tree to a simple Store operation whenever possible: 381 Add (2, 3, X) ==> is converted to: Store (5, X) 382 X = 2 + 3 ==> is converted to: Store (5, X) 383 384Updated support for the SLIC table (Software Licensing Description Table) 385in both the Data Table compiler and the disassembler. The SLIC table 386support now conforms to "Microsoft Software Licensing Tables (SLIC and 387MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 388following the ACPI header is now defined to be "Proprietary Data", and as 389such, can only be entered or displayed as a hex data block. 390 391Implemented full support for the MSDM table as described in the document 392above. Note: The format of MSDM is similar to SLIC. Any MSDM data 393following the ACPI header is defined to be "Proprietary Data", and can 394only be entered or displayed as a hex data block. 395 396Implemented the -Pn option for the iASL Table Compiler (was only 397implemented for the ASL compiler). This option disables the iASL 398preprocessor. 399 400Disassembler: For disassembly of Data Tables, added a comment field 401around the Ascii equivalent data that is emitted as part of the "Raw 402Table Data" block. This prevents the iASL Preprocessor from possible 403confusion if/when the table is compiled. 404 405Disassembler: Added an option (-df) to force the disassembler to assume 406that the table being disassembled contains valid AML. This feature is 407useful for disassembling AML files that contain ACPI signatures other 408than DSDT or SSDT (such as OEMx or other signatures). 409 410Changes for the EFI version of the tools: 4111) Fixed a build error/issue 4122) Fixed a cast warning 413 414iASL: Fixed a path issue with the __FILE__ operator by making the 415directory prefix optional within the internal SplitInputFilename 416function. 417 418Debugger: Removed some unused global variables. 419 420Tests: Updated the makefile for proper generation of the AAPITS suite. 421 422---------------------------------------- 42304 February 2015. Summary of changes for version 20150204: 424 425ACPICA kernel-resident subsystem: 426 427Updated all ACPICA copyrights and signons to 2014. Added the 2014 428copyright to all module headers and signons, including the standard Linux 429header. This affects virtually every file in the ACPICA core subsystem, 430iASL compiler, all ACPICA utilities, and the test suites. 431 432Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 433A raw gpe handling mechanism was created to allow better handling of GPE 434storms that aren't easily managed by the normal handler. The raw handler 435allows disabling/renabling of the the GPE so that interrupt storms can be 436avoided in cases where events cannot be timely serviced. In this 437scenario, handlers should use the AcpiSetGpe() API to disable/enable the 438GPE. This API will leave the reference counts undisturbed, thereby 439preventing unintentional clearing of the GPE when the intent in only to 440temporarily disable it. Raw handlers allow enabling and disabling of a 441GPE by removing GPE register locking. As such, raw handlers much provide 442their own locks while using GPE API's to protect access to GPE data 443structures. 444Lv Zheng 445 446Events: Always modify GPE registers under the GPE lock. 447Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 448values. Reported as bug by joe.liu@apple.com. 449 450Unix makefiles: Separate option to disable optimizations and 451_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 452NOOPT disable option and creates a separate flag (NOFORTIFY) for this 453purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 454errors when building ACPICA. This allows disabling the option without 455also having to disable optimazations. 456David Box 457 458 Current Release: 459 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 460 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 461 462---------------------------------------- 46307 November 2014. Summary of changes for version 20141107: 464 465This release is available at https://acpica.org/downloads 466 467This release introduces and implements language extensions to ASL that 468provide support for symbolic ("C-style") operators and expressions. These 469language extensions are known collectively as ASL+. 470 471 4721) iASL Compiler/Disassembler and Tools: 473 474Disassembler: Fixed a problem with disassembly of the UartSerialBus 475macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 476Box. 477 478Disassembler: Fixed the Unicode macro support to add escape sequences. 479All non-printable ASCII values are emitted as escape sequences, as well 480as the standard escapes for quote and backslash. Ensures that the 481disassembled macro can be correctly recompiled. 482 483iASL: Added Printf/Fprintf macros for formatted output. These macros are 484translated to existing AML Concatenate and Store operations. Printf 485writes to the ASL Debug object. Fprintf allows the specification of an 486ASL name as the target. Only a single format specifier is required, %o, 487since the AML interpreter dynamically converts objects to the required 488type. David E. Box. 489 490 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 491 (Concatenate (Concatenate (Concatenate ("", Arg0), 492 ": Unexpected value for "), Arg1), ", "), Arg2), 493 " at line "), Arg3), Debug) 494 495 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 496 Arg0, Arg1, Arg2, Arg3) 497 498 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 499 ("", Arg1), ": "), Arg0), " Successful"), STR1) 500 501 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 502 503iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 504ASL parse tree before the AML code is generated. This allows blocks of 505ASL code to be removed in order to help locate and identify problem 506devices and/or code. David E. Box. 507 508AcpiExec: Added support (-fi) for an optional namespace object 509initialization file. This file specifies initial values for namespace 510objects as necessary for debugging and testing different ASL code paths 511that may be taken as a result of BIOS options. 512 513 5142) Overview of symbolic operator support for ASL (ASL+) 515------------------------------------------------------- 516 517As an extension to the ASL language, iASL implements support for symbolic 518(C-style) operators for math and logical expressions. This can greatly 519simplify ASL code as well as improve both readability and 520maintainability. These language extensions can exist concurrently with 521all legacy ASL code and expressions. 522 523The symbolic extensions are 100% compatible with existing AML 524interpreters, since no new AML opcodes are created. To implement the 525extensions, the iASL compiler transforms the symbolic expressions into 526the legacy ASL/AML equivalents at compile time. 527 528Full symbolic expressions are supported, along with the standard C 529precedence and associativity rules. 530 531Full disassembler support for the symbolic expressions is provided, and 532creates an automatic migration path for existing ASL code to ASL+ code 533via the disassembly process. By default, the disassembler now emits ASL+ 534code with symbolic expressions. An option (-dl) is provided to force the 535disassembler to emit legacy ASL code if desired. 536 537Below is the complete list of the currently supported symbolic operators 538with examples. See the iASL User Guide for additional information. 539 540 541ASL+ Syntax Legacy ASL Equivalent 542----------- --------------------- 543 544 // Math operators 545 546Z = X + Y Add (X, Y, Z) 547Z = X - Y Subtract (X, Y, Z) 548Z = X * Y Multiply (X, Y, Z) 549Z = X / Y Divide (X, Y, , Z) 550Z = X % Y Mod (X, Y, Z) 551Z = X << Y ShiftLeft (X, Y, Z) 552Z = X >> Y ShiftRight (X, Y, Z) 553Z = X & Y And (X, Y, Z) 554Z = X | Y Or (X, Y, Z) 555Z = X ^ Y Xor (X, Y, Z) 556Z = ~X Not (X, Z) 557X++ Increment (X) 558X-- Decrement (X) 559 560 // Logical operators 561 562(X == Y) LEqual (X, Y) 563(X != Y) LNotEqual (X, Y) 564(X < Y) LLess (X, Y) 565(X > Y) LGreater (X, Y) 566(X <= Y) LLessEqual (X, Y) 567(X >= Y) LGreaterEqual (X, Y) 568(X && Y) LAnd (X, Y) 569(X || Y) LOr (X, Y) 570(!X) LNot (X) 571 572 // Assignment and compound assignment operations 573 574X = Y Store (Y, X) 575X += Y Add (X, Y, X) 576X -= Y Subtract (X, Y, X) 577X *= Y Multiply (X, Y, X) 578X /= Y Divide (X, Y, , X) 579X %= Y Mod (X, Y, X) 580X <<= Y ShiftLeft (X, Y, X) 581X >>= Y ShiftRight (X, Y, X) 582X &= Y And (X, Y, X) 583X |= Y Or (X, Y, X) 584X ^= Y Xor (X, Y, X) 585 586 5873) ASL+ Examples: 588----------------- 589 590Legacy ASL: 591 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 592 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 5930x03FB), 594 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 595 { 596 And (MEMB, 0xFFFFFFF0, SRMB) 597 Store (MEMB, Local2) 598 Store (PDBM, Local1) 599 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 600 Store (SRMB, MEMB) 601 Or (PDBM, 0x02, PDBM) 602 } 603 604ASL+ version: 605 If (((R510 & 0x03FB) == 0x02E0) || 606 ((R520 & 0x03FB) == 0x02E0) || 607 ((R530 & 0x03FB) == 0x02E0) || 608 ((R540 & 0x03FB) == 0x02E0)) 609 { 610 SRMB = (MEMB & 0xFFFFFFF0) 611 Local2 = MEMB 612 Local1 = PDBM 613 PDBM &= 0xFFFFFFFFFFFFFFF9 614 MEMB = SRMB 615 PDBM |= 0x02 616 } 617 618Legacy ASL: 619 Store (0x1234, Local1) 620 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 621 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 622 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 623 Store (Index (PKG1, 0x03), Local6) 624 Store (Add (Local3, Local2), Debug) 625 Add (Local1, 0x0F, Local2) 626 Add (Local1, Multiply (Local2, Local3), Local2) 627 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 628 629ASL+ version: 630 Local1 = 0x1234 631 Local3 = (((Local1 + TEST) + 0x20) * Local2) 632 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 633 Local3 = (Local1 + (TEST + (0x20 * Local2))) 634 Local6 = Index (PKG1, 0x03) 635 Debug = (Local3 + Local2) 636 Local2 = (Local1 + 0x0F) 637 Local2 = (Local1 + (Local2 * Local3)) 638 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 639 640 641---------------------------------------- 64226 September 2014. Summary of changes for version 20140926: 643 6441) ACPICA kernel-resident subsystem: 645 646Updated the GPIO operation region handler interface (GeneralPurposeIo). 647In order to support GPIO Connection objects with multiple pins, along 648with the related Field objects, the following changes to the interface 649have been made: The Address is now defined to be the offset in bits of 650the field unit from the previous invocation of a Connection. It can be 651viewed as a "Pin Number Index" into the connection resource descriptor. 652The BitWidth is the exact bit width of the field. It is usually one bit, 653but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 654additional information and examples. 655 656GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 657corresponding _Lxx/_Exx methods are disabled (they may have been enabled 658by the firmware), so that they cannot fire until they are enabled via 659AcpiUpdateAllGpes. Rafael J. Wysocki. 660 661Added a new return flag for the Event/GPE status interfaces -- 662AcpiGetEventStatus and AcpiGetGpeStatus. The new 663ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 664GPE currently has a handler associated with it, and can thus actually 665affect the system. Lv Zheng. 666 667Example Code and Data Size: These are the sizes for the OS-independent 668acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 669debug version of the code includes the debug output trace mechanism and 670has a much larger code and data size. 671 672 Current Release: 673 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 674 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 675 Previous Release: 676 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 677 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 678 6792) iASL Compiler/Disassembler and Tools: 680 681iASL: Fixed a memory allocation/free regression introduced in 20140828 682that could cause the compiler to crash. This was introduced inadvertently 683during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 6841113. 685 686iASL: Removed two error messages that have been found to create false 687positives, until they can be fixed and fully validated (ACPICA BZ 1112): 6881) Illegal forward reference within a method 6892) Illegal reference across two methods 690 691iASL: Implemented a new option (-lm) to create a hardware mapping file 692that summarizes all GPIO, I2C, SPI, and UART connections. This option 693works for both the compiler and disassembler. See the iASL compiler user 694guide for additional information and examples (section 6.4.6). 695 696AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 697version 2. This corrects the AE_BAD_HEADER exception seen on systems with 698a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 699 700AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 701unless STDIN is actually a terminal. Assists with batch-mode processing. 702ACPICA BZ 1114. 703 704Disassembler/AcpiHelp: Added another large group of recognized _HID 705values. 706 707 708---------------------------------------- 70928 August 2014. Summary of changes for version 20140828: 710 7111) ACPICA kernel-resident subsystem: 712 713Fixed a problem related to the internal use of the Timer() operator where 714a 64-bit divide could cause an attempted link to a double-precision math 715library. This divide is not actually necessary, so the code was 716restructured to eliminate it. Lv Zheng. 717 718ACPI 5.1: Added support for the runtime validation of the _DSD package 719(similar to the iASL support). 720 721ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 722SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 723 724Example Code and Data Size: These are the sizes for the OS-independent 725acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 726debug version of the code includes the debug output trace mechanism and 727has a much larger code and data size. 728 729 Current Release: 730 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 731 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 732 Previous Release: 733 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 734 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 735 7362) iASL Compiler/Disassembler and Tools: 737 738AcpiExec: Fixed a problem on unix systems where the original terminal 739state was not always properly restored upon exit. Seen when using the -v 740option. ACPICA BZ 1104. 741 742iASL: Fixed a problem with the validation of the ranges/length within the 743Memory24 resource descriptor. There was a boundary condition when the 744range was equal to the (length -1) caused by the fact that these values 745are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 746 747Disassembler: Fixed a problem with the GpioInt descriptor interrupt 748polarity 749flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 750is 751now supported properly. 752 753ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 754in the disassembler, data table compiler, and table template generator. 755 756iASL: Added a requirement for Device() objects that one of either a _HID 757or _ADR must exist within the scope of a Device, as per the ACPI 758specification. Remove a similar requirement that was incorrectly in place 759for the _DSD object. 760 761iASL: Added error detection for illegal named references within control 762methods that would cause runtime failures. Now trapped as errors are: 1) 763References to objects within a non-parent control method. 2) Forward 764references (within a method) -- for control methods, AML interpreters use 765a one-pass parse of control methods. ACPICA BZ 1008. 766 767iASL: Added error checking for dependencies related to the _PSx power 768methods. ACPICA BZ 1029. 7691) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 770_PS3. 7712) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 772scope. 773 774iASL and table compiler: Cleanup miscellaneous memory leaks by fully 775deploying the existing object and string caches and adding new caches for 776the table compiler. 777 778iASL: Split the huge parser source file into multiple subfiles to improve 779manageability. Generation now requires the M4 macro preprocessor, which 780is part of the Bison distribution on both unix and windows platforms. 781 782AcpiSrc: Fixed and removed all extraneous warnings generated during 783entire ACPICA source code scan and/or conversion. 784 785 786---------------------------------------- 787 78824 July 2014. Summary of changes for version 20140724: 789 790The ACPI 5.1 specification has been released and is available at: 791http://uefi.org/specs/access 792 793 7940) ACPI 5.1 support in ACPICA: 795 796ACPI 5.1 is fully supported in ACPICA as of this release. 797 798New predefined names. Support includes iASL and runtime ACPICA 799validation. 800 _CCA (Cache Coherency Attribute). 801 _DSD (Device-Specific Data). David Box. 802 803Modifications to existing ACPI tables. Support includes headers, iASL 804Data Table compiler, disassembler, and the template generator. 805 FADT - New fields and flags. Graeme Gregory. 806 GTDT - One new subtable and new fields. Tomasz Nowicki. 807 MADT - Two new subtables. Tomasz Nowicki. 808 PCCT - One new subtable. 809 810Miscellaneous. 811 New notification type for System Resource Affinity change events. 812 813 8141) ACPICA kernel-resident subsystem: 815 816Fixed a regression introduced in 20140627 where a fault can happen during 817the deletion of Alias AML namespace objects. The problem affected both 818the core ACPICA and the ACPICA tools including iASL and AcpiExec. 819 820Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 821simple mechanism to enable wake GPEs that have no associated handler or 822control method. Rafael Wysocki. 823 824Updated the AcpiEnableGpe interface to disallow the enable if there is no 825handler or control method associated with the particular GPE. This will 826help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 827 828Updated GPE handling and dispatch by disabling the GPE before clearing 829the status bit for edge-triggered GPEs. Lv Zheng. 830 831Added Timer() support to the AML Debug object. The current timer value is 832now displayed with each invocation of (Store to) the debug object to 833enable simple generation of execution times for AML code (method 834execution for example.) ACPICA BZ 1093. 835 836Example Code and Data Size: These are the sizes for the OS-independent 837acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 838debug version of the code includes the debug output trace mechanism and 839has a much larger code and data size. 840 841 Current Release: 842 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 843 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 844 Previous Release: 845 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 846 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 847 848 8492) iASL Compiler/Disassembler and Tools: 850 851Fixed an issue with the recently added local printf implementation, 852concerning width/precision specifiers that could cause incorrect output. 853Lv Zheng. ACPICA BZ 1094. 854 855Disassembler: Added support to detect buffers that contain UUIDs and 856disassemble them to an invocation of the ToUUID operator. Also emit 857commented descriptions of known ACPI-related UUIDs. 858 859AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 860-u. Adds three new files. 861 862iASL: Update table compiler and disassembler for DMAR table changes that 863were introduced in September 2013. With assistance by David Woodhouse. 864 865---------------------------------------- 86627 June 2014. Summary of changes for version 20140627: 867 8681) ACPICA kernel-resident subsystem: 869 870Formatted Output: Implemented local versions of standard formatted output 871utilities such as printf, etc. Over time, it has been discovered that 872there are in fact many portability issues with printf, and the addition 873of this feature will fix/prevent these issues once and for all. Some 874known issues are summarized below: 875 8761) Output of 64-bit values is not portable. For example, UINT64 is %ull 877for the Linux kernel and is %uI64 for some MSVC versions. 8782) Invoking printf consistently in a manner that is portable across both 87932-bit and 64-bit platforms is difficult at best in many situations. 8803) The output format for pointers varies from system to system (leading 881zeros especially), and leads to inconsistent output from ACPICA across 882platforms. 8834) Certain platform-specific printf formats may conflict with ACPICA use. 8845) If there is no local C library available, ACPICA now has local support 885for printf. 886 887-- To address these printf issues in a complete manner, ACPICA now 888directly implements a small subset of printf format specifiers, only 889those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 890 891Implemented support for ACPICA generation within the EFI environment. 892Initially, the AcpiDump utility is supported in the UEFI shell 893environment. Lv Zheng. 894 895Added a new external interface, AcpiLogError, to improve ACPICA 896portability. This allows the host to redirect error messages from the 897ACPICA utilities. Lv Zheng. 898 899Added and deployed new OSL file I/O interfaces to improve ACPICA 900portability: 901 AcpiOsOpenFile 902 AcpiOsCloseFile 903 AcpiOsReadFile 904 AcpiOsWriteFile 905 AcpiOsGetFileOffset 906 AcpiOsSetFileOffset 907There are C library implementations of these functions in the new file 908service_layers/oslibcfs.c -- however, the functions can be implemented by 909the local host in any way necessary. Lv Zheng. 910 911Implemented a mechanism to disable/enable ACPI table checksum validation 912at runtime. This can be useful when loading tables very early during OS 913initialization when it may not be possible to map the entire table in 914order to compute the checksum. Lv Zheng. 915 916Fixed a buffer allocation issue for the Generic Serial Bus support. 917Originally, a fixed buffer length was used. This change allows for 918variable-length buffers based upon the protocol indicated by the field 919access attributes. Reported by Lan Tianyu. Lv Zheng. 920 921Fixed a problem where an object detached from a namespace node was not 922properly terminated/cleared and could cause a circular list problem if 923reattached. ACPICA BZ 1063. David Box. 924 925Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 926 927Fixed a possible memory leak in an error return path within the function 928AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 929 930Example Code and Data Size: These are the sizes for the OS-independent 931acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 932debug version of the code includes the debug output trace mechanism and 933has a much larger code and data size. 934 935 Current Release: 936 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 937 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 938 Previous Release: 939 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 940 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 941 942 9432) iASL Compiler/Disassembler and Tools: 944 945Disassembler: Add dump of ASCII equivalent text within a comment at the 946end of each line of the output for the Buffer() ASL operator. 947 948AcpiDump: Miscellaneous changes: 949 Fixed repetitive table dump in -n mode. 950 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 951the ACPI 2.0 GUID fails. 952 953iASL: Fixed a problem where the compiler could fault if incorrectly given 954an acpidump output file as input. ACPICA BZ 1088. David Box. 955 956AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 957they are invoked without any arguments. 958 959Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 9601086. Colin Ian King. 961 962Disassembler: Cleaned up a block of code that extracts a parent Op 963object. Added a comment that explains that the parent is guaranteed to be 964valid in this case. ACPICA BZ 1069. 965 966---------------------------------------- 96724 April 2014. Summary of changes for version 20140424: 968 9691) ACPICA kernel-resident subsystem: 970 971Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 972Some of these tables are known to contain a trailing NULL entry. Lv 973Zheng. 974 975Removed an extraneous error message for the case where there are a large 976number of system GPEs (> 124). This was the "32-bit FADT register is too 977long to convert to GAS struct" message, which is irrelevant for GPEs 978since the GPEx_BLK_LEN fields of the FADT are always used instead of the 979(limited capacity) GAS bit length. Also, several changes to ensure proper 980support for GPE numbers > 255, where some "GPE number" fields were 8-bits 981internally. 982 983Implemented and deployed additional configuration support for the public 984ACPICA external interfaces. Entire classes of interfaces can now be 985easily modified or configured out, replaced by stubbed inline functions 986by default. Lv Zheng. 987 988Moved all public ACPICA runtime configuration globals to the public 989ACPICA external interface file for convenience. Also, removed some 990obsolete/unused globals. See the file acpixf.h. Lv Zheng. 991 992Documentation: Added a new section to the ACPICA reference describing the 993maximum number of GPEs that can be supported by the FADT-defined GPEs in 994block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 995reference. 996 997Example Code and Data Size: These are the sizes for the OS-independent 998acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 999debug version of the code includes the debug output trace mechanism and 1000has a much larger code and data size. 1001 1002 Current Release: 1003 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 1004 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 1005 Previous Release: 1006 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1007 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1008 1009 10102) iASL Compiler/Disassembler and Tools: 1011 1012iASL and disassembler: Add full support for the LPIT table (Low Power 1013Idle Table). Includes support in the disassembler, data table compiler, 1014and template generator. 1015 1016AcpiDump utility: 10171) Add option to force the use of the RSDT (over the XSDT). 10182) Improve validation of the RSDP signature (use 8 chars instead of 4). 1019 1020iASL: Add check for predefined packages that are too large. For 1021predefined names that contain subpackages, check if each subpackage is 1022too large. (Check for too small already exists.) 1023 1024Debugger: Updated the GPE command (which simulates a GPE by executing the 1025GPE code paths in ACPICA). The GPE device is now optional, and defaults 1026to the GPE 0/1 FADT-defined blocks. 1027 1028Unix application OSL: Update line-editing support. Add additional error 1029checking and take care not to reset terminal attributes on exit if they 1030were never set. This should help guarantee that the terminal is always 1031left in the previous state on program exit. 1032 1033---------------------------------------- 103425 March 2014. Summary of changes for version 20140325: 1035 10361) ACPICA kernel-resident subsystem: 1037 1038Updated the auto-serialize feature for control methods. This feature 1039automatically serializes all methods that create named objects in order 1040to prevent runtime errors. The update adds support to ignore the 1041currently executing AML SyncLevel when invoking such a method, in order 1042to prevent disruption of any existing SyncLevel priorities that may exist 1043in the AML code. Although the use of SyncLevels is relatively rare, this 1044change fixes a regression where an AE_AML_MUTEX_ORDER exception can 1045appear on some machines starting with the 20140214 release. 1046 1047Added a new external interface to allow the host to install ACPI tables 1048very early, before the namespace is even created. AcpiInstallTable gives 1049the host additional flexibility for ACPI table management. Tables can be 1050installed directly by the host as if they had originally appeared in the 1051XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 1052(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 1053with additional internal restructuring and cleanup. See the ACPICA 1054Reference for interface details. Lv Zheng. 1055 1056Added validation of the checksum for all incoming dynamically loaded 1057tables (via external interfaces or via AML Load/LoadTable operators). Lv 1058Zheng. 1059 1060Updated the use of the AcpiOsWaitEventsComplete interface during Notify 1061and GPE handler removal. Restructured calls to eliminate possible race 1062conditions. Lv Zheng. 1063 1064Added a warning for the use/execution of the ASL/AML Unload (table) 1065operator. This will help detect and identify machines that use this 1066operator if and when it is ever used. This operator has never been seen 1067in the field and the usage model and possible side-effects of the drastic 1068runtime action of a full table removal are unknown. 1069 1070Reverted the use of #pragma push/pop which was introduced in the 20140214 1071release. It appears that push and pop are not implemented by enough 1072compilers to make the use of this feature feasible for ACPICA at this 1073time. However, these operators may be deployed in a future ACPICA 1074release. 1075 1076Added the missing EXPORT_SYMBOL macros for the install and remove SCI 1077handler interfaces. 1078 1079Source code generation: 10801) Disabled the use of the "strchr" macro for the gcc-specific 1081generation. For some versions of gcc, this macro can periodically expose 1082a compiler bug which in turn causes compile-time error(s). 10832) Added support for PPC64 compilation. Colin Ian King. 1084 1085Example Code and Data Size: These are the sizes for the OS-independent 1086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1087debug version of the code includes the debug output trace mechanism and 1088has a much larger code and data size. 1089 1090 Current Release: 1091 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1092 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1093 Previous Release: 1094 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1095 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1096 1097 10982) iASL Compiler/Disassembler and Tools: 1099 1100Disassembler: Added several new features to improve the readability of 1101the resulting ASL code. Extra information is emitted within comment 1102fields in the ASL code: 11031) Known _HID/_CID values are decoded to descriptive text. 11042) Standard values for the Notify() operator are decoded to descriptive 1105text. 11063) Target operands are expanded to full pathnames (in a comment) when 1107possible. 1108 1109Disassembler: Miscellaneous updates for extern() handling: 11101) Abort compiler if file specified by -fe option does not exist. 11112) Silence unnecessary warnings about argument count mismatches. 11123) Update warning messages concerning unresolved method externals. 11134) Emit "UnknownObj" keyword for externals whose type cannot be 1114determined. 1115 1116AcpiHelp utility: 11171) Added the -a option to display both the ASL syntax and the AML 1118encoding for an input ASL operator. This effectively displays all known 1119information about an ASL operator with one AcpiHelp invocation. 11202) Added substring match support (similar to a wildcard) for the -i 1121(_HID/PNP IDs) option. 1122 1123iASL/Disassembler: Since this tool does not yet support execution on big- 1124endian machines, added detection of endianness and an error message if 1125execution is attempted on big-endian. Support for big-endian within iASL 1126is a feature that is on the ACPICA to-be-done list. 1127 1128AcpiBin utility: 11291) Remove option to extract binary files from an acpidump; this function 1130is made obsolete by the AcpiXtract utility. 11312) General cleanup of open files and allocated buffers. 1132 1133---------------------------------------- 113414 February 2014. Summary of changes for version 20140214: 1135 11361) ACPICA kernel-resident subsystem: 1137 1138Implemented a new mechanism to proactively prevent problems with ill- 1139behaved reentrant control methods that create named ACPI objects. This 1140behavior is illegal as per the ACPI specification, but is nonetheless 1141frequently seen in the field. Previously, this could lead to an 1142AE_ALREADY_EXISTS exception if the method was actually entered by more 1143than one thread. This new mechanism detects such methods at table load 1144time and marks them "serialized" to prevent reentrancy. A new global 1145option, AcpiGbl_AutoSerializeMethods, has been added to disable this 1146feature if desired. This mechanism and global option obsoletes and 1147supersedes the previous AcpiGbl_SerializeAllMethods option. 1148 1149Added the "Windows 2013" string to the _OSI support. ACPICA will now 1150respond TRUE to _OSI queries with this string. It is the stated policy of 1151ACPICA to add new strings to the _OSI support as soon as possible after 1152they are defined. See the full ACPICA _OSI policy which has been added to 1153the utilities/utosi.c file. 1154 1155Hardened/updated the _PRT return value auto-repair code: 11561) Do not abort the repair on a single subpackage failure, continue to 1157check all subpackages. 11582) Add check for the minimum subpackage length (4). 11593) Properly handle extraneous NULL package elements. 1160 1161Added support to avoid the possibility of infinite loops when traversing 1162object linked lists. Never allow an infinite loop, even in the face of 1163corrupted object lists. 1164 1165ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 1166pack(pop) directives to ensure that the ACPICA headers are independent of 1167compiler settings or other host headers. 1168 1169Example Code and Data Size: These are the sizes for the OS-independent 1170acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1171debug version of the code includes the debug output trace mechanism and 1172has a much larger code and data size. 1173 1174 Current Release: 1175 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1176 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1177 Previous Release: 1178 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 1179 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 1180 1181 11822) iASL Compiler/Disassembler and Tools: 1183 1184iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 1185first reserved field was incorrectly forced to have a value of zero. This 1186change correctly forces the field to have a value of one. ACPICA BZ 1081. 1187 1188Debugger: Added missing support for the "Extra" and "Data" subobjects 1189when displaying object data. 1190 1191Debugger: Added support to display entire object linked lists when 1192displaying object data. 1193 1194iASL: Removed the obsolete -g option to obtain ACPI tables from the 1195Windows registry. This feature has been superseded by the acpidump 1196utility. 1197 1198---------------------------------------- 119914 January 2014. Summary of changes for version 20140114: 1200 12011) ACPICA kernel-resident subsystem: 1202 1203Updated all ACPICA copyrights and signons to 2014. Added the 2014 1204copyright to all module headers and signons, including the standard Linux 1205header. This affects virtually every file in the ACPICA core subsystem, 1206iASL compiler, all ACPICA utilities, and the test suites. 1207 1208Improved parameter validation for AcpiInstallGpeBlock. Added the 1209following checks: 12101) The incoming device handle refers to type ACPI_TYPE_DEVICE. 12112) There is not already a GPE block attached to the device. 1212Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 1213device. 1214 1215Correctly support "references" in the ACPI_OBJECT. This change fixes the 1216support to allow references (namespace nodes) to be passed as arguments 1217to control methods via the evaluate object interface. This is probably 1218most useful for testing purposes, however. 1219 1220Improved support for 32/64 bit physical addresses in printf()-like 1221output. This change improves the support for physical addresses in printf 1222debug statements and other output on both 32-bit and 64-bit hosts. It 1223consistently outputs the appropriate number of bytes for each host. The 1224%p specifier is unsatisfactory since it does not emit uniform output on 1225all hosts/clib implementations (on some, leading zeros are not supported, 1226leading to difficult-to-read output). 1227 1228Example Code and Data Size: These are the sizes for the OS-independent 1229acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1230debug version of the code includes the debug output trace mechanism and 1231has a much larger code and data size. 1232 1233 Current Release: 1234 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 1235 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 1236 Previous Release: 1237 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1238 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1239 1240 12412) iASL Compiler/Disassembler and Tools: 1242 1243iASL: Fix a possible fault when using the Connection() operator. Fixes a 1244problem if the parent Field definition for the Connection operator refers 1245to an operation region that does not exist. ACPICA BZ 1064. 1246 1247AcpiExec: Load of local test tables is now optional. The utility has the 1248capability to load some various tables to test features of ACPICA. 1249However, there are enough of them that the output of the utility became 1250confusing. With this change, only the required local tables are displayed 1251(RSDP, XSDT, etc.) along with the actual tables loaded via the command 1252line specification. This makes the default output simler and easier to 1253understand. The -el command line option restores the original behavior 1254for testing purposes. 1255 1256AcpiExec: Added support for overlapping operation regions. This change 1257expands the simulation of operation regions by supporting regions that 1258overlap within the given address space. Supports SystemMemory and 1259SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 1260 1261AcpiExec: Added region handler support for PCI_Config and EC spaces. This 1262allows AcpiExec to simulate these address spaces, similar to the current 1263support for SystemMemory and SystemIO. 1264 1265Debugger: Added new command to read/write/compare all namespace objects. 1266The command "test objects" will exercise the entire namespace by writing 1267new values to each data object, and ensuring that the write was 1268successful. The original value is then restored and verified. 1269 1270Debugger: Added the "test predefined" command. This change makes this 1271test public and puts it under the new "test" command. The test executes 1272each and every predefined name within the current namespace. 1273 1274---------------------------------------- 127518 December 2013. Summary of changes for version 20131218: 1276 1277Global note: The ACPI 5.0A specification was released this month. There 1278are no changes needed for ACPICA since this release of ACPI is an 1279errata/clarification release. The specification is available at 1280acpi.info. 1281 1282 12831) ACPICA kernel-resident subsystem: 1284 1285Added validation of the XSDT root table if it is present. Some older 1286platforms contain an XSDT that is ill-formed or otherwise invalid (such 1287as containing some or all entries that are NULL pointers). This change 1288adds a new function to validate the XSDT before actually using it. If the 1289XSDT is found to be invalid, ACPICA will now automatically fall back to 1290using the RSDT instead. Original implementation by Zhao Yakui. Ported to 1291ACPICA and enhanced by Lv Zheng and Bob Moore. 1292 1293Added a runtime option to ignore the XSDT and force the use of the RSDT. 1294This change adds a runtime option that will force ACPICA to use the RSDT 1295instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 1296requires that an XSDT be used instead of the RSDT, the XSDT has been 1297found to be corrupt or ill-formed on some machines. Lv Zheng. 1298 1299Added a runtime option to favor 32-bit FADT register addresses over the 130064-bit addresses. This change adds an option to favor 32-bit FADT 1301addresses when there is a conflict between the 32-bit and 64-bit versions 1302of the same register. The default behavior is to use the 64-bit version 1303in accordance with the ACPI specification. This can now be overridden via 1304the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 1305 1306During the change above, the internal "Convert FADT" and "Verify FADT" 1307functions have been merged to simplify the code, making it easier to 1308understand and maintain. ACPICA BZ 933. 1309 1310Improve exception reporting and handling for GPE block installation. 1311Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 1312status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 1313 1314Added helper macros to extract bus/segment numbers from the HEST table. 1315This change adds two macros to extract the encoded bus and segment 1316numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 1317Betty Dall <betty.dall@hp.com> 1318 1319Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 1320by ACPICA. It is not a public macro, so it should have no effect on 1321existing OSV code. Lv Zheng. 1322 1323Example Code and Data Size: These are the sizes for the OS-independent 1324acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1325debug version of the code includes the debug output trace mechanism and 1326has a much larger code and data size. 1327 1328 Current Release: 1329 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1330 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1331 Previous Release: 1332 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1333 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1334 1335 13362) iASL Compiler/Disassembler and Tools: 1337 1338Disassembler: Improved pathname support for emitted External() 1339statements. This change adds full pathname support for external names 1340that have been resolved internally by the inclusion of additional ACPI 1341tables (via the iASL -e option). Without this change, the disassembler 1342can emit multiple externals for the same object, or it become confused 1343when the Scope() operator is used on an external object. Overall, greatly 1344improves the ability to actually recompile the emitted ASL code when 1345objects a referenced across multiple ACPI tables. Reported by Michael 1346Tsirkin (mst@redhat.com). 1347 1348Tests/ASLTS: Updated functional control suite to execute with no errors. 1349David Box. Fixed several errors related to the testing of the interpreter 1350slack mode. Lv Zheng. 1351 1352iASL: Added support to detect names that are declared within a control 1353method, but are unused (these are temporary names that are only valid 1354during the time the method is executing). A remark is issued for these 1355cases. ACPICA BZ 1022. 1356 1357iASL: Added full support for the DBG2 table. Adds full disassembler, 1358table compiler, and template generator support for the DBG2 table (Debug 1359Port 2 table). 1360 1361iASL: Added full support for the PCCT table, update the table definition. 1362Updates the PCCT table definition in the actbl3.h header and adds table 1363compiler and template generator support. 1364 1365iASL: Added an option to emit only error messages (no warnings/remarks). 1366The -ve option will enable only error messages, warnings and remarks are 1367suppressed. This can simplify debugging when only the errors are 1368important, such as when an ACPI table is disassembled and there are many 1369warnings and remarks -- but only the actual errors are of real interest. 1370 1371Example ACPICA code (source/tools/examples): Updated the example code so 1372that it builds to an actual working program, not just example code. Added 1373ACPI tables and execution of an example control method in the DSDT. Added 1374makefile support for Unix generation. 1375 1376---------------------------------------- 137715 November 2013. Summary of changes for version 20131115: 1378 1379This release is available at https://acpica.org/downloads 1380 1381 13821) ACPICA kernel-resident subsystem: 1383 1384Resource Manager: Fixed loop termination for the "get AML length" 1385function. The loop previously had an error termination on a NULL resource 1386pointer, which can never happen since the loop simply increments a valid 1387resource pointer. This fix changes the loop to terminate with an error on 1388an invalid end-of-buffer condition. The problem can be seen as an 1389infinite loop by callers to AcpiSetCurrentResources with an invalid or 1390corrupted resource descriptor, or a resource descriptor that is missing 1391an END_TAG descriptor. Reported by Dan Carpenter 1392<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 1393 1394Table unload and ACPICA termination: Delete all attached data objects 1395during namespace node deletion. This fix updates namespace node deletion 1396to delete the entire list of attached objects (attached via 1397AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 13981024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 1399 1400ACPICA termination: Added support to delete all objects attached to the 1401root namespace node. This fix deletes any and all objects that have been 1402attached to the root node via AcpiAttachData. Previously, none of these 1403objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 1404 1405Debug output: Do not emit the function nesting level for the in-kernel 1406build. The nesting level is really only useful during a single-thread 1407execution. Therefore, only enable this output for the AcpiExec utility. 1408Also, only emit the thread ID when executing under AcpiExec (Context 1409switches are still always detected and a message is emitted). ACPICA BZ 1410972. 1411 1412Example Code and Data Size: These are the sizes for the OS-independent 1413acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1414debug version of the code includes the debug output trace mechanism and 1415has a much larger code and data size. 1416 1417 Current Release: 1418 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1419 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1420 Previous Release: 1421 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 1422 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 1423 1424 14252) iASL Compiler/Disassembler and Tools: 1426 1427AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 1428correct portable POSIX header for terminal control functions. 1429 1430Disassembler: Fixed control method invocation issues related to the use 1431of the CondRefOf() operator. The problem is seen in the disassembly where 1432control method invocations may not be disassembled properly if the 1433control method name has been used previously as an argument to CondRefOf. 1434The solution is to not attempt to emit an external declaration for the 1435CondRefOf target (it is not necessary in the first place). This prevents 1436disassembler object type confusion. ACPICA BZ 988. 1437 1438Unix Makefiles: Added an option to disable compiler optimizations and the 1439_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 1440with optimizations (reportedly, gcc 4.4 for example). This change adds a 1441command line option for make (NOOPT) that disables all compiler 1442optimizations and the _FORTIFY_SOURCE compiler flag. The default 1443optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 14441034. Lv Zheng, Bob Moore. 1445 1446Tests/ASLTS: Added options to specify individual test cases and modes. 1447This allows testers running aslts.sh to optionally specify individual 1448test modes and test cases. Also added an option to disable the forced 1449generation of the ACPICA tools from source if desired. Lv Zheng. 1450 1451---------------------------------------- 145227 September 2013. Summary of changes for version 20130927: 1453 1454This release is available at https://acpica.org/downloads 1455 1456 14571) ACPICA kernel-resident subsystem: 1458 1459Fixed a problem with store operations to reference objects. This change 1460fixes a problem where a Store operation to an ArgX object that contained 1461a 1462reference to a field object did not complete the automatic dereference 1463and 1464then write to the actual field object. Instead, the object type of the 1465field object was inadvertently changed to match the type of the source 1466operand. The new behavior will actually write to the field object (buffer 1467field or field unit), thus matching the correct ACPI-defined behavior. 1468 1469Implemented support to allow the host to redefine individual OSL 1470prototypes. This change enables the host to redefine OSL prototypes found 1471in the acpiosxf.h file. This allows the host to implement OSL interfaces 1472with a macro or inlined function. Further, it allows the host to add any 1473additional required modifiers such as __iomem, __init, __exit, etc., as 1474necessary on a per-interface basis. Enables maximum flexibility for the 1475OSL interfaces. Lv Zheng. 1476 1477Hardcoded the access width for the FADT-defined reset register. The ACPI 1478specification requires the reset register width to be 8 bits. ACPICA now 1479hardcodes the width to 8 and ignores the FADT width value. This provides 1480compatibility with other ACPI implementations that have allowed BIOS code 1481with bad register width values to go unnoticed. Matthew Garett, Bob 1482Moore, 1483Lv Zheng. 1484 1485Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 1486used 1487in the OSL header (acpiosxf). The change modifies the position of this 1488macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 1489build issues if the OSL defines the implementation of the interface to be 1490an inline stub function. Lv Zheng. 1491 1492Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 1493initialization interfaces. This change adds a new macro for the main init 1494and terminate external interfaces in order to support hosts that require 1495additional or different processing for these functions. Changed from 1496ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 1497Zheng, Bob Moore. 1498 1499Cleaned up the memory allocation macros for configurability. In the 1500common 1501case, the ACPI_ALLOCATE and related macros now resolve directly to their 1502respective AcpiOs* OSL interfaces. Two options: 15031) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 1504default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 15052) For AcpiExec (and for debugging), the macros can optionally be 1506resolved 1507to the local ACPICA interfaces that track each allocation (local tracking 1508is used to immediately detect memory leaks). 1509Lv Zheng. 1510 1511Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 1512to predefine this macro to either TRUE or FALSE during the system build. 1513 1514Replaced __FUNCTION_ with __func__ in the gcc-specific header. 1515 1516Example Code and Data Size: These are the sizes for the OS-independent 1517acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1518debug version of the code includes the debug output trace mechanism and 1519has a much larger code and data size. 1520 1521 Current Release: 1522 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 1523 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 1524 Previous Release: 1525 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 1526 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1527 1528 15292) iASL Compiler/Disassembler and Tools: 1530 1531iASL: Implemented wildcard support for the -e option. This simplifies use 1532when there are many SSDTs that must be included to resolve external 1533method 1534declarations. ACPICA BZ 1041. Example: 1535 iasl -e ssdt*.dat -d dsdt.dat 1536 1537AcpiExec: Add history/line-editing for Unix/Linux systems. This change 1538adds a portable module that implements full history and limited line 1539editing for Unix and Linux systems. It does not use readline() due to 1540portability issues. Instead it uses the POSIX termio interface to put the 1541terminal in raw input mode so that the various special keys can be 1542trapped 1543(such as up/down-arrow for history support and left/right-arrow for line 1544editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 1545 1546AcpiXtract: Add support to handle (ignore) "empty" lines containing only 1547one or more spaces. This provides compatible with early or different 1548versions of the AcpiDump utility. ACPICA BZ 1044. 1549 1550AcpiDump: Do not ignore tables that contain only an ACPI table header. 1551Apparently, some BIOSs create SSDTs that contain an ACPI table header but 1552no other data. This change adds support to dump these tables. Any tables 1553shorter than the length of an ACPI table header remain in error (an error 1554message is emitted). Reported by Yi Li. 1555 1556Debugger: Echo actual command along with the "unknown command" message. 1557 1558---------------------------------------- 155923 August 2013. Summary of changes for version 20130823: 1560 15611) ACPICA kernel-resident subsystem: 1562 1563Implemented support for host-installed System Control Interrupt (SCI) 1564handlers. Certain ACPI functionality requires the host to handle raw 1565SCIs. For example, the "SCI Doorbell" that is defined for memory power 1566state support requires the host device driver to handle SCIs to examine 1567if the doorbell has been activated. Multiple SCI handlers can be 1568installed to allow for future expansion. New external interfaces are 1569AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 1570details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 1571 1572Operation region support: Never locally free the handler "context" 1573pointer. This change removes some dangerous code that attempts to free 1574the handler context pointer in some (rare) circumstances. The owner of 1575the handler owns this pointer and the ACPICA code should never touch it. 1576Although not seen to be an issue in any kernel, it did show up as a 1577problem (fault) under AcpiExec. Also, set the internal storage field for 1578the context pointer to zero when the region is deactivated, simply for 1579sanity. David Box. ACPICA BZ 1039. 1580 1581AcpiRead: On error, do not modify the return value target location. If an 1582error happens in the middle of a split 32/32 64-bit I/O operation, do not 1583modify the target of the return value pointer. Makes the code consistent 1584with the rest of ACPICA. Bjorn Helgaas. 1585 1586Example Code and Data Size: These are the sizes for the OS-independent 1587acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1588debug version of the code includes the debug output trace mechanism and 1589has a much larger code and data size. 1590 1591 Current Release: 1592 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 1593 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1594 Previous Release: 1595 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 1596 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 1597 1598 15992) iASL Compiler/Disassembler and Tools: 1600 1601AcpiDump: Implemented several new features and fixed some problems: 16021) Added support to dump the RSDP, RSDT, and XSDT tables. 16032) Added support for multiple table instances (SSDT, UEFI). 16043) Added option to dump "customized" (overridden) tables (-c). 16054) Fixed a problem where some table filenames were improperly 1606constructed. 16075) Improved some error messages, removed some unnecessary messages. 1608 1609iASL: Implemented additional support for disassembly of ACPI tables that 1610contain invocations of external control methods. The -fe<file> option 1611allows the import of a file that specifies the external methods along 1612with the required number of arguments for each -- allowing for the 1613correct disassembly of the table. This is a workaround for a limitation 1614of AML code where the disassembler often cannot determine the number of 1615arguments required for an external control method and generates incorrect 1616ASL code. See the iASL reference for details. ACPICA BZ 1030. 1617 1618Debugger: Implemented a new command (paths) that displays the full 1619pathnames (namepaths) and object types of all objects in the namespace. 1620This is an alternative to the namespace command. 1621 1622Debugger: Implemented a new command (sci) that invokes the SCI dispatch 1623mechanism and any installed handlers. 1624 1625iASL: Fixed a possible segfault for "too many parent prefixes" condition. 1626This can occur if there are too many parent prefixes in a namepath (for 1627example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 1628 1629Application OSLs: Set the return value for the PCI read functions. These 1630functions simply return AE_OK, but should set the return value to zero 1631also. This change implements this. ACPICA BZ 1038. 1632 1633Debugger: Prevent possible command line buffer overflow. Increase the 1634size of a couple of the debugger line buffers, and ensure that overflow 1635cannot happen. ACPICA BZ 1037. 1636 1637iASL: Changed to abort immediately on serious errors during the parsing 1638phase. Due to the nature of ASL, there is no point in attempting to 1639compile these types of errors, and they typically end up causing a 1640cascade of hundreds of errors which obscure the original problem. 1641 1642---------------------------------------- 164325 July 2013. Summary of changes for version 20130725: 1644 16451) ACPICA kernel-resident subsystem: 1646 1647Fixed a problem with the DerefOf operator where references to FieldUnits 1648and BufferFields incorrectly returned the parent object, not the actual 1649value of the object. After this change, a dereference of a FieldUnit 1650reference results in a read operation on the field to get the value, and 1651likewise, the appropriate BufferField value is extracted from the target 1652buffer. 1653 1654Fixed a problem where the _WAK method could cause a fault under these 1655circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 1656method returned no value. The problem is rarely seen because most kernels 1657run ACPICA in slack mode. 1658 1659For the DerefOf operator, a fatal error now results if an attempt is made 1660to dereference a reference (created by the Index operator) to a NULL 1661package element. Provides compatibility with other ACPI implementations, 1662and this behavior will be added to a future version of the ACPI 1663specification. 1664 1665The ACPI Power Management Timer (defined in the FADT) is now optional. 1666This provides compatibility with other ACPI implementations and will 1667appear in the next version of the ACPI specification. If there is no PM 1668Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 1669zero in the FADT indicates no PM timer. 1670 1671Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 1672allows the host to globally enable/disable all vendor strings, all 1673feature strings, or both. Intended to be primarily used for debugging 1674purposes only. Lv Zheng. 1675 1676Expose the collected _OSI data to the host via a global variable. This 1677data tracks the highest level vendor ID that has been invoked by the BIOS 1678so that the host (and potentially ACPICA itself) can change behaviors 1679based upon the age of the BIOS. 1680 1681Example Code and Data Size: These are the sizes for the OS-independent 1682acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1683debug version of the code includes the debug output trace mechanism and 1684has a much larger code and data size. 1685 1686 Current Release: 1687 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 1688 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1689 Previous Release: 1690 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 1691 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 1692 1693 16942) iASL Compiler/Disassembler and Tools: 1695 1696iASL: Created the following enhancements for the -so option (create 1697offset table): 16981)Add offsets for the last nameseg in each namepath for every supported 1699object type 17002)Add support for Processor, Device, Thermal Zone, and Scope objects 17013)Add the actual AML opcode for the parent object of every supported 1702object type 17034)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 1704 1705Disassembler: Emit all unresolved external symbols in a single block. 1706These are external references to control methods that could not be 1707resolved, and thus, the disassembler had to make a guess at the number of 1708arguments to parse. 1709 1710iASL: The argument to the -T option (create table template) is now 1711optional. If not specified, the default table is a DSDT, typically the 1712most common case. 1713 1714---------------------------------------- 171526 June 2013. Summary of changes for version 20130626: 1716 17171) ACPICA kernel-resident subsystem: 1718 1719Fixed an issue with runtime repair of the _CST object. Null or invalid 1720elements were not always removed properly. Lv Zheng. 1721 1722Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 1723FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 1724the maximum number of GPEs is 1016. Use of multiple GPE block devices 1725makes the system-wide number of GPEs essentially unlimited. 1726 1727Example Code and Data Size: These are the sizes for the OS-independent 1728acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1729debug version of the code includes the debug output trace mechanism and 1730has a much larger code and data size. 1731 1732 Current Release: 1733 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 1734 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 1735 Previous Release: 1736 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 1737 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 1738 1739 17402) iASL Compiler/Disassembler and Tools: 1741 1742Portable AcpiDump: Implemented full support for the Linux and FreeBSD 1743hosts. Now supports Linux, FreeBSD, and Windows. 1744 1745Disassembler: Added some missing types for the HEST and EINJ tables: "Set 1746Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 1747 1748iASL/Preprocessor: Implemented full support for nested 1749#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 1750 1751Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 1752max. The original purpose of this constraint was to limit the amount of 1753debug output. However, the string function in question (UtPrintString) is 1754now used for the disassembler also, where 256 bytes is insufficient. 1755Reported by RehabMan@GitHub. 1756 1757iASL/DataTables: Fixed some problems and issues with compilation of DMAR 1758tables. ACPICA BZ 999. Lv Zheng. 1759 1760iASL: Fixed a couple of error exit issues that could result in a "Could 1761not delete <file>" message during ASL compilation. 1762 1763AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 1764the actual signatures for these tables are "FACP" and "APIC", 1765respectively. 1766 1767AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 1768tables are allowed to have multiple instances. 1769 1770---------------------------------------- 177117 May 2013. Summary of changes for version 20130517: 1772 17731) ACPICA kernel-resident subsystem: 1774 1775Fixed a regression introduced in version 20130328 for _INI methods. This 1776change fixes a problem introduced in 20130328 where _INI methods are no 1777longer executed properly because of a memory block that was not 1778initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 1779<tomasz.nowicki@linaro.org>. 1780 1781Fixed a possible problem with the new extended sleep registers in the 1782ACPI 17835.0 FADT. Do not use these registers (even if populated) unless the HW- 1784reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 17851020. Lv Zheng. 1786 1787Implemented return value repair code for _CST predefined objects: Sort 1788the 1789list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 1790 1791Implemented a debug-only option to disable loading of SSDTs from the 1792RSDT/XSDT during ACPICA initialization. This can be useful for debugging 1793ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 1794acglobal.h - ACPICA BZ 1005. Lv Zheng. 1795 1796Fixed some issues in the ACPICA initialization and termination code: 1797Tomasz Nowicki <tomasz.nowicki@linaro.org> 17981) Clear events initialized flag upon event component termination. ACPICA 1799BZ 1013. 18002) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 18013) Delete global lock pending lock during termination. ACPICA BZ 1012. 18024) Clear debug buffer global on termination to prevent possible multiple 1803delete. ACPICA BZ 1010. 1804 1805Standardized all switch() blocks across the entire source base. After 1806many 1807years, different formatting for switch() had crept in. This change makes 1808the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 1809 1810Split some files to enhance ACPICA modularity and configurability: 18111) Split buffer dump routines into utilities/utbuffer.c 18122) Split internal error message routines into utilities/uterror.c 18133) Split table print utilities into tables/tbprint.c 18144) Split iASL command-line option processing into asloptions.c 1815 1816Makefile enhancements: 18171) Support for all new files above. 18182) Abort make on errors from any subcomponent. Chao Guan. 18193) Add build support for Apple Mac OS X. Liang Qi. 1820 1821Example Code and Data Size: These are the sizes for the OS-independent 1822acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1823debug version of the code includes the debug output trace mechanism and 1824has a much larger code and data size. 1825 1826 Current Release: 1827 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 1828 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 1829 Previous Release: 1830 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 1831 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 1832 1833 18342) iASL Compiler/Disassembler and Tools: 1835 1836New utility: Implemented an easily portable version of the acpidump 1837utility to extract ACPI tables from the system (or a file) in an ASCII 1838hex 1839dump format. The top-level code implements the various command line 1840options, file I/O, and table dump routines. To port to a new host, only 1841three functions need to be implemented to get tables -- since this 1842functionality is OS-dependent. See the tools/acpidump/apmain.c module and 1843the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 18441) The Windows version obtains the ACPI tables from the Registry. 18452) The Linux version is under development. 18463) Other hosts - If an OS-dependent module is submitted, it will be 1847distributed with ACPICA. 1848 1849iASL: Fixed a regression for -D preprocessor option (define symbol). A 1850restructuring/change to the initialization sequence caused this option to 1851no longer work properly. 1852 1853iASL: Implemented a mechanism to disable specific warnings and remarks. 1854Adds a new command line option, "-vw <messageid> as well as "#pragma 1855disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 1856 1857iASL: Fix for too-strict package object validation. The package object 1858validation for return values from the predefined names is a bit too 1859strict, it does not allow names references within the package (which will 1860be resolved at runtime.) These types of references cannot be validated at 1861compile time. This change ignores named references within package objects 1862for names that return or define static packages. 1863 1864Debugger: Fixed the 80-character command line limitation for the History 1865command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 1866 1867iASL: Added control method and package support for the -so option 1868(generates AML offset table for BIOS support.) 1869 1870iASL: issue a remark if a non-serialized method creates named objects. If 1871a thread blocks within the method for any reason, and another thread 1872enters the method, the method will fail because an attempt will be made 1873to 1874create the same (named) object twice. In this case, issue a remark that 1875the method should be marked serialized. NOTE: may become a warning later. 1876ACPICA BZ 909. 1877 1878---------------------------------------- 187918 April 2013. Summary of changes for version 20130418: 1880 18811) ACPICA kernel-resident subsystem: 1882 1883Fixed a possible buffer overrun during some rare but specific field unit 1884read operations. This overrun can only happen if the DSDT version is 1 -- 1885meaning that all AML integers are 32 bits -- and the field length is 1886between 33 and 55 bits long. During the read, an internal buffer object 1887is 1888created for the field unit because the field is larger than an integer 1889(32 1890bits). However, in this case, the buffer will be incorrectly written 1891beyond the end because the buffer length is less than the internal 1892minimum 1893of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 1894long, but a full 8 bytes will be written. 1895 1896Updated the Embedded Controller "orphan" _REG method support. This refers 1897to _REG methods under the EC device that have no corresponding operation 1898region. This is allowed by the ACPI specification. This update removes a 1899dependency on the existence an ECDT table. It will execute an orphan _REG 1900method as long as the operation region handler for the EC is installed at 1901the EC device node and not the namespace root. Rui Zhang (original 1902update), Bob Moore (update/integrate). 1903 1904Implemented run-time argument typechecking for all predefined ACPI names 1905(_STA, _BIF, etc.) This change performs object typechecking on all 1906incoming arguments for all predefined names executed via 1907AcpiEvaluateObject. This ensures that ACPI-related device drivers are 1908passing correct object types as well as the correct number of arguments 1909(therefore identifying any issues immediately). Also, the ASL/namespace 1910definition of the predefined name is checked against the ACPI 1911specification for the proper argument count. Adds one new file, 1912nsarguments.c 1913 1914Changed an exception code for the ASL UnLoad() operator. Changed the 1915exception code for the case where the input DdbHandle is invalid, from 1916AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 1917 1918Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 1919global makefile. The use of this flag causes compiler errors on earlier 1920versions of GCC, so it has been removed for compatibility. 1921 1922Miscellaneous cleanup: 19231) Removed some unused/obsolete macros 19242) Fixed a possible memory leak in the _OSI support 19253) Removed an unused variable in the predefined name support 19264) Windows OSL: remove obsolete reference to a memory list field 1927 1928Example Code and Data Size: These are the sizes for the OS-independent 1929acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1930debug version of the code includes the debug output trace mechanism and 1931has a much larger code and data size. 1932 1933 Current Release: 1934 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 1935 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 1936 Previous Release: 1937 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 1938 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 1939 1940 19412) iASL Compiler/Disassembler and Tools: 1942 1943AcpiExec: Added installation of a handler for the SystemCMOS address 1944space. This prevents control method abort if a method accesses this 1945space. 1946 1947AcpiExec: Added support for multiple EC devices, and now install EC 1948operation region handler(s) at the actual EC device instead of the 1949namespace root. This reflects the typical behavior of host operating 1950systems. 1951 1952AcpiExec: Updated to ensure that all operation region handlers are 1953installed before the _REG methods are executed. This prevents a _REG 1954method from aborting if it accesses an address space has no handler. 1955AcpiExec installs a handler for every possible address space. 1956 1957Debugger: Enhanced the "handlers" command to display non-root handlers. 1958This change enhances the handlers command to display handlers associated 1959with individual devices throughout the namespace, in addition to the 1960currently supported display of handlers associated with the root 1961namespace 1962node. 1963 1964ASL Test Suite: Several test suite errors have been identified and 1965resolved, reducing the total error count during execution. Chao Guan. 1966 1967---------------------------------------- 196828 March 2013. Summary of changes for version 20130328: 1969 19701) ACPICA kernel-resident subsystem: 1971 1972Fixed several possible race conditions with the internal object reference 1973counting mechanism. Some of the external ACPICA interfaces update object 1974reference counts without holding the interpreter or namespace lock. This 1975change adds a spinlock to protect reference count updates on the internal 1976ACPICA objects. Reported by and with assistance from Andriy Gapon 1977(avg@FreeBSD.org). 1978 1979FADT support: Removed an extraneous warning for very large GPE register 1980sets. This change removes a size mismatch warning if the legacy length 1981field for a GPE register set is larger than the 64-bit GAS structure can 1982accommodate. GPE register sets can be larger than the 255-bit width 1983limitation of the GAS structure. Linn Crosetto (linn@hp.com). 1984 1985_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 1986return from this interface. Handles a possible timeout case if 1987ACPI_WAIT_FOREVER is modified by the host to be a value less than 1988"forever". Jung-uk Kim. 1989 1990Predefined name support: Add allowed/required argument type information 1991to 1992the master predefined info table. This change adds the infrastructure to 1993enable typechecking on incoming arguments for all predefined 1994methods/objects. It does not actually contain the code that will fully 1995utilize this information, this is still under development. Also condenses 1996some duplicate code for the predefined names into a new module, 1997utilities/utpredef.c 1998 1999Example Code and Data Size: These are the sizes for the OS-independent 2000acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2001debug version of the code includes the debug output trace mechanism and 2002has a much larger code and data size. 2003 2004 Previous Release: 2005 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2006 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2007 Current Release: 2008 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 2009 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 2010 2011 20122) iASL Compiler/Disassembler and Tools: 2013 2014iASL: Implemented a new option to simplify the development of ACPI- 2015related 2016BIOS code. Adds support for a new "offset table" output file. The -so 2017option will create a C table containing the AML table offsets of various 2018named objects in the namespace so that BIOS code can modify them easily 2019at 2020boot time. This can simplify BIOS runtime code by eliminating expensive 2021searches for "magic values", enhancing boot times and adding greater 2022reliability. With assistance from Lee Hamel. 2023 2024iASL: Allow additional predefined names to return zero-length packages. 2025Now, all predefined names that are defined by the ACPI specification to 2026return a "variable-length package of packages" are allowed to return a 2027zero length top-level package. This allows the BIOS to tell the host that 2028the requested feature is not supported, and supports existing BIOS/ASL 2029code and practices. 2030 2031iASL: Changed the "result not used" warning to an error. This is the case 2032where an ASL operator is effectively a NOOP because the result of the 2033operation is not stored anywhere. For example: 2034 Add (4, Local0) 2035There is no target (missing 3rd argument), nor is the function return 2036value used. This is potentially a very serious problem -- since the code 2037was probably intended to do something, but for whatever reason, the value 2038was not stored. Therefore, this issue has been upgraded from a warning to 2039an error. 2040 2041AcpiHelp: Added allowable/required argument types to the predefined names 2042info display. This feature utilizes the recent update to the predefined 2043names table (above). 2044 2045---------------------------------------- 204614 February 2013. Summary of changes for version 20130214: 2047 20481) ACPICA Kernel-resident Subsystem: 2049 2050Fixed a possible regression on some hosts: Reinstated the safe return 2051macros (return_ACPI_STATUS, etc.) that ensure that the argument is 2052evaluated only once. Although these macros are not needed for the ACPICA 2053code itself, they are often used by ACPI-related host device drivers 2054where 2055the safe feature may be necessary. 2056 2057Fixed several issues related to the ACPI 5.0 reduced hardware support 2058(SOC): Now ensure that if the platform declares itself as hardware- 2059reduced 2060via the FADT, the following functions become NOOPs (and always return 2061AE_OK) because ACPI is always enabled by definition on these machines: 2062 AcpiEnable 2063 AcpiDisable 2064 AcpiHwGetMode 2065 AcpiHwSetMode 2066 2067Dynamic Object Repair: Implemented additional runtime repairs for 2068predefined name return values. Both of these repairs can simplify code in 2069the related device drivers that invoke these methods: 20701) For the _STR and _MLS names, automatically repair/convert an ASCII 2071string to a Unicode buffer. 20722) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 2073a 2074lone end tag descriptor in the following cases: A Return(0) was executed, 2075a null buffer was returned, or no object at all was returned (non-slack 2076mode only). Adds a new file, nsconvert.c 2077ACPICA BZ 998. Bob Moore, Lv Zheng. 2078 2079Resource Manager: Added additional code to prevent possible infinite 2080loops 2081while traversing corrupted or ill-formed resource template buffers. Check 2082for zero-length resource descriptors in all code that loops through 2083resource templates (the length field is used to index through the 2084template). This change also hardens the external AcpiWalkResources and 2085AcpiWalkResourceBuffer interfaces. 2086 2087Local Cache Manager: Enhanced the main data structure to eliminate an 2088unnecessary mechanism to access the next object in the list. Actually 2089provides a small performance enhancement for hosts that use the local 2090ACPICA cache manager. Jung-uk Kim. 2091 2092Example Code and Data Size: These are the sizes for the OS-independent 2093acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2094debug version of the code includes the debug output trace mechanism and 2095has a much larger code and data size. 2096 2097 Previous Release: 2098 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2099 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2100 Current Release: 2101 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2102 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2103 2104 21052) iASL Compiler/Disassembler and Tools: 2106 2107iASL/Disassembler: Fixed several issues with the definition of the ACPI 21085.0 RASF table (RAS Feature Table). This change incorporates late changes 2109that were made to the ACPI 5.0 specification. 2110 2111iASL/Disassembler: Added full support for the following new ACPI tables: 2112 1) The MTMR table (MID Timer Table) 2113 2) The VRTC table (Virtual Real Time Clock Table). 2114Includes header file, disassembler, table compiler, and template support 2115for both tables. 2116 2117iASL: Implemented compile-time validation of package objects returned by 2118predefined names. This new feature validates static package objects 2119returned by the various predefined names defined to return packages. Both 2120object types and package lengths are validated, for both parent packages 2121and sub-packages, if any. The code is similar in structure and behavior 2122to 2123the runtime repair mechanism within the AML interpreter and uses the 2124existing predefined name information table. Adds a new file, aslprepkg.c. 2125ACPICA BZ 938. 2126 2127iASL: Implemented auto-detection of binary ACPI tables for disassembly. 2128This feature detects a binary file with a valid ACPI table header and 2129invokes the disassembler automatically. Eliminates the need to 2130specifically invoke the disassembler with the -d option. ACPICA BZ 862. 2131 2132iASL/Disassembler: Added several warnings for the case where there are 2133unresolved control methods during the disassembly. This can potentially 2134cause errors when the output file is compiled, because the disassembler 2135assumes zero method arguments in these cases (it cannot determine the 2136actual number of arguments without resolution/definition of the method). 2137 2138Debugger: Added support to display all resources with a single command. 2139Invocation of the resources command with no arguments will now display 2140all 2141resources within the current namespace. 2142 2143AcpiHelp: Added descriptive text for each ACPICA exception code displayed 2144via the -e option. 2145 2146---------------------------------------- 214717 January 2013. Summary of changes for version 20130117: 2148 21491) ACPICA Kernel-resident Subsystem: 2150 2151Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 2152return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 2153objects to return a package containing one integer, most BIOS code 2154returns 2155two integers and the previous code reflects that. However, we also need 2156to 2157support BIOS code that actually implements to the ACPI spec, and this 2158change reflects this. 2159 2160Fixed two issues with the ACPI_DEBUG_PRINT macros: 21611) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 2162C compilers that require this support. 21632) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 2164ACPI_DEBUG is already used by many of the various hosts. 2165 2166Updated all ACPICA copyrights and signons to 2013. Added the 2013 2167copyright to all module headers and signons, including the standard Linux 2168header. This affects virtually every file in the ACPICA core subsystem, 2169iASL compiler, all ACPICA utilities, and the test suites. 2170 2171Example Code and Data Size: These are the sizes for the OS-independent 2172acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2173debug version of the code includes the debug output trace mechanism and 2174has a much larger code and data size. 2175 2176 Previous Release: 2177 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 2178 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 2179 Current Release: 2180 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2181 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2182 2183 21842) iASL Compiler/Disassembler and Tools: 2185 2186Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 2187prevent a possible fault on some hosts. Some C libraries modify the arg 2188pointer parameter to vfprintf making it difficult to call it twice in the 2189AcpiOsVprintf function. Use a local buffer to workaround this issue. This 2190does not affect the Windows OSL since the Win C library does not modify 2191the arg pointer. Chao Guan, Bob Moore. 2192 2193iASL: Fixed a possible infinite loop when the maximum error count is 2194reached. If an output file other than the .AML file is specified (such as 2195a listing file), and the maximum number of errors is reached, do not 2196attempt to flush data to the output file(s) as the compiler is aborting. 2197This can cause an infinite loop as the max error count code essentially 2198keeps calling itself. 2199 2200iASL/Disassembler: Added an option (-in) to ignore NOOP 2201opcodes/operators. 2202Implemented for both the compiler and the disassembler. Often, the NOOP 2203opcode is used as padding for packages that are changed dynamically by 2204the 2205BIOS. When disassembled and recompiled, these NOOPs will cause syntax 2206errors. This option causes the disassembler to ignore all NOOP opcodes 2207(0xA3), and it also causes the compiler to ignore all ASL source code 2208NOOP 2209statements as well. 2210 2211Debugger: Enhanced the Sleep command to execute all sleep states. This 2212change allows Sleep to be invoked with no arguments and causes the 2213debugger to execute all of the sleep states, 0-5, automatically. 2214 2215---------------------------------------- 221620 December 2012. Summary of changes for version 20121220: 2217 22181) ACPICA Kernel-resident Subsystem: 2219 2220Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 2221alternate entry point for AcpiWalkResources and improves the usability of 2222the resource manager by accepting as input a buffer containing the output 2223of either a _CRS, _PRS, or _AEI method. The key functionality is that the 2224input buffer is not deleted by this interface so that it can be used by 2225the host later. See the ACPICA reference for details. 2226 2227Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 2228(DSDT version < 2). The constant will be truncated and this warning 2229reflects that behavior. 2230 2231Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 2232ExtendedInterrupt, and GpioInt descriptors. This change adds support to 2233both get and set the new wake bit in these descriptors, separately from 2234the existing share bit. Reported by Aaron Lu. 2235 2236Interpreter: Fix Store() when an implicit conversion is not possible. For 2237example, in the cases such as a store of a string to an existing package 2238object, implement the store as a CopyObject(). This is a small departure 2239from the ACPI specification which states that the control method should 2240be 2241aborted in this case. However, the ASLTS suite depends on this behavior. 2242 2243Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 2244macros: check if debug output is currently enabled as soon as possible to 2245minimize performance impact if debug is in fact not enabled. 2246 2247Source code restructuring: Cleanup to improve modularity. The following 2248new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 2249psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 2250Associated makefiles and project files have been updated. 2251 2252Changed an exception code for LoadTable operator. For the case where one 2253of the input strings is too long, change the returned exception code from 2254AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 2255 2256Fixed a possible memory leak in dispatcher error path. On error, delete 2257the mutex object created during method mutex creation. Reported by 2258tim.gardner@canonical.com. 2259 2260Example Code and Data Size: These are the sizes for the OS-independent 2261acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2262debug version of the code includes the debug output trace mechanism and 2263has a much larger code and data size. 2264 2265 Previous Release: 2266 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2267 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2268 Current Release: 2269 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 2270 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 2271 2272 22732) iASL Compiler/Disassembler and Tools: 2274 2275iASL: Disallow a method call as argument to the ObjectType ASL operator. 2276This change tracks an errata to the ACPI 5.0 document. The AML grammar 2277will not allow the interpreter to differentiate between a method and a 2278method invocation when these are used as an argument to the ObjectType 2279operator. The ACPI specification change is to disallow a method 2280invocation 2281(UserTerm) for the ObjectType operator. 2282 2283Finish support for the TPM2 and CSRT tables in the headers, table 2284compiler, and disassembler. 2285 2286Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 2287always expires immediately if the semaphore is not available. The 2288original 2289code was using a relative-time timeout, but sem_timedwait requires the 2290use 2291of an absolute time. 2292 2293iASL: Added a remark if the Timer() operator is used within a 32-bit 2294table. This operator returns a 64-bit time value that will be truncated 2295within a 32-bit table. 2296 2297iASL Source code restructuring: Cleanup to improve modularity. The 2298following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 2299aslmethod.c, and aslfileio.c. Associated makefiles and project files have 2300been updated. 2301 2302 2303---------------------------------------- 230414 November 2012. Summary of changes for version 20121114: 2305 23061) ACPICA Kernel-resident Subsystem: 2307 2308Implemented a performance enhancement for ACPI/AML Package objects. This 2309change greatly increases the performance of Package objects within the 2310interpreter. It changes the processing of reference counts for packages 2311by 2312optimizing for the most common case where the package sub-objects are 2313either Integers, Strings, or Buffers. Increases the overall performance 2314of 2315the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 23162X.) 2317Chao Guan. ACPICA BZ 943. 2318 2319Implemented and deployed common macros to extract flag bits from resource 2320descriptors. Improves readability and maintainability of the code. Fixes 2321a 2322problem with the UART serial bus descriptor for the number of data bits 2323flags (was incorrectly 2 bits, should be 3). 2324 2325Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 2326of the macros and changed the SETx macros to the style of (destination, 2327source). Also added ACPI_CASTx companion macros. Lv Zheng. 2328 2329Example Code and Data Size: These are the sizes for the OS-independent 2330acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2331debug version of the code includes the debug output trace mechanism and 2332has a much larger code and data size. 2333 2334 Previous Release: 2335 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2336 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2337 Current Release: 2338 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2339 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2340 2341 23422) iASL Compiler/Disassembler and Tools: 2343 2344Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 2345adds the ShareAndWake and ExclusiveAndWake flags which were added to the 2346Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 2347 2348Disassembler: Fixed a problem with external declaration generation. Fixes 2349a problem where an incorrect pathname could be generated for an external 2350declaration if the original reference to the object includes leading 2351carats (^). ACPICA BZ 984. 2352 2353Debugger: Completed a major update for the Disassemble<method> command. 2354This command was out-of-date and did not properly disassemble control 2355methods that had any reasonable complexity. This fix brings the command 2356up 2357to the same level as the rest of the disassembler. Adds one new file, 2358dmdeferred.c, which is existing code that is now common with the main 2359disassembler and the debugger disassemble command. ACPICA MZ 978. 2360 2361iASL: Moved the parser entry prototype to avoid a duplicate declaration. 2362Newer versions of Bison emit this prototype, so moved the prototype out 2363of 2364the iASL header to where it is actually used in order to avoid a 2365duplicate 2366declaration. 2367 2368iASL/Tools: Standardized use of the stream I/O functions: 2369 1) Ensure check for I/O error after every fopen/fread/fwrite 2370 2) Ensure proper order of size/count arguments for fread/fwrite 2371 3) Use test of (Actual != Requested) after all fwrite, and most fread 2372 4) Standardize I/O error messages 2373Improves reliability and maintainability of the code. Bob Moore, Lv 2374Zheng. 2375ACPICA BZ 981. 2376 2377Disassembler: Prevent duplicate External() statements. During generation 2378of external statements, detect similar pathnames that are actually 2379duplicates such as these: 2380 External (\ABCD) 2381 External (ABCD) 2382Remove all leading '\' characters from pathnames during the external 2383statement generation so that duplicates will be detected and tossed. 2384ACPICA BZ 985. 2385 2386Tools: Replace low-level I/O with stream I/O functions. Replace 2387open/read/write/close with the stream I/O equivalents 2388fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 2389Moore. 2390 2391AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 2392name header so that AcpiXtract recognizes the output file/table. 2393 2394iASL: Remove obsolete -2 option flag. Originally intended to force the 2395compiler/disassembler into an ACPI 2.0 mode, this was never implemented 2396and the entire concept is now obsolete. 2397 2398---------------------------------------- 239918 October 2012. Summary of changes for version 20121018: 2400 2401 24021) ACPICA Kernel-resident Subsystem: 2403 2404Updated support for the ACPI 5.0 MPST table. Fixes some problems 2405introduced by late changes to the table as it was added to the ACPI 5.0 2406specification. Includes header, disassembler, and data table compiler 2407support as well as a new version of the MPST template. 2408 2409AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 24105.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 2411methods: _HID, _CID, and _UID. 2412 2413Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 2414ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 2415name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 2416names for their various drivers. Affects the AcpiGetObjectInfo external 2417interface, and other internal interfaces as well. 2418 2419Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 2420This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 2421on machines that support non-aligned transfers. Optimizes for this case 2422rather than using a strncpy. With assistance from Zheng Lv. 2423 2424Resource Manager: Small fix for buffer size calculation. Fixed a one byte 2425error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 2426 2427Added a new debug print message for AML mutex objects that are force- 2428released. At control method termination, any currently acquired mutex 2429objects are force-released. Adds a new debug-only message for each one 2430that is released. 2431 2432Audited/updated all ACPICA return macros and the function debug depth 2433counter: 1) Ensure that all functions that use the various TRACE macros 2434also use the appropriate ACPICA return macros. 2) Ensure that all normal 2435return statements surround the return expression (value) with parens to 2436ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 2437Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 2438 2439Global source code changes/maintenance: All extra lines at the start and 2440end of each source file have been removed for consistency. Also, within 2441comments, all new sentences start with a single space instead of a double 2442space, again for consistency across the code base. 2443 2444Example Code and Data Size: These are the sizes for the OS-independent 2445acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2446debug version of the code includes the debug output trace mechanism and 2447has a much larger code and data size. 2448 2449 Previous Release: 2450 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 2451 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 2452 Current Release: 2453 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2454 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2455 2456 24572) iASL Compiler/Disassembler and Tools: 2458 2459AcpiExec: Improved the algorithm used for memory leak/corruption 2460detection. Added some intelligence to the code that maintains the global 2461list of allocated memory. The list is now ordered by allocated memory 2462address, significantly improving performance. When running AcpiExec on 2463the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 2464on the platform and/or the environment. Note, this performance 2465enhancement affects the AcpiExec utility only, not the kernel-resident 2466ACPICA code. 2467 2468Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 2469the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 2470incorrect table offset reported for invalid opcodes. Report the original 247132-bit value for bad ACPI_NAMEs (as well as the repaired name.) 2472 2473Disassembler: Enhanced the -vt option to emit the binary table data in 2474hex format to assist with debugging. 2475 2476Fixed a potential filename buffer overflow in osunixdir.c. Increased the 2477size of file structure. Colin Ian King. 2478 2479---------------------------------------- 248013 September 2012. Summary of changes for version 20120913: 2481 2482 24831) ACPICA Kernel-resident Subsystem: 2484 2485ACPI 5.0: Added two new notify types for the Hardware Error Notification 2486Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 2487and 2488MCE(6). 2489 2490Table Manager: Merged/removed duplicate code in the root table resize 2491functions. One function is external, the other is internal. Lv Zheng, 2492ACPICA 2493BZ 846. 2494 2495Makefiles: Completely removed the obsolete "Linux" makefiles under 2496acpica/generate/linux. These makefiles are obsolete and have been 2497replaced 2498by 2499the generic unix makefiles under acpica/generate/unix. 2500 2501Makefiles: Ensure that binary files always copied properly. Minor rule 2502change 2503to ensure that the final binary output files are always copied up to the 2504appropriate binary directory (bin32 or bin64.) 2505 2506Example Code and Data Size: These are the sizes for the OS-independent 2507acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2508debug 2509version of the code includes the debug output trace mechanism and has a 2510much 2511larger code and data size. 2512 2513 Previous Release: 2514 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 2515 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 2516 Current Release: 2517 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 2518 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 2519 2520 25212) iASL Compiler/Disassembler and Tools: 2522 2523Disassembler: Fixed a possible fault during the disassembly of resource 2524descriptors when a second parse is required because of the invocation of 2525external control methods within the table. With assistance from 2526adq@lidskialf.net. ACPICA BZ 976. 2527 2528iASL: Fixed a namepath optimization problem. An error can occur if the 2529parse 2530node that contains the namepath to be optimized does not have a parent 2531node 2532that is a named object. This change fixes the problem. 2533 2534iASL: Fixed a regression where the AML file is not deleted on errors. The 2535AML 2536output file should be deleted if there are any errors during the 2537compiler. 2538The 2539only exception is if the -f (force output) option is used. ACPICA BZ 974. 2540 2541iASL: Added a feature to automatically increase internal line buffer 2542sizes. 2543Via realloc(), automatically increase the internal line buffer sizes as 2544necessary to support very long source code lines. The current version of 2545the 2546preprocessor requires a buffer long enough to contain full source code 2547lines. 2548This change increases the line buffer(s) if the input lines go beyond the 2549current buffer size. This eliminates errors that occurred when a source 2550code 2551line was longer than the buffer. 2552 2553iASL: Fixed a problem with constant folding in method declarations. The 2554SyncLevel term is a ByteConstExpr, and incorrect code would be generated 2555if a 2556Type3 opcode was used. 2557 2558Debugger: Improved command help support. For incorrect argument count, 2559display 2560full help for the command. For help command itself, allow an argument to 2561specify a command. 2562 2563Test Suites: Several bug fixes for the ASLTS suite reduces the number of 2564errors during execution of the suite. Guan Chao. 2565 2566---------------------------------------- 256716 August 2012. Summary of changes for version 20120816: 2568 2569 25701) ACPICA Kernel-resident Subsystem: 2571 2572Removed all use of the deprecated _GTS and _BFS predefined methods. The 2573_GTS 2574(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 2575deprecated and will probably be removed from the ACPI specification. 2576Windows 2577does not invoke them, and reportedly never will. The final nail in the 2578coffin 2579is that the ACPI specification states that these methods must be run with 2580interrupts off, which is not going to happen in a kernel interpreter. 2581Note: 2582Linux has removed all use of the methods also. It was discovered that 2583invoking these functions caused failures on some machines, probably 2584because 2585they were never tested since Windows does not call them. Affects two 2586external 2587interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 2588ACPICA BZ 969. 2589 2590Implemented support for complex bit-packed buffers returned from the _PLD 2591(Physical Location of Device) predefined method. Adds a new external 2592interface, AcpiDecodePldBuffer that parses the buffer into a more usable 2593C 2594structure. Note: C Bitfields cannot be used for this type of predefined 2595structure since the memory layout of individual bitfields is not defined 2596by 2597the C language. In addition, there are endian concerns where a compiler 2598will 2599change the bitfield ordering based on the machine type. The new ACPICA 2600interface eliminates these issues, and should be called after _PLD is 2601executed. ACPICA BZ 954. 2602 2603Implemented a change to allow a scope change to root (via "Scope (\)") 2604during 2605execution of module-level ASL code (code that is executed at table load 2606time.) Lin Ming. 2607 2608Added the Windows8/Server2012 string for the _OSI method. This change 2609adds 2610a 2611new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 26122012. 2613 2614Added header support for the new ACPI tables DBG2 (Debug Port Table Type 26152) 2616and CSRT (Core System Resource Table). 2617 2618Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 2619names. This simplifies access to the buffers returned by these predefined 2620names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 2621 2622GPE support: Removed an extraneous parameter from the various low-level 2623internal GPE functions. Tang Feng. 2624 2625Removed the linux makefiles from the unix packages. The generate/linux 2626makefiles are obsolete and have been removed from the unix tarball 2627release 2628packages. The replacement makefiles are under generate/unix, and there is 2629a 2630top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 2631 2632Updates for Unix makefiles: 26331) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 26342) Update linker flags (move to end of command line) for AcpiExec 2635utility. 2636Guan Chao. 2637 2638Split ACPICA initialization functions to new file, utxfinit.c. Split from 2639utxface.c to improve modularity and reduce file size. 2640 2641Example Code and Data Size: These are the sizes for the OS-independent 2642acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2643debug version of the code includes the debug output trace mechanism and 2644has a 2645much larger code and data size. 2646 2647 Previous Release: 2648 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 2649 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 2650 Current Release: 2651 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 2652 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 2653 2654 26552) iASL Compiler/Disassembler and Tools: 2656 2657iASL: Fixed a problem with constant folding for fixed-length constant 2658expressions. The constant-folding code was not being invoked for constant 2659expressions that allow the use of type 3/4/5 opcodes to generate 2660constants 2661for expressions such as ByteConstExpr, WordConstExpr, etc. This could 2662result 2663in the generation of invalid AML bytecode. ACPICA BZ 970. 2664 2665iASL: Fixed a generation issue on newer versions of Bison. Newer versions 2666apparently automatically emit some of the necessary externals. This 2667change 2668handles these versions in order to eliminate generation warnings. 2669 2670Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 2671 2672Disassembler: Add support to decode _PLD buffers. The decoded buffer 2673appears 2674within comments in the output file. 2675 2676Debugger: Fixed a regression with the "Threads" command where 2677AE_BAD_PARAMETER was always returned. 2678 2679---------------------------------------- 268011 July 2012. Summary of changes for version 20120711: 2681 26821) ACPICA Kernel-resident Subsystem: 2683 2684Fixed a possible fault in the return package object repair code. Fixes a 2685problem that can occur when a lone package object is wrapped with an 2686outer 2687package object in order to force conformance to the ACPI specification. 2688Can 2689affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 2690_DLM, 2691_CSD, _PSD, _TSD. 2692 2693Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 2694PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 2695ARB_DIS bit must be implemented in the host-dependent C3 processor power 2696state 2697support. Note, ARB_DIS is obsolete and only applies to older chipsets, 2698both 2699Intel and other vendors. (for Intel: ICH4-M and earlier) 2700 2701This change removes the code to disable/enable bus master arbitration 2702during 2703suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 2704causes 2705resume problems on some machines. The change has been in use for over 2706seven 2707years within Linux. 2708 2709Implemented two new external interfaces to support host-directed dynamic 2710ACPI 2711table load and unload. They are intended to simplify the host 2712implementation 2713of hot-plug support: 2714 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 2715 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 2716table. 2717See the ACPICA reference for additional details. Adds one new file, 2718components/tables/tbxfload.c 2719 2720Implemented and deployed two new interfaces for errors and warnings that 2721are 2722known to be caused by BIOS/firmware issues: 2723 AcpiBiosError: Prints "ACPI Firmware Error" message. 2724 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 2725Deployed these new interfaces in the ACPICA Table Manager code for ACPI 2726table 2727and FADT errors. Additional deployment to be completed as appropriate in 2728the 2729future. The associated conditional macros are ACPI_BIOS_ERROR and 2730ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 2731ACPICA 2732BZ 2733843. 2734 2735Implicit notify support: ensure that no memory allocation occurs within a 2736critical region. This fix moves a memory allocation outside of the time 2737that a 2738spinlock is held. Fixes issues on systems that do not allow this 2739behavior. 2740Jung-uk Kim. 2741 2742Split exception code utilities and tables into a new file, 2743utilities/utexcep.c 2744 2745Example Code and Data Size: These are the sizes for the OS-independent 2746acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2747debug 2748version of the code includes the debug output trace mechanism and has a 2749much 2750larger code and data size. 2751 2752 Previous Release: 2753 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 2754 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 2755 Current Release: 2756 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 2757 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 2758 2759 27602) iASL Compiler/Disassembler and Tools: 2761 2762iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 2763of 27640. Jung-uk Kim. 2765 2766Debugger: Enhanced the "tables" command to emit additional information 2767about 2768the current set of ACPI tables, including the owner ID and flags decode. 2769 2770Debugger: Reimplemented the "unload" command to use the new 2771AcpiUnloadParentTable external interface. This command was disable 2772previously 2773due to need for an unload interface. 2774 2775AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 2776option 2777will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 2778 2779---------------------------------------- 278020 June 2012. Summary of changes for version 20120620: 2781 2782 27831) ACPICA Kernel-resident Subsystem: 2784 2785Implemented support to expand the "implicit notify" feature to allow 2786multiple 2787devices to be notified by a single GPE. This feature automatically 2788generates a 2789runtime device notification in the absence of a BIOS-provided GPE control 2790method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 2791notify is 2792provided by ACPICA for Windows compatibility, and is a workaround for 2793BIOS 2794AML 2795code errors. See the description of the AcpiSetupGpeForWake interface in 2796the 2797APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 2798 2799Changed some comments and internal function names to simplify and ensure 2800correctness of the Linux code translation. No functional changes. 2801 2802Example Code and Data Size: These are the sizes for the OS-independent 2803acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2804debug 2805version of the code includes the debug output trace mechanism and has a 2806much 2807larger code and data size. 2808 2809 Previous Release: 2810 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 2811 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 2812 Current Release: 2813 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 2814 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 2815 2816 28172) iASL Compiler/Disassembler and Tools: 2818 2819Disassembler: Added support to emit short, commented descriptions for the 2820ACPI 2821predefined names in order to improve the readability of the disassembled 2822output. ACPICA BZ 959. Changes include: 2823 1) Emit descriptions for all standard predefined names (_INI, _STA, 2824_PRW, 2825etc.) 2826 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 2827 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 2828etc.) 2829 2830AcpiSrc: Fixed several long-standing Linux code translation issues. 2831Argument 2832descriptions in function headers are now translated properly to lower 2833case 2834and 2835underscores. ACPICA BZ 961. Also fixes translation problems such as 2836these: 2837(old -> new) 2838 i_aSL -> iASL 2839 00-7_f -> 00-7F 2840 16_k -> 16K 2841 local_fADT -> local_FADT 2842 execute_oSI -> execute_OSI 2843 2844iASL: Fixed a problem where null bytes were inadvertently emitted into 2845some 2846listing files. 2847 2848iASL: Added the existing debug options to the standard help screen. There 2849are 2850no longer two different help screens. ACPICA BZ 957. 2851 2852AcpiHelp: Fixed some typos in the various predefined name descriptions. 2853Also 2854expand some of the descriptions where appropriate. 2855 2856iASL: Fixed the -ot option (display compile times/statistics). Was not 2857working 2858properly for standard output; only worked for the debug file case. 2859 2860---------------------------------------- 286118 May 2012. Summary of changes for version 20120518: 2862 2863 28641) ACPICA Core Subsystem: 2865 2866Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 2867defined 2868to block until asynchronous events such as notifies and GPEs have 2869completed. 2870Within ACPICA, it is only called before a notify or GPE handler is 2871removed/uninstalled. It also may be useful for the host OS within related 2872drivers such as the Embedded Controller driver. See the ACPICA reference 2873for 2874additional information. ACPICA BZ 868. 2875 2876ACPI Tables: Added a new error message for a possible overflow failure 2877during 2878the conversion of FADT 32-bit legacy register addresses to internal 2879common 288064- 2881bit GAS structure representation. The GAS has a one-byte "bit length" 2882field, 2883thus limiting the register length to 255 bits. ACPICA BZ 953. 2884 2885Example Code and Data Size: These are the sizes for the OS-independent 2886acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2887debug 2888version of the code includes the debug output trace mechanism and has a 2889much 2890larger code and data size. 2891 2892 Previous Release: 2893 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2894 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2895 Current Release: 2896 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 2897 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 2898 2899 29002) iASL Compiler/Disassembler and Tools: 2901 2902iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 2903macro. 2904This keyword was added late in the ACPI 5.0 release cycle and was not 2905implemented until now. 2906 2907Disassembler: Added support for Operation Region externals. Adds missing 2908support for operation regions that are defined in another table, and 2909referenced locally via a Field or BankField ASL operator. Now generates 2910the 2911correct External statement. 2912 2913Disassembler: Several additional fixes for the External() statement 2914generation 2915related to some ASL operators. Also, order the External() statements 2916alphabetically in the disassembler output. Fixes the External() 2917generation 2918for 2919the Create* field, Alias, and Scope operators: 2920 1) Create* buffer field operators - fix type mismatch warning on 2921disassembly 2922 2) Alias - implement missing External support 2923 3) Scope - fix to make sure all necessary externals are emitted. 2924 2925iASL: Improved pathname support. For include files, merge the prefix 2926pathname 2927with the file pathname and eliminate unnecessary components. Convert 2928backslashes in all pathnames to forward slashes, for readability. Include 2929file 2930pathname changes affect both #include and Include() type operators. 2931 2932iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 2933end 2934of a valid line by inserting a newline and then returning the EOF during 2935the 2936next call to GetNextLine. Prevents the line from being ignored due to EOF 2937condition. 2938 2939iASL: Implemented some changes to enhance the IDE support (-vi option.) 2940Error 2941and Warning messages are now correctly recognized for both the source 2942code 2943browser and the global error and warning counts. 2944 2945---------------------------------------- 294620 April 2012. Summary of changes for version 20120420: 2947 2948 29491) ACPICA Core Subsystem: 2950 2951Implemented support for multiple notify handlers. This change adds 2952support 2953to 2954allow multiple system and device notify handlers on Device, Thermal Zone, 2955and 2956Processor objects. This can simplify the host OS notification 2957implementation. 2958Also re-worked and restructured the entire notify support code to 2959simplify 2960handler installation, handler removal, notify event queuing, and notify 2961dispatch to handler(s). Note: there can still only be two global notify 2962handlers - one for system notifies and one for device notifies. There are 2963no 2964changes to the existing handler install/remove interfaces. Lin Ming, Bob 2965Moore, Rafael Wysocki. 2966 2967Fixed a regression in the package repair code where the object reference 2968count was calculated incorrectly. Regression was introduced in the commit 2969"Support to add Package wrappers". 2970 2971Fixed a couple possible memory leaks in the AML parser, in the error 2972recovery 2973path. Jesper Juhl, Lin Ming. 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 version of the code includes the debug output trace mechanism and 2978has a 2979much larger code and data size. 2980 2981 Previous Release: 2982 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2983 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2984 Current Release: 2985 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2986 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2987 2988 29892) iASL Compiler/Disassembler and Tools: 2990 2991iASL: Fixed a problem with the resource descriptor support where the 2992length 2993of the StartDependentFn and StartDependentFnNoPrio descriptors were not 2994included in cumulative descriptor offset, resulting in incorrect values 2995for 2996resource tags within resource descriptors appearing after a 2997StartDependent* 2998descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 2999 3000iASL and Preprocessor: Implemented full support for the #line directive 3001to 3002correctly track original source file line numbers through the .i 3003preprocessor 3004output file - for error and warning messages. 3005 3006iASL: Expand the allowable byte constants for address space IDs. 3007Previously, 3008the allowable range was 0x80-0xFF (user-defined spaces), now the range is 30090x0A-0xFF to allow for custom and new IDs without changing the compiler. 3010 3011iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 3012 3013iASL: Add option to completely disable the preprocessor (-Pn). 3014 3015iASL: Now emit all error/warning messages to standard error (stderr) by 3016default (instead of the previous stdout). 3017 3018ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 3019Update 3020for resource descriptor offset fix above. Update/cleanup error output 3021routines. Enable and send iASL errors/warnings to an error logfile 3022(error.txt). Send all other iASL output to a logfile (compiler.txt). 3023Fixed 3024several extraneous "unrecognized operator" messages. 3025 3026---------------------------------------- 302720 March 2012. Summary of changes for version 20120320: 3028 3029 30301) ACPICA Core Subsystem: 3031 3032Enhanced the sleep/wake interfaces to optionally execute the _GTS method 3033(Going To Sleep) and the _BFS method (Back From Sleep). Windows 3034apparently 3035does not execute these methods, and therefore these methods are often 3036untested. It has been seen on some systems where the execution of these 3037methods causes errors and also prevents the machine from entering S5. It 3038is 3039therefore suggested that host operating systems do not execute these 3040methods 3041by default. In the future, perhaps these methods can be optionally 3042executed 3043based on the age of the system and/or what is the newest version of 3044Windows 3045that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 3046and 3047AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 3048Ming. 3049 3050Fixed a problem where the length of the local/common FADT was set too 3051early. 3052The local FADT table length cannot be set to the common length until the 3053original length has been examined. There is code that checks the table 3054length 3055and sets various fields appropriately. This can affect older machines 3056with 3057early FADT versions. For example, this can cause inadvertent writes to 3058the 3059CST_CNT register. Julian Anastasov. 3060 3061Fixed a mapping issue related to a physical table override. Use the 3062deferred 3063mapping mechanism for tables loaded via the physical override OSL 3064interface. 3065This allows for early mapping before the virtual memory manager is 3066available. 3067Thomas Renninger, Bob Moore. 3068 3069Enhanced the automatic return-object repair code: Repair a common problem 3070with 3071predefined methods that are defined to return a variable-length Package 3072of 3073sub-objects. If there is only one sub-object, some BIOS ASL code 3074mistakenly 3075simply returns the single object instead of a Package with one sub- 3076object. 3077This new support will repair this error by wrapping a Package object 3078around 3079the original object, creating the correct and expected Package with one 3080sub- 3081object. Names that can be repaired in this manner include: _ALR, _CSD, 3082_HPX, 3083_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 3084939. 3085 3086Changed the exception code returned for invalid ACPI paths passed as 3087parameters to external interfaces such as AcpiEvaluateObject. Was 3088AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 3089 3090Example Code and Data Size: These are the sizes for the OS-independent 3091acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3092debug 3093version of the code includes the debug output trace mechanism and has a 3094much 3095larger code and data size. 3096 3097 Previous Release: 3098 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 3099 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3100 Current Release: 3101 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3102 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3103 3104 31052) iASL Compiler/Disassembler and Tools: 3106 3107iASL: Added the infrastructure and initial implementation of a integrated 3108C- 3109like preprocessor. This will simplify BIOS development process by 3110eliminating 3111the need for a separate preprocessing step during builds. On Windows, it 3112also 3113eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 3114features including full #define() macro support are still under 3115development. 3116These preprocessor directives are supported: 3117 #define 3118 #elif 3119 #else 3120 #endif 3121 #error 3122 #if 3123 #ifdef 3124 #ifndef 3125 #include 3126 #pragma message 3127 #undef 3128 #warning 3129In addition, these new command line options are supported: 3130 -D <symbol> Define symbol for preprocessor use 3131 -li Create preprocessed output file (*.i) 3132 -P Preprocess only and create preprocessor output file (*.i) 3133 3134Table Compiler: Fixed a problem where the equals operator within an 3135expression 3136did not work properly. 3137 3138Updated iASL to use the current versions of Bison/Flex. Updated the 3139Windows 3140project file to invoke these tools from the standard location. ACPICA BZ 3141904. 3142Versions supported: 3143 Flex for Windows: V2.5.4 3144 Bison for Windows: V2.4.1 3145 3146---------------------------------------- 314715 February 2012. Summary of changes for version 20120215: 3148 3149 31501) ACPICA Core Subsystem: 3151 3152There have been some major changes to the sleep/wake support code, as 3153described below (a - e). 3154 3155a) The AcpiLeaveSleepState has been split into two interfaces, similar to 3156AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 3157AcpiLeaveSleepStatePrep. This allows the host to perform actions between 3158the 3159time the _BFS method is called and the _WAK method is called. NOTE: all 3160hosts 3161must update their wake/resume code or else sleep/wake will not work 3162properly. 3163Rafael Wysocki. 3164 3165b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 3166_WAK 3167method. Some machines require that the GPEs are enabled before the _WAK 3168method 3169is executed. Thomas Renninger. 3170 3171c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 3172bit. 3173Some BIOS code assumes that WAK_STS will be cleared on resume and use it 3174to 3175determine whether the system is rebooting or resuming. Matthew Garrett. 3176 3177d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 3178Sleep) to 3179match the ACPI specification requirement. Rafael Wysocki. 3180 3181e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 3182registers within the V5 FADT. This support adds two new files: 3183hardware/hwesleep.c implements the support for the new registers. Moved 3184all 3185sleep/wake external interfaces to hardware/hwxfsleep.c. 3186 3187 3188Added a new OSL interface for ACPI table overrides, 3189AcpiOsPhysicalTableOverride. This interface allows the host to override a 3190table via a physical address, instead of the logical address required by 3191AcpiOsTableOverride. This simplifies the host implementation. Initial 3192implementation by Thomas Renninger. The ACPICA implementation creates a 3193single 3194shared function for table overrides that attempts both a logical and a 3195physical override. 3196 3197Expanded the OSL memory read/write interfaces to 64-bit data 3198(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 3199transfer support for GAS register structures passed to AcpiRead and 3200AcpiWrite. 3201 3202Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 3203custom 3204build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 3205model. 3206See the ACPICA reference for details. ACPICA BZ 942. This option removes 3207about 320810% of the code and 5% of the static data, and the following hardware 3209ACPI 3210features become unavailable: 3211 PM Event and Control registers 3212 SCI interrupt (and handler) 3213 Fixed Events 3214 General Purpose Events (GPEs) 3215 Global Lock 3216 ACPI PM timer 3217 FACS table (Waking vectors and Global Lock) 3218 3219Updated the unix tarball directory structure to match the ACPICA git 3220source 3221tree. This ensures that the generic unix makefiles work properly (in 3222generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 3223867. 3224 3225Updated the return value of the _REV predefined method to integer value 5 3226to 3227reflect ACPI 5.0 support. 3228 3229Moved the external ACPI PM timer interface prototypes to the public 3230acpixf.h 3231file where they belong. 3232 3233Example Code and Data Size: These are the sizes for the OS-independent 3234acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3235debug 3236version of the code includes the debug output trace mechanism and has a 3237much 3238larger code and data size. 3239 3240 Previous Release: 3241 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3242 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3243 Current Release: 3244 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 3245 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3246 3247 32482) iASL Compiler/Disassembler and Tools: 3249 3250Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 3251descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 3252incorrectly displayed. 3253 3254AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 3255specification. 3256 3257---------------------------------------- 325811 January 2012. Summary of changes for version 20120111: 3259 3260 32611) ACPICA Core Subsystem: 3262 3263Implemented a new mechanism to allow host device drivers to check for 3264address 3265range conflicts with ACPI Operation Regions. Both SystemMemory and 3266SystemIO 3267address spaces are supported. A new external interface, 3268AcpiCheckAddressRange, 3269allows drivers to check an address range against the ACPI namespace. See 3270the 3271ACPICA reference for additional details. Adds one new file, 3272utilities/utaddress.c. Lin Ming, Bob Moore. 3273 3274Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 3275Control 3276and 3277Status registers, update the ACPI 5.0 flags, and update internal data 3278structures to handle an FADT larger than 256 bytes. The size of the ACPI 32795.0 3280FADT is 268 bytes. 3281 3282Updated all ACPICA copyrights and signons to 2012. Added the 2012 3283copyright to 3284all module headers and signons, including the standard Linux header. This 3285affects virtually every file in the ACPICA core subsystem, iASL compiler, 3286and 3287all ACPICA utilities. 3288 3289Example Code and Data Size: These are the sizes for the OS-independent 3290acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3291debug 3292version of the code includes the debug output trace mechanism and has a 3293much 3294larger code and data size. 3295 3296 Previous Release: 3297 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 3298 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 3299 Current Release: 3300 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3301 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3302 3303 33042) iASL Compiler/Disassembler and Tools: 3305 3306Disassembler: fixed a problem with the automatic resource tag generation 3307support. Fixes a problem where the resource tags are inadvertently not 3308constructed if the table being disassembled contains external references 3309to 3310control methods. Moved the actual construction of the tags to after the 3311final 3312namespace is constructed (after 2nd parse is invoked due to external 3313control 3314method references.) ACPICA BZ 941. 3315 3316Table Compiler: Make all "generic" operators caseless. These are the 3317operators 3318like UINT8, String, etc. Making these caseless improves ease-of-use. 3319ACPICA BZ 3320934. 3321 3322---------------------------------------- 332323 November 2011. Summary of changes for version 20111123: 3324 33250) ACPI 5.0 Support: 3326 3327This release contains full support for the ACPI 5.0 specification, as 3328summarized below. 3329 3330Reduced Hardware Support: 3331------------------------- 3332 3333This support allows for ACPI systems without the usual ACPI hardware. 3334This 3335support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 3336will 3337not attempt to initialize or use any of the usual ACPI hardware. Note, 3338when 3339this flag is set, all of the following ACPI hardware is assumed to be not 3340present and is not initialized or accessed: 3341 3342 General Purpose Events (GPEs) 3343 Fixed Events (PM1a/PM1b and PM Control) 3344 Power Management Timer and Console Buttons (power/sleep) 3345 Real-time Clock Alarm 3346 Global Lock 3347 System Control Interrupt (SCI) 3348 The FACS is assumed to be non-existent 3349 3350ACPI Tables: 3351------------ 3352 3353All new tables and updates to existing tables are fully supported in the 3354ACPICA headers (for use by device drivers), the disassembler, and the 3355iASL 3356Data Table Compiler. ACPI 5.0 defines these new tables: 3357 3358 BGRT /* Boot Graphics Resource Table */ 3359 DRTM /* Dynamic Root of Trust for Measurement table */ 3360 FPDT /* Firmware Performance Data Table */ 3361 GTDT /* Generic Timer Description Table */ 3362 MPST /* Memory Power State Table */ 3363 PCCT /* Platform Communications Channel Table */ 3364 PMTT /* Platform Memory Topology Table */ 3365 RASF /* RAS Feature table */ 3366 3367Operation Regions/SpaceIDs: 3368--------------------------- 3369 3370All new operation regions are fully supported by the iASL compiler, the 3371disassembler, and the ACPICA runtime code (for dispatch to region 3372handlers.) 3373The new operation region Space IDs are: 3374 3375 GeneralPurposeIo 3376 GenericSerialBus 3377 3378Resource Descriptors: 3379--------------------- 3380 3381All new ASL resource descriptors are fully supported by the iASL 3382compiler, 3383the 3384ASL/AML disassembler, and the ACPICA runtime Resource Manager code 3385(including 3386all new predefined resource tags). New descriptors are: 3387 3388 FixedDma 3389 GpioIo 3390 GpioInt 3391 I2cSerialBus 3392 SpiSerialBus 3393 UartSerialBus 3394 3395ASL/AML Operators, New and Modified: 3396------------------------------------ 3397 3398One new operator is added, the Connection operator, which is used to 3399associate 3400a GeneralPurposeIo or GenericSerialBus resource descriptor with 3401individual 3402field objects within an operation region. Several new protocols are 3403associated 3404with the AccessAs operator. All are fully supported by the iASL compiler, 3405disassembler, and runtime ACPICA AML interpreter: 3406 3407 Connection // Declare Field Connection 3408attributes 3409 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 3410 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 3411Protocol 3412 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 3413 RawDataBuffer // Data type for Vendor Data 3414fields 3415 3416Predefined ASL/AML Objects: 3417--------------------------- 3418 3419All new predefined objects/control-methods are supported by the iASL 3420compiler 3421and the ACPICA runtime validation/repair (arguments and return values.) 3422New 3423predefined names include the following: 3424 3425Standard Predefined Names (Objects or Control Methods): 3426 _AEI, _CLS, _CPC, _CWS, _DEP, 3427 _DLM, _EVT, _GCP, _CRT, _GWS, 3428 _HRV, _PRE, _PSE, _SRT, _SUB. 3429 3430Resource Tags (Names used to access individual fields within resource 3431descriptors): 3432 _DBT, _DPL, _DRS, _END, _FLC, 3433 _IOR, _LIN, _MOD, _PAR, _PHA, 3434 _PIN, _PPI, _POL, _RXL, _SLV, 3435 _SPE, _STB, _TXL, _VEN. 3436 3437ACPICA External Interfaces: 3438--------------------------- 3439 3440Several new interfaces have been defined for use by ACPI-related device 3441drivers and other host OS services: 3442 3443AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 3444to 3445acquire and release AML mutexes that are defined in the DSDT/SSDT tables 3446provided by the BIOS. They are intended to be used in conjunction with 3447the 3448ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 3449mutual exclusion with the AML code/interpreter. 3450 3451AcpiGetEventResources: Returns the (formatted) resource descriptors as 3452defined 3453by the ACPI 5.0 _AEI object (ACPI Event Information). This object 3454provides 3455resource descriptors associated with hardware-reduced platform events, 3456similar 3457to the AcpiGetCurrentResources interface. 3458 3459Operation Region Handlers: For General Purpose IO and Generic Serial Bus 3460operation regions, information about the Connection() object and any 3461optional 3462length information is passed to the region handler within the Context 3463parameter. 3464 3465AcpiBufferToResource: This interface converts a raw AML buffer containing 3466a 3467resource template or resource descriptor to the ACPI_RESOURCE internal 3468format 3469suitable for use by device drivers. Can be used by an operation region 3470handler 3471to convert the Connection() buffer object into a ACPI_RESOURCE. 3472 3473Miscellaneous/Tools/TestSuites: 3474------------------------------- 3475 3476Support for extended _HID names (Four alpha characters instead of three). 3477Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 3478Support for ACPI 5.0 features in the ASLTS test suite. 3479Fully updated documentation (ACPICA and iASL reference documents.) 3480 3481ACPI Table Definition Language: 3482------------------------------- 3483 3484Support for this language was implemented and released as a subsystem of 3485the 3486iASL compiler in 2010. (See the iASL compiler User Guide.) 3487 3488 3489Non-ACPI 5.0 changes for this release: 3490-------------------------------------- 3491 34921) ACPICA Core Subsystem: 3493 3494Fix a problem with operation region declarations where a failure can 3495occur 3496if 3497the region name and an argument that evaluates to an object (such as the 3498region address) are in different namespace scopes. Lin Ming, ACPICA BZ 3499937. 3500 3501Do not abort an ACPI table load if an invalid space ID is found within. 3502This 3503will be caught later if the offending method is executed. ACPICA BZ 925. 3504 3505Fixed an issue with the FFixedHW space ID where the ID was not always 3506recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 3507 3508Fixed a problem with the 32-bit generation of the unix-specific OSL 3509(osunixxf.c). Lin Ming, ACPICA BZ 936. 3510 3511Several changes made to enable generation with the GCC 4.6 compiler. 3512ACPICA BZ 3513935. 3514 3515New error messages: Unsupported I/O requests (not 8/16/32 bit), and 3516Index/Bank 3517field registers out-of-range. 3518 35192) iASL Compiler/Disassembler and Tools: 3520 3521iASL: Implemented the __PATH__ operator, which returns the full pathname 3522of 3523the current source file. 3524 3525AcpiHelp: Automatically display expanded keyword information for all ASL 3526operators. 3527 3528Debugger: Add "Template" command to disassemble/dump resource template 3529buffers. 3530 3531Added a new master script to generate and execute the ASLTS test suite. 3532Automatically handles 32- and 64-bit generation. See tests/aslts.sh 3533 3534iASL: Fix problem with listing generation during processing of the 3535Switch() 3536operator where AML listing was disabled until the entire Switch block was 3537completed. 3538 3539iASL: Improve support for semicolon statement terminators. Fix "invalid 3540character" message for some cases when the semicolon is used. Semicolons 3541are 3542now allowed after every <Term> grammar element. ACPICA BZ 927. 3543 3544iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 3545923. 3546 3547Disassembler: Fix problem with disassembly of the DataTableRegion 3548operator 3549where an inadvertent "Unhandled deferred opcode" message could be 3550generated. 3551 35523) Example Code and Data Size 3553 3554These are the sizes for the OS-independent acpica.lib produced by the 3555Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 3556includes the debug output trace mechanism and has a much larger code and 3557data 3558size. 3559 3560 Previous Release: 3561 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3562 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3563 Current Release: 3564 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 3565 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 3566 3567---------------------------------------- 356822 September 2011. Summary of changes for version 20110922: 3569 35700) ACPI 5.0 News: 3571 3572Support for ACPI 5.0 in ACPICA has been underway for several months and 3573will 3574be released at the same time that ACPI 5.0 is officially released. 3575 3576The ACPI 5.0 specification is on track for release in the next few 3577months. 3578 35791) ACPICA Core Subsystem: 3580 3581Fixed a problem where the maximum sleep time for the Sleep() operator was 3582intended to be limited to two seconds, but was inadvertently limited to 358320 3584seconds instead. 3585 3586Linux and Unix makefiles: Added header file dependencies to ensure 3587correct 3588generation of ACPICA core code and utilities. Also simplified the 3589makefiles 3590considerably through the use of the vpath variable to specify search 3591paths. 3592ACPICA BZ 924. 3593 35942) iASL Compiler/Disassembler and Tools: 3595 3596iASL: Implemented support to check the access length for all fields 3597created to 3598access named Resource Descriptor fields. For example, if a resource field 3599is 3600defined to be two bits, a warning is issued if a CreateXxxxField() is 3601used 3602with an incorrect bit length. This is implemented for all current 3603resource 3604descriptor names. ACPICA BZ 930. 3605 3606Disassembler: Fixed a byte ordering problem with the output of 24-bit and 360756- 3608bit integers. 3609 3610iASL: Fixed a couple of issues associated with variable-length package 3611objects. 1) properly handle constants like One, Ones, Zero -- do not make 3612a 3613VAR_PACKAGE when these are used as a package length. 2) Allow the 3614VAR_PACKAGE 3615opcode (in addition to PACKAGE) when validating object types for 3616predefined 3617names. 3618 3619iASL: Emit statistics for all output files (instead of just the ASL input 3620and 3621AML output). Includes listings, hex files, etc. 3622 3623iASL: Added -G option to the table compiler to allow the compilation of 3624custom 3625ACPI tables. The only part of a table that is required is the standard 362636- 3627byte 3628ACPI header. 3629 3630AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 3631headers), 3632which also adds correct 64-bit support. Also, now all output filenames 3633are 3634completely lower case. 3635 3636AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 3637loading table files. A warning is issued for any such tables. The only 3638exception is an FADT. This also fixes a possible fault when attempting to 3639load 3640non-AML tables. ACPICA BZ 932. 3641 3642AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 3643a 3644missing table terminator could cause a fault when using the -p option. 3645 3646AcpiSrc: Fixed a possible divide-by-zero fault when generating file 3647statistics. 3648 36493) Example Code and Data Size 3650 3651These are the sizes for the OS-independent acpica.lib produced by the 3652Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 3653includes the debug output trace mechanism and has a much larger code and 3654data 3655size. 3656 3657 Previous Release (VC 9.0): 3658 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3659 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3660 Current Release (VC 9.0): 3661 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3662 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3663 3664 3665---------------------------------------- 366623 June 2011. Summary of changes for version 20110623: 3667 36681) ACPI CA Core Subsystem: 3669 3670Updated the predefined name repair mechanism to not attempt repair of a 3671_TSS 3672return object if a _PSS object is present. We can only sort the _TSS 3673return 3674package if there is no _PSS within the same scope. This is because if 3675_PSS 3676is 3677present, the ACPI specification dictates that the _TSS Power Dissipation 3678field 3679is to be ignored, and therefore some BIOSs leave garbage values in the 3680_TSS 3681Power field(s). In this case, it is best to just return the _TSS package 3682as- 3683is. Reported by, and fixed with assistance from Fenghua Yu. 3684 3685Added an option to globally disable the control method return value 3686validation 3687and repair. This runtime option can be used to disable return value 3688repair 3689if 3690this is causing a problem on a particular machine. Also added an option 3691to 3692AcpiExec (-dr) to set this disable flag. 3693 3694All makefiles and project files: Major changes to improve generation of 3695ACPICA 3696tools. ACPICA BZ 912: 3697 Reduce default optimization levels to improve compatibility 3698 For Linux, add strict-aliasing=0 for gcc 4 3699 Cleanup and simplify use of command line defines 3700 Cleanup multithread library support 3701 Improve usage messages 3702 3703Linux-specific header: update handling of THREAD_ID and pthread. For the 370432- 3705bit case, improve casting to eliminate possible warnings, especially with 3706the 3707acpica tools. 3708 3709Example Code and Data Size: These are the sizes for the OS-independent 3710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3711debug 3712version of the code includes the debug output trace mechanism and has a 3713much 3714larger code and data size. 3715 3716 Previous Release (VC 9.0): 3717 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 3718 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3719 Current Release (VC 9.0): 3720 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3721 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3722 37232) iASL Compiler/Disassembler and Tools: 3724 3725With this release, a new utility named "acpihelp" has been added to the 3726ACPICA 3727package. This utility summarizes the ACPI specification chapters for the 3728ASL 3729and AML languages. It generates under Linux/Unix as well as Windows, and 3730provides the following functionality: 3731 Find/display ASL operator(s) -- with description and syntax. 3732 Find/display ASL keyword(s) -- with exact spelling and descriptions. 3733 Find/display ACPI predefined name(s) -- with description, number 3734 of arguments, and the return value data type. 3735 Find/display AML opcode name(s) -- with opcode, arguments, and 3736grammar. 3737 Decode/display AML opcode -- with opcode name, arguments, and 3738grammar. 3739 3740Service Layers: Make multi-thread support configurable. Conditionally 3741compile 3742the multi-thread support so that threading libraries will not be linked 3743if 3744not 3745necessary. The only tool that requires multi-thread support is AcpiExec. 3746 3747iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 3748of 3749Bison appear to want the interface to yyerror to be a const char * (or at 3750least this is a problem when generating iASL on some systems.) ACPICA BZ 3751923 3752Pierre Lejeune. 3753 3754Tools: Fix for systems where O_BINARY is not defined. Only used for 3755Windows 3756versions of the tools. 3757 3758---------------------------------------- 375927 May 2011. Summary of changes for version 20110527: 3760 37611) ACPI CA Core Subsystem: 3762 3763ASL Load() operator: Reinstate most restrictions on the incoming ACPI 3764table 3765signature. Now, only allow SSDT, OEMx, and a null signature. History: 3766 1) Originally, we checked the table signature for "SSDT" or "PSDT". 3767 (PSDT is now obsolete.) 3768 2) We added support for OEMx tables, signature "OEM" plus a fourth 3769 "don't care" character. 3770 3) Valid tables were encountered with a null signature, so we just 3771 gave up on validating the signature, (05/2008). 3772 4) We encountered non-AML tables such as the MADT, which caused 3773 interpreter errors and kernel faults. So now, we once again allow 3774 only SSDT, OEMx, and now, also a null signature. (05/2011). 3775 3776Added the missing _TDL predefined name to the global name list in order 3777to 3778enable validation. Affects both the core ACPICA code and the iASL 3779compiler. 3780 3781Example Code and Data Size: These are the sizes for the OS-independent 3782acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3783debug 3784version of the code includes the debug output trace mechanism and has a 3785much 3786larger code and data size. 3787 3788 Previous Release (VC 9.0): 3789 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 3790 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 3791 Current Release (VC 9.0): 3792 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 3793 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3794 37952) iASL Compiler/Disassembler and Tools: 3796 3797Debugger/AcpiExec: Implemented support for "complex" method arguments on 3798the 3799debugger command line. This adds support beyond simple integers -- 3800including 3801Strings, Buffers, and Packages. Includes support for nested packages. 3802Increased the default command line buffer size to accommodate these 3803arguments. 3804See the ACPICA reference for details and syntax. ACPICA BZ 917. 3805 3806Debugger/AcpiExec: Implemented support for "default" method arguments for 3807the 3808Execute/Debug command. Now, the debugger will always invoke a control 3809method 3810with the required number of arguments -- even if the command line 3811specifies 3812none or insufficient arguments. It uses default integer values for any 3813missing 3814arguments. Also fixes a bug where only six method arguments maximum were 3815supported instead of the required seven. 3816 3817Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 3818and 3819also return status in order to prevent buffer overruns. See the ACPICA 3820reference for details and syntax. ACPICA BZ 921 3821 3822iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 3823makefiles to simplify support for the two different but similar parser 3824generators, bison and yacc. 3825 3826Updated the generic unix makefile for gcc 4. The default gcc version is 3827now 3828expected to be 4 or greater, since options specific to gcc 4 are used. 3829 3830---------------------------------------- 383113 April 2011. Summary of changes for version 20110413: 3832 38331) ACPI CA Core Subsystem: 3834 3835Implemented support to execute a so-called "orphan" _REG method under the 3836EC 3837device. This change will force the execution of a _REG method underneath 3838the 3839EC 3840device even if there is no corresponding operation region of type 3841EmbeddedControl. Fixes a problem seen on some machines and apparently is 3842compatible with Windows behavior. ACPICA BZ 875. 3843 3844Added more predefined methods that are eligible for automatic NULL 3845package 3846element removal. This change adds another group of predefined names to 3847the 3848list 3849of names that can be repaired by having NULL package elements dynamically 3850removed. This group are those methods that return a single variable- 3851length 3852package containing simple data types such as integers, buffers, strings. 3853This 3854includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 3855_PSL, 3856_Sx, 3857and _TZD. ACPICA BZ 914. 3858 3859Split and segregated all internal global lock functions to a new file, 3860evglock.c. 3861 3862Updated internal address SpaceID for DataTable regions. Moved this 3863internal 3864space 3865id in preparation for ACPI 5.0 changes that will include some new space 3866IDs. 3867This 3868change should not affect user/host code. 3869 3870Example Code and Data Size: These are the sizes for the OS-independent 3871acpica.lib 3872produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3873version of 3874the code includes the debug output trace mechanism and has a much larger 3875code 3876and 3877data size. 3878 3879 Previous Release (VC 9.0): 3880 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3881 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3882 Current Release (VC 9.0): 3883 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 3884 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 3885 38862) iASL Compiler/Disassembler and Tools: 3887 3888iASL/DTC: Major update for new grammar features. Allow generic data types 3889in 3890custom ACPI tables. Field names are now optional. Any line can be split 3891to 3892multiple lines using the continuation char (\). Large buffers now use 3893line- 3894continuation character(s) and no colon on the continuation lines. See the 3895grammar 3896update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 3897Moore. 3898 3899iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 3900statements. 3901Since the parser stuffs a "zero" as the return value for these statements 3902(due 3903to 3904the underlying AML grammar), they were seen as "return with value" by the 3905iASL 3906semantic checking. They are now seen correctly as "null" return 3907statements. 3908 3909iASL: Check if a_REG declaration has a corresponding Operation Region. 3910Adds a 3911check for each _REG to ensure that there is in fact a corresponding 3912operation 3913region declaration in the same scope. If not, the _REG method is not very 3914useful 3915since it probably won't be executed. ACPICA BZ 915. 3916 3917iASL/DTC: Finish support for expression evaluation. Added a new 3918expression 3919parser 3920that implements c-style operator precedence and parenthesization. ACPICA 3921bugzilla 3922908. 3923 3924Disassembler/DTC: Remove support for () and <> style comments in data 3925tables. 3926Now 3927that DTC has full expression support, we don't want to have comment 3928strings 3929that 3930start with a parentheses or a less-than symbol. Now, only the standard /* 3931and 3932// 3933comments are supported, as well as the bracket [] comments. 3934 3935AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 3936"unusual" 3937headers in the acpidump file. Update the header validation to support 3938these 3939tables. Problem introduced in previous AcpiXtract version in the change 3940to 3941support "wrong checksum" error messages emitted by acpidump utility. 3942 3943iASL: Add a * option to generate all template files (as a synonym for 3944ALL) 3945as 3946in 3947"iasl -T *" or "iasl -T ALL". 3948 3949iASL/DTC: Do not abort compiler on fatal errors. We do not want to 3950completely 3951abort the compiler on "fatal" errors, simply should abort the current 3952compile. 3953This allows multiple compiles with a single (possibly wildcard) compiler 3954invocation. 3955 3956---------------------------------------- 395716 March 2011. Summary of changes for version 20110316: 3958 39591) ACPI CA Core Subsystem: 3960 3961Fixed a problem caused by a _PRW method appearing at the namespace root 3962scope 3963during the setup of wake GPEs. A fault could occur if a _PRW directly 3964under 3965the 3966root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 3967 3968Implemented support for "spurious" Global Lock interrupts. On some 3969systems, a 3970global lock interrupt can occur without the pending flag being set. Upon 3971a 3972GL 3973interrupt, we now ensure that a thread is actually waiting for the lock 3974before 3975signaling GL availability. Rafael Wysocki, Bob Moore. 3976 3977Example Code and Data Size: These are the sizes for the OS-independent 3978acpica.lib 3979produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3980version of 3981the code includes the debug output trace mechanism and has a much larger 3982code 3983and 3984data size. 3985 3986 Previous Release (VC 9.0): 3987 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3988 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3989 Current Release (VC 9.0): 3990 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3991 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3992 39932) iASL Compiler/Disassembler and Tools: 3994 3995Implemented full support for the "SLIC" ACPI table. Includes support in 3996the 3997header files, disassembler, table compiler, and template generator. Bob 3998Moore, 3999Lin Ming. 4000 4001AcpiXtract: Correctly handle embedded comments and messages from 4002AcpiDump. 4003Apparently some or all versions of acpidump will occasionally emit a 4004comment 4005like 4006"Wrong checksum", etc., into the dump file. This was causing problems for 4007AcpiXtract. ACPICA BZ 905. 4008 4009iASL: Fix the Linux makefile by removing an inadvertent double file 4010inclusion. 4011ACPICA BZ 913. 4012 4013AcpiExec: Update installation of operation region handlers. Install one 4014handler 4015for a user-defined address space. This is used by the ASL test suite 4016(ASLTS). 4017 4018---------------------------------------- 401911 February 2011. Summary of changes for version 20110211: 4020 40211) ACPI CA Core Subsystem: 4022 4023Added a mechanism to defer _REG methods for some early-installed 4024handlers. 4025Most user handlers should be installed before call to 4026AcpiEnableSubsystem. 4027However, Event handlers and region handlers should be installed after 4028AcpiInitializeObjects. Override handlers for the "default" regions should 4029be 4030installed early, however. This change executes all _REG methods for the 4031default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 4032chicken/egg issues between them. ACPICA BZ 848. 4033 4034Implemented an optimization for GPE detection. This optimization will 4035simply 4036ignore GPE registers that contain no enabled GPEs -- there is no need to 4037read the register since this information is available internally. This 4038becomes more important on machines with a large GPE space. ACPICA 4039bugzilla 4040884. Lin Ming. Suggestion from Joe Liu. 4041 4042Removed all use of the highly unreliable FADT revision field. The 4043revision 4044number in the FADT has been found to be completely unreliable and cannot 4045be 4046trusted. Only the actual table length can be used to infer the version. 4047This 4048change updates the ACPICA core and the disassembler so that both no 4049longer 4050even look at the FADT version and instead depend solely upon the FADT 4051length. 4052 4053Fix an unresolved name issue for the no-debug and no-error-message source 4054generation cases. The _AcpiModuleName was left undefined in these cases, 4055but 4056it is actually needed as a parameter to some interfaces. Define 4057_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 4058 4059Split several large files (makefiles and project files updated) 4060 utglobal.c -> utdecode.c 4061 dbcomds.c -> dbmethod.c dbnames.c 4062 dsopcode.c -> dsargs.c dscontrol.c 4063 dsload.c -> dsload2.c 4064 aslanalyze.c -> aslbtypes.c aslwalks.c 4065 4066Example Code and Data Size: These are the sizes for the OS-independent 4067acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4068debug version of the code includes the debug output trace mechanism and 4069has 4070a much larger code and data size. 4071 4072 Previous Release (VC 9.0): 4073 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4074 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4075 Current Release (VC 9.0): 4076 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4077 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4078 40792) iASL Compiler/Disassembler and Tools: 4080 4081iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 4082These are useful C-style macros with the standard definitions. ACPICA 4083bugzilla 898. 4084 4085iASL/DTC: Added support for integer expressions and labels. Support for 4086full 4087expressions for all integer fields in all ACPI tables. Support for labels 4088in 4089"generic" portions of tables such as UEFI. See the iASL reference manual. 4090 4091Debugger: Added a command to display the status of global handlers. The 4092"handlers" command will display op region, fixed event, and miscellaneous 4093global handlers. installation status -- and for op regions, whether 4094default 4095or user-installed handler will be used. 4096 4097iASL: Warn if reserved method incorrectly returns a value. Many 4098predefined 4099names are defined such that they do not return a value. If implemented as 4100a 4101method, issue a warning if such a name explicitly returns a value. ACPICA 4102Bugzilla 855. 4103 4104iASL: Added detection of GPE method name conflicts. Detects a conflict 4105where 4106there are two GPE methods of the form _Lxy and _Exy in the same scope. 4107(For 4108example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 4109 4110iASL/DTC: Fixed a couple input scanner issues with comments and line 4111numbers. Comment remover could get confused and miss a comment ending. 4112Fixed 4113a problem with line counter maintenance. 4114 4115iASL/DTC: Reduced the severity of some errors from fatal to error. There 4116is 4117no need to abort on simple errors within a field definition. 4118 4119Debugger: Simplified the output of the help command. All help output now 4120in 4121a single screen, instead of help subcommands. ACPICA Bugzilla 897. 4122 4123---------------------------------------- 412412 January 2011. Summary of changes for version 20110112: 4125 41261) ACPI CA Core Subsystem: 4127 4128Fixed a race condition between method execution and namespace walks that 4129can 4130possibly cause a fault. The problem was apparently introduced in version 413120100528 as a result of a performance optimization that reduces the 4132number 4133of 4134namespace walks upon method exit by using the delete_namespace_subtree 4135function instead of the delete_namespace_by_owner function used 4136previously. 4137Bug is a missing namespace lock in the delete_namespace_subtree function. 4138dana.myers@oracle.com 4139 4140Fixed several issues and a possible fault with the automatic "serialized" 4141method support. History: This support changes a method to "serialized" on 4142the 4143fly if the method generates an AE_ALREADY_EXISTS error, indicating the 4144possibility that it cannot handle reentrancy. This fix repairs a couple 4145of 4146issues seen in the field, especially on machines with many cores: 4147 4148 1) Delete method children only upon the exit of the last thread, 4149 so as to not delete objects out from under other running threads 4150 (and possibly causing a fault.) 4151 2) Set the "serialized" bit for the method only upon the exit of the 4152 Last thread, so as to not cause deadlock when running threads 4153 attempt to exit. 4154 3) Cleanup the use of the AML "MethodFlags" and internal method flags 4155 so that there is no longer any confusion between the two. 4156 4157 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 4158 4159Debugger: Now lock the namespace for duration of a namespace dump. 4160Prevents 4161issues if the namespace is changing dynamically underneath the debugger. 4162Especially affects temporary namespace nodes, since the debugger displays 4163these also. 4164 4165Updated the ordering of include files. The ACPICA headers should appear 4166before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 4167set 4168any necessary compiler-specific defines, etc. Affects the ACPI-related 4169tools 4170and utilities. 4171 4172Updated all ACPICA copyrights and signons to 2011. Added the 2011 4173copyright 4174to all module headers and signons, including the Linux header. This 4175affects 4176virtually every file in the ACPICA core subsystem, iASL compiler, and all 4177utilities. 4178 4179Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 4180project files for VC++ 6.0 are now obsolete. New project files can be 4181found 4182under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 4183details. 4184 4185Example Code and Data Size: These are the sizes for the OS-independent 4186acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4187debug version of the code includes the debug output trace mechanism and 4188has a 4189much larger code and data size. 4190 4191 Previous Release (VC 6.0): 4192 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 4193 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 4194 Current Release (VC 9.0): 4195 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4196 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4197 41982) iASL Compiler/Disassembler and Tools: 4199 4200iASL: Added generic data types to the Data Table compiler. Add "generic" 4201data 4202types such as UINT32, String, Unicode, etc., to simplify the generation 4203of 4204platform-defined tables such as UEFI. Lin Ming. 4205 4206iASL: Added listing support for the Data Table Compiler. Adds listing 4207support 4208(-l) to display actual binary output for each line of input code. 4209 4210---------------------------------------- 421109 December 2010. Summary of changes for version 20101209: 4212 42131) ACPI CA Core Subsystem: 4214 4215Completed the major overhaul of the GPE support code that was begun in 4216July 42172010. Major features include: removal of _PRW execution in ACPICA (host 4218executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 4219changes to existing interfaces, simplification of GPE handler operation, 4220and 4221a handful of new interfaces: 4222 4223 AcpiUpdateAllGpes 4224 AcpiFinishGpe 4225 AcpiSetupGpeForWake 4226 AcpiSetGpeWakeMask 4227 One new file, evxfgpe.c to consolidate all external GPE interfaces. 4228 4229See the ACPICA Programmer Reference for full details and programming 4230information. See the new section 4.4 "General Purpose Event (GPE) 4231Support" 4232for a full overview, and section 8.7 "ACPI General Purpose Event 4233Management" 4234for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 4235Ming, 4236Bob Moore, Rafael Wysocki. 4237 4238Implemented a new GPE feature for Windows compatibility, the "Implicit 4239Wake 4240GPE Notify". This feature will automatically issue a Notify(2) on a 4241device 4242when a Wake GPE is received if there is no corresponding GPE method or 4243handler. ACPICA BZ 870. 4244 4245Fixed a problem with the Scope() operator during table parse and load 4246phase. 4247During load phase (table load or method execution), the scope operator 4248should 4249not enter the target into the namespace. Instead, it should open a new 4250scope 4251at the target location. Linux BZ 19462, ACPICA BZ 882. 4252 4253Example Code and Data Size: These are the sizes for the OS-independent 4254acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4255debug version of the code includes the debug output trace mechanism and 4256has a 4257much larger code and data size. 4258 4259 Previous Release: 4260 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 4261 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 4262 Current Release: 4263 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4264 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4265 42662) iASL Compiler/Disassembler and Tools: 4267 4268iASL: Relax the alphanumeric restriction on _CID strings. These strings 4269are 4270"bus-specific" per the ACPI specification, and therefore any characters 4271are 4272acceptable. The only checks that can be performed are for a null string 4273and 4274perhaps for a leading asterisk. ACPICA BZ 886. 4275 4276iASL: Fixed a problem where a syntax error that caused a premature EOF 4277condition on the source file emitted a very confusing error message. The 4278premature EOF is now detected correctly. ACPICA BZ 891. 4279 4280Disassembler: Decode the AccessSize within a Generic Address Structure 4281(byte 4282access, word access, etc.) Note, this field does not allow arbitrary bit 4283access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 4284 4285New: AcpiNames utility - Example namespace dump utility. Shows an example 4286of 4287ACPICA configuration for a minimal namespace dump utility. Uses table and 4288namespace managers, but no AML interpreter. Does not add any 4289functionality 4290over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 4291partition and configure ACPICA. ACPICA BZ 883. 4292 4293AML Debugger: Increased the debugger buffer size for method return 4294objects. 4295Was 4K, increased to 16K. Also enhanced error messages for debugger 4296method 4297execution, including the buffer overflow case. 4298 4299---------------------------------------- 430013 October 2010. Summary of changes for version 20101013: 4301 43021) ACPI CA Core Subsystem: 4303 4304Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 4305now 4306clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 4307HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 4308 4309Changed the type of the predefined namespace object _TZ from ThermalZone 4310to 4311Device. This was found to be confusing to the host software that 4312processes 4313the various thermal zones, since _TZ is not really a ThermalZone. 4314However, 4315a 4316Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 4317Zhang. 4318 4319Added Windows Vista SP2 to the list of supported _OSI strings. The actual 4320string is "Windows 2006 SP2". 4321 4322Eliminated duplicate code in AcpiUtExecute* functions. Now that the 4323nsrepair 4324code automatically repairs _HID-related strings, this type of code is no 4325longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 4326878. 4327 4328Example Code and Data Size: These are the sizes for the OS-independent 4329acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4330debug version of the code includes the debug output trace mechanism and 4331has a 4332much larger code and data size. 4333 4334 Previous Release: 4335 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4336 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4337 Current Release: 4338 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4339 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4340 43412) iASL Compiler/Disassembler and Tools: 4342 4343iASL: Implemented additional compile-time validation for _HID strings. 4344The 4345non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 4346length 4347of 4348the string must be exactly seven or eight characters. For both _HID and 4349_CID 4350strings, all characters must be alphanumeric. ACPICA BZ 874. 4351 4352iASL: Allow certain "null" resource descriptors. Some BIOS code creates 4353descriptors that are mostly or all zeros, with the expectation that they 4354will 4355be filled in at runtime. iASL now allows this as long as there is a 4356"resource 4357tag" (name) associated with the descriptor, which gives the ASL a handle 4358needed to modify the descriptor. ACPICA BZ 873. 4359 4360Added single-thread support to the generic Unix application OSL. 4361Primarily 4362for iASL support, this change removes the use of semaphores in the 4363single- 4364threaded ACPICA tools/applications - increasing performance. The 4365_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 4366option. ACPICA BZ 879. 4367 4368AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 4369support 4370for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 4371 4372iASL: Moved all compiler messages to a new file, aslmessages.h. 4373 4374---------------------------------------- 437515 September 2010. Summary of changes for version 20100915: 4376 43771) ACPI CA Core Subsystem: 4378 4379Removed the AcpiOsDerivePciId OSL interface. The various host 4380implementations 4381of this function were not OS-dependent and are now obsolete and can be 4382removed from all host OSLs. This function has been replaced by 4383AcpiHwDerivePciId, which is now part of the ACPICA core code. 4384AcpiHwDerivePciId has been implemented without recursion. Adds one new 4385module, hwpci.c. ACPICA BZ 857. 4386 4387Implemented a dynamic repair for _HID and _CID strings. The following 4388problems are now repaired at runtime: 1) Remove a leading asterisk in the 4389string, and 2) the entire string is uppercased. Both repairs are in 4390accordance with the ACPI specification and will simplify host driver 4391code. 4392ACPICA BZ 871. 4393 4394The ACPI_THREAD_ID type is no longer configurable, internally it is now 4395always UINT64. This simplifies the ACPICA code, especially any printf 4396output. 4397UINT64 is the only common data type for all thread_id types across all 4398operating systems. It is now up to the host OSL to cast the native 4399thread_id 4400type to UINT64 before returning the value to ACPICA (via 4401AcpiOsGetThreadId). 4402Lin Ming, Bob Moore. 4403 4404Added the ACPI_INLINE type to enhance the ACPICA configuration. The 4405"inline" 4406keyword is not standard across compilers, and this type allows inline to 4407be 4408configured on a per-compiler basis. Lin Ming. 4409 4410Made the system global AcpiGbl_SystemAwakeAndRunning publically 4411available. 4412Added an extern for this boolean in acpixf.h. Some hosts utilize this 4413value 4414during suspend/restore operations. ACPICA BZ 869. 4415 4416All code that implements error/warning messages with the "ACPI:" prefix 4417has 4418been moved to a new module, utxferror.c. 4419 4420The UINT64_OVERLAY was moved to utmath.c, which is the only module where 4421it 4422is used. ACPICA BZ 829. Lin Ming, Bob Moore. 4423 4424Example Code and Data Size: These are the sizes for the OS-independent 4425acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4426debug version of the code includes the debug output trace mechanism and 4427has a 4428much larger code and data size. 4429 4430 Previous Release: 4431 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 4432 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 4433 Current Release: 4434 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4435 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4436 44372) iASL Compiler/Disassembler and Tools: 4438 4439iASL/Disassembler: Write ACPI errors to stderr instead of the output 4440file. 4441This keeps the output files free of random error messages that may 4442originate 4443from within the namespace/interpreter code. Used this opportunity to 4444merge 4445all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 4446866. Lin Ming, Bob Moore. 4447 4448Tools: update some printfs for ansi warnings on size_t. Handle width 4449change 4450of size_t on 32-bit versus 64-bit generations. Lin Ming. 4451 4452---------------------------------------- 445306 August 2010. Summary of changes for version 20100806: 4454 44551) ACPI CA Core Subsystem: 4456 4457Designed and implemented a new host interface to the _OSI support code. 4458This 4459will allow the host to dynamically add or remove multiple _OSI strings, 4460as 4461well as install an optional handler that is called for each _OSI 4462invocation. 4463Also added a new AML debugger command, 'osi' to display and modify the 4464global 4465_OSI string table, and test support in the AcpiExec utility. See the 4466ACPICA 4467reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 4468New Functions: 4469 AcpiInstallInterface - Add an _OSI string. 4470 AcpiRemoveInterface - Delete an _OSI string. 4471 AcpiInstallInterfaceHandler - Install optional _OSI handler. 4472Obsolete Functions: 4473 AcpiOsValidateInterface - no longer used. 4474New Files: 4475 source/components/utilities/utosi.c 4476 4477Re-introduced the support to enable multi-byte transfers for Embedded 4478Controller (EC) operation regions. A reported problem was found to be a 4479bug 4480in the host OS, not in the multi-byte support. Previously, the maximum 4481data 4482size passed to the EC operation region handler was a single byte. There 4483are 4484often EC Fields larger than one byte that need to be transferred, and it 4485is 4486useful for the EC driver to lock these as a single transaction. This 4487change 4488enables single transfers larger than 8 bits. This effectively changes the 4489access to the EC space from ByteAcc to AnyAcc, and will probably require 4490changes to the host OS Embedded Controller driver to enable 16/32/64/256- 4491bit 4492transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 4493 4494Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 4495prototype in acpiosxf.h had the output value pointer as a (void *). 4496It should be a (UINT64 *). This may affect some host OSL code. 4497 4498Fixed a couple problems with the recently modified Linux makefiles for 4499iASL 4500and AcpiExec. These new makefiles place the generated object files in the 4501local directory so that there can be no collisions between the files that 4502are 4503shared between them that are compiled with different options. 4504 4505Example Code and Data Size: These are the sizes for the OS-independent 4506acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4507debug version of the code includes the debug output trace mechanism and 4508has a 4509much larger code and data size. 4510 4511 Previous Release: 4512 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4513 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 4514 Current Release: 4515 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 4516 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 4517 45182) iASL Compiler/Disassembler and Tools: 4519 4520iASL/Disassembler: Added a new option (-da, "disassemble all") to load 4521the 4522namespace from and disassemble an entire group of AML files. Useful for 4523loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 4524and 4525disassembling with one simple command. ACPICA BZ 865. Lin Ming. 4526 4527iASL: Allow multiple invocations of -e option. This change allows 4528multiple 4529uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 4530834. 4531Lin Ming. 4532 4533---------------------------------------- 453402 July 2010. Summary of changes for version 20100702: 4535 45361) ACPI CA Core Subsystem: 4537 4538Implemented several updates to the recently added GPE reference count 4539support. The model for "wake" GPEs is changing to give the host OS 4540complete 4541control of these GPEs. Eventually, the ACPICA core will not execute any 4542_PRW 4543methods, since the host already must execute them. Also, additional 4544changes 4545were made to help ensure that the reference counts are kept in proper 4546synchronization with reality. Rafael J. Wysocki. 4547 45481) Ensure that GPEs are not enabled twice during initialization. 45492) Ensure that GPE enable masks stay in sync with the reference count. 45503) Do not inadvertently enable GPEs when writing GPE registers. 45514) Remove the internal wake reference counter and add new AcpiGpeWakeup 4552interface. This interface will set or clear individual GPEs for wakeup. 45535) Remove GpeType argument from AcpiEnable and AcpiDisable. These 4554interfaces 4555are now used for "runtime" GPEs only. 4556 4557Changed the behavior of the GPE install/remove handler interfaces. The 4558GPE 4559is 4560no longer disabled during this process, as it was found to cause problems 4561on 4562some machines. Rafael J. Wysocki. 4563 4564Reverted a change introduced in version 20100528 to enable Embedded 4565Controller multi-byte transfers. This change was found to cause problems 4566with 4567Index Fields and possibly Bank Fields. It will be reintroduced when these 4568problems have been resolved. 4569 4570Fixed a problem with references to Alias objects within Package Objects. 4571A 4572reference to an Alias within the definition of a Package was not always 4573resolved properly. Aliases to objects like Processors, Thermal zones, 4574etc. 4575were resolved to the actual object instead of a reference to the object 4576as 4577it 4578should be. Package objects are only allowed to contain integer, string, 4579buffer, package, and reference objects. Redhat bugzilla 608648. 4580 4581Example Code and Data Size: These are the sizes for the OS-independent 4582acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4583debug version of the code includes the debug output trace mechanism and 4584has a 4585much larger code and data size. 4586 4587 Previous Release: 4588 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4589 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 4590 Current Release: 4591 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4592 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 4593 45942) iASL Compiler/Disassembler and Tools: 4595 4596iASL: Implemented a new compiler subsystem to allow definition and 4597compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 4598These 4599are called "ACPI Data Tables", and the new compiler is the "Data Table 4600Compiler". This compiler is intended to simplify the existing error-prone 4601process of creating these tables for the BIOS, as well as allowing the 4602disassembly, modification, recompilation, and override of existing ACPI 4603data 4604tables. See the iASL User Guide for detailed information. 4605 4606iASL: Implemented a new Template Generator option in support of the new 4607Data 4608Table Compiler. This option will create examples of all known ACPI tables 4609that can be used as the basis for table development. See the iASL 4610documentation and the -T option. 4611 4612Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 4613Descriptor Table). 4614 4615Updated the Linux makefiles for iASL and AcpiExec to place the generated 4616object files in the local directory so that there can be no collisions 4617between the shared files between them that are generated with different 4618options. 4619 4620Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 4621Use 4622the #define __APPLE__ to enable this support. 4623 4624---------------------------------------- 462528 May 2010. Summary of changes for version 20100528: 4626 4627Note: The ACPI 4.0a specification was released on April 5, 2010 and is 4628available at www.acpi.info. This is primarily an errata release. 4629 46301) ACPI CA Core Subsystem: 4631 4632Undefined ACPI tables: We are looking for the definitions for the 4633following 4634ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 4635 4636Implemented support to enable multi-byte transfers for Embedded 4637Controller 4638(EC) operation regions. Previously, the maximum data size passed to the 4639EC 4640operation region handler was a single byte. There are often EC Fields 4641larger 4642than one byte that need to be transferred, and it is useful for the EC 4643driver 4644to lock these as a single transaction. This change enables single 4645transfers 4646larger than 8 bits. This effectively changes the access to the EC space 4647from 4648ByteAcc to AnyAcc, and will probably require changes to the host OS 4649Embedded 4650Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 4651bit 4652transfers. Alexey Starikovskiy, Lin Ming 4653 4654Implemented a performance enhancement for namespace search and access. 4655This 4656change enhances the performance of namespace searches and walks by adding 4657a 4658backpointer to the parent in each namespace node. On large namespaces, 4659this 4660change can improve overall ACPI performance by up to 9X. Adding a pointer 4661to 4662each namespace node increases the overall size of the internal namespace 4663by 4664about 5%, since each namespace entry usually consists of both a namespace 4665node and an ACPI operand object. However, this is the first growth of the 4666namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 4667 4668Implemented a performance optimization that reduces the number of 4669namespace 4670walks. On control method exit, only walk the namespace if the method is 4671known 4672to have created namespace objects outside of its local scope. Previously, 4673the 4674entire namespace was traversed on each control method exit. This change 4675can 4676improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 4677Moore. 4678 4679Added support to truncate I/O addresses to 16 bits for Windows 4680compatibility. 4681Some ASL code has been seen in the field that inadvertently has bits set 4682above bit 15. This feature is optional and is enabled if the BIOS 4683requests 4684any Windows OSI strings. It can also be enabled by the host OS. Matthew 4685Garrett, Bob Moore. 4686 4687Added support to limit the maximum time for the ASL Sleep() operator. To 4688prevent accidental deep sleeps, limit the maximum time that Sleep() will 4689actually sleep. Configurable, the default maximum is two seconds. ACPICA 4690bugzilla 854. 4691 4692Added run-time validation support for the _WDG and_WED Microsoft 4693predefined 4694methods. These objects are defined by "Windows Instrumentation", and are 4695not 4696part of the ACPI spec. ACPICA BZ 860. 4697 4698Expanded all statistic counters used during namespace and device 4699initialization from 16 to 32 bits in order to support very large 4700namespaces. 4701 4702Replaced all instances of %d in printf format specifiers with %u since 4703nearly 4704all integers in ACPICA are unsigned. 4705 4706Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 4707returned 4708as AE_NO_HANDLER. 4709 4710Example Code and Data Size: These are the sizes for the OS-independent 4711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4712debug version of the code includes the debug output trace mechanism and 4713has a 4714much larger code and data size. 4715 4716 Previous Release: 4717 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 4718 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 4719 Current Release: 4720 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4721 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 4722 47232) iASL Compiler/Disassembler and Tools: 4724 4725iASL: Added compiler support for the _WDG and_WED Microsoft predefined 4726methods. These objects are defined by "Windows Instrumentation", and are 4727not 4728part of the ACPI spec. ACPICA BZ 860. 4729 4730AcpiExec: added option to disable the memory tracking mechanism. The -dt 4731option will disable the tracking mechanism, which improves performance 4732considerably. 4733 4734AcpiExec: Restructured the command line options into -d (disable) and -e 4735(enable) options. 4736 4737---------------------------------------- 473828 April 2010. Summary of changes for version 20100428: 4739 47401) ACPI CA Core Subsystem: 4741 4742Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 4743including FADT-based and GPE Block Devices, execute any _PRW methods in 4744the 4745new table, and process any _Lxx/_Exx GPE methods in the new table. Any 4746runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 4747immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 4748Devices. Provides compatibility with other ACPI implementations. Two new 4749files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 4750Moore. 4751 4752Fixed a regression introduced in version 20100331 within the table 4753manager 4754where initial table loading could fail. This was introduced in the fix 4755for 4756AcpiReallocateRootTable. Also, renamed some of fields in the table 4757manager 4758data structures to clarify their meaning and use. 4759 4760Fixed a possible allocation overrun during internal object copy in 4761AcpiUtCopySimpleObject. The original code did not correctly handle the 4762case 4763where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 4764847. 4765 4766Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 4767possible access beyond end-of-allocation. Also, now fully validate 4768descriptor 4769(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 4770 4771Example Code and Data Size: These are the sizes for the OS-independent 4772acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4773debug version of the code includes the debug output trace mechanism and 4774has a 4775much larger code and data size. 4776 4777 Previous Release: 4778 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 4779 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 4780 Current Release: 4781 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 4782 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 4783 47842) iASL Compiler/Disassembler and Tools: 4785 4786iASL: Implemented Min/Max/Len/Gran validation for address resource 4787descriptors. This change implements validation for the address fields 4788that 4789are common to all address-type resource descriptors. These checks are 4790implemented: Checks for valid Min/Max, length within the Min/Max window, 4791valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 4792per 4793table 6-40 in the ACPI 4.0a specification. Also split the large 4794aslrestype1.c 4795and aslrestype2.c files into five new files. ACPICA BZ 840. 4796 4797iASL: Added support for the _Wxx predefined names. This support was 4798missing 4799and these names were not recognized by the compiler as valid predefined 4800names. ACPICA BZ 851. 4801 4802iASL: Added an error for all predefined names that are defined to return 4803no 4804value and thus must be implemented as Control Methods. These include all 4805of 4806the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 4807names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 4808 4809iASL: Implemented the -ts option to emit hex AML data in ASL format, as 4810an 4811ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 4812be 4813dynamically loaded via the Load() operator. Also cleaned up output for 4814the 4815- 4816ta and -tc options. ACPICA BZ 853. 4817 4818Tests: Added a new file with examples of extended iASL error checking. 4819Demonstrates the advanced error checking ability of the iASL compiler. 4820Available at tests/misc/badcode.asl. 4821 4822---------------------------------------- 482331 March 2010. Summary of changes for version 20100331: 4824 48251) ACPI CA Core Subsystem: 4826 4827Completed a major update for the GPE support in order to improve support 4828for 4829shared GPEs and to simplify both host OS and ACPICA code. Added a 4830reference 4831count mechanism to support shared GPEs that require multiple device 4832drivers. 4833Several external interfaces have changed. One external interface has been 4834removed. One new external interface was added. Most of the GPE external 4835interfaces now use the GPE spinlock instead of the events mutex (and the 4836Flags parameter for many GPE interfaces has been removed.) See the 4837updated 4838ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 4839Rafael 4840Wysocki. ACPICA BZ 831. 4841 4842Changed: 4843 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 4844Removed: 4845 AcpiSetGpeType 4846New: 4847 AcpiSetGpe 4848 4849Implemented write support for DataTable operation regions. These regions 4850are 4851defined via the DataTableRegion() operator. Previously, only read support 4852was 4853implemented. The ACPI specification allows DataTableRegions to be 4854read/write, 4855however. 4856 4857Implemented a new subsystem option to force a copy of the DSDT to local 4858memory. Optionally copy the entire DSDT to local memory (instead of 4859simply 4860mapping it.) There are some (albeit very rare) BIOSs that corrupt or 4861replace 4862the original DSDT, creating the need for this option. Default is FALSE, 4863do 4864not copy the DSDT. 4865 4866Implemented detection of a corrupted or replaced DSDT. This change adds 4867support to detect a DSDT that has been corrupted and/or replaced from 4868outside 4869the OS (by firmware). This is typically catastrophic for the system, but 4870has 4871been seen on some machines. Once this problem has been detected, the DSDT 4872copy option can be enabled via system configuration. Lin Ming, Bob Moore. 4873 4874Fixed two problems with AcpiReallocateRootTable during the root table 4875copy. 4876When copying the root table to the new allocation, the length used was 4877incorrect. The new size was used instead of the current table size, 4878meaning 4879too much data was copied. Also, the count of available slots for ACPI 4880tables 4881was not set correctly. Alexey Starikovskiy, Bob Moore. 4882 4883Example Code and Data Size: These are the sizes for the OS-independent 4884acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4885debug version of the code includes the debug output trace mechanism and 4886has a 4887much larger code and data size. 4888 4889 Previous Release: 4890 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4891 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4892 Current Release: 4893 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 4894 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 4895 48962) iASL Compiler/Disassembler and Tools: 4897 4898iASL: Implement limited typechecking for values returned from predefined 4899control methods. The type of any returned static (unnamed) object is now 4900validated. For example, Return(1). ACPICA BZ 786. 4901 4902iASL: Fixed a predefined name object verification regression. Fixes a 4903problem 4904introduced in version 20100304. An error is incorrectly generated if a 4905predefined name is declared as a static named object with a value defined 4906using the keywords "Zero", "One", or "Ones". Lin Ming. 4907 4908iASL: Added Windows 7 support for the -g option (get local ACPI tables) 4909by 4910reducing the requested registry access rights. ACPICA BZ 842. 4911 4912Disassembler: fixed a possible fault when generating External() 4913statements. 4914Introduced in commit ae7d6fd: Properly handle externals with parent- 4915prefix 4916(carat). Fixes a string length allocation calculation. Lin Ming. 4917 4918---------------------------------------- 491904 March 2010. Summary of changes for version 20100304: 4920 49211) ACPI CA Core Subsystem: 4922 4923Fixed a possible problem with the AML Mutex handling function 4924AcpiExReleaseMutex where the function could fault under the very rare 4925condition when the interpreter has blocked, the interpreter lock is 4926released, 4927the interpreter is then reentered via the same thread, and attempts to 4928acquire an AML mutex that was previously acquired. FreeBSD report 140979. 4929Lin 4930Ming. 4931 4932Implemented additional configuration support for the AML "Debug Object". 4933Output from the debug object can now be enabled via a global variable, 4934AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 4935debugging. 4936This debug output is now available in the release version of ACPICA 4937instead 4938of just the debug version. Also, the entire debug output module can now 4939be 4940configured out of the ACPICA build if desired. One new file added, 4941executer/exdebug.c. Lin Ming, Bob Moore. 4942 4943Added header support for the ACPI MCHI table (Management Controller Host 4944Interface Table). This table was added in ACPI 4.0, but the defining 4945document 4946has only recently become available. 4947 4948Standardized output of integer values for ACPICA warnings/errors. Always 4949use 49500x prefix for hex output, always use %u for unsigned integer decimal 4951output. 4952Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 4953400 4954invocations.) These invocations were converted from the original 4955ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 4956 4957Example Code and Data Size: These are the sizes for the OS-independent 4958acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4959debug version of the code includes the debug output trace mechanism and 4960has a 4961much larger code and data size. 4962 4963 Previous Release: 4964 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 4965 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 4966 Current Release: 4967 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4968 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4969 49702) iASL Compiler/Disassembler and Tools: 4971 4972iASL: Implemented typechecking support for static (non-control method) 4973predefined named objects that are declared with the Name() operator. For 4974example, the type of this object is now validated to be of type Integer: 4975Name(_BBN, 1). This change migrates the compiler to using the core 4976predefined 4977name table instead of maintaining a local version. Added a new file, 4978aslpredef.c. ACPICA BZ 832. 4979 4980Disassembler: Added support for the ACPI 4.0 MCHI table. 4981 4982---------------------------------------- 498321 January 2010. Summary of changes for version 20100121: 4984 49851) ACPI CA Core Subsystem: 4986 4987Added the 2010 copyright to all module headers and signons. This affects 4988virtually every file in the ACPICA core subsystem, the iASL compiler, the 4989tools/utilities, and the test suites. 4990 4991Implemented a change to the AcpiGetDevices interface to eliminate 4992unnecessary 4993invocations of the _STA method. In the case where a specific _HID is 4994requested, do not run _STA until a _HID match is found. This eliminates 4995potentially dozens of _STA calls during a search for a particular 4996device/HID, 4997which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 4998 4999Implemented an additional repair for predefined method return values. 5000Attempt 5001to repair unexpected NULL elements within returned Package objects. 5002Create 5003an 5004Integer of value zero, a NULL String, or a zero-length Buffer as 5005appropriate. 5006ACPICA BZ 818. Lin Ming, Bob Moore. 5007 5008Removed the obsolete ACPI_INTEGER data type. This type was introduced as 5009the 5010code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 5011(with 501264-bit AML integers). It is now obsolete and this change removes it from 5013the 5014ACPICA code base, replaced by UINT64. The original typedef has been 5015retained 5016for now for compatibility with existing device driver code. ACPICA BZ 5017824. 5018 5019Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 5020in 5021the parse tree object. 5022 5023Added additional warning options for the gcc-4 generation. Updated the 5024source 5025accordingly. This includes some code restructuring to eliminate 5026unreachable 5027code, elimination of some gotos, elimination of unused return values, 5028some 5029additional casting, and removal of redundant declarations. 5030 5031Example Code and Data Size: These are the sizes for the OS-independent 5032acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5033debug version of the code includes the debug output trace mechanism and 5034has a 5035much larger code and data size. 5036 5037 Previous Release: 5038 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5039 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5040 Current Release: 5041 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 5042 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 5043 50442) iASL Compiler/Disassembler and Tools: 5045 5046No functional changes for this release. 5047 5048---------------------------------------- 504914 December 2009. Summary of changes for version 20091214: 5050 50511) ACPI CA Core Subsystem: 5052 5053Enhanced automatic data type conversions for predefined name repairs. 5054This 5055change expands the automatic repairs/conversions for predefined name 5056return 5057values to make Integers, Strings, and Buffers fully interchangeable. 5058Also, 5059a 5060Buffer can be converted to a Package of Integers if necessary. The 5061nsrepair.c 5062module was completely restructured. Lin Ming, Bob Moore. 5063 5064Implemented automatic removal of null package elements during predefined 5065name 5066repairs. This change will automatically remove embedded and trailing NULL 5067package elements from returned package objects that are defined to 5068contain 5069a 5070variable number of sub-packages. The driver is then presented with a 5071package 5072with no null elements to deal with. ACPICA BZ 819. 5073 5074Implemented a repair for the predefined _FDE and _GTM names. The expected 5075return value for both names is a Buffer of 5 DWORDs. This repair fixes 5076two 5077possible problems (both seen in the field), where a package of integers 5078is 5079returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 5080Kim. 5081 5082Implemented additional module-level code support. This change will 5083properly 5084execute module-level code that is not at the root of the namespace (under 5085a 5086Device object, etc.). Now executes the code within the current scope 5087instead 5088of the root. ACPICA BZ 762. Lin Ming. 5089 5090Fixed possible mutex acquisition errors when running _REG methods. Fixes 5091a 5092problem where mutex errors can occur when running a _REG method that is 5093in 5094the same scope as a method-defined operation region or an operation 5095region 5096under a module-level IF block. This type of code is rare, so the problem 5097has 5098not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 5099 5100Fixed a possible memory leak during module-level code execution. An 5101object 5102could be leaked for each block of executed module-level code if the 5103interpreter slack mode is enabled This change deletes any implicitly 5104returned 5105object from the module-level code block. Lin Ming. 5106 5107Removed messages for successful predefined repair(s). The repair 5108mechanism 5109was considered too wordy. Now, messages are only unconditionally emitted 5110if 5111the return object cannot be repaired. Existing messages for successful 5112repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 5113827. 5114 5115Example Code and Data Size: These are the sizes for the OS-independent 5116acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5117debug version of the code includes the debug output trace mechanism and 5118has a 5119much larger code and data size. 5120 5121 Previous Release: 5122 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 5123 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 5124 Current Release: 5125 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5126 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5127 51282) iASL Compiler/Disassembler and Tools: 5129 5130iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 5131files 5132were no longer automatically removed at the termination of the compile. 5133 5134acpiexec: Implemented the -f option to specify default region fill value. 5135This option specifies the value used to initialize buffers that simulate 5136operation regions. Default value is zero. Useful for debugging problems 5137that 5138depend on a specific initial value for a region or field. 5139 5140---------------------------------------- 514112 November 2009. Summary of changes for version 20091112: 5142 51431) ACPI CA Core Subsystem: 5144 5145Implemented a post-order callback to AcpiWalkNamespace. The existing 5146interface only has a pre-order callback. This change adds an additional 5147parameter for a post-order callback which will be more useful for bus 5148scans. 5149ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 5150 5151Modified the behavior of the operation region memory mapping cache for 5152SystemMemory. Ensure that the memory mappings created for operation 5153regions 5154do not cross 4K page boundaries. Crossing a page boundary while mapping 5155regions can cause kernel warnings on some hosts if the pages have 5156different 5157attributes. Such regions are probably BIOS bugs, and this is the 5158workaround. 5159Linux BZ 14445. Lin Ming. 5160 5161Implemented an automatic repair for predefined methods that must return 5162sorted lists. This change will repair (by sorting) packages returned by 5163_ALR, 5164_PSS, and _TSS. Drivers can now assume that the packages are correctly 5165sorted 5166and do not contain NULL package elements. Adds one new file, 5167namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 5168 5169Fixed a possible fault during predefined name validation if a return 5170Package 5171object contains NULL elements. Also adds a warning if a NULL element is 5172followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 5173may 5174include repair or removal of all such NULL elements where possible. 5175 5176Implemented additional module-level executable AML code support. This 5177change 5178will execute module-level code that is not at the root of the namespace 5179(under a Device object, etc.) at table load time. Module-level executable 5180AML 5181code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 5182 5183Implemented a new internal function to create Integer objects. This 5184function 5185simplifies miscellaneous object creation code. ACPICA BZ 823. 5186 5187Reduced the severity of predefined repair messages, Warning to Info. 5188Since 5189the object was successfully repaired, a warning is too severe. Reduced to 5190an 5191info message for now. These messages may eventually be changed to debug- 5192only. 5193ACPICA BZ 812. 5194 5195Example Code and Data Size: These are the sizes for the OS-independent 5196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5197debug version of the code includes the debug output trace mechanism and 5198has a 5199much larger code and data size. 5200 5201 Previous Release: 5202 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 5203 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 5204 Current Release: 5205 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 5206 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 5207 52082) iASL Compiler/Disassembler and Tools: 5209 5210iASL: Implemented Switch() with While(1) so that Break works correctly. 5211This 5212change correctly implements the Switch operator with a surrounding 5213While(1) 5214so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 5215 5216iASL: Added a message if a package initializer list is shorter than 5217package 5218length. Adds a new remark for a Package() declaration if an initializer 5219list 5220exists, but is shorter than the declared length of the package. Although 5221technically legal, this is probably a coding error and it is seen in the 5222field. ACPICA BZ 815. Lin Ming, Bob Moore. 5223 5224iASL: Fixed a problem where the compiler could fault after the maximum 5225number 5226of errors was reached (200). 5227 5228acpixtract: Fixed a possible warning for pointer cast if the compiler 5229warning 5230level set very high. 5231 5232---------------------------------------- 523313 October 2009. Summary of changes for version 20091013: 5234 52351) ACPI CA Core Subsystem: 5236 5237Fixed a problem where an Operation Region _REG method could be executed 5238more 5239than once. If a custom address space handler is installed by the host 5240before 5241the "initialize operation regions" phase of the ACPICA initialization, 5242any 5243_REG methods for that address space could be executed twice. This change 5244fixes the problem. ACPICA BZ 427. Lin Ming. 5245 5246Fixed a possible memory leak for the Scope() ASL operator. When the exact 5247invocation of "Scope(\)" is executed (change scope to root), one internal 5248operand object was leaked. Lin Ming. 5249 5250Implemented a run-time repair for the _MAT predefined method. If the _MAT 5251return value is defined as a Field object in the AML, and the field 5252size is less than or equal to the default width of an integer (32 or 525364),_MAT 5254can incorrectly return an Integer instead of a Buffer. ACPICA now 5255automatically repairs this problem. ACPICA BZ 810. 5256 5257Implemented a run-time repair for the _BIF and _BIX predefined methods. 5258The 5259"OEM Information" field is often incorrectly returned as an Integer with 5260value zero if the field is not supported by the platform. This is due to 5261an 5262ambiguity in the ACPI specification. The field should always be a string. 5263ACPICA now automatically repairs this problem by returning a NULL string 5264within the returned Package. ACPICA BZ 807. 5265 5266Example Code and Data Size: These are the sizes for the OS-independent 5267acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5268debug version of the code includes the debug output trace mechanism and 5269has a 5270much larger code and data size. 5271 5272 Previous Release: 5273 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5274 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5275 Current Release: 5276 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 5277 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 5278 52792) iASL Compiler/Disassembler and Tools: 5280 5281Disassembler: Fixed a problem where references to external symbols that 5282contained one or more parent-prefixes (carats) were not handled 5283correctly, 5284possibly causing a fault. ACPICA BZ 806. Lin Ming. 5285 5286Disassembler: Restructured the code so that all functions that handle 5287external symbols are in a single module. One new file is added, 5288common/dmextern.c. 5289 5290AML Debugger: Added a max count argument for the Batch command (which 5291executes multiple predefined methods within the namespace.) 5292 5293iASL: Updated the compiler documentation (User Reference.) Available at 5294http://www.acpica.org/documentation/. ACPICA BZ 750. 5295 5296AcpiXtract: Updated for Lint and other formatting changes. Close all open 5297files. 5298 5299---------------------------------------- 530003 September 2009. Summary of changes for version 20090903: 5301 53021) ACPI CA Core Subsystem: 5303 5304For Windows Vista compatibility, added the automatic execution of an _INI 5305method located at the namespace root (\_INI). This method is executed at 5306table load time. This support is in addition to the automatic execution 5307of 5308\_SB._INI. Lin Ming. 5309 5310Fixed a possible memory leak in the interpreter for AML package objects 5311if 5312the package initializer list is longer than the defined size of the 5313package. 5314This apparently can only happen if the BIOS changes the package size on 5315the 5316fly (seen in a _PSS object), as ASL compilers do not allow this. The 5317interpreter will truncate the package to the defined size (and issue an 5318error 5319message), but previously could leave the extra objects undeleted if they 5320were 5321pre-created during the argument processing (such is the case if the 5322package 5323consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 5324 5325Fixed a problem seen when a Buffer or String is stored to itself via ASL. 5326This has been reported in the field. Previously, ACPICA would zero out 5327the 5328buffer/string. Now, the operation is treated as a noop. Provides Windows 5329compatibility. ACPICA BZ 803. Lin Ming. 5330 5331Removed an extraneous error message for ASL constructs of the form 5332Store(LocalX,LocalX) when LocalX is uninitialized. These curious 5333statements 5334are seen in many BIOSs and are once again treated as NOOPs and no error 5335is 5336emitted when they are encountered. ACPICA BZ 785. 5337 5338Fixed an extraneous warning message if a _DSM reserved method returns a 5339Package object. _DSM can return any type of object, so validation on the 5340return type cannot be performed. ACPICA BZ 802. 5341 5342Example Code and Data Size: These are the sizes for the OS-independent 5343acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5344debug version of the code includes the debug output trace mechanism and 5345has a 5346much larger code and data size. 5347 5348 Previous Release: 5349 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5350 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5351 Current Release: 5352 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5353 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5354 53552) iASL Compiler/Disassembler and Tools: 5356 5357iASL: Fixed a problem with the use of the Alias operator and Resource 5358Templates. The correct alias is now constructed and no error is emitted. 5359ACPICA BZ 738. 5360 5361iASL: Implemented the -I option to specify additional search directories 5362for 5363include files. Allows multiple additional search paths for include files. 5364Directories are searched in the order specified on the command line 5365(after 5366the local directory is searched.) ACPICA BZ 800. 5367 5368iASL: Fixed a problem where the full pathname for include files was not 5369emitted for warnings/errors. This caused the IDE support to not work 5370properly. ACPICA BZ 765. 5371 5372iASL: Implemented the -@ option to specify a Windows-style response file 5373containing additional command line options. ACPICA BZ 801. 5374 5375AcpiExec: Added support to load multiple AML files simultaneously (such 5376as 5377a 5378DSDT and multiple SSDTs). Also added support for wildcards within the AML 5379pathname. These features allow all machine tables to be easily loaded and 5380debugged together. ACPICA BZ 804. 5381 5382Disassembler: Added missing support for disassembly of HEST table Error 5383Bank 5384subtables. 5385 5386---------------------------------------- 538730 July 2009. Summary of changes for version 20090730: 5388 5389The ACPI 4.0 implementation for ACPICA is complete with this release. 5390 53911) ACPI CA Core Subsystem: 5392 5393ACPI 4.0: Added header file support for all new and changed ACPI tables. 5394Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 5395new 5396for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 5397BERT, 5398EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 5399There 5400have been some ACPI 4.0 changes to other existing tables. Split the large 5401actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 5402 5403ACPI 4.0: Implemented predefined name validation for all new names. There 5404are 540531 new names in ACPI 4.0. The predefined validation module was split into 5406two 5407files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 5408 5409Implemented support for so-called "module-level executable code". This is 5410executable AML code that exists outside of any control method and is 5411intended 5412to be executed at table load time. Although illegal since ACPI 2.0, this 5413type 5414of code still exists and is apparently still being created. Blocks of 5415this 5416code are now detected and executed as intended. Currently, the code 5417blocks 5418must exist under either an If, Else, or While construct; these are the 5419typical cases seen in the field. ACPICA BZ 762. Lin Ming. 5420 5421Implemented an automatic dynamic repair for predefined names that return 5422nested Package objects. This applies to predefined names that are defined 5423to 5424return a variable-length Package of sub-packages. If the number of sub- 5425packages is one, BIOS code is occasionally seen that creates a simple 5426single 5427package with no sub-packages. This code attempts to fix the problem by 5428wrapping a new package object around the existing package. These methods 5429can 5430be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 5431BZ 5432790. 5433 5434Fixed a regression introduced in 20090625 for the AcpiGetDevices 5435interface. 5436The _HID/_CID matching was broken and no longer matched IDs correctly. 5437ACPICA 5438BZ 793. 5439 5440Fixed a problem with AcpiReset where the reset would silently fail if the 5441register was one of the protected I/O ports. AcpiReset now bypasses the 5442port 5443validation mechanism. This may eventually be driven into the 5444AcpiRead/Write 5445interfaces. 5446 5447Fixed a regression related to the recent update of the AcpiRead/Write 5448interfaces. A sleep/suspend could fail if the optional PM2 Control 5449register 5450does not exist during an attempt to write the Bus Master Arbitration bit. 5451(However, some hosts already delete the code that writes this bit, and 5452the 5453code may in fact be obsolete at this date.) ACPICA BZ 799. 5454 5455Fixed a problem where AcpiTerminate could fault if inadvertently called 5456twice 5457in succession. ACPICA BZ 795. 5458 5459Example Code and Data Size: These are the sizes for the OS-independent 5460acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5461debug version of the code includes the debug output trace mechanism and 5462has a 5463much larger code and data size. 5464 5465 Previous Release: 5466 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 5467 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 5468 Current Release: 5469 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5470 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5471 54722) iASL Compiler/Disassembler and Tools: 5473 5474ACPI 4.0: Implemented disassembler support for all new ACPI tables and 5475changes to existing tables. ACPICA BZ 775. 5476 5477---------------------------------------- 547825 June 2009. Summary of changes for version 20090625: 5479 5480The ACPI 4.0 Specification was released on June 16 and is available at 5481www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 5482continue for the next few releases. 5483 54841) ACPI CA Core Subsystem: 5485 5486ACPI 4.0: Implemented interpreter support for the IPMI operation region 5487address space. Includes support for bi-directional data buffers and an 5488IPMI 5489address space handler (to be installed by an IPMI device driver.) ACPICA 5490BZ 5491773. Lin Ming. 5492 5493ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 5494Includes 5495support in both the header files and the disassembler. 5496 5497Completed a major update for the AcpiGetObjectInfo external interface. 5498Changes include: 5499 - Support for variable, unlimited length HID, UID, and CID strings. 5500 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 5501etc.) 5502 - Call the _SxW power methods on behalf of a device object. 5503 - Determine if a device is a PCI root bridge. 5504 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 5505These changes will require an update to all callers of this interface. 5506See 5507the updated ACPICA Programmer Reference for details. One new source file 5508has 5509been added - utilities/utids.c. ACPICA BZ 368, 780. 5510 5511Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 5512transfers. The Value parameter has been extended from 32 bits to 64 bits 5513in 5514order to support new ACPI 4.0 tables. These changes will require an 5515update 5516to 5517all callers of these interfaces. See the ACPICA Programmer Reference for 5518details. ACPICA BZ 768. 5519 5520Fixed several problems with AcpiAttachData. The handler was not invoked 5521when 5522the host node was deleted. The data sub-object was not automatically 5523deleted 5524when the host node was deleted. The interface to the handler had an 5525unused 5526parameter, this was removed. ACPICA BZ 778. 5527 5528Enhanced the function that dumps ACPI table headers. All non-printable 5529characters in the string fields are now replaced with '?' (Signature, 5530OemId, 5531OemTableId, and CompilerId.) ACPI tables with non-printable characters in 5532these fields are occasionally seen in the field. ACPICA BZ 788. 5533 5534Fixed a problem with predefined method repair code where the code that 5535attempts to repair/convert an object of incorrect type is only executed 5536on 5537the first time the predefined method is called. The mechanism that 5538disables 5539warnings on subsequent calls was interfering with the repair mechanism. 5540ACPICA BZ 781. 5541 5542Fixed a possible memory leak in the predefined validation/repair code 5543when 5544a 5545buffer is automatically converted to an expected string object. 5546 5547Removed obsolete 16-bit files from the distribution and from the current 5548git 5549tree head. ACPICA BZ 776. 5550 5551Example Code and Data Size: These are the sizes for the OS-independent 5552acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5553debug version of the code includes the debug output trace mechanism and 5554has a 5555much larger code and data size. 5556 5557 Previous Release: 5558 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 5559 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 5560 Current Release: 5561 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 5562 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 5563 55642) iASL Compiler/Disassembler and Tools: 5565 5566ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 5567operation region keyword. ACPICA BZ 771, 772. Lin Ming. 5568 5569ACPI 4.0: iASL - implemented compile-time validation support for all new 5570predefined names and control methods (31 total). ACPICA BZ 769. 5571 5572---------------------------------------- 557321 May 2009. Summary of changes for version 20090521: 5574 55751) ACPI CA Core Subsystem: 5576 5577Disabled the preservation of the SCI enable bit in the PM1 control 5578register. 5579The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 5580to 5581be 5582a "preserved" bit - "OSPM always preserves this bit position", section 55834.7.3.2.1. However, some machines fail if this bit is in fact preserved 5584because the bit needs to be explicitly set by the OS as a workaround. No 5585machines fail if the bit is not preserved. Therefore, ACPICA no longer 5586attempts to preserve this bit. 5587 5588Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 5589incorrectly formed _PRT package could cause a fault. Added validation to 5590ensure that each package element is actually a sub-package. 5591 5592Implemented a new interface to install or override a single control 5593method, 5594AcpiInstallMethod. This interface is useful when debugging in order to 5595repair 5596an existing method or to install a missing method without having to 5597override 5598the entire ACPI table. See the ACPICA Programmer Reference for use and 5599examples. Lin Ming, Bob Moore. 5600 5601Fixed several reference count issues with the DdbHandle object that is 5602created from a Load or LoadTable operator. Prevent premature deletion of 5603the 5604object. Also, mark the object as invalid once the table has been 5605unloaded. 5606This is needed because the handle itself may not be deleted after the 5607table 5608unload, depending on whether it has been stored in a named object by the 5609caller. Lin Ming. 5610 5611Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 5612mutexes of the same sync level are acquired but then not released in 5613strict 5614opposite order, the internally maintained Current Sync Level becomes 5615confused 5616and can cause subsequent execution errors. ACPICA BZ 471. 5617 5618Changed the allowable release order for ASL mutex objects. The ACPI 4.0 5619specification has been changed to make the SyncLevel for mutex objects 5620more 5621useful. When releasing a mutex, the SyncLevel of the mutex must now be 5622the 5623same as the current sync level. This makes more sense than the previous 5624rule 5625(SyncLevel less than or equal). This change updates the code to match the 5626specification. 5627 5628Fixed a problem with the local version of the AcpiOsPurgeCache function. 5629The 5630(local) cache must be locked during all cache object deletions. Andrew 5631Baumann. 5632 5633Updated the Load operator to use operation region interfaces. This 5634replaces 5635direct memory mapping with region access calls. Now, all region accesses 5636go 5637through the installed region handler as they should. 5638 5639Simplified and optimized the NsGetNextNode function. Reduced parameter 5640count 5641and reduced code for this frequently used function. 5642 5643Example Code and Data Size: These are the sizes for the OS-independent 5644acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5645debug version of the code includes the debug output trace mechanism and 5646has a 5647much larger code and data size. 5648 5649 Previous Release: 5650 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 5651 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 5652 Current Release: 5653 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 5654 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 5655 56562) iASL Compiler/Disassembler and Tools: 5657 5658Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 5659problems 5660with sub-table disassembly and handling invalid sub-tables. Attempt 5661recovery 5662after an invalid sub-table ID. 5663 5664---------------------------------------- 566522 April 2009. Summary of changes for version 20090422: 5666 56671) ACPI CA Core Subsystem: 5668 5669Fixed a compatibility issue with the recently released I/O port 5670protection 5671mechanism. For windows compatibility, 1) On a port protection violation, 5672simply ignore the request and do not return an exception (allow the 5673control 5674method to continue execution.) 2) If only part of the request overlaps a 5675protected port, read/write the individual ports that are not protected. 5676Linux 5677BZ 13036. Lin Ming 5678 5679Enhanced the execution of the ASL/AML BreakPoint operator so that it 5680actually 5681breaks into the AML debugger if the debugger is present. This matches the 5682ACPI-defined behavior. 5683 5684Fixed several possible warnings related to the use of the configurable 5685ACPI_THREAD_ID. This type can now be configured as either an integer or a 5686pointer with no warnings. Also fixes several warnings in printf-like 5687statements for the 64-bit build when the type is configured as a pointer. 5688ACPICA BZ 766, 767. 5689 5690Fixed a number of possible warnings when compiling with gcc 4+ (depending 5691on 5692warning options.) Examples include printf formats, aliasing, unused 5693globals, 5694missing prototypes, missing switch default statements, use of non-ANSI 5695library functions, use of non-ANSI constructs. See generate/unix/Makefile 5696for 5697a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 5698 5699Example Code and Data Size: These are the sizes for the OS-independent 5700acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5701debug version of the code includes the debug output trace mechanism and 5702has a 5703much larger code and data size. 5704 5705 Previous Release: 5706 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 5707 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 5708 Current Release: 5709 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 5710 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 5711 57122) iASL Compiler/Disassembler and Tools: 5713 5714iASL: Fixed a generation warning from Bison 2.3 and fixed several 5715warnings 5716on 5717the 64-bit build. 5718 5719iASL: Fixed a problem where the Unix/Linux versions of the compiler could 5720not 5721correctly digest Windows/DOS formatted files (with CR/LF). 5722 5723iASL: Added a new option for "quiet mode" (-va) that produces only the 5724compilation summary, not individual errors and warnings. Useful for large 5725batch compilations. 5726 5727AcpiExec: Implemented a new option (-z) to enable a forced 5728semaphore/mutex 5729timeout that can be used to detect hang conditions during execution of 5730AML 5731code (includes both internal semaphores and AML-defined mutexes and 5732events.) 5733 5734Added new makefiles for the generation of acpica in a generic unix-like 5735environment. These makefiles are intended to generate the acpica tools 5736and 5737utilities from the original acpica git source tree structure. 5738 5739Test Suites: Updated and cleaned up the documentation files. Updated the 5740copyrights to 2009, affecting all source files. Use the new version of 5741iASL 5742with quiet mode. Increased the number of available semaphores in the 5743Windows 5744OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 5745added 5746an alternate implementation of the semaphore timeout to allow aslts to 5747execute fully on Cygwin. 5748 5749---------------------------------------- 575020 March 2009. Summary of changes for version 20090320: 5751 57521) ACPI CA Core Subsystem: 5753 5754Fixed a possible race condition between AcpiWalkNamespace and dynamic 5755table 5756unloads. Added a reader/writer locking mechanism to allow multiple 5757concurrent 5758namespace walks (readers), but block a dynamic table unload until it can 5759gain 5760exclusive write access to the namespace. This fixes a problem where a 5761table 5762unload could (possibly catastrophically) delete the portion of the 5763namespace 5764that is currently being examined by a walk. Adds a new file, utlock.c, 5765that 5766implements the reader/writer lock mechanism. ACPICA BZ 749. 5767 5768Fixed a regression introduced in version 20090220 where a change to the 5769FADT 5770handling could cause the ACPICA subsystem to access non-existent I/O 5771ports. 5772 5773Modified the handling of FADT register and table (FACS/DSDT) addresses. 5774The 5775FADT can contain both 32-bit and 64-bit versions of these addresses. 5776Previously, the 64-bit versions were favored, meaning that if both 32 and 577764 5778versions were valid, but not equal, the 64-bit version was used. This was 5779found to cause some machines to fail. Now, in this case, the 32-bit 5780version 5781is used instead. This now matches the Windows behavior. 5782 5783Implemented a new mechanism to protect certain I/O ports. Provides 5784Microsoft 5785compatibility and protects the standard PC I/O ports from access via AML 5786code. Adds a new file, hwvalid.c 5787 5788Fixed a possible extraneous warning message from the FADT support. The 5789message warns of a 32/64 length mismatch between the legacy and GAS 5790definitions for a register. 5791 5792Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 5793is 5794made obsolete by the port protection mechanism above. It was previously 5795used 5796to validate the entire address range of an operation region, which could 5797be 5798incorrect if the range included illegal ports, but fields within the 5799operation region did not actually access those ports. Validation is now 5800performed on a per-field basis instead of the entire region. 5801 5802Modified the handling of the PM1 Status Register ignored bit (bit 11.) 5803Ignored bits must be "preserved" according to the ACPI spec. Usually, 5804this 5805means a read/modify/write when writing to the register. However, for 5806status 5807registers, writing a one means clear the event. Writing a zero means 5808preserve 5809the event (do not clear.) This behavior is clarified in the ACPI 4.0 5810spec, 5811and the ACPICA code now simply always writes a zero to the ignored bit. 5812 5813Modified the handling of ignored bits for the PM1 A/B Control Registers. 5814As 5815per the ACPI specification, for the control registers, preserve 5816(read/modify/write) all bits that are defined as either reserved or 5817ignored. 5818 5819Updated the handling of write-only bits in the PM1 A/B Control Registers. 5820When reading the register, zero the write-only bits as per the ACPI spec. 5821ACPICA BZ 443. Lin Ming. 5822 5823Removed "Linux" from the list of supported _OSI strings. Linux no longer 5824wants to reply true to this request. The Windows strings are the only 5825paths 5826through the AML that are tested and known to work properly. 5827 5828 Previous Release: 5829 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 5830 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 5831 Current Release: 5832 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 5833 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 5834 58352) iASL Compiler/Disassembler and Tools: 5836 5837Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 5838and 5839aetables.c 5840 5841---------------------------------------- 584220 February 2009. Summary of changes for version 20090220: 5843 58441) ACPI CA Core Subsystem: 5845 5846Optimized the ACPI register locking. Removed locking for reads from the 5847ACPI 5848bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 5849is 5850not required when reading the single-bit registers. The 5851AcpiGetRegisterUnlocked function is no longer needed and has been 5852removed. 5853This will improve performance for reads on these registers. ACPICA BZ 5854760. 5855 5856Fixed the parameter validation for AcpiRead/Write. Now return 5857AE_BAD_PARAMETER if the input register pointer is null, and 5858AE_BAD_ADDRESS 5859if 5860the register has an address of zero. Previously, these cases simply 5861returned 5862AE_OK. For optional registers such as PM1B status/enable/control, the 5863caller 5864should check for a valid register address before calling. ACPICA BZ 748. 5865 5866Renamed the external ACPI bit register access functions. Renamed 5867AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 5868functions. The new names are AcpiReadBitRegister and 5869AcpiWriteBitRegister. 5870Also, restructured the code for these functions by simplifying the code 5871path 5872and condensing duplicate code to reduce code size. 5873 5874Added new functions to transparently handle the possibly split PM1 A/B 5875registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 5876functions 5877now handle the split registers for PM1 Status, Enable, and Control. 5878ACPICA 5879BZ 5880746. 5881 5882Added a function to handle the PM1 control registers, 5883AcpiHwWritePm1Control. 5884This function writes both of the PM1 control registers (A/B). These 5885registers 5886are different than the PM1 A/B status and enable registers in that 5887different 5888values can be written to the A/B registers. Most notably, the SLP_TYP 5889bits 5890can be different, as per the values returned from the _Sx predefined 5891methods. 5892 5893Removed an extra register write within AcpiHwClearAcpiStatus. This 5894function 5895was writing an optional PM1B status register twice. The existing call to 5896the 5897low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 5898A/B 5899register. ACPICA BZ 751. 5900 5901Split out the PM1 Status registers from the FADT. Added new globals for 5902these 5903registers (A/B), similar to the way the PM1 Enable registers are handled. 5904Instead of overloading the FADT Event Register blocks. This makes the 5905code 5906clearer and less prone to error. 5907 5908Fixed the warning message for when the platform contains too many ACPI 5909tables 5910for the default size of the global root table data structure. The 5911calculation 5912for the truncation value was incorrect. 5913 5914Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 5915obsolete macro, since it is now a simple reference to ->common.type. 5916There 5917were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 5918 5919Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 5920TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 5921simply SLEEP_TYPE. ACPICA BZ 754. 5922 5923Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 5924function is only needed on 64-bit host operating systems and is thus not 5925included for 32-bit hosts. 5926 5927Debug output: print the input and result for invocations of the _OSI 5928reserved 5929control method via the ACPI_LV_INFO debug level. Also, reduced some of 5930the 5931verbosity of this debug level. Len Brown. 5932 5933Example Code and Data Size: These are the sizes for the OS-independent 5934acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5935debug version of the code includes the debug output trace mechanism and 5936has a 5937much larger code and data size. 5938 5939 Previous Release: 5940 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5941 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5942 Current Release: 5943 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 5944 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 5945 59462) iASL Compiler/Disassembler and Tools: 5947 5948Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 5949various legal performance profiles. 5950 5951---------------------------------------- 595223 January 2009. Summary of changes for version 20090123: 5953 59541) ACPI CA Core Subsystem: 5955 5956Added the 2009 copyright to all module headers and signons. This affects 5957virtually every file in the ACPICA core subsystem, the iASL compiler, and 5958the tools/utilities. 5959 5960Implemented a change to allow the host to override any ACPI table, 5961including 5962dynamically loaded tables. Previously, only the DSDT could be replaced by 5963the 5964host. With this change, the AcpiOsTableOverride interface is called for 5965each 5966table found in the RSDT/XSDT during ACPICA initialization, and also 5967whenever 5968a table is dynamically loaded via the AML Load operator. 5969 5970Updated FADT flag definitions, especially the Boot Architecture flags. 5971 5972Debugger: For the Find command, automatically pad the input ACPI name 5973with 5974underscores if the name is shorter than 4 characters. This enables a 5975match 5976with the actual namespace entry which is itself padded with underscores. 5977 5978Example Code and Data Size: These are the sizes for the OS-independent 5979acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5980debug version of the code includes the debug output trace mechanism and 5981has a 5982much larger code and data size. 5983 5984 Previous Release: 5985 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 5986 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 5987 Current Release: 5988 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5989 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5990 59912) iASL Compiler/Disassembler and Tools: 5992 5993Fix build error under Bison-2.4. 5994 5995Dissasembler: Enhanced FADT support. Added decoding of the Boot 5996Architecture 5997flags. Now decode all flags, regardless of the FADT version. Flag output 5998includes the FADT version which first defined each flag. 5999 6000The iASL -g option now dumps the RSDT to a file (in addition to the FADT 6001and 6002DSDT). Windows only. 6003 6004---------------------------------------- 600504 December 2008. Summary of changes for version 20081204: 6006 60071) ACPI CA Core Subsystem: 6008 6009The ACPICA Programmer Reference has been completely updated and revamped 6010for 6011this release. This includes updates to the external interfaces, OSL 6012interfaces, the overview sections, and the debugger reference. 6013 6014Several new ACPICA interfaces have been implemented and documented in the 6015programmer reference: 6016AcpiReset - Writes the reset value to the FADT-defined reset register. 6017AcpiDisableAllGpes - Disable all available GPEs. 6018AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 6019AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 6020AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 6021AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 6022AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 6023 6024Most of the public ACPI hardware-related interfaces have been moved to a 6025new 6026file, components/hardware/hwxface.c 6027 6028Enhanced the FADT parsing and low-level ACPI register access: The ACPI 6029register lengths within the FADT are now used, and the low level ACPI 6030register access no longer hardcodes the ACPI register lengths. Given that 6031there may be some risk in actually trusting the FADT register lengths, a 6032run- 6033time option was added to fall back to the default hardcoded lengths if 6034the 6035FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 6036option is set to true for now, and a warning is issued if a suspicious 6037FADT 6038register length is overridden with the default value. 6039 6040Fixed a reference count issue in NsRepairObject. This problem was 6041introduced 6042in version 20081031 as part of a fix to repair Buffer objects within 6043Packages. Lin Ming. 6044 6045Added semaphore support to the Linux/Unix application OS-services layer 6046(OSL). ACPICA BZ 448. Lin Ming. 6047 6048Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 6049will 6050be implemented in the OSL, or will binary semaphores be used instead. 6051 6052Example Code and Data Size: These are the sizes for the OS-independent 6053acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6054debug version of the code includes the debug output trace mechanism and 6055has a 6056much larger code and data size. 6057 6058 Previous Release: 6059 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6060 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6061 Current Release: 6062 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 6063 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 6064 60652) iASL Compiler/Disassembler and Tools: 6066 6067iASL: Completed the '-e' option to include additional ACPI tables in 6068order 6069to 6070aid with disassembly and External statement generation. ACPICA BZ 742. 6071Lin 6072Ming. 6073 6074iASL: Removed the "named object in while loop" error. The compiler cannot 6075determine how many times a loop will execute. ACPICA BZ 730. 6076 6077Disassembler: Implemented support for FADT revision 2 (MS extension). 6078ACPICA 6079BZ 743. 6080 6081Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 6082MCFG). 6083 6084---------------------------------------- 608531 October 2008. Summary of changes for version 20081031: 6086 60871) ACPI CA Core Subsystem: 6088 6089Restructured the ACPICA header files into public/private. acpi.h now 6090includes 6091only the "public" acpica headers. All other acpica headers are "private" 6092and 6093should not be included by acpica users. One new file, accommon.h is used 6094to 6095include the commonly used private headers for acpica code generation. 6096Future 6097plans include moving all private headers to a new subdirectory. 6098 6099Implemented an automatic Buffer->String return value conversion for 6100predefined ACPI methods. For these methods (such as _BIF), added 6101automatic 6102conversion for return objects that are required to be a String, but a 6103Buffer 6104was found instead. This can happen when reading string battery data from 6105an 6106operation region, because it used to be difficult to convert the data 6107from 6108buffer to string from within the ASL. Ensures that the host OS is 6109provided 6110with a valid null-terminated string. Linux BZ 11822. 6111 6112Updated the FACS waking vector interfaces. Split 6113AcpiSetFirmwareWakingVector 6114into two: one for the 32-bit vector, another for the 64-bit vector. This 6115is 6116required because the host OS must setup the wake much differently for 6117each 6118vector (real vs. protected mode, etc.) and the interface itself should 6119not 6120be 6121deciding which vector to use. Also, eliminated the 6122GetFirmwareWakingVector 6123interface, as it served no purpose (only the firmware reads the vector, 6124OS 6125only writes the vector.) ACPICA BZ 731. 6126 6127Implemented a mechanism to escape infinite AML While() loops. Added a 6128loop 6129counter to force exit from AML While loops if the count becomes too 6130large. 6131This can occur in poorly written AML when the hardware does not respond 6132within a while loop and the loop does not implement a timeout. The 6133maximum 6134loop count is configurable. A new exception code is returned when a loop 6135is 6136broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 6137 6138Optimized the execution of AML While loops. Previously, a control state 6139object was allocated and freed for each execution of the loop. The 6140optimization is to simply reuse the control state for each iteration. 6141This 6142speeds up the raw loop execution time by about 5%. 6143 6144Enhanced the implicit return mechanism. For Windows compatibility, return 6145an 6146implicit integer of value zero for methods that contain no executable 6147code. 6148Such methods are seen in the field as stubs (presumably), and can cause 6149drivers to fail if they expect a return value. Lin Ming. 6150 6151Allow multiple backslashes as root prefixes in namepaths. In a fully 6152qualified namepath, allow multiple backslash prefixes. This can happen 6153(and 6154is seen in the field) because of the use of a double-backslash in strings 6155(since backslash is the escape character) causing confusion. ACPICA BZ 6156739 6157Lin Ming. 6158 6159Emit a warning if two different FACS or DSDT tables are discovered in the 6160FADT. Checks if there are two valid but different addresses for the FACS 6161and 6162DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 6163 6164Consolidated the method argument count validation code. Merged the code 6165that 6166validates control method argument counts into the predefined validation 6167module. Eliminates possible multiple warnings for incorrect argument 6168counts. 6169 6170Implemented ACPICA example code. Includes code for ACPICA initialization, 6171handler installation, and calling a control method. Available at 6172source/tools/examples. 6173 6174Added a global pointer for FACS table to simplify internal FACS access. 6175Use 6176the global pointer instead of using AcpiGetTableByIndex for each FACS 6177access. 6178This simplifies the code for the Global Lock and the Firmware Waking 6179Vector(s). 6180 6181Example Code and Data Size: These are the sizes for the OS-independent 6182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6183debug version of the code includes the debug output trace mechanism and 6184has a 6185much larger code and data size. 6186 6187 Previous Release: 6188 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 6189 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 6190 Current Release: 6191 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6192 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6193 61942) iASL Compiler/Disassembler and Tools: 6195 6196iASL: Improved disassembly of external method calls. Added the -e option 6197to 6198allow the inclusion of additional ACPI tables to help with the 6199disassembly 6200of 6201method invocations and the generation of external declarations during the 6202disassembly. Certain external method invocations cannot be disassembled 6203properly without the actual declaration of the method. Use the -e option 6204to 6205include the table where the external method(s) are actually declared. 6206Most 6207useful for disassembling SSDTs that make method calls back to the master 6208DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 6209-d 6210-e dsdt.aml ssdt1.aml 6211 6212iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 6213problem where the use of an alias within a namepath would result in a not 6214found error or cause the compiler to fault. Also now allows forward 6215references from the Alias operator itself. ACPICA BZ 738. 6216 6217---------------------------------------- 621826 September 2008. Summary of changes for version 20080926: 6219 62201) ACPI CA Core Subsystem: 6221 6222Designed and implemented a mechanism to validate predefined ACPI methods 6223and 6224objects. This code validates the predefined ACPI objects (objects whose 6225names 6226start with underscore) that appear in the namespace, at the time they are 6227evaluated. The argument count and the type of the returned object are 6228validated against the ACPI specification. The purpose of this validation 6229is 6230to detect problems with the BIOS-implemented predefined ACPI objects 6231before 6232the results are returned to the ACPI-related drivers. Future enhancements 6233may 6234include actual repair of incorrect return objects where possible. Two new 6235files are nspredef.c and acpredef.h. 6236 6237Fixed a fault in the AML parser if a memory allocation fails during the 6238Op 6239completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 6240 6241Fixed an issue with implicit return compatibility. This change improves 6242the 6243implicit return mechanism to be more compatible with the MS interpreter. 6244Lin 6245Ming, ACPICA BZ 349. 6246 6247Implemented support for zero-length buffer-to-string conversions. Allow 6248zero 6249length strings during interpreter buffer-to-string conversions. For 6250example, 6251during the ToDecimalString and ToHexString operators, as well as implicit 6252conversions. Fiodor Suietov, ACPICA BZ 585. 6253 6254Fixed two possible memory leaks in the error exit paths of 6255AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 6256are 6257similar in that they use a stack of state objects in order to eliminate 6258recursion. The stack must be fully unwound and deallocated if an error 6259occurs. Lin Ming. ACPICA BZ 383. 6260 6261Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 6262global 6263ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 6264Moore ACPICA BZ 442. 6265 6266Removed the obsolete version number in module headers. Removed the 6267"$Revision" number that appeared in each module header. This version 6268number 6269was useful under SourceSafe and CVS, but has no meaning under git. It is 6270not 6271only incorrect, it could also be misleading. 6272 6273Example Code and Data Size: These are the sizes for the OS-independent 6274acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6275debug version of the code includes the debug output trace mechanism and 6276has a 6277much larger code and data size. 6278 6279 Previous Release: 6280 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6281 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6282 Current Release: 6283 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 6284 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 6285 6286---------------------------------------- 628729 August 2008. Summary of changes for version 20080829: 6288 62891) ACPI CA Core Subsystem: 6290 6291Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 6292Reference. Changes include the elimination of cheating on the Object 6293field 6294for the DdbHandle subtype, addition of a reference class field to 6295differentiate the various reference types (instead of an AML opcode), and 6296the 6297cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 6298 6299Reduce an error to a warning for an incorrect method argument count. 6300Previously aborted with an error if too few arguments were passed to a 6301control method via the external ACPICA interface. Now issue a warning 6302instead 6303and continue. Handles the case where the method inadvertently declares 6304too 6305many arguments, but does not actually use the extra ones. Applies mainly 6306to 6307the predefined methods. Lin Ming. Linux BZ 11032. 6308 6309Disallow the evaluation of named object types with no intrinsic value. 6310Return 6311AE_TYPE for objects that have no value and therefore evaluation is 6312undefined: 6313Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 6314of 6315these types were allowed, but an exception would be generated at some 6316point 6317during the evaluation. Now, the error is generated up front. 6318 6319Fixed a possible memory leak in the AcpiNsGetExternalPathname function 6320(nsnames.c). Fixes a leak in the error exit path. 6321 6322Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 6323debug 6324levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 6325ACPI_EXCEPTION 6326interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 6327ACPI_LV_EVENTS. 6328 6329Removed obsolete and/or unused exception codes from the acexcep.h header. 6330There is the possibility that certain device drivers may be affected if 6331they 6332use any of these exceptions. 6333 6334The ACPICA documentation has been added to the public git source tree, 6335under 6336acpica/documents. Included are the ACPICA programmer reference, the iASL 6337compiler reference, and the changes.txt release logfile. 6338 6339Example Code and Data Size: These are the sizes for the OS-independent 6340acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6341debug version of the code includes the debug output trace mechanism and 6342has a 6343much larger code and data size. 6344 6345 Previous Release: 6346 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6347 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6348 Current Release: 6349 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6350 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6351 63522) iASL Compiler/Disassembler and Tools: 6353 6354Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 6355defines _SCP with 3 arguments. Previous versions defined it with only 1 6356argument. iASL now allows both definitions. 6357 6358iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 6359zero- 6360length subtables when disassembling ACPI tables. Also fixed a couple of 6361errors where a full 16-bit table type field was not extracted from the 6362input 6363properly. 6364 6365acpisrc: Improve comment counting mechanism for generating source code 6366statistics. Count first and last lines of multi-line comments as 6367whitespace, 6368not comment lines. Handle Linux legal header in addition to standard 6369acpica 6370header. 6371 6372---------------------------------------- 6373 637429 July 2008. Summary of changes for version 20080729: 6375 63761) ACPI CA Core Subsystem: 6377 6378Fix a possible deadlock in the GPE dispatch. Remove call to 6379AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 6380attempt 6381to acquire the GPE lock but can deadlock since the GPE lock is already 6382held 6383at dispatch time. This code was introduced in version 20060831 as a 6384response 6385to Linux BZ 6881 and has since been removed from Linux. 6386 6387Add a function to dereference returned reference objects. Examines the 6388return 6389object from a call to AcpiEvaluateObject. Any Index or RefOf references 6390are 6391automatically dereferenced in an attempt to return something useful 6392(these 6393reference types cannot be converted into an external ACPI_OBJECT.) 6394Provides 6395MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 6396 6397x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 6398subtables for the MADT and one new subtable for the SRAT. Includes 6399disassembler and AcpiSrc support. Data from the Intel 64 Architecture 6400x2APIC 6401Specification, June 2008. 6402 6403Additional error checking for pathname utilities. Add error check after 6404all 6405calls to AcpiNsGetPathnameLength. Add status return from 6406AcpiNsBuildExternalPath and check after all calls. Add parameter 6407validation 6408to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 6409 6410Return status from the global init function AcpiUtGlobalInitialize. This 6411is 6412used by both the kernel subsystem and the utilities such as iASL 6413compiler. 6414The function could possibly fail when the caches are initialized. Yang 6415Yi. 6416 6417Add a function to decode reference object types to strings. Created for 6418improved error messages. 6419 6420Improve object conversion error messages. Better error messages during 6421object 6422conversion from internal to the external ACPI_OBJECT. Used for external 6423calls 6424to AcpiEvaluateObject. 6425 6426Example Code and Data Size: These are the sizes for the OS-independent 6427acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6428debug version of the code includes the debug output trace mechanism and 6429has a 6430much larger code and data size. 6431 6432 Previous Release: 6433 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 6434 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 6435 Current Release: 6436 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6437 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6438 64392) iASL Compiler/Disassembler and Tools: 6440 6441Debugger: fix a possible hang when evaluating non-methods. Fixes a 6442problem 6443introduced in version 20080701. If the object being evaluated (via 6444execute 6445command) is not a method, the debugger can hang while trying to obtain 6446non- 6447existent parameters. 6448 6449iASL: relax error for using reserved "_T_x" identifiers. These names can 6450appear in a disassembled ASL file if they were emitted by the original 6451compiler. Instead of issuing an error or warning and forcing the user to 6452manually change these names, issue a remark instead. 6453 6454iASL: error if named object created in while loop. Emit an error if any 6455named 6456object is created within a While loop. If allowed, this code will 6457generate 6458a 6459run-time error on the second iteration of the loop when an attempt is 6460made 6461to 6462create the same named object twice. ACPICA bugzilla 730. 6463 6464iASL: Support absolute pathnames for include files. Add support for 6465absolute 6466pathnames within the Include operator. previously, only relative 6467pathnames 6468were supported. 6469 6470iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 6471Descriptor. 6472The ACPI spec requires one interrupt minimum. BZ 423 6473 6474iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 6475Handles the case for the Interrupt Resource Descriptor where 6476the ResourceSource argument is omitted but ResourceSourceIndex 6477is present. Now leave room for the Index. BZ 426 6478 6479iASL: Prevent error message if CondRefOf target does not exist. Fixes 6480cases 6481where an error message is emitted if the target does not exist. BZ 516 6482 6483iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 6484(get ACPI tables on Windows). This was apparently broken in version 648520070919. 6486 6487AcpiXtract: Handle EOF while extracting data. Correctly handle the case 6488where 6489the EOF happens immediately after the last table in the input file. Print 6490completion message. Previously, no message was displayed in this case. 6491 6492---------------------------------------- 649301 July 2008. Summary of changes for version 20080701: 6494 64950) Git source tree / acpica.org 6496 6497Fixed a problem where a git-clone from http would not transfer the entire 6498source tree. 6499 65001) ACPI CA Core Subsystem: 6501 6502Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 6503enable bit. Now performs a read-change-write of the enable register 6504instead 6505of simply writing out the cached enable mask. This will prevent 6506inadvertent 6507enabling of GPEs if a rogue GPE is received during initialization (before 6508GPE 6509handlers are installed.) 6510 6511Implemented a copy for dynamically loaded tables. Previously, dynamically 6512loaded tables were simply mapped - but on some machines this memory is 6513corrupted after suspend. Now copy the table to a local buffer. For the 6514OpRegion case, added checksum verify. Use the table length from the table 6515header, not the region length. For the Buffer case, use the table length 6516also. Dennis Noordsij, Bob Moore. BZ 10734 6517 6518Fixed a problem where the same ACPI table could not be dynamically loaded 6519and 6520unloaded more than once. Without this change, a table cannot be loaded 6521again 6522once it has been loaded/unloaded one time. The current mechanism does not 6523unregister a table upon an unload. During a load, if the same table is 6524found, 6525this no longer returns an exception. BZ 722 6526 6527Fixed a problem where the wrong descriptor length was calculated for the 6528EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 6529EndTag 6530are calculated as 12 bytes long, but the actual length in the internal 6531descriptor is 16 because of the round-up to 8 on the 64-bit build. 6532Reported 6533by Linn Crosetto. BZ 728 6534 6535Fixed a possible memory leak in the Unload operator. The DdbHandle 6536returned 6537by Load() did not have its reference count decremented during unload, 6538leading 6539to a memory leak. Lin Ming. BZ 727 6540 6541Fixed a possible memory leak when deleting thermal/processor objects. Any 6542associated notify handlers (and objects) were not being deleted. Fiodor 6543Suietov. BZ 506 6544 6545Fixed the ordering of the ASCII names in the global mutex table to match 6546the 6547actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 6548only. 6549Vegard Nossum. BZ 726 6550 6551Enhanced the AcpiGetObjectInfo interface to return the number of required 6552arguments if the object is a control method. Added this call to the 6553debugger 6554so the proper number of default arguments are passed to a method. This 6555prevents a warning when executing methods from AcpiExec. 6556 6557Added a check for an invalid handle in AcpiGetObjectInfo. Return 6558AE_BAD_PARAMETER if input handle is invalid. BZ 474 6559 6560Fixed an extraneous warning from exconfig.c on the 64-bit build. 6561 6562Example Code and Data Size: These are the sizes for the OS-independent 6563acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6564debug version of the code includes the debug output trace mechanism and 6565has a 6566much larger code and data size. 6567 6568 Previous Release: 6569 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 6570 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 6571 Current Release: 6572 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 6573 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 6574 65752) iASL Compiler/Disassembler and Tools: 6576 6577iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 6578resource descriptor names. 6579 6580iASL: Detect invalid ASCII characters in input (windows version). Removed 6581the 6582"-CF" flag from the flex compile, enables correct detection of non-ASCII 6583characters in the input. BZ 441 6584 6585iASL: Eliminate warning when result of LoadTable is not used. Eliminate 6586the 6587"result of operation not used" warning when the DDB handle returned from 6588LoadTable is not used. The warning is not needed. BZ 590 6589 6590AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 6591method 6592to 6593pass address of table to the AML. Added option to disable OpRegion 6594simulation 6595to allow creation of an OpRegion with a real address that was passed to 6596_CFG. 6597All of this allows testing of the Load and Unload operators from 6598AcpiExec. 6599 6600Debugger: update tables command for unloaded tables. Handle unloaded 6601tables 6602and use the standard table header output routine. 6603 6604---------------------------------------- 660509 June 2008. Summary of changes for version 20080609: 6606 66071) ACPI CA Core Subsystem: 6608 6609Implemented a workaround for reversed _PRT entries. A significant number 6610of 6611BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 6612change dynamically detects and repairs this problem. Provides 6613compatibility 6614with MS ACPI. BZ 6859 6615 6616Simplified the internal ACPI hardware interfaces to eliminate the locking 6617flag parameter from Register Read/Write. Added a new external interface, 6618AcpiGetRegisterUnlocked. 6619 6620Fixed a problem where the invocation of a GPE control method could hang. 6621This 6622was a regression introduced in 20080514. The new method argument count 6623validation mechanism can enter an infinite loop when a GPE method is 6624dispatched. Problem fixed by removing the obsolete code that passed GPE 6625block 6626information to the notify handler via the control method parameter 6627pointer. 6628 6629Fixed a problem where the _SST execution status was incorrectly returned 6630to 6631the caller of AcpiEnterSleepStatePrep. This was a regression introduced 6632in 663320080514. _SST is optional and a NOT_FOUND exception should never be 6634returned. BZ 716 6635 6636Fixed a problem where a deleted object could be accessed from within the 6637AML 6638parser. This was a regression introduced in version 20080123 as a fix for 6639the 6640Unload operator. Lin Ming. BZ 10669 6641 6642Cleaned up the debug operand dump mechanism. Eliminated unnecessary 6643operands 6644and eliminated the use of a negative index in a loop. Operands are now 6645displayed in the correct order, not backwards. This also fixes a 6646regression 6647introduced in 20080514 on 64-bit systems where the elimination of 6648ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 6649715 6650 6651Fixed a possible memory leak in EvPciConfigRegionSetup where the error 6652exit 6653path did not delete a locally allocated structure. 6654 6655Updated definitions for the DMAR and SRAT tables to synchronize with the 6656current specifications. Includes disassembler support. 6657 6658Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 6659loop termination value was used. Loop terminated on iteration early, 6660missing 6661one mutex. Linn Crosetto 6662 6663Example Code and Data Size: These are the sizes for the OS-independent 6664acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6665debug version of the code includes the debug output trace mechanism and 6666has a 6667much larger code and data size. 6668 6669 Previous Release: 6670 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 6671 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 6672 Current Release: 6673 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 6674 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 6675 66762) iASL Compiler/Disassembler and Tools: 6677 6678Disassembler: Implemented support for EisaId() within _CID objects. Now 6679disassemble integer _CID objects back to EisaId invocations, including 6680multiple integers within _CID packages. Includes single-step support for 6681debugger also. 6682 6683Disassembler: Added support for DMAR and SRAT table definition changes. 6684 6685---------------------------------------- 668614 May 2008. Summary of changes for version 20080514: 6687 66881) ACPI CA Core Subsystem: 6689 6690Fixed a problem where GPEs were enabled too early during the ACPICA 6691initialization. This could lead to "handler not installed" errors on some 6692machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 6693This 6694ensures that all operation regions and devices throughout the namespace 6695have 6696been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 6697 6698Implemented a change to the enter sleep code. Moved execution of the _GTS 6699method to just before setting sleep enable bit. The execution was moved 6700from 6701AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 6702immediately before the SLP_EN bit is set, as per the ACPI specification. 6703Luming Yu, BZ 1653. 6704 6705Implemented a fix to disable unknown GPEs (2nd version). Now always 6706disable 6707the GPE, even if ACPICA thinks that that it is already disabled. It is 6708possible that the AML or some other code has enabled the GPE unbeknownst 6709to 6710the ACPICA code. 6711 6712Fixed a problem with the Field operator where zero-length fields would 6713return 6714an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 6715ASL 6716field declarations in Field(), BankField(), and IndexField(). BZ 10606. 6717 6718Implemented a fix for the Load operator, now load the table at the 6719namespace 6720root. This reverts a change introduced in version 20071019. The table is 6721now 6722loaded at the namespace root even though this goes against the ACPI 6723specification. This provides compatibility with other ACPI 6724implementations. 6725The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 6726Ming. 6727 6728Fixed a problem where ACPICA would not Load() tables with unusual 6729signatures. 6730Now ignore ACPI table signature for Load() operator. Only "SSDT" is 6731acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 6732Therefore, signature validation is worthless. Apparently MS ACPI accepts 6733such 6734signatures, ACPICA must be compatible. BZ 10454. 6735 6736Fixed a possible negative array index in AcpiUtValidateException. Added 6737NULL 6738fields to the exception string arrays to eliminate a -1 subtraction on 6739the 6740SubStatus field. 6741 6742Updated the debug tracking macros to reduce overall code and data size. 6743Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 6744instead of pointers to static strings. Jan Beulich and Bob Moore. 6745 6746Implemented argument count checking in control method invocation via 6747AcpiEvaluateObject. Now emit an error if too few arguments, warning if 6748too 6749many. This applies only to extern programmatic control method execution, 6750not 6751method-to-method calls within the AML. Lin Ming. 6752 6753Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 6754no 6755longer needed, especially with the removal of 16-bit support. It was 6756replaced 6757mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 6758bit 6759on 676032/64-bit platforms is required. 6761 6762Added the C const qualifier for appropriate string constants -- mostly 6763MODULE_NAME and printf format strings. Jan Beulich. 6764 6765Example Code and Data Size: These are the sizes for the OS-independent 6766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6767debug version of the code includes the debug output trace mechanism and 6768has a 6769much larger code and data size. 6770 6771 Previous Release: 6772 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 6773 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 6774 Current Release: 6775 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 6776 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 6777 67782) iASL Compiler/Disassembler and Tools: 6779 6780Implemented ACPI table revision ID validation in the disassembler. Zero 6781is 6782always invalid. For DSDTs, the ID controls the interpreter integer width. 67831 6784means 32-bit and this is unusual. 2 or greater is 64-bit. 6785 6786---------------------------------------- 678721 March 2008. Summary of changes for version 20080321: 6788 67891) ACPI CA Core Subsystem: 6790 6791Implemented an additional change to the GPE support in order to suppress 6792spurious or stray GPEs. The AcpiEvDisableGpe function will now 6793permanently 6794disable incoming GPEs that are neither enabled nor disabled -- meaning 6795that 6796the GPE is unknown to the system. This should prevent future interrupt 6797floods 6798from that GPE. BZ 6217 (Zhang Rui) 6799 6800Fixed a problem where NULL package elements were not returned to the 6801AcpiEvaluateObject interface correctly. The element was simply ignored 6802instead of returning a NULL ACPI_OBJECT package element, potentially 6803causing 6804a buffer overflow and/or confusing the caller who expected a fixed number 6805of 6806elements. BZ 10132 (Lin Ming, Bob Moore) 6807 6808Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 6809Dword, 6810Qword), Field, BankField, and IndexField operators when invoked from 6811inside 6812an executing control method. In this case, these operators created 6813namespace 6814nodes that were incorrectly left marked as permanent nodes instead of 6815temporary nodes. This could cause a problem if there is race condition 6816between an exiting control method and a running namespace walk. (Reported 6817by 6818Linn Crosetto) 6819 6820Fixed a problem where the CreateField and CreateXXXField operators would 6821incorrectly allow duplicate names (the name of the field) with no 6822exception 6823generated. 6824 6825Implemented several changes for Notify handling. Added support for new 6826Notify 6827values (ACPI 2.0+) and improved the Notify debug output. Notify on 6828PowerResource objects is no longer allowed, as per the ACPI 6829specification. 6830(Bob Moore, Zhang Rui) 6831 6832All Reference Objects returned via the AcpiEvaluateObject interface are 6833now 6834marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 6835for 6836NULL objects - either NULL package elements or unresolved named 6837references. 6838 6839Fixed a problem where an extraneous debug message was produced for 6840package 6841objects (when debugging enabled). The message "Package List length larger 6842than NumElements count" is now produced in the correct case, and is now 6843an 6844error message rather than a debug message. Added a debug message for the 6845opposite case, where NumElements is larger than the Package List (the 6846package 6847will be padded out with NULL elements as per the ACPI spec.) 6848 6849Implemented several improvements for the output of the ASL "Debug" object 6850to 6851clarify and keep all data for a given object on one output line. 6852 6853Fixed two size calculation issues with the variable-length Start 6854Dependent 6855resource descriptor. 6856 6857Example Code and Data Size: These are the sizes for the OS-independent 6858acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6859debug version of the code includes the debug output trace mechanism and 6860has 6861a much larger code and data size. 6862 6863 Previous Release: 6864 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 6865 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 6866 Current Release: 6867 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 6868 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 6869 68702) iASL Compiler/Disassembler and Tools: 6871 6872Fixed a problem with the use of the Switch operator where execution of 6873the 6874containing method by multiple concurrent threads could cause an 6875AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 6876actual Switch opcode, it must be simulated with local named temporary 6877variables and if/else pairs. The solution chosen was to mark any method 6878that 6879uses Switch as Serialized, thus preventing multiple thread entries. BZ 6880469. 6881 6882---------------------------------------- 688313 February 2008. Summary of changes for version 20080213: 6884 68851) ACPI CA Core Subsystem: 6886 6887Implemented another MS compatibility design change for GPE/Notify 6888handling. 6889GPEs are now cleared/enabled asynchronously to allow all pending notifies 6890to 6891complete first. It is expected that the OSL will queue the enable request 6892behind all pending notify requests (may require changes to the local host 6893OSL 6894in AcpiOsExecute). Alexey Starikovskiy. 6895 6896Fixed a problem where buffer and package objects passed as arguments to a 6897control method via the external AcpiEvaluateObject interface could cause 6898an 6899AE_AML_INTERNAL exception depending on the order and type of operators 6900executed by the target control method. 6901 6902Fixed a problem where resource descriptor size optimization could cause a 6903problem when a _CRS resource template is passed to a _SRS method. The 6904_SRS 6905resource template must use the same descriptors (with the same size) as 6906returned from _CRS. This change affects the following resource 6907descriptors: 6908IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 69099487) 6910 6911Fixed a problem where a CopyObject to RegionField, BankField, and 6912IndexField 6913objects did not perform an implicit conversion as it should. These types 6914must 6915retain their initial type permanently as per the ACPI specification. 6916However, 6917a CopyObject to all other object types should not perform an implicit 6918conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 6919 6920Fixed a problem with the AcpiGetDevices interface where the mechanism to 6921match device CIDs did not examine the entire list of available CIDs, but 6922instead aborted on the first non-matching CID. Andrew Patterson. 6923 6924Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 6925was 6926inadvertently changed to return a 16-bit value instead of a 32-bit value, 6927truncating the upper dword of a 64-bit value. This macro is only used to 6928display debug output, so no incorrect calculations were made. Also, 6929reimplemented the macro so that a 64-bit shift is not performed by 6930inefficient compilers. 6931 6932Added missing va_end statements that should correspond with each va_start 6933statement. 6934 6935Example Code and Data Size: These are the sizes for the OS-independent 6936acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6937debug version of the code includes the debug output trace mechanism and 6938has 6939a much larger code and data size. 6940 6941 Previous Release: 6942 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 6943 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 6944 Current Release: 6945 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 6946 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 6947 69482) iASL Compiler/Disassembler and Tools: 6949 6950Implemented full disassembler support for the following new ACPI tables: 6951BERT, EINJ, and ERST. Implemented partial disassembler support for the 6952complicated HEST table. These tables support the Windows Hardware Error 6953Architecture (WHEA). 6954 6955---------------------------------------- 695623 January 2008. Summary of changes for version 20080123: 6957 69581) ACPI CA Core Subsystem: 6959 6960Added the 2008 copyright to all module headers and signons. This affects 6961virtually every file in the ACPICA core subsystem, the iASL compiler, and 6962the tools/utilities. 6963 6964Fixed a problem with the SizeOf operator when used with Package and 6965Buffer 6966objects. These objects have deferred execution for some arguments, and 6967the 6968execution is now completed before the SizeOf is executed. This problem 6969caused 6970unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 6971BZ 69729558 6973 6974Implemented an enhancement to the interpreter "slack mode". In the 6975absence 6976of 6977an explicit return or an implicitly returned object from the last 6978executed 6979opcode, a control method will now implicitly return an integer of value 0 6980for 6981Microsoft compatibility. (Lin Ming) BZ 392 6982 6983Fixed a problem with the Load operator where an exception was not 6984returned 6985in 6986the case where the table is already loaded. (Lin Ming) BZ 463 6987 6988Implemented support for the use of DDBHandles as an Indexed Reference, as 6989per 6990the ACPI spec. (Lin Ming) BZ 486 6991 6992Implemented support for UserTerm (Method invocation) for the Unload 6993operator 6994as per the ACPI spec. (Lin Ming) BZ 580 6995 6996Fixed a problem with the LoadTable operator where the OemId and 6997OemTableId 6998input strings could cause unexpected failures if they were shorter than 6999the 7000maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 7001 7002Implemented support for UserTerm (Method invocation) for the Unload 7003operator 7004as per the ACPI spec. (Lin Ming) BZ 580 7005 7006Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 7007HEST, 7008IBFT, UEFI, WDAT. Disassembler support is forthcoming. 7009 7010Example Code and Data Size: These are the sizes for the OS-independent 7011acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7012debug version of the code includes the debug output trace mechanism and 7013has 7014a much larger code and data size. 7015 7016 Previous Release: 7017 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7018 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7019 Current Release: 7020 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 7021 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 7022 70232) iASL Compiler/Disassembler and Tools: 7024 7025Implemented support in the disassembler for checksum validation on 7026incoming 7027binary DSDTs and SSDTs. If incorrect, a message is displayed within the 7028table 7029header dump at the start of the disassembly. 7030 7031Implemented additional debugging information in the namespace listing 7032file 7033created during compilation. In addition to the namespace hierarchy, the 7034full 7035pathname to each namespace object is displayed. 7036 7037Fixed a problem with the disassembler where invalid ACPI tables could 7038cause 7039faults or infinite loops. 7040 7041Fixed an unexpected parse error when using the optional "parameter types" 7042list in a control method declaration. (Lin Ming) BZ 397 7043 7044Fixed a problem where two External declarations with the same name did 7045not 7046cause an error (Lin Ming) BZ 509 7047 7048Implemented support for full TermArgs (adding Argx, Localx and method 7049invocation) for the ParameterData parameter to the LoadTable operator. 7050(Lin 7051Ming) BZ 583,587 7052 7053---------------------------------------- 705419 December 2007. Summary of changes for version 20071219: 7055 70561) ACPI CA Core Subsystem: 7057 7058Implemented full support for deferred execution for the TermArg string 7059arguments for DataTableRegion. This enables forward references and full 7060operand resolution for the three string arguments. Similar to 7061OperationRegion 7062deferred argument execution.) Lin Ming. BZ 430 7063 7064Implemented full argument resolution support for the BankValue argument 7065to 7066BankField. Previously, only constants were supported, now any TermArg may 7067be 7068used. Lin Ming BZ 387, 393 7069 7070Fixed a problem with AcpiGetDevices where the search of a branch of the 7071device tree could be terminated prematurely. In accordance with the ACPI 7072specification, the search down the current branch is terminated if a 7073device 7074is both not present and not functional (instead of just not present.) 7075Yakui 7076Zhao. 7077 7078Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 7079if 7080the underlying AML code changed the GPE enable registers. Now, any 7081unknown 7082incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 7083disabled 7084instead of simply ignored. Rui Zhang. 7085 7086Fixed a problem with Index Fields where the Index register was 7087incorrectly 7088limited to a maximum of 32 bits. Now any size may be used. 7089 7090Fixed a couple memory leaks associated with "implicit return" objects 7091when 7092the AML Interpreter slack mode is enabled. Lin Ming BZ 349 7093 7094Example Code and Data Size: These are the sizes for the OS-independent 7095acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7096debug version of the code includes the debug output trace mechanism and 7097has 7098a much larger code and data size. 7099 7100 Previous Release: 7101 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7102 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7103 Current Release: 7104 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7105 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7106 7107---------------------------------------- 710814 November 2007. Summary of changes for version 20071114: 7109 71101) ACPI CA Core Subsystem: 7111 7112Implemented event counters for each of the Fixed Events, the ACPI SCI 7113(interrupt) itself, and control methods executed. Named 7114AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 7115These 7116should be useful for debugging and statistics. 7117 7118Implemented a new external interface, AcpiGetStatistics, to retrieve the 7119contents of the various event counters. Returns the current values for 7120AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 7121AcpiMethodCount. The interface can be expanded in the future if new 7122counters 7123are added. Device drivers should use this interface rather than access 7124the 7125counters directly. 7126 7127Fixed a problem with the FromBCD and ToBCD operators. With some 7128compilers, 7129the ShortDivide function worked incorrectly, causing problems with the 7130BCD 7131functions with large input values. A truncation from 64-bit to 32-bit 7132inadvertently occurred. Internal BZ 435. Lin Ming 7133 7134Fixed a problem with Index references passed as method arguments. 7135References 7136passed as arguments to control methods were dereferenced immediately 7137(before 7138control was passed to the called method). The references are now 7139correctly 7140passed directly to the called method. BZ 5389. Lin Ming 7141 7142Fixed a problem with CopyObject used in conjunction with the Index 7143operator. 7144The reference was incorrectly dereferenced before the copy. The reference 7145is 7146now correctly copied. BZ 5391. Lin Ming 7147 7148Fixed a problem with Control Method references within Package objects. 7149These 7150references are now correctly generated. This completes the package 7151construction overhaul that began in version 20071019. 7152 7153Example Code and Data Size: These are the sizes for the OS-independent 7154acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7155debug version of the code includes the debug output trace mechanism and 7156has 7157a much larger code and data size. 7158 7159 Previous Release: 7160 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 7161 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 7162 Current Release: 7163 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7164 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7165 7166 71672) iASL Compiler/Disassembler and Tools: 7168 7169The AcpiExec utility now installs handlers for all of the predefined 7170Operation Region types. New types supported are: PCI_Config, CMOS, and 7171PCIBARTarget. 7172 7173Fixed a problem with the 64-bit version of AcpiExec where the extended 7174(64- 7175bit) address fields for the DSDT and FACS within the FADT were not being 7176used, causing truncation of the upper 32-bits of these addresses. Lin 7177Ming 7178and Bob Moore 7179 7180---------------------------------------- 718119 October 2007. Summary of changes for version 20071019: 7182 71831) ACPI CA Core Subsystem: 7184 7185Fixed a problem with the Alias operator when the target of the alias is a 7186named ASL operator that opens a new scope -- Scope, Device, 7187PowerResource, 7188Processor, and ThermalZone. In these cases, any children of the original 7189operator could not be accessed via the alias, potentially causing 7190unexpected 7191AE_NOT_FOUND exceptions. (BZ 9067) 7192 7193Fixed a problem with the Package operator where all named references were 7194created as object references and left otherwise unresolved. According to 7195the 7196ACPI specification, a Package can only contain Data Objects or references 7197to 7198control methods. The implication is that named references to Data Objects 7199(Integer, Buffer, String, Package, BufferField, Field) should be resolved 7200immediately upon package creation. This is the approach taken with this 7201change. References to all other named objects (Methods, Devices, Scopes, 7202etc.) are all now properly created as reference objects. (BZ 5328) 7203 7204Reverted a change to Notify handling that was introduced in version 720520070508. This version changed the Notify handling from asynchronous to 7206fully synchronous (Device driver Notify handling with respect to the 7207Notify 7208ASL operator). It was found that this change caused more problems than it 7209solved and was removed by most users. 7210 7211Fixed a problem with the Increment and Decrement operators where the type 7212of 7213the target object could be unexpectedly and incorrectly changed. (BZ 353) 7214Lin Ming. 7215 7216Fixed a problem with the Load and LoadTable operators where the table 7217location within the namespace was ignored. Instead, the table was always 7218loaded into the root or current scope. Lin Ming. 7219 7220Fixed a problem with the Load operator when loading a table from a buffer 7221object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 7222 7223Fixed a problem with the Debug object where a store of a DdbHandle 7224reference 7225object to the Debug object could cause a fault. 7226 7227Added a table checksum verification for the Load operator, in the case 7228where 7229the load is from a buffer. (BZ 578). 7230 7231Implemented additional parameter validation for the LoadTable operator. 7232The 7233length of the input strings SignatureString, OemIdString, and OemTableId 7234are 7235now checked for maximum lengths. (BZ 582) Lin Ming. 7236 7237Example Code and Data Size: These are the sizes for the OS-independent 7238acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7239debug version of the code includes the debug output trace mechanism and 7240has 7241a much larger code and data size. 7242 7243 Previous Release: 7244 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 7245 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 7246 Current Release: 7247 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 7248 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 7249 7250 72512) iASL Compiler/Disassembler: 7252 7253Fixed a problem where if a single file was specified and the file did not 7254exist, no error message was emitted. (Introduced with wildcard support in 7255version 20070917.) 7256 7257---------------------------------------- 725819 September 2007. Summary of changes for version 20070919: 7259 72601) ACPI CA Core Subsystem: 7261 7262Designed and implemented new external interfaces to install and remove 7263handlers for ACPI table-related events. Current events that are defined 7264are 7265LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 7266they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 7267AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 7268 7269Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 7270(acpi_serialized option on Linux) could cause some systems to hang during 7271initialization. (Bob Moore) BZ 8171 7272 7273Fixed a problem where objects of certain types (Device, ThermalZone, 7274Processor, PowerResource) can be not found if they are declared and 7275referenced from within the same control method (Lin Ming) BZ 341 7276 7277Example Code and Data Size: These are the sizes for the OS-independent 7278acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7279debug version of the code includes the debug output trace mechanism and 7280has 7281a much larger code and data size. 7282 7283 Previous Release: 7284 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7285 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7286 Current Release: 7287 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 7288 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 7289 7290 72912) iASL Compiler/Disassembler: 7292 7293Implemented support to allow multiple files to be compiled/disassembled 7294in 7295a 7296single invocation. This includes command line wildcard support for both 7297the 7298Windows and Unix versions of the compiler. This feature simplifies the 7299disassembly and compilation of multiple ACPI tables in a single 7300directory. 7301 7302---------------------------------------- 730308 May 2007. Summary of changes for version 20070508: 7304 73051) ACPI CA Core Subsystem: 7306 7307Implemented a Microsoft compatibility design change for the handling of 7308the 7309Notify AML operator. Previously, notify handlers were dispatched and 7310executed completely asynchronously in a deferred thread. The new design 7311still executes the notify handlers in a different thread, but the 7312original 7313thread that executed the Notify() now waits at a synchronization point 7314for 7315the notify handler to complete. Some machines depend on a synchronous 7316Notify 7317operator in order to operate correctly. 7318 7319Implemented support to allow Package objects to be passed as method 7320arguments to the external AcpiEvaluateObject interface. Previously, this 7321would return the AE_NOT_IMPLEMENTED exception. This feature had not been 7322implemented since there were no reserved control methods that required it 7323until recently. 7324 7325Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 7326that 7327contained invalid non-zero values in reserved fields could cause later 7328failures because these fields have meaning in later revisions of the 7329FADT. 7330For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 7331fields 7332are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 7333 7334Fixed a problem where the Global Lock handle was not properly updated if 7335a 7336thread that acquired the Global Lock via executing AML code then 7337attempted 7338to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 7339Joe 7340Liu. 7341 7342Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 7343could be corrupted if the interrupt being removed was at the head of the 7344list. Reported by Linn Crosetto. 7345 7346Example Code and Data Size: These are the sizes for the OS-independent 7347acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7348debug version of the code includes the debug output trace mechanism and 7349has 7350a much larger code and data size. 7351 7352 Previous Release: 7353 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7354 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7355 Current Release: 7356 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7357 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7358 7359---------------------------------------- 736020 March 2007. Summary of changes for version 20070320: 7361 73621) ACPI CA Core Subsystem: 7363 7364Implemented a change to the order of interpretation and evaluation of AML 7365operand objects within the AML interpreter. The interpreter now evaluates 7366operands in the order that they appear in the AML stream (and the 7367corresponding ASL code), instead of in the reverse order (after the 7368entire 7369operand list has been parsed). The previous behavior caused several 7370subtle 7371incompatibilities with the Microsoft AML interpreter as well as being 7372somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 7373 7374Implemented a change to the ACPI Global Lock support. All interfaces to 7375the 7376global lock now allow the same thread to acquire the lock multiple times. 7377This affects the AcpiAcquireGlobalLock external interface to the global 7378lock 7379as well as the internal use of the global lock to support AML fields -- a 7380control method that is holding the global lock can now simultaneously 7381access 7382AML fields that require global lock protection. Previously, in both 7383cases, 7384this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 7385to 7386AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 7387Controller. There is no change to the behavior of the AML Acquire 7388operator, 7389as this can already be used to acquire a mutex multiple times by the same 7390thread. BZ 8066. With assistance from Alexey Starikovskiy. 7391 7392Fixed a problem where invalid objects could be referenced in the AML 7393Interpreter after error conditions. During operand evaluation, ensure 7394that 7395the internal "Return Object" field is cleared on error and only valid 7396pointers are stored there. Caused occasional access to deleted objects 7397that 7398resulted in "large reference count" warning messages. Valery Podrezov. 7399 7400Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 7401on 7402deeply nested control method invocations. BZ 7873, local BZ 487. Valery 7403Podrezov. 7404 7405Fixed an internal problem with the handling of result objects on the 7406interpreter result stack. BZ 7872. Valery Podrezov. 7407 7408Removed obsolete code that handled the case where AML_NAME_OP is the 7409target 7410of a reference (Reference.Opcode). This code was no longer necessary. BZ 74117874. Valery Podrezov. 7412 7413Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 7414was 7415a 7416remnant from the previously discontinued 16-bit support. 7417 7418Example Code and Data Size: These are the sizes for the OS-independent 7419acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7420debug version of the code includes the debug output trace mechanism and 7421has 7422a much larger code and data size. 7423 7424 Previous Release: 7425 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7426 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7427 Current Release: 7428 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7429 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7430 7431---------------------------------------- 743226 January 2007. Summary of changes for version 20070126: 7433 74341) ACPI CA Core Subsystem: 7435 7436Added the 2007 copyright to all module headers and signons. This affects 7437virtually every file in the ACPICA core subsystem, the iASL compiler, and 7438the utilities. 7439 7440Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 7441during a table load. A bad pointer was passed in the case where the DSDT 7442is 7443overridden, causing a fault in this case. 7444 7445Example Code and Data Size: These are the sizes for the OS-independent 7446acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7447debug version of the code includes the debug output trace mechanism and 7448has 7449a much larger code and data size. 7450 7451 Previous Release: 7452 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7453 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7454 Current Release: 7455 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7456 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7457 7458---------------------------------------- 745915 December 2006. Summary of changes for version 20061215: 7460 74611) ACPI CA Core Subsystem: 7462 7463Support for 16-bit ACPICA has been completely removed since it is no 7464longer 7465necessary and it clutters the code. All 16-bit macros, types, and 7466conditional compiles have been removed, cleaning up and simplifying the 7467code 7468across the entire subsystem. DOS support is no longer needed since the 7469bootable Linux firmware kit is now available. 7470 7471The handler for the Global Lock is now removed during AcpiTerminate to 7472enable a clean subsystem restart, via the implementation of the 7473AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 7474HP) 7475 7476Implemented enhancements to the multithreading support within the 7477debugger 7478to enable improved multithreading debugging and evaluation of the 7479subsystem. 7480(Valery Podrezov) 7481 7482Debugger: Enhanced the Statistics/Memory command to emit the total 7483(maximum) 7484memory used during the execution, as well as the maximum memory consumed 7485by 7486each of the various object types. (Valery Podrezov) 7487 7488Example Code and Data Size: These are the sizes for the OS-independent 7489acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7490debug version of the code includes the debug output trace mechanism and 7491has 7492a much larger code and data size. 7493 7494 Previous Release: 7495 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 7496 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 7497 Current Release: 7498 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7499 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7500 7501 75022) iASL Compiler/Disassembler and Tools: 7503 7504AcpiExec: Implemented a new option (-m) to display full memory use 7505statistics upon subsystem/program termination. (Valery Podrezov) 7506 7507---------------------------------------- 750809 November 2006. Summary of changes for version 20061109: 7509 75101) ACPI CA Core Subsystem: 7511 7512Optimized the Load ASL operator in the case where the source operand is 7513an 7514operation region. Simply map the operation region memory, instead of 7515performing a bytewise read. (Region must be of type SystemMemory, see 7516below.) 7517 7518Fixed the Load ASL operator for the case where the source operand is a 7519region field. A buffer object is also allowed as the source operand. BZ 7520480 7521 7522Fixed a problem where the Load ASL operator allowed the source operand to 7523be 7524an operation region of any type. It is now restricted to regions of type 7525SystemMemory, as per the ACPI specification. BZ 481 7526 7527Additional cleanup and optimizations for the new Table Manager code. 7528 7529AcpiEnable will now fail if all of the required ACPI tables are not 7530loaded 7531(FADT, FACS, DSDT). BZ 477 7532 7533Added #pragma pack(8/4) to acobject.h to ensure that the structures in 7534this 7535header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 7536manually optimized to be aligned and will not work if it is byte-packed. 7537 7538Example Code and Data Size: These are the sizes for the OS-independent 7539acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7540debug version of the code includes the debug output trace mechanism and 7541has 7542a much larger code and data size. 7543 7544 Previous Release: 7545 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 7546 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 7547 Current Release: 7548 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 7549 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 7550 7551 75522) iASL Compiler/Disassembler and Tools: 7553 7554Fixed a problem where the presence of the _OSI predefined control method 7555within complex expressions could cause an internal compiler error. 7556 7557AcpiExec: Implemented full region support for multiple address spaces. 7558SpaceId is now part of the REGION object. BZ 429 7559 7560---------------------------------------- 756111 October 2006. Summary of changes for version 20061011: 7562 75631) ACPI CA Core Subsystem: 7564 7565Completed an AML interpreter performance enhancement for control method 7566execution. Previously a 2-pass parse/execution, control methods are now 7567completely parsed and executed in a single pass. This improves overall 7568interpreter performance by ~25%, reduces code size, and reduces CPU stack 7569use. (Valery Podrezov + interpreter changes in version 20051202 that 7570eliminated namespace loading during the pass one parse.) 7571 7572Implemented _CID support for PCI Root Bridge detection. If the _HID does 7573not 7574match the predefined PCI Root Bridge IDs, the _CID list (if present) is 7575now 7576obtained and also checked for an ID match. 7577 7578Implemented additional support for the PCI _ADR execution: upsearch until 7579a 7580device scope is found before executing _ADR. This allows PCI_Config 7581operation regions to be declared locally within control methods 7582underneath 7583PCI device objects. 7584 7585Fixed a problem with a possible race condition between threads executing 7586AcpiWalkNamespace and the AML interpreter. This condition was removed by 7587modifying AcpiWalkNamespace to (by default) ignore all temporary 7588namespace 7589entries created during any concurrent control method execution. An 7590additional namespace race condition is known to exist between 7591AcpiWalkNamespace and the Load/Unload ASL operators and is still under 7592investigation. 7593 7594Restructured the AML ParseLoop function, breaking it into several 7595subfunctions in order to reduce CPU stack use and improve 7596maintainability. 7597(Mikhail Kouzmich) 7598 7599AcpiGetHandle: Fix for parameter validation to detect invalid 7600combinations 7601of prefix handle and pathname. BZ 478 7602 7603Example Code and Data Size: These are the sizes for the OS-independent 7604acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7605debug version of the code includes the debug output trace mechanism and 7606has 7607a much larger code and data size. 7608 7609 Previous Release: 7610 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7611 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 7612 Current Release: 7613 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 7614 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 7615 76162) iASL Compiler/Disassembler and Tools: 7617 7618Ported the -g option (get local ACPI tables) to the new ACPICA Table 7619Manager 7620to restore original behavior. 7621 7622---------------------------------------- 762327 September 2006. Summary of changes for version 20060927: 7624 76251) ACPI CA Core Subsystem: 7626 7627Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 7628These functions now use a spinlock for mutual exclusion and the interrupt 7629level indication flag is not needed. 7630 7631Fixed a problem with the Global Lock where the lock could appear to be 7632obtained before it is actually obtained. The global lock semaphore was 7633inadvertently created with one unit instead of zero units. (BZ 464) 7634Fiodor 7635Suietov. 7636 7637Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 7638during 7639a read from a buffer or region field. (BZ 458) Fiodor Suietov. 7640 7641Example Code and Data Size: These are the sizes for the OS-independent 7642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7643debug version of the code includes the debug output trace mechanism and 7644has 7645a much larger code and data size. 7646 7647 Previous Release: 7648 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7649 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 7650 Current Release: 7651 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7652 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 7653 7654 76552) iASL Compiler/Disassembler and Tools: 7656 7657Fixed a compilation problem with the pre-defined Resource Descriptor 7658field 7659names where an "object does not exist" error could be incorrectly 7660generated 7661if the parent ResourceTemplate pathname places the template within a 7662different namespace scope than the current scope. (BZ 7212) 7663 7664Fixed a problem where the compiler could hang after syntax errors 7665detected 7666in an ElseIf construct. (BZ 453) 7667 7668Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 7669operator. An incorrect output filename was produced when this parameter 7670was 7671a null string (""). Now, the original input filename is used as the AML 7672output filename, with an ".aml" extension. 7673 7674Implemented a generic batch command mode for the AcpiExec utility 7675(execute 7676any AML debugger command) (Valery Podrezov). 7677 7678---------------------------------------- 767912 September 2006. Summary of changes for version 20060912: 7680 76811) ACPI CA Core Subsystem: 7682 7683Enhanced the implementation of the "serialized mode" of the interpreter 7684(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 7685specified, instead of creating a serialization semaphore per control 7686method, 7687the interpreter lock is simply no longer released before a blocking 7688operation during control method execution. This effectively makes the AML 7689Interpreter single-threaded. The overhead of a semaphore per-method is 7690eliminated. 7691 7692Fixed a regression where an error was no longer emitted if a control 7693method 7694attempts to create 2 objects of the same name. This once again returns 7695AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 7696that 7697will dynamically serialize the control method to possible prevent future 7698errors. (BZ 440) 7699 7700Integrated a fix for a problem with PCI Express HID detection in the PCI 7701Config Space setup procedure. (BZ 7145) 7702 7703Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 7704AcpiHwInitialize function - the FADT registers are now validated when the 7705table is loaded. 7706 7707Added two new warnings during FADT verification - 1) if the FADT is 7708larger 7709than the largest known FADT version, and 2) if there is a mismatch 7710between 7711a 771232-bit block address and the 64-bit X counterpart (when both are non- 7713zero.) 7714 7715Example Code and Data Size: These are the sizes for the OS-independent 7716acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7717debug version of the code includes the debug output trace mechanism and 7718has 7719a much larger code and data size. 7720 7721 Previous Release: 7722 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 7723 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 7724 Current Release: 7725 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7726 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 7727 7728 77292) iASL Compiler/Disassembler and Tools: 7730 7731Fixed a problem with the implementation of the Switch() operator where 7732the 7733temporary variable was declared too close to the actual Switch, instead 7734of 7735at method level. This could cause a problem if the Switch() operator is 7736within a while loop, causing an error on the second iteration. (BZ 460) 7737 7738Disassembler - fix for error emitted for unknown type for target of scope 7739operator. Now, ignore it and continue. 7740 7741Disassembly of an FADT now verifies the input FADT and reports any errors 7742found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 7743 7744Disassembly of raw data buffers with byte initialization data now 7745prefixes 7746each output line with the current buffer offset. 7747 7748Disassembly of ASF! table now includes all variable-length data fields at 7749the end of some of the subtables. 7750 7751The disassembler now emits a comment if a buffer appears to be a 7752ResourceTemplate, but cannot be disassembled as such because the EndTag 7753does 7754not appear at the very end of the buffer. 7755 7756AcpiExec - Added the "-t" command line option to enable the serialized 7757mode 7758of the AML interpreter. 7759 7760---------------------------------------- 776131 August 2006. Summary of changes for version 20060831: 7762 77631) ACPI CA Core Subsystem: 7764 7765Miscellaneous fixes for the Table Manager: 7766- Correctly initialize internal common FADT for all 64-bit "X" fields 7767- Fixed a couple table mapping issues during table load 7768- Fixed a couple alignment issues for IA64 7769- Initialize input array to zero in AcpiInitializeTables 7770- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 7771AcpiGetTableByIndex 7772 7773Change for GPE support: when a "wake" GPE is received, all wake GPEs are 7774now 7775immediately disabled to prevent the waking GPE from firing again and to 7776prevent other wake GPEs from interrupting the wake process. 7777 7778Added the AcpiGpeCount global that tracks the number of processed GPEs, 7779to 7780be used for debugging systems with a large number of ACPI interrupts. 7781 7782Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 7783both the ACPICA headers and the disassembler. 7784 7785Example Code and Data Size: These are the sizes for the OS-independent 7786acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7787debug version of the code includes the debug output trace mechanism and 7788has 7789a much larger code and data size. 7790 7791 Previous Release: 7792 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 7793 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 7794 Current Release: 7795 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 7796 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 7797 7798 77992) iASL Compiler/Disassembler and Tools: 7800 7801Disassembler support for the DMAR ACPI table. 7802 7803---------------------------------------- 780423 August 2006. Summary of changes for version 20060823: 7805 78061) ACPI CA Core Subsystem: 7807 7808The Table Manager component has been completely redesigned and 7809reimplemented. The new design is much simpler, and reduces the overall 7810code 7811and data size of the kernel-resident ACPICA by approximately 5%. Also, it 7812is 7813now possible to obtain the ACPI tables very early during kernel 7814initialization, even before dynamic memory management is initialized. 7815(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 7816 7817Obsolete ACPICA interfaces: 7818 7819- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 7820init 7821time). 7822- AcpiLoadTable: Not needed. 7823- AcpiUnloadTable: Not needed. 7824 7825New ACPICA interfaces: 7826 7827- AcpiInitializeTables: Must be called before the table manager can be 7828used. 7829- AcpiReallocateRootTable: Used to transfer the root table to dynamically 7830allocated memory after it becomes available. 7831- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 7832tables 7833in the RSDT/XSDT. 7834 7835Other ACPICA changes: 7836 7837- AcpiGetTableHeader returns the actual mapped table header, not a copy. 7838Use 7839AcpiOsUnmapMemory to free this mapping. 7840- AcpiGetTable returns the actual mapped table. The mapping is managed 7841internally and must not be deleted by the caller. Use of this interface 7842causes no additional dynamic memory allocation. 7843- AcpiFindRootPointer: Support for physical addressing has been 7844eliminated, 7845it appeared to be unused. 7846- The interface to AcpiOsMapMemory has changed to be consistent with the 7847other allocation interfaces. 7848- The interface to AcpiOsGetRootPointer has changed to eliminate 7849unnecessary 7850parameters. 7851- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 785264- 7853bit platforms. Was previously 64 bits on all platforms. 7854- The interface to the ACPI Global Lock acquire/release macros have 7855changed 7856slightly since ACPICA no longer keeps a local copy of the FACS with a 7857constructed pointer to the actual global lock. 7858 7859Porting to the new table manager: 7860 7861- AcpiInitializeTables: Must be called once, and can be called anytime 7862during the OS initialization process. It allows the host to specify an 7863area 7864of memory to be used to store the internal version of the RSDT/XSDT (root 7865table). This allows the host to access ACPI tables before memory 7866management 7867is initialized and running. 7868- AcpiReallocateRootTable: Can be called after memory management is 7869running 7870to copy the root table to a dynamically allocated array, freeing up the 7871scratch memory specified in the call to AcpiInitializeTables. 7872- AcpiSubsystemInitialize: This existing interface is independent of the 7873Table Manager, and does not have to be called before the Table Manager 7874can 7875be used, it only must be called before the rest of ACPICA can be used. 7876- ACPI Tables: Some changes have been made to the names and structure of 7877the 7878actbl.h and actbl1.h header files and may require changes to existing 7879code. 7880For example, bitfields have been completely removed because of their lack 7881of 7882portability across C compilers. 7883- Update interfaces to the Global Lock acquire/release macros if local 7884versions are used. (see acwin.h) 7885 7886Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 7887 7888New files: tbfind.c 7889 7890Example Code and Data Size: These are the sizes for the OS-independent 7891acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7892debug version of the code includes the debug output trace mechanism and 7893has 7894a much larger code and data size. 7895 7896 Previous Release: 7897 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7898 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7899 Current Release: 7900 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 7901 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 7902 7903 79042) iASL Compiler/Disassembler and Tools: 7905 7906No changes for this release. 7907 7908---------------------------------------- 790921 July 2006. Summary of changes for version 20060721: 7910 79111) ACPI CA Core Subsystem: 7912 7913The full source code for the ASL test suite used to validate the iASL 7914compiler and the ACPICA core subsystem is being released with the ACPICA 7915source for the first time. The source is contained in a separate package 7916and 7917consists of over 1100 files that exercise all ASL/AML operators. The 7918package 7919should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 7920Fiodor 7921Suietov) 7922 7923Completed a new design and implementation for support of the ACPI Global 7924Lock. On the OS side, the global lock is now treated as a standard AML 7925mutex. Previously, multiple OS threads could "acquire" the global lock 7926simultaneously. However, this could cause the BIOS to be starved out of 7927the 7928lock - especially in cases such as the Embedded Controller driver where 7929there is a tight coupling between the OS and the BIOS. 7930 7931Implemented an optimization for the ACPI Global Lock interrupt mechanism. 7932The Global Lock interrupt handler no longer queues the execution of a 7933separate thread to signal the global lock semaphore. Instead, the 7934semaphore 7935is signaled directly from the interrupt handler. 7936 7937Implemented support within the AML interpreter for package objects that 7938contain a larger AML length (package list length) than the package 7939element 7940count. In this case, the length of the package is truncated to match the 7941package element count. Some BIOS code apparently modifies the package 7942length 7943on the fly, and this change supports this behavior. Provides 7944compatibility 7945with the MS AML interpreter. (With assistance from Fiodor Suietov) 7946 7947Implemented a temporary fix for the BankValue parameter of a Bank Field 7948to 7949support all constant values, now including the Zero and One opcodes. 7950Evaluation of this parameter must eventually be converted to a full 7951TermArg 7952evaluation. A not-implemented error is now returned (temporarily) for 7953non- 7954constant values for this parameter. 7955 7956Fixed problem reports (Fiodor Suietov) integrated: 7957- Fix for premature object deletion after CopyObject on Operation Region 7958(BZ 7959350) 7960 7961Example Code and Data Size: These are the sizes for the OS-independent 7962acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7963debug version of the code includes the debug output trace mechanism and 7964has 7965a much larger code and data size. 7966 7967 Previous Release: 7968 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 7969 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 7970 Current Release: 7971 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7972 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7973 7974 79752) iASL Compiler/Disassembler and Tools: 7976 7977No changes for this release. 7978 7979---------------------------------------- 798007 July 2006. Summary of changes for version 20060707: 7981 79821) ACPI CA Core Subsystem: 7983 7984Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 7985that do not allow the initialization of address pointers within packed 7986structures - even though the hardware itself may support misaligned 7987transfers. Some of the debug data structures are packed by default to 7988minimize size. 7989 7990Added an error message for the case where AcpiOsGetThreadId() returns 7991zero. 7992A non-zero value is required by the core ACPICA code to ensure the proper 7993operation of AML mutexes and recursive control methods. 7994 7995The DSDT is now the only ACPI table that determines whether the AML 7996interpreter is in 32-bit or 64-bit mode. Not really a functional change, 7997but 7998the hooks for per-table 32/64 switching have been removed from the code. 7999A 8000clarification to the ACPI specification is forthcoming in ACPI 3.0B. 8001 8002Fixed a possible leak of an OwnerID in the error path of 8003AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 8004deletion to a single place in AcpiTbUninstallTable to correct possible 8005leaks 8006when using the AcpiTbDeleteTablesByType interface (with assistance from 8007Lance Ortiz.) 8008 8009Fixed a problem with Serialized control methods where the semaphore 8010associated with the method could be over-signaled after multiple method 8011invocations. 8012 8013Fixed two issues with the locking of the internal namespace data 8014structure. 8015Both the Unload() operator and AcpiUnloadTable interface now lock the 8016namespace during the namespace deletion associated with the table unload 8017(with assistance from Linn Crosetto.) 8018 8019Fixed problem reports (Valery Podrezov) integrated: 8020- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 8021 8022Fixed problem reports (Fiodor Suietov) integrated: 8023- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 8024- On Address Space handler deletion, needless deactivation call (BZ 374) 8025- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 8026375) 8027- Possible memory leak, Notify sub-objects of Processor, Power, 8028ThermalZone 8029(BZ 376) 8030- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 8031- Minimum Length of RSDT should be validated (BZ 379) 8032- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 8033Handler (BZ (380) 8034- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 8035loaded 8036(BZ 381) 8037 8038Example Code and Data Size: These are the sizes for the OS-independent 8039acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8040debug version of the code includes the debug output trace mechanism and 8041has 8042a much larger code and data size. 8043 8044 Previous Release: 8045 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8046 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8047 Current Release: 8048 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8049 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8050 8051 80522) iASL Compiler/Disassembler and Tools: 8053 8054Fixed problem reports: 8055Compiler segfault when ASL contains a long (>1024) String declaration (BZ 8056436) 8057 8058---------------------------------------- 805923 June 2006. Summary of changes for version 20060623: 8060 80611) ACPI CA Core Subsystem: 8062 8063Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 8064allows the type to be customized to the host OS for improved efficiency 8065(since a spinlock is usually a very small object.) 8066 8067Implemented support for "ignored" bits in the ACPI registers. According 8068to 8069the ACPI specification, these bits should be preserved when writing the 8070registers via a read/modify/write cycle. There are 3 bits preserved in 8071this 8072manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 8073 8074Implemented the initial deployment of new OSL mutex interfaces. Since 8075some 8076host operating systems have separate mutex and semaphore objects, this 8077feature was requested. The base code now uses mutexes (and the new mutex 8078interfaces) wherever a binary semaphore was used previously. However, for 8079the current release, the mutex interfaces are defined as macros to map 8080them 8081to the existing semaphore interfaces. Therefore, no OSL changes are 8082required 8083at this time. (See acpiosxf.h) 8084 8085Fixed several problems with the support for the control method SyncLevel 8086parameter. The SyncLevel now works according to the ACPI specification 8087and 8088in concert with the Mutex SyncLevel parameter, since the current 8089SyncLevel 8090is a property of the executing thread. Mutual exclusion for control 8091methods 8092is now implemented with a mutex instead of a semaphore. 8093 8094Fixed three instances of the use of the C shift operator in the bitfield 8095support code (exfldio.c) to avoid the use of a shift value larger than 8096the 8097target data width. The behavior of C compilers is undefined in this case 8098and 8099can cause unpredictable results, and therefore the case must be detected 8100and 8101avoided. (Fiodor Suietov) 8102 8103Added an info message whenever an SSDT or OEM table is loaded dynamically 8104via the Load() or LoadTable() ASL operators. This should improve 8105debugging 8106capability since it will show exactly what tables have been loaded 8107(beyond 8108the tables present in the RSDT/XSDT.) 8109 8110Example Code and Data Size: These are the sizes for the OS-independent 8111acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8112debug version of the code includes the debug output trace mechanism and 8113has 8114a much larger code and data size. 8115 8116 Previous Release: 8117 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8118 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8119 Current Release: 8120 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8121 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8122 8123 81242) iASL Compiler/Disassembler and Tools: 8125 8126No changes for this release. 8127 8128---------------------------------------- 812908 June 2006. Summary of changes for version 20060608: 8130 81311) ACPI CA Core Subsystem: 8132 8133Converted the locking mutex used for the ACPI hardware to a spinlock. 8134This 8135change should eliminate all problems caused by attempting to acquire a 8136semaphore at interrupt level, and it means that all ACPICA external 8137interfaces that directly access the ACPI hardware can be safely called 8138from 8139interrupt level. OSL code that implements the semaphore interfaces should 8140be 8141able to eliminate any workarounds for being called at interrupt level. 8142 8143Fixed a regression introduced in 20060526 where the ACPI device 8144initialization could be prematurely aborted with an AE_NOT_FOUND if a 8145device 8146did not have an optional _INI method. 8147 8148Fixed an IndexField issue where a write to the Data Register should be 8149limited in size to the AccessSize (width) of the IndexField itself. (BZ 8150433, 8151Fiodor Suietov) 8152 8153Fixed problem reports (Valery Podrezov) integrated: 8154- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 8155 8156Fixed problem reports (Fiodor Suietov) integrated: 8157- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 8158 8159Removed four global mutexes that were obsolete and were no longer being 8160used. 8161 8162Example Code and Data Size: These are the sizes for the OS-independent 8163acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8164debug version of the code includes the debug output trace mechanism and 8165has 8166a much larger code and data size. 8167 8168 Previous Release: 8169 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 8170 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 8171 Current Release: 8172 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8173 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8174 8175 81762) iASL Compiler/Disassembler and Tools: 8177 8178Fixed a fault when using -g option (get tables from registry) on Windows 8179machines. 8180 8181Fixed problem reports integrated: 8182- Generate error if CreateField NumBits parameter is zero. (BZ 405) 8183- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 8184Suietov) 8185- Global table revision override (-r) is ignored (BZ 413) 8186 8187---------------------------------------- 818826 May 2006. Summary of changes for version 20060526: 8189 81901) ACPI CA Core Subsystem: 8191 8192Restructured, flattened, and simplified the internal interfaces for 8193namespace object evaluation - resulting in smaller code, less CPU stack 8194use, 8195and fewer interfaces. (With assistance from Mikhail Kouzmich) 8196 8197Fixed a problem with the CopyObject operator where the first parameter 8198was 8199not typed correctly for the parser, interpreter, compiler, and 8200disassembler. 8201Caused various errors and unexpected behavior. 8202 8203Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 8204produced incorrect results with some C compilers. Since the behavior of C 8205compilers when the shift value is larger than the datatype width is 8206apparently not well defined, the interpreter now detects this condition 8207and 8208simply returns zero as expected in all such cases. (BZ 395) 8209 8210Fixed problem reports (Valery Podrezov) integrated: 8211- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 8212- Allow interpreter to handle nested method declarations (BZ 5361) 8213 8214Fixed problem reports (Fiodor Suietov) integrated: 8215- AcpiTerminate doesn't free debug memory allocation list objects (BZ 8216355) 8217- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 8218356) 8219- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 8220- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 8221- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 8222- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 8223- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 8224- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 8225- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 8226365) 8227- Status of the Global Initialization Handler call not used (BZ 366) 8228- Incorrect object parameter to Global Initialization Handler (BZ 367) 8229 8230Example Code and Data Size: These are the sizes for the OS-independent 8231acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8232debug version of the code includes the debug output trace mechanism and 8233has 8234a much larger code and data size. 8235 8236 Previous Release: 8237 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8238 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8239 Current Release: 8240 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 8241 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 8242 8243 82442) iASL Compiler/Disassembler and Tools: 8245 8246Modified the parser to allow the names IO, DMA, and IRQ to be used as 8247namespace identifiers with no collision with existing resource descriptor 8248macro names. This provides compatibility with other ASL compilers and is 8249most useful for disassembly/recompilation of existing tables without 8250parse 8251errors. (With assistance from Thomas Renninger) 8252 8253Disassembler: fixed an incorrect disassembly problem with the 8254DataTableRegion and CopyObject operators. Fixed a possible fault during 8255disassembly of some Alias operators. 8256 8257---------------------------------------- 825812 May 2006. Summary of changes for version 20060512: 8259 82601) ACPI CA Core Subsystem: 8261 8262Replaced the AcpiOsQueueForExecution interface with a new interface named 8263AcpiOsExecute. The major difference is that the new interface does not 8264have 8265a Priority parameter, this appeared to be useless and has been replaced 8266by 8267a 8268Type parameter. The Type tells the host what type of execution is being 8269requested, such as global lock handler, notify handler, GPE handler, etc. 8270This allows the host to queue and execute the request as appropriate for 8271the 8272request type, possibly using different work queues and different 8273priorities 8274for the various request types. This enables fixes for multithreading 8275deadlock problems such as BZ #5534, and will require changes to all 8276existing 8277OS interface layers. (Alexey Starikovskiy and Bob Moore) 8278 8279Fixed a possible memory leak associated with the support for the so- 8280called 8281"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 8282Suietov) 8283 8284Fixed a problem with the Load() operator where a table load from an 8285operation region could overwrite an internal table buffer by up to 7 8286bytes 8287and cause alignment faults on IPF systems. (With assistance from Luming 8288Yu) 8289 8290Example Code and Data Size: These are the sizes for the OS-independent 8291acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8292debug version of the code includes the debug output trace mechanism and 8293has 8294a much larger code and data size. 8295 8296 Previous Release: 8297 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8298 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8299 Current Release: 8300 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8301 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8302 8303 8304 83052) iASL Compiler/Disassembler and Tools: 8306 8307Disassembler: Implemented support to cross reference the internal 8308namespace 8309and automatically generate ASL External() statements for symbols not 8310defined 8311within the current table being disassembled. This will simplify the 8312disassembly and recompilation of interdependent tables such as SSDTs 8313since 8314these statements will no longer have to be added manually. 8315 8316Disassembler: Implemented experimental support to automatically detect 8317invocations of external control methods and generate appropriate 8318External() 8319statements. This is problematic because the AML cannot be correctly 8320parsed 8321until the number of arguments for each control method is known. 8322Currently, 8323standalone method invocations and invocations as the source operand of a 8324Store() statement are supported. 8325 8326Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 8327LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 8328LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 8329more readable and likely closer to the original ASL source. 8330 8331---------------------------------------- 833221 April 2006. Summary of changes for version 20060421: 8333 83341) ACPI CA Core Subsystem: 8335 8336Removed a device initialization optimization introduced in 20051216 where 8337the _STA method was not run unless an _INI was also present for the same 8338device. This optimization could cause problems because it could allow 8339_INI 8340methods to be run within a not-present device subtree. (If a not-present 8341device had no _INI, _STA would not be run, the not-present status would 8342not 8343be discovered, and the children of the device would be incorrectly 8344traversed.) 8345 8346Implemented a new _STA optimization where namespace subtrees that do not 8347contain _INI are identified and ignored during device initialization. 8348Selectively running _STA can significantly improve boot time on large 8349machines (with assistance from Len Brown.) 8350 8351Implemented support for the device initialization case where the returned 8352_STA flags indicate a device not-present but functioning. In this case, 8353_INI 8354is not run, but the device children are examined for presence, as per the 8355ACPI specification. 8356 8357Implemented an additional change to the IndexField support in order to 8358conform to MS behavior. The value written to the Index Register is not 8359simply a byte offset, it is a byte offset in units of the access width of 8360the parent Index Field. (Fiodor Suietov) 8361 8362Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 8363interface is called during the creation of all AML operation regions, and 8364allows the host OS to exert control over what addresses it will allow the 8365AML code to access. Operation Regions whose addresses are disallowed will 8366cause a runtime exception when they are actually accessed (will not 8367affect 8368or abort table loading.) See oswinxf or osunixxf for an example 8369implementation. 8370 8371Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 8372interface allows the host OS to match the various "optional" 8373interface/behavior strings for the _OSI predefined control method as 8374appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 8375for an example implementation. 8376 8377Restructured and corrected various problems in the exception handling 8378code 8379paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 8380(with assistance from Takayoshi Kochi.) 8381 8382Modified the Linux source converter to ignore quoted string literals 8383while 8384converting identifiers from mixed to lower case. This will correct 8385problems 8386with the disassembler and other areas where such strings must not be 8387modified. 8388 8389The ACPI_FUNCTION_* macros no longer require quotes around the function 8390name. This allows the Linux source converter to convert the names, now 8391that 8392the converter ignores quoted strings. 8393 8394Example Code and Data Size: These are the sizes for the OS-independent 8395acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8396debug version of the code includes the debug output trace mechanism and 8397has 8398a much larger code and data size. 8399 8400 Previous Release: 8401 8402 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 8403 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 8404 Current Release: 8405 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8406 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8407 8408 84092) iASL Compiler/Disassembler and Tools: 8410 8411Implemented 3 new warnings for iASL, and implemented multiple warning 8412levels 8413(w2 flag). 8414 84151) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 8416not 8417WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 8418check for the possible timeout, a warning is issued. 8419 84202) Useless operators: If an ASL operator does not specify an optional 8421target 8422operand and it also does not use the function return value from the 8423operator, a warning is issued since the operator effectively does 8424nothing. 8425 84263) Unreferenced objects: If a namespace object is created, but never 8427referenced, a warning is issued. This is a warning level 2 since there 8428are 8429cases where this is ok, such as when a secondary table is loaded that 8430uses 8431the unreferenced objects. Even so, care is taken to only flag objects 8432that 8433don't look like they will ever be used. For example, the reserved methods 8434(starting with an underscore) are usually not referenced because it is 8435expected that the OS will invoke them. 8436 8437---------------------------------------- 843831 March 2006. Summary of changes for version 20060331: 8439 84401) ACPI CA Core Subsystem: 8441 8442Implemented header file support for the following additional ACPI tables: 8443ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 8444support, 8445all current and known ACPI tables are now defined in the ACPICA headers 8446and 8447are available for use by device drivers and other software. 8448 8449Implemented support to allow tables that contain ACPI names with invalid 8450characters to be loaded. Previously, this would cause the table load to 8451fail, but since there are several known cases of such tables on existing 8452machines, this change was made to enable ACPI support for them. Also, 8453this 8454matches the behavior of the Microsoft ACPI implementation. 8455 8456Fixed a couple regressions introduced during the memory optimization in 8457the 845820060317 release. The namespace node definition required additional 8459reorganization and an internal datatype that had been changed to 8-bit 8460was 8461restored to 32-bit. (Valery Podrezov) 8462 8463Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 8464could be passed through to AcpiOsReleaseObject which is unexpected. Such 8465null pointers are now trapped and ignored, matching the behavior of the 8466previous implementation before the deployment of AcpiOsReleaseObject. 8467(Valery Podrezov, Fiodor Suietov) 8468 8469Fixed a memory mapping leak during the deletion of a SystemMemory 8470operation 8471region where a cached memory mapping was not deleted. This became a 8472noticeable problem for operation regions that are defined within 8473frequently 8474used control methods. (Dana Meyers) 8475 8476Reorganized the ACPI table header files into two main files: one for the 8477ACPI tables consumed by the ACPICA core, and another for the 8478miscellaneous 8479ACPI tables that are consumed by the drivers and other software. The 8480various 8481FADT definitions were merged into one common section and three different 8482tables (ACPI 1.0, 1.0+, and 2.0) 8483 8484Example Code and Data Size: These are the sizes for the OS-independent 8485acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8486debug version of the code includes the debug output trace mechanism and 8487has 8488a much larger code and data size. 8489 8490 Previous Release: 8491 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 8492 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 8493 Current Release: 8494 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 8495 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 8496 8497 84982) iASL Compiler/Disassembler and Tools: 8499 8500Disassembler: Implemented support to decode and format all non-AML ACPI 8501tables (tables other than DSDTs and SSDTs.) This includes the new tables 8502added to the ACPICA headers, therefore all current and known ACPI tables 8503are 8504supported. 8505 8506Disassembler: The change to allow ACPI names with invalid characters also 8507enables the disassembly of such tables. Invalid characters within names 8508are 8509changed to '*' to make the name printable; the iASL compiler will still 8510generate an error for such names, however, since this is an invalid ACPI 8511character. 8512 8513Implemented an option for AcpiXtract (-a) to extract all tables found in 8514the 8515input file. The default invocation extracts only the DSDTs and SSDTs. 8516 8517Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 8518makefile for the AcpiXtract utility. 8519 8520---------------------------------------- 852117 March 2006. Summary of changes for version 20060317: 8522 85231) ACPI CA Core Subsystem: 8524 8525Implemented the use of a cache object for all internal namespace nodes. 8526Since there are about 1000 static nodes in a typical system, this will 8527decrease memory use for cache implementations that minimize per- 8528allocation 8529overhead (such as a slab allocator.) 8530 8531Removed the reference count mechanism for internal namespace nodes, since 8532it 8533was deemed unnecessary. This reduces the size of each namespace node by 8534about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 8535case, 8536and 32 bytes for the 64-bit case. 8537 8538Optimized several internal data structures to reduce object size on 64- 8539bit 8540platforms by packing data within the 64-bit alignment. This includes the 8541frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 8542instances corresponding to the namespace objects. 8543 8544Added two new strings for the predefined _OSI method: "Windows 2001.1 8545SP1" 8546and "Windows 2006". 8547 8548Split the allocation tracking mechanism out to a separate file, from 8549utalloc.c to uttrack.c. This mechanism appears to be only useful for 8550application-level code. Kernels may wish to not include uttrack.c in 8551distributions. 8552 8553Removed all remnants of the obsolete ACPI_REPORT_* macros and the 8554associated 8555code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 8556macros.) 8557 8558Code and Data Size: These are the sizes for the acpica.lib produced by 8559the 8560Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 8561ACPI 8562driver or OSPM code. The debug version of the code includes the debug 8563output 8564trace mechanism and has a much larger code and data size. Note that these 8565values will vary depending on the efficiency of the compiler and the 8566compiler options used during generation. 8567 8568 Previous Release: 8569 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8570 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 8571 Current Release: 8572 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 8573 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 8574 8575 85762) iASL Compiler/Disassembler and Tools: 8577 8578Implemented an ANSI C version of the acpixtract utility. This version 8579will 8580automatically extract the DSDT and all SSDTs from the input acpidump text 8581file and dump the binary output to separate files. It can also display a 8582summary of the input file including the headers for each table found and 8583will extract any single ACPI table, with any signature. (See 8584source/tools/acpixtract) 8585 8586---------------------------------------- 858710 March 2006. Summary of changes for version 20060310: 8588 85891) ACPI CA Core Subsystem: 8590 8591Tagged all external interfaces to the subsystem with the new 8592ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 8593assist 8594kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 8595macro. The default definition is NULL. 8596 8597Added the ACPI_THREAD_ID type for the return value from 8598AcpiOsGetThreadId. 8599This allows the host to define this as necessary to simplify kernel 8600integration. The default definition is ACPI_NATIVE_UINT. 8601 8602Fixed two interpreter problems related to error processing, the deletion 8603of 8604objects, and placing invalid pointers onto the internal operator result 8605stack. BZ 6028, 6151 (Valery Podrezov) 8606 8607Increased the reference count threshold where a warning is emitted for 8608large 8609reference counts in order to eliminate unnecessary warnings on systems 8610with 8611large namespaces (especially 64-bit.) Increased the value from 0x400 to 86120x800. 8613 8614Due to universal disagreement as to the meaning of the 'c' in the 8615calloc() 8616function, the ACPI_MEM_CALLOCATE macro has been renamed to 8617ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 8618ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 8619ACPI_FREE. 8620 8621Code and Data Size: These are the sizes for the acpica.lib produced by 8622the 8623Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 8624ACPI 8625driver or OSPM code. The debug version of the code includes the debug 8626output 8627trace mechanism and has a much larger code and data size. Note that these 8628values will vary depending on the efficiency of the compiler and the 8629compiler options used during generation. 8630 8631 Previous Release: 8632 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 8633 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 8634 Current Release: 8635 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8636 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 8637 8638 86392) iASL Compiler/Disassembler: 8640 8641Disassembler: implemented support for symbolic resource descriptor 8642references. If a CreateXxxxField operator references a fixed offset 8643within 8644a 8645resource descriptor, a name is assigned to the descriptor and the offset 8646is 8647translated to the appropriate resource tag and pathname. The addition of 8648this support brings the disassembled code very close to the original ASL 8649source code and helps eliminate run-time errors when the disassembled 8650code 8651is modified (and recompiled) in such a way as to invalidate the original 8652fixed offsets. 8653 8654Implemented support for a Descriptor Name as the last parameter to the 8655ASL 8656Register() macro. This parameter was inadvertently left out of the ACPI 8657specification, and will be added for ACPI 3.0b. 8658 8659Fixed a problem where the use of the "_OSI" string (versus the full path 8660"\_OSI") caused an internal compiler error. ("No back ptr to op") 8661 8662Fixed a problem with the error message that occurs when an invalid string 8663is 8664used for a _HID object (such as one with an embedded asterisk: 8665"*PNP010A".) 8666The correct message is now displayed. 8667 8668---------------------------------------- 866917 February 2006. Summary of changes for version 20060217: 8670 86711) ACPI CA Core Subsystem: 8672 8673Implemented a change to the IndexField support to match the behavior of 8674the 8675Microsoft AML interpreter. The value written to the Index register is now 8676a 8677byte offset, no longer an index based upon the width of the Data 8678register. 8679This should fix IndexField problems seen on some machines where the Data 8680register is not exactly one byte wide. The ACPI specification will be 8681clarified on this point. 8682 8683Fixed a problem where several resource descriptor types could overrun the 8684internal descriptor buffer due to size miscalculation: VendorShort, 8685VendorLong, and Interrupt. This was noticed on IA64 machines, but could 8686affect all platforms. 8687 8688Fixed a problem where individual resource descriptors were misaligned 8689within 8690the internal buffer, causing alignment faults on IA64 platforms. 8691 8692Code and Data Size: These are the sizes for the acpica.lib produced by 8693the 8694Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 8695ACPI 8696driver or OSPM code. The debug version of the code includes the debug 8697output 8698trace mechanism and has a much larger code and data size. Note that these 8699values will vary depending on the efficiency of the compiler and the 8700compiler options used during generation. 8701 8702 Previous Release: 8703 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8704 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 8705 Current Release: 8706 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 8707 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 8708 8709 87102) iASL Compiler/Disassembler: 8711 8712Implemented support for new reserved names: _WDG and _WED are Microsoft 8713extensions for Windows Instrumentation Management, _TDL is a new ACPI- 8714defined method (Throttling Depth Limit.) 8715 8716Fixed a problem where a zero-length VendorShort or VendorLong resource 8717descriptor was incorrectly emitted as a descriptor of length one. 8718 8719---------------------------------------- 872010 February 2006. Summary of changes for version 20060210: 8721 87221) ACPI CA Core Subsystem: 8723 8724Removed a couple of extraneous ACPI_ERROR messages that appeared during 8725normal execution. These became apparent after the conversion from 8726ACPI_DEBUG_PRINT. 8727 8728Fixed a problem where the CreateField operator could hang if the BitIndex 8729or 8730NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 8731 8732Fixed a problem where a DeRefOf operation on a buffer object incorrectly 8733failed with an exception. This also fixes a couple of related RefOf and 8734DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 8735 8736Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 8737of 8738AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 8739BZ 87405480) 8741 8742Implemented a memory cleanup at the end of the execution of each 8743iteration 8744of an AML While() loop, preventing the accumulation of outstanding 8745objects. 8746(Valery Podrezov, BZ 5427) 8747 8748Eliminated a chunk of duplicate code in the object resolution code. 8749(Valery 8750Podrezov, BZ 5336) 8751 8752Fixed several warnings during the 64-bit code generation. 8753 8754The AcpiSrc source code conversion tool now inserts one line of 8755whitespace 8756after an if() statement that is followed immediately by a comment, 8757improving 8758readability of the Linux code. 8759 8760Code and Data Size: The current and previous library sizes for the core 8761subsystem are shown below. These are the code and data sizes for the 8762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8763These 8764values do not include any ACPI driver or OSPM code. The debug version of 8765the 8766code includes the debug output trace mechanism and has a much larger code 8767and data size. Note that these values will vary depending on the 8768efficiency 8769of the compiler and the compiler options used during generation. 8770 8771 Previous Release: 8772 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 8773 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 8774 Current Release: 8775 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8776 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 8777 8778 87792) iASL Compiler/Disassembler: 8780 8781Fixed a problem with the disassembly of a BankField operator with a 8782complex 8783expression for the BankValue parameter. 8784 8785---------------------------------------- 878627 January 2006. Summary of changes for version 20060127: 8787 87881) ACPI CA Core Subsystem: 8789 8790Implemented support in the Resource Manager to allow unresolved 8791namestring 8792references within resource package objects for the _PRT method. This 8793support 8794is in addition to the previously implemented unresolved reference support 8795within the AML parser. If the interpreter slack mode is enabled, these 8796unresolved references will be passed through to the caller as a NULL 8797package 8798entry. 8799 8800Implemented and deployed new macros and functions for error and warning 8801messages across the subsystem. These macros are simpler and generate less 8802code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 8803ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 8804macros remain defined to allow ACPI drivers time to migrate to the new 8805macros. 8806 8807Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 8808the 8809Acquire/Release Lock OSL interfaces. 8810 8811Fixed a problem where Alias ASL operators are sometimes not correctly 8812resolved, in both the interpreter and the iASL compiler. 8813 8814Fixed several problems with the implementation of the 8815ConcatenateResTemplate 8816ASL operator. As per the ACPI specification, zero length buffers are now 8817treated as a single EndTag. One-length buffers always cause a fatal 8818exception. Non-zero length buffers that do not end with a full 2-byte 8819EndTag 8820cause a fatal exception. 8821 8822Fixed a possible structure overwrite in the AcpiGetObjectInfo external 8823interface. (With assistance from Thomas Renninger) 8824 8825Code and Data Size: The current and previous library sizes for the core 8826subsystem are shown below. These are the code and data sizes for the 8827acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8828These 8829values do not include any ACPI driver or OSPM code. The debug version of 8830the 8831code includes the debug output trace mechanism and has a much larger code 8832and data size. Note that these values will vary depending on the 8833efficiency 8834of the compiler and the compiler options used during generation. 8835 8836 Previous Release: 8837 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 8838 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 8839 Current Release: 8840 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 8841 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 8842 8843 88442) iASL Compiler/Disassembler: 8845 8846Fixed an internal error that was generated for any forward references to 8847ASL 8848Alias objects. 8849 8850---------------------------------------- 885113 January 2006. Summary of changes for version 20060113: 8852 88531) ACPI CA Core Subsystem: 8854 8855Added 2006 copyright to all module headers and signons. This affects 8856virtually every file in the ACPICA core subsystem, iASL compiler, and the 8857utilities. 8858 8859Enhanced the ACPICA error reporting in order to simplify user migration 8860to 8861the non-debug version of ACPICA. Replaced all instances of the 8862ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 8863debug 8864levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 8865respectively. This preserves all error and warning messages in the non- 8866debug 8867version of the ACPICA code (this has been referred to as the "debug lite" 8868option.) Over 200 cases were converted to create a total of over 380 8869error/warning messages across the ACPICA code. This increases the code 8870and 8871data size of the default non-debug version of the code somewhat (about 887213K), 8873but all error/warning reporting may be disabled if desired (and code 8874eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 8875configuration option. The size of the debug version of ACPICA remains 8876about 8877the same. 8878 8879Fixed a memory leak within the AML Debugger "Set" command. One object was 8880not properly deleted for every successful invocation of the command. 8881 8882Code and Data Size: The current and previous library sizes for the core 8883subsystem are shown below. These are the code and data sizes for the 8884acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8885These 8886values do not include any ACPI driver or OSPM code. The debug version of 8887the 8888code includes the debug output trace mechanism and has a much larger code 8889and data size. Note that these values will vary depending on the 8890efficiency 8891of the compiler and the compiler options used during generation. 8892 8893 Previous Release: 8894 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8895 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8896 Current Release: 8897 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 8898 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 8899 8900 89012) iASL Compiler/Disassembler: 8902 8903The compiler now officially supports the ACPI 3.0a specification that was 8904released on December 30, 2005. (Specification is available at 8905www.acpi.info) 8906 8907---------------------------------------- 890816 December 2005. Summary of changes for version 20051216: 8909 89101) ACPI CA Core Subsystem: 8911 8912Implemented optional support to allow unresolved names within ASL Package 8913objects. A null object is inserted in the package when a named reference 8914cannot be located in the current namespace. Enabled via the interpreter 8915slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 8916machines 8917that contain such code. 8918 8919Implemented an optimization to the initialization sequence that can 8920improve 8921boot time. During ACPI device initialization, the _STA method is now run 8922if 8923and only if the _INI method exists. The _STA method is used to determine 8924if 8925the device is present; An _INI can only be run if _STA returns present, 8926but 8927it is a waste of time to run the _STA method if the _INI does not exist. 8928(Prototype and assistance from Dong Wei) 8929 8930Implemented use of the C99 uintptr_t for the pointer casting macros if it 8931is 8932available in the current compiler. Otherwise, the default (void *) cast 8933is 8934used as before. 8935 8936Fixed some possible memory leaks found within the execution path of the 8937Break, Continue, If, and CreateField operators. (Valery Podrezov) 8938 8939Fixed a problem introduced in the 20051202 release where an exception is 8940generated during method execution if a control method attempts to declare 8941another method. 8942 8943Moved resource descriptor string constants that are used by both the AML 8944disassembler and AML debugger to the common utilities directory so that 8945these components are independent. 8946 8947Implemented support in the AcpiExec utility (-e switch) to globally 8948ignore 8949exceptions during control method execution (method is not aborted.) 8950 8951Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 8952generation. 8953 8954Code and Data Size: The current and previous library sizes for the core 8955subsystem are shown below. These are the code and data sizes for the 8956acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8957These 8958values do not include any ACPI driver or OSPM code. The debug version of 8959the 8960code includes the debug output trace mechanism and has a much larger code 8961and data size. Note that these values will vary depending on the 8962efficiency 8963of the compiler and the compiler options used during generation. 8964 8965 Previous Release: 8966 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8967 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 8968 Current Release: 8969 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8970 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8971 8972 89732) iASL Compiler/Disassembler: 8974 8975Fixed a problem where a CPU stack overflow fault could occur if a 8976recursive 8977method call was made from within a Return statement. 8978 8979---------------------------------------- 898002 December 2005. Summary of changes for version 20051202: 8981 89821) ACPI CA Core Subsystem: 8983 8984Modified the parsing of control methods to no longer create namespace 8985objects during the first pass of the parse. Objects are now created only 8986during the execute phase, at the moment the namespace creation operator 8987is 8988encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 8989This 8990should eliminate ALREADY_EXISTS exceptions seen on some machines where 8991reentrant control methods are protected by an AML mutex. The mutex will 8992now 8993correctly block multiple threads from attempting to create the same 8994object 8995more than once. 8996 8997Increased the number of available Owner Ids for namespace object tracking 8998from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 8999on 9000some machines with a large number of ACPI tables (either static or 9001dynamic). 9002 9003Fixed a problem with the AcpiExec utility where a fault could occur when 9004the 9005-b switch (batch mode) is used. 9006 9007Enhanced the namespace dump routine to output the owner ID for each 9008namespace object. 9009 9010Code and Data Size: The current and previous library sizes for the core 9011subsystem are shown below. These are the code and data sizes for the 9012acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9013These 9014values do not include any ACPI driver or OSPM code. The debug version of 9015the 9016code includes the debug output trace mechanism and has a much larger code 9017and data size. Note that these values will vary depending on the 9018efficiency 9019of the compiler and the compiler options used during generation. 9020 9021 Previous Release: 9022 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9023 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9024 Current Release: 9025 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9026 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 9027 9028 90292) iASL Compiler/Disassembler: 9030 9031Fixed a parse error during compilation of certain Switch/Case constructs. 9032To 9033simplify the parse, the grammar now allows for multiple Default 9034statements 9035and this error is now detected and flagged during the analysis phase. 9036 9037Disassembler: The disassembly now includes the contents of the original 9038table header within a comment at the start of the file. This includes the 9039name and version of the original ASL compiler. 9040 9041---------------------------------------- 904217 November 2005. Summary of changes for version 20051117: 9043 90441) ACPI CA Core Subsystem: 9045 9046Fixed a problem in the AML parser where the method thread count could be 9047decremented below zero if any errors occurred during the method parse 9048phase. 9049This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 9050machines. 9051This also fixed a related regression with the mechanism that detects and 9052corrects methods that cannot properly handle reentrancy (related to the 9053deployment of the new OwnerId mechanism.) 9054 9055Eliminated the pre-parsing of control methods (to detect errors) during 9056table load. Related to the problem above, this was causing unwind issues 9057if 9058any errors occurred during the parse, and it seemed to be overkill. A 9059table 9060load should not be aborted if there are problems with any single control 9061method, thus rendering this feature rather pointless. 9062 9063Fixed a problem with the new table-driven resource manager where an 9064internal 9065buffer overflow could occur for small resource templates. 9066 9067Implemented a new external interface, AcpiGetVendorResource. This 9068interface 9069will find and return a vendor-defined resource descriptor within a _CRS 9070or 9071_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 9072Helgaas. 9073 9074Removed the length limit (200) on string objects as per the upcoming ACPI 90753.0A specification. This affects the following areas of the interpreter: 90761) 9077any implicit conversion of a Buffer to a String, 2) a String object 9078result 9079of the ASL Concatentate operator, 3) the String object result of the ASL 9080ToString operator. 9081 9082Fixed a problem in the Windows OS interface layer (OSL) where a 9083WAIT_FOREVER 9084on a semaphore object would incorrectly timeout. This allows the 9085multithreading features of the AcpiExec utility to work properly under 9086Windows. 9087 9088Updated the Linux makefiles for the iASL compiler and AcpiExec to include 9089the recently added file named "utresrc.c". 9090 9091Code and Data Size: The current and previous library sizes for the core 9092subsystem are shown below. These are the code and data sizes for the 9093acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9094These 9095values do not include any ACPI driver or OSPM code. The debug version of 9096the 9097code includes the debug output trace mechanism and has a much larger code 9098and data size. Note that these values will vary depending on the 9099efficiency 9100of the compiler and the compiler options used during generation. 9101 9102 Previous Release: 9103 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9104 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9105 Current Release: 9106 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9107 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9108 9109 91102) iASL Compiler/Disassembler: 9111 9112Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 9113specification. For the iASL compiler, this means that string literals 9114within 9115the source ASL can be of any length. 9116 9117Enhanced the listing output to dump the AML code for resource descriptors 9118immediately after the ASL code for each descriptor, instead of in a block 9119at 9120the end of the entire resource template. 9121 9122Enhanced the compiler debug output to dump the entire original parse tree 9123constructed during the parse phase, before any transforms are applied to 9124the 9125tree. The transformed tree is dumped also. 9126 9127---------------------------------------- 912802 November 2005. Summary of changes for version 20051102: 9129 91301) ACPI CA Core Subsystem: 9131 9132Modified the subsystem initialization sequence to improve GPE support. 9133The 9134GPE initialization has been split into two parts in order to defer 9135execution 9136of the _PRW methods (Power Resources for Wake) until after the hardware 9137is 9138fully initialized and the SCI handler is installed. This allows the _PRW 9139methods to access fields protected by the Global Lock. This will fix 9140systems 9141where a NO_GLOBAL_LOCK exception has been seen during initialization. 9142 9143Converted the ACPI internal object disassemble and display code within 9144the 9145AML debugger to fully table-driven operation, reducing code size and 9146increasing maintainability. 9147 9148Fixed a regression with the ConcatenateResTemplate() ASL operator 9149introduced 9150in the 20051021 release. 9151 9152Implemented support for "local" internal ACPI object types within the 9153debugger "Object" command and the AcpiWalkNamespace external interfaces. 9154These local types include RegionFields, BankFields, IndexFields, Alias, 9155and 9156reference objects. 9157 9158Moved common AML resource handling code into a new file, "utresrc.c". 9159This 9160code is shared by both the Resource Manager and the AML Debugger. 9161 9162Code and Data Size: The current and previous library sizes for the core 9163subsystem are shown below. These are the code and data sizes for the 9164acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9165These 9166values do not include any ACPI driver or OSPM code. The debug version of 9167the 9168code includes the debug output trace mechanism and has a much larger code 9169and data size. Note that these values will vary depending on the 9170efficiency 9171of the compiler and the compiler options used during generation. 9172 9173 Previous Release: 9174 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 9175 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 9176 Current Release: 9177 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9178 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9179 9180 91812) iASL Compiler/Disassembler: 9182 9183Fixed a problem with very large initializer lists (more than 4000 9184elements) 9185for both Buffer and Package objects where the parse stack could overflow. 9186 9187Enhanced the pre-compile source code scan for non-ASCII characters to 9188ignore 9189characters within comment fields. The scan is now always performed and is 9190no 9191longer optional, detecting invalid characters within a source file 9192immediately rather than during the parse phase or later. 9193 9194Enhanced the ASL grammar definition to force early reductions on all 9195list- 9196style grammar elements so that the overall parse stack usage is greatly 9197reduced. This should improve performance and reduce the possibility of 9198parse 9199stack overflow. 9200 9201Eliminated all reduce/reduce conflicts in the iASL parser generation. 9202Also, 9203with the addition of a %expected statement, the compiler generates from 9204source with no warnings. 9205 9206Fixed a possible segment fault in the disassembler if the input filename 9207does not contain a "dot" extension (Thomas Renninger). 9208 9209---------------------------------------- 921021 October 2005. Summary of changes for version 20051021: 9211 92121) ACPI CA Core Subsystem: 9213 9214Implemented support for the EM64T and other x86-64 processors. This 9215essentially entails recognizing that these processors support non-aligned 9216memory transfers. Previously, all 64-bit processors were assumed to lack 9217hardware support for non-aligned transfers. 9218 9219Completed conversion of the Resource Manager to nearly full table-driven 9220operation. Specifically, the resource conversion code (convert AML to 9221internal format and the reverse) and the debug code to dump internal 9222resource descriptors are fully table-driven, reducing code and data size 9223and 9224improving maintainability. 9225 9226The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 9227word 9228on 64-bit processors instead of a fixed 32-bit word. (With assistance 9229from 9230Alexey Starikovskiy) 9231 9232Implemented support within the resource conversion code for the Type- 9233Specific byte within the various ACPI 3.0 *WordSpace macros. 9234 9235Fixed some issues within the resource conversion code for the type- 9236specific 9237flags for both Memory and I/O address resource descriptors. For Memory, 9238implemented support for the MTP and TTP flags. For I/O, split the TRS and 9239TTP flags into two separate fields. 9240 9241Code and Data Size: The current and previous library sizes for the core 9242subsystem are shown below. These are the code and data sizes for the 9243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9244These 9245values do not include any ACPI driver or OSPM code. The debug version of 9246the 9247code includes the debug output trace mechanism and has a much larger code 9248and data size. Note that these values will vary depending on the 9249efficiency 9250of the compiler and the compiler options used during generation. 9251 9252 Previous Release: 9253 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9254 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9255 Current Release: 9256 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 9257 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 9258 9259 9260 92612) iASL Compiler/Disassembler: 9262 9263Relaxed a compiler restriction that disallowed a ResourceIndex byte if 9264the 9265corresponding ResourceSource string was not also present in a resource 9266descriptor declaration. This restriction caused problems with existing 9267AML/ASL code that includes the Index byte without the string. When such 9268AML 9269was disassembled, it could not be compiled without modification. Further, 9270the modified code created a resource template with a different size than 9271the 9272original, breaking code that used fixed offsets into the resource 9273template 9274buffer. 9275 9276Removed a recent feature of the disassembler to ignore a lone 9277ResourceIndex 9278byte. This byte is now emitted if present so that the exact AML can be 9279reproduced when the disassembled code is recompiled. 9280 9281Improved comments and text alignment for the resource descriptor code 9282emitted by the disassembler. 9283 9284Implemented disassembler support for the ACPI 3.0 AccessSize field within 9285a 9286Register() resource descriptor. 9287 9288---------------------------------------- 928930 September 2005. Summary of changes for version 20050930: 9290 92911) ACPI CA Core Subsystem: 9292 9293Completed a major overhaul of the Resource Manager code - specifically, 9294optimizations in the area of the AML/internal resource conversion code. 9295The 9296code has been optimized to simplify and eliminate duplicated code, CPU 9297stack 9298use has been decreased by optimizing function parameters and local 9299variables, and naming conventions across the manager have been 9300standardized 9301for clarity and ease of maintenance (this includes function, parameter, 9302variable, and struct/typedef names.) The update may force changes in some 9303driver code, depending on how resources are handled by the host OS. 9304 9305All Resource Manager dispatch and information tables have been moved to a 9306single location for clarity and ease of maintenance. One new file was 9307created, named "rsinfo.c". 9308 9309The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 9310guarantee that the argument is not evaluated twice, making them less 9311prone 9312to macro side-effects. However, since there exists the possibility of 9313additional stack use if a particular compiler cannot optimize them (such 9314as 9315in the debug generation case), the original macros are optionally 9316available. 9317Note that some invocations of the return_VALUE macro may now cause size 9318mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 9319to 9320eliminate these. (From Randy Dunlap) 9321 9322Implemented a new mechanism to enable debug tracing for individual 9323control 9324methods. A new external interface, AcpiDebugTrace, is provided to enable 9325this mechanism. The intent is to allow the host OS to easily enable and 9326disable tracing for problematic control methods. This interface can be 9327easily exposed to a user or debugger interface if desired. See the file 9328psxface.c for details. 9329 9330AcpiUtCallocate will now return a valid pointer if a length of zero is 9331specified - a length of one is used and a warning is issued. This matches 9332the behavior of AcpiUtAllocate. 9333 9334Code and Data Size: The current and previous library sizes for the core 9335subsystem are shown below. These are the code and data sizes for the 9336acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9337These 9338values do not include any ACPI driver or OSPM code. The debug version of 9339the 9340code includes the debug output trace mechanism and has a much larger code 9341and data size. Note that these values will vary depending on the 9342efficiency 9343of the compiler and the compiler options used during generation. 9344 9345 Previous Release: 9346 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9347 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9348 Current Release: 9349 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9350 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9351 9352 93532) iASL Compiler/Disassembler: 9354 9355A remark is issued if the effective compile-time length of a package or 9356buffer is zero. Previously, this was a warning. 9357 9358---------------------------------------- 935916 September 2005. Summary of changes for version 20050916: 9360 93611) ACPI CA Core Subsystem: 9362 9363Fixed a problem within the Resource Manager where support for the Generic 9364Register descriptor was not fully implemented. This descriptor is now 9365fully 9366recognized, parsed, disassembled, and displayed. 9367 9368Completely restructured the Resource Manager code to utilize table-driven 9369dispatch and lookup, eliminating many of the large switch() statements. 9370This 9371reduces overall subsystem code size and code complexity. Affects the 9372resource parsing and construction, disassembly, and debug dump output. 9373 9374Cleaned up and restructured the debug dump output for all resource 9375descriptors. Improved readability of the output and reduced code size. 9376 9377Fixed a problem where changes to internal data structures caused the 9378optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 9379 9380Code and Data Size: The current and previous library sizes for the core 9381subsystem are shown below. These are the code and data sizes for the 9382acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9383These 9384values do not include any ACPI driver or OSPM code. The debug version of 9385the 9386code includes the debug output trace mechanism and has a much larger code 9387and data size. Note that these values will vary depending on the 9388efficiency 9389of the compiler and the compiler options used during generation. 9390 9391 Previous Release: 9392 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 9393 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 9394 Current Release: 9395 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9396 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9397 9398 93992) iASL Compiler/Disassembler: 9400 9401Updated the disassembler to automatically insert an EndDependentFn() 9402macro 9403into the ASL stream if this macro is missing in the original AML code, 9404simplifying compilation of the resulting ASL module. 9405 9406Fixed a problem in the disassembler where a disassembled ResourceSource 9407string (within a large resource descriptor) was not surrounded by quotes 9408and 9409not followed by a comma, causing errors when the resulting ASL module was 9410compiled. Also, escape sequences within a ResourceSource string are now 9411handled correctly (especially "\\") 9412 9413---------------------------------------- 941402 September 2005. Summary of changes for version 20050902: 9415 94161) ACPI CA Core Subsystem: 9417 9418Fixed a problem with the internal Owner ID allocation and deallocation 9419mechanisms for control method execution and recursive method invocation. 9420This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 9421messages seen on some systems. Recursive method invocation depth is 9422currently limited to 255. (Alexey Starikovskiy) 9423 9424Completely eliminated all vestiges of support for the "module-level 9425executable code" until this support is fully implemented and debugged. 9426This 9427should eliminate the NO_RETURN_VALUE exceptions seen during table load on 9428some systems that invoke this support. 9429 9430Fixed a problem within the resource manager code where the transaction 9431flags 9432for a 64-bit address descriptor were handled incorrectly in the type- 9433specific flag byte. 9434 9435Consolidated duplicate code within the address descriptor resource 9436manager 9437code, reducing overall subsystem code size. 9438 9439Fixed a fault when using the AML debugger "disassemble" command to 9440disassemble individual control methods. 9441 9442Removed references to the "release_current" directory within the Unix 9443release package. 9444 9445Code and Data Size: The current and previous core subsystem library sizes 9446are shown below. These are the code and data sizes for the acpica.lib 9447produced by the Microsoft Visual C++ 6.0 compiler. These values do not 9448include any ACPI driver or OSPM code. The debug version of the code 9449includes 9450the debug output trace mechanism and has a much larger code and data 9451size. 9452Note that these values will vary depending on the efficiency of the 9453compiler 9454and the compiler options used during generation. 9455 9456 Previous Release: 9457 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9458 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 9459 Current Release: 9460 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 9461 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 9462 9463 94642) iASL Compiler/Disassembler: 9465 9466Implemented an error check for illegal duplicate values in the interrupt 9467and 9468dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 9469Interrupt(). 9470 9471Implemented error checking for the Irq() and IrqNoFlags() macros to 9472detect 9473too many values in the interrupt list (16 max) and invalid values in the 9474list (range 0 - 15) 9475 9476The maximum length string literal within an ASL file is now restricted to 9477200 characters as per the ACPI specification. 9478 9479Fixed a fault when using the -ln option (generate namespace listing). 9480 9481Implemented an error check to determine if a DescriptorName within a 9482resource descriptor has already been used within the current scope. 9483 9484---------------------------------------- 948515 August 2005. Summary of changes for version 20050815: 9486 94871) ACPI CA Core Subsystem: 9488 9489Implemented a full bytewise compare to determine if a table load request 9490is 9491attempting to load a duplicate table. The compare is performed if the 9492table 9493signatures and table lengths match. This will allow different tables with 9494the same OEM Table ID and revision to be loaded - probably against the 9495ACPI 9496specification, but discovered in the field nonetheless. 9497 9498Added the changes.txt logfile to each of the zipped release packages. 9499 9500Code and Data Size: Current and previous core subsystem library sizes are 9501shown below. These are the code and data sizes for the acpica.lib 9502produced 9503by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9504any ACPI driver or OSPM code. The debug version of the code includes the 9505debug output trace mechanism and has a much larger code and data size. 9506Note 9507that these values will vary depending on the efficiency of the compiler 9508and 9509the compiler options used during generation. 9510 9511 Previous Release: 9512 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9513 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 9514 Current Release: 9515 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9516 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 9517 9518 95192) iASL Compiler/Disassembler: 9520 9521Fixed a problem where incorrect AML code could be generated for Package 9522objects if optimization is disabled (via the -oa switch). 9523 9524Fixed a problem with where incorrect AML code is generated for variable- 9525length packages when the package length is not specified and the number 9526of 9527initializer values is greater than 255. 9528 9529 9530---------------------------------------- 953129 July 2005. Summary of changes for version 20050729: 9532 95331) ACPI CA Core Subsystem: 9534 9535Implemented support to ignore an attempt to install/load a particular 9536ACPI 9537table more than once. Apparently there exists BIOS code that repeatedly 9538attempts to load the same SSDT upon certain events. With assistance from 9539Venkatesh Pallipadi. 9540 9541Restructured the main interface to the AML parser in order to correctly 9542handle all exceptional conditions. This will prevent leakage of the 9543OwnerId 9544resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 9545some 9546machines. With assistance from Alexey Starikovskiy. 9547 9548Support for "module level code" has been disabled in this version due to 9549a 9550number of issues that have appeared on various machines. The support can 9551be 9552enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 9553compilation. When the issues are fully resolved, the code will be enabled 9554by 9555default again. 9556 9557Modified the internal functions for debug print support to define the 9558FunctionName parameter as a (const char *) for compatibility with 9559compiler 9560built-in macros such as __FUNCTION__, etc. 9561 9562Linted the entire ACPICA source tree for both 32-bit and 64-bit. 9563 9564Implemented support to display an object count summary for the AML 9565Debugger 9566commands Object and Methods. 9567 9568Code and Data Size: Current and previous core subsystem library sizes are 9569shown below. These are the code and data sizes for the acpica.lib 9570produced 9571by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9572any ACPI driver or OSPM code. The debug version of the code includes the 9573debug output trace mechanism and has a much larger code and data size. 9574Note 9575that these values will vary depending on the efficiency of the compiler 9576and 9577the compiler options used during generation. 9578 9579 Previous Release: 9580 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 9581 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 9582 Current Release: 9583 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9584 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 9585 9586 95872) iASL Compiler/Disassembler: 9588 9589Fixed a regression that appeared in the 20050708 version of the compiler 9590where an error message was inadvertently emitted for invocations of the 9591_OSI 9592reserved control method. 9593 9594---------------------------------------- 959508 July 2005. Summary of changes for version 20050708: 9596 95971) ACPI CA Core Subsystem: 9598 9599The use of the CPU stack in the debug version of the subsystem has been 9600considerably reduced. Previously, a debug structure was declared in every 9601function that used the debug macros. This structure has been removed in 9602favor of declaring the individual elements as parameters to the debug 9603functions. This reduces the cumulative stack use during nested execution 9604of 9605ACPI function calls at the cost of a small increase in the code size of 9606the 9607debug version of the subsystem. With assistance from Alexey Starikovskiy 9608and 9609Len Brown. 9610 9611Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 9612headers to define a macro that will return the current function name at 9613runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 9614by 9615the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 9616compiler-dependent header, the function name is saved on the CPU stack 9617(one 9618pointer per function.) This mechanism is used because apparently there 9619exists no standard ANSI-C defined macro that that returns the function 9620name. 9621 9622Redesigned and reimplemented the "Owner ID" mechanism used to track 9623namespace objects created/deleted by ACPI tables and control method 9624execution. A bitmap is now used to allocate and free the IDs, thus 9625solving 9626the wraparound problem present in the previous implementation. The size 9627of 9628the namespace node descriptor was reduced by 2 bytes as a result (Alexey 9629Starikovskiy). 9630 9631Removed the UINT32_BIT and UINT16_BIT types that were used for the 9632bitfield 9633flag definitions within the headers for the predefined ACPI tables. These 9634have been replaced by UINT8_BIT in order to increase the code portability 9635of 9636the subsystem. If the use of UINT8 remains a problem, we may be forced to 9637eliminate bitfields entirely because of a lack of portability. 9638 9639Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 9640This 9641is a frequently used function and this improvement increases the 9642performance 9643of the entire subsystem (Alexey Starikovskiy). 9644 9645Fixed several possible memory leaks and the inverse - premature object 9646deletion (Alexey Starikovskiy). 9647 9648Code and Data Size: Current and previous core subsystem library sizes are 9649shown below. These are the code and data sizes for the acpica.lib 9650produced 9651by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9652any ACPI driver or OSPM code. The debug version of the code includes the 9653debug output trace mechanism and has a much larger code and data size. 9654Note 9655that these values will vary depending on the efficiency of the compiler 9656and 9657the compiler options used during generation. 9658 9659 Previous Release: 9660 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 9661 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 9662 Current Release: 9663 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 9664 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 9665 9666---------------------------------------- 966724 June 2005. Summary of changes for version 20050624: 9668 96691) ACPI CA Core Subsystem: 9670 9671Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 9672the host-defined cache object. This allows the OSL implementation to 9673define 9674and type this object in any manner desired, simplifying the OSL 9675implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 9676Linux, and should be defined in the OS-specific header file for other 9677operating systems as required. 9678 9679Changed the interface to AcpiOsAcquireObject to directly return the 9680requested object as the function return (instead of ACPI_STATUS.) This 9681change was made for performance reasons, since this is the purpose of the 9682interface in the first place. AcpiOsAcquireObject is now similar to the 9683AcpiOsAllocate interface. 9684 9685Implemented a new AML debugger command named Businfo. This command 9686displays 9687information about all devices that have an associate _PRT object. The 9688_ADR, 9689_HID, _UID, and _CID are displayed for these devices. 9690 9691Modified the initialization sequence in AcpiInitializeSubsystem to call 9692the 9693OSL interface AcpiOslInitialize first, before any local initialization. 9694This 9695change was required because the global initialization now calls OSL 9696interfaces. 9697 9698Enhanced the Dump command to display the entire contents of Package 9699objects 9700(including all sub-objects and their values.) 9701 9702Restructured the code base to split some files because of size and/or 9703because the code logically belonged in a separate file. New files are 9704listed 9705below. All makefiles and project files included in the ACPI CA release 9706have 9707been updated. 9708 utilities/utcache.c /* Local cache interfaces */ 9709 utilities/utmutex.c /* Local mutex support */ 9710 utilities/utstate.c /* State object support */ 9711 interpreter/parser/psloop.c /* Main AML parse loop */ 9712 9713Code and Data Size: Current and previous core subsystem library sizes are 9714shown below. These are the code and data sizes for the acpica.lib 9715produced 9716by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9717any ACPI driver or OSPM code. The debug version of the code includes the 9718debug output trace mechanism and has a much larger code and data size. 9719Note 9720that these values will vary depending on the efficiency of the compiler 9721and 9722the compiler options used during generation. 9723 9724 Previous Release: 9725 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 9726 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 9727 Current Release: 9728 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 9729 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 9730 9731 97322) iASL Compiler/Disassembler: 9733 9734Fixed a regression introduced in version 20050513 where the use of a 9735Package 9736object within a Case() statement caused a compile time exception. The 9737original behavior has been restored (a Match() operator is emitted.) 9738 9739---------------------------------------- 974017 June 2005. Summary of changes for version 20050617: 9741 97421) ACPI CA Core Subsystem: 9743 9744Moved the object cache operations into the OS interface layer (OSL) to 9745allow 9746the host OS to handle these operations if desired (for example, the Linux 9747OSL will invoke the slab allocator). This support is optional; the 9748compile 9749time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 9750cache 9751code in the ACPI CA core. The new OSL interfaces are shown below. See 9752utalloc.c for an example implementation, and acpiosxf.h for the exact 9753interface definitions. With assistance from Alexey Starikovskiy. 9754 AcpiOsCreateCache 9755 AcpiOsDeleteCache 9756 AcpiOsPurgeCache 9757 AcpiOsAcquireObject 9758 AcpiOsReleaseObject 9759 9760Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 9761return 9762and restore a flags parameter. This fits better with many OS lock models. 9763Note: the current execution state (interrupt handler or not) is no longer 9764passed to these interfaces. If necessary, the OSL must determine this 9765state 9766by itself, a simple and fast operation. With assistance from Alexey 9767Starikovskiy. 9768 9769Fixed a problem in the ACPI table handling where a valid XSDT was assumed 9770present if the revision of the RSDP was 2 or greater. According to the 9771ACPI 9772specification, the XSDT is optional in all cases, and the table manager 9773therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 9774Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 9775contain 9776only the RSDT. 9777 9778Fixed an interpreter problem with the Mid() operator in the case of an 9779input 9780string where the resulting output string is of zero length. It now 9781correctly 9782returns a valid, null terminated string object instead of a string object 9783with a null pointer. 9784 9785Fixed a problem with the control method argument handling to allow a 9786store 9787to an Arg object that already contains an object of type Device. The 9788Device 9789object is now correctly overwritten. Previously, an error was returned. 9790 9791 9792Enhanced the debugger Find command to emit object values in addition to 9793the 9794found object pathnames. The output format is the same as the dump 9795namespace 9796command. 9797 9798Enhanced the debugger Set command. It now has the ability to set the 9799value 9800of any Named integer object in the namespace (Previously, only method 9801locals 9802and args could be set.) 9803 9804Code and Data Size: Current and previous core subsystem library sizes are 9805shown below. These are the code and data sizes for the acpica.lib 9806produced 9807by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9808any ACPI driver or OSPM code. The debug version of the code includes the 9809debug output trace mechanism and has a much larger code and data size. 9810Note 9811that these values will vary depending on the efficiency of the compiler 9812and 9813the compiler options used during generation. 9814 9815 Previous Release: 9816 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 9817 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 9818 Current Release: 9819 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 9820 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 9821 9822 98232) iASL Compiler/Disassembler: 9824 9825Fixed a regression in the disassembler where if/else/while constructs 9826were 9827output incorrectly. This problem was introduced in the previous release 9828(20050526). This problem also affected the single-step disassembly in the 9829debugger. 9830 9831Fixed a problem where compiling the reserved _OSI method would randomly 9832(but 9833rarely) produce compile errors. 9834 9835Enhanced the disassembler to emit compilable code in the face of 9836incorrect 9837AML resource descriptors. If the optional ResourceSourceIndex is present, 9838but the ResourceSource is not, do not emit the ResourceSourceIndex in the 9839disassembly. Otherwise, the resulting code cannot be compiled without 9840errors. 9841 9842---------------------------------------- 984326 May 2005. Summary of changes for version 20050526: 9844 98451) ACPI CA Core Subsystem: 9846 9847Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 9848the module level (not within a control method.) These opcodes are 9849executed 9850exactly once at the time the table is loaded. This type of code was legal 9851up 9852until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 9853in 9854order to provide backwards compatibility with earlier BIOS 9855implementations. 9856This eliminates the "Encountered executable code at module level" warning 9857that was previously generated upon detection of such code. 9858 9859Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 9860inadvertently be generated during the lookup of namespace objects in the 9861second pass parse of ACPI tables and control methods. It appears that 9862this 9863problem could occur during the resolution of forward references to 9864namespace 9865objects. 9866 9867Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 9868corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 9869allows the deadlock detection debug code to be compiled out in the normal 9870case, improving mutex performance (and overall subsystem performance) 9871considerably. 9872 9873Implemented a handful of miscellaneous fixes for possible memory leaks on 9874error conditions and error handling control paths. These fixes were 9875suggested by FreeBSD and the Coverity Prevent source code analysis tool. 9876 9877Added a check for a null RSDT pointer in AcpiGetFirmwareTable 9878(tbxfroot.c) 9879to prevent a fault in this error case. 9880 9881Code and Data Size: Current and previous core subsystem library sizes are 9882shown below. These are the code and data sizes for the acpica.lib 9883produced 9884by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9885any ACPI driver or OSPM code. The debug version of the code includes the 9886debug output trace mechanism and has a much larger code and data size. 9887Note 9888that these values will vary depending on the efficiency of the compiler 9889and 9890the compiler options used during generation. 9891 9892 Previous Release: 9893 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9894 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9895 Current Release: 9896 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 9897 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 9898 9899 99002) iASL Compiler/Disassembler: 9901 9902Implemented support to allow Type 1 and Type 2 ASL operators to appear at 9903the module level (not within a control method.) These operators will be 9904executed once at the time the table is loaded. This type of code was 9905legal 9906up until the release of ACPI 2.0B (2002) and is now supported by the iASL 9907compiler in order to provide backwards compatibility with earlier BIOS 9908ASL 9909code. 9910 9911The ACPI integer width (specified via the table revision ID or the -r 9912override, 32 or 64 bits) is now used internally during compile-time 9913constant 9914folding to ensure that constants are truncated to 32 bits if necessary. 9915Previously, the revision ID value was only emitted in the AML table 9916header. 9917 9918An error message is now generated for the Mutex and Method operators if 9919the 9920SyncLevel parameter is outside the legal range of 0 through 15. 9921 9922Fixed a problem with the Method operator ParameterTypes list handling 9923(ACPI 99243.0). Previously, more than 2 types or 2 arguments generated a syntax 9925error. 9926The actual underlying implementation of method argument typechecking is 9927still under development, however. 9928 9929---------------------------------------- 993013 May 2005. Summary of changes for version 20050513: 9931 99321) ACPI CA Core Subsystem: 9933 9934Implemented support for PCI Express root bridges -- added support for 9935device 9936PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 9937 9938The interpreter now automatically truncates incoming 64-bit constants to 993932 9940bits if currently executing out of a 32-bit ACPI table (Revision < 2). 9941This 9942also affects the iASL compiler constant folding. (Note: as per below, the 9943iASL compiler no longer allows 64-bit constants within 32-bit tables.) 9944 9945Fixed a problem where string and buffer objects with "static" pointers 9946(pointers to initialization data within an ACPI table) were not handled 9947consistently. The internal object copy operation now always copies the 9948data 9949to a newly allocated buffer, regardless of whether the source object is 9950static or not. 9951 9952Fixed a problem with the FromBCD operator where an implicit result 9953conversion was improperly performed while storing the result to the 9954target 9955operand. Since this is an "explicit conversion" operator, the implicit 9956conversion should never be performed on the output. 9957 9958Fixed a problem with the CopyObject operator where a copy to an existing 9959named object did not always completely overwrite the existing object 9960stored 9961at name. Specifically, a buffer-to-buffer copy did not delete the 9962existing 9963buffer. 9964 9965Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 9966and 9967structs for consistency. 9968 9969Code and Data Size: Current and previous core subsystem library sizes are 9970shown below. These are the code and data sizes for the acpica.lib 9971produced 9972by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9973any ACPI driver or OSPM code. The debug version of the code includes the 9974debug output trace mechanism and has a much larger code and data size. 9975Note 9976that these values will vary depending on the efficiency of the compiler 9977and 9978the compiler options used during generation. 9979 9980 Previous Release: 9981 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9982 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9983 Current Release: (Same sizes) 9984 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9985 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9986 9987 99882) iASL Compiler/Disassembler: 9989 9990The compiler now emits a warning if an attempt is made to generate a 64- 9991bit 9992integer constant from within a 32-bit ACPI table (Revision < 2). The 9993integer 9994is truncated to 32 bits. 9995 9996Fixed a problem with large package objects: if the static length of the 9997package is greater than 255, the "variable length package" opcode is 9998emitted. Previously, this caused an error. This requires an update to the 9999ACPI spec, since it currently (incorrectly) states that packages larger 10000than 10001255 elements are not allowed. 10002 10003The disassembler now correctly handles variable length packages and 10004packages 10005larger than 255 elements. 10006 10007---------------------------------------- 1000808 April 2005. Summary of changes for version 20050408: 10009 100101) ACPI CA Core Subsystem: 10011 10012Fixed three cases in the interpreter where an "index" argument to an ASL 10013function was still (internally) 32 bits instead of the required 64 bits. 10014This was the Index argument to the Index, Mid, and Match operators. 10015 10016The "strupr" function is now permanently local (AcpiUtStrupr), since this 10017is 10018not a POSIX-defined function and not present in most kernel-level C 10019libraries. All references to the C library strupr function have been 10020removed 10021from the headers. 10022 10023Completed the deployment of static functions/prototypes. All prototypes 10024with 10025the static attribute have been moved from the headers to the owning C 10026file. 10027 10028Implemented an extract option (-e) for the AcpiBin utility (AML binary 10029utility). This option allows the utility to extract individual ACPI 10030tables 10031from the output of AcpiDmp. It provides the same functionality of the 10032acpixtract.pl perl script without the worry of setting the correct perl 10033options. AcpiBin runs on Windows and has not yet been generated/validated 10034in 10035the Linux/Unix environment (but should be soon). 10036 10037Updated and fixed the table dump option for AcpiBin (-d). This option 10038converts a single ACPI table to a hex/ascii file, similar to the output 10039of 10040AcpiDmp. 10041 10042Code and Data Size: Current and previous core subsystem library sizes are 10043shown below. These are the code and data sizes for the acpica.lib 10044produced 10045by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10046any ACPI driver or OSPM code. The debug version of the code includes the 10047debug output trace mechanism and has a much larger code and data size. 10048Note 10049that these values will vary depending on the efficiency of the compiler 10050and 10051the compiler options used during generation. 10052 10053 Previous Release: 10054 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10055 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10056 Current Release: 10057 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10058 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10059 10060 100612) iASL Compiler/Disassembler: 10062 10063Disassembler fix: Added a check to ensure that the table length found in 10064the 10065ACPI table header within the input file is not longer than the actual 10066input 10067file size. This indicates some kind of file or table corruption. 10068 10069---------------------------------------- 1007029 March 2005. Summary of changes for version 20050329: 10071 100721) ACPI CA Core Subsystem: 10073 10074An error is now generated if an attempt is made to create a Buffer Field 10075of 10076length zero (A CreateField with a length operand of zero.) 10077 10078The interpreter now issues a warning whenever executable code at the 10079module 10080level is detected during ACPI table load. This will give some idea of the 10081prevalence of this type of code. 10082 10083Implemented support for references to named objects (other than control 10084methods) within package objects. 10085 10086Enhanced package object output for the debug object. Package objects are 10087now 10088completely dumped, showing all elements. 10089 10090Enhanced miscellaneous object output for the debug object. Any object can 10091now be written to the debug object (for example, a device object can be 10092written, and the type of the object will be displayed.) 10093 10094The "static" qualifier has been added to all local functions across both 10095the 10096core subsystem and the iASL compiler. 10097 10098The number of "long" lines (> 80 chars) within the source has been 10099significantly reduced, by about 1/3. 10100 10101Cleaned up all header files to ensure that all CA/iASL functions are 10102prototyped (even static functions) and the formatting is consistent. 10103 10104Two new header files have been added, acopcode.h and acnames.h. 10105 10106Removed several obsolete functions that were no longer used. 10107 10108Code and Data Size: Current and previous core subsystem library sizes are 10109shown below. These are the code and data sizes for the acpica.lib 10110produced 10111by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10112any ACPI driver or OSPM code. The debug version of the code includes the 10113debug output trace mechanism and has a much larger code and data size. 10114Note 10115that these values will vary depending on the efficiency of the compiler 10116and 10117the compiler options used during generation. 10118 10119 Previous Release: 10120 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10121 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 10122 Current Release: 10123 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10124 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10125 10126 10127 101282) iASL Compiler/Disassembler: 10129 10130Fixed a problem with the resource descriptor generation/support. For the 10131ResourceSourceIndex and the ResourceSource fields, both must be present, 10132or 10133both must be not present - can't have one without the other. 10134 10135The compiler now returns non-zero from the main procedure if any errors 10136have 10137occurred during the compilation. 10138 10139 10140---------------------------------------- 1014109 March 2005. Summary of changes for version 20050309: 10142 101431) ACPI CA Core Subsystem: 10144 10145The string-to-buffer implicit conversion code has been modified again 10146after 10147a change to the ACPI specification. In order to match the behavior of 10148the 10149other major ACPI implementation, the target buffer is no longer truncated 10150if 10151the source string is smaller than an existing target buffer. This change 10152requires an update to the ACPI spec, and should eliminate the recent 10153AE_AML_BUFFER_LIMIT issues. 10154 10155The "implicit return" support was rewritten to a new algorithm that 10156solves 10157the general case. Rather than attempt to determine when a method is about 10158to 10159exit, the result of every ASL operator is saved momentarily until the 10160very 10161next ASL operator is executed. Therefore, no matter how the method exits, 10162there will always be a saved implicit return value. This feature is only 10163enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 10164eliminate 10165AE_AML_NO_RETURN_VALUE errors when enabled. 10166 10167Implemented implicit conversion support for the predicate (operand) of 10168the 10169If, Else, and While operators. String and Buffer arguments are 10170automatically 10171converted to Integers. 10172 10173Changed the string-to-integer conversion behavior to match the new ACPI 10174errata: "If no integer object exists, a new integer is created. The ASCII 10175string is interpreted as a hexadecimal constant. Each string character is 10176interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 10177with the first character as the most significant digit, and ending with 10178the 10179first non-hexadecimal character or end-of-string." This means that the 10180first 10181non-hex character terminates the conversion and this is the code that was 10182changed. 10183 10184Fixed a problem where the ObjectType operator would fail (fault) when 10185used 10186on an Index of a Package which pointed to a null package element. The 10187operator now properly returns zero (Uninitialized) in this case. 10188 10189Fixed a problem where the While operator used excessive memory by not 10190properly popping the result stack during execution. There was no memory 10191leak 10192after execution, however. (Code provided by Valery Podrezov.) 10193 10194Fixed a problem where references to control methods within Package 10195objects 10196caused the method to be invoked, instead of producing a reference object 10197pointing to the method. 10198 10199Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 10200to 10201improve performance and reduce code size. (Code provided by Alexey 10202Starikovskiy.) 10203 10204Code and Data Size: Current and previous core subsystem library sizes are 10205shown below. These are the code and data sizes for the acpica.lib 10206produced 10207by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10208any ACPI driver or OSPM code. The debug version of the code includes the 10209debug output trace mechanism and has a much larger code and data size. 10210Note 10211that these values will vary depending on the efficiency of the compiler 10212and 10213the compiler options used during generation. 10214 10215 Previous Release: 10216 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10217 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10218 Current Release: 10219 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10220 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 10221 10222 102232) iASL Compiler/Disassembler: 10224 10225Fixed a problem with the Return operator with no arguments. Since the AML 10226grammar for the byte encoding requires an operand for the Return opcode, 10227the 10228compiler now emits a Return(Zero) for this case. An ACPI specification 10229update has been written for this case. 10230 10231For tables other than the DSDT, namepath optimization is automatically 10232disabled. This is because SSDTs can be loaded anywhere in the namespace, 10233the 10234compiler has no knowledge of where, and thus cannot optimize namepaths. 10235 10236Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 10237inadvertently omitted from the ACPI specification, and will require an 10238update to the spec. 10239 10240The source file scan for ASCII characters is now optional (-a). This 10241change 10242was made because some vendors place non-ascii characters within comments. 10243However, the scan is simply a brute-force byte compare to ensure all 10244characters in the file are in the range 0x00 to 0x7F. 10245 10246Fixed a problem with the CondRefOf operator where the compiler was 10247inappropriately checking for the existence of the target. Since the point 10248of 10249the operator is to check for the existence of the target at run-time, the 10250compiler no longer checks for the target existence. 10251 10252Fixed a problem where errors generated from the internal AML interpreter 10253during constant folding were not handled properly, causing a fault. 10254 10255Fixed a problem with overly aggressive range checking for the Stall 10256operator. The valid range (max 255) is now only checked if the operand is 10257of 10258type Integer. All other operand types cannot be statically checked. 10259 10260Fixed a problem where control method references within the RefOf, 10261DeRefOf, 10262and ObjectType operators were not treated properly. They are now treated 10263as 10264actual references, not method invocations. 10265 10266Fixed and enhanced the "list namespace" option (-ln). This option was 10267broken 10268a number of releases ago. 10269 10270Improved error handling for the Field, IndexField, and BankField 10271operators. 10272The compiler now cleanly reports and recovers from errors in the field 10273component (FieldUnit) list. 10274 10275Fixed a disassembler problem where the optional ResourceDescriptor fields 10276TRS and TTP were not always handled correctly. 10277 10278Disassembler - Comments in output now use "//" instead of "/*" 10279 10280---------------------------------------- 1028128 February 2005. Summary of changes for version 20050228: 10282 102831) ACPI CA Core Subsystem: 10284 10285Fixed a problem where the result of an Index() operator (an object 10286reference) must increment the reference count on the target object for 10287the 10288life of the object reference. 10289 10290Implemented AML Interpreter and Debugger support for the new ACPI 3.0 10291Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 10292WordSpace 10293resource descriptors. 10294 10295Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 10296Space Descriptor" string, indicating interpreter support for the 10297descriptors 10298above. 10299 10300Implemented header support for the new ACPI 3.0 FADT flag bits. 10301 10302Implemented header support for the new ACPI 3.0 PCI Express bits for the 10303PM1 10304status/enable registers. 10305 10306Updated header support for the MADT processor local Apic struct and MADT 10307platform interrupt source struct for new ACPI 3.0 fields. 10308 10309Implemented header support for the SRAT and SLIT ACPI tables. 10310 10311Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 10312flag 10313at runtime. 10314 10315Code and Data Size: Current and previous core subsystem library sizes are 10316shown below. These are the code and data sizes for the acpica.lib 10317produced 10318by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10319any ACPI driver or OSPM code. The debug version of the code includes the 10320debug output trace mechanism and has a much larger code and data size. 10321Note 10322that these values will vary depending on the efficiency of the compiler 10323and 10324the compiler options used during generation. 10325 10326 Previous Release: 10327 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10328 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10329 Current Release: 10330 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10331 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10332 10333 103342) iASL Compiler/Disassembler: 10335 10336Fixed a problem with the internal 64-bit String-to-integer conversion 10337with 10338strings less than two characters long. 10339 10340Fixed a problem with constant folding where the result of the Index() 10341operator can not be considered a constant. This means that Index() cannot 10342be 10343a type3 opcode and this will require an update to the ACPI specification. 10344 10345Disassembler: Implemented support for the TTP, MTP, and TRS resource 10346descriptor fields. These fields were inadvertently ignored and not output 10347in 10348the disassembly of the resource descriptor. 10349 10350 10351 ---------------------------------------- 1035211 February 2005. Summary of changes for version 20050211: 10353 103541) ACPI CA Core Subsystem: 10355 10356Implemented ACPI 3.0 support for implicit conversion within the Match() 10357operator. MatchObjects can now be of type integer, buffer, or string 10358instead 10359of just type integer. Package elements are implicitly converted to the 10360type 10361of the MatchObject. This change aligns the behavior of Match() with the 10362behavior of the other logical operators (LLess(), etc.) It also requires 10363an 10364errata change to the ACPI specification as this support was intended for 10365ACPI 3.0, but was inadvertently omitted. 10366 10367Fixed a problem with the internal implicit "to buffer" conversion. 10368Strings 10369that are converted to buffers will cause buffer truncation if the string 10370is 10371smaller than the target buffer. Integers that are converted to buffers 10372will 10373not cause buffer truncation, only zero extension (both as per the ACPI 10374spec.) The problem was introduced when code was added to truncate the 10375buffer, but this should not be performed in all cases, only the string 10376case. 10377 10378Fixed a problem with the Buffer and Package operators where the 10379interpreter 10380would get confused if two such operators were used as operands to an ASL 10381operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 10382stack was not being popped after the execution of these operators, 10383resulting 10384in an AE_NO_RETURN_VALUE exception. 10385 10386Fixed a problem with constructs of the form Store(Index(...),...). The 10387reference object returned from Index was inadvertently resolved to an 10388actual 10389value. This problem was introduced in version 20050114 when the behavior 10390of 10391Store() was modified to restrict the object types that can be used as the 10392source operand (to match the ACPI specification.) 10393 10394Reduced excessive stack use within the AcpiGetObjectInfo procedure. 10395 10396Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 10397 10398Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 10399 10400Code and Data Size: Current and previous core subsystem library sizes are 10401shown below. These are the code and data sizes for the acpica.lib 10402produced 10403by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10404any ACPI driver or OSPM code. The debug version of the code includes the 10405debug output trace mechanism and has a much larger code and data size. 10406Note 10407that these values will vary depending on the efficiency of the compiler 10408and 10409the compiler options used during generation. 10410 10411 Previous Release: 10412 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 10413 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 10414 Current Release: 10415 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10416 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10417 10418 104192) iASL Compiler/Disassembler: 10420 10421Fixed a code generation problem in the constant folding optimization code 10422where incorrect code was generated if a constant was reduced to a buffer 10423object (i.e., a reduced type 5 opcode.) 10424 10425Fixed a typechecking problem for the ToBuffer operator. Caused by an 10426incorrect return type in the internal opcode information table. 10427 10428---------------------------------------- 1042925 January 2005. Summary of changes for version 20050125: 10430 104311) ACPI CA Core Subsystem: 10432 10433Fixed a recently introduced problem with the Global Lock where the 10434underlying semaphore was not created. This problem was introduced in 10435version 20050114, and caused an AE_AML_NO_OPERAND exception during an 10436Acquire() operation on _GL. 10437 10438The local object cache is now optional, and is disabled by default. Both 10439AcpiExec and the iASL compiler enable the cache because they run in user 10440mode and this enhances their performance. #define 10441ACPI_ENABLE_OBJECT_CACHE 10442to enable the local cache. 10443 10444Fixed an issue in the internal function AcpiUtEvaluateObject concerning 10445the 10446optional "implicit return" support where an error was returned if no 10447return 10448object was expected, but one was implicitly returned. AE_OK is now 10449returned 10450in this case and the implicitly returned object is deleted. 10451AcpiUtEvaluateObject is only occasionally used, and only to execute 10452reserved 10453methods such as _STA and _INI where the return type is known up front. 10454 10455Fixed a few issues with the internal convert-to-integer code. It now 10456returns 10457an error if an attempt is made to convert a null string, a string of only 10458blanks/tabs, or a zero-length buffer. This affects both implicit 10459conversion 10460and explicit conversion via the ToInteger() operator. 10461 10462The internal debug code in AcpiUtAcquireMutex has been commented out. It 10463is 10464not needed for normal operation and should increase the performance of 10465the 10466entire subsystem. The code remains in case it is needed for debug 10467purposes 10468again. 10469 10470The AcpiExec source and makefile are included in the Unix/Linux package 10471for 10472the first time. 10473 10474Code and Data Size: Current and previous core subsystem library sizes are 10475shown below. These are the code and data sizes for the acpica.lib 10476produced 10477by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10478any ACPI driver or OSPM code. The debug version of the code includes the 10479debug output trace mechanism and has a much larger code and data size. 10480Note 10481that these values will vary depending on the efficiency of the compiler 10482and 10483the compiler options used during generation. 10484 10485 Previous Release: 10486 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 10487 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 10488 Current Release: 10489 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 10490 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 10491 104922) iASL Compiler/Disassembler: 10493 10494Switch/Case support: A warning is now issued if the type of the Switch 10495value 10496cannot be determined at compile time. For example, Switch(Arg0) will 10497generate the warning, and the type is assumed to be an integer. As per 10498the 10499ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 10500the 10501warning. 10502 10503Switch/Case support: Implemented support for buffer and string objects as 10504the switch value. This is an ACPI 3.0 feature, now that LEqual supports 10505buffers and strings. 10506 10507Switch/Case support: The emitted code for the LEqual() comparisons now 10508uses 10509the switch value as the first operand, not the second. The case value is 10510now 10511the second operand, and this allows the case value to be implicitly 10512converted to the type of the switch value, not the other way around. 10513 10514Switch/Case support: Temporary variables are now emitted immediately 10515within 10516the control method, not at the global level. This means that there are 10517now 1051836 temps available per-method, not 36 temps per-module as was the case 10519with 10520the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 10521 10522---------------------------------------- 1052314 January 2005. Summary of changes for version 20050114: 10524 10525Added 2005 copyright to all module headers. This affects every module in 10526the core subsystem, iASL compiler, and the utilities. 10527 105281) ACPI CA Core Subsystem: 10529 10530Fixed an issue with the String-to-Buffer conversion code where the string 10531null terminator was not included in the buffer after conversion, but 10532there 10533is existing ASL that assumes the string null terminator is included. This 10534is 10535the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 10536introduced in the previous version when the code was updated to correctly 10537set the converted buffer size as per the ACPI specification. The ACPI 10538spec 10539is ambiguous and will be updated to specify that the null terminator must 10540be 10541included in the converted buffer. This also affects the ToBuffer() ASL 10542operator. 10543 10544Fixed a problem with the Mid() ASL/AML operator where it did not work 10545correctly on Buffer objects. Newly created sub-buffers were not being 10546marked 10547as initialized. 10548 10549 10550Fixed a problem in AcpiTbFindTable where incorrect string compares were 10551performed on the OemId and OemTableId table header fields. These fields 10552are 10553not null terminated, so strncmp is now used instead of strcmp. 10554 10555Implemented a restriction on the Store() ASL/AML operator to align the 10556behavior with the ACPI specification. Previously, any object could be 10557used 10558as the source operand. Now, the only objects that may be used are 10559Integers, 10560Buffers, Strings, Packages, Object References, and DDB Handles. If 10561necessary, the original behavior can be restored by enabling the 10562EnableInterpreterSlack flag. 10563 10564Enhanced the optional "implicit return" support to allow an implicit 10565return 10566value from methods that are invoked externally via the AcpiEvaluateObject 10567interface. This enables implicit returns from the _STA and _INI methods, 10568for example. 10569 10570Changed the Revision() ASL/AML operator to return the current version of 10571the 10572AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 10573returned 10574the supported ACPI version (This is the function of the _REV method). 10575 10576Updated the _REV predefined method to return the currently supported 10577version 10578of ACPI, now 3. 10579 10580Implemented batch mode option for the AcpiExec utility (-b). 10581 10582Code and Data Size: Current and previous core subsystem library sizes are 10583shown below. These are the code and data sizes for the acpica.lib 10584produced 10585by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10586any ACPI driver or OSPM code. The debug version of the code includes the 10587debug output trace mechanism and has a much larger code and data size. 10588Note 10589that these values will vary depending on the efficiency of the compiler 10590and 10591the compiler options used during generation. 10592 10593 Previous Release: 10594 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10595 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 10596 Current Release: 10597 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 10598 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 10599 10600---------------------------------------- 1060110 December 2004. Summary of changes for version 20041210: 10602 10603ACPI 3.0 support is nearing completion in both the iASL compiler and the 10604ACPI CA core subsystem. 10605 106061) ACPI CA Core Subsystem: 10607 10608Fixed a problem in the ToDecimalString operator where the resulting 10609string 10610length was incorrectly calculated. The length is now calculated exactly, 10611eliminating incorrect AE_STRING_LIMIT exceptions. 10612 10613Fixed a problem in the ToHexString operator to allow a maximum 200 10614character 10615string to be produced. 10616 10617Fixed a problem in the internal string-to-buffer and buffer-to-buffer 10618copy 10619routine where the length of the resulting buffer was not truncated to the 10620new size (if the target buffer already existed). 10621 10622Code and Data Size: Current and previous core subsystem library sizes are 10623shown below. These are the code and data sizes for the acpica.lib 10624produced 10625by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10626any ACPI driver or OSPM code. The debug version of the code includes the 10627debug output trace mechanism and has a much larger code and data size. 10628Note 10629that these values will vary depending on the efficiency of the compiler 10630and 10631the compiler options used during generation. 10632 10633 Previous Release: 10634 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10635 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 10636 Current Release: 10637 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10638 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 10639 10640 106412) iASL Compiler/Disassembler: 10642 10643Implemented the new ACPI 3.0 resource template macros - DWordSpace, 10644ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 10645Includes support in the disassembler. 10646 10647Implemented support for the new (ACPI 3.0) parameter to the Register 10648macro, 10649AccessSize. 10650 10651Fixed a problem where the _HE resource name for the Interrupt macro was 10652referencing bit 0 instead of bit 1. 10653 10654Implemented check for maximum 255 interrupts in the Interrupt macro. 10655 10656Fixed a problem with the predefined resource descriptor names where 10657incorrect AML code was generated if the offset within the resource buffer 10658was 0 or 1. The optimizer shortened the AML code to a single byte opcode 10659but did not update the surrounding package lengths. 10660 10661Changes to the Dma macro: All channels within the channel list must be 10662in 10663the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 10664optional (default is BusMaster). 10665 10666Implemented check for maximum 7 data bytes for the VendorShort macro. 10667 10668The ReadWrite parameter is now optional for the Memory32 and similar 10669macros. 10670 10671---------------------------------------- 1067203 December 2004. Summary of changes for version 20041203: 10673 106741) ACPI CA Core Subsystem: 10675 10676The low-level field insertion/extraction code (exfldio) has been 10677completely 10678rewritten to eliminate unnecessary complexity, bugs, and boundary 10679conditions. 10680 10681Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 10682ToDecimalString 10683operators where the input operand could be inadvertently deleted if no 10684conversion was necessary (e.g., if the input to ToInteger was an Integer 10685object.) 10686 10687Fixed a problem with the ToDecimalString and ToHexString where an 10688incorrect 10689exception code was returned if the resulting string would be > 200 chars. 10690AE_STRING_LIMIT is now returned. 10691 10692Fixed a problem with the Concatenate operator where AE_OK was always 10693returned, even if the operation failed. 10694 10695Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 10696semaphores to be allocated. 10697 10698Code and Data Size: Current and previous core subsystem library sizes are 10699shown below. These are the code and data sizes for the acpica.lib 10700produced 10701by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10702any ACPI driver or OSPM code. The debug version of the code includes the 10703debug output trace mechanism and has a much larger code and data size. 10704Note 10705that these values will vary depending on the efficiency of the compiler 10706and 10707the compiler options used during generation. 10708 10709 Previous Release: 10710 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10711 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10712 Current Release: 10713 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10714 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 10715 10716 107172) iASL Compiler/Disassembler: 10718 10719Fixed typechecking for the ObjectType and SizeOf operators. Problem was 10720recently introduced in 20041119. 10721 10722Fixed a problem with the ToUUID macro where the upper nybble of each 10723buffer 10724byte was inadvertently set to zero. 10725 10726---------------------------------------- 1072719 November 2004. Summary of changes for version 20041119: 10728 107291) ACPI CA Core Subsystem: 10730 10731Fixed a problem in the internal ConvertToInteger routine where new 10732integers 10733were not truncated to 32 bits for 32-bit ACPI tables. This routine 10734converts 10735buffers and strings to integers. 10736 10737Implemented support to store a value to an Index() on a String object. 10738This 10739is an ACPI 2.0 feature that had not yet been implemented. 10740 10741Implemented new behavior for storing objects to individual package 10742elements 10743(via the Index() operator). The previous behavior was to invoke the 10744implicit 10745conversion rules if an object was already present at the index. The new 10746behavior is to simply delete any existing object and directly store the 10747new 10748object. Although the ACPI specification seems unclear on this subject, 10749other 10750ACPI implementations behave in this manner. (This is the root of the 10751AE_BAD_HEX_CONSTANT issue.) 10752 10753Modified the RSDP memory scan mechanism to support the extended checksum 10754for 10755ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 10756RSDP signature is found with a valid checksum. 10757 10758Code and Data Size: Current and previous core subsystem library sizes are 10759shown below. These are the code and data sizes for the acpica.lib 10760produced 10761by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10762any ACPI driver or OSPM code. The debug version of the code includes the 10763debug output trace mechanism and has a much larger code and data size. 10764Note 10765that these values will vary depending on the efficiency of the compiler 10766and 10767the compiler options used during generation. 10768 10769 Previous Release: 10770 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10771 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10772 Current Release: 10773 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10774 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10775 10776 107772) iASL Compiler/Disassembler: 10778 10779Fixed a missing semicolon in the aslcompiler.y file. 10780 10781---------------------------------------- 1078205 November 2004. Summary of changes for version 20041105: 10783 107841) ACPI CA Core Subsystem: 10785 10786Implemented support for FADT revision 2. This was an interim table 10787(between 10788ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 10789 10790Implemented optional support to allow uninitialized LocalX and ArgX 10791variables in a control method. The variables are initialized to an 10792Integer 10793object with a value of zero. This support is enabled by setting the 10794AcpiGbl_EnableInterpreterSlack flag to TRUE. 10795 10796Implemented support for Integer objects for the SizeOf operator. Either 107974 10798or 8 is returned, depending on the current integer size (32-bit or 64- 10799bit, 10800depending on the parent table revision). 10801 10802Fixed a problem in the implementation of the SizeOf and ObjectType 10803operators 10804where the operand was resolved to a value too early, causing incorrect 10805return values for some objects. 10806 10807Fixed some possible memory leaks during exceptional conditions. 10808 10809Code and Data Size: Current and previous core subsystem library sizes are 10810shown below. These are the code and data sizes for the acpica.lib 10811produced 10812by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10813any ACPI driver or OSPM code. The debug version of the code includes the 10814debug output trace mechanism and has a much larger code and data size. 10815Note 10816that these values will vary depending on the efficiency of the compiler 10817and 10818the compiler options used during generation. 10819 10820 Previous Release: 10821 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10822 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 10823 Current Release: 10824 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10825 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10826 10827 108282) iASL Compiler/Disassembler: 10829 10830Implemented support for all ACPI 3.0 reserved names and methods. 10831 10832Implemented all ACPI 3.0 grammar elements in the front-end, including 10833support for semicolons. 10834 10835Implemented the ACPI 3.0 Function() and ToUUID() macros 10836 10837Fixed a problem in the disassembler where a Scope() operator would not be 10838emitted properly if the target of the scope was in another table. 10839 10840---------------------------------------- 1084115 October 2004. Summary of changes for version 20041015: 10842 10843Note: ACPI CA is currently undergoing an in-depth and complete formal 10844evaluation to test/verify the following areas. Other suggestions are 10845welcome. This will result in an increase in the frequency of releases and 10846the number of bug fixes in the next few months. 10847 - Functional tests for all ASL/AML operators 10848 - All implicit/explicit type conversions 10849 - Bit fields and operation regions 10850 - 64-bit math support and 32-bit-only "truncated" math support 10851 - Exceptional conditions, both compiler and interpreter 10852 - Dynamic object deletion and memory leaks 10853 - ACPI 3.0 support when implemented 10854 - External interfaces to the ACPI subsystem 10855 10856 108571) ACPI CA Core Subsystem: 10858 10859Fixed two alignment issues on 64-bit platforms - within debug statements 10860in 10861AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 10862Address 10863field within the non-aligned ACPI generic address structure. 10864 10865Fixed a problem in the Increment and Decrement operators where incorrect 10866operand resolution could result in the inadvertent modification of the 10867original integer when the integer is passed into another method as an 10868argument and the arg is then incremented/decremented. 10869 10870Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 10871bit 10872BCD number were truncated during conversion. 10873 10874Fixed a problem in the ToDecimal operator where the length of the 10875resulting 10876string could be set incorrectly too long if the input operand was a 10877Buffer 10878object. 10879 10880Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 10881(0) 10882within a buffer would prematurely terminate a compare between buffer 10883objects. 10884 10885Added a check for string overflow (>200 characters as per the ACPI 10886specification) during the Concatenate operator with two string operands. 10887 10888Code and Data Size: Current and previous core subsystem library sizes are 10889shown below. These are the code and data sizes for the acpica.lib 10890produced 10891by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10892any ACPI driver or OSPM code. The debug version of the code includes the 10893debug output trace mechanism and has a much larger code and data size. 10894Note 10895that these values will vary depending on the efficiency of the compiler 10896and 10897the compiler options used during generation. 10898 10899 Previous Release: 10900 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10901 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10902 Current Release: 10903 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10904 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 10905 10906 10907 109082) iASL Compiler/Disassembler: 10909 10910Allow the use of the ObjectType operator on uninitialized Locals and Args 10911(returns 0 as per the ACPI specification). 10912 10913Fixed a problem where the compiler would fault if there was a syntax 10914error 10915in the FieldName of all of the various CreateXXXField operators. 10916 10917Disallow the use of lower case letters within the EISAID macro, as per 10918the 10919ACPI specification. All EISAID strings must be of the form "UUUNNNN" 10920Where 10921U is an uppercase letter and N is a hex digit. 10922 10923 10924---------------------------------------- 1092506 October 2004. Summary of changes for version 20041006: 10926 109271) ACPI CA Core Subsystem: 10928 10929Implemented support for the ACPI 3.0 Timer operator. This ASL function 10930implements a 64-bit timer with 100 nanosecond granularity. 10931 10932Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 10933implement the ACPI 3.0 Timer operator. This allows the host OS to 10934implement 10935the timer with the best clock available. Also, it keeps the core 10936subsystem 10937out of the clock handling business, since the host OS (usually) performs 10938this function. 10939 10940Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 10941functions use a 64-bit address which is part of the packed ACPI Generic 10942Address Structure. Since the structure is non-aligned, the alignment 10943macros 10944are now used to extract the address to a local variable before use. 10945 10946Fixed a problem where the ToInteger operator assumed all input strings 10947were 10948hexadecimal. The operator now handles both decimal strings and hex 10949strings 10950(prefixed with "0x"). 10951 10952Fixed a problem where the string length in the string object created as a 10953result of the internal ConvertToString procedure could be incorrect. This 10954potentially affected all implicit conversions and also the 10955ToDecimalString 10956and ToHexString operators. 10957 10958Fixed two problems in the ToString operator. If the length parameter was 10959zero, an incorrect string object was created and the value of the input 10960length parameter was inadvertently changed from zero to Ones. 10961 10962Fixed a problem where the optional ResourceSource string in the 10963ExtendedIRQ 10964resource macro was ignored. 10965 10966Simplified the interfaces to the internal division functions, reducing 10967code 10968size and complexity. 10969 10970Code and Data Size: Current and previous core subsystem library sizes are 10971shown below. These are the code and data sizes for the acpica.lib 10972produced 10973by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10974any ACPI driver or OSPM code. The debug version of the code includes the 10975debug output trace mechanism and has a much larger code and data size. 10976Note 10977that these values will vary depending on the efficiency of the compiler 10978and 10979the compiler options used during generation. 10980 10981 Previous Release: 10982 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 10983 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 10984 Current Release: 10985 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10986 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10987 10988 109892) iASL Compiler/Disassembler: 10990 10991Implemented support for the ACPI 3.0 Timer operator. 10992 10993Fixed a problem where the Default() operator was inadvertently ignored in 10994a 10995Switch/Case block. This was a problem in the translation of the Switch 10996statement to If...Else pairs. 10997 10998Added support to allow a standalone Return operator, with no parentheses 10999(or 11000operands). 11001 11002Fixed a problem with code generation for the ElseIf operator where the 11003translated Else...If parse tree was improperly constructed leading to the 11004loss of some code. 11005 11006---------------------------------------- 1100722 September 2004. Summary of changes for version 20040922: 11008 110091) ACPI CA Core Subsystem: 11010 11011Fixed a problem with the implementation of the LNot() operator where 11012"Ones" 11013was not returned for the TRUE case. Changed the code to return Ones 11014instead 11015of (!Arg) which was usually 1. This change affects iASL constant folding 11016for 11017this operator also. 11018 11019Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 11020not 11021initialized properly -- Now zero the entire buffer in this case where the 11022buffer already exists. 11023 11024Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 11025Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 11026related code considerably. This will require changes/updates to all OS 11027interface layers (OSLs.) 11028 11029Implemented a new external interface, AcpiInstallExceptionHandler, to 11030allow 11031a system exception handler to be installed. This handler is invoked upon 11032any 11033run-time exception that occurs during control method execution. 11034 11035Added support for the DSDT in AcpiTbFindTable. This allows the 11036DataTableRegion() operator to access the local copy of the DSDT. 11037 11038Code and Data Size: Current and previous core subsystem library sizes are 11039shown below. These are the code and data sizes for the acpica.lib 11040produced 11041by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11042any ACPI driver or OSPM code. The debug version of the code includes the 11043debug output trace mechanism and has a much larger code and data size. 11044Note 11045that these values will vary depending on the efficiency of the compiler 11046and 11047the compiler options used during generation. 11048 11049 Previous Release: 11050 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11051 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11052 Current Release: 11053 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 11054 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 11055 11056 110572) iASL Compiler/Disassembler: 11058 11059Fixed a problem with constant folding and the LNot operator. LNot was 11060returning 1 in the TRUE case, not Ones as per the ACPI specification. 11061This 11062could result in the generation of an incorrect folded/reduced constant. 11063 11064End-Of-File is now allowed within a "//"-style comment. A parse error no 11065longer occurs if such a comment is at the very end of the input ASL 11066source 11067file. 11068 11069Implemented the "-r" option to override the Revision in the table header. 11070The initial use of this option will be to simplify the evaluation of the 11071AML 11072interpreter by allowing a single ASL source module to be compiled for 11073either 1107432-bit or 64-bit integers. 11075 11076 11077---------------------------------------- 1107827 August 2004. Summary of changes for version 20040827: 11079 110801) ACPI CA Core Subsystem: 11081 11082- Implemented support for implicit object conversion in the non-numeric 11083logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 11084and 11085LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 11086the second operand is implicitly converted on the fly to match the type 11087of 11088the first operand. For example: 11089 11090 LEqual (Source1, Source2) 11091 11092Source1 and Source2 must each evaluate to an integer, a string, or a 11093buffer. 11094The data type of Source1 dictates the required type of Source2. Source2 11095is 11096implicitly converted if necessary to match the type of Source1. 11097 11098- Updated and corrected the behavior of the string conversion support. 11099The 11100rules concerning conversion of buffers to strings (according to the ACPI 11101specification) are as follows: 11102 11103ToDecimalString - explicit byte-wise conversion of buffer to string of 11104decimal values (0-255) separated by commas. ToHexString - explicit byte- 11105wise 11106conversion of buffer to string of hex values (0-FF) separated by commas. 11107ToString - explicit byte-wise conversion of buffer to string. Byte-by- 11108byte 11109copy with no transform except NULL terminated. Any other implicit buffer- 11110to- 11111string conversion - byte-wise conversion of buffer to string of hex 11112values 11113(0-FF) separated by spaces. 11114 11115- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 11116 11117- Fixed a problem in AcpiNsGetPathnameLength where the returned length 11118was 11119one byte too short in the case of a node in the root scope. This could 11120cause a fault during debug output. 11121 11122- Code and Data Size: Current and previous core subsystem library sizes 11123are 11124shown below. These are the code and data sizes for the acpica.lib 11125produced 11126by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11127any ACPI driver or OSPM code. The debug version of the code includes the 11128debug output trace mechanism and has a much larger code and data size. 11129Note 11130that these values will vary depending on the efficiency of the compiler 11131and 11132the compiler options used during generation. 11133 11134 Previous Release: 11135 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11136 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11137 Current Release: 11138 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11139 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11140 11141 111422) iASL Compiler/Disassembler: 11143 11144- Fixed a Linux generation error. 11145 11146 11147---------------------------------------- 1114816 August 2004. Summary of changes for version 20040816: 11149 111501) ACPI CA Core Subsystem: 11151 11152Designed and implemented support within the AML interpreter for the so- 11153called "implicit return". This support returns the result of the last 11154ASL 11155operation within a control method, in the absence of an explicit Return() 11156operator. A few machines depend on this behavior, even though it is not 11157explicitly supported by the ASL language. It is optional support that 11158can 11159be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 11160 11161Removed support for the PCI_Config address space from the internal low 11162level 11163hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 11164support was not used internally, and would not work correctly anyway 11165because 11166the PCI bus number and segment number were not supported. There are 11167separate interfaces for PCI configuration space access because of the 11168unique 11169interface. 11170 11171Code and Data Size: Current and previous core subsystem library sizes are 11172shown below. These are the code and data sizes for the acpica.lib 11173produced 11174by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11175any ACPI driver or OSPM code. The debug version of the code includes the 11176debug output trace mechanism and has a much larger code and data size. 11177Note 11178that these values will vary depending on the efficiency of the compiler 11179and 11180the compiler options used during generation. 11181 11182 Previous Release: 11183 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11184 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 11185 Current Release: 11186 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11187 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11188 11189 111902) iASL Compiler/Disassembler: 11191 11192Fixed a problem where constants in ASL expressions at the root level (not 11193within a control method) could be inadvertently truncated during code 11194generation. This problem was introduced in the 20040715 release. 11195 11196 11197---------------------------------------- 1119815 July 2004. Summary of changes for version 20040715: 11199 112001) ACPI CA Core Subsystem: 11201 11202Restructured the internal HW GPE interfaces to pass/track the current 11203state 11204of interrupts (enabled/disabled) in order to avoid possible deadlock and 11205increase flexibility of the interfaces. 11206 11207Implemented a "lexicographical compare" for String and Buffer objects 11208within 11209the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 11210- 11211as per further clarification to the ACPI specification. Behavior is 11212similar 11213to C library "strcmp". 11214 11215Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 11216external function. In the 32-bit non-debug case, the stack use has been 11217reduced from 168 bytes to 32 bytes. 11218 11219Deployed a new run-time configuration flag, 11220AcpiGbl_EnableInterpreterSlack, 11221whose purpose is to allow the AML interpreter to forgive certain bad AML 11222constructs. Default setting is FALSE. 11223 11224Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 11225IO 11226support code. If enabled, it allows field access to go beyond the end of 11227a 11228region definition if the field is within the region length rounded up to 11229the 11230next access width boundary (a common coding error.) 11231 11232Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 11233ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 11234these 11235symbols are lowercased by the latest version of the AcpiSrc tool. 11236 11237The prototypes for the PCI interfaces in acpiosxf.h have been updated to 11238rename "Register" to simply "Reg" to prevent certain compilers from 11239complaining. 11240 11241Code and Data Size: Current and previous core subsystem library sizes are 11242shown below. These are the code and data sizes for the acpica.lib 11243produced 11244by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11245any ACPI driver or OSPM code. The debug version of the code includes the 11246debug output trace mechanism and has a much larger code and data size. 11247Note 11248that these values will vary depending on the efficiency of the compiler 11249and 11250the compiler options used during generation. 11251 11252 Previous Release: 11253 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11254 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11255 Current Release: 11256 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11257 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 11258 11259 112602) iASL Compiler/Disassembler: 11261 11262Implemented full support for Package objects within the Case() operator. 11263Note: The Break() operator is currently not supported within Case blocks 11264(TermLists) as there is some question about backward compatibility with 11265ACPI 112661.0 interpreters. 11267 11268 11269Fixed a problem where complex terms were not supported properly within 11270the 11271Switch() operator. 11272 11273Eliminated extraneous warning for compiler-emitted reserved names of the 11274form "_T_x". (Used in Switch/Case operators.) 11275 11276Eliminated optimization messages for "_T_x" objects and small constants 11277within the DefinitionBlock operator. 11278 11279 11280---------------------------------------- 1128115 June 2004. Summary of changes for version 20040615: 11282 112831) ACPI CA Core Subsystem: 11284 11285Implemented support for Buffer and String objects (as per ACPI 2.0) for 11286the 11287following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11288LLessEqual. 11289 11290All directory names in the entire source package are lower case, as they 11291were in earlier releases. 11292 11293Implemented "Disassemble" command in the AML debugger that will 11294disassemble 11295a single control method. 11296 11297Code and Data Size: Current and previous core subsystem library sizes are 11298shown below. These are the code and data sizes for the acpica.lib 11299produced 11300by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11301any ACPI driver or OSPM code. The debug version of the code includes the 11302debug output trace mechanism and has a much larger code and data size. 11303Note 11304that these values will vary depending on the efficiency of the compiler 11305and 11306the compiler options used during generation. 11307 11308 Previous Release: 11309 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11310 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11311 11312 Current Release: 11313 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11314 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11315 11316 113172) iASL Compiler/Disassembler: 11318 11319Implemented support for Buffer and String objects (as per ACPI 2.0) for 11320the 11321following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11322LLessEqual. 11323 11324All directory names in the entire source package are lower case, as they 11325were in earlier releases. 11326 11327Fixed a fault when using the -g or -d<nofilename> options if the FADT was 11328not found. 11329 11330Fixed an issue with the Windows version of the compiler where later 11331versions 11332of Windows place the FADT in the registry under the name "FADT" and not 11333"FACP" as earlier versions did. This applies when using the -g or - 11334d<nofilename> options. The compiler now looks for both strings as 11335necessary. 11336 11337Fixed a problem with compiler namepath optimization where a namepath 11338within 11339the Scope() operator could not be optimized if the namepath was a subpath 11340of 11341the current scope path. 11342 11343---------------------------------------- 1134427 May 2004. Summary of changes for version 20040527: 11345 113461) ACPI CA Core Subsystem: 11347 11348Completed a new design and implementation for EBDA (Extended BIOS Data 11349Area) 11350support in the RSDP scan code. The original code improperly scanned for 11351the 11352EBDA by simply scanning from memory location 0 to 0x400. The correct 11353method 11354is to first obtain the EBDA pointer from within the BIOS data area, then 11355scan 1K of memory starting at the EBDA pointer. There appear to be few 11356if 11357any machines that place the RSDP in the EBDA, however. 11358 11359Integrated a fix for a possible fault during evaluation of BufferField 11360arguments. Obsolete code that was causing the problem was removed. 11361 11362Found and fixed a problem in the Field Support Code where data could be 11363corrupted on a bit field read that starts on an aligned boundary but does 11364not end on an aligned boundary. Merged the read/write "datum length" 11365calculation code into a common procedure. 11366 11367Rolled in a couple of changes to the FreeBSD-specific header. 11368 11369 11370Code and Data Size: Current and previous core subsystem library sizes are 11371shown below. These are the code and data sizes for the acpica.lib 11372produced 11373by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11374any ACPI driver or OSPM code. The debug version of the code includes the 11375debug output trace mechanism and has a much larger code and data size. 11376Note 11377that these values will vary depending on the efficiency of the compiler 11378and 11379the compiler options used during generation. 11380 11381 Previous Release: 11382 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11383 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 11384 Current Release: 11385 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11386 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11387 11388 113892) iASL Compiler/Disassembler: 11390 11391Fixed a generation warning produced by some overly-verbose compilers for 11392a 1139364-bit constant. 11394 11395---------------------------------------- 1139614 May 2004. Summary of changes for version 20040514: 11397 113981) ACPI CA Core Subsystem: 11399 11400Fixed a problem where hardware GPE enable bits sometimes not set properly 11401during and after GPE method execution. Result of 04/27 changes. 11402 11403Removed extra "clear all GPEs" when sleeping/waking. 11404 11405Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 11406AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 11407to 11408the new AcpiEv* calls as appropriate. 11409 11410ACPI_OS_NAME was removed from the OS-specific headers. The default name 11411is 11412now "Microsoft Windows NT" for maximum compatibility. However this can 11413be 11414changed by modifying the acconfig.h file. 11415 11416Allow a single invocation of AcpiInstallNotifyHandler for a handler that 11417traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 11418 11419Run _INI methods on ThermalZone objects. This is against the ACPI 11420specification, but there is apparently ASL code in the field that has 11421these 11422_INI methods, and apparently "other" AML interpreters execute them. 11423 11424Performed a full 16/32/64 bit lint that resulted in some small changes. 11425 11426Added a sleep simulation command to the AML debugger to test sleep code. 11427 11428Code and Data Size: Current and previous core subsystem library sizes are 11429shown below. These are the code and data sizes for the acpica.lib 11430produced 11431by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11432any ACPI driver or OSPM code. The debug version of the code includes the 11433debug output trace mechanism and has a much larger code and data size. 11434Note 11435that these values will vary depending on the efficiency of the compiler 11436and 11437the compiler options used during generation. 11438 11439 Previous Release: 11440 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11441 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 11442 Current Release: 11443 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11444 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 11445 11446---------------------------------------- 1144727 April 2004. Summary of changes for version 20040427: 11448 114491) ACPI CA Core Subsystem: 11450 11451Completed a major overhaul of the GPE handling within ACPI CA. There are 11452now three types of GPEs: wake-only, runtime-only, and combination 11453wake/run. 11454The only GPEs allowed to be combination wake/run are for button-style 11455devices such as a control-method power button, control-method sleep 11456button, 11457or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 11458not 11459referenced by any _PRW methods are marked for "runtime" and hardware 11460enabled. Any GPE that is referenced by a _PRW method is marked for 11461"wake" 11462(and disabled at runtime). However, at sleep time, only those GPEs that 11463have been specifically enabled for wake via the AcpiEnableGpe interface 11464will 11465actually be hardware enabled. 11466 11467A new external interface has been added, AcpiSetGpeType(), that is meant 11468to 11469be used by device drivers to force a GPE to a particular type. It will 11470be 11471especially useful for the drivers for the button devices mentioned above. 11472 11473Completed restructuring of the ACPI CA initialization sequence so that 11474default operation region handlers are installed before GPEs are 11475initialized 11476and the _PRW methods are executed. This will prevent errors when the 11477_PRW 11478methods attempt to access system memory or I/O space. 11479 11480GPE enable/disable no longer reads the GPE enable register. We now keep 11481the 11482enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 11483thus no longer depend on the hardware to maintain these bits. 11484 11485Always clear the wake status and fixed/GPE status bits before sleep, even 11486for state S5. 11487 11488Improved the AML debugger output for displaying the GPE blocks and their 11489current status. 11490 11491Added new strings for the _OSI method, of the form "Windows 2001 SPx" 11492where 11493x = 0,1,2,3,4. 11494 11495Fixed a problem where the physical address was incorrectly calculated 11496when 11497the Load() operator was used to directly load from an Operation Region 11498(vs. 11499loading from a Field object.) Also added check for minimum table length 11500for 11501this case. 11502 11503Fix for multiple mutex acquisition. Restore original thread SyncLevel on 11504mutex release. 11505 11506Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 11507consistency with the other fields returned. 11508 11509Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 11510structure for each GPE in the system, so the size of this structure is 11511important. 11512 11513CPU stack requirement reduction: Cleaned up the method execution and 11514object 11515evaluation paths so that now a parameter structure is passed, instead of 11516copying the various method parameters over and over again. 11517 11518In evregion.c: Correctly exit and reenter the interpreter region if and 11519only if dispatching an operation region request to a user-installed 11520handler. 11521Do not exit/reenter when dispatching to a default handler (e.g., default 11522system memory or I/O handlers) 11523 11524 11525Notes for updating drivers for the new GPE support. The following 11526changes 11527must be made to ACPI-related device drivers that are attached to one or 11528more 11529GPEs: (This information will be added to the ACPI CA Programmer 11530Reference.) 11531 115321) AcpiInstallGpeHandler no longer automatically enables the GPE, you 11533must 11534explicitly call AcpiEnableGpe. 115352) There is a new interface called AcpiSetGpeType. This should be called 11536before enabling the GPE. Also, this interface will automatically disable 11537the GPE if it is currently enabled. 115383) AcpiEnableGpe no longer supports a GPE type flag. 11539 11540Specific drivers that must be changed: 115411) EC driver: 11542 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 11543AeGpeHandler, NULL); 11544 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 11545 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 11546 115472) Button Drivers (Power, Lid, Sleep): 11548Run _PRW method under parent device 11549If _PRW exists: /* This is a control-method button */ 11550 Extract GPE number and possibly GpeDevice 11551 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 11552 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 11553 11554For all other devices that have _PRWs, we automatically set the GPE type 11555to 11556ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 11557This 11558must be done on a selective basis, usually requiring some kind of user 11559app 11560to allow the user to pick the wake devices. 11561 11562 11563Code and Data Size: Current and previous core subsystem library sizes are 11564shown below. These are the code and data sizes for the acpica.lib 11565produced 11566by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11567any ACPI driver or OSPM code. The debug version of the code includes the 11568debug output trace mechanism and has a much larger code and data size. 11569Note 11570that these values will vary depending on the efficiency of the compiler 11571and 11572the compiler options used during generation. 11573 11574 Previous Release: 11575 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 11576 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 11577 Current Release: 11578 11579 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11580 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 11581 11582 11583 11584---------------------------------------- 1158502 April 2004. Summary of changes for version 20040402: 11586 115871) ACPI CA Core Subsystem: 11588 11589Fixed an interpreter problem where an indirect store through an ArgX 11590parameter was incorrectly applying the "implicit conversion rules" during 11591the store. From the ACPI specification: "If the target is a method local 11592or 11593argument (LocalX or ArgX), no conversion is performed and the result is 11594stored directly to the target". The new behavior is to disable implicit 11595conversion during ALL stores to an ArgX. 11596 11597Changed the behavior of the _PRW method scan to ignore any and all errors 11598returned by a given _PRW. This prevents the scan from aborting from the 11599failure of any single _PRW. 11600 11601Moved the runtime configuration parameters from the global init procedure 11602to 11603static variables in acglobal.h. This will allow the host to override the 11604default values easily. 11605 11606Code and Data Size: Current and previous core subsystem library sizes are 11607shown below. These are the code and data sizes for the acpica.lib 11608produced 11609by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11610any ACPI driver or OSPM code. The debug version of the code includes the 11611debug output trace mechanism and has a much larger code and data size. 11612Note 11613that these values will vary depending on the efficiency of the compiler 11614and 11615the compiler options used during generation. 11616 11617 Previous Release: 11618 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 11619 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 11620 Current Release: 11621 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 11622 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 11623 11624 116252) iASL Compiler/Disassembler: 11626 11627iASL now fully disassembles SSDTs. However, External() statements are 11628not 11629generated automatically for unresolved symbols at this time. This is a 11630planned feature for future implementation. 11631 11632Fixed a scoping problem in the disassembler that occurs when the type of 11633the 11634target of a Scope() operator is overridden. This problem caused an 11635incorrectly nested internal namespace to be constructed. 11636 11637Any warnings or errors that are emitted during disassembly are now 11638commented 11639out automatically so that the resulting file can be recompiled without 11640any 11641hand editing. 11642 11643---------------------------------------- 1164426 March 2004. Summary of changes for version 20040326: 11645 116461) ACPI CA Core Subsystem: 11647 11648Implemented support for "wake" GPEs via interaction between GPEs and the 11649_PRW methods. Every GPE that is pointed to by one or more _PRWs is 11650identified as a WAKE GPE and by default will no longer be enabled at 11651runtime. Previously, we were blindly enabling all GPEs with a 11652corresponding 11653_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 11654We 11655believe this has been the cause of thousands of "spurious" GPEs on some 11656systems. 11657 11658This new GPE behavior is can be reverted to the original behavior (enable 11659ALL GPEs at runtime) via a runtime flag. 11660 11661Fixed a problem where aliased control methods could not access objects 11662properly. The proper scope within the namespace was not initialized 11663(transferred to the target of the aliased method) before executing the 11664target method. 11665 11666Fixed a potential race condition on internal object deletion on the 11667return 11668object in AcpiEvaluateObject. 11669 11670Integrated a fix for resource descriptors where both _MEM and _MTP were 11671being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 11672wide, 0x0F instead of 0x03.) 11673 11674Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 11675preventing 11676a 11677fault in some cases. 11678 11679Updated Notify() values for debug statements in evmisc.c 11680 11681Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 11682 11683Code and Data Size: Current and previous core subsystem library sizes are 11684shown below. These are the code and data sizes for the acpica.lib 11685produced 11686by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11687any ACPI driver or OSPM code. The debug version of the code includes the 11688debug output trace mechanism and has a much larger code and data size. 11689Note 11690that these values will vary depending on the efficiency of the compiler 11691and 11692the compiler options used during generation. 11693 11694 Previous Release: 11695 11696 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 11697 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 11698 Current Release: 11699 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 11700 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 11701 11702---------------------------------------- 1170311 March 2004. Summary of changes for version 20040311: 11704 117051) ACPI CA Core Subsystem: 11706 11707Fixed a problem where errors occurring during the parse phase of control 11708method execution did not abort cleanly. For example, objects created and 11709installed in the namespace were not deleted. This caused all subsequent 11710invocations of the method to return the AE_ALREADY_EXISTS exception. 11711 11712Implemented a mechanism to force a control method to "Serialized" 11713execution 11714if the method attempts to create namespace objects. (The root of the 11715AE_ALREADY_EXISTS problem.) 11716 11717Implemented support for the predefined _OSI "internal" control method. 11718Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 11719and 11720"Windows 2001.1", and can be easily upgraded for new strings as 11721necessary. 11722This feature will allow "other" operating systems to execute the fully 11723tested, "Windows" code path through the ASL code 11724 11725Global Lock Support: Now allows multiple acquires and releases with any 11726internal thread. Removed concept of "owning thread" for this special 11727mutex. 11728 11729Fixed two functions that were inappropriately declaring large objects on 11730the 11731CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 11732during 11733method execution considerably. 11734 11735Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 11736S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 11737 11738Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 11739defined on the machine. 11740 11741Implemented two runtime options: One to force all control method 11742execution 11743to "Serialized" to mimic Windows behavior, another to disable _OSI 11744support 11745if it causes problems on a given machine. 11746 11747Code and Data Size: Current and previous core subsystem library sizes are 11748shown below. These are the code and data sizes for the acpica.lib 11749produced 11750by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11751any ACPI driver or OSPM code. The debug version of the code includes the 11752debug output trace mechanism and has a much larger code and data size. 11753Note 11754that these values will vary depending on the efficiency of the compiler 11755and 11756the compiler options used during generation. 11757 11758 Previous Release: 11759 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 11760 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 11761 Current Release: 11762 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 11763 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 11764 117652) iASL Compiler/Disassembler: 11766 11767Fixed an array size problem for FreeBSD that would cause the compiler to 11768fault. 11769 11770---------------------------------------- 1177120 February 2004. Summary of changes for version 20040220: 11772 11773 117741) ACPI CA Core Subsystem: 11775 11776Implemented execution of _SxD methods for Device objects in the 11777GetObjectInfo interface. 11778 11779Fixed calls to _SST method to pass the correct arguments. 11780 11781Added a call to _SST on wake to restore to "working" state. 11782 11783Check for End-Of-Buffer failure case in the WalkResources interface. 11784 11785Integrated fix for 64-bit alignment issue in acglobal.h by moving two 11786structures to the beginning of the file. 11787 11788After wake, clear GPE status register(s) before enabling GPEs. 11789 11790After wake, clear/enable power button. (Perhaps we should clear/enable 11791all 11792fixed events upon wake.) 11793 11794Fixed a couple of possible memory leaks in the Namespace manager. 11795 11796Integrated latest acnetbsd.h file. 11797 11798---------------------------------------- 1179911 February 2004. Summary of changes for version 20040211: 11800 11801 118021) ACPI CA Core Subsystem: 11803 11804Completed investigation and implementation of the call-by-reference 11805mechanism for control method arguments. 11806 11807Fixed a problem where a store of an object into an indexed package could 11808fail if the store occurs within a different method than the method that 11809created the package. 11810 11811Fixed a problem where the ToDecimal operator could return incorrect 11812results. 11813 11814Fixed a problem where the CopyObject operator could fail on some of the 11815more 11816obscure objects (e.g., Reference objects.) 11817 11818Improved the output of the Debug object to display buffer, package, and 11819index objects. 11820 11821Fixed a problem where constructs of the form "RefOf (ArgX)" did not 11822return 11823the expected result. 11824 11825Added permanent ACPI_REPORT_ERROR macros for all instances of the 11826ACPI_AML_INTERNAL exception. 11827 11828Integrated latest version of acfreebsd.h 11829 11830---------------------------------------- 1183116 January 2004. Summary of changes for version 20040116: 11832 11833The purpose of this release is primarily to update the copyright years in 11834each module, thus causing a huge number of diffs. There are a few small 11835functional changes, however. 11836 118371) ACPI CA Core Subsystem: 11838 11839Improved error messages when there is a problem finding one or more of 11840the 11841required base ACPI tables 11842 11843Reintroduced the definition of APIC_HEADER in actbl.h 11844 11845Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 11846 11847Removed extraneous reference to NewObj in dsmthdat.c 11848 118492) iASL compiler 11850 11851Fixed a problem introduced in December that disabled the correct 11852disassembly 11853of Resource Templates 11854 11855 11856---------------------------------------- 1185703 December 2003. Summary of changes for version 20031203: 11858 118591) ACPI CA Core Subsystem: 11860 11861Changed the initialization of Operation Regions during subsystem 11862init to perform two entire walks of the ACPI namespace; The first 11863to initialize the regions themselves, the second to execute the 11864_REG methods. This fixed some interdependencies across _REG 11865methods found on some machines. 11866 11867Fixed a problem where a Store(Local0, Local1) could simply update 11868the object reference count, and not create a new copy of the 11869object if the Local1 is uninitialized. 11870 11871Implemented support for the _SST reserved method during sleep 11872transitions. 11873 11874Implemented support to clear the SLP_TYP and SLP_EN bits when 11875waking up, this is apparently required by some machines. 11876 11877When sleeping, clear the wake status only if SleepState is not S5. 11878 11879Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 11880pointer arithmetic advanced a string pointer too far. 11881 11882Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 11883could be returned if the requested table has not been loaded. 11884 11885Within the support for IRQ resources, restructured the handling of 11886the active and edge/level bits. 11887 11888Fixed a few problems in AcpiPsxExecute() where memory could be 11889leaked under certain error conditions. 11890 11891Improved error messages for the cases where the ACPI mode could 11892not be entered. 11893 11894Code and Data Size: Current and previous core subsystem library 11895sizes are shown below. These are the code and data sizes for the 11896acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11897these values do not include any ACPI driver or OSPM code. The 11898debug version of the code includes the debug output trace 11899mechanism and has a much larger code and data size. Note that 11900these values will vary depending on the efficiency of the compiler 11901and the compiler options used during generation. 11902 11903 Previous Release (20031029): 11904 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11905 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11906 Current Release: 11907 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 11908 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 11909 119102) iASL Compiler/Disassembler: 11911 11912Implemented a fix for the iASL disassembler where a bad index was 11913generated. This was most noticeable on 64-bit platforms 11914 11915 11916---------------------------------------- 1191729 October 2003. Summary of changes for version 20031029: 11918 119191) ACPI CA Core Subsystem: 11920 11921 11922Fixed a problem where a level-triggered GPE with an associated 11923_Lxx control method was incorrectly cleared twice. 11924 11925Fixed a problem with the Field support code where an access can 11926occur beyond the end-of-region if the field is non-aligned but 11927extends to the very end of the parent region (resulted in an 11928AE_AML_REGION_LIMIT exception.) 11929 11930Fixed a problem with ACPI Fixed Events where an RT Clock handler 11931would not get invoked on an RTC event. The RTC event bitmasks for 11932the PM1 registers were not being initialized properly. 11933 11934Implemented support for executing _STA and _INI methods for 11935Processor objects. Although this is currently not part of the 11936ACPI specification, there is existing ASL code that depends on the 11937init-time execution of these methods. 11938 11939Implemented and deployed a GetDescriptorName function to decode 11940the various types of internal descriptors. Guards against null 11941descriptors during debug output also. 11942 11943Implemented and deployed a GetNodeName function to extract the 4- 11944character namespace node name. This function simplifies the debug 11945and error output, as well as guarding against null pointers during 11946output. 11947 11948Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 11949simplify the debug and error output of 64-bit integers. This 11950macro replaces the HIDWORD and LODWORD macros for dumping these 11951integers. 11952 11953Updated the implementation of the Stall() operator to only call 11954AcpiOsStall(), and also return an error if the operand is larger 11955than 255. This preserves the required behavior of not 11956relinquishing the processor, as would happen if AcpiOsSleep() was 11957called for "long stalls". 11958 11959Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 11960initialized are now treated as NOOPs. 11961 11962Cleaned up a handful of warnings during 64-bit generation. 11963 11964Fixed a reported error where and incorrect GPE number was passed 11965to the GPE dispatch handler. This value is only used for error 11966output, however. Used this opportunity to clean up and streamline 11967the GPE dispatch code. 11968 11969Code and Data Size: Current and previous core subsystem library 11970sizes are shown below. These are the code and data sizes for the 11971acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11972these values do not include any ACPI driver or OSPM code. The 11973 11974debug version of the code includes the debug output trace 11975mechanism and has a much larger code and data size. Note that 11976these values will vary depending on the efficiency of the compiler 11977and the compiler options used during generation. 11978 11979 Previous Release (20031002): 11980 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 11981 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 11982 Current Release: 11983 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11984 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11985 11986 119872) iASL Compiler/Disassembler: 11988 11989Updated the iASL compiler to return an error if the operand to the 11990Stall() operator is larger than 255. 11991 11992 11993---------------------------------------- 1199402 October 2003. Summary of changes for version 20031002: 11995 11996 119971) ACPI CA Core Subsystem: 11998 11999Fixed a problem with Index Fields where the index was not 12000incremented for fields that require multiple writes to the 12001index/data registers (Fields that are wider than the data 12002register.) 12003 12004Fixed a problem with all Field objects where a write could go 12005beyond the end-of-field if the field was larger than the access 12006granularity and therefore required multiple writes to complete the 12007request. An extra write beyond the end of the field could happen 12008inadvertently. 12009 12010Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 12011would incorrectly be returned if the width of the Data Register 12012was larger than the specified field access width. 12013 12014Completed fixes for LoadTable() and Unload() and verified their 12015operation. Implemented full support for the "DdbHandle" object 12016throughout the ACPI CA subsystem. 12017 12018Implemented full support for the MADT and ECDT tables in the ACPI 12019CA header files. Even though these tables are not directly 12020consumed by ACPI CA, the header definitions are useful for ACPI 12021device drivers. 12022 12023Integrated resource descriptor fixes posted to the Linux ACPI 12024list. This included checks for minimum descriptor length, and 12025support for trailing NULL strings within descriptors that have 12026optional string elements. 12027 12028Code and Data Size: Current and previous core subsystem library 12029sizes are shown below. These are the code and data sizes for the 12030acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12031these values do not include any ACPI driver or OSPM code. The 12032debug version of the code includes the debug output trace 12033mechanism and has a much larger code and data size. Note that 12034these values will vary depending on the efficiency of the compiler 12035and the compiler options used during generation. 12036 12037 Previous Release (20030918): 12038 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12039 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12040 Current Release: 12041 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 12042 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 12043 12044 120452) iASL Compiler: 12046 12047Implemented detection of non-ASCII characters within the input 12048source ASL file. This catches attempts to compile binary (AML) 12049files early in the compile, with an informative error message. 12050 12051Fixed a problem where the disassembler would fault if the output 12052filename could not be generated or if the output file could not be 12053opened. 12054 12055---------------------------------------- 1205618 September 2003. Summary of changes for version 20030918: 12057 12058 120591) ACPI CA Core Subsystem: 12060 12061Found and fixed a longstanding problem with the late execution of 12062the various deferred AML opcodes (such as Operation Regions, 12063Buffer Fields, Buffers, and Packages). If the name string 12064specified for the name of the new object placed the object in a 12065scope other than the current scope, the initialization/execution 12066of the opcode failed. The solution to this problem was to 12067implement a mechanism where the late execution of such opcodes 12068does not attempt to lookup/create the name a second time in an 12069incorrect scope. This fixes the "region size computed 12070incorrectly" problem. 12071 12072Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 12073Global Lock AE_BAD_PARAMETER error. 12074 12075Fixed several 64-bit issues with prototypes, casting and data 12076types. 12077 12078Removed duplicate prototype from acdisasm.h 12079 12080Fixed an issue involving EC Operation Region Detach (Shaohua Li) 12081 12082Code and Data Size: Current and previous core subsystem library 12083sizes are shown below. These are the code and data sizes for the 12084acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12085these values do not include any ACPI driver or OSPM code. The 12086debug version of the code includes the debug output trace 12087mechanism and has a much larger code and data size. Note that 12088these values will vary depending on the efficiency of the compiler 12089and the compiler options used during generation. 12090 12091 Previous Release: 12092 12093 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 12094 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 12095 Current Release: 12096 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12097 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12098 12099 121002) Linux: 12101 12102Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 12103correct sleep time in seconds. 12104 12105---------------------------------------- 1210614 July 2003. Summary of changes for version 20030619: 12107 121081) ACPI CA Core Subsystem: 12109 12110Parse SSDTs in order discovered, as opposed to reverse order 12111(Hrvoje Habjanic) 12112 12113Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 12114Klausner, 12115 Nate Lawson) 12116 12117 121182) Linux: 12119 12120Dynamically allocate SDT list (suggested by Andi Kleen) 12121 12122proc function return value cleanups (Andi Kleen) 12123 12124Correctly handle NMI watchdog during long stalls (Andrew Morton) 12125 12126Make it so acpismp=force works (reported by Andrew Morton) 12127 12128 12129---------------------------------------- 1213019 June 2003. Summary of changes for version 20030619: 12131 121321) ACPI CA Core Subsystem: 12133 12134Fix To/FromBCD, eliminating the need for an arch-specific #define. 12135 12136Do not acquire a semaphore in the S5 shutdown path. 12137 12138Fix ex_digits_needed for 0. (Takayoshi Kochi) 12139 12140Fix sleep/stall code reversal. (Andi Kleen) 12141 12142Revert a change having to do with control method calling 12143semantics. 12144 121452) Linux: 12146 12147acpiphp update (Takayoshi Kochi) 12148 12149Export acpi_disabled for sonypi (Stelian Pop) 12150 12151Mention acpismp=force in config help 12152 12153Re-add acpitable.c and acpismp=force. This improves backwards 12154 12155compatibility and also cleans up the code to a significant degree. 12156 12157Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 12158 12159---------------------------------------- 1216022 May 2003. Summary of changes for version 20030522: 12161 121621) ACPI CA Core Subsystem: 12163 12164Found and fixed a reported problem where an AE_NOT_FOUND error 12165occurred occasionally during _BST evaluation. This turned out to 12166be an Owner ID allocation issue where a called method did not get 12167a new ID assigned to it. Eventually, (after 64k calls), the Owner 12168ID UINT16 would wraparound so that the ID would be the same as the 12169caller's and the called method would delete the caller's 12170namespace. 12171 12172Implemented extended error reporting for control methods that are 12173aborted due to a run-time exception. Output includes the exact 12174AML instruction that caused the method abort, a dump of the method 12175locals and arguments at the time of the abort, and a trace of all 12176nested control method calls. 12177 12178Modified the interpreter to allow the creation of buffers of zero 12179length from the AML code. Implemented new code to ensure that no 12180attempt is made to actually allocate a memory buffer (of length 12181zero) - instead, a simple buffer object with a NULL buffer pointer 12182and length zero is created. A warning is no longer issued when 12183the AML attempts to create a zero-length buffer. 12184 12185Implemented a workaround for the "leading asterisk issue" in 12186_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 12187asterisk is automatically removed if present in any HID, UID, or 12188CID strings. The iASL compiler will still flag this asterisk as 12189an error, however. 12190 12191Implemented full support for _CID methods that return a package of 12192multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 12193now additionally returns a device _CID list if present. This 12194required a change to the external interface in order to pass an 12195ACPI_BUFFER object as a parameter since the _CID list is of 12196variable length. 12197 12198Fixed a problem with the new AE_SAME_HANDLER exception where 12199handler initialization code did not know about this exception. 12200 12201Code and Data Size: Current and previous core subsystem library 12202sizes are shown below. These are the code and data sizes for the 12203acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12204these values do not include any ACPI driver or OSPM code. The 12205debug version of the code includes the debug output trace 12206mechanism and has a much larger code and data size. Note that 12207these values will vary depending on the efficiency of the compiler 12208and the compiler options used during generation. 12209 12210 Previous Release (20030509): 12211 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12212 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12213 Current Release: 12214 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 12215 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 12216 12217 122182) Linux: 12219 12220Fixed a bug in which we would reinitialize the ACPI interrupt 12221after it was already working, thus disabling all ACPI and the IRQs 12222for any other device sharing the interrupt. (Thanks to Stian 12223Jordet) 12224 12225Toshiba driver update (John Belmonte) 12226 12227Return only 0 or 1 for our interrupt handler status (Andrew 12228Morton) 12229 12230 122313) iASL Compiler: 12232 12233Fixed a reported problem where multiple (nested) ElseIf() 12234statements were not handled correctly by the compiler, resulting 12235in incorrect warnings and incorrect AML code. This was a problem 12236in both the ASL parser and the code generator. 12237 12238 122394) Documentation: 12240 12241Added changes to existing interfaces, new exception codes, and new 12242text concerning reference count object management versus garbage 12243collection. 12244 12245---------------------------------------- 1224609 May 2003. Summary of changes for version 20030509. 12247 12248 122491) ACPI CA Core Subsystem: 12250 12251Changed the subsystem initialization sequence to hold off 12252installation of address space handlers until the hardware has been 12253initialized and the system has entered ACPI mode. This is because 12254the installation of space handlers can cause _REG methods to be 12255run. Previously, the _REG methods could potentially be run before 12256ACPI mode was enabled. 12257 12258Fixed some memory leak issues related to address space handler and 12259notify handler installation. There were some problems with the 12260reference count mechanism caused by the fact that the handler 12261objects are shared across several namespace objects. 12262 12263Fixed a reported problem where reference counts within the 12264namespace were not properly updated when named objects created by 12265method execution were deleted. 12266 12267Fixed a reported problem where multiple SSDTs caused a deletion 12268issue during subsystem termination. Restructured the table data 12269structures to simplify the linked lists and the related code. 12270 12271Fixed a problem where the table ID associated with secondary 12272tables (SSDTs) was not being propagated into the namespace objects 12273created by those tables. This would only present a problem for 12274tables that are unloaded at run-time, however. 12275 12276Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 12277type as the length parameter (instead of UINT32). 12278 12279Solved a long-standing problem where an ALREADY_EXISTS error 12280appears on various systems. This problem could happen when there 12281are multiple PCI_Config operation regions under a single PCI root 12282bus. This doesn't happen very frequently, but there are some 12283systems that do this in the ASL. 12284 12285Fixed a reported problem where the internal DeleteNode function 12286was incorrectly handling the case where a namespace node was the 12287first in the parent's child list, and had additional peers (not 12288the only child, but first in the list of children.) 12289 12290Code and Data Size: Current core subsystem library sizes are shown 12291below. These are the code and data sizes for the acpica.lib 12292produced by the Microsoft Visual C++ 6.0 compiler, and these 12293values do not include any ACPI driver or OSPM code. The debug 12294version of the code includes the debug output trace mechanism and 12295has a much larger code and data size. Note that these values will 12296vary depending on the efficiency of the compiler and the compiler 12297options used during generation. 12298 12299 Previous Release 12300 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12301 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12302 Current Release: 12303 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12304 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12305 12306 123072) Linux: 12308 12309Allow ":" in OS override string (Ducrot Bruno) 12310 12311Kobject fix (Greg KH) 12312 12313 123143 iASL Compiler/Disassembler: 12315 12316Fixed a problem in the generation of the C source code files (AML 12317is emitted in C source statements for BIOS inclusion) where the 12318Ascii dump that appears within a C comment at the end of each line 12319could cause a compile time error if the AML sequence happens to 12320have an open comment or close comment sequence embedded. 12321 12322 12323---------------------------------------- 1232424 April 2003. Summary of changes for version 20030424. 12325 12326 123271) ACPI CA Core Subsystem: 12328 12329Support for big-endian systems has been implemented. Most of the 12330support has been invisibly added behind big-endian versions of the 12331ACPI_MOVE_* macros. 12332 12333Fixed a problem in AcpiHwDisableGpeBlock() and 12334AcpiHwClearGpeBlock() where an incorrect offset was passed to the 12335low level hardware write routine. The offset parameter was 12336actually eliminated from the low level read/write routines because 12337they had become obsolete. 12338 12339Fixed a problem where a handler object was deleted twice during 12340the removal of a fixed event handler. 12341 12342 123432) Linux: 12344 12345A fix for SMP systems with link devices was contributed by 12346 12347Compaq's Dan Zink. 12348 12349(2.5) Return whether we handled the interrupt in our IRQ handler. 12350(Linux ISRs no longer return void, so we can propagate the handler 12351return value from the ACPI CA core back to the OS.) 12352 12353 12354 123553) Documentation: 12356 12357The ACPI CA Programmer Reference has been updated to reflect new 12358interfaces and changes to existing interfaces. 12359 12360---------------------------------------- 1236128 March 2003. Summary of changes for version 20030328. 12362 123631) ACPI CA Core Subsystem: 12364 12365The GPE Block Device support has been completed. New interfaces 12366are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 12367interfaces (enable, disable, clear, getstatus) have been split 12368into separate interfaces for Fixed Events and General Purpose 12369Events (GPEs) in order to support GPE Block Devices properly. 12370 12371Fixed a problem where the error message "Failed to acquire 12372semaphore" would appear during operations on the embedded 12373controller (EC). 12374 12375Code and Data Size: Current core subsystem library sizes are shown 12376below. These are the code and data sizes for the acpica.lib 12377produced by the Microsoft Visual C++ 6.0 compiler, and these 12378values do not include any ACPI driver or OSPM code. The debug 12379version of the code includes the debug output trace mechanism and 12380has a much larger code and data size. Note that these values will 12381vary depending on the efficiency of the compiler and the compiler 12382options used during generation. 12383 12384 Previous Release 12385 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 12386 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 12387 Current Release: 12388 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12389 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12390 12391 12392---------------------------------------- 1239328 February 2003. Summary of changes for version 20030228. 12394 12395 123961) ACPI CA Core Subsystem: 12397 12398The GPE handling and dispatch code has been completely overhauled 12399in preparation for support of GPE Block Devices (ID ACPI0006). 12400This affects internal data structures and code only; there should 12401be no differences visible externally. One new file has been 12402added, evgpeblk.c 12403 12404The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 12405fields that are used to determine the GPE block lengths. The 12406REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 12407structures are ignored. This is per the ACPI specification but it 12408isn't very clear. The full 256 Block 0/1 GPEs are now supported 12409(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 12410 12411In the SCI interrupt handler, removed the read of the PM1_CONTROL 12412register to look at the SCI_EN bit. On some machines, this read 12413causes an SMI event and greatly slows down SCI events. (This may 12414in fact be the cause of slow battery status response on some 12415systems.) 12416 12417Fixed a problem where a store of a NULL string to a package object 12418could cause the premature deletion of the object. This was seen 12419during execution of the battery _BIF method on some systems, 12420resulting in no battery data being returned. 12421 12422Added AcpiWalkResources interface to simplify parsing of resource 12423lists. 12424 12425Code and Data Size: Current core subsystem library sizes are shown 12426below. These are the code and data sizes for the acpica.lib 12427produced by the Microsoft Visual C++ 6.0 compiler, and these 12428values do not include any ACPI driver or OSPM code. The debug 12429version of the code includes the debug output trace mechanism and 12430has a much larger code and data size. Note that these values will 12431vary depending on the efficiency of the compiler and the compiler 12432options used during generation. 12433 12434 Previous Release 12435 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12436 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12437 Current Release: 12438 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 12439 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 12440 12441 124422) Linux 12443 12444S3 fixes (Ole Rohne) 12445 12446Update ACPI PHP driver with to use new acpi_walk_resource API 12447(Bjorn Helgaas) 12448 12449Add S4BIOS support (Pavel Machek) 12450 12451Map in entire table before performing checksum (John Stultz) 12452 12453Expand the mem= cmdline to allow the specification of reserved and 12454ACPI DATA blocks (Pavel Machek) 12455 12456Never use ACPI on VISWS 12457 12458Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 12459 12460Revert a change that allowed P_BLK lengths to be 4 or 5. This is 12461causing us to think that some systems support C2 when they really 12462don't. 12463 12464Do not count processor objects for non-present CPUs (Thanks to 12465Dominik Brodowski) 12466 12467 124683) iASL Compiler: 12469 12470Fixed a problem where ASL include files could not be found and 12471opened. 12472 12473Added support for the _PDC reserved name. 12474 12475 12476---------------------------------------- 1247722 January 2003. Summary of changes for version 20030122. 12478 12479 124801) ACPI CA Core Subsystem: 12481 12482Added a check for constructs of the form: Store (Local0, Local0) 12483where Local0 is not initialized. Apparently, some BIOS 12484programmers believe that this is a NOOP. Since this store doesn't 12485do anything anyway, the new prototype behavior will ignore this 12486error. This is a case where we can relax the strict checking in 12487the interpreter in the name of compatibility. 12488 12489 124902) Linux 12491 12492The AcpiSrc Source Conversion Utility has been released with the 12493Linux package for the first time. This is the utility that is 12494used to convert the ACPI CA base source code to the Linux version. 12495 12496(Both) Handle P_BLK lengths shorter than 6 more gracefully 12497 12498(Both) Move more headers to include/acpi, and delete an unused 12499header. 12500 12501(Both) Move drivers/acpi/include directory to include/acpi 12502 12503(Both) Boot functions don't use cmdline, so don't pass it around 12504 12505(Both) Remove include of unused header (Adrian Bunk) 12506 12507(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 12508the 12509former now also includes the latter, acpiphp.h only needs the one, 12510now. 12511 12512(2.5) Make it possible to select method of bios restoring after S3 12513resume. [=> no more ugly ifdefs] (Pavel Machek) 12514 12515(2.5) Make proc write interfaces work (Pavel Machek) 12516 12517(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 12518 12519(2.5) Break out ACPI Perf code into its own module, under cpufreq 12520(Dominik Brodowski) 12521 12522(2.4) S4BIOS support (Ducrot Bruno) 12523 12524(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 12525Visinoni) 12526 12527 125283) iASL Compiler: 12529 12530Added support to disassemble SSDT and PSDTs. 12531 12532Implemented support to obtain SSDTs from the Windows registry if 12533available. 12534 12535 12536---------------------------------------- 1253709 January 2003. Summary of changes for version 20030109. 12538 125391) ACPI CA Core Subsystem: 12540 12541Changed the behavior of the internal Buffer-to-String conversion 12542function. The current ACPI specification states that the contents 12543of the buffer are "converted to a string of two-character 12544hexadecimal numbers, each separated by a space". Unfortunately, 12545this definition is not backwards compatible with existing ACPI 1.0 12546implementations (although the behavior was not defined in the ACPI 125471.0 specification). The new behavior simply copies data from the 12548buffer to the string until a null character is found or the end of 12549the buffer is reached. The new String object is always null 12550terminated. This problem was seen during the generation of _BIF 12551battery data where incorrect strings were returned for battery 12552type, etc. This will also require an errata to the ACPI 12553specification. 12554 12555Renamed all instances of NATIVE_UINT and NATIVE_INT to 12556ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 12557 12558Copyright in all module headers (both Linux and non-Linux) has be 12559updated to 2003. 12560 12561Code and Data Size: Current core subsystem library sizes are shown 12562below. These are the code and data sizes for the acpica.lib 12563produced by the Microsoft Visual C++ 6.0 compiler, and these 12564values do not include any ACPI driver or OSPM code. The debug 12565version of the code includes the debug output trace mechanism and 12566has a much larger code and data size. Note that these values will 12567vary depending on the efficiency of the compiler and the compiler 12568options used during generation. 12569 12570 Previous Release 12571 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12572 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12573 Current Release: 12574 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12575 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12576 12577 125782) Linux 12579 12580Fixed an oops on module insertion/removal (Matthew Tippett) 12581 12582(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 12583 12584(2.5) Replace pr_debug (Randy Dunlap) 12585 12586(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 12587 12588(Both) Eliminate spawning of thread from timer callback, in favor 12589of schedule_work() 12590 12591(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 12592 12593(Both) Added define for Fixed Function HW region (Matthew Wilcox) 12594 12595(Both) Add missing statics to button.c (Pavel Machek) 12596 12597Several changes have been made to the source code translation 12598utility that generates the Linux Code in order to make the code 12599more "Linux-like": 12600 12601All typedefs on structs and unions have been removed in keeping 12602with the Linux coding style. 12603 12604Removed the non-Linux SourceSafe module revision number from each 12605module header. 12606 12607Completed major overhaul of symbols to be lowercased for linux. 12608Doubled the number of symbols that are lowercased. 12609 12610Fixed a problem where identifiers within procedure headers and 12611within quotes were not fully lower cased (they were left with a 12612starting capital.) 12613 12614Some C macros whose only purpose is to allow the generation of 16- 12615bit code are now completely removed in the Linux code, increasing 12616readability and maintainability. 12617 12618---------------------------------------- 12619 1262012 December 2002. Summary of changes for version 20021212. 12621 12622 126231) ACPI CA Core Subsystem: 12624 12625Fixed a problem where the creation of a zero-length AML Buffer 12626would cause a fault. 12627 12628Fixed a problem where a Buffer object that pointed to a static AML 12629buffer (in an ACPI table) could inadvertently be deleted, causing 12630memory corruption. 12631 12632Fixed a problem where a user buffer (passed in to the external 12633ACPI CA interfaces) could be overwritten if the buffer was too 12634small to complete the operation, causing memory corruption. 12635 12636Fixed a problem in the Buffer-to-String conversion code where a 12637string of length one was always returned, regardless of the size 12638of the input Buffer object. 12639 12640Removed the NATIVE_CHAR data type across the entire source due to 12641lack of need and lack of consistent use. 12642 12643Code and Data Size: Current core subsystem library sizes are shown 12644below. These are the code and data sizes for the acpica.lib 12645produced by the Microsoft Visual C++ 6.0 compiler, and these 12646values do not include any ACPI driver or OSPM code. The debug 12647version of the code includes the debug output trace mechanism and 12648has a much larger code and data size. Note that these values will 12649vary depending on the efficiency of the compiler and the compiler 12650options used during generation. 12651 12652 Previous Release 12653 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 12654 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 12655 Current Release: 12656 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12657 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12658 12659 12660---------------------------------------- 1266105 December 2002. Summary of changes for version 20021205. 12662 126631) ACPI CA Core Subsystem: 12664 12665Fixed a problem where a store to a String or Buffer object could 12666cause corruption of the DSDT if the object type being stored was 12667the same as the target object type and the length of the object 12668being stored was equal to or smaller than the original (existing) 12669target object. This was seen to cause corruption of battery _BIF 12670buffers if the _BIF method modified the buffer on the fly. 12671 12672Fixed a problem where an internal error was generated if a control 12673method invocation was used in an OperationRegion, Buffer, or 12674Package declaration. This was caused by the deferred parsing of 12675the control method and thus the deferred creation of the internal 12676method object. The solution to this problem was to create the 12677internal method object at the moment the method is encountered in 12678the first pass - so that subsequent references to the method will 12679able to obtain the required parameter count and thus properly 12680parse the method invocation. This problem presented itself as an 12681AE_AML_INTERNAL during the pass 1 parse phase during table load. 12682 12683Fixed a problem where the internal String object copy routine did 12684not always allocate sufficient memory for the target String object 12685and caused memory corruption. This problem was seen to cause 12686"Allocation already present in list!" errors as memory allocation 12687became corrupted. 12688 12689Implemented a new function for the evaluation of namespace objects 12690that allows the specification of the allowable return object 12691types. This simplifies a lot of code that checks for a return 12692object of one or more specific objects returned from the 12693evaluation (such as _STA, etc.) This may become and external 12694function if it would be useful to ACPI-related drivers. 12695 12696Completed another round of prefixing #defines with "ACPI_" for 12697clarity. 12698 12699Completed additional code restructuring to allow more modular 12700linking for iASL compiler and AcpiExec. Several files were split 12701creating new files. New files: nsparse.c dsinit.c evgpe.c 12702 12703Implemented an abort mechanism to terminate an executing control 12704method via the AML debugger. This feature is useful for debugging 12705control methods that depend (wait) for specific hardware 12706responses. 12707 12708Code and Data Size: Current core subsystem library sizes are shown 12709below. These are the code and data sizes for the acpica.lib 12710produced by the Microsoft Visual C++ 6.0 compiler, and these 12711values do not include any ACPI driver or OSPM code. The debug 12712version of the code includes the debug output trace mechanism and 12713has a much larger code and data size. Note that these values will 12714vary depending on the efficiency of the compiler and the compiler 12715options used during generation. 12716 12717 Previous Release 12718 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12719 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 12720 Current Release: 12721 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 12722 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 12723 12724 127252) iASL Compiler/Disassembler 12726 12727Fixed a compiler code generation problem for "Interrupt" Resource 12728Descriptors. If specified in the ASL, the optional "Resource 12729Source Index" and "Resource Source" fields were not inserted into 12730the correct location within the AML resource descriptor, creating 12731an invalid descriptor. 12732 12733Fixed a disassembler problem for "Interrupt" resource descriptors. 12734The optional "Resource Source Index" and "Resource Source" fields 12735were ignored. 12736 12737 12738---------------------------------------- 1273922 November 2002. Summary of changes for version 20021122. 12740 12741 127421) ACPI CA Core Subsystem: 12743 12744Fixed a reported problem where an object stored to a Method Local 12745or Arg was not copied to a new object during the store - the 12746object pointer was simply copied to the Local/Arg. This caused 12747all subsequent operations on the Local/Arg to also affect the 12748original source of the store operation. 12749 12750Fixed a problem where a store operation to a Method Local or Arg 12751was not completed properly if the Local/Arg contained a reference 12752(from RefOf) to a named field. The general-purpose store-to- 12753namespace-node code is now used so that this case is handled 12754automatically. 12755 12756Fixed a problem where the internal object copy routine would cause 12757a protection fault if the object being copied was a Package and 12758contained either 1) a NULL package element or 2) a nested sub- 12759package. 12760 12761Fixed a problem with the GPE initialization that resulted from an 12762ambiguity in the ACPI specification. One section of the 12763specification states that both the address and length of the GPE 12764block must be zero if the block is not supported. Another section 12765implies that only the address need be zero if the block is not 12766supported. The code has been changed so that both the address and 12767the length must be non-zero to indicate a valid GPE block (i.e., 12768if either the address or the length is zero, the GPE block is 12769invalid.) 12770 12771Code and Data Size: Current core subsystem library sizes are shown 12772below. These are the code and data sizes for the acpica.lib 12773produced by the Microsoft Visual C++ 6.0 compiler, and these 12774values do not include any ACPI driver or OSPM code. The debug 12775version of the code includes the debug output trace mechanism and 12776has a much larger code and data size. Note that these values will 12777vary depending on the efficiency of the compiler and the compiler 12778options used during generation. 12779 12780 Previous Release 12781 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 12782 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 12783 Current Release: 12784 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12785 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 12786 12787 127882) Linux 12789 12790Cleaned up EC driver. Exported an external EC read/write 12791interface. By going through this, other drivers (most notably 12792sonypi) will be able to serialize access to the EC. 12793 12794 127953) iASL Compiler/Disassembler 12796 12797Implemented support to optionally generate include files for both 12798ASM and C (the -i switch). This simplifies BIOS development by 12799automatically creating include files that contain external 12800declarations for the symbols that are created within the 12801 12802(optionally generated) ASM and C AML source files. 12803 12804 12805---------------------------------------- 1280615 November 2002. Summary of changes for version 20021115. 12807 128081) ACPI CA Core Subsystem: 12809 12810Fixed a memory leak problem where an error during resolution of 12811 12812method arguments during a method invocation from another method 12813failed to cleanup properly by deleting all successfully resolved 12814argument objects. 12815 12816Fixed a problem where the target of the Index() operator was not 12817correctly constructed if the source object was a package. This 12818problem has not been detected because the use of a target operand 12819with Index() is very rare. 12820 12821Fixed a problem with the Index() operator where an attempt was 12822made to delete the operand objects twice. 12823 12824Fixed a problem where an attempt was made to delete an operand 12825twice during execution of the CondRefOf() operator if the target 12826did not exist. 12827 12828Implemented the first of perhaps several internal create object 12829functions that create and initialize a specific object type. This 12830consolidates duplicated code wherever the object is created, thus 12831shrinking the size of the subsystem. 12832 12833Implemented improved debug/error messages for errors that occur 12834during nested method invocations. All executing method pathnames 12835are displayed (with the error) as the call stack is unwound - thus 12836simplifying debug. 12837 12838Fixed a problem introduced in the 10/02 release that caused 12839premature deletion of a buffer object if a buffer was used as an 12840ASL operand where an integer operand is required (Thus causing an 12841implicit object conversion from Buffer to Integer.) The change in 12842the 10/02 release was attempting to fix a memory leak (albeit 12843incorrectly.) 12844 12845Code and Data Size: Current core subsystem library sizes are shown 12846below. These are the code and data sizes for the acpica.lib 12847produced by the Microsoft Visual C++ 6.0 compiler, and these 12848values do not include any ACPI driver or OSPM code. The debug 12849version of the code includes the debug output trace mechanism and 12850has a much larger code and data size. Note that these values will 12851vary depending on the efficiency of the compiler and the compiler 12852options used during generation. 12853 12854 Previous Release 12855 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 12856 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 12857 Current Release: 12858 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 12859 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 12860 12861 128622) Linux 12863 12864Changed the implementation of the ACPI semaphores to use down() 12865instead of down_interruptable(). It is important that the 12866execution of ACPI control methods not be interrupted by signals. 12867Methods must run to completion, or the system may be left in an 12868unknown/unstable state. 12869 12870Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 12871(Shawn Starr) 12872 12873 128743) iASL Compiler/Disassembler 12875 12876 12877Changed the default location of output files. All output files 12878are now placed in the current directory by default instead of in 12879the directory of the source file. This change may affect some 12880existing makefiles, but it brings the behavior of the compiler in 12881line with other similar tools. The location of the output files 12882can be overridden with the -p command line switch. 12883 12884 12885---------------------------------------- 1288611 November 2002. Summary of changes for version 20021111. 12887 12888 128890) ACPI Specification 2.0B is released and is now available at: 12890http://www.acpi.info/index.html 12891 12892 128931) ACPI CA Core Subsystem: 12894 12895Implemented support for the ACPI 2.0 SMBus Operation Regions. 12896This includes the early detection and handoff of the request to 12897the SMBus region handler (avoiding all of the complex field 12898support code), and support for the bidirectional return packet 12899from an SMBus write operation. This paves the way for the 12900development of SMBus drivers in each host operating system. 12901 12902Fixed a problem where the semaphore WAIT_FOREVER constant was 12903defined as 32 bits, but must be 16 bits according to the ACPI 12904specification. This had the side effect of causing ASL 12905Mutex/Event timeouts even though the ASL code requested a wait 12906forever. Changed all internal references to the ACPI timeout 12907parameter to 16 bits to prevent future problems. Changed the name 12908of WAIT_FOREVER to ACPI_WAIT_FOREVER. 12909 12910Code and Data Size: Current core subsystem library sizes are shown 12911below. These are the code and data sizes for the acpica.lib 12912produced by the Microsoft Visual C++ 6.0 compiler, and these 12913values do not include any ACPI driver or OSPM code. The debug 12914version of the code includes the debug output trace mechanism and 12915has a much larger code and data size. Note that these values will 12916vary depending on the efficiency of the compiler and the compiler 12917options used during generation. 12918 12919 Previous Release 12920 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12921 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12922 Current Release: 12923 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 12924 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 12925 12926 129272) Linux 12928 12929Module loading/unloading fixes (John Cagle) 12930 12931 129323) iASL Compiler/Disassembler 12933 12934Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 12935 12936Implemented support for the disassembly of all SMBus protocol 12937keywords (SMBQuick, SMBWord, etc.) 12938 12939---------------------------------------- 1294001 November 2002. Summary of changes for version 20021101. 12941 12942 129431) ACPI CA Core Subsystem: 12944 12945Fixed a problem where platforms that have a GPE1 block but no GPE0 12946block were not handled correctly. This resulted in a "GPE 12947overlap" error message. GPE0 is no longer required. 12948 12949Removed code added in the previous release that inserted nodes 12950into the namespace in alphabetical order. This caused some side- 12951effects on various machines. The root cause of the problem is 12952still under investigation since in theory, the internal ordering 12953of the namespace nodes should not matter. 12954 12955 12956Enhanced error reporting for the case where a named object is not 12957found during control method execution. The full ACPI namepath 12958(name reference) of the object that was not found is displayed in 12959this case. 12960 12961Note: as a result of the overhaul of the namespace object types in 12962the previous release, the namespace nodes for the predefined 12963scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 12964instead of ACPI_TYPE_ANY. This simplifies the namespace 12965management code but may affect code that walks the namespace tree 12966looking for specific object types. 12967 12968Code and Data Size: Current core subsystem library sizes are shown 12969below. These are the code and data sizes for the acpica.lib 12970produced by the Microsoft Visual C++ 6.0 compiler, and these 12971values do not include any ACPI driver or OSPM code. The debug 12972version of the code includes the debug output trace mechanism and 12973has a much larger code and data size. Note that these values will 12974vary depending on the efficiency of the compiler and the compiler 12975options used during generation. 12976 12977 Previous Release 12978 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 12979 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 12980 Current Release: 12981 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12982 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12983 12984 129852) Linux 12986 12987Fixed a problem introduced in the previous release where the 12988Processor and Thermal objects were not recognized and installed in 12989/proc. This was related to the scope type change described above. 12990 12991 129923) iASL Compiler/Disassembler 12993 12994Implemented the -g option to get all of the required ACPI tables 12995from the registry and save them to files (Windows version of the 12996compiler only.) The required tables are the FADT, FACS, and DSDT. 12997 12998Added ACPI table checksum validation during table disassembly in 12999order to catch corrupted tables. 13000 13001 13002---------------------------------------- 1300322 October 2002. Summary of changes for version 20021022. 13004 130051) ACPI CA Core Subsystem: 13006 13007Implemented a restriction on the Scope operator that the target 13008must already exist in the namespace at the time the operator is 13009encountered (during table load or method execution). In other 13010words, forward references are not allowed and Scope() cannot 13011create a new object. This changes the previous behavior where the 13012interpreter would create the name if not found. This new behavior 13013correctly enables the search-to-root algorithm during namespace 13014lookup of the target name. Because of this upsearch, this fixes 13015the known Compaq _SB_.OKEC problem and makes both the AML 13016interpreter and iASL compiler compatible with other ACPI 13017implementations. 13018 13019Completed a major overhaul of the internal ACPI object types for 13020the ACPI Namespace and the associated operand objects. Many of 13021these types had become obsolete with the introduction of the two- 13022pass namespace load. This cleanup simplifies the code and makes 13023the entire namespace load mechanism much clearer and easier to 13024understand. 13025 13026Improved debug output for tracking scope opening/closing to help 13027diagnose scoping issues. The old scope name as well as the new 13028scope name are displayed. Also improved error messages for 13029problems with ASL Mutex objects and error messages for GPE 13030problems. 13031 13032Cleaned up the namespace dump code, removed obsolete code. 13033 13034All string output (for all namespace/object dumps) now uses the 13035common ACPI string output procedure which handles escapes properly 13036and does not emit non-printable characters. 13037 13038Fixed some issues with constants in the 64-bit version of the 13039local C library (utclib.c) 13040 13041 130422) Linux 13043 13044EC Driver: No longer attempts to acquire the Global Lock at 13045interrupt level. 13046 13047 130483) iASL Compiler/Disassembler 13049 13050Implemented ACPI 2.0B grammar change that disallows all Type 1 and 130512 opcodes outside of a control method. This means that the 13052"executable" operators (versus the "namespace" operators) cannot 13053be used at the table level; they can only be used within a control 13054method. 13055 13056Implemented the restriction on the Scope() operator where the 13057target must already exist in the namespace at the time the 13058operator is encountered (during ASL compilation). In other words, 13059forward references are not allowed and Scope() cannot create a new 13060object. This makes the iASL compiler compatible with other ACPI 13061implementations and makes the Scope() implementation adhere to the 13062ACPI specification. 13063 13064Fixed a problem where namepath optimization for the Alias operator 13065was optimizing the wrong path (of the two namepaths.) This caused 13066a "Missing alias link" error message. 13067 13068Fixed a problem where an "unknown reserved name" warning could be 13069incorrectly generated for names like "_SB" when the trailing 13070underscore is not used in the original ASL. 13071 13072Fixed a problem where the reserved name check did not handle 13073NamePaths with multiple NameSegs correctly. The first nameseg of 13074the NamePath was examined instead of the last NameSeg. 13075 13076 13077---------------------------------------- 13078 1307902 October 2002. Summary of changes for this release. 13080 13081 130821) ACPI CA Core Subsystem version 20021002: 13083 13084Fixed a problem where a store/copy of a string to an existing 13085string did not always set the string length properly in the String 13086object. 13087 13088Fixed a reported problem with the ToString operator where the 13089behavior was identical to the ToHexString operator instead of just 13090simply converting a raw buffer to a string data type. 13091 13092Fixed a problem where CopyObject and the other "explicit" 13093conversion operators were not updating the internal namespace node 13094type as part of the store operation. 13095 13096Fixed a memory leak during implicit source operand conversion 13097where the original object was not deleted if it was converted to a 13098new object of a different type. 13099 13100Enhanced error messages for all problems associated with namespace 13101lookups. Common procedure generates and prints the lookup name as 13102well as the formatted status. 13103 13104Completed implementation of a new design for the Alias support 13105within the namespace. The existing design did not handle the case 13106where a new object was assigned to one of the two names due to the 13107use of an explicit conversion operator, resulting in the two names 13108pointing to two different objects. The new design simply points 13109the Alias name to the original name node - not to the object. 13110This results in a level of indirection that must be handled in the 13111name resolution mechanism. 13112 13113Code and Data Size: Current core subsystem library sizes are shown 13114below. These are the code and data sizes for the acpica.lib 13115produced by the Microsoft Visual C++ 6.0 compiler, and these 13116values do not include any ACPI driver or OSPM code. The debug 13117version of the code includes the debug output trace mechanism and 13118has a larger code and data size. Note that these values will vary 13119depending on the efficiency of the compiler and the compiler 13120options used during generation. 13121 13122 Previous Release 13123 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13124 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13125 Current Release: 13126 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 13127 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 13128 13129 131302) Linux 13131 13132Initialize thermal driver's timer before it is used. (Knut 13133Neumann) 13134 13135Allow handling negative celsius values. (Kochi Takayoshi) 13136 13137Fix thermal management and make trip points. R/W (Pavel Machek) 13138 13139Fix /proc/acpi/sleep. (P. Christeas) 13140 13141IA64 fixes. (David Mosberger) 13142 13143Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 13144 13145Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 13146Brodowski) 13147 13148 131493) iASL Compiler/Disassembler 13150 13151Clarified some warning/error messages. 13152 13153 13154---------------------------------------- 1315518 September 2002. Summary of changes for this release. 13156 13157 131581) ACPI CA Core Subsystem version 20020918: 13159 13160Fixed a reported problem with reference chaining (via the Index() 13161and RefOf() operators) in the ObjectType() and SizeOf() operators. 13162The definition of these operators includes the dereferencing of 13163all chained references to return information on the base object. 13164 13165Fixed a problem with stores to indexed package elements - the 13166existing code would not complete the store if an "implicit 13167conversion" was not performed. In other words, if the existing 13168object (package element) was to be replaced completely, the code 13169didn't handle this case. 13170 13171Relaxed typechecking on the ASL "Scope" operator to allow the 13172target name to refer to an object of type Integer, String, or 13173Buffer, in addition to the scoping object types (Device, 13174predefined Scopes, Processor, PowerResource, and ThermalZone.) 13175This allows existing AML code that has workarounds for a bug in 13176Windows to function properly. A warning is issued, however. This 13177affects both the AML interpreter and the iASL compiler. Below is 13178an example of this type of ASL code: 13179 13180 Name(DEB,0x00) 13181 Scope(DEB) 13182 { 13183 13184Fixed some reported problems with 64-bit integer support in the 13185local implementation of C library functions (clib.c) 13186 13187 131882) Linux 13189 13190Use ACPI fix map region instead of IOAPIC region, since it is 13191undefined in non-SMP. 13192 13193Ensure that the SCI has the proper polarity and trigger, even on 13194systems that do not have an interrupt override entry in the MADT. 13195 131962.5 big driver reorganization (Pat Mochel) 13197 13198Use early table mapping code from acpitable.c (Andi Kleen) 13199 13200New blacklist entries (Andi Kleen) 13201 13202Blacklist improvements. Split blacklist code out into a separate 13203file. Move checking the blacklist to very early. Previously, we 13204would use ACPI tables, and then halfway through init, check the 13205blacklist -- too late. Now, it's early enough to completely fall- 13206back to non-ACPI. 13207 13208 132093) iASL Compiler/Disassembler version 20020918: 13210 13211Fixed a problem where the typechecking code didn't know that an 13212alias could point to a method. In other words, aliases were not 13213being dereferenced during typechecking. 13214 13215 13216---------------------------------------- 1321729 August 2002. Summary of changes for this release. 13218 132191) ACPI CA Core Subsystem Version 20020829: 13220 13221If the target of a Scope() operator already exists, it must be an 13222object type that actually opens a scope -- such as a Device, 13223Method, Scope, etc. This is a fatal runtime error. Similar error 13224check has been added to the iASL compiler also. 13225 13226Tightened up the namespace load to disallow multiple names in the 13227same scope. This previously was allowed if both objects were of 13228the same type. (i.e., a lookup was the same as entering a new 13229name). 13230 13231 132322) Linux 13233 13234Ensure that the ACPI interrupt has the proper trigger and 13235polarity. 13236 13237local_irq_disable is extraneous. (Matthew Wilcox) 13238 13239Make "acpi=off" actually do what it says, and not use the ACPI 13240interpreter *or* the tables. 13241 13242Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 13243Takayoshi) 13244 13245 132463) iASL Compiler/Disassembler Version 20020829: 13247 13248Implemented namepath optimization for name declarations. For 13249example, a declaration like "Method (\_SB_.ABCD)" would get 13250optimized to "Method (ABCD)" if the declaration is within the 13251\_SB_ scope. This optimization is in addition to the named 13252reference path optimization first released in the previous 13253version. This would seem to complete all possible optimizations 13254for namepaths within the ASL/AML. 13255 13256If the target of a Scope() operator already exists, it must be an 13257object type that actually opens a scope -- such as a Device, 13258Method, Scope, etc. 13259 13260Implemented a check and warning for unreachable code in the same 13261block below a Return() statement. 13262 13263Fixed a problem where the listing file was not generated if the 13264compiler aborted if the maximum error count was exceeded (200). 13265 13266Fixed a problem where the typechecking of method return values was 13267broken. This includes the check for a return value when the 13268method is invoked as a TermArg (a return value is expected.) 13269 13270Fixed a reported problem where EOF conditions during a quoted 13271string or comment caused a fault. 13272 13273 13274---------------------------------------- 1327515 August 2002. Summary of changes for this release. 13276 132771) ACPI CA Core Subsystem Version 20020815: 13278 13279Fixed a reported problem where a Store to a method argument that 13280contains a reference did not perform the indirect store correctly. 13281This problem was created during the conversion to the new 13282reference object model - the indirect store to a method argument 13283code was not updated to reflect the new model. 13284 13285Reworked the ACPI mode change code to better conform to ACPI 2.0, 13286handle corner cases, and improve code legibility (Kochi Takayoshi) 13287 13288Fixed a problem with the pathname parsing for the carat (^) 13289prefix. The heavy use of the carat operator by the new namepath 13290optimization in the iASL compiler uncovered a problem with the AML 13291interpreter handling of this prefix. In the case where one or 13292more carats precede a single nameseg, the nameseg was treated as 13293standalone and the search rule (to root) was inadvertently 13294applied. This could cause both the iASL compiler and the 13295interpreter to find the wrong object or to miss the error that 13296should occur if the object does not exist at that exact pathname. 13297 13298Found and fixed the problem where the HP Pavilion DSDT would not 13299load. This was a relatively minor tweak to the table loading code 13300(a problem caused by the unexpected encounter with a method 13301invocation not within a control method), but it does not solve the 13302overall issue of the execution of AML code at the table level. 13303This investigation is still ongoing. 13304 13305Code and Data Size: Current core subsystem library sizes are shown 13306below. These are the code and data sizes for the acpica.lib 13307produced by the Microsoft Visual C++ 6.0 compiler, and these 13308values do not include any ACPI driver or OSPM code. The debug 13309version of the code includes the debug output trace mechanism and 13310has a larger code and data size. Note that these values will vary 13311depending on the efficiency of the compiler and the compiler 13312options used during generation. 13313 13314 Previous Release 13315 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13316 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13317 Current Release: 13318 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13319 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13320 13321 133222) Linux 13323 13324Remove redundant slab.h include (Brad Hards) 13325 13326Fix several bugs in thermal.c (Herbert Nachtnebel) 13327 13328Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 13329 13330Change acpi_system_suspend to use updated irq functions (Pavel 13331Machek) 13332 13333Export acpi_get_firmware_table (Matthew Wilcox) 13334 13335Use proper root proc entry for ACPI (Kochi Takayoshi) 13336 13337Fix early-boot table parsing (Bjorn Helgaas) 13338 13339 133403) iASL Compiler/Disassembler 13341 13342Reworked the compiler options to make them more consistent and to 13343use two-letter options where appropriate. We were running out of 13344sensible letters. This may break some makefiles, so check the 13345current options list by invoking the compiler with no parameters. 13346 13347Completed the design and implementation of the ASL namepath 13348optimization option for the compiler. This option optimizes all 13349references to named objects to the shortest possible path. The 13350first attempt tries to utilize a single nameseg (4 characters) and 13351the "search-to-root" algorithm used by the interpreter. If that 13352cannot be used (because either the name is not in the search path 13353or there is a conflict with another object with the same name), 13354the pathname is optimized using the carat prefix (usually a 13355shorter string than specifying the entire path from the root.) 13356 13357Implemented support to obtain the DSDT from the Windows registry 13358(when the disassembly option is specified with no input file). 13359Added this code as the implementation for AcpiOsTableOverride in 13360the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 13361utility) to scan memory for the DSDT to the AcpiOsTableOverride 13362function in the DOS OSL to make the disassembler truly OS 13363independent. 13364 13365Implemented a new option to disassemble and compile in one step. 13366When used without an input filename, this option will grab the 13367DSDT from the local machine, disassemble it, and compile it in one 13368step. 13369 13370Added a warning message for invalid escapes (a backslash followed 13371by any character other than the allowable escapes). This catches 13372the quoted string error "\_SB_" (which should be "\\_SB_" ). 13373 13374Also, there are numerous instances in the ACPI specification where 13375this error occurs. 13376 13377Added a compiler option to disable all optimizations. This is 13378basically the "compatibility mode" because by using this option, 13379the AML code will come out exactly the same as other ASL 13380compilers. 13381 13382Added error messages for incorrectly ordered dependent resource 13383functions. This includes: missing EndDependentFn macro at end of 13384dependent resource list, nested dependent function macros (both 13385start and end), and missing StartDependentFn macro. These are 13386common errors that should be caught at compile time. 13387 13388Implemented _OSI support for the disassembler and compiler. _OSI 13389must be included in the namespace for proper disassembly (because 13390the disassembler must know the number of arguments.) 13391 13392Added an "optimization" message type that is optional (off by 13393default). This message is used for all optimizations - including 13394constant folding, integer optimization, and namepath optimization. 13395 13396---------------------------------------- 1339725 July 2002. Summary of changes for this release. 13398 13399 134001) ACPI CA Core Subsystem Version 20020725: 13401 13402The AML Disassembler has been enhanced to produce compilable ASL 13403code and has been integrated into the iASL compiler (see below) as 13404well as the single-step disassembly for the AML debugger and the 13405disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 13406resource templates and macros are fully supported. The 13407disassembler has been tested on over 30 different AML files, 13408producing identical AML when the resulting disassembled ASL file 13409is recompiled with the same ASL compiler. 13410 13411Modified the Resource Manager to allow zero interrupts and zero 13412dma channels during the GetCurrentResources call. This was 13413causing problems on some platforms. 13414 13415Added the AcpiOsRedirectOutput interface to the OSL to simplify 13416output redirection for the AcpiOsPrintf and AcpiOsVprintf 13417interfaces. 13418 13419Code and Data Size: Current core subsystem library sizes are shown 13420below. These are the code and data sizes for the acpica.lib 13421produced by the Microsoft Visual C++ 6.0 compiler, and these 13422values do not include any ACPI driver or OSPM code. The debug 13423version of the code includes the debug output trace mechanism and 13424has a larger code and data size. Note that these values will vary 13425depending on the efficiency of the compiler and the compiler 13426options used during generation. 13427 13428 Previous Release 13429 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 13430 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 13431 Current Release: 13432 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13433 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13434 13435 134362) Linux 13437 13438Fixed a panic in the EC driver (Dominik Brodowski) 13439 13440Implemented checksum of the R/XSDT itself during Linux table scan 13441(Richard Schaal) 13442 13443 134443) iASL compiler 13445 13446The AML disassembler is integrated into the compiler. The "-d" 13447option invokes the disassembler to completely disassemble an 13448input AML file, producing as output a text ASL file with the 13449extension ".dsl" (to avoid name collisions with existing .asl 13450source files.) A future enhancement will allow the disassembler 13451to obtain the BIOS DSDT from the registry under Windows. 13452 13453Fixed a problem with the VendorShort and VendorLong resource 13454descriptors where an invalid AML sequence was created. 13455 13456Implemented a fix for BufferData term in the ASL parser. It was 13457inadvertently defined twice, allowing invalid syntax to pass and 13458causing reduction conflicts. 13459 13460Fixed a problem where the Ones opcode could get converted to a 13461value of zero if "Ones" was used where a byte, word or dword value 13462was expected. The 64-bit value is now truncated to the correct 13463size with the correct value. 13464 13465 13466 13467---------------------------------------- 1346802 July 2002. Summary of changes for this release. 13469 13470 134711) ACPI CA Core Subsystem Version 20020702: 13472 13473The Table Manager code has been restructured to add several new 13474features. Tables that are not required by the core subsystem 13475(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 13476validated in any way and are returned from AcpiGetFirmwareTable if 13477requested. The AcpiOsTableOverride interface is now called for 13478each table that is loaded by the subsystem in order to allow the 13479host to override any table it chooses. Previously, only the DSDT 13480could be overridden. Added one new files, tbrsdt.c and 13481tbgetall.c. 13482 13483Fixed a problem with the conversion of internal package objects to 13484external objects (when a package is returned from a control 13485method.) The return buffer length was set to zero instead of the 13486proper length of the package object. 13487 13488Fixed a reported problem with the use of the RefOf and DeRefOf 13489operators when passing reference arguments to control methods. A 13490new type of Reference object is used internally for references 13491produced by the RefOf operator. 13492 13493Added additional error messages in the Resource Manager to explain 13494AE_BAD_DATA errors when they occur during resource parsing. 13495 13496Split the AcpiEnableSubsystem into two primitives to enable a 13497finer granularity initialization sequence. These two calls should 13498be called in this order: AcpiEnableSubsystem (flags), 13499AcpiInitializeObjects (flags). The flags parameter remains the 13500same. 13501 13502 135032) Linux 13504 13505Updated the ACPI utilities module to understand the new style of 13506fully resolved package objects that are now returned from the core 13507subsystem. This eliminates errors of the form: 13508 13509 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 13510 acpi_utils-0430 [145] acpi_evaluate_reference: 13511 Invalid element in package (not a device reference) 13512 13513The method evaluation utility uses the new buffer allocation 13514scheme instead of calling AcpiEvaluate Object twice. 13515 13516Added support for ECDT. This allows the use of the Embedded 13517 13518Controller before the namespace has been fully initialized, which 13519is necessary for ACPI 2.0 support, and for some laptops to 13520initialize properly. (Laptops using ECDT are still rare, so only 13521limited testing was performed of the added functionality.) 13522 13523Fixed memory leaks in the EC driver. 13524 13525Eliminated a brittle code structure in acpi_bus_init(). 13526 13527Eliminated the acpi_evaluate() helper function in utils.c. It is 13528no longer needed since acpi_evaluate_object can optionally 13529allocate memory for the return object. 13530 13531Implemented fix for keyboard hang when getting battery readings on 13532some systems (Stephen White) 13533 13534PCI IRQ routing update (Dominik Brodowski) 13535 13536Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 13537support 13538 13539---------------------------------------- 1354011 June 2002. Summary of changes for this release. 13541 13542 135431) ACPI CA Core Subsystem Version 20020611: 13544 13545Fixed a reported problem where constants such as Zero and One 13546appearing within _PRT packages were not handled correctly within 13547the resource manager code. Originally reported against the ASL 13548compiler because the code generator now optimizes integers to 13549their minimal AML representation (i.e. AML constants if possible.) 13550The _PRT code now handles all AML constant opcodes correctly 13551(Zero, One, Ones, Revision). 13552 13553Fixed a problem with the Concatenate operator in the AML 13554interpreter where a buffer result object was incorrectly marked as 13555not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 13556 13557All package sub-objects are now fully resolved before they are 13558returned from the external ACPI interfaces. This means that name 13559strings are resolved to object handles, and constant operators 13560(Zero, One, Ones, Revision) are resolved to Integers. 13561 13562Implemented immediate resolution of the AML Constant opcodes 13563(Zero, One, Ones, Revision) to Integer objects upon detection 13564within the AML stream. This has simplified and reduced the 13565generated code size of the subsystem by eliminating about 10 13566switch statements for these constants (which previously were 13567contained in Reference objects.) The complicating issues are that 13568the Zero opcode is used as a "placeholder" for unspecified 13569optional target operands and stores to constants are defined to be 13570no-ops. 13571 13572Code and Data Size: Current core subsystem library sizes are shown 13573below. These are the code and data sizes for the acpica.lib 13574produced by the Microsoft Visual C++ 6.0 compiler, and these 13575values do not include any ACPI driver or OSPM code. The debug 13576version of the code includes the debug output trace mechanism and 13577has a larger code and data size. Note that these values will vary 13578depending on the efficiency of the compiler and the compiler 13579options used during generation. 13580 13581 Previous Release 13582 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 13583 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 13584 Current Release: 13585 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 13586 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 13587 13588 135892) Linux 13590 13591 13592Added preliminary support for obtaining _TRA data for PCI root 13593bridges (Bjorn Helgaas). 13594 13595 135963) iASL Compiler Version X2046: 13597 13598Fixed a problem where the "_DDN" reserved name was defined to be a 13599control method with one argument. There are no arguments, and 13600_DDN does not have to be a control method. 13601 13602Fixed a problem with the Linux version of the compiler where the 13603source lines printed with error messages were the wrong lines. 13604This turned out to be the "LF versus CR/LF" difference between 13605Windows and Unix. This appears to be the longstanding issue 13606concerning listing output and error messages. 13607 13608Fixed a problem with the Linux version of compiler where opcode 13609names within error messages were wrong. This was caused by a 13610slight difference in the output of the Flex tool on Linux versus 13611Windows. 13612 13613Fixed a problem with the Linux compiler where the hex output files 13614contained some garbage data caused by an internal buffer overrun. 13615 13616 13617---------------------------------------- 1361817 May 2002. Summary of changes for this release. 13619 13620 136211) ACPI CA Core Subsystem Version 20020517: 13622 13623Implemented a workaround to an BIOS bug discovered on the HP 13624OmniBook where the FADT revision number and the table size are 13625inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 13626behavior is to fallback to using only the ACPI 1.0 fields of the 13627FADT if the table is too small to be a ACPI 2.0 table as claimed 13628by the revision number. Although this is a BIOS bug, this is a 13629case where the workaround is simple enough and with no side 13630effects, so it seemed prudent to add it. A warning message is 13631issued, however. 13632 13633Implemented minimum size checks for the fixed-length ACPI tables - 13634- the FADT and FACS, as well as consistency checks between the 13635revision number and the table size. 13636 13637Fixed a reported problem in the table override support where the 13638new table pointer was incorrectly treated as a physical address 13639instead of a logical address. 13640 13641Eliminated the use of the AE_AML_ERROR exception and replaced it 13642with more descriptive codes. 13643 13644Fixed a problem where an exception would occur if an ASL Field was 13645defined with no named Field Units underneath it (used by some 13646index fields). 13647 13648Code and Data Size: Current core subsystem library sizes are shown 13649below. These are the code and data sizes for the acpica.lib 13650produced by the Microsoft Visual C++ 6.0 compiler, and these 13651values do not include any ACPI driver or OSPM code. The debug 13652version of the code includes the debug output trace mechanism and 13653has a larger code and data size. Note that these values will vary 13654depending on the efficiency of the compiler and the compiler 13655options used during generation. 13656 13657 Previous Release 13658 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 13659 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 13660 Current Release: 13661 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 13662 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 13663 13664 13665 136662) Linux 13667 13668Much work done on ACPI init (MADT and PCI IRQ routing support). 13669(Paul D. and Dominik Brodowski) 13670 13671Fix PCI IRQ-related panic on boot (Sam Revitch) 13672 13673Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 13674 13675Fix "MHz" typo (Dominik Brodowski) 13676 13677Fix RTC year 2000 issue (Dominik Brodowski) 13678 13679Preclude multiple button proc entries (Eric Brunet) 13680 13681Moved arch-specific code out of include/platform/aclinux.h 13682 136833) iASL Compiler Version X2044: 13684 13685Implemented error checking for the string used in the EISAID macro 13686(Usually used in the definition of the _HID object.) The code now 13687strictly enforces the PnP format - exactly 7 characters, 3 13688uppercase letters and 4 hex digits. 13689 13690If a raw string is used in the definition of the _HID object 13691(instead of the EISAID macro), the string must contain all 13692alphanumeric characters (e.g., "*PNP0011" is not allowed because 13693of the asterisk.) 13694 13695Implemented checking for invalid use of ACPI reserved names for 13696most of the name creation operators (Name, Device, Event, Mutex, 13697OperationRegion, PowerResource, Processor, and ThermalZone.) 13698Previously, this check was only performed for control methods. 13699 13700Implemented an additional check on the Name operator to emit an 13701error if a reserved name that must be implemented in ASL as a 13702control method is used. We know that a reserved name must be a 13703method if it is defined with input arguments. 13704 13705The warning emitted when a namespace object reference is not found 13706during the cross reference phase has been changed into an error. 13707The "External" directive should be used for names defined in other 13708modules. 13709 13710 137114) Tools and Utilities 13712 13713The 16-bit tools (adump16 and aexec16) have been regenerated and 13714tested. 13715 13716Fixed a problem with the output of both acpidump and adump16 where 13717the indentation of closing parentheses and brackets was not 13718 13719aligned properly with the parent block. 13720 13721 13722---------------------------------------- 1372303 May 2002. Summary of changes for this release. 13724 13725 137261) ACPI CA Core Subsystem Version 20020503: 13727 13728Added support a new OSL interface that allows the host operating 13729 13730system software to override the DSDT found in the firmware - 13731AcpiOsTableOverride. With this interface, the OSL can examine the 13732version of the firmware DSDT and replace it with a different one 13733if desired. 13734 13735Added new external interfaces for accessing ACPI registers from 13736device drivers and other system software - AcpiGetRegister and 13737AcpiSetRegister. This was simply an externalization of the 13738existing AcpiHwBitRegister interfaces. 13739 13740Fixed a regression introduced in the previous build where the 13741ASL/AML CreateField operator always returned an error, 13742"destination must be a NS Node". 13743 13744Extended the maximum time (before failure) to successfully enable 13745ACPI mode to 3 seconds. 13746 13747Code and Data Size: Current core subsystem library sizes are shown 13748below. These are the code and data sizes for the acpica.lib 13749produced by the Microsoft Visual C++ 6.0 compiler, and these 13750values do not include any ACPI driver or OSPM code. The debug 13751version of the code includes the debug output trace mechanism and 13752has a larger code and data size. Note that these values will vary 13753depending on the efficiency of the compiler and the compiler 13754options used during generation. 13755 13756 Previous Release 13757 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 13758 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 13759 Current Release: 13760 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 13761 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 13762 13763 137642) Linux 13765 13766Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 13767free. While 3 out of 4 of our in-house systems work fine, the last 13768one still hangs when testing the LAPIC timer. 13769 13770Renamed many files in 2.5 kernel release to omit "acpi_" from the 13771name. 13772 13773Added warning on boot for Presario 711FR. 13774 13775Sleep improvements (Pavel Machek) 13776 13777ACPI can now be built without CONFIG_PCI enabled. 13778 13779IA64: Fixed memory map functions (JI Lee) 13780 13781 137823) iASL Compiler Version X2043: 13783 13784Added support to allow the compiler to be integrated into the MS 13785VC++ development environment for one-button compilation of single 13786files or entire projects -- with error-to-source-line mapping. 13787 13788Implemented support for compile-time constant folding for the 13789Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 13790specification. This allows the ASL writer to use expressions 13791instead of Integer/Buffer/String constants in terms that must 13792evaluate to constants at compile time and will also simplify the 13793emitted AML in any such sub-expressions that can be folded 13794(evaluated at compile-time.) This increases the size of the 13795compiler significantly because a portion of the ACPI CA AML 13796interpreter is included within the compiler in order to pre- 13797evaluate constant expressions. 13798 13799 13800Fixed a problem with the "Unicode" ASL macro that caused the 13801compiler to fault. (This macro is used in conjunction with the 13802_STR reserved name.) 13803 13804Implemented an AML opcode optimization to use the Zero, One, and 13805Ones opcodes where possible to further reduce the size of integer 13806constants and thus reduce the overall size of the generated AML 13807code. 13808 13809Implemented error checking for new reserved terms for ACPI version 138102.0A. 13811 13812Implemented the -qr option to display the current list of ACPI 13813reserved names known to the compiler. 13814 13815Implemented the -qc option to display the current list of ASL 13816operators that are allowed within constant expressions and can 13817therefore be folded at compile time if the operands are constants. 13818 13819 138204) Documentation 13821 13822Updated the Programmer's Reference for new interfaces, data types, 13823and memory allocation model options. 13824 13825Updated the iASL Compiler User Reference to apply new format and 13826add information about new features and options. 13827 13828---------------------------------------- 1382919 April 2002. Summary of changes for this release. 13830 138311) ACPI CA Core Subsystem Version 20020419: 13832 13833The source code base for the Core Subsystem has been completely 13834cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 13835versions. The Lint option files used are included in the 13836/acpi/generate/lint directory. 13837 13838Implemented enhanced status/error checking across the entire 13839Hardware manager subsystem. Any hardware errors (reported from 13840the OSL) are now bubbled up and will abort a running control 13841method. 13842 13843 13844Fixed a problem where the per-ACPI-table integer width (32 or 64) 13845was stored only with control method nodes, causing a fault when 13846non-control method code was executed during table loading. The 13847solution implemented uses a global variable to indicate table 13848width across the entire ACPI subsystem. Therefore, ACPI CA does 13849not support mixed integer widths across different ACPI tables 13850(DSDT, SSDT). 13851 13852Fixed a problem where NULL extended fields (X fields) in an ACPI 138532.0 ACPI FADT caused the table load to fail. Although the 13854existing ACPI specification is a bit fuzzy on this topic, the new 13855behavior is to fall back on a ACPI 1.0 field if the corresponding 13856ACPI 2.0 X field is zero (even though the table revision indicates 13857a full ACPI 2.0 table.) The ACPI specification will be updated to 13858clarify this issue. 13859 13860Fixed a problem with the SystemMemory operation region handler 13861where memory was always accessed byte-wise even if the AML- 13862specified access width was larger than a byte. This caused 13863problems on systems with memory-mapped I/O. Memory is now 13864accessed with the width specified. On systems that do not support 13865non-aligned transfers, a check is made to guarantee proper address 13866alignment before proceeding in order to avoid an AML-caused 13867alignment fault within the kernel. 13868 13869 13870Fixed a problem with the ExtendedIrq resource where only one byte 13871of the 4-byte Irq field was extracted. 13872 13873Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 13874function was out of date and required a rewrite. 13875 13876Code and Data Size: Current core subsystem library sizes are shown 13877below. These are the code and data sizes for the acpica.lib 13878produced by the Microsoft Visual C++ 6.0 compiler, and these 13879values do not include any ACPI driver or OSPM code. The debug 13880version of the code includes the debug output trace mechanism and 13881has a larger code and data size. Note that these values will vary 13882depending on the efficiency of the compiler and the compiler 13883options used during generation. 13884 13885 Previous Release 13886 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13887 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13888 Current Release: 13889 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 13890 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 13891 13892 138932) Linux 13894 13895PCI IRQ routing fixes (Dominik Brodowski) 13896 13897 138983) iASL Compiler Version X2042: 13899 13900Implemented an additional compile-time error check for a field 13901unit whose size + minimum access width would cause a run-time 13902access beyond the end-of-region. Previously, only the field size 13903itself was checked. 13904 13905The Core subsystem and iASL compiler now share a common parse 13906object in preparation for compile-time evaluation of the type 139073/4/5 ASL operators. 13908 13909 13910---------------------------------------- 13911Summary of changes for this release: 03_29_02 13912 139131) ACPI CA Core Subsystem Version 20020329: 13914 13915Implemented support for late evaluation of TermArg operands to 13916Buffer and Package objects. This allows complex expressions to be 13917used in the declarations of these object types. 13918 13919Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 139201.0, if the field was larger than 32 bits, it was returned as a 13921buffer - otherwise it was returned as an integer. In ACPI 2.0, 13922the field is returned as a buffer only if the field is larger than 1392364 bits. The TableRevision is now considered when making this 13924conversion to avoid incompatibility with existing ASL code. 13925 13926Implemented logical addressing for AcpiOsGetRootPointer. This 13927allows an RSDP with either a logical or physical address. With 13928this support, the host OS can now override all ACPI tables with 13929one logical RSDP. Includes implementation of "typed" pointer 13930support to allow a common data type for both physical and logical 13931pointers internally. This required a change to the 13932AcpiOsGetRootPointer interface. 13933 13934Implemented the use of ACPI 2.0 Generic Address Structures for all 13935GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 13936mapped I/O for these ACPI features. 13937 13938Initialization now ignores not only non-required tables (All 13939tables other than the FADT, FACS, DSDT, and SSDTs), but also does 13940not validate the table headers of unrecognized tables. 13941 13942Fixed a problem where a notify handler could only be 13943installed/removed on an object of type Device. All "notify" 13944 13945objects are now supported -- Devices, Processor, Power, and 13946Thermal. 13947 13948Removed most verbosity from the ACPI_DB_INFO debug level. Only 13949critical information is returned when this debug level is enabled. 13950 13951Code and Data Size: Current core subsystem library sizes are shown 13952below. These are the code and data sizes for the acpica.lib 13953produced by the Microsoft Visual C++ 6.0 compiler, and these 13954values do not include any ACPI driver or OSPM code. The debug 13955version of the code includes the debug output trace mechanism and 13956has a larger code and data size. Note that these values will vary 13957depending on the efficiency of the compiler and the compiler 13958options used during generation. 13959 13960 Previous Release 13961 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 13962 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 13963 Current Release: 13964 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13965 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13966 13967 139682) Linux: 13969 13970The processor driver (acpi_processor.c) now fully supports ACPI 139712.0-based processor performance control (e.g. Intel(R) 13972SpeedStep(TM) technology) Note that older laptops that only have 13973the Intel "applet" interface are not supported through this. The 13974'limit' and 'performance' interface (/proc) are fully functional. 13975[Note that basic policy for controlling performance state 13976transitions will be included in the next version of ospmd.] The 13977idle handler was modified to more aggressively use C2, and PIIX4 13978errata handling underwent a complete overhaul (big thanks to 13979Dominik Brodowski). 13980 13981Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 13982based devices in the ACPI namespace are now dynamically bound 13983(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 13984This allows, among other things, ACPI to resolve bus numbers for 13985subordinate PCI bridges. 13986 13987Enhanced PCI IRQ routing to get the proper bus number for _PRT 13988entries defined underneath PCI bridges. 13989 13990Added IBM 600E to bad bios list due to invalid _ADR value for 13991PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 13992 13993In the process of adding full MADT support (e.g. IOAPIC) for IA32 13994(acpi.c, mpparse.c) -- stay tuned. 13995 13996Added back visual differentiation between fixed-feature and 13997control-method buttons in dmesg. Buttons are also subtyped (e.g. 13998button/power/PWRF) to simplify button identification. 13999 14000We no longer use -Wno-unused when compiling debug. Please ignore 14001any "_THIS_MODULE defined but not used" messages. 14002 14003Can now shut down the system using "magic sysrq" key. 14004 14005 140063) iASL Compiler version 2041: 14007 14008Fixed a problem where conversion errors for hex/octal/decimal 14009constants were not reported. 14010 14011Implemented a fix for the General Register template Address field. 14012This field was 8 bits when it should be 64. 14013 14014Fixed a problem where errors/warnings were no longer being emitted 14015within the listing output file. 14016 14017Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 14018exactly 4 characters, alphanumeric only. 14019 14020 14021 14022 14023---------------------------------------- 14024Summary of changes for this release: 03_08_02 14025 14026 140271) ACPI CA Core Subsystem Version 20020308: 14028 14029Fixed a problem with AML Fields where the use of the "AccessAny" 14030keyword could cause an interpreter error due to attempting to read 14031or write beyond the end of the parent Operation Region. 14032 14033Fixed a problem in the SystemMemory Operation Region handler where 14034an attempt was made to map memory beyond the end of the region. 14035This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 14036errors on some Linux systems. 14037 14038Fixed a problem where the interpreter/namespace "search to root" 14039algorithm was not functioning for some object types. Relaxed the 14040internal restriction on the search to allow upsearches for all 14041external object types as well as most internal types. 14042 14043 140442) Linux: 14045 14046We now use safe_halt() macro versus individual calls to sti | hlt. 14047 14048Writing to the processor limit interface should now work. "echo 1" 14049will increase the limit, 2 will decrease, and 0 will reset to the 14050 14051default. 14052 14053 140543) ASL compiler: 14055 14056Fixed segfault on Linux version. 14057 14058 14059---------------------------------------- 14060Summary of changes for this release: 02_25_02 14061 140621) ACPI CA Core Subsystem: 14063 14064 14065Fixed a problem where the GPE bit masks were not initialized 14066properly, causing erratic GPE behavior. 14067 14068Implemented limited support for multiple calling conventions. The 14069code can be generated with either the VPL (variable parameter 14070list, or "C") convention, or the FPL (fixed parameter list, or 14071"Pascal") convention. The core subsystem is about 3.4% smaller 14072when generated with FPL. 14073 14074 140752) Linux 14076 14077Re-add some /proc/acpi/event functionality that was lost during 14078the rewrite 14079 14080Resolved issue with /proc events for fixed-feature buttons showing 14081up as the system device. 14082 14083Fixed checks on C2/C3 latencies to be inclusive of maximum values. 14084 14085Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 14086 14087Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 14088 14089Fixed limit interface & usage to fix bugs with passive cooling 14090hysterisis. 14091 14092Restructured PRT support. 14093 14094 14095---------------------------------------- 14096Summary of changes for this label: 02_14_02 14097 14098 140991) ACPI CA Core Subsystem: 14100 14101Implemented support in AcpiLoadTable to allow loading of FACS and 14102FADT tables. 14103 14104Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 14105been removed. All 64-bit platforms should be migrated to the ACPI 141062.0 tables. The actbl71.h header has been removed from the source 14107tree. 14108 14109All C macros defined within the subsystem have been prefixed with 14110"ACPI_" to avoid collision with other system include files. 14111 14112Removed the return value for the two AcpiOsPrint interfaces, since 14113it is never used and causes lint warnings for ignoring the return 14114value. 14115 14116Added error checking to all internal mutex acquire and release 14117calls. Although a failure from one of these interfaces is 14118probably a fatal system error, these checks will cause the 14119immediate abort of the currently executing method or interface. 14120 14121Fixed a problem where the AcpiSetCurrentResources interface could 14122fault. This was a side effect of the deployment of the new memory 14123allocation model. 14124 14125Fixed a couple of problems with the Global Lock support introduced 14126in the last major build. The "common" (1.0/2.0) internal FACS was 14127being overwritten with the FACS signature and clobbering the 14128Global Lock pointer. Also, the actual firmware FACS was being 14129unmapped after construction of the "common" FACS, preventing 14130access to the actual Global Lock field within it. The "common" 14131internal FACS is no longer installed as an actual ACPI table; it 14132is used simply as a global. 14133 14134Code and Data Size: Current core subsystem library sizes are shown 14135below. These are the code and data sizes for the acpica.lib 14136produced by the Microsoft Visual C++ 6.0 compiler, and these 14137values do not include any ACPI driver or OSPM code. The debug 14138version of the code includes the debug output trace mechanism and 14139has a larger code and data size. Note that these values will vary 14140depending on the efficiency of the compiler and the compiler 14141options used during generation. 14142 14143 Previous Release (02_07_01) 14144 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 14145 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 14146 Current Release: 14147 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 14148 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 14149 14150 141512) Linux 14152 14153Updated Linux-specific code for core macro and OSL interface 14154changes described above. 14155 14156Improved /proc/acpi/event. It now can be opened only once and has 14157proper poll functionality. 14158 14159Fixed and restructured power management (acpi_bus). 14160 14161Only create /proc "view by type" when devices of that class exist. 14162 14163Fixed "charging/discharging" bug (and others) in acpi_battery. 14164 14165Improved thermal zone code. 14166 14167 141683) ASL Compiler, version X2039: 14169 14170 14171Implemented the new compiler restriction on ASL String hex/octal 14172escapes to non-null, ASCII values. An error results if an invalid 14173value is used. (This will require an ACPI 2.0 specification 14174change.) 14175 14176AML object labels that are output to the optional C and ASM source 14177are now prefixed with both the ACPI table signature and table ID 14178to help guarantee uniqueness within a large BIOS project. 14179 14180 14181---------------------------------------- 14182Summary of changes for this label: 02_01_02 14183 141841) ACPI CA Core Subsystem: 14185 14186ACPI 2.0 support is complete in the entire Core Subsystem and the 14187ASL compiler. All new ACPI 2.0 operators are implemented and all 14188other changes for ACPI 2.0 support are complete. With 14189simultaneous code and data optimizations throughout the subsystem, 14190ACPI 2.0 support has been implemented with almost no additional 14191cost in terms of code and data size. 14192 14193Implemented a new mechanism for allocation of return buffers. If 14194the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 14195be allocated on behalf of the caller. Consolidated all return 14196buffer validation and allocation to a common procedure. Return 14197buffers will be allocated via the primary OSL allocation interface 14198since it appears that a separate pool is not needed by most users. 14199If a separate pool is required for these buffers, the caller can 14200still use the original mechanism and pre-allocate the buffer(s). 14201 14202Implemented support for string operands within the DerefOf 14203operator. 14204 14205Restructured the Hardware and Event managers to be table driven, 14206simplifying the source code and reducing the amount of generated 14207code. 14208 14209Split the common read/write low-level ACPI register bitfield 14210procedure into a separate read and write, simplifying the code 14211considerably. 14212 14213Obsoleted the AcpiOsCallocate OSL interface. This interface was 14214used only a handful of times and didn't have enough critical mass 14215for a separate interface. Replaced with a common calloc procedure 14216in the core. 14217 14218Fixed a reported problem with the GPE number mapping mechanism 14219that allows GPE1 numbers to be non-contiguous with GPE0. 14220Reorganized the GPE information and shrunk a large array that was 14221originally large enough to hold info for all possible GPEs (256) 14222to simply large enough to hold all GPEs up to the largest GPE 14223number on the machine. 14224 14225Fixed a reported problem with resource structure alignment on 64- 14226bit platforms. 14227 14228Changed the AcpiEnableEvent and AcpiDisableEvent external 14229interfaces to not require any flags for the common case of 14230enabling/disabling a GPE. 14231 14232Implemented support to allow a "Notify" on a Processor object. 14233 14234Most TBDs in comments within the source code have been resolved 14235and eliminated. 14236 14237 14238Fixed a problem in the interpreter where a standalone parent 14239prefix (^) was not handled correctly in the interpreter and 14240debugger. 14241 14242Removed obsolete and unnecessary GPE save/restore code. 14243 14244Implemented Field support in the ASL Load operator. This allows a 14245table to be loaded from a named field, in addition to loading a 14246table directly from an Operation Region. 14247 14248Implemented timeout and handle support in the external Global Lock 14249interfaces. 14250 14251Fixed a problem in the AcpiDump utility where pathnames were no 14252longer being generated correctly during the dump of named objects. 14253 14254Modified the AML debugger to give a full display of if/while 14255predicates instead of just one AML opcode at a time. (The 14256predicate can have several nested ASL statements.) The old method 14257was confusing during single stepping. 14258 14259Code and Data Size: Current core subsystem library sizes are shown 14260below. These are the code and data sizes for the acpica.lib 14261produced by the Microsoft Visual C++ 6.0 compiler, and these 14262values do not include any ACPI driver or OSPM code. The debug 14263version of the code includes the debug output trace mechanism and 14264has a larger code and data size. Note that these values will vary 14265depending on the efficiency of the compiler and the compiler 14266options used during generation. 14267 14268 Previous Release (12_18_01) 14269 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 14270 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 14271 Current Release: 14272 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 14273 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 14274 142752) Linux 14276 14277 Implemented fix for PIIX reverse throttling errata (Processor 14278driver) 14279 14280Added new Limit interface (Processor and Thermal drivers) 14281 14282New thermal policy (Thermal driver) 14283 14284Many updates to /proc 14285 14286Battery "low" event support (Battery driver) 14287 14288Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 14289 14290IA32 - IA64 initialization unification, no longer experimental 14291 14292Menuconfig options redesigned 14293 142943) ASL Compiler, version X2037: 14295 14296Implemented several new output features to simplify integration of 14297AML code into firmware: 1) Output the AML in C source code with 14298labels for each named ASL object. The original ASL source code 14299is interleaved as C comments. 2) Output the AML in ASM source code 14300with labels and interleaved ASL source. 3) Output the AML in 14301raw hex table form, in either C or ASM. 14302 14303Implemented support for optional string parameters to the 14304LoadTable operator. 14305 14306Completed support for embedded escape sequences within string 14307literals. The compiler now supports all single character escapes 14308as well as the Octal and Hex escapes. Note: the insertion of a 14309null byte into a string literal (via the hex/octal escape) causes 14310the string to be immediately terminated. A warning is issued. 14311 14312Fixed a problem where incorrect AML was generated for the case 14313where an ASL namepath consists of a single parent prefix ( 14314 14315) with no trailing name segments. 14316 14317The compiler has been successfully generated with a 64-bit C 14318compiler. 14319 14320 14321 14322 14323---------------------------------------- 14324Summary of changes for this label: 12_18_01 14325 143261) Linux 14327 14328Enhanced blacklist with reason and severity fields. Any table's 14329signature may now be used to identify a blacklisted system. 14330 14331Call _PIC control method to inform the firmware which interrupt 14332model the OS is using. Turn on any disabled link devices. 14333 14334Cleaned up busmgr /proc error handling (Andreas Dilger) 14335 14336 2) ACPI CA Core Subsystem: 14337 14338Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 14339while loop) 14340 14341Completed implementation of the ACPI 2.0 "Continue", 14342"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 14343operators. All new ACPI 2.0 operators are now implemented in both 14344the ASL compiler and the AML interpreter. The only remaining ACPI 143452.0 task is support for the String data type in the DerefOf 14346operator. Fixed a problem with AcquireMutex where the status code 14347was lost if the caller had to actually wait for the mutex. 14348 14349Increased the maximum ASL Field size from 64K bits to 4G bits. 14350 14351Completed implementation of the external Global Lock interfaces -- 14352AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 14353Handler parameters were added. 14354 14355Completed another pass at removing warnings and issues when 14356compiling with 64-bit compilers. The code now compiles cleanly 14357with the Intel 64-bit C/C++ compiler. Most notably, the pointer 14358add and subtract (diff) macros have changed considerably. 14359 14360 14361Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1436264-bit platforms, 32-bits on all others. This type is used 14363wherever memory allocation and/or the C sizeof() operator is used, 14364and affects the OSL memory allocation interfaces AcpiOsAllocate 14365and AcpiOsCallocate. 14366 14367Implemented sticky user breakpoints in the AML debugger. 14368 14369Code and Data Size: Current core subsystem library sizes are shown 14370below. These are the code and data sizes for the acpica.lib 14371produced by the Microsoft Visual C++ 6.0 compiler, and these 14372values do not include any ACPI driver or OSPM code. The debug 14373version of the code includes the debug output trace mechanism and 14374has a larger code and data size. Note that these values will vary 14375depending on the efficiency of the compiler and the compiler 14376options used during generation. 14377 14378 Previous Release (12_05_01) 14379 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 14380 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 14381 Current Release: 14382 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 14383 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 14384 14385 3) ASL Compiler, version X2034: 14386 14387Now checks for (and generates an error if detected) the use of a 14388Break or Continue statement without an enclosing While statement. 14389 14390 14391Successfully generated the compiler with the Intel 64-bit C 14392compiler. 14393 14394 ---------------------------------------- 14395Summary of changes for this label: 12_05_01 14396 14397 1) ACPI CA Core Subsystem: 14398 14399The ACPI 2.0 CopyObject operator is fully implemented. This 14400operator creates a new copy of an object (and is also used to 14401bypass the "implicit conversion" mechanism of the Store operator.) 14402 14403The ACPI 2.0 semantics for the SizeOf operator are fully 14404implemented. The change is that performing a SizeOf on a 14405reference object causes an automatic dereference of the object to 14406tha actual value before the size is evaluated. This behavior was 14407undefined in ACPI 1.0. 14408 14409The ACPI 2.0 semantics for the Extended IRQ resource descriptor 14410have been implemented. The interrupt polarity and mode are now 14411independently set. 14412 14413Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 14414appearing in Package objects were not properly converted to 14415integers when the internal Package was converted to an external 14416object (via the AcpiEvaluateObject interface.) 14417 14418Fixed a problem with the namespace object deletion mechanism for 14419objects created by control methods. There were two parts to this 14420problem: 1) Objects created during the initialization phase method 14421parse were not being deleted, and 2) The object owner ID mechanism 14422to track objects was broken. 14423 14424Fixed a problem where the use of the ASL Scope operator within a 14425control method would result in an invalid opcode exception. 14426 14427Fixed a problem introduced in the previous label where the buffer 14428length required for the _PRT structure was not being returned 14429correctly. 14430 14431Code and Data Size: Current core subsystem library sizes are shown 14432below. These are the code and data sizes for the acpica.lib 14433produced by the Microsoft Visual C++ 6.0 compiler, and these 14434values do not include any ACPI driver or OSPM code. The debug 14435version of the code includes the debug output trace mechanism and 14436has a larger code and data size. Note that these values will vary 14437depending on the efficiency of the compiler and the compiler 14438options used during generation. 14439 14440 Previous Release (11_20_01) 14441 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 14442 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 14443 14444 Current Release: 14445 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 14446 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 14447 14448 2) Linux: 14449 14450Updated all files to apply cleanly against 2.4.16. 14451 14452Added basic PCI Interrupt Routing Table (PRT) support for IA32 14453(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 14454version supports both static and dyanmic PRT entries, but dynamic 14455entries are treated as if they were static (not yet 14456reconfigurable). Architecture- specific code to use this data is 14457absent on IA32 but should be available shortly. 14458 14459Changed the initialization sequence to start the ACPI interpreter 14460(acpi_init) prior to initialization of the PCI driver (pci_init) 14461in init/main.c. This ordering is required to support PRT and 14462facilitate other (future) enhancement. A side effect is that the 14463ACPI bus driver and certain device drivers can no longer be loaded 14464as modules. 14465 14466Modified the 'make menuconfig' options to allow PCI Interrupt 14467Routing support to be included without the ACPI Bus and other 14468device drivers. 14469 14470 3) ASL Compiler, version X2033: 14471 14472Fixed some issues with the use of the new CopyObject and 14473DataTableRegion operators. Both are fully functional. 14474 14475 ---------------------------------------- 14476Summary of changes for this label: 11_20_01 14477 14478 20 November 2001. Summary of changes for this release. 14479 14480 1) ACPI CA Core Subsystem: 14481 14482Updated Index support to match ACPI 2.0 semantics. Storing a 14483Integer, String, or Buffer to an Index of a Buffer will store only 14484the least-significant byte of the source to the Indexed buffer 14485byte. Multiple writes are not performed. 14486 14487Fixed a problem where the access type used in an AccessAs ASL 14488operator was not recorded correctly into the field object. 14489 14490Fixed a problem where ASL Event objects were created in a 14491signalled state. Events are now created in an unsignalled state. 14492 14493The internal object cache is now purged after table loading and 14494initialization to reduce the use of dynamic kernel memory -- on 14495the assumption that object use is greatest during the parse phase 14496of the entire table (versus the run-time use of individual control 14497methods.) 14498 14499ACPI 2.0 variable-length packages are now fully operational. 14500 14501Code and Data Size: Code and Data optimizations have permitted new 14502feature development with an actual reduction in the library size. 14503Current core subsystem library sizes are shown below. These are 14504the code and data sizes for the acpica.lib produced by the 14505Microsoft Visual C++ 6.0 compiler, and these values do not include 14506any ACPI driver or OSPM code. The debug version of the code 14507includes the debug output trace mechanism and has a larger code 14508and data size. Note that these values will vary depending on the 14509efficiency of the compiler and the compiler options used during 14510generation. 14511 14512 Previous Release (11_09_01): 14513 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 14514 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 14515 14516 Current Release: 14517 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 14518 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 14519 14520 2) Linux: 14521 14522Enhanced the ACPI boot-time initialization code to allow the use 14523of Local APIC tables for processor enumeration on IA-32, and to 14524pave the way for a fully MPS-free boot (on SMP systems) in the 14525near future. This functionality replaces 14526arch/i386/kernel/acpitables.c, which was introduced in an earlier 145272.4.15-preX release. To enable this feature you must add 14528"acpi_boot=on" to the kernel command line -- see the help entry 14529for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 14530the works... 14531 14532Restructured the configuration options to allow boot-time table 14533parsing support without inclusion of the ACPI Interpreter (and 14534other) code. 14535 14536NOTE: This release does not include fixes for the reported events, 14537power-down, and thermal passive cooling issues (coming soon). 14538 14539 3) ASL Compiler: 14540 14541Added additional typechecking for Fields within restricted access 14542Operation Regions. All fields within EC and CMOS regions must be 14543declared with ByteAcc. All fields withing SMBus regions must be 14544declared with the BufferAcc access type. 14545 14546Fixed a problem where the listing file output of control methods 14547no longer interleaved the actual AML code with the ASL source 14548code. 14549 14550 14551 14552 14553---------------------------------------- 14554Summary of changes for this label: 11_09_01 14555 145561) ACPI CA Core Subsystem: 14557 14558Implemented ACPI 2.0-defined support for writes to fields with a 14559Buffer, String, or Integer source operand that is smaller than the 14560target field. In these cases, the source operand is zero-extended 14561to fill the target field. 14562 14563Fixed a problem where a Field starting bit offset (within the 14564parent operation region) was calculated incorrectly if the 14565 14566alignment of the field differed from the access width. This 14567affected CreateWordField, CreateDwordField, CreateQwordField, and 14568possibly other fields that use the "AccessAny" keyword. 14569 14570Fixed a problem introduced in the 11_02_01 release where indirect 14571stores through method arguments did not operate correctly. 14572 145732) Linux: 14574 14575Implemented boot-time ACPI table parsing support 14576(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 14577facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 14578legacy BIOS interfaces (e.g. MPS) for the configuration of system 14579processors, memory, and interrupts during setup_arch(). Note that 14580this patch does not include the required architecture-specific 14581changes required to apply this information -- subsequent patches 14582will be posted for both IA32 and IA64 to achieve this. 14583 14584Added low-level sleep support for IA32 platforms, courtesy of Pat 14585Mochel. This allows IA32 systems to transition to/from various 14586sleeping states (e.g. S1, S3), although the lack of a centralized 14587driver model and power-manageable drivers will prevent its 14588(successful) use on most systems. 14589 14590Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 14591submenu, unified IA32 and IA64 options, added new "Boot using ACPI 14592tables" option, etc. 14593 14594Increased the default timeout for the EC driver from 1ms to 10ms 14595(1000 cycles of 10us) to try to address AE_TIME errors during EC 14596transactions. 14597 14598 ---------------------------------------- 14599Summary of changes for this label: 11_02_01 14600 146011) ACPI CA Core Subsystem: 14602 14603ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 14604(QWordAcc keyword). All ACPI 2.0 64-bit support is now 14605implemented. 14606 14607OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 14608changes to support ACPI 2.0 Qword field access. Read/Write 14609PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 14610accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 14611the value parameter for the address space handler interface is now 14612an ACPI_INTEGER. OSL implementations of these interfaces must now 14613handle the case where the Width parameter is 64. 14614 14615Index Fields: Fixed a problem where unaligned bit assembly and 14616disassembly for IndexFields was not supported correctly. 14617 14618Index and Bank Fields: Nested Index and Bank Fields are now 14619supported. During field access, a check is performed to ensure 14620that the value written to an Index or Bank register is not out of 14621the range of the register. The Index (or Bank) register is 14622written before each access to the field data. Future support will 14623include allowing individual IndexFields to be wider than the 14624DataRegister width. 14625 14626Fields: Fixed a problem where the AML interpreter was incorrectly 14627attempting to write beyond the end of a Field/OpRegion. This was 14628a boundary case that occurred when a DWORD field was written to a 14629BYTE access OpRegion, forcing multiple writes and causing the 14630interpreter to write one datum too many. 14631 14632Fields: Fixed a problem with Field/OpRegion access where the 14633starting bit address of a field was incorrectly calculated if the 14634current access type was wider than a byte (WordAcc, DwordAcc, or 14635QwordAcc). 14636 14637Fields: Fixed a problem where forward references to individual 14638FieldUnits (individual Field names within a Field definition) were 14639not resolved during the AML table load. 14640 14641Fields: Fixed a problem where forward references from a Field 14642definition to the parent Operation Region definition were not 14643resolved during the AML table load. 14644 14645Fields: Duplicate FieldUnit names within a scope are now detected 14646during AML table load. 14647 14648Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 14649returned an incorrect name for the root node. 14650 14651Code and Data Size: Code and Data optimizations have permitted new 14652feature development with an actual reduction in the library size. 14653Current core subsystem library sizes are shown below. These are 14654the code and data sizes for the acpica.lib produced by the 14655Microsoft Visual C++ 6.0 compiler, and these values do not include 14656any ACPI driver or OSPM code. The debug version of the code 14657includes the debug output trace mechanism and has a larger code 14658and data size. Note that these values will vary depending on the 14659efficiency of the compiler and the compiler options used during 14660generation. 14661 14662 Previous Release (10_18_01): 14663 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 14664 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 14665 14666 Current Release: 14667 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 14668 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 14669 14670 2) Linux: 14671 14672Improved /proc processor output (Pavel Machek) Re-added 14673MODULE_LICENSE("GPL") to all modules. 14674 14675 3) ASL Compiler version X2030: 14676 14677Duplicate FieldUnit names within a scope are now detected and 14678flagged as errors. 14679 14680 4) Documentation: 14681 14682Programmer Reference updated to reflect OSL and address space 14683handler interface changes described above. 14684 14685---------------------------------------- 14686Summary of changes for this label: 10_18_01 14687 14688ACPI CA Core Subsystem: 14689 14690Fixed a problem with the internal object reference count mechanism 14691that occasionally caused premature object deletion. This resolves 14692all of the outstanding problem reports where an object is deleted 14693in the middle of an interpreter evaluation. Although this problem 14694only showed up in rather obscure cases, the solution to the 14695problem involved an adjustment of all reference counts involving 14696objects attached to namespace nodes. 14697 14698Fixed a problem with Field support in the interpreter where 14699writing to an aligned field whose length is an exact multiple (2 14700or greater) of the field access granularity would cause an attempt 14701to write beyond the end of the field. 14702 14703The top level AML opcode execution functions within the 14704interpreter have been renamed with a more meaningful and 14705consistent naming convention. The modules exmonad.c and 14706exdyadic.c were eliminated. New modules are exoparg1.c, 14707exoparg2.c, exoparg3.c, and exoparg6.c. 14708 14709Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 14710 14711Fixed a problem where the AML debugger was causing some internal 14712objects to not be deleted during subsystem termination. 14713 14714Fixed a problem with the external AcpiEvaluateObject interface 14715where the subsystem would fault if the named object to be 14716evaluated refered to a constant such as Zero, Ones, etc. 14717 14718Fixed a problem with IndexFields and BankFields where the 14719subsystem would fault if the index, data, or bank registers were 14720not defined in the same scope as the field itself. 14721 14722Added printf format string checking for compilers that support 14723this feature. Corrected more than 50 instances of issues with 14724format specifiers within invocations of ACPI_DEBUG_PRINT 14725throughout the core subsystem code. 14726 14727The ASL "Revision" operator now returns the ACPI support level 14728implemented in the core - the value "2" since the ACPI 2.0 support 14729is more than 50% implemented. 14730 14731Enhanced the output of the AML debugger "dump namespace" command 14732to output in a more human-readable form. 14733 14734Current core subsystem library code sizes are shown below. These 14735 14736are the code and data sizes for the acpica.lib produced by the 14737Microsoft Visual C++ 6.0 compiler, and these values do not include 14738any ACPI driver or OSPM code. The debug version of the code 14739includes the full debug trace mechanism -- leading to a much 14740 14741larger code and data size. Note that these values will vary 14742depending on the efficiency of the compiler and the compiler 14743options used during generation. 14744 14745 Previous Label (09_20_01): 14746 Non-Debug Version: 65K Code, 5K Data, 70K Total 14747 Debug Version: 138K Code, 58K Data, 196K Total 14748 14749 This Label: 14750 14751 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 14752 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 14753 14754Linux: 14755 14756Implemented a "Bad BIOS Blacklist" to track machines that have 14757known ASL/AML problems. 14758 14759Enhanced the /proc interface for the thermal zone driver and added 14760support for _HOT (the critical suspend trip point). The 'info' 14761file now includes threshold/policy information, and allows setting 14762of _SCP (cooling preference) and _TZP (polling frequency) values 14763to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 14764frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 14765preference to the passive/quiet mode (if supported by the ASL). 14766 14767Implemented a workaround for a gcc bug that resuted in an OOPs 14768when loading the control method battery driver. 14769 14770 ---------------------------------------- 14771Summary of changes for this label: 09_20_01 14772 14773 ACPI CA Core Subsystem: 14774 14775The AcpiEnableEvent and AcpiDisableEvent interfaces have been 14776modified to allow individual GPE levels to be flagged as wake- 14777enabled (i.e., these GPEs are to remain enabled when the platform 14778sleeps.) 14779 14780The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 14781support wake-enabled GPEs. This means that upon entering the 14782sleep state, all GPEs that are not wake-enabled are disabled. 14783When leaving the sleep state, these GPEs are reenabled. 14784 14785A local double-precision divide/modulo module has been added to 14786enhance portability to OS kernels where a 64-bit math library is 14787not available. The new module is "utmath.c". 14788 14789Several optimizations have been made to reduce the use of CPU 14790stack. Originally over 2K, the maximum stack usage is now below 147912K at 1860 bytes (1.82k) 14792 14793Fixed a problem with the AcpiGetFirmwareTable interface where the 14794root table pointer was not mapped into a logical address properly. 14795 14796Fixed a problem where a NULL pointer was being dereferenced in the 14797interpreter code for the ASL Notify operator. 14798 14799Fixed a problem where the use of the ASL Revision operator 14800returned an error. This operator now returns the current version 14801of the ACPI CA core subsystem. 14802 14803Fixed a problem where objects passed as control method parameters 14804to AcpiEvaluateObject were always deleted at method termination. 14805However, these objects may end up being stored into the namespace 14806by the called method. The object reference count mechanism was 14807applied to these objects instead of a force delete. 14808 14809Fixed a problem where static strings or buffers (contained in the 14810AML code) that are declared as package elements within the ASL 14811code could cause a fault because the interpreter would attempt to 14812delete them. These objects are now marked with the "static 14813object" flag to prevent any attempt to delete them. 14814 14815Implemented an interpreter optimization to use operands directly 14816from the state object instead of extracting the operands to local 14817variables. This reduces stack use and code size, and improves 14818performance. 14819 14820The module exxface.c was eliminated as it was an unnecessary extra 14821layer of code. 14822 14823Current core subsystem library code sizes are shown below. These 14824are the code and data sizes for the acpica.lib produced by the 14825Microsoft Visual C++ 6.0 compiler, and these values do not include 14826any ACPI driver or OSPM code. The debug version of the code 14827includes the full debug trace mechanism -- leading to a much 14828larger code and data size. Note that these values will vary 14829depending on the efficiency of the compiler and the compiler 14830options used during generation. 14831 14832 Non-Debug Version: 65K Code, 5K Data, 70K Total 14833(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 14834Total (Previously 195K) 14835 14836Linux: 14837 14838Support for ACPI 2.0 64-bit integers has been added. All ACPI 14839Integer objects are now 64 bits wide 14840 14841All Acpi data types and structures are now in lower case. Only 14842Acpi macros are upper case for differentiation. 14843 14844 Documentation: 14845 14846Changes to the external interfaces as described above. 14847 14848 ---------------------------------------- 14849Summary of changes for this label: 08_31_01 14850 14851 ACPI CA Core Subsystem: 14852 14853A bug with interpreter implementation of the ASL Divide operator 14854was found and fixed. The implicit function return value (not the 14855explicit store operands) was returning the remainder instead of 14856the quotient. This was a longstanding bug and it fixes several 14857known outstanding issues on various platforms. 14858 14859The ACPI_DEBUG_PRINT and function trace entry/exit macros have 14860been further optimized for size. There are 700 invocations of the 14861DEBUG_PRINT macro alone, so each optimization reduces the size of 14862the debug version of the subsystem significantly. 14863 14864A stack trace mechanism has been implemented. The maximum stack 14865usage is about 2K on 32-bit platforms. The debugger command "stat 14866stack" will display the current maximum stack usage. 14867 14868All public symbols and global variables within the subsystem are 14869now prefixed with the string "Acpi". This keeps all of the 14870symbols grouped together in a kernel map, and avoids conflicts 14871with other kernel subsystems. 14872 14873Most of the internal fixed lookup tables have been moved into the 14874code segment via the const operator. 14875 14876Several enhancements have been made to the interpreter to both 14877reduce the code size and improve performance. 14878 14879Current core subsystem library code sizes are shown below. These 14880are the code and data sizes for the acpica.lib produced by the 14881Microsoft Visual C++ 6.0 compiler, and these values do not include 14882any ACPI driver or OSPM code. The debug version of the code 14883includes the full debug trace mechanism which contains over 700 14884invocations of the DEBUG_PRINT macro, 500 function entry macro 14885invocations, and over 900 function exit macro invocations -- 14886leading to a much larger code and data size. Note that these 14887values will vary depending on the efficiency of the compiler and 14888the compiler options used during generation. 14889 14890 Non-Debug Version: 64K Code, 5K Data, 69K Total 14891Debug Version: 137K Code, 58K Data, 195K Total 14892 14893 Linux: 14894 14895Implemented wbinvd() macro, pending a kernel-wide definition. 14896 14897Fixed /proc/acpi/event to handle poll() and short reads. 14898 14899 ASL Compiler, version X2026: 14900 14901Fixed a problem introduced in the previous label where the AML 14902 14903code emitted for package objects produced packages with zero 14904length. 14905 14906 ---------------------------------------- 14907Summary of changes for this label: 08_16_01 14908 14909ACPI CA Core Subsystem: 14910 14911The following ACPI 2.0 ASL operators have been implemented in the 14912AML interpreter (These are already supported by the Intel ASL 14913compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 14914ToBuffer. Support for 64-bit AML constants is implemented in the 14915AML parser, debugger, and disassembler. 14916 14917The internal memory tracking mechanism (leak detection code) has 14918been upgraded to reduce the memory overhead (a separate tracking 14919block is no longer allocated for each memory allocation), and now 14920supports all of the internal object caches. 14921 14922The data structures and code for the internal object caches have 14923been coelesced and optimized so that there is a single cache and 14924memory list data structure and a single group of functions that 14925implement generic cache management. This has reduced the code 14926size in both the debug and release versions of the subsystem. 14927 14928The DEBUG_PRINT macro(s) have been optimized for size and replaced 14929by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 14930different, because it generates a single call to an internal 14931function. This results in a savings of about 90 bytes per 14932invocation, resulting in an overall code and data savings of about 1493316% in the debug version of the subsystem. 14934 14935 Linux: 14936 14937Fixed C3 disk corruption problems and re-enabled C3 on supporting 14938machines. 14939 14940Integrated low-level sleep code by Patrick Mochel. 14941 14942Further tweaked source code Linuxization. 14943 14944Other minor fixes. 14945 14946 ASL Compiler: 14947 14948Support for ACPI 2.0 variable length packages is fixed/completed. 14949 14950Fixed a problem where the optional length parameter for the ACPI 149512.0 ToString operator. 14952 14953Fixed multiple extraneous error messages when a syntax error is 14954detected within the declaration line of a control method. 14955 14956 ---------------------------------------- 14957Summary of changes for this label: 07_17_01 14958 14959ACPI CA Core Subsystem: 14960 14961Added a new interface named AcpiGetFirmwareTable to obtain any 14962ACPI table via the ACPI signature. The interface can be called at 14963any time during kernel initialization, even before the kernel 14964virtual memory manager is initialized and paging is enabled. This 14965allows kernel subsystems to obtain ACPI tables very early, even 14966before the ACPI CA subsystem is initialized. 14967 14968Fixed a problem where Fields defined with the AnyAcc attribute 14969could be resolved to the incorrect address under the following 14970conditions: 1) the field width is larger than 8 bits and 2) the 14971parent operation region is not defined on a DWORD boundary. 14972 14973Fixed a problem where the interpreter is not being locked during 14974namespace initialization (during execution of the _INI control 14975methods), causing an error when an attempt is made to release it 14976later. 14977 14978ACPI 2.0 support in the AML Interpreter has begun and will be 14979ongoing throughout the rest of this year. In this label, The Mod 14980operator is implemented. 14981 14982Added a new data type to contain full PCI addresses named 14983ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 14984and Function values. 14985 14986 Linux: 14987 14988Enhanced the Linux version of the source code to change most 14989capitalized ACPI type names to lowercase. For example, all 14990instances of ACPI_STATUS are changed to acpi_status. This will 14991result in a large diff, but the change is strictly cosmetic and 14992aligns the CA code closer to the Linux coding standard. 14993 14994OSL Interfaces: 14995 14996The interfaces to the PCI configuration space have been changed to 14997add the PCI Segment number and to split the single 32-bit combined 14998DeviceFunction field into two 16-bit fields. This was 14999accomplished by moving the four values that define an address in 15000PCI configuration space (segment, bus, device, and function) to 15001the new ACPI_PCI_ID structure. 15002 15003The changes to the PCI configuration space interfaces led to a 15004reexamination of the complete set of address space access 15005interfaces for PCI, I/O, and Memory. The previously existing 18 15006interfaces have proven difficult to maintain (any small change 15007must be propagated across at least 6 interfaces) and do not easily 15008allow for future expansion to 64 bits if necessary. Also, on some 15009systems, it would not be appropriate to demultiplex the access 15010width (8, 16, 32,or 64) before calling the OSL if the 15011corresponding native OS interfaces contain a similar access width 15012parameter. For these reasons, the 18 address space interfaces 15013have been replaced by these 6 new ones: 15014 15015AcpiOsReadPciConfiguration 15016AcpiOsWritePciConfiguration 15017AcpiOsReadMemory 15018AcpiOsWriteMemory 15019AcpiOsReadPort 15020AcpiOsWritePort 15021 15022Added a new interface named AcpiOsGetRootPointer to allow the OSL 15023to perform the platform and/or OS-specific actions necessary to 15024obtain the ACPI RSDP table pointer. On IA-32 platforms, this 15025interface will simply call down to the CA core to perform the low- 15026memory search for the table. On IA-64, the RSDP is obtained from 15027EFI. Migrating this interface to the OSL allows the CA core to 15028 15029remain OS and platform independent. 15030 15031Added a new interface named AcpiOsSignal to provide a generic 15032"function code and pointer" interface for various miscellaneous 15033signals and notifications that must be made to the host OS. The 15034first such signals are intended to support the ASL Fatal and 15035Breakpoint operators. In the latter case, the AcpiOsBreakpoint 15036interface has been obsoleted. 15037 15038The definition of the AcpiFormatException interface has been 15039changed to simplify its use. The caller no longer must supply a 15040buffer to the call; A pointer to a const string is now returned 15041directly. This allows the call to be easily used in printf 15042statements, etc. since the caller does not have to manage a local 15043buffer. 15044 15045 15046 ASL Compiler, Version X2025: 15047 15048The ACPI 2.0 Switch/Case/Default operators have been implemented 15049and are fully functional. They will work with all ACPI 1.0 15050interpreters, since the operators are simply translated to If/Else 15051pairs. 15052 15053The ACPI 2.0 ElseIf operator is implemented and will also work 15054with 1.0 interpreters, for the same reason. 15055 15056Implemented support for ACPI 2.0 variable-length packages. These 15057packages have a separate opcode, and their size is determined by 15058the interpreter at run-time. 15059 15060Documentation The ACPI CA Programmer Reference has been updated to 15061reflect the new interfaces and changes to existing interfaces. 15062 15063 ------------------------------------------ 15064Summary of changes for this label: 06_15_01 15065 15066 ACPI CA Core Subsystem: 15067 15068Fixed a problem where a DWORD-accessed field within a Buffer 15069object would get its byte address inadvertently rounded down to 15070the nearest DWORD. Buffers are always Byte-accessible. 15071 15072 ASL Compiler, version X2024: 15073 15074Fixed a problem where the Switch() operator would either fault or 15075hang the compiler. Note however, that the AML code for this ACPI 150762.0 operator is not yet implemented. 15077 15078Compiler uses the new AcpiOsGetTimer interface to obtain compile 15079timings. 15080 15081Implementation of the CreateField operator automatically converts 15082a reference to a named field within a resource descriptor from a 15083byte offset to a bit offset if required. 15084 15085Added some missing named fields from the resource descriptor 15086support. These are the names that are automatically created by the 15087compiler to reference fields within a descriptor. They are only 15088valid at compile time and are not passed through to the AML 15089interpreter. 15090 15091Resource descriptor named fields are now typed as Integers and 15092subject to compile-time typechecking when used in expressions. 15093 15094 ------------------------------------------ 15095Summary of changes for this label: 05_18_01 15096 15097 ACPI CA Core Subsystem: 15098 15099Fixed a couple of problems in the Field support code where bits 15100from adjacent fields could be returned along with the proper field 15101bits. Restructured the field support code to improve performance, 15102readability and maintainability. 15103 15104New DEBUG_PRINTP macro automatically inserts the procedure name 15105into the output, saving hundreds of copies of procedure name 15106strings within the source, shrinking the memory footprint of the 15107debug version of the core subsystem. 15108 15109 Source Code Structure: 15110 15111The source code directory tree was restructured to reflect the 15112current organization of the component architecture. Some files 15113and directories have been moved and/or renamed. 15114 15115 Linux: 15116 15117Fixed leaking kacpidpc processes. 15118 15119Fixed queueing event data even when /proc/acpi/event is not 15120opened. 15121 15122 ASL Compiler, version X2020: 15123 15124Memory allocation performance enhancement - over 24X compile time 15125improvement on large ASL files. Parse nodes and namestring 15126buffers are now allocated from a large internal compiler buffer. 15127 15128The temporary .SRC file is deleted unless the "-s" option is 15129specified 15130 15131The "-d" debug output option now sends all output to the .DBG file 15132instead of the console. 15133 15134"External" second parameter is now optional 15135 15136"ElseIf" syntax now properly allows the predicate 15137 15138Last operand to "Load" now recognized as a Target operand 15139 15140Debug object can now be used anywhere as a normal object. 15141 15142ResourceTemplate now returns an object of type BUFFER 15143 15144EISAID now returns an object of type INTEGER 15145 15146"Index" now works with a STRING operand 15147 15148"LoadTable" now accepts optional parameters 15149 15150"ToString" length parameter is now optional 15151 15152"Interrupt (ResourceType," parse error fixed. 15153 15154"Register" with a user-defined region space parse error fixed 15155 15156Escaped backslash at the end of a string ("\\") scan/parse error 15157fixed 15158 15159"Revision" is now an object of type INTEGER. 15160 15161 15162 15163------------------------------------------ 15164Summary of changes for this label: 05_02_01 15165 15166Linux: 15167 15168/proc/acpi/event now blocks properly. 15169 15170Removed /proc/sys/acpi. You can still dump your DSDT from 15171/proc/acpi/dsdt. 15172 15173 ACPI CA Core Subsystem: 15174 15175Fixed a problem introduced in the previous label where some of the 15176"small" resource descriptor types were not recognized. 15177 15178Improved error messages for the case where an ASL Field is outside 15179the range of the parent operation region. 15180 15181 ASL Compiler, version X2018: 15182 15183 15184Added error detection for ASL Fields that extend beyond the length 15185of the parent operation region (only if the length of the region 15186is known at compile time.) This includes fields that have a 15187minimum access width that is smaller than the parent region, and 15188individual field units that are partially or entirely beyond the 15189extent of the parent. 15190 15191 15192 15193------------------------------------------ 15194Summary of changes for this label: 04_27_01 15195 15196 ACPI CA Core Subsystem: 15197 15198Fixed a problem where the namespace mutex could be released at the 15199wrong time during execution of AcpiRemoveAddressSpaceHandler. 15200 15201Added optional thread ID output for debug traces, to simplify 15202debugging of multiple threads. Added context switch notification 15203when the debug code realizes that a different thread is now 15204executing ACPI code. 15205 15206Some additional external data types have been prefixed with the 15207string "ACPI_" for consistency. This may effect existing code. 15208The data types affected are the external callback typedefs - e.g., 15209 15210WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 15211 15212 Linux: 15213 15214Fixed an issue with the OSL semaphore implementation where a 15215thread was waking up with an error from receiving a SIGCHLD 15216signal. 15217 15218Linux version of ACPI CA now uses the system C library for string 15219manipulation routines instead of a local implementation. 15220 15221Cleaned up comments and removed TBDs. 15222 15223 ASL Compiler, version X2017: 15224 15225Enhanced error detection and reporting for all file I/O 15226operations. 15227 15228 Documentation: 15229 15230Programmer Reference updated to version 1.06. 15231 15232 15233 15234------------------------------------------ 15235Summary of changes for this label: 04_13_01 15236 15237 ACPI CA Core Subsystem: 15238 15239Restructured support for BufferFields and RegionFields. 15240BankFields support is now fully operational. All known 32-bit 15241limitations on field sizes have been removed. Both BufferFields 15242and (Operation) RegionFields are now supported by the same field 15243management code. 15244 15245Resource support now supports QWORD address and IO resources. The 1524616/32/64 bit address structures and the Extended IRQ structure 15247have been changed to properly handle Source Resource strings. 15248 15249A ThreadId of -1 is now used to indicate a "mutex not acquired" 15250condition internally and must never be returned by AcpiOsThreadId. 15251This reserved value was changed from 0 since Unix systems allow a 15252thread ID of 0. 15253 15254Linux: 15255 15256Driver code reorganized to enhance portability 15257 15258Added a kernel configuration option to control ACPI_DEBUG 15259 15260Fixed the EC driver to honor _GLK. 15261 15262ASL Compiler, version X2016: 15263 15264Fixed support for the "FixedHw" keyword. Previously, the FixedHw 15265address space was set to 0, not 0x7f as it should be. 15266 15267 ------------------------------------------ 15268Summary of changes for this label: 03_13_01 15269 15270 ACPI CA Core Subsystem: 15271 15272During ACPI initialization, the _SB_._INI method is now run if 15273present. 15274 15275Notify handler fix - notifies are deferred until the parent method 15276completes execution. This fixes the "mutex already acquired" 15277issue seen occasionally. 15278 15279Part of the "implicit conversion" rules in ACPI 2.0 have been 15280found to cause compatibility problems with existing ASL/AML. The 15281convert "result-to-target-type" implementation has been removed 15282for stores to method Args and Locals. Source operand conversion 15283is still fully implemented. Possible changes to ACPI 2.0 15284specification pending. 15285 15286Fix to AcpiRsCalculatePciRoutingTableLength to return correct 15287length. 15288 15289Fix for compiler warnings for 64-bit compiles. 15290 15291 Linux: 15292 15293/proc output aligned for easier parsing. 15294 15295Release-version compile problem fixed. 15296 15297New kernel configuration options documented in Configure.help. 15298 15299IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 15300context" message. 15301 15302 OSPM: 15303 15304Power resource driver integrated with bus manager. 15305 15306Fixed kernel fault during active cooling for thermal zones. 15307 15308Source Code: 15309 15310The source code tree has been restructured. 15311 15312 15313 15314------------------------------------------ 15315Summary of changes for this label: 03_02_01 15316 15317 Linux OS Services Layer (OSL): 15318 15319Major revision of all Linux-specific code. 15320 15321Modularized all ACPI-specific drivers. 15322 15323Added new thermal zone and power resource drivers. 15324 15325Revamped /proc interface (new functionality is under /proc/acpi). 15326 15327New kernel configuration options. 15328 15329 Linux known issues: 15330 15331New kernel configuration options not documented in Configure.help 15332yet. 15333 15334 15335Module dependencies not currently implemented. If used, they 15336should be loaded in this order: busmgr, power, ec, system, 15337processor, battery, ac_adapter, button, thermal. 15338 15339Modules will not load if CONFIG_MODVERSION is set. 15340 15341IBM 600E - entering S5 may reboot instead of shutting down. 15342 15343IBM 600E - Sleep button may generate "Invalid <NULL> context" 15344message. 15345 15346Some systems may fail with "execution mutex already acquired" 15347message. 15348 15349 ACPI CA Core Subsystem: 15350 15351Added a new OSL Interface, AcpiOsGetThreadId. This was required 15352for the deadlock detection code. Defined to return a non-zero, 32- 15353bit thread ID for the currently executing thread. May be a non- 15354zero constant integer on single-thread systems. 15355 15356Implemented deadlock detection for internal subsystem mutexes. We 15357may add conditional compilation for this code (debug only) later. 15358 15359ASL/AML Mutex object semantics are now fully supported. This 15360includes multiple acquires/releases by owner and support for the 15361 15362Mutex SyncLevel parameter. 15363 15364A new "Force Release" mechanism automatically frees all ASL 15365Mutexes that have been acquired but not released when a thread 15366exits the interpreter. This forces conformance to the ACPI spec 15367("All mutexes must be released when an invocation exits") and 15368prevents deadlocked ASL threads. This mechanism can be expanded 15369(later) to monitor other resource acquisitions if OEM ASL code 15370continues to misbehave (which it will). 15371 15372Several new ACPI exception codes have been added for the Mutex 15373support. 15374 15375Recursive method calls are now allowed and supported (the ACPI 15376spec does in fact allow recursive method calls.) The number of 15377recursive calls is subject to the restrictions imposed by the 15378SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 15379parameter. 15380 15381Implemented support for the SyncLevel parameter for control 15382methods (ACPI 2.0 feature) 15383 15384Fixed a deadlock problem when multiple threads attempted to use 15385the interpreter. 15386 15387Fixed a problem where the string length of a String package 15388element was not always set in a package returned from 15389AcpiEvaluateObject. 15390 15391Fixed a problem where the length of a String package element was 15392not always included in the length of the overall package returned 15393from AcpiEvaluateObject. 15394 15395Added external interfaces (Acpi*) to the ACPI debug memory 15396manager. This manager keeps a list of all outstanding 15397allocations, and can therefore detect memory leaks and attempts to 15398free memory blocks more than once. Useful for code such as the 15399power manager, etc. May not be appropriate for device drivers. 15400Performance with the debug code enabled is slow. 15401 15402The ACPI Global Lock is now an optional hardware element. 15403 15404 ASL Compiler Version X2015: 15405 15406Integrated changes to allow the compiler to be generated on 15407multiple platforms. 15408 15409Linux makefile added to generate the compiler on Linux 15410 15411 Source Code: 15412 15413All platform-specific headers have been moved to their own 15414subdirectory, Include/Platform. 15415 15416New source file added, Interpreter/ammutex.c 15417 15418New header file, Include/acstruct.h 15419 15420 Documentation: 15421 15422The programmer reference has been updated for the following new 15423interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 15424 15425 ------------------------------------------ 15426Summary of changes for this label: 02_08_01 15427 15428Core ACPI CA Subsystem: Fixed a problem where an error was 15429incorrectly returned if the return resource buffer was larger than 15430the actual data (in the resource interfaces). 15431 15432References to named objects within packages are resolved to the 15433 15434full pathname string before packages are returned directly (via 15435the AcpiEvaluateObject interface) or indirectly via the resource 15436interfaces. 15437 15438Linux OS Services Layer (OSL): 15439 15440Improved /proc battery interface. 15441 15442 15443Added C-state debugging output and other miscellaneous fixes. 15444 15445ASL Compiler Version X2014: 15446 15447All defined method arguments can now be used as local variables, 15448including the ones that are not actually passed in as parameters. 15449The compiler tracks initialization of the arguments and issues an 15450exception if they are used without prior assignment (just like 15451locals). 15452 15453The -o option now specifies a filename prefix that is used for all 15454output files, including the AML output file. Otherwise, the 15455default behavior is as follows: 1) the AML goes to the file 15456specified in the DSDT. 2) all other output files use the input 15457source filename as the base. 15458 15459 ------------------------------------------ 15460Summary of changes for this label: 01_25_01 15461 15462Core ACPI CA Subsystem: Restructured the implementation of object 15463store support within the interpreter. This includes support for 15464the Store operator as well as any ASL operators that include a 15465target operand. 15466 15467Partially implemented support for Implicit Result-to-Target 15468conversion. This is when a result object is converted on the fly 15469to the type of an existing target object. Completion of this 15470support is pending further analysis of the ACPI specification 15471concerning this matter. 15472 15473CPU-specific code has been removed from the subsystem (hardware 15474directory). 15475 15476New Power Management Timer functions added 15477 15478Linux OS Services Layer (OSL): Moved system state transition code 15479to the core, fixed it, and modified Linux OSL accordingly. 15480 15481Fixed C2 and C3 latency calculations. 15482 15483 15484We no longer use the compilation date for the version message on 15485initialization, but retrieve the version from AcpiGetSystemInfo(). 15486 15487Incorporated for fix Sony VAIO machines. 15488 15489Documentation: The Programmer Reference has been updated and 15490reformatted. 15491 15492 15493ASL Compiler: Version X2013: Fixed a problem where the line 15494numbering and error reporting could get out of sync in the 15495presence of multiple include files. 15496 15497 ------------------------------------------ 15498Summary of changes for this label: 01_15_01 15499 15500Core ACPI CA Subsystem: 15501 15502Implemented support for type conversions in the execution of the 15503ASL Concatenate operator (The second operand is converted to 15504match the type of the first operand before concatenation.) 15505 15506Support for implicit source operand conversion is partially 15507implemented. The ASL source operand types Integer, Buffer, and 15508String are freely interchangeable for most ASL operators and are 15509converted by the interpreter on the fly as required. Implicit 15510Target operand conversion (where the result is converted to the 15511target type before storing) is not yet implemented. 15512 15513Support for 32-bit and 64-bit BCD integers is implemented. 15514 15515Problem fixed where a field read on an aligned field could cause a 15516read past the end of the field. 15517 15518New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 15519does not return a value, but the caller expects one. (The ASL 15520compiler flags this as a warning.) 15521 15522ASL Compiler: 15523 15524Version X2011: 155251. Static typechecking of all operands is implemented. This 15526prevents the use of invalid objects (such as using a Package where 15527an Integer is required) at compile time instead of at interpreter 15528run-time. 155292. The ASL source line is printed with ALL errors and warnings. 155303. Bug fix for source EOF without final linefeed. 155314. Debug option is split into a parse trace and a namespace trace. 155325. Namespace output option (-n) includes initial values for 15533integers and strings. 155346. Parse-only option added for quick syntax checking. 155357. Compiler checks for duplicate ACPI name declarations 15536 15537Version X2012: 155381. Relaxed typechecking to allow interchangeability between 15539strings, integers, and buffers. These types are now converted by 15540the interpreter at runtime. 155412. Compiler reports time taken by each internal subsystem in the 15542debug output file. 15543 15544 15545 ------------------------------------------ 15546Summary of changes for this label: 12_14_00 15547 15548ASL Compiler: 15549 15550This is the first official release of the compiler. Since the 15551compiler requires elements of the Core Subsystem, this label 15552synchronizes everything. 15553 15554------------------------------------------ 15555Summary of changes for this label: 12_08_00 15556 15557 15558Fixed a problem where named references within the ASL definition 15559of both OperationRegions and CreateXXXFields did not work 15560properly. The symptom was an AE_AML_OPERAND_TYPE during 15561initialization of the region/field. This is similar (but not 15562related internally) to the problem that was fixed in the last 15563label. 15564 15565Implemented both 32-bit and 64-bit support for the BCD ASL 15566functions ToBCD and FromBCD. 15567 15568Updated all legal headers to include "2000" in the copyright 15569years. 15570 15571 ------------------------------------------ 15572Summary of changes for this label: 12_01_00 15573 15574Fixed a problem where method invocations within the ASL definition 15575of both OperationRegions and CreateXXXFields did not work 15576properly. The symptom was an AE_AML_OPERAND_TYPE during 15577initialization of the region/field: 15578 15579 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 15580[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 15581(0x3005) 15582 15583Fixed a problem where operators with more than one nested 15584subexpression would fail. The symptoms were varied, by mostly 15585AE_AML_OPERAND_TYPE errors. This was actually a rather serious 15586problem that has gone unnoticed until now. 15587 15588 Subtract (Add (1,2), Multiply (3,4)) 15589 15590Fixed a problem where AcpiGetHandle didn't quite get fixed in the 15591previous build (The prefix part of a relative path was handled 15592incorrectly). 15593 15594Fixed a problem where Operation Region initialization failed if 15595the operation region name was a "namepath" instead of a simple 15596"nameseg". Symptom was an AE_NO_OPERAND error. 15597 15598Fixed a problem where an assignment to a local variable via the 15599indirect RefOf mechanism only worked for the first such 15600assignment. Subsequent assignments were ignored. 15601 15602 ------------------------------------------ 15603Summary of changes for this label: 11_15_00 15604 15605ACPI 2.0 table support with backwards support for ACPI 1.0 and the 156060.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 15607the AML interpreter does NOT have support for the new 2.0 ASL 15608grammar terms at this time. 15609 15610All ACPI hardware access is via the GAS structures in the ACPI 2.0 15611FADT. 15612 15613All physical memory addresses across all platforms are now 64 bits 15614wide. Logical address width remains dependent on the platform 15615(i.e., "void *"). 15616 15617AcpiOsMapMemory interface changed to a 64-bit physical address. 15618 15619The AML interpreter integer size is now 64 bits, as per the ACPI 156202.0 specification. 15621 15622For backwards compatibility with ACPI 1.0, ACPI tables with a 15623revision number less than 2 use 32-bit integers only. 15624 15625Fixed a problem where the evaluation of OpRegion operands did not 15626always resolve them to numbers properly. 15627 15628------------------------------------------ 15629Summary of changes for this label: 10_20_00 15630 15631Fix for CBN_._STA issue. This fix will allow correct access to 15632CBN_ OpRegions when the _STA returns 0x8. 15633 15634Support to convert ACPI constants (Ones, Zeros, One) to actual 15635values before a package object is returned 15636 15637Fix for method call as predicate to if/while construct causing 15638incorrect if/while behavior 15639 15640Fix for Else block package lengths sometimes calculated wrong (if 15641block > 63 bytes) 15642 15643Fix for Processor object length field, was always zero 15644 15645Table load abort if FACP sanity check fails 15646 15647Fix for problem with Scope(name) if name already exists 15648 15649Warning emitted if a named object referenced cannot be found 15650(resolved) during method execution. 15651 15652 15653 15654 15655 15656------------------------------------------ 15657Summary of changes for this label: 9_29_00 15658 15659New table initialization interfaces: AcpiInitializeSubsystem no 15660longer has any parameters AcpiFindRootPointer - Find the RSDP (if 15661necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 15662>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 15663AcpiLoadTables 15664 15665Note: These interface changes require changes to all existing OSDs 15666 15667The PCI_Config default address space handler is always installed 15668at the root namespace object. 15669 15670------------------------------------------- 15671Summary of changes for this label: 09_15_00 15672 15673The new initialization architecture is implemented. New 15674interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 15675AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 15676 15677(Namespace is automatically loaded when a table is loaded) 15678 15679The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1568052 bytes to 32 bytes. There is usually one of these for every 15681namespace object, so the memory savings is significant. 15682 15683Implemented just-in-time evaluation of the CreateField operators. 15684 15685Bug fixes for IA-64 support have been integrated. 15686 15687Additional code review comments have been implemented 15688 15689The so-called "third pass parse" has been replaced by a final walk 15690through the namespace to initialize all operation regions (address 15691spaces) and fields that have not yet been initialized during the 15692execution of the various _INI and REG methods. 15693 15694New file - namespace/nsinit.c 15695 15696------------------------------------------- 15697Summary of changes for this label: 09_01_00 15698 15699Namespace manager data structures have been reworked to change the 15700primary object from a table to a single object. This has 15701resulted in dynamic memory savings of 3X within the namespace and 157022X overall in the ACPI CA subsystem. 15703 15704Fixed problem where the call to AcpiEvFindPciRootBuses was 15705inadvertently left commented out. 15706 15707Reduced the warning count when generating the source with the GCC 15708compiler. 15709 15710Revision numbers added to each module header showing the 15711SourceSafe version of the file. Please refer to this version 15712number when giving us feedback or comments on individual modules. 15713 15714The main object types within the subsystem have been renamed to 15715clarify their purpose: 15716 15717ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 15718ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 15719ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 15720 15721NOTE: no changes to the initialization sequence are included in 15722this label. 15723 15724------------------------------------------- 15725Summary of changes for this label: 08_23_00 15726 15727Fixed problem where TerminateControlMethod was being called 15728multiple times per method 15729 15730Fixed debugger problem where single stepping caused a semaphore to 15731be oversignalled 15732 15733Improved performance through additional parse object caching - 15734added ACPI_EXTENDED_OP type 15735 15736------------------------------------------- 15737Summary of changes for this label: 08_10_00 15738 15739Parser/Interpreter integration: Eliminated the creation of 15740complete parse trees for ACPI tables and control methods. 15741Instead, parse subtrees are created and then deleted as soon as 15742they are processed (Either entered into the namespace or executed 15743by the interpreter). This reduces the use of dynamic kernel 15744memory significantly. (about 10X) 15745 15746Exception codes broken into classes and renumbered. Be sure to 15747recompile all code that includes acexcep.h. Hopefully we won't 15748have to renumber the codes again now that they are split into 15749classes (environment, programmer, AML code, ACPI table, and 15750internal). 15751 15752Fixed some additional alignment issues in the Resource Manager 15753subcomponent 15754 15755Implemented semaphore tracking in the AcpiExec utility, and fixed 15756several places where mutexes/semaphores were being unlocked 15757without a corresponding lock operation. There are no known 15758semaphore or mutex "leaks" at this time. 15759 15760Fixed the case where an ASL Return operator is used to return an 15761unnamed package. 15762 15763------------------------------------------- 15764Summary of changes for this label: 07_28_00 15765 15766Fixed a problem with the way addresses were calculated in 15767AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 15768manifested itself when a Field was created with WordAccess or 15769DwordAccess, but the field unit defined within the Field was less 15770 15771than a Word or Dword. 15772 15773Fixed a problem in AmlDumpOperands() module's loop to pull 15774operands off of the operand stack to display information. The 15775problem manifested itself as a TLB error on 64-bit systems when 15776accessing an operand stack with two or more operands. 15777 15778Fixed a problem with the PCI configuration space handlers where 15779context was getting confused between accesses. This required a 15780change to the generic address space handler and address space 15781setup definitions. Handlers now get both a global handler context 15782(this is the one passed in by the user when executing 15783AcpiInstallAddressSpaceHandler() and a specific region context 15784that is unique to each region (For example, the _ADR, _SEG and 15785_BBN values associated with a specific region). The generic 15786function definitions have changed to the following: 15787 15788typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 15789UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 15790*HandlerContext, // This used to be void *Context void 15791*RegionContext); // This is an additional parameter 15792 15793typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 15794RegionHandle, UINT32 Function, void *HandlerContext, void 15795**RegionContext); // This used to be **ReturnContext 15796 15797------------------------------------------- 15798Summary of changes for this label: 07_21_00 15799 15800Major file consolidation and rename. All files within the 15801interpreter have been renamed as well as most header files. This 15802was done to prevent collisions with existing files in the host 15803OSs -- filenames such as "config.h" and "global.h" seem to be 15804quite common. The VC project files have been updated. All 15805makefiles will require modification. 15806 15807The parser/interpreter integration continues in Phase 5 with the 15808implementation of a complete 2-pass parse (the AML is parsed 15809twice) for each table; This avoids the construction of a huge 15810parse tree and therefore reduces the amount of dynamic memory 15811required by the subsystem. Greater use of the parse object cache 15812means that performance is unaffected. 15813 15814Many comments from the two code reviews have been rolled in. 15815 15816The 64-bit alignment support is complete. 15817 15818------------------------------------------- 15819Summary of changes for this label: 06_30_00 15820 15821With a nod and a tip of the hat to the technology of yesteryear, 15822we've added support in the source code for 80 column output 15823devices. The code is now mostly constrained to 80 columns or 15824less to support environments and editors that 1) cannot display 15825or print more than 80 characters on a single line, and 2) cannot 15826disable line wrapping. 15827 15828A major restructuring of the namespace data structure has been 15829completed. The result is 1) cleaner and more 15830understandable/maintainable code, and 2) a significant reduction 15831in the dynamic memory requirement for each named ACPI object 15832(almost half). 15833 15834------------------------------------------- 15835Summary of changes for this label: 06_23_00 15836 15837Linux support has been added. In order to obtain approval to get 15838the ACPI CA subsystem into the Linux kernel, we've had to make 15839quite a few changes to the base subsystem that will affect all 15840users (all the changes are generic and OS- independent). The 15841effects of these global changes have been somewhat far reaching. 15842Files have been merged and/or renamed and interfaces have been 15843renamed. The major changes are described below. 15844 15845Osd* interfaces renamed to AcpiOs* to eliminate namespace 15846pollution/confusion within our target kernels. All OSD 15847interfaces must be modified to match the new naming convention. 15848 15849Files merged across the subsystem. A number of the smaller source 15850and header files have been merged to reduce the file count and 15851increase the density of the existing files. There are too many 15852to list here. In general, makefiles that call out individual 15853files will require rebuilding. 15854 15855Interpreter files renamed. All interpreter files now have the 15856prefix am* instead of ie* and is*. 15857 15858Header files renamed: The acapi.h file is now acpixf.h. The 15859acpiosd.h file is now acpiosxf.h. We are removing references to 15860the acronym "API" since it is somewhat windowsy. The new name is 15861"external interface" or xface or xf in the filenames.j 15862 15863 15864All manifest constants have been forced to upper case (some were 15865mixed case.) Also, the string "ACPI_" has been prepended to many 15866(not all) of the constants, typedefs, and structs. 15867 15868The globals "DebugLevel" and "DebugLayer" have been renamed 15869"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 15870 15871All other globals within the subsystem are now prefixed with 15872"AcpiGbl_" Internal procedures within the subsystem are now 15873prefixed with "Acpi" (with only a few exceptions). The original 15874two-letter abbreviation for the subcomponent remains after "Acpi" 15875- for example, CmCallocate became AcpiCmCallocate. 15876 15877Added a source code translation/conversion utility. Used to 15878generate the Linux source code, it can be modified to generate 15879other types of source as well. Can also be used to cleanup 15880existing source by removing extraneous spaces and blank lines. 15881Found in tools/acpisrc/* 15882 15883OsdUnMapMemory was renamed to OsdUnmapMemory and then 15884AcpiOsUnmapMemory. (UnMap became Unmap). 15885 15886A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 15887When set to one, this indicates that the caller wants to use the 15888 15889semaphore as a mutex, not a counting semaphore. ACPI CA uses 15890both types. However, implementers of this call may want to use 15891different OS primitives depending on the type of semaphore 15892requested. For example, some operating systems provide separate 15893 15894"mutex" and "semaphore" interfaces - where the mutex interface is 15895much faster because it doesn't have all the overhead of a full 15896semaphore implementation. 15897 15898Fixed a deadlock problem where a method that accesses the PCI 15899address space can block forever if it is the first access to the 15900space. 15901 15902------------------------------------------- 15903Summary of changes for this label: 06_02_00 15904 15905Support for environments that cannot handle unaligned data 15906accesses (e.g. firmware and OS environments devoid of alignment 15907handler technology namely SAL/EFI and the IA-64 Linux kernel) has 15908been added (via configurable macros) in these three areas: - 15909Transfer of data from the raw AML byte stream is done via byte 15910moves instead of word/dword/qword moves. - External objects are 15911aligned within the user buffer, including package elements (sub- 15912objects). - Conversion of name strings to UINT32 Acpi Names is now 15913done byte-wise. 15914 15915The Store operator was modified to mimic Microsoft's 15916implementation when storing to a Buffer Field. 15917 15918Added a check of the BM_STS bit before entering C3. 15919 15920The methods subdirectory has been obsoleted and removed. A new 15921file, cmeval.c subsumes the functionality. 15922 15923A 16-bit (DOS) version of AcpiExec has been developed. The 15924makefile is under the acpiexec directory. 15925