1---------------------------------------- 212 February 2016. Summary of changes for version 20160212: 3 4This release is available at https://acpica.org/downloads 5 61) ACPICA kernel-resident subsystem: 7 8Implemented full support for the ACPI 6.1 specification (released in 9January). This version of the specification is available at: 10http://www.uefi.org/specifications 11 12Only a relatively small number of changes were required in ACPICA to 13support ACPI 6.1, in these areas: 14- New predefined names 15- New _HID values 16- A new subtable for HEST 17- A few other header changes for new values 18 19Ensure \_SB_._INI is executed before any _REG methods are executed. There 20appears to be existing BIOS code that relies on this behavior. Lv Zheng. 21 22Reverted a change made in version 20151218 which enabled method 23invocations to be targets of various ASL operators (SuperName and Target 24grammar elements). While the new behavior is supported by the ACPI 25specification, other AML interpreters do not support this behavior and 26never will. The ACPI specification will be updated for ACPI 6.2 to remove 27this support. Therefore, the change was reverted to the original ACPICA 28behavior. 29 30ACPICA now supports the GCC 6 compiler. 31 32Current Release: (Note: build changes increased sizes) 33 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 34 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 35Previous Release: 36 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 37 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 38 39 402) iASL Compiler/Disassembler and Tools: 41 42Completed full support for the ACPI 6.0 External() AML opcode. The 43compiler emits an external AML opcode for each ASL External statement. 44This opcode is used by the disassembler to assist with the disassembly of 45external control methods by specifying the required number of arguments 46for the method. AML interpreters do not use this opcode. To ensure that 47interpreters do not even see the opcode, a block of one or more external 48opcodes is surrounded by an "If(0)" construct. As this feature becomes 49commonly deployed in BIOS code, the ability of disassemblers to correctly 50disassemble AML code will be greatly improved. David Box. 51 52iASL: Implemented support for an optional cross-reference output file. 53The -lx option will create a the cross-reference file with the suffix 54"xrf". Three different types of cross-reference are created in this file: 55- List of object references made from within each control method 56- Invocation (caller) list for each user-defined control method 57- List of references to each non-method object in the namespace 58 59iASL: Method invocations as ASL Target operands are now disallowed and 60flagged as errors in preparation for ACPI 6.2 (see the description of the 61problem above). 62 63---------------------------------------- 648 January 2016. Summary of changes for version 20160108: 65 661) ACPICA kernel-resident subsystem: 67 68Updated all ACPICA copyrights and signons to 2016: Added the 2016 69copyright to all source code module headers and utility/tool signons. 70This includes the standard Linux dual-license header. This affects 71virtually every file in the ACPICA core subsystem, iASL compiler, all 72ACPICA utilities, and the ACPICA test suite. 73 74Fixed a regression introduced in version 20151218 concerning the 75execution of so-called module-level ASL/AML code. Namespace objects 76created under a module-level If() construct were not properly/fully 77entered into the namespace and could cause an interpreter fault when 78accessed. 79 80Example Code and Data Size: These are the sizes for the OS-independent 81acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 82debug version of the code includes the debug output trace mechanism and 83has a much larger code and data size. 84 85Current Release: 86 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 87 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 88 Previous Release: 89 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 90 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 91 92 932) iASL Compiler/Disassembler and Tools: 94 95Fixed a problem with the compilation of the GpioIo and GpioInt resource 96descriptors. The _PIN field name was incorrectly defined to be an array 97of 32-bit values, but the _PIN values are in fact 16 bits each. This 98would cause incorrect bit width warnings when using Word (16-bit) fields 99to access the descriptors. 100 101 102---------------------------------------- 10318 December 2015. Summary of changes for version 20151218: 104 1051) ACPICA kernel-resident subsystem: 106 107Implemented per-AML-table execution of "module-level code" as individual 108ACPI tables are loaded into the namespace during ACPICA initialization. 109In other words, any module-level code within an AML table is executed 110immediately after the table is loaded, instead of batched and executed 111after all of the tables have been loaded. This provides compatibility 112with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 113David Box. 114 115To fully support the feature above, the default operation region handlers 116for the SystemMemory, SystemIO, and PCI_Config address spaces are now 117installed before any ACPI tables are loaded. This enables module-level 118code to access these address spaces during the table load and module- 119level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 120Box. 121 122Implemented several changes to the internal _REG support in conjunction 123with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 124utilities for the changes above. Although these tools were changed, host 125operating systems that simply use the default handlers for SystemMemory, 126SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 127 128For example, in the code below, DEV1 is conditionally added to the 129namespace by the DSDT via module-level code that accesses an operation 130region. The SSDT references DEV1 via the Scope operator. DEV1 must be 131created immediately after the DSDT is loaded in order for the SSDT to 132successfully reference DEV1. Previously, this code would cause an 133AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 134fully supported by ACPICA. 135 136 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 137 { 138 OperationRegion (OPR1, SystemMemory, 0x400, 32) 139 Field (OPR1, AnyAcc, NoLock, Preserve) 140 { 141 FLD1, 1 142 } 143 If (FLD1) 144 { 145 Device (\DEV1) 146 { 147 } 148 } 149 } 150 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 151 { 152 External (\DEV1, DeviceObj) 153 Scope (\DEV1) 154 { 155 } 156 } 157 158Fixed an AML interpreter problem where control method invocations were 159not handled correctly when the invocation was itself a SuperName argument 160to another ASL operator. In these cases, the method was not invoked. 161ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 162argument: 163 Store 164 Acquire, Wait 165 CondRefOf, RefOf 166 Decrement, Increment 167 Load, Unload 168 Notify 169 Signal, Release, Reset 170 SizeOf 171 172Implemented automatic String-to-ObjectReference conversion support for 173packages returned by predefined names (such as _DEP). A common BIOS error 174is to add double quotes around an ObjectReference namepath, which turns 175the reference into an unexpected string object. This support detects the 176problem and corrects it before the package is returned to the caller that 177invoked the method. Lv Zheng. 178 179Implemented extensions to the Concatenate operator. Concatenate now 180accepts any type of object, it is not restricted to simply 181Integer/String/Buffer. For objects other than these 3 basic data types, 182the argument is treated as a string containing the name of the object 183type. This expands the utility of Concatenate and the Printf/Fprintf 184macros. ACPICA BZ 1222. 185 186Cleaned up the output of the ASL Debug object. The timer() value is now 187optional and no longer emitted by default. Also, the basic data types of 188Integer/String/Buffer are simply emitted as their values, without a data 189type string -- since the data type is obvious from the output. ACPICA BZ 1901221. 191 192Example Code and Data Size: These are the sizes for the OS-independent 193acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 194debug version of the code includes the debug output trace mechanism and 195has a much larger code and data size. 196 197 Current Release: 198 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 199 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 200 Previous Release: 201 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 202 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 203 204 2052) iASL Compiler/Disassembler and Tools: 206 207iASL: Fixed some issues with the ASL Include() operator. This operator 208was incorrectly defined in the iASL parser rules, causing a new scope to 209be opened for the code within the include file. This could lead to 210several issues, including allowing ASL code that is technically illegal 211and not supported by AML interpreters. Note, this does not affect the 212related #include preprocessor operator. ACPICA BZ 1212. 213 214iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 215operator is essentially an ASL macro since there is no AML opcode 216associated with it. The code emitted by the iASL compiler for ElseIf is 217an Else opcode followed immediately by an If opcode. The disassembler 218will now emit an ElseIf if it finds an Else immediately followed by an 219If. This simplifies the decoded ASL, especially for deeply nested 220If..Else and large Switch constructs. Thus, the disassembled code more 221closely follows the original source ASL. ACPICA BZ 1211. Example: 222 223 Old disassembly: 224 Else 225 { 226 If (Arg0 == 0x02) 227 { 228 Local0 = 0x05 229 } 230 } 231 232 New disassembly: 233 ElseIf (Arg0 == 0x02) 234 { 235 Local0 = 0x05 236 } 237 238AcpiExec: Added support for the new module level code behavior and the 239early region installation. This required a small change to the 240initialization, since AcpiExec must install its own operation region 241handlers. 242 243AcpiExec: Added support to make the debug object timer optional. Default 244is timer disabled. This cleans up the debug object output -- the timer 245data is rarely used. 246 247AcpiExec: Multiple ACPI tables are now loaded in the order that they 248appear on the command line. This can be important when there are 249interdependencies/references between the tables. 250 251iASL/Templates. Add support to generate template files with multiple 252SSDTs within a single output file. Also added ommand line support to 253specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 2541223, 1225. 255 256 257---------------------------------------- 25824 November 2015. Summary of changes for version 20151124: 259 2601) ACPICA kernel-resident subsystem: 261 262Fixed a possible regression for a previous update to FADT handling. The 263FADT no longer has a fixed table ID, causing some issues with code that 264was hardwired to a specific ID. Lv Zheng. 265 266Fixed a problem where the method auto-serialization could interfere with 267the current SyncLevel. This change makes the auto-serialization support 268transparent to the SyncLevel support and management. 269 270Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 271interface is intended for early access to the namespace during the 272initial namespace device discovery walk. The _SUB method has been seen to 273access operation regions in some cases, causing errors because the 274operation regions are not fully initialized. 275 276AML Debugger: Fixed some issues with the terminate/quit/exit commands 277that can cause faults. Lv Zheng. 278 279AML Debugger: Add thread ID support so that single-step mode only applies 280to the AML Debugger thread. This prevents runtime errors within some 281kernels. Lv Zheng. 282 283Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 284methods that are invoked by this interface are optional, removed warnings 285emitted for the case where one or more of these methods do not exist. 286ACPICA BZ 1208, original change by Prarit Bhargava. 287 288Made a major pass through the entire ACPICA source code base to 289standardize formatting that has diverged a bit over time. There are no 290functional changes, but this will of course cause quite a few code 291differences from the previous ACPICA release. 292 293Example Code and Data Size: These are the sizes for the OS-independent 294acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 295debug version of the code includes the debug output trace mechanism and 296has a much larger code and data size. 297 298 Current Release: 299 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 300 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 301 Previous Release: 302 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 303 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 304 305 3062) iASL Compiler/Disassembler and Tools: 307 308iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 309definition blocks within a single ASL file and the resulting AML file. 310Support for this type of file was also added to the various tools that 311use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 312example code below shows two definition blocks within the same file: 313 314 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 3150x12345678) 316 { 317 } 318 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 319 { 320 } 321 322iASL: Enhanced typechecking for the Name() operator. All expressions for 323the value of the named object must be reduced/folded to a single constant 324at compile time, as per the ACPI specification (the AML definition of 325Name()). 326 327iASL: Fixed some code indentation issues for the -ic and -ia options (C 328and assembly headers). Now all emitted code correctly begins in column 1. 329 330iASL: Added an error message for an attempt to open a Scope() on an 331object defined in an SSDT. The DSDT is always loaded into the namespace 332first, so any attempt to open a Scope on an SSDT object will fail at 333runtime. 334 335 336---------------------------------------- 33730 September 2015. Summary of changes for version 20150930: 338 3391) ACPICA kernel-resident subsystem: 340 341Debugger: Implemented several changes and bug fixes to assist support for 342the in-kernel version of the AML debugger. Lv Zheng. 343- Fix the "predefined" command for in-kernel debugger. 344- Do not enter debug command loop for the help and version commands. 345- Disallow "execute" command during execution/single-step of a method. 346 347Interpreter: Updated runtime typechecking for all operators that have 348target operands. The operand is resolved and validated that it is legal. 349For example, the target cannot be a non-data object such as a Device, 350Mutex, ThermalZone, etc., as per the ACPI specification. 351 352Debugger: Fixed the double-mutex user I/O handshake to work when local 353deadlock detection is enabled. 354 355Debugger: limited display of method locals and arguments (LocalX and 356ArgX) to only those that have actually been initialized. This prevents 357lines of extraneous output. 358 359Updated the definition of the NFIT table to correct the bit polarity of 360one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 361 362Example Code and Data Size: These are the sizes for the OS-independent 363acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 364debug version of the code includes the debug output trace mechanism and 365has a much larger code and data size. 366 367 Current Release: 368 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 369 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 370 Previous Release: 371 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 372 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 373 374 3752) iASL Compiler/Disassembler and Tools: 376 377iASL: Improved the compile-time typechecking for operands of many of the 378ASL operators: 379 380-- Added an option to disable compiler operand/operator typechecking (- 381ot). 382 383-- For the following operators, the TermArg operands are now validated 384when possible to be Integer data objects: BankField, OperationRegion, 385DataTableRegion, Buffer, and Package. 386 387-- Store (Source, Target): Both the source and target operands are 388resolved and checked that the operands are both legal. For example, 389neither operand can be a non-data object such as a Device, Mutex, 390ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 391operator can be used to store an object to any type of target object. 392 393-- Store (Source, Target): If the source is a Package object, the target 394must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 395is a Package, the source must also be a Package. 396 397-- Store (Source, Target): A warning is issued if the source and target 398resolve to the identical named object. 399 400-- Store (Source, <method invocation>): An error is generated for the 401target method invocation, as this construct is not supported by the AML 402interpreter. 403 404-- For all ASL math and logic operators, the target operand must be a 405data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 406includes the function return value also. 407 408-- External declarations are also included in the typechecking where 409possible. External objects defined using the UnknownObj keyword cannot be 410typechecked, however. 411 412iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 413operator: 414- Legacy code: Index(PKG1, 3) 415- New ASL+ code: PKG1[3] 416This completes the ACPI 6.0 ASL+ support as it was the only operator not 417supported. 418 419iASL: Fixed the file suffix for the preprocessor output file (.i). Two 420spaces were inadvertently appended to the filename, causing file access 421and deletion problems on some systems. 422 423ASL Test Suite (ASLTS): Updated the master makefile to generate all 424possible compiler output files when building the test suite -- thus 425exercising these features of the compiler. These files are automatically 426deleted when the test suite exits. 427 428 429---------------------------------------- 43018 August 2015. Summary of changes for version 20150818: 431 4321) ACPICA kernel-resident subsystem: 433 434Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 435Zheng. ACPICA BZ 1186. 436 437Completed development to ensure that the ACPICA Disassembler and Debugger 438are fully standalone components of ACPICA. Removed cross-component 439dependences. Lv Zheng. 440 441The max-number-of-AML-loops is now runtime configurable (previously was 442compile-time only). This is essentially a loop timeout to force-abort 443infinite AML loops. ACPCIA BZ 1192. 444 445Debugger: Cleanup output to dump ACPI names and namepaths without any 446trailing underscores. Lv Zheng. ACPICA BZ 1135. 447 448Removed unnecessary conditional compilations across the Debugger and 449Disassembler components where entire modules could be left uncompiled. 450 451The aapits test is deprecated and has been removed from the ACPICA git 452tree. The test has never been completed and has not been maintained, thus 453becoming rather useless. ACPICA BZ 1015, 794. 454 455A batch of small changes to close bugzilla and other reports: 456- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 457- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 458- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 459- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 460Moore. 461- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 462ACPICA BZ 1184. 463- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 464operators. 465- Debugger: Split debugger initialization/termination interfaces. Lv 466Zheng. 467- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 468identification. 469- AcpiExec: Add debug message during _REG method phase during table 470load/init. 471- AcpiNames: Fix a regression where some output was missing and no longer 472emitted. 473- Debugger: General cleanup and simplification. Lv Zheng. 474- Disassembler: Cleanup use of several global option variables. Lv Zheng. 475 476Example Code and Data Size: These are the sizes for the OS-independent 477acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 478debug version of the code includes the debug output trace mechanism and 479has a much larger code and data size. 480 481 Current Release: 482 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 483 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 484 Previous Release: 485 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 486 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 487 488 4892) iASL Compiler/Disassembler and Tools: 490 491AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 492were not handled properly and caused load errors. Now, properly invoke 493and use the ACPICA auto-reallocate mechanism for ACPI table data 494structures. ACPICA BZ 1188 495 496AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 497BZ 1190. 498 499AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 500AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 501executed during initialization. ACPICA BZ 1187, 1189. 502 503iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 504that corresponds to each disassembled ASL statement, to simplify 505debugging. ACPICA BZ 1191. 506 507Debugger: Add option to the "objects" command to display a summary of the 508current namespace objects (Object type and count). This is displayed if 509the command is entered with no arguments. 510 511AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 512 513 514---------------------------------------- 51517 July 2015. Summary of changes for version 20150717: 516 5171) ACPICA kernel-resident subsystem: 518 519Improved the partitioning between the Debugger and Disassembler 520components. This allows the Debugger to be used standalone within kernel 521code without the Disassembler (which is used for single stepping also). 522This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 523 524Debugger: Implemented a new command to trace the execution of control 525methods (Trace). This is especially useful for the in-kernel version of 526the debugger when file I/O may not be available for method trace output. 527See the ACPICA reference for more information. Lv Zheng. 528 529Moved all C library prototypes (used for the local versions of these 530functions when requested) to a new header, acclib.h 531Cleaned up the use of non-ANSI C library functions. These functions are 532implemented locally in ACPICA. Moved all such functions to a common 533source file, utnonansi.c 534 535Debugger: Fixed a problem with the "!!" command (get last command 536executed) where the debugger could enter an infinite loop and eventually 537crash. 538 539Removed the use of local macros that were used for some of the standard C 540library functions to automatically cast input parameters. This mostly 541affected the is* functions where the input parameter is defined to be an 542int. This required a few modifications to the main ACPICA source code to 543provide casting for these functions and eliminate possible compiler 544warnings for these parameters. 545 546Across the source code, added additional status/error checking to resolve 547issues discovered by static source code analysis tools such as Coverity. 548 549Example Code and Data Size: These are the sizes for the OS-independent 550acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 551debug version of the code includes the debug output trace mechanism and 552has a much larger code and data size. 553 554 Current Release: 555 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 556 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 557 Previous Release: 558 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 559 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 560 561 5622) iASL Compiler/Disassembler and Tools: 563 564iASL: Fixed a regression where the device map file feature no longer 565worked properly when used in conjunction with the disassembler. It only 566worked properly with the compiler itself. 567 568iASL: Implemented a new warning for method LocalX variables that are set 569but never used (similar to a C compiler such as gcc). This also applies 570to ArgX variables that are not defined by the parent method, and are 571instead (legally) used as local variables. 572 573iASL/Preprocessor: Finished the pass-through of line numbers from the 574preprocessor to the compiler. This ensures that compiler errors/warnings 575have the correct original line numbers and filenames, regardless of any 576#include files. 577 578iASL/Preprocessor: Fixed a couple of issues with comment handling and the 579pass-through of comments to the preprocessor output file (which becomes 580the compiler input file). Also fixed a problem with // comments that 581appear after a math expression. 582 583iASL: Added support for the TCPA server table to the table compiler and 584template generator. (The client table was already previously supported) 585 586iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 587identify the iASL compiler. 588 589Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 590multiple times. The new names are ACPI_SIGN_NEGATIVE and 591ACPI_SIGN_POSITIVE. 592 593AcpiHelp: Update to expand help messages for the iASL preprocessor 594directives. 595 596 597---------------------------------------- 59819 June 2015. Summary of changes for version 20150619: 599 600Two regressions in version 20150616 have been addressed: 601 602Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 603etc.) This update changes ACPICA to only use the standard headers for 604functions, or the prototypes for the local versions of the C library 605functions. Across the source code, this required some additional casts 606for some Clib invocations for portability. Moved all local prototypes to 607a new file, acclib.h 608 609Fixes several problems with recent changes to the handling of the FACS 610table that could cause some systems not to boot. 611 612 613---------------------------------------- 61416 June 2015. Summary of changes for version 20150616: 615 616 6171) ACPICA kernel-resident subsystem: 618 619Across the entire ACPICA source code base, the various macros for the C 620library functions (such as ACPI_STRLEN, etc.) have been removed and 621replaced by the standard C library names (strlen, etc.) The original 622purpose for these macros is no longer applicable. This simplification 623reduces the number of macros used in the ACPICA source code 624significantly, improving readability and maintainability. 625 626Implemented support for a new ACPI table, the OSDT. This table, the 627"override" SDT, can be loaded directly by the host OS at boot time. It 628enables the replacement of existing namespace objects that were installed 629via the DSDT and/or SSDTs. The primary purpose for this is to replace 630buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 631for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 632Moore. 633 634Added support for systems with (improperly) two FACS tables -- a "32-bit" 635table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 636X field). This change will support both automatically. There continues to 637be systems found with this issue. This support requires a change to the 638AcpiSetFirmwareWakingVector interface. Also, a public global variable has 639been added to allow the host to select which FACS is desired 640(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 641details Lv Zheng. 642 643Added a new feature to allow for systems that do not contain an FACS. 644Although this is already supported on hardware-reduced platforms, the 645feature has been extended for all platforms. The reasoning is that we do 646not want to abort the entire ACPICA initialization just because the 647system is seriously buggy and has no FACS. 648 649Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 650not correctly transcribed from the ACPI specification in ACPICA version 65120150515. 652 653Implemented support for the _CLS object in the AcpiGetObjectInfo external 654interface. 655 656Updated the definitions of the TCPA and TPM2 ACPI tables to the more 657recent TCG ACPI Specification, December 14, 2014. Table disassembler and 658compiler also updated. Note: The TCPA "server" table is not supported by 659the disassembler/table-compiler at this time. 660 661ACPI 6.0: Added definitions for the new GIC version field in the MADT. 662 663Example Code and Data Size: These are the sizes for the OS-independent 664acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 665debug version of the code includes the debug output trace mechanism and 666has a much larger code and data size. 667 668 Current Release: 669 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 670 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 671 Previous Release: 672 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 673 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 674 675 6762) iASL Compiler/Disassembler and Tools: 677 678Disassembler: Fixed a problem with the new symbolic operator disassembler 679where incorrect ASL code could be emitted in some cases for the "non- 680commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 681ShiftRight. The actual problem cases seem to be rather unusual in common 682ASL code, however. David Box. 683 684Modified the linux version of acpidump to obtain ACPI tables from not 685just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 686Zheng. 687 688iASL: Fixed a problem where the user preprocessor output file (.i) 689contained extra data that was not expected. The compiler was using this 690file as a temporary file and passed through #line directives in order to 691keep compiler error messages in sync with the input file and line number 692across multiple include files. The (.i) is no longer a temporary file as 693the compiler uses a new, different file for the original purpose. 694 695iASL: Fixed a problem where comments within the original ASL source code 696file were not passed through to the preprocessor output file, nor any 697listing files. 698 699iASL: Fixed some issues for the handling of the "#include" preprocessor 700directive and the similar (but not the same) "Include" ASL operator. 701 702iASL: Add support for the new OSDT in both the disassembler and compiler. 703 704iASL: Fixed a problem with the constant folding support where a Buffer 705object could be incorrectly generated (incorrectly formed) during a 706conversion to a Store() operator. 707 708AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 709description text for the _REV predefined name. _REV now permanently 710returns 2, as per the ACPI 6.0 specification. 711 712Debugger: Enhanced the output of the Debug ASL object for references 713produced by the Index operator. For Buffers and strings, only output the 714actual byte pointed to by the index. For packages, only print the single 715package element decoded by the index. Previously, the entire 716buffer/string/package was emitted. 717 718iASL/Table-compiler: Fixed a regression where the "generic" data types 719were no longer recognized, causing errors. 720 721 722---------------------------------------- 72315 May 2015. Summary of changes for version 20150515: 724 725This release implements most of ACPI 6.0 as described below. 726 7271) ACPICA kernel-resident subsystem: 728 729Implemented runtime argument checking and return value checking for all 730new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 731_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 732 733Example Code and Data Size: These are the sizes for the OS-independent 734acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 735debug version of the code includes the debug output trace mechanism and 736has a much larger code and data size. 737 738 Current Release: 739 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 740 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 741 Previous Release: 742 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 743 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 744 745 7462) iASL Compiler/Disassembler and Tools: 747 748iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 749names (argument count validation and return value typechecking.) 750 751iASL disassembler and table compiler: implemented support for all new 752ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 753 754iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 755tables: FADT, MADT. 756 757iASL preprocessor: Added a new directive to enable inclusion of binary 758blobs into ASL code. The new directive is #includebuffer. It takes a 759binary file as input and emits a named ascii buffer object into the ASL 760code. 761 762AcpiHelp: Added support for all new ACPI 6.0 predefined names. 763 764AcpiHelp: Added a new option, -d, to display all iASL preprocessor 765directives. 766 767AcpiHelp: Added a new option, -t, to display all known/supported ACPI 768tables. 769 770 771---------------------------------------- 77210 April 2015. Summary of changes for version 20150410: 773 774Reverted a change introduced in version 20150408 that caused 775a regression in the disassembler where incorrect operator 776symbols could be emitted. 777 778 779---------------------------------------- 78008 April 2015. Summary of changes for version 20150408: 781 782 7831) ACPICA kernel-resident subsystem: 784 785Permanently set the return value for the _REV predefined name. It now 786returns 2 (was 5). This matches other ACPI implementations. _REV will be 787deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 788for ACPI 2.0 and later. It should never be used to differentiate or 789identify operating systems. 790 791Added the "Windows 2015" string to the _OSI support. ACPICA will now 792return TRUE to a query with this string. 793 794Fixed several issues with the local version of the printf function. 795 796Added the C99 compiler option (-std=c99) to the Unix makefiles. 797 798 Current Release: 799 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 800 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 801 Previous Release: 802 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 803 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 804 805 8062) iASL Compiler/Disassembler and Tools: 807 808iASL: Implemented an enhancement to the constant folding feature to 809transform the parse tree to a simple Store operation whenever possible: 810 Add (2, 3, X) ==> is converted to: Store (5, X) 811 X = 2 + 3 ==> is converted to: Store (5, X) 812 813Updated support for the SLIC table (Software Licensing Description Table) 814in both the Data Table compiler and the disassembler. The SLIC table 815support now conforms to "Microsoft Software Licensing Tables (SLIC and 816MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 817following the ACPI header is now defined to be "Proprietary Data", and as 818such, can only be entered or displayed as a hex data block. 819 820Implemented full support for the MSDM table as described in the document 821above. Note: The format of MSDM is similar to SLIC. Any MSDM data 822following the ACPI header is defined to be "Proprietary Data", and can 823only be entered or displayed as a hex data block. 824 825Implemented the -Pn option for the iASL Table Compiler (was only 826implemented for the ASL compiler). This option disables the iASL 827preprocessor. 828 829Disassembler: For disassembly of Data Tables, added a comment field 830around the Ascii equivalent data that is emitted as part of the "Raw 831Table Data" block. This prevents the iASL Preprocessor from possible 832confusion if/when the table is compiled. 833 834Disassembler: Added an option (-df) to force the disassembler to assume 835that the table being disassembled contains valid AML. This feature is 836useful for disassembling AML files that contain ACPI signatures other 837than DSDT or SSDT (such as OEMx or other signatures). 838 839Changes for the EFI version of the tools: 8401) Fixed a build error/issue 8412) Fixed a cast warning 842 843iASL: Fixed a path issue with the __FILE__ operator by making the 844directory prefix optional within the internal SplitInputFilename 845function. 846 847Debugger: Removed some unused global variables. 848 849Tests: Updated the makefile for proper generation of the AAPITS suite. 850 851 852---------------------------------------- 85304 February 2015. Summary of changes for version 20150204: 854 855ACPICA kernel-resident subsystem: 856 857Updated all ACPICA copyrights and signons to 2014. Added the 2014 858copyright to all module headers and signons, including the standard Linux 859header. This affects virtually every file in the ACPICA core subsystem, 860iASL compiler, all ACPICA utilities, and the test suites. 861 862Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 863A raw gpe handling mechanism was created to allow better handling of GPE 864storms that aren't easily managed by the normal handler. The raw handler 865allows disabling/renabling of the the GPE so that interrupt storms can be 866avoided in cases where events cannot be timely serviced. In this 867scenario, handlers should use the AcpiSetGpe() API to disable/enable the 868GPE. This API will leave the reference counts undisturbed, thereby 869preventing unintentional clearing of the GPE when the intent in only to 870temporarily disable it. Raw handlers allow enabling and disabling of a 871GPE by removing GPE register locking. As such, raw handlers much provide 872their own locks while using GPE API's to protect access to GPE data 873structures. 874Lv Zheng 875 876Events: Always modify GPE registers under the GPE lock. 877Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 878values. Reported as bug by joe.liu@apple.com. 879 880Unix makefiles: Separate option to disable optimizations and 881_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 882NOOPT disable option and creates a separate flag (NOFORTIFY) for this 883purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 884errors when building ACPICA. This allows disabling the option without 885also having to disable optimazations. 886David Box 887 888 Current Release: 889 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 890 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 891 892-- 893-------------------------------------- 89407 November 2014. Summary of changes for version 20141107: 895 896This release is available at https://acpica.org/downloads 897 898This release introduces and implements language extensions to ASL that 899provide support for symbolic ("C-style") operators and expressions. These 900language extensions are known collectively as ASL+. 901 902 9031) iASL Compiler/Disassembler and Tools: 904 905Disassembler: Fixed a problem with disassembly of the UartSerialBus 906macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 907Box. 908 909Disassembler: Fixed the Unicode macro support to add escape sequences. 910All non-printable ASCII values are emitted as escape sequences, as well 911as the standard escapes for quote and backslash. Ensures that the 912disassembled macro can be correctly recompiled. 913 914iASL: Added Printf/Fprintf macros for formatted output. These macros are 915translated to existing AML Concatenate and Store operations. Printf 916writes to the ASL Debug object. Fprintf allows the specification of an 917ASL name as the target. Only a single format specifier is required, %o, 918since the AML interpreter dynamically converts objects to the required 919type. David E. Box. 920 921 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 922 (Concatenate (Concatenate (Concatenate ("", Arg0), 923 ": Unexpected value for "), Arg1), ", "), Arg2), 924 " at line "), Arg3), Debug) 925 926 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 927 Arg0, Arg1, Arg2, Arg3) 928 929 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 930 ("", Arg1), ": "), Arg0), " Successful"), STR1) 931 932 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 933 934iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 935ASL parse tree before the AML code is generated. This allows blocks of 936ASL code to be removed in order to help locate and identify problem 937devices and/or code. David E. Box. 938 939AcpiExec: Added support (-fi) for an optional namespace object 940initialization file. This file specifies initial values for namespace 941objects as necessary for debugging and testing different ASL code paths 942that may be taken as a result of BIOS options. 943 944 9452) Overview of symbolic operator support for ASL (ASL+) 946------------------------------------------------------- 947 948As an extension to the ASL language, iASL implements support for symbolic 949(C-style) operators for math and logical expressions. This can greatly 950simplify ASL code as well as improve both readability and 951maintainability. These language extensions can exist concurrently with 952all legacy ASL code and expressions. 953 954The symbolic extensions are 100% compatible with existing AML 955interpreters, since no new AML opcodes are created. To implement the 956extensions, the iASL compiler transforms the symbolic expressions into 957the legacy ASL/AML equivalents at compile time. 958 959Full symbolic expressions are supported, along with the standard C 960precedence and associativity rules. 961 962Full disassembler support for the symbolic expressions is provided, and 963creates an automatic migration path for existing ASL code to ASL+ code 964via the disassembly process. By default, the disassembler now emits ASL+ 965code with symbolic expressions. An option (-dl) is provided to force the 966disassembler to emit legacy ASL code if desired. 967 968Below is the complete list of the currently supported symbolic operators 969with examples. See the iASL User Guide for additional information. 970 971 972ASL+ Syntax Legacy ASL Equivalent 973----------- --------------------- 974 975 // Math operators 976 977Z = X + Y Add (X, Y, Z) 978Z = X - Y Subtract (X, Y, Z) 979Z = X * Y Multiply (X, Y, Z) 980Z = X / Y Divide (X, Y, , Z) 981Z = X % Y Mod (X, Y, Z) 982Z = X << Y ShiftLeft (X, Y, Z) 983Z = X >> Y ShiftRight (X, Y, Z) 984Z = X & Y And (X, Y, Z) 985Z = X | Y Or (X, Y, Z) 986Z = X ^ Y Xor (X, Y, Z) 987Z = ~X Not (X, Z) 988X++ Increment (X) 989X-- Decrement (X) 990 991 // Logical operators 992 993(X == Y) LEqual (X, Y) 994(X != Y) LNotEqual (X, Y) 995(X < Y) LLess (X, Y) 996(X > Y) LGreater (X, Y) 997(X <= Y) LLessEqual (X, Y) 998(X >= Y) LGreaterEqual (X, Y) 999(X && Y) LAnd (X, Y) 1000(X || Y) LOr (X, Y) 1001(!X) LNot (X) 1002 1003 // Assignment and compound assignment operations 1004 1005X = Y Store (Y, X) 1006X += Y Add (X, Y, X) 1007X -= Y Subtract (X, Y, X) 1008X *= Y Multiply (X, Y, X) 1009X /= Y Divide (X, Y, , X) 1010X %= Y Mod (X, Y, X) 1011X <<= Y ShiftLeft (X, Y, X) 1012X >>= Y ShiftRight (X, Y, X) 1013X &= Y And (X, Y, X) 1014X |= Y Or (X, Y, X) 1015X ^= Y Xor (X, Y, X) 1016 1017 10183) ASL+ Examples: 1019----------------- 1020 1021Legacy ASL: 1022 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 1023 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 10240x03FB), 1025 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 1026 { 1027 And (MEMB, 0xFFFFFFF0, SRMB) 1028 Store (MEMB, Local2) 1029 Store (PDBM, Local1) 1030 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 1031 Store (SRMB, MEMB) 1032 Or (PDBM, 0x02, PDBM) 1033 } 1034 1035ASL+ version: 1036 If (((R510 & 0x03FB) == 0x02E0) || 1037 ((R520 & 0x03FB) == 0x02E0) || 1038 ((R530 & 0x03FB) == 0x02E0) || 1039 ((R540 & 0x03FB) == 0x02E0)) 1040 { 1041 SRMB = (MEMB & 0xFFFFFFF0) 1042 Local2 = MEMB 1043 Local1 = PDBM 1044 PDBM &= 0xFFFFFFFFFFFFFFF9 1045 MEMB = SRMB 1046 PDBM |= 0x02 1047 } 1048 1049Legacy ASL: 1050 Store (0x1234, Local1) 1051 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 1052 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 1053 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 1054 Store (Index (PKG1, 0x03), Local6) 1055 Store (Add (Local3, Local2), Debug) 1056 Add (Local1, 0x0F, Local2) 1057 Add (Local1, Multiply (Local2, Local3), Local2) 1058 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 1059 1060ASL+ version: 1061 Local1 = 0x1234 1062 Local3 = (((Local1 + TEST) + 0x20) * Local2) 1063 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 1064 Local3 = (Local1 + (TEST + (0x20 * Local2))) 1065 Local6 = Index (PKG1, 0x03) 1066 Debug = (Local3 + Local2) 1067 Local2 = (Local1 + 0x0F) 1068 Local2 = (Local1 + (Local2 * Local3)) 1069 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 1070 1071 1072---------------------------------------- 107326 September 2014. Summary of changes for version 20140926: 1074 10751) ACPICA kernel-resident subsystem: 1076 1077Updated the GPIO operation region handler interface (GeneralPurposeIo). 1078In order to support GPIO Connection objects with multiple pins, along 1079with the related Field objects, the following changes to the interface 1080have been made: The Address is now defined to be the offset in bits of 1081the field unit from the previous invocation of a Connection. It can be 1082viewed as a "Pin Number Index" into the connection resource descriptor. 1083The BitWidth is the exact bit width of the field. It is usually one bit, 1084but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 1085additional information and examples. 1086 1087GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 1088corresponding _Lxx/_Exx methods are disabled (they may have been enabled 1089by the firmware), so that they cannot fire until they are enabled via 1090AcpiUpdateAllGpes. Rafael J. Wysocki. 1091 1092Added a new return flag for the Event/GPE status interfaces -- 1093AcpiGetEventStatus and AcpiGetGpeStatus. The new 1094ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 1095GPE currently has a handler associated with it, and can thus actually 1096affect the system. Lv Zheng. 1097 1098Example Code and Data Size: These are the sizes for the OS-independent 1099acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1100debug version of the code includes the debug output trace mechanism and 1101has a much larger code and data size. 1102 1103 Current Release: 1104 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1105 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1106 Previous Release: 1107 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1108 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1109 11102) iASL Compiler/Disassembler and Tools: 1111 1112iASL: Fixed a memory allocation/free regression introduced in 20140828 1113that could cause the compiler to crash. This was introduced inadvertently 1114during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 11151113. 1116 1117iASL: Removed two error messages that have been found to create false 1118positives, until they can be fixed and fully validated (ACPICA BZ 1112): 11191) Illegal forward reference within a method 11202) Illegal reference across two methods 1121 1122iASL: Implemented a new option (-lm) to create a hardware mapping file 1123that summarizes all GPIO, I2C, SPI, and UART connections. This option 1124works for both the compiler and disassembler. See the iASL compiler user 1125guide for additional information and examples (section 6.4.6). 1126 1127AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 1128version 2. This corrects the AE_BAD_HEADER exception seen on systems with 1129a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 1130 1131AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 1132unless STDIN is actually a terminal. Assists with batch-mode processing. 1133ACPICA BZ 1114. 1134 1135Disassembler/AcpiHelp: Added another large group of recognized _HID 1136values. 1137 1138 1139---------------------------------------- 114028 August 2014. Summary of changes for version 20140828: 1141 11421) ACPICA kernel-resident subsystem: 1143 1144Fixed a problem related to the internal use of the Timer() operator where 1145a 64-bit divide could cause an attempted link to a double-precision math 1146library. This divide is not actually necessary, so the code was 1147restructured to eliminate it. Lv Zheng. 1148 1149ACPI 5.1: Added support for the runtime validation of the _DSD package 1150(similar to the iASL support). 1151 1152ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 1153SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 1154 1155Example Code and Data Size: These are the sizes for the OS-independent 1156acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1157debug version of the code includes the debug output trace mechanism and 1158has a much larger code and data size. 1159 1160 Current Release: 1161 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1162 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1163 Previous Release: 1164 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 1165 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1166 11672) iASL Compiler/Disassembler and Tools: 1168 1169AcpiExec: Fixed a problem on unix systems where the original terminal 1170state was not always properly restored upon exit. Seen when using the -v 1171option. ACPICA BZ 1104. 1172 1173iASL: Fixed a problem with the validation of the ranges/length within the 1174Memory24 resource descriptor. There was a boundary condition when the 1175range was equal to the (length -1) caused by the fact that these values 1176are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 1177 1178Disassembler: Fixed a problem with the GpioInt descriptor interrupt 1179polarity 1180flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 1181is 1182now supported properly. 1183 1184ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 1185in the disassembler, data table compiler, and table template generator. 1186 1187iASL: Added a requirement for Device() objects that one of either a _HID 1188or _ADR must exist within the scope of a Device, as per the ACPI 1189specification. Remove a similar requirement that was incorrectly in place 1190for the _DSD object. 1191 1192iASL: Added error detection for illegal named references within control 1193methods that would cause runtime failures. Now trapped as errors are: 1) 1194References to objects within a non-parent control method. 2) Forward 1195references (within a method) -- for control methods, AML interpreters use 1196a one-pass parse of control methods. ACPICA BZ 1008. 1197 1198iASL: Added error checking for dependencies related to the _PSx power 1199methods. ACPICA BZ 1029. 12001) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 1201_PS3. 12022) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 1203scope. 1204 1205iASL and table compiler: Cleanup miscellaneous memory leaks by fully 1206deploying the existing object and string caches and adding new caches for 1207the table compiler. 1208 1209iASL: Split the huge parser source file into multiple subfiles to improve 1210manageability. Generation now requires the M4 macro preprocessor, which 1211is part of the Bison distribution on both unix and windows platforms. 1212 1213AcpiSrc: Fixed and removed all extraneous warnings generated during 1214entire ACPICA source code scan and/or conversion. 1215 1216 1217---------------------------------------- 1218 121924 July 2014. Summary of changes for version 20140724: 1220 1221The ACPI 5.1 specification has been released and is available at: 1222http://uefi.org/specs/access 1223 1224 12250) ACPI 5.1 support in ACPICA: 1226 1227ACPI 5.1 is fully supported in ACPICA as of this release. 1228 1229New predefined names. Support includes iASL and runtime ACPICA 1230validation. 1231 _CCA (Cache Coherency Attribute). 1232 _DSD (Device-Specific Data). David Box. 1233 1234Modifications to existing ACPI tables. Support includes headers, iASL 1235Data Table compiler, disassembler, and the template generator. 1236 FADT - New fields and flags. Graeme Gregory. 1237 GTDT - One new subtable and new fields. Tomasz Nowicki. 1238 MADT - Two new subtables. Tomasz Nowicki. 1239 PCCT - One new subtable. 1240 1241Miscellaneous. 1242 New notification type for System Resource Affinity change events. 1243 1244 12451) ACPICA kernel-resident subsystem: 1246 1247Fixed a regression introduced in 20140627 where a fault can happen during 1248the deletion of Alias AML namespace objects. The problem affected both 1249the core ACPICA and the ACPICA tools including iASL and AcpiExec. 1250 1251Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 1252simple mechanism to enable wake GPEs that have no associated handler or 1253control method. Rafael Wysocki. 1254 1255Updated the AcpiEnableGpe interface to disallow the enable if there is no 1256handler or control method associated with the particular GPE. This will 1257help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 1258 1259Updated GPE handling and dispatch by disabling the GPE before clearing 1260the status bit for edge-triggered GPEs. Lv Zheng. 1261 1262Added Timer() support to the AML Debug object. The current timer value is 1263now displayed with each invocation of (Store to) the debug object to 1264enable simple generation of execution times for AML code (method 1265execution for example.) ACPICA BZ 1093. 1266 1267Example Code and Data Size: These are the sizes for the OS-independent 1268acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1269debug version of the code includes the debug output trace mechanism and 1270has a much larger code and data size. 1271 1272 Current Release: 1273 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 1274 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1275 Previous Release: 1276 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 1277 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 1278 1279 12802) iASL Compiler/Disassembler and Tools: 1281 1282Fixed an issue with the recently added local printf implementation, 1283concerning width/precision specifiers that could cause incorrect output. 1284Lv Zheng. ACPICA BZ 1094. 1285 1286Disassembler: Added support to detect buffers that contain UUIDs and 1287disassemble them to an invocation of the ToUUID operator. Also emit 1288commented descriptions of known ACPI-related UUIDs. 1289 1290AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 1291-u. Adds three new files. 1292 1293iASL: Update table compiler and disassembler for DMAR table changes that 1294were introduced in September 2013. With assistance by David Woodhouse. 1295 1296---------------------------------------- 129727 June 2014. Summary of changes for version 20140627: 1298 12991) ACPICA kernel-resident subsystem: 1300 1301Formatted Output: Implemented local versions of standard formatted output 1302utilities such as printf, etc. Over time, it has been discovered that 1303there are in fact many portability issues with printf, and the addition 1304of this feature will fix/prevent these issues once and for all. Some 1305known issues are summarized below: 1306 13071) Output of 64-bit values is not portable. For example, UINT64 is %ull 1308for the Linux kernel and is %uI64 for some MSVC versions. 13092) Invoking printf consistently in a manner that is portable across both 131032-bit and 64-bit platforms is difficult at best in many situations. 13113) The output format for pointers varies from system to system (leading 1312zeros especially), and leads to inconsistent output from ACPICA across 1313platforms. 13144) Certain platform-specific printf formats may conflict with ACPICA use. 13155) If there is no local C library available, ACPICA now has local support 1316for printf. 1317 1318-- To address these printf issues in a complete manner, ACPICA now 1319directly implements a small subset of printf format specifiers, only 1320those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 1321 1322Implemented support for ACPICA generation within the EFI environment. 1323Initially, the AcpiDump utility is supported in the UEFI shell 1324environment. Lv Zheng. 1325 1326Added a new external interface, AcpiLogError, to improve ACPICA 1327portability. This allows the host to redirect error messages from the 1328ACPICA utilities. Lv Zheng. 1329 1330Added and deployed new OSL file I/O interfaces to improve ACPICA 1331portability: 1332 AcpiOsOpenFile 1333 AcpiOsCloseFile 1334 AcpiOsReadFile 1335 AcpiOsWriteFile 1336 AcpiOsGetFileOffset 1337 AcpiOsSetFileOffset 1338There are C library implementations of these functions in the new file 1339service_layers/oslibcfs.c -- however, the functions can be implemented by 1340the local host in any way necessary. Lv Zheng. 1341 1342Implemented a mechanism to disable/enable ACPI table checksum validation 1343at runtime. This can be useful when loading tables very early during OS 1344initialization when it may not be possible to map the entire table in 1345order to compute the checksum. Lv Zheng. 1346 1347Fixed a buffer allocation issue for the Generic Serial Bus support. 1348Originally, a fixed buffer length was used. This change allows for 1349variable-length buffers based upon the protocol indicated by the field 1350access attributes. Reported by Lan Tianyu. Lv Zheng. 1351 1352Fixed a problem where an object detached from a namespace node was not 1353properly terminated/cleared and could cause a circular list problem if 1354reattached. ACPICA BZ 1063. David Box. 1355 1356Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 1357 1358Fixed a possible memory leak in an error return path within the function 1359AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 1360 1361Example Code and Data Size: These are the sizes for the OS-independent 1362acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1363debug version of the code includes the debug output trace mechanism and 1364has a much larger code and data size. 1365 1366 Current Release: 1367 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 1368 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 1369 Previous Release: 1370 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 1371 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 1372 1373 13742) iASL Compiler/Disassembler and Tools: 1375 1376Disassembler: Add dump of ASCII equivalent text within a comment at the 1377end of each line of the output for the Buffer() ASL operator. 1378 1379AcpiDump: Miscellaneous changes: 1380 Fixed repetitive table dump in -n mode. 1381 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 1382the ACPI 2.0 GUID fails. 1383 1384iASL: Fixed a problem where the compiler could fault if incorrectly given 1385an acpidump output file as input. ACPICA BZ 1088. David Box. 1386 1387AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 1388they are invoked without any arguments. 1389 1390Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 13911086. Colin Ian King. 1392 1393Disassembler: Cleaned up a block of code that extracts a parent Op 1394object. Added a comment that explains that the parent is guaranteed to be 1395valid in this case. ACPICA BZ 1069. 1396 1397 1398---------------------------------------- 139924 April 2014. Summary of changes for version 20140424: 1400 14011) ACPICA kernel-resident subsystem: 1402 1403Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 1404Some of these tables are known to contain a trailing NULL entry. Lv 1405Zheng. 1406 1407Removed an extraneous error message for the case where there are a large 1408number of system GPEs (> 124). This was the "32-bit FADT register is too 1409long to convert to GAS struct" message, which is irrelevant for GPEs 1410since the GPEx_BLK_LEN fields of the FADT are always used instead of the 1411(limited capacity) GAS bit length. Also, several changes to ensure proper 1412support for GPE numbers > 255, where some "GPE number" fields were 8-bits 1413internally. 1414 1415Implemented and deployed additional configuration support for the public 1416ACPICA external interfaces. Entire classes of interfaces can now be 1417easily modified or configured out, replaced by stubbed inline functions 1418by default. Lv Zheng. 1419 1420Moved all public ACPICA runtime configuration globals to the public 1421ACPICA external interface file for convenience. Also, removed some 1422obsolete/unused globals. See the file acpixf.h. Lv Zheng. 1423 1424Documentation: Added a new section to the ACPICA reference describing the 1425maximum number of GPEs that can be supported by the FADT-defined GPEs in 1426block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 1427reference. 1428 1429Example Code and Data Size: These are the sizes for the OS-independent 1430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1431debug version of the code includes the debug output trace mechanism and 1432has a much larger code and data size. 1433 1434 Current Release: 1435 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 1436 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 1437 Previous Release: 1438 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1439 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1440 1441 14422) iASL Compiler/Disassembler and Tools: 1443 1444iASL and disassembler: Add full support for the LPIT table (Low Power 1445Idle Table). Includes support in the disassembler, data table compiler, 1446and template generator. 1447 1448AcpiDump utility: 14491) Add option to force the use of the RSDT (over the XSDT). 14502) Improve validation of the RSDP signature (use 8 chars instead of 4). 1451 1452iASL: Add check for predefined packages that are too large. For 1453predefined names that contain subpackages, check if each subpackage is 1454too large. (Check for too small already exists.) 1455 1456Debugger: Updated the GPE command (which simulates a GPE by executing the 1457GPE code paths in ACPICA). The GPE device is now optional, and defaults 1458to the GPE 0/1 FADT-defined blocks. 1459 1460Unix application OSL: Update line-editing support. Add additional error 1461checking and take care not to reset terminal attributes on exit if they 1462were never set. This should help guarantee that the terminal is always 1463left in the previous state on program exit. 1464 1465 1466---------------------------------------- 146725 March 2014. Summary of changes for version 20140325: 1468 14691) ACPICA kernel-resident subsystem: 1470 1471Updated the auto-serialize feature for control methods. This feature 1472automatically serializes all methods that create named objects in order 1473to prevent runtime errors. The update adds support to ignore the 1474currently executing AML SyncLevel when invoking such a method, in order 1475to prevent disruption of any existing SyncLevel priorities that may exist 1476in the AML code. Although the use of SyncLevels is relatively rare, this 1477change fixes a regression where an AE_AML_MUTEX_ORDER exception can 1478appear on some machines starting with the 20140214 release. 1479 1480Added a new external interface to allow the host to install ACPI tables 1481very early, before the namespace is even created. AcpiInstallTable gives 1482the host additional flexibility for ACPI table management. Tables can be 1483installed directly by the host as if they had originally appeared in the 1484XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 1485(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 1486with additional internal restructuring and cleanup. See the ACPICA 1487Reference for interface details. Lv Zheng. 1488 1489Added validation of the checksum for all incoming dynamically loaded 1490tables (via external interfaces or via AML Load/LoadTable operators). Lv 1491Zheng. 1492 1493Updated the use of the AcpiOsWaitEventsComplete interface during Notify 1494and GPE handler removal. Restructured calls to eliminate possible race 1495conditions. Lv Zheng. 1496 1497Added a warning for the use/execution of the ASL/AML Unload (table) 1498operator. This will help detect and identify machines that use this 1499operator if and when it is ever used. This operator has never been seen 1500in the field and the usage model and possible side-effects of the drastic 1501runtime action of a full table removal are unknown. 1502 1503Reverted the use of #pragma push/pop which was introduced in the 20140214 1504release. It appears that push and pop are not implemented by enough 1505compilers to make the use of this feature feasible for ACPICA at this 1506time. However, these operators may be deployed in a future ACPICA 1507release. 1508 1509Added the missing EXPORT_SYMBOL macros for the install and remove SCI 1510handler interfaces. 1511 1512Source code generation: 15131) Disabled the use of the "strchr" macro for the gcc-specific 1514generation. For some versions of gcc, this macro can periodically expose 1515a compiler bug which in turn causes compile-time error(s). 15162) Added support for PPC64 compilation. Colin Ian King. 1517 1518Example Code and Data Size: These are the sizes for the OS-independent 1519acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1520debug version of the code includes the debug output trace mechanism and 1521has a much larger code and data size. 1522 1523 Current Release: 1524 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1525 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1526 Previous Release: 1527 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1528 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1529 1530 15312) iASL Compiler/Disassembler and Tools: 1532 1533Disassembler: Added several new features to improve the readability of 1534the resulting ASL code. Extra information is emitted within comment 1535fields in the ASL code: 15361) Known _HID/_CID values are decoded to descriptive text. 15372) Standard values for the Notify() operator are decoded to descriptive 1538text. 15393) Target operands are expanded to full pathnames (in a comment) when 1540possible. 1541 1542Disassembler: Miscellaneous updates for extern() handling: 15431) Abort compiler if file specified by -fe option does not exist. 15442) Silence unnecessary warnings about argument count mismatches. 15453) Update warning messages concerning unresolved method externals. 15464) Emit "UnknownObj" keyword for externals whose type cannot be 1547determined. 1548 1549AcpiHelp utility: 15501) Added the -a option to display both the ASL syntax and the AML 1551encoding for an input ASL operator. This effectively displays all known 1552information about an ASL operator with one AcpiHelp invocation. 15532) Added substring match support (similar to a wildcard) for the -i 1554(_HID/PNP IDs) option. 1555 1556iASL/Disassembler: Since this tool does not yet support execution on big- 1557endian machines, added detection of endianness and an error message if 1558execution is attempted on big-endian. Support for big-endian within iASL 1559is a feature that is on the ACPICA to-be-done list. 1560 1561AcpiBin utility: 15621) Remove option to extract binary files from an acpidump; this function 1563is made obsolete by the AcpiXtract utility. 15642) General cleanup of open files and allocated buffers. 1565 1566 1567---------------------------------------- 156814 February 2014. Summary of changes for version 20140214: 1569 15701) ACPICA kernel-resident subsystem: 1571 1572Implemented a new mechanism to proactively prevent problems with ill- 1573behaved reentrant control methods that create named ACPI objects. This 1574behavior is illegal as per the ACPI specification, but is nonetheless 1575frequently seen in the field. Previously, this could lead to an 1576AE_ALREADY_EXISTS exception if the method was actually entered by more 1577than one thread. This new mechanism detects such methods at table load 1578time and marks them "serialized" to prevent reentrancy. A new global 1579option, AcpiGbl_AutoSerializeMethods, has been added to disable this 1580feature if desired. This mechanism and global option obsoletes and 1581supersedes the previous AcpiGbl_SerializeAllMethods option. 1582 1583Added the "Windows 2013" string to the _OSI support. ACPICA will now 1584respond TRUE to _OSI queries with this string. It is the stated policy of 1585ACPICA to add new strings to the _OSI support as soon as possible after 1586they are defined. See the full ACPICA _OSI policy which has been added to 1587the utilities/utosi.c file. 1588 1589Hardened/updated the _PRT return value auto-repair code: 15901) Do not abort the repair on a single subpackage failure, continue to 1591check all subpackages. 15922) Add check for the minimum subpackage length (4). 15933) Properly handle extraneous NULL package elements. 1594 1595Added support to avoid the possibility of infinite loops when traversing 1596object linked lists. Never allow an infinite loop, even in the face of 1597corrupted object lists. 1598 1599ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 1600pack(pop) directives to ensure that the ACPICA headers are independent of 1601compiler settings or other host headers. 1602 1603Example Code and Data Size: These are the sizes for the OS-independent 1604acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1605debug version of the code includes the debug output trace mechanism and 1606has a much larger code and data size. 1607 1608 Current Release: 1609 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1610 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1611 Previous Release: 1612 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 1613 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 1614 1615 16162) iASL Compiler/Disassembler and Tools: 1617 1618iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 1619first reserved field was incorrectly forced to have a value of zero. This 1620change correctly forces the field to have a value of one. ACPICA BZ 1081. 1621 1622Debugger: Added missing support for the "Extra" and "Data" subobjects 1623when displaying object data. 1624 1625Debugger: Added support to display entire object linked lists when 1626displaying object data. 1627 1628iASL: Removed the obsolete -g option to obtain ACPI tables from the 1629Windows registry. This feature has been superseded by the acpidump 1630utility. 1631 1632 1633---------------------------------------- 163414 January 2014. Summary of changes for version 20140114: 1635 16361) ACPICA kernel-resident subsystem: 1637 1638Updated all ACPICA copyrights and signons to 2014. Added the 2014 1639copyright to all module headers and signons, including the standard Linux 1640header. This affects virtually every file in the ACPICA core subsystem, 1641iASL compiler, all ACPICA utilities, and the test suites. 1642 1643Improved parameter validation for AcpiInstallGpeBlock. Added the 1644following checks: 16451) The incoming device handle refers to type ACPI_TYPE_DEVICE. 16462) There is not already a GPE block attached to the device. 1647Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 1648device. 1649 1650Correctly support "references" in the ACPI_OBJECT. This change fixes the 1651support to allow references (namespace nodes) to be passed as arguments 1652to control methods via the evaluate object interface. This is probably 1653most useful for testing purposes, however. 1654 1655Improved support for 32/64 bit physical addresses in printf()-like 1656output. This change improves the support for physical addresses in printf 1657debug statements and other output on both 32-bit and 64-bit hosts. It 1658consistently outputs the appropriate number of bytes for each host. The 1659%p specifier is unsatisfactory since it does not emit uniform output on 1660all hosts/clib implementations (on some, leading zeros are not supported, 1661leading to difficult-to-read output). 1662 1663Example Code and Data Size: These are the sizes for the OS-independent 1664acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1665debug version of the code includes the debug output trace mechanism and 1666has a much larger code and data size. 1667 1668 Current Release: 1669 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 1670 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 1671 Previous Release: 1672 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1673 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1674 1675 16762) iASL Compiler/Disassembler and Tools: 1677 1678iASL: Fix a possible fault when using the Connection() operator. Fixes a 1679problem if the parent Field definition for the Connection operator refers 1680to an operation region that does not exist. ACPICA BZ 1064. 1681 1682AcpiExec: Load of local test tables is now optional. The utility has the 1683capability to load some various tables to test features of ACPICA. 1684However, there are enough of them that the output of the utility became 1685confusing. With this change, only the required local tables are displayed 1686(RSDP, XSDT, etc.) along with the actual tables loaded via the command 1687line specification. This makes the default output simler and easier to 1688understand. The -el command line option restores the original behavior 1689for testing purposes. 1690 1691AcpiExec: Added support for overlapping operation regions. This change 1692expands the simulation of operation regions by supporting regions that 1693overlap within the given address space. Supports SystemMemory and 1694SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 1695 1696AcpiExec: Added region handler support for PCI_Config and EC spaces. This 1697allows AcpiExec to simulate these address spaces, similar to the current 1698support for SystemMemory and SystemIO. 1699 1700Debugger: Added new command to read/write/compare all namespace objects. 1701The command "test objects" will exercise the entire namespace by writing 1702new values to each data object, and ensuring that the write was 1703successful. The original value is then restored and verified. 1704 1705Debugger: Added the "test predefined" command. This change makes this 1706test public and puts it under the new "test" command. The test executes 1707each and every predefined name within the current namespace. 1708 1709 1710---------------------------------------- 171118 December 2013. Summary of changes for version 20131218: 1712 1713Global note: The ACPI 5.0A specification was released this month. There 1714are no changes needed for ACPICA since this release of ACPI is an 1715errata/clarification release. The specification is available at 1716acpi.info. 1717 1718 17191) ACPICA kernel-resident subsystem: 1720 1721Added validation of the XSDT root table if it is present. Some older 1722platforms contain an XSDT that is ill-formed or otherwise invalid (such 1723as containing some or all entries that are NULL pointers). This change 1724adds a new function to validate the XSDT before actually using it. If the 1725XSDT is found to be invalid, ACPICA will now automatically fall back to 1726using the RSDT instead. Original implementation by Zhao Yakui. Ported to 1727ACPICA and enhanced by Lv Zheng and Bob Moore. 1728 1729Added a runtime option to ignore the XSDT and force the use of the RSDT. 1730This change adds a runtime option that will force ACPICA to use the RSDT 1731instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 1732requires that an XSDT be used instead of the RSDT, the XSDT has been 1733found to be corrupt or ill-formed on some machines. Lv Zheng. 1734 1735Added a runtime option to favor 32-bit FADT register addresses over the 173664-bit addresses. This change adds an option to favor 32-bit FADT 1737addresses when there is a conflict between the 32-bit and 64-bit versions 1738of the same register. The default behavior is to use the 64-bit version 1739in accordance with the ACPI specification. This can now be overridden via 1740the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 1741 1742During the change above, the internal "Convert FADT" and "Verify FADT" 1743functions have been merged to simplify the code, making it easier to 1744understand and maintain. ACPICA BZ 933. 1745 1746Improve exception reporting and handling for GPE block installation. 1747Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 1748status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 1749 1750Added helper macros to extract bus/segment numbers from the HEST table. 1751This change adds two macros to extract the encoded bus and segment 1752numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 1753Betty Dall <betty.dall@hp.com> 1754 1755Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 1756by ACPICA. It is not a public macro, so it should have no effect on 1757existing OSV code. Lv Zheng. 1758 1759Example Code and Data Size: These are the sizes for the OS-independent 1760acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1761debug version of the code includes the debug output trace mechanism and 1762has a much larger code and data size. 1763 1764 Current Release: 1765 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1766 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1767 Previous Release: 1768 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1769 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1770 1771 17722) iASL Compiler/Disassembler and Tools: 1773 1774Disassembler: Improved pathname support for emitted External() 1775statements. This change adds full pathname support for external names 1776that have been resolved internally by the inclusion of additional ACPI 1777tables (via the iASL -e option). Without this change, the disassembler 1778can emit multiple externals for the same object, or it become confused 1779when the Scope() operator is used on an external object. Overall, greatly 1780improves the ability to actually recompile the emitted ASL code when 1781objects a referenced across multiple ACPI tables. Reported by Michael 1782Tsirkin (mst@redhat.com). 1783 1784Tests/ASLTS: Updated functional control suite to execute with no errors. 1785David Box. Fixed several errors related to the testing of the interpreter 1786slack mode. Lv Zheng. 1787 1788iASL: Added support to detect names that are declared within a control 1789method, but are unused (these are temporary names that are only valid 1790during the time the method is executing). A remark is issued for these 1791cases. ACPICA BZ 1022. 1792 1793iASL: Added full support for the DBG2 table. Adds full disassembler, 1794table compiler, and template generator support for the DBG2 table (Debug 1795Port 2 table). 1796 1797iASL: Added full support for the PCCT table, update the table definition. 1798Updates the PCCT table definition in the actbl3.h header and adds table 1799compiler and template generator support. 1800 1801iASL: Added an option to emit only error messages (no warnings/remarks). 1802The -ve option will enable only error messages, warnings and remarks are 1803suppressed. This can simplify debugging when only the errors are 1804important, such as when an ACPI table is disassembled and there are many 1805warnings and remarks -- but only the actual errors are of real interest. 1806 1807Example ACPICA code (source/tools/examples): Updated the example code so 1808that it builds to an actual working program, not just example code. Added 1809ACPI tables and execution of an example control method in the DSDT. Added 1810makefile support for Unix generation. 1811 1812 1813---------------------------------------- 181415 November 2013. Summary of changes for version 20131115: 1815 1816This release is available at https://acpica.org/downloads 1817 1818 18191) ACPICA kernel-resident subsystem: 1820 1821Resource Manager: Fixed loop termination for the "get AML length" 1822function. The loop previously had an error termination on a NULL resource 1823pointer, which can never happen since the loop simply increments a valid 1824resource pointer. This fix changes the loop to terminate with an error on 1825an invalid end-of-buffer condition. The problem can be seen as an 1826infinite loop by callers to AcpiSetCurrentResources with an invalid or 1827corrupted resource descriptor, or a resource descriptor that is missing 1828an END_TAG descriptor. Reported by Dan Carpenter 1829<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 1830 1831Table unload and ACPICA termination: Delete all attached data objects 1832during namespace node deletion. This fix updates namespace node deletion 1833to delete the entire list of attached objects (attached via 1834AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 18351024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 1836 1837ACPICA termination: Added support to delete all objects attached to the 1838root namespace node. This fix deletes any and all objects that have been 1839attached to the root node via AcpiAttachData. Previously, none of these 1840objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 1841 1842Debug output: Do not emit the function nesting level for the in-kernel 1843build. The nesting level is really only useful during a single-thread 1844execution. Therefore, only enable this output for the AcpiExec utility. 1845Also, only emit the thread ID when executing under AcpiExec (Context 1846switches are still always detected and a message is emitted). ACPICA BZ 1847972. 1848 1849Example Code and Data Size: These are the sizes for the OS-independent 1850acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1851debug version of the code includes the debug output trace mechanism and 1852has a much larger code and data size. 1853 1854 Current Release: 1855 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1856 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1857 Previous Release: 1858 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 1859 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 1860 1861 18622) iASL Compiler/Disassembler and Tools: 1863 1864AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 1865correct portable POSIX header for terminal control functions. 1866 1867Disassembler: Fixed control method invocation issues related to the use 1868of the CondRefOf() operator. The problem is seen in the disassembly where 1869control method invocations may not be disassembled properly if the 1870control method name has been used previously as an argument to CondRefOf. 1871The solution is to not attempt to emit an external declaration for the 1872CondRefOf target (it is not necessary in the first place). This prevents 1873disassembler object type confusion. ACPICA BZ 988. 1874 1875Unix Makefiles: Added an option to disable compiler optimizations and the 1876_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 1877with optimizations (reportedly, gcc 4.4 for example). This change adds a 1878command line option for make (NOOPT) that disables all compiler 1879optimizations and the _FORTIFY_SOURCE compiler flag. The default 1880optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 18811034. Lv Zheng, Bob Moore. 1882 1883Tests/ASLTS: Added options to specify individual test cases and modes. 1884This allows testers running aslts.sh to optionally specify individual 1885test modes and test cases. Also added an option to disable the forced 1886generation of the ACPICA tools from source if desired. Lv Zheng. 1887 1888---------------------------------------- 188927 September 2013. Summary of changes for version 20130927: 1890 1891This release is available at https://acpica.org/downloads 1892 1893 18941) ACPICA kernel-resident subsystem: 1895 1896Fixed a problem with store operations to reference objects. This change 1897fixes a problem where a Store operation to an ArgX object that contained 1898a 1899reference to a field object did not complete the automatic dereference 1900and 1901then write to the actual field object. Instead, the object type of the 1902field object was inadvertently changed to match the type of the source 1903operand. The new behavior will actually write to the field object (buffer 1904field or field unit), thus matching the correct ACPI-defined behavior. 1905 1906Implemented support to allow the host to redefine individual OSL 1907prototypes. This change enables the host to redefine OSL prototypes found 1908in the acpiosxf.h file. This allows the host to implement OSL interfaces 1909with a macro or inlined function. Further, it allows the host to add any 1910additional required modifiers such as __iomem, __init, __exit, etc., as 1911necessary on a per-interface basis. Enables maximum flexibility for the 1912OSL interfaces. Lv Zheng. 1913 1914Hardcoded the access width for the FADT-defined reset register. The ACPI 1915specification requires the reset register width to be 8 bits. ACPICA now 1916hardcodes the width to 8 and ignores the FADT width value. This provides 1917compatibility with other ACPI implementations that have allowed BIOS code 1918with bad register width values to go unnoticed. Matthew Garett, Bob 1919Moore, 1920Lv Zheng. 1921 1922Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 1923used 1924in the OSL header (acpiosxf). The change modifies the position of this 1925macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 1926build issues if the OSL defines the implementation of the interface to be 1927an inline stub function. Lv Zheng. 1928 1929Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 1930initialization interfaces. This change adds a new macro for the main init 1931and terminate external interfaces in order to support hosts that require 1932additional or different processing for these functions. Changed from 1933ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 1934Zheng, Bob Moore. 1935 1936Cleaned up the memory allocation macros for configurability. In the 1937common 1938case, the ACPI_ALLOCATE and related macros now resolve directly to their 1939respective AcpiOs* OSL interfaces. Two options: 19401) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 1941default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 19422) For AcpiExec (and for debugging), the macros can optionally be 1943resolved 1944to the local ACPICA interfaces that track each allocation (local tracking 1945is used to immediately detect memory leaks). 1946Lv Zheng. 1947 1948Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 1949to predefine this macro to either TRUE or FALSE during the system build. 1950 1951Replaced __FUNCTION_ with __func__ in the gcc-specific header. 1952 1953Example Code and Data Size: These are the sizes for the OS-independent 1954acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1955debug version of the code includes the debug output trace mechanism and 1956has a much larger code and data size. 1957 1958 Current Release: 1959 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 1960 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 1961 Previous Release: 1962 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 1963 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1964 1965 19662) iASL Compiler/Disassembler and Tools: 1967 1968iASL: Implemented wildcard support for the -e option. This simplifies use 1969when there are many SSDTs that must be included to resolve external 1970method 1971declarations. ACPICA BZ 1041. Example: 1972 iasl -e ssdt*.dat -d dsdt.dat 1973 1974AcpiExec: Add history/line-editing for Unix/Linux systems. This change 1975adds a portable module that implements full history and limited line 1976editing for Unix and Linux systems. It does not use readline() due to 1977portability issues. Instead it uses the POSIX termio interface to put the 1978terminal in raw input mode so that the various special keys can be 1979trapped 1980(such as up/down-arrow for history support and left/right-arrow for line 1981editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 1982 1983AcpiXtract: Add support to handle (ignore) "empty" lines containing only 1984one or more spaces. This provides compatible with early or different 1985versions of the AcpiDump utility. ACPICA BZ 1044. 1986 1987AcpiDump: Do not ignore tables that contain only an ACPI table header. 1988Apparently, some BIOSs create SSDTs that contain an ACPI table header but 1989no other data. This change adds support to dump these tables. Any tables 1990shorter than the length of an ACPI table header remain in error (an error 1991message is emitted). Reported by Yi Li. 1992 1993Debugger: Echo actual command along with the "unknown command" message. 1994 1995---------------------------------------- 199623 August 2013. Summary of changes for version 20130823: 1997 19981) ACPICA kernel-resident subsystem: 1999 2000Implemented support for host-installed System Control Interrupt (SCI) 2001handlers. Certain ACPI functionality requires the host to handle raw 2002SCIs. For example, the "SCI Doorbell" that is defined for memory power 2003state support requires the host device driver to handle SCIs to examine 2004if the doorbell has been activated. Multiple SCI handlers can be 2005installed to allow for future expansion. New external interfaces are 2006AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 2007details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 2008 2009Operation region support: Never locally free the handler "context" 2010pointer. This change removes some dangerous code that attempts to free 2011the handler context pointer in some (rare) circumstances. The owner of 2012the handler owns this pointer and the ACPICA code should never touch it. 2013Although not seen to be an issue in any kernel, it did show up as a 2014problem (fault) under AcpiExec. Also, set the internal storage field for 2015the context pointer to zero when the region is deactivated, simply for 2016sanity. David Box. ACPICA BZ 1039. 2017 2018AcpiRead: On error, do not modify the return value target location. If an 2019error happens in the middle of a split 32/32 64-bit I/O operation, do not 2020modify the target of the return value pointer. Makes the code consistent 2021with the rest of ACPICA. Bjorn Helgaas. 2022 2023Example Code and Data Size: These are the sizes for the OS-independent 2024acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2025debug version of the code includes the debug output trace mechanism and 2026has a much larger code and data size. 2027 2028 Current Release: 2029 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2030 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2031 Previous Release: 2032 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2033 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 2034 2035 20362) iASL Compiler/Disassembler and Tools: 2037 2038AcpiDump: Implemented several new features and fixed some problems: 20391) Added support to dump the RSDP, RSDT, and XSDT tables. 20402) Added support for multiple table instances (SSDT, UEFI). 20413) Added option to dump "customized" (overridden) tables (-c). 20424) Fixed a problem where some table filenames were improperly 2043constructed. 20445) Improved some error messages, removed some unnecessary messages. 2045 2046iASL: Implemented additional support for disassembly of ACPI tables that 2047contain invocations of external control methods. The -fe<file> option 2048allows the import of a file that specifies the external methods along 2049with the required number of arguments for each -- allowing for the 2050correct disassembly of the table. This is a workaround for a limitation 2051of AML code where the disassembler often cannot determine the number of 2052arguments required for an external control method and generates incorrect 2053ASL code. See the iASL reference for details. ACPICA BZ 1030. 2054 2055Debugger: Implemented a new command (paths) that displays the full 2056pathnames (namepaths) and object types of all objects in the namespace. 2057This is an alternative to the namespace command. 2058 2059Debugger: Implemented a new command (sci) that invokes the SCI dispatch 2060mechanism and any installed handlers. 2061 2062iASL: Fixed a possible segfault for "too many parent prefixes" condition. 2063This can occur if there are too many parent prefixes in a namepath (for 2064example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 2065 2066Application OSLs: Set the return value for the PCI read functions. These 2067functions simply return AE_OK, but should set the return value to zero 2068also. This change implements this. ACPICA BZ 1038. 2069 2070Debugger: Prevent possible command line buffer overflow. Increase the 2071size of a couple of the debugger line buffers, and ensure that overflow 2072cannot happen. ACPICA BZ 1037. 2073 2074iASL: Changed to abort immediately on serious errors during the parsing 2075phase. Due to the nature of ASL, there is no point in attempting to 2076compile these types of errors, and they typically end up causing a 2077cascade of hundreds of errors which obscure the original problem. 2078 2079---------------------------------------- 208025 July 2013. Summary of changes for version 20130725: 2081 20821) ACPICA kernel-resident subsystem: 2083 2084Fixed a problem with the DerefOf operator where references to FieldUnits 2085and BufferFields incorrectly returned the parent object, not the actual 2086value of the object. After this change, a dereference of a FieldUnit 2087reference results in a read operation on the field to get the value, and 2088likewise, the appropriate BufferField value is extracted from the target 2089buffer. 2090 2091Fixed a problem where the _WAK method could cause a fault under these 2092circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 2093method returned no value. The problem is rarely seen because most kernels 2094run ACPICA in slack mode. 2095 2096For the DerefOf operator, a fatal error now results if an attempt is made 2097to dereference a reference (created by the Index operator) to a NULL 2098package element. Provides compatibility with other ACPI implementations, 2099and this behavior will be added to a future version of the ACPI 2100specification. 2101 2102The ACPI Power Management Timer (defined in the FADT) is now optional. 2103This provides compatibility with other ACPI implementations and will 2104appear in the next version of the ACPI specification. If there is no PM 2105Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 2106zero in the FADT indicates no PM timer. 2107 2108Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 2109allows the host to globally enable/disable all vendor strings, all 2110feature strings, or both. Intended to be primarily used for debugging 2111purposes only. Lv Zheng. 2112 2113Expose the collected _OSI data to the host via a global variable. This 2114data tracks the highest level vendor ID that has been invoked by the BIOS 2115so that the host (and potentially ACPICA itself) can change behaviors 2116based upon the age of the BIOS. 2117 2118Example Code and Data Size: These are the sizes for the OS-independent 2119acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2120debug version of the code includes the debug output trace mechanism and 2121has a much larger code and data size. 2122 2123 Current Release: 2124 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2125 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2126 Previous Release: 2127 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2128 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2129 2130 21312) iASL Compiler/Disassembler and Tools: 2132 2133iASL: Created the following enhancements for the -so option (create 2134offset table): 21351)Add offsets for the last nameseg in each namepath for every supported 2136object type 21372)Add support for Processor, Device, Thermal Zone, and Scope objects 21383)Add the actual AML opcode for the parent object of every supported 2139object type 21404)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 2141 2142Disassembler: Emit all unresolved external symbols in a single block. 2143These are external references to control methods that could not be 2144resolved, and thus, the disassembler had to make a guess at the number of 2145arguments to parse. 2146 2147iASL: The argument to the -T option (create table template) is now 2148optional. If not specified, the default table is a DSDT, typically the 2149most common case. 2150 2151---------------------------------------- 215226 June 2013. Summary of changes for version 20130626: 2153 21541) ACPICA kernel-resident subsystem: 2155 2156Fixed an issue with runtime repair of the _CST object. Null or invalid 2157elements were not always removed properly. Lv Zheng. 2158 2159Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 2160FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 2161the maximum number of GPEs is 1016. Use of multiple GPE block devices 2162makes the system-wide number of GPEs essentially unlimited. 2163 2164Example Code and Data Size: These are the sizes for the OS-independent 2165acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2166debug version of the code includes the debug output trace mechanism and 2167has a much larger code and data size. 2168 2169 Current Release: 2170 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2171 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2172 Previous Release: 2173 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2174 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2175 2176 21772) iASL Compiler/Disassembler and Tools: 2178 2179Portable AcpiDump: Implemented full support for the Linux and FreeBSD 2180hosts. Now supports Linux, FreeBSD, and Windows. 2181 2182Disassembler: Added some missing types for the HEST and EINJ tables: "Set 2183Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 2184 2185iASL/Preprocessor: Implemented full support for nested 2186#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 2187 2188Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 2189max. The original purpose of this constraint was to limit the amount of 2190debug output. However, the string function in question (UtPrintString) is 2191now used for the disassembler also, where 256 bytes is insufficient. 2192Reported by RehabMan@GitHub. 2193 2194iASL/DataTables: Fixed some problems and issues with compilation of DMAR 2195tables. ACPICA BZ 999. Lv Zheng. 2196 2197iASL: Fixed a couple of error exit issues that could result in a "Could 2198not delete <file>" message during ASL compilation. 2199 2200AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 2201the actual signatures for these tables are "FACP" and "APIC", 2202respectively. 2203 2204AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 2205tables are allowed to have multiple instances. 2206 2207---------------------------------------- 220817 May 2013. Summary of changes for version 20130517: 2209 22101) ACPICA kernel-resident subsystem: 2211 2212Fixed a regression introduced in version 20130328 for _INI methods. This 2213change fixes a problem introduced in 20130328 where _INI methods are no 2214longer executed properly because of a memory block that was not 2215initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 2216<tomasz.nowicki@linaro.org>. 2217 2218Fixed a possible problem with the new extended sleep registers in the 2219ACPI 22205.0 FADT. Do not use these registers (even if populated) unless the HW- 2221reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 22221020. Lv Zheng. 2223 2224Implemented return value repair code for _CST predefined objects: Sort 2225the 2226list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 2227 2228Implemented a debug-only option to disable loading of SSDTs from the 2229RSDT/XSDT during ACPICA initialization. This can be useful for debugging 2230ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 2231acglobal.h - ACPICA BZ 1005. Lv Zheng. 2232 2233Fixed some issues in the ACPICA initialization and termination code: 2234Tomasz Nowicki <tomasz.nowicki@linaro.org> 22351) Clear events initialized flag upon event component termination. ACPICA 2236BZ 1013. 22372) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 22383) Delete global lock pending lock during termination. ACPICA BZ 1012. 22394) Clear debug buffer global on termination to prevent possible multiple 2240delete. ACPICA BZ 1010. 2241 2242Standardized all switch() blocks across the entire source base. After 2243many 2244years, different formatting for switch() had crept in. This change makes 2245the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 2246 2247Split some files to enhance ACPICA modularity and configurability: 22481) Split buffer dump routines into utilities/utbuffer.c 22492) Split internal error message routines into utilities/uterror.c 22503) Split table print utilities into tables/tbprint.c 22514) Split iASL command-line option processing into asloptions.c 2252 2253Makefile enhancements: 22541) Support for all new files above. 22552) Abort make on errors from any subcomponent. Chao Guan. 22563) Add build support for Apple Mac OS X. Liang Qi. 2257 2258Example Code and Data Size: These are the sizes for the OS-independent 2259acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2260debug version of the code includes the debug output trace mechanism and 2261has a much larger code and data size. 2262 2263 Current Release: 2264 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2265 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2266 Previous Release: 2267 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 2268 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 2269 2270 22712) iASL Compiler/Disassembler and Tools: 2272 2273New utility: Implemented an easily portable version of the acpidump 2274utility to extract ACPI tables from the system (or a file) in an ASCII 2275hex 2276dump format. The top-level code implements the various command line 2277options, file I/O, and table dump routines. To port to a new host, only 2278three functions need to be implemented to get tables -- since this 2279functionality is OS-dependent. See the tools/acpidump/apmain.c module and 2280the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 22811) The Windows version obtains the ACPI tables from the Registry. 22822) The Linux version is under development. 22833) Other hosts - If an OS-dependent module is submitted, it will be 2284distributed with ACPICA. 2285 2286iASL: Fixed a regression for -D preprocessor option (define symbol). A 2287restructuring/change to the initialization sequence caused this option to 2288no longer work properly. 2289 2290iASL: Implemented a mechanism to disable specific warnings and remarks. 2291Adds a new command line option, "-vw <messageid> as well as "#pragma 2292disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 2293 2294iASL: Fix for too-strict package object validation. The package object 2295validation for return values from the predefined names is a bit too 2296strict, it does not allow names references within the package (which will 2297be resolved at runtime.) These types of references cannot be validated at 2298compile time. This change ignores named references within package objects 2299for names that return or define static packages. 2300 2301Debugger: Fixed the 80-character command line limitation for the History 2302command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 2303 2304iASL: Added control method and package support for the -so option 2305(generates AML offset table for BIOS support.) 2306 2307iASL: issue a remark if a non-serialized method creates named objects. If 2308a thread blocks within the method for any reason, and another thread 2309enters the method, the method will fail because an attempt will be made 2310to 2311create the same (named) object twice. In this case, issue a remark that 2312the method should be marked serialized. NOTE: may become a warning later. 2313ACPICA BZ 909. 2314 2315---------------------------------------- 231618 April 2013. Summary of changes for version 20130418: 2317 23181) ACPICA kernel-resident subsystem: 2319 2320Fixed a possible buffer overrun during some rare but specific field unit 2321read operations. This overrun can only happen if the DSDT version is 1 -- 2322meaning that all AML integers are 32 bits -- and the field length is 2323between 33 and 55 bits long. During the read, an internal buffer object 2324is 2325created for the field unit because the field is larger than an integer 2326(32 2327bits). However, in this case, the buffer will be incorrectly written 2328beyond the end because the buffer length is less than the internal 2329minimum 2330of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 2331long, but a full 8 bytes will be written. 2332 2333Updated the Embedded Controller "orphan" _REG method support. This refers 2334to _REG methods under the EC device that have no corresponding operation 2335region. This is allowed by the ACPI specification. This update removes a 2336dependency on the existence an ECDT table. It will execute an orphan _REG 2337method as long as the operation region handler for the EC is installed at 2338the EC device node and not the namespace root. Rui Zhang (original 2339update), Bob Moore (update/integrate). 2340 2341Implemented run-time argument typechecking for all predefined ACPI names 2342(_STA, _BIF, etc.) This change performs object typechecking on all 2343incoming arguments for all predefined names executed via 2344AcpiEvaluateObject. This ensures that ACPI-related device drivers are 2345passing correct object types as well as the correct number of arguments 2346(therefore identifying any issues immediately). Also, the ASL/namespace 2347definition of the predefined name is checked against the ACPI 2348specification for the proper argument count. Adds one new file, 2349nsarguments.c 2350 2351Changed an exception code for the ASL UnLoad() operator. Changed the 2352exception code for the case where the input DdbHandle is invalid, from 2353AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 2354 2355Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 2356global makefile. The use of this flag causes compiler errors on earlier 2357versions of GCC, so it has been removed for compatibility. 2358 2359Miscellaneous cleanup: 23601) Removed some unused/obsolete macros 23612) Fixed a possible memory leak in the _OSI support 23623) Removed an unused variable in the predefined name support 23634) Windows OSL: remove obsolete reference to a memory list field 2364 2365Example Code and Data Size: These are the sizes for the OS-independent 2366acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2367debug version of the code includes the debug output trace mechanism and 2368has a much larger code and data size. 2369 2370 Current Release: 2371 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 2372 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 2373 Previous Release: 2374 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 2375 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 2376 2377 23782) iASL Compiler/Disassembler and Tools: 2379 2380AcpiExec: Added installation of a handler for the SystemCMOS address 2381space. This prevents control method abort if a method accesses this 2382space. 2383 2384AcpiExec: Added support for multiple EC devices, and now install EC 2385operation region handler(s) at the actual EC device instead of the 2386namespace root. This reflects the typical behavior of host operating 2387systems. 2388 2389AcpiExec: Updated to ensure that all operation region handlers are 2390installed before the _REG methods are executed. This prevents a _REG 2391method from aborting if it accesses an address space has no handler. 2392AcpiExec installs a handler for every possible address space. 2393 2394Debugger: Enhanced the "handlers" command to display non-root handlers. 2395This change enhances the handlers command to display handlers associated 2396with individual devices throughout the namespace, in addition to the 2397currently supported display of handlers associated with the root 2398namespace 2399node. 2400 2401ASL Test Suite: Several test suite errors have been identified and 2402resolved, reducing the total error count during execution. Chao Guan. 2403 2404---------------------------------------- 240528 March 2013. Summary of changes for version 20130328: 2406 24071) ACPICA kernel-resident subsystem: 2408 2409Fixed several possible race conditions with the internal object reference 2410counting mechanism. Some of the external ACPICA interfaces update object 2411reference counts without holding the interpreter or namespace lock. This 2412change adds a spinlock to protect reference count updates on the internal 2413ACPICA objects. Reported by and with assistance from Andriy Gapon 2414(avg@FreeBSD.org). 2415 2416FADT support: Removed an extraneous warning for very large GPE register 2417sets. This change removes a size mismatch warning if the legacy length 2418field for a GPE register set is larger than the 64-bit GAS structure can 2419accommodate. GPE register sets can be larger than the 255-bit width 2420limitation of the GAS structure. Linn Crosetto (linn@hp.com). 2421 2422_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 2423return from this interface. Handles a possible timeout case if 2424ACPI_WAIT_FOREVER is modified by the host to be a value less than 2425"forever". Jung-uk Kim. 2426 2427Predefined name support: Add allowed/required argument type information 2428to 2429the master predefined info table. This change adds the infrastructure to 2430enable typechecking on incoming arguments for all predefined 2431methods/objects. It does not actually contain the code that will fully 2432utilize this information, this is still under development. Also condenses 2433some duplicate code for the predefined names into a new module, 2434utilities/utpredef.c 2435 2436Example Code and Data Size: These are the sizes for the OS-independent 2437acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2438debug version of the code includes the debug output trace mechanism and 2439has a much larger code and data size. 2440 2441 Previous Release: 2442 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2443 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2444 Current Release: 2445 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 2446 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 2447 2448 24492) iASL Compiler/Disassembler and Tools: 2450 2451iASL: Implemented a new option to simplify the development of ACPI- 2452related 2453BIOS code. Adds support for a new "offset table" output file. The -so 2454option will create a C table containing the AML table offsets of various 2455named objects in the namespace so that BIOS code can modify them easily 2456at 2457boot time. This can simplify BIOS runtime code by eliminating expensive 2458searches for "magic values", enhancing boot times and adding greater 2459reliability. With assistance from Lee Hamel. 2460 2461iASL: Allow additional predefined names to return zero-length packages. 2462Now, all predefined names that are defined by the ACPI specification to 2463return a "variable-length package of packages" are allowed to return a 2464zero length top-level package. This allows the BIOS to tell the host that 2465the requested feature is not supported, and supports existing BIOS/ASL 2466code and practices. 2467 2468iASL: Changed the "result not used" warning to an error. This is the case 2469where an ASL operator is effectively a NOOP because the result of the 2470operation is not stored anywhere. For example: 2471 Add (4, Local0) 2472There is no target (missing 3rd argument), nor is the function return 2473value used. This is potentially a very serious problem -- since the code 2474was probably intended to do something, but for whatever reason, the value 2475was not stored. Therefore, this issue has been upgraded from a warning to 2476an error. 2477 2478AcpiHelp: Added allowable/required argument types to the predefined names 2479info display. This feature utilizes the recent update to the predefined 2480names table (above). 2481 2482---------------------------------------- 248314 February 2013. Summary of changes for version 20130214: 2484 24851) ACPICA Kernel-resident Subsystem: 2486 2487Fixed a possible regression on some hosts: Reinstated the safe return 2488macros (return_ACPI_STATUS, etc.) that ensure that the argument is 2489evaluated only once. Although these macros are not needed for the ACPICA 2490code itself, they are often used by ACPI-related host device drivers 2491where 2492the safe feature may be necessary. 2493 2494Fixed several issues related to the ACPI 5.0 reduced hardware support 2495(SOC): Now ensure that if the platform declares itself as hardware- 2496reduced 2497via the FADT, the following functions become NOOPs (and always return 2498AE_OK) because ACPI is always enabled by definition on these machines: 2499 AcpiEnable 2500 AcpiDisable 2501 AcpiHwGetMode 2502 AcpiHwSetMode 2503 2504Dynamic Object Repair: Implemented additional runtime repairs for 2505predefined name return values. Both of these repairs can simplify code in 2506the related device drivers that invoke these methods: 25071) For the _STR and _MLS names, automatically repair/convert an ASCII 2508string to a Unicode buffer. 25092) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 2510a 2511lone end tag descriptor in the following cases: A Return(0) was executed, 2512a null buffer was returned, or no object at all was returned (non-slack 2513mode only). Adds a new file, nsconvert.c 2514ACPICA BZ 998. Bob Moore, Lv Zheng. 2515 2516Resource Manager: Added additional code to prevent possible infinite 2517loops 2518while traversing corrupted or ill-formed resource template buffers. Check 2519for zero-length resource descriptors in all code that loops through 2520resource templates (the length field is used to index through the 2521template). This change also hardens the external AcpiWalkResources and 2522AcpiWalkResourceBuffer interfaces. 2523 2524Local Cache Manager: Enhanced the main data structure to eliminate an 2525unnecessary mechanism to access the next object in the list. Actually 2526provides a small performance enhancement for hosts that use the local 2527ACPICA cache manager. Jung-uk Kim. 2528 2529Example Code and Data Size: These are the sizes for the OS-independent 2530acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2531debug version of the code includes the debug output trace mechanism and 2532has a much larger code and data size. 2533 2534 Previous Release: 2535 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2536 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2537 Current Release: 2538 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2539 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2540 2541 25422) iASL Compiler/Disassembler and Tools: 2543 2544iASL/Disassembler: Fixed several issues with the definition of the ACPI 25455.0 RASF table (RAS Feature Table). This change incorporates late changes 2546that were made to the ACPI 5.0 specification. 2547 2548iASL/Disassembler: Added full support for the following new ACPI tables: 2549 1) The MTMR table (MID Timer Table) 2550 2) The VRTC table (Virtual Real Time Clock Table). 2551Includes header file, disassembler, table compiler, and template support 2552for both tables. 2553 2554iASL: Implemented compile-time validation of package objects returned by 2555predefined names. This new feature validates static package objects 2556returned by the various predefined names defined to return packages. Both 2557object types and package lengths are validated, for both parent packages 2558and sub-packages, if any. The code is similar in structure and behavior 2559to 2560the runtime repair mechanism within the AML interpreter and uses the 2561existing predefined name information table. Adds a new file, aslprepkg.c. 2562ACPICA BZ 938. 2563 2564iASL: Implemented auto-detection of binary ACPI tables for disassembly. 2565This feature detects a binary file with a valid ACPI table header and 2566invokes the disassembler automatically. Eliminates the need to 2567specifically invoke the disassembler with the -d option. ACPICA BZ 862. 2568 2569iASL/Disassembler: Added several warnings for the case where there are 2570unresolved control methods during the disassembly. This can potentially 2571cause errors when the output file is compiled, because the disassembler 2572assumes zero method arguments in these cases (it cannot determine the 2573actual number of arguments without resolution/definition of the method). 2574 2575Debugger: Added support to display all resources with a single command. 2576Invocation of the resources command with no arguments will now display 2577all 2578resources within the current namespace. 2579 2580AcpiHelp: Added descriptive text for each ACPICA exception code displayed 2581via the -e option. 2582 2583---------------------------------------- 258417 January 2013. Summary of changes for version 20130117: 2585 25861) ACPICA Kernel-resident Subsystem: 2587 2588Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 2589return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 2590objects to return a package containing one integer, most BIOS code 2591returns 2592two integers and the previous code reflects that. However, we also need 2593to 2594support BIOS code that actually implements to the ACPI spec, and this 2595change reflects this. 2596 2597Fixed two issues with the ACPI_DEBUG_PRINT macros: 25981) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 2599C compilers that require this support. 26002) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 2601ACPI_DEBUG is already used by many of the various hosts. 2602 2603Updated all ACPICA copyrights and signons to 2013. Added the 2013 2604copyright to all module headers and signons, including the standard Linux 2605header. This affects virtually every file in the ACPICA core subsystem, 2606iASL compiler, all ACPICA utilities, and the test suites. 2607 2608Example Code and Data Size: These are the sizes for the OS-independent 2609acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2610debug version of the code includes the debug output trace mechanism and 2611has a much larger code and data size. 2612 2613 Previous Release: 2614 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 2615 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 2616 Current Release: 2617 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2618 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2619 2620 26212) iASL Compiler/Disassembler and Tools: 2622 2623Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 2624prevent a possible fault on some hosts. Some C libraries modify the arg 2625pointer parameter to vfprintf making it difficult to call it twice in the 2626AcpiOsVprintf function. Use a local buffer to workaround this issue. This 2627does not affect the Windows OSL since the Win C library does not modify 2628the arg pointer. Chao Guan, Bob Moore. 2629 2630iASL: Fixed a possible infinite loop when the maximum error count is 2631reached. If an output file other than the .AML file is specified (such as 2632a listing file), and the maximum number of errors is reached, do not 2633attempt to flush data to the output file(s) as the compiler is aborting. 2634This can cause an infinite loop as the max error count code essentially 2635keeps calling itself. 2636 2637iASL/Disassembler: Added an option (-in) to ignore NOOP 2638opcodes/operators. 2639Implemented for both the compiler and the disassembler. Often, the NOOP 2640opcode is used as padding for packages that are changed dynamically by 2641the 2642BIOS. When disassembled and recompiled, these NOOPs will cause syntax 2643errors. This option causes the disassembler to ignore all NOOP opcodes 2644(0xA3), and it also causes the compiler to ignore all ASL source code 2645NOOP 2646statements as well. 2647 2648Debugger: Enhanced the Sleep command to execute all sleep states. This 2649change allows Sleep to be invoked with no arguments and causes the 2650debugger to execute all of the sleep states, 0-5, automatically. 2651 2652---------------------------------------- 265320 December 2012. Summary of changes for version 20121220: 2654 26551) ACPICA Kernel-resident Subsystem: 2656 2657Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 2658alternate entry point for AcpiWalkResources and improves the usability of 2659the resource manager by accepting as input a buffer containing the output 2660of either a _CRS, _PRS, or _AEI method. The key functionality is that the 2661input buffer is not deleted by this interface so that it can be used by 2662the host later. See the ACPICA reference for details. 2663 2664Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 2665(DSDT version < 2). The constant will be truncated and this warning 2666reflects that behavior. 2667 2668Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 2669ExtendedInterrupt, and GpioInt descriptors. This change adds support to 2670both get and set the new wake bit in these descriptors, separately from 2671the existing share bit. Reported by Aaron Lu. 2672 2673Interpreter: Fix Store() when an implicit conversion is not possible. For 2674example, in the cases such as a store of a string to an existing package 2675object, implement the store as a CopyObject(). This is a small departure 2676from the ACPI specification which states that the control method should 2677be 2678aborted in this case. However, the ASLTS suite depends on this behavior. 2679 2680Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 2681macros: check if debug output is currently enabled as soon as possible to 2682minimize performance impact if debug is in fact not enabled. 2683 2684Source code restructuring: Cleanup to improve modularity. The following 2685new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 2686psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 2687Associated makefiles and project files have been updated. 2688 2689Changed an exception code for LoadTable operator. For the case where one 2690of the input strings is too long, change the returned exception code from 2691AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 2692 2693Fixed a possible memory leak in dispatcher error path. On error, delete 2694the mutex object created during method mutex creation. Reported by 2695tim.gardner@canonical.com. 2696 2697Example Code and Data Size: These are the sizes for the OS-independent 2698acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2699debug version of the code includes the debug output trace mechanism and 2700has a much larger code and data size. 2701 2702 Previous Release: 2703 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2704 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2705 Current Release: 2706 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 2707 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 2708 2709 27102) iASL Compiler/Disassembler and Tools: 2711 2712iASL: Disallow a method call as argument to the ObjectType ASL operator. 2713This change tracks an errata to the ACPI 5.0 document. The AML grammar 2714will not allow the interpreter to differentiate between a method and a 2715method invocation when these are used as an argument to the ObjectType 2716operator. The ACPI specification change is to disallow a method 2717invocation 2718(UserTerm) for the ObjectType operator. 2719 2720Finish support for the TPM2 and CSRT tables in the headers, table 2721compiler, and disassembler. 2722 2723Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 2724always expires immediately if the semaphore is not available. The 2725original 2726code was using a relative-time timeout, but sem_timedwait requires the 2727use 2728of an absolute time. 2729 2730iASL: Added a remark if the Timer() operator is used within a 32-bit 2731table. This operator returns a 64-bit time value that will be truncated 2732within a 32-bit table. 2733 2734iASL Source code restructuring: Cleanup to improve modularity. The 2735following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 2736aslmethod.c, and aslfileio.c. Associated makefiles and project files have 2737been updated. 2738 2739 2740---------------------------------------- 274114 November 2012. Summary of changes for version 20121114: 2742 27431) ACPICA Kernel-resident Subsystem: 2744 2745Implemented a performance enhancement for ACPI/AML Package objects. This 2746change greatly increases the performance of Package objects within the 2747interpreter. It changes the processing of reference counts for packages 2748by 2749optimizing for the most common case where the package sub-objects are 2750either Integers, Strings, or Buffers. Increases the overall performance 2751of 2752the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 27532X.) 2754Chao Guan. ACPICA BZ 943. 2755 2756Implemented and deployed common macros to extract flag bits from resource 2757descriptors. Improves readability and maintainability of the code. Fixes 2758a 2759problem with the UART serial bus descriptor for the number of data bits 2760flags (was incorrectly 2 bits, should be 3). 2761 2762Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 2763of the macros and changed the SETx macros to the style of (destination, 2764source). Also added ACPI_CASTx companion macros. Lv Zheng. 2765 2766Example Code and Data Size: These are the sizes for the OS-independent 2767acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2768debug version of the code includes the debug output trace mechanism and 2769has a much larger code and data size. 2770 2771 Previous Release: 2772 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2773 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2774 Current Release: 2775 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2776 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2777 2778 27792) iASL Compiler/Disassembler and Tools: 2780 2781Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 2782adds the ShareAndWake and ExclusiveAndWake flags which were added to the 2783Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 2784 2785Disassembler: Fixed a problem with external declaration generation. Fixes 2786a problem where an incorrect pathname could be generated for an external 2787declaration if the original reference to the object includes leading 2788carats (^). ACPICA BZ 984. 2789 2790Debugger: Completed a major update for the Disassemble<method> command. 2791This command was out-of-date and did not properly disassemble control 2792methods that had any reasonable complexity. This fix brings the command 2793up 2794to the same level as the rest of the disassembler. Adds one new file, 2795dmdeferred.c, which is existing code that is now common with the main 2796disassembler and the debugger disassemble command. ACPICA MZ 978. 2797 2798iASL: Moved the parser entry prototype to avoid a duplicate declaration. 2799Newer versions of Bison emit this prototype, so moved the prototype out 2800of 2801the iASL header to where it is actually used in order to avoid a 2802duplicate 2803declaration. 2804 2805iASL/Tools: Standardized use of the stream I/O functions: 2806 1) Ensure check for I/O error after every fopen/fread/fwrite 2807 2) Ensure proper order of size/count arguments for fread/fwrite 2808 3) Use test of (Actual != Requested) after all fwrite, and most fread 2809 4) Standardize I/O error messages 2810Improves reliability and maintainability of the code. Bob Moore, Lv 2811Zheng. 2812ACPICA BZ 981. 2813 2814Disassembler: Prevent duplicate External() statements. During generation 2815of external statements, detect similar pathnames that are actually 2816duplicates such as these: 2817 External (\ABCD) 2818 External (ABCD) 2819Remove all leading '\' characters from pathnames during the external 2820statement generation so that duplicates will be detected and tossed. 2821ACPICA BZ 985. 2822 2823Tools: Replace low-level I/O with stream I/O functions. Replace 2824open/read/write/close with the stream I/O equivalents 2825fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 2826Moore. 2827 2828AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 2829name header so that AcpiXtract recognizes the output file/table. 2830 2831iASL: Remove obsolete -2 option flag. Originally intended to force the 2832compiler/disassembler into an ACPI 2.0 mode, this was never implemented 2833and the entire concept is now obsolete. 2834 2835---------------------------------------- 283618 October 2012. Summary of changes for version 20121018: 2837 2838 28391) ACPICA Kernel-resident Subsystem: 2840 2841Updated support for the ACPI 5.0 MPST table. Fixes some problems 2842introduced by late changes to the table as it was added to the ACPI 5.0 2843specification. Includes header, disassembler, and data table compiler 2844support as well as a new version of the MPST template. 2845 2846AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 28475.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 2848methods: _HID, _CID, and _UID. 2849 2850Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 2851ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 2852name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 2853names for their various drivers. Affects the AcpiGetObjectInfo external 2854interface, and other internal interfaces as well. 2855 2856Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 2857This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 2858on machines that support non-aligned transfers. Optimizes for this case 2859rather than using a strncpy. With assistance from Zheng Lv. 2860 2861Resource Manager: Small fix for buffer size calculation. Fixed a one byte 2862error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 2863 2864Added a new debug print message for AML mutex objects that are force- 2865released. At control method termination, any currently acquired mutex 2866objects are force-released. Adds a new debug-only message for each one 2867that is released. 2868 2869Audited/updated all ACPICA return macros and the function debug depth 2870counter: 1) Ensure that all functions that use the various TRACE macros 2871also use the appropriate ACPICA return macros. 2) Ensure that all normal 2872return statements surround the return expression (value) with parens to 2873ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 2874Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 2875 2876Global source code changes/maintenance: All extra lines at the start and 2877end of each source file have been removed for consistency. Also, within 2878comments, all new sentences start with a single space instead of a double 2879space, again for consistency across the code base. 2880 2881Example Code and Data Size: These are the sizes for the OS-independent 2882acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2883debug version of the code includes the debug output trace mechanism and 2884has a much larger code and data size. 2885 2886 Previous Release: 2887 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 2888 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 2889 Current Release: 2890 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2891 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2892 2893 28942) iASL Compiler/Disassembler and Tools: 2895 2896AcpiExec: Improved the algorithm used for memory leak/corruption 2897detection. Added some intelligence to the code that maintains the global 2898list of allocated memory. The list is now ordered by allocated memory 2899address, significantly improving performance. When running AcpiExec on 2900the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 2901on the platform and/or the environment. Note, this performance 2902enhancement affects the AcpiExec utility only, not the kernel-resident 2903ACPICA code. 2904 2905Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 2906the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 2907incorrect table offset reported for invalid opcodes. Report the original 290832-bit value for bad ACPI_NAMEs (as well as the repaired name.) 2909 2910Disassembler: Enhanced the -vt option to emit the binary table data in 2911hex format to assist with debugging. 2912 2913Fixed a potential filename buffer overflow in osunixdir.c. Increased the 2914size of file structure. Colin Ian King. 2915 2916---------------------------------------- 291713 September 2012. Summary of changes for version 20120913: 2918 2919 29201) ACPICA Kernel-resident Subsystem: 2921 2922ACPI 5.0: Added two new notify types for the Hardware Error Notification 2923Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 2924and 2925MCE(6). 2926 2927Table Manager: Merged/removed duplicate code in the root table resize 2928functions. One function is external, the other is internal. Lv Zheng, 2929ACPICA 2930BZ 846. 2931 2932Makefiles: Completely removed the obsolete "Linux" makefiles under 2933acpica/generate/linux. These makefiles are obsolete and have been 2934replaced 2935by 2936the generic unix makefiles under acpica/generate/unix. 2937 2938Makefiles: Ensure that binary files always copied properly. Minor rule 2939change 2940to ensure that the final binary output files are always copied up to the 2941appropriate binary directory (bin32 or bin64.) 2942 2943Example Code and Data Size: These are the sizes for the OS-independent 2944acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2945debug 2946version of the code includes the debug output trace mechanism and has a 2947much 2948larger code and data size. 2949 2950 Previous Release: 2951 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 2952 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 2953 Current Release: 2954 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 2955 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 2956 2957 29582) iASL Compiler/Disassembler and Tools: 2959 2960Disassembler: Fixed a possible fault during the disassembly of resource 2961descriptors when a second parse is required because of the invocation of 2962external control methods within the table. With assistance from 2963adq@lidskialf.net. ACPICA BZ 976. 2964 2965iASL: Fixed a namepath optimization problem. An error can occur if the 2966parse 2967node that contains the namepath to be optimized does not have a parent 2968node 2969that is a named object. This change fixes the problem. 2970 2971iASL: Fixed a regression where the AML file is not deleted on errors. The 2972AML 2973output file should be deleted if there are any errors during the 2974compiler. 2975The 2976only exception is if the -f (force output) option is used. ACPICA BZ 974. 2977 2978iASL: Added a feature to automatically increase internal line buffer 2979sizes. 2980Via realloc(), automatically increase the internal line buffer sizes as 2981necessary to support very long source code lines. The current version of 2982the 2983preprocessor requires a buffer long enough to contain full source code 2984lines. 2985This change increases the line buffer(s) if the input lines go beyond the 2986current buffer size. This eliminates errors that occurred when a source 2987code 2988line was longer than the buffer. 2989 2990iASL: Fixed a problem with constant folding in method declarations. The 2991SyncLevel term is a ByteConstExpr, and incorrect code would be generated 2992if a 2993Type3 opcode was used. 2994 2995Debugger: Improved command help support. For incorrect argument count, 2996display 2997full help for the command. For help command itself, allow an argument to 2998specify a command. 2999 3000Test Suites: Several bug fixes for the ASLTS suite reduces the number of 3001errors during execution of the suite. Guan Chao. 3002 3003---------------------------------------- 300416 August 2012. Summary of changes for version 20120816: 3005 3006 30071) ACPICA Kernel-resident Subsystem: 3008 3009Removed all use of the deprecated _GTS and _BFS predefined methods. The 3010_GTS 3011(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 3012deprecated and will probably be removed from the ACPI specification. 3013Windows 3014does not invoke them, and reportedly never will. The final nail in the 3015coffin 3016is that the ACPI specification states that these methods must be run with 3017interrupts off, which is not going to happen in a kernel interpreter. 3018Note: 3019Linux has removed all use of the methods also. It was discovered that 3020invoking these functions caused failures on some machines, probably 3021because 3022they were never tested since Windows does not call them. Affects two 3023external 3024interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 3025ACPICA BZ 969. 3026 3027Implemented support for complex bit-packed buffers returned from the _PLD 3028(Physical Location of Device) predefined method. Adds a new external 3029interface, AcpiDecodePldBuffer that parses the buffer into a more usable 3030C 3031structure. Note: C Bitfields cannot be used for this type of predefined 3032structure since the memory layout of individual bitfields is not defined 3033by 3034the C language. In addition, there are endian concerns where a compiler 3035will 3036change the bitfield ordering based on the machine type. The new ACPICA 3037interface eliminates these issues, and should be called after _PLD is 3038executed. ACPICA BZ 954. 3039 3040Implemented a change to allow a scope change to root (via "Scope (\)") 3041during 3042execution of module-level ASL code (code that is executed at table load 3043time.) Lin Ming. 3044 3045Added the Windows8/Server2012 string for the _OSI method. This change 3046adds 3047a 3048new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 30492012. 3050 3051Added header support for the new ACPI tables DBG2 (Debug Port Table Type 30522) 3053and CSRT (Core System Resource Table). 3054 3055Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 3056names. This simplifies access to the buffers returned by these predefined 3057names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 3058 3059GPE support: Removed an extraneous parameter from the various low-level 3060internal GPE functions. Tang Feng. 3061 3062Removed the linux makefiles from the unix packages. The generate/linux 3063makefiles are obsolete and have been removed from the unix tarball 3064release 3065packages. The replacement makefiles are under generate/unix, and there is 3066a 3067top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 3068 3069Updates for Unix makefiles: 30701) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 30712) Update linker flags (move to end of command line) for AcpiExec 3072utility. 3073Guan Chao. 3074 3075Split ACPICA initialization functions to new file, utxfinit.c. Split from 3076utxface.c to improve modularity and reduce file size. 3077 3078Example Code and Data Size: These are the sizes for the OS-independent 3079acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3080debug version of the code includes the debug output trace mechanism and 3081has a 3082much larger code and data size. 3083 3084 Previous Release: 3085 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3086 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3087 Current Release: 3088 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3089 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3090 3091 30922) iASL Compiler/Disassembler and Tools: 3093 3094iASL: Fixed a problem with constant folding for fixed-length constant 3095expressions. The constant-folding code was not being invoked for constant 3096expressions that allow the use of type 3/4/5 opcodes to generate 3097constants 3098for expressions such as ByteConstExpr, WordConstExpr, etc. This could 3099result 3100in the generation of invalid AML bytecode. ACPICA BZ 970. 3101 3102iASL: Fixed a generation issue on newer versions of Bison. Newer versions 3103apparently automatically emit some of the necessary externals. This 3104change 3105handles these versions in order to eliminate generation warnings. 3106 3107Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 3108 3109Disassembler: Add support to decode _PLD buffers. The decoded buffer 3110appears 3111within comments in the output file. 3112 3113Debugger: Fixed a regression with the "Threads" command where 3114AE_BAD_PARAMETER was always returned. 3115 3116---------------------------------------- 311711 July 2012. Summary of changes for version 20120711: 3118 31191) ACPICA Kernel-resident Subsystem: 3120 3121Fixed a possible fault in the return package object repair code. Fixes a 3122problem that can occur when a lone package object is wrapped with an 3123outer 3124package object in order to force conformance to the ACPI specification. 3125Can 3126affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 3127_DLM, 3128_CSD, _PSD, _TSD. 3129 3130Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 3131PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 3132ARB_DIS bit must be implemented in the host-dependent C3 processor power 3133state 3134support. Note, ARB_DIS is obsolete and only applies to older chipsets, 3135both 3136Intel and other vendors. (for Intel: ICH4-M and earlier) 3137 3138This change removes the code to disable/enable bus master arbitration 3139during 3140suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 3141causes 3142resume problems on some machines. The change has been in use for over 3143seven 3144years within Linux. 3145 3146Implemented two new external interfaces to support host-directed dynamic 3147ACPI 3148table load and unload. They are intended to simplify the host 3149implementation 3150of hot-plug support: 3151 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 3152 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 3153table. 3154See the ACPICA reference for additional details. Adds one new file, 3155components/tables/tbxfload.c 3156 3157Implemented and deployed two new interfaces for errors and warnings that 3158are 3159known to be caused by BIOS/firmware issues: 3160 AcpiBiosError: Prints "ACPI Firmware Error" message. 3161 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 3162Deployed these new interfaces in the ACPICA Table Manager code for ACPI 3163table 3164and FADT errors. Additional deployment to be completed as appropriate in 3165the 3166future. The associated conditional macros are ACPI_BIOS_ERROR and 3167ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 3168ACPICA 3169BZ 3170843. 3171 3172Implicit notify support: ensure that no memory allocation occurs within a 3173critical region. This fix moves a memory allocation outside of the time 3174that a 3175spinlock is held. Fixes issues on systems that do not allow this 3176behavior. 3177Jung-uk Kim. 3178 3179Split exception code utilities and tables into a new file, 3180utilities/utexcep.c 3181 3182Example Code and Data Size: These are the sizes for the OS-independent 3183acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3184debug 3185version of the code includes the debug output trace mechanism and has a 3186much 3187larger code and data size. 3188 3189 Previous Release: 3190 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3191 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3192 Current Release: 3193 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3194 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3195 3196 31972) iASL Compiler/Disassembler and Tools: 3198 3199iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 3200of 32010. Jung-uk Kim. 3202 3203Debugger: Enhanced the "tables" command to emit additional information 3204about 3205the current set of ACPI tables, including the owner ID and flags decode. 3206 3207Debugger: Reimplemented the "unload" command to use the new 3208AcpiUnloadParentTable external interface. This command was disable 3209previously 3210due to need for an unload interface. 3211 3212AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 3213option 3214will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 3215 3216---------------------------------------- 321720 June 2012. Summary of changes for version 20120620: 3218 3219 32201) ACPICA Kernel-resident Subsystem: 3221 3222Implemented support to expand the "implicit notify" feature to allow 3223multiple 3224devices to be notified by a single GPE. This feature automatically 3225generates a 3226runtime device notification in the absence of a BIOS-provided GPE control 3227method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 3228notify is 3229provided by ACPICA for Windows compatibility, and is a workaround for 3230BIOS 3231AML 3232code errors. See the description of the AcpiSetupGpeForWake interface in 3233the 3234APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 3235 3236Changed some comments and internal function names to simplify and ensure 3237correctness of the Linux code translation. No functional changes. 3238 3239Example Code and Data Size: These are the sizes for the OS-independent 3240acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3241debug 3242version of the code includes the debug output trace mechanism and has a 3243much 3244larger code and data size. 3245 3246 Previous Release: 3247 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3248 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3249 Current Release: 3250 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3251 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3252 3253 32542) iASL Compiler/Disassembler and Tools: 3255 3256Disassembler: Added support to emit short, commented descriptions for the 3257ACPI 3258predefined names in order to improve the readability of the disassembled 3259output. ACPICA BZ 959. Changes include: 3260 1) Emit descriptions for all standard predefined names (_INI, _STA, 3261_PRW, 3262etc.) 3263 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 3264 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 3265etc.) 3266 3267AcpiSrc: Fixed several long-standing Linux code translation issues. 3268Argument 3269descriptions in function headers are now translated properly to lower 3270case 3271and 3272underscores. ACPICA BZ 961. Also fixes translation problems such as 3273these: 3274(old -> new) 3275 i_aSL -> iASL 3276 00-7_f -> 00-7F 3277 16_k -> 16K 3278 local_fADT -> local_FADT 3279 execute_oSI -> execute_OSI 3280 3281iASL: Fixed a problem where null bytes were inadvertently emitted into 3282some 3283listing files. 3284 3285iASL: Added the existing debug options to the standard help screen. There 3286are 3287no longer two different help screens. ACPICA BZ 957. 3288 3289AcpiHelp: Fixed some typos in the various predefined name descriptions. 3290Also 3291expand some of the descriptions where appropriate. 3292 3293iASL: Fixed the -ot option (display compile times/statistics). Was not 3294working 3295properly for standard output; only worked for the debug file case. 3296 3297---------------------------------------- 329818 May 2012. Summary of changes for version 20120518: 3299 3300 33011) ACPICA Core Subsystem: 3302 3303Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 3304defined 3305to block until asynchronous events such as notifies and GPEs have 3306completed. 3307Within ACPICA, it is only called before a notify or GPE handler is 3308removed/uninstalled. It also may be useful for the host OS within related 3309drivers such as the Embedded Controller driver. See the ACPICA reference 3310for 3311additional information. ACPICA BZ 868. 3312 3313ACPI Tables: Added a new error message for a possible overflow failure 3314during 3315the conversion of FADT 32-bit legacy register addresses to internal 3316common 331764- 3318bit GAS structure representation. The GAS has a one-byte "bit length" 3319field, 3320thus limiting the register length to 255 bits. ACPICA BZ 953. 3321 3322Example Code and Data Size: These are the sizes for the OS-independent 3323acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3324debug 3325version of the code includes the debug output trace mechanism and has a 3326much 3327larger code and data size. 3328 3329 Previous Release: 3330 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3331 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 3332 Current Release: 3333 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3334 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3335 3336 33372) iASL Compiler/Disassembler and Tools: 3338 3339iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 3340macro. 3341This keyword was added late in the ACPI 5.0 release cycle and was not 3342implemented until now. 3343 3344Disassembler: Added support for Operation Region externals. Adds missing 3345support for operation regions that are defined in another table, and 3346referenced locally via a Field or BankField ASL operator. Now generates 3347the 3348correct External statement. 3349 3350Disassembler: Several additional fixes for the External() statement 3351generation 3352related to some ASL operators. Also, order the External() statements 3353alphabetically in the disassembler output. Fixes the External() 3354generation 3355for 3356the Create* field, Alias, and Scope operators: 3357 1) Create* buffer field operators - fix type mismatch warning on 3358disassembly 3359 2) Alias - implement missing External support 3360 3) Scope - fix to make sure all necessary externals are emitted. 3361 3362iASL: Improved pathname support. For include files, merge the prefix 3363pathname 3364with the file pathname and eliminate unnecessary components. Convert 3365backslashes in all pathnames to forward slashes, for readability. Include 3366file 3367pathname changes affect both #include and Include() type operators. 3368 3369iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 3370end 3371of a valid line by inserting a newline and then returning the EOF during 3372the 3373next call to GetNextLine. Prevents the line from being ignored due to EOF 3374condition. 3375 3376iASL: Implemented some changes to enhance the IDE support (-vi option.) 3377Error 3378and Warning messages are now correctly recognized for both the source 3379code 3380browser and the global error and warning counts. 3381 3382---------------------------------------- 338320 April 2012. Summary of changes for version 20120420: 3384 3385 33861) ACPICA Core Subsystem: 3387 3388Implemented support for multiple notify handlers. This change adds 3389support 3390to 3391allow multiple system and device notify handlers on Device, Thermal Zone, 3392and 3393Processor objects. This can simplify the host OS notification 3394implementation. 3395Also re-worked and restructured the entire notify support code to 3396simplify 3397handler installation, handler removal, notify event queuing, and notify 3398dispatch to handler(s). Note: there can still only be two global notify 3399handlers - one for system notifies and one for device notifies. There are 3400no 3401changes to the existing handler install/remove interfaces. Lin Ming, Bob 3402Moore, Rafael Wysocki. 3403 3404Fixed a regression in the package repair code where the object reference 3405count was calculated incorrectly. Regression was introduced in the commit 3406"Support to add Package wrappers". 3407 3408Fixed a couple possible memory leaks in the AML parser, in the error 3409recovery 3410path. Jesper Juhl, Lin Ming. 3411 3412Example Code and Data Size: These are the sizes for the OS-independent 3413acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3414debug version of the code includes the debug output trace mechanism and 3415has a 3416much larger code and data size. 3417 3418 Previous Release: 3419 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3420 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3421 Current Release: 3422 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3423 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 3424 3425 34262) iASL Compiler/Disassembler and Tools: 3427 3428iASL: Fixed a problem with the resource descriptor support where the 3429length 3430of the StartDependentFn and StartDependentFnNoPrio descriptors were not 3431included in cumulative descriptor offset, resulting in incorrect values 3432for 3433resource tags within resource descriptors appearing after a 3434StartDependent* 3435descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 3436 3437iASL and Preprocessor: Implemented full support for the #line directive 3438to 3439correctly track original source file line numbers through the .i 3440preprocessor 3441output file - for error and warning messages. 3442 3443iASL: Expand the allowable byte constants for address space IDs. 3444Previously, 3445the allowable range was 0x80-0xFF (user-defined spaces), now the range is 34460x0A-0xFF to allow for custom and new IDs without changing the compiler. 3447 3448iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 3449 3450iASL: Add option to completely disable the preprocessor (-Pn). 3451 3452iASL: Now emit all error/warning messages to standard error (stderr) by 3453default (instead of the previous stdout). 3454 3455ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 3456Update 3457for resource descriptor offset fix above. Update/cleanup error output 3458routines. Enable and send iASL errors/warnings to an error logfile 3459(error.txt). Send all other iASL output to a logfile (compiler.txt). 3460Fixed 3461several extraneous "unrecognized operator" messages. 3462 3463---------------------------------------- 346420 March 2012. Summary of changes for version 20120320: 3465 3466 34671) ACPICA Core Subsystem: 3468 3469Enhanced the sleep/wake interfaces to optionally execute the _GTS method 3470(Going To Sleep) and the _BFS method (Back From Sleep). Windows 3471apparently 3472does not execute these methods, and therefore these methods are often 3473untested. It has been seen on some systems where the execution of these 3474methods causes errors and also prevents the machine from entering S5. It 3475is 3476therefore suggested that host operating systems do not execute these 3477methods 3478by default. In the future, perhaps these methods can be optionally 3479executed 3480based on the age of the system and/or what is the newest version of 3481Windows 3482that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 3483and 3484AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 3485Ming. 3486 3487Fixed a problem where the length of the local/common FADT was set too 3488early. 3489The local FADT table length cannot be set to the common length until the 3490original length has been examined. There is code that checks the table 3491length 3492and sets various fields appropriately. This can affect older machines 3493with 3494early FADT versions. For example, this can cause inadvertent writes to 3495the 3496CST_CNT register. Julian Anastasov. 3497 3498Fixed a mapping issue related to a physical table override. Use the 3499deferred 3500mapping mechanism for tables loaded via the physical override OSL 3501interface. 3502This allows for early mapping before the virtual memory manager is 3503available. 3504Thomas Renninger, Bob Moore. 3505 3506Enhanced the automatic return-object repair code: Repair a common problem 3507with 3508predefined methods that are defined to return a variable-length Package 3509of 3510sub-objects. If there is only one sub-object, some BIOS ASL code 3511mistakenly 3512simply returns the single object instead of a Package with one sub- 3513object. 3514This new support will repair this error by wrapping a Package object 3515around 3516the original object, creating the correct and expected Package with one 3517sub- 3518object. Names that can be repaired in this manner include: _ALR, _CSD, 3519_HPX, 3520_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 3521939. 3522 3523Changed the exception code returned for invalid ACPI paths passed as 3524parameters to external interfaces such as AcpiEvaluateObject. Was 3525AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 3526 3527Example Code and Data Size: These are the sizes for the OS-independent 3528acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3529debug 3530version of the code includes the debug output trace mechanism and has a 3531much 3532larger code and data size. 3533 3534 Previous Release: 3535 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 3536 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3537 Current Release: 3538 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3539 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3540 3541 35422) iASL Compiler/Disassembler and Tools: 3543 3544iASL: Added the infrastructure and initial implementation of a integrated 3545C- 3546like preprocessor. This will simplify BIOS development process by 3547eliminating 3548the need for a separate preprocessing step during builds. On Windows, it 3549also 3550eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 3551features including full #define() macro support are still under 3552development. 3553These preprocessor directives are supported: 3554 #define 3555 #elif 3556 #else 3557 #endif 3558 #error 3559 #if 3560 #ifdef 3561 #ifndef 3562 #include 3563 #pragma message 3564 #undef 3565 #warning 3566In addition, these new command line options are supported: 3567 -D <symbol> Define symbol for preprocessor use 3568 -li Create preprocessed output file (*.i) 3569 -P Preprocess only and create preprocessor output file (*.i) 3570 3571Table Compiler: Fixed a problem where the equals operator within an 3572expression 3573did not work properly. 3574 3575Updated iASL to use the current versions of Bison/Flex. Updated the 3576Windows 3577project file to invoke these tools from the standard location. ACPICA BZ 3578904. 3579Versions supported: 3580 Flex for Windows: V2.5.4 3581 Bison for Windows: V2.4.1 3582 3583---------------------------------------- 358415 February 2012. Summary of changes for version 20120215: 3585 3586 35871) ACPICA Core Subsystem: 3588 3589There have been some major changes to the sleep/wake support code, as 3590described below (a - e). 3591 3592a) The AcpiLeaveSleepState has been split into two interfaces, similar to 3593AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 3594AcpiLeaveSleepStatePrep. This allows the host to perform actions between 3595the 3596time the _BFS method is called and the _WAK method is called. NOTE: all 3597hosts 3598must update their wake/resume code or else sleep/wake will not work 3599properly. 3600Rafael Wysocki. 3601 3602b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 3603_WAK 3604method. Some machines require that the GPEs are enabled before the _WAK 3605method 3606is executed. Thomas Renninger. 3607 3608c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 3609bit. 3610Some BIOS code assumes that WAK_STS will be cleared on resume and use it 3611to 3612determine whether the system is rebooting or resuming. Matthew Garrett. 3613 3614d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 3615Sleep) to 3616match the ACPI specification requirement. Rafael Wysocki. 3617 3618e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 3619registers within the V5 FADT. This support adds two new files: 3620hardware/hwesleep.c implements the support for the new registers. Moved 3621all 3622sleep/wake external interfaces to hardware/hwxfsleep.c. 3623 3624 3625Added a new OSL interface for ACPI table overrides, 3626AcpiOsPhysicalTableOverride. This interface allows the host to override a 3627table via a physical address, instead of the logical address required by 3628AcpiOsTableOverride. This simplifies the host implementation. Initial 3629implementation by Thomas Renninger. The ACPICA implementation creates a 3630single 3631shared function for table overrides that attempts both a logical and a 3632physical override. 3633 3634Expanded the OSL memory read/write interfaces to 64-bit data 3635(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 3636transfer support for GAS register structures passed to AcpiRead and 3637AcpiWrite. 3638 3639Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 3640custom 3641build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 3642model. 3643See the ACPICA reference for details. ACPICA BZ 942. This option removes 3644about 364510% of the code and 5% of the static data, and the following hardware 3646ACPI 3647features become unavailable: 3648 PM Event and Control registers 3649 SCI interrupt (and handler) 3650 Fixed Events 3651 General Purpose Events (GPEs) 3652 Global Lock 3653 ACPI PM timer 3654 FACS table (Waking vectors and Global Lock) 3655 3656Updated the unix tarball directory structure to match the ACPICA git 3657source 3658tree. This ensures that the generic unix makefiles work properly (in 3659generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 3660867. 3661 3662Updated the return value of the _REV predefined method to integer value 5 3663to 3664reflect ACPI 5.0 support. 3665 3666Moved the external ACPI PM timer interface prototypes to the public 3667acpixf.h 3668file where they belong. 3669 3670Example Code and Data Size: These are the sizes for the OS-independent 3671acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3672debug 3673version of the code includes the debug output trace mechanism and has a 3674much 3675larger code and data size. 3676 3677 Previous Release: 3678 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3679 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3680 Current Release: 3681 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 3682 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3683 3684 36852) iASL Compiler/Disassembler and Tools: 3686 3687Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 3688descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 3689incorrectly displayed. 3690 3691AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 3692specification. 3693 3694---------------------------------------- 369511 January 2012. Summary of changes for version 20120111: 3696 3697 36981) ACPICA Core Subsystem: 3699 3700Implemented a new mechanism to allow host device drivers to check for 3701address 3702range conflicts with ACPI Operation Regions. Both SystemMemory and 3703SystemIO 3704address spaces are supported. A new external interface, 3705AcpiCheckAddressRange, 3706allows drivers to check an address range against the ACPI namespace. See 3707the 3708ACPICA reference for additional details. Adds one new file, 3709utilities/utaddress.c. Lin Ming, Bob Moore. 3710 3711Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 3712Control 3713and 3714Status registers, update the ACPI 5.0 flags, and update internal data 3715structures to handle an FADT larger than 256 bytes. The size of the ACPI 37165.0 3717FADT is 268 bytes. 3718 3719Updated all ACPICA copyrights and signons to 2012. Added the 2012 3720copyright to 3721all module headers and signons, including the standard Linux header. This 3722affects virtually every file in the ACPICA core subsystem, iASL compiler, 3723and 3724all ACPICA utilities. 3725 3726Example Code and Data Size: These are the sizes for the OS-independent 3727acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3728debug 3729version of the code includes the debug output trace mechanism and has a 3730much 3731larger code and data size. 3732 3733 Previous Release: 3734 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 3735 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 3736 Current Release: 3737 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3738 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3739 3740 37412) iASL Compiler/Disassembler and Tools: 3742 3743Disassembler: fixed a problem with the automatic resource tag generation 3744support. Fixes a problem where the resource tags are inadvertently not 3745constructed if the table being disassembled contains external references 3746to 3747control methods. Moved the actual construction of the tags to after the 3748final 3749namespace is constructed (after 2nd parse is invoked due to external 3750control 3751method references.) ACPICA BZ 941. 3752 3753Table Compiler: Make all "generic" operators caseless. These are the 3754operators 3755like UINT8, String, etc. Making these caseless improves ease-of-use. 3756ACPICA BZ 3757934. 3758 3759---------------------------------------- 376023 November 2011. Summary of changes for version 20111123: 3761 37620) ACPI 5.0 Support: 3763 3764This release contains full support for the ACPI 5.0 specification, as 3765summarized below. 3766 3767Reduced Hardware Support: 3768------------------------- 3769 3770This support allows for ACPI systems without the usual ACPI hardware. 3771This 3772support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 3773will 3774not attempt to initialize or use any of the usual ACPI hardware. Note, 3775when 3776this flag is set, all of the following ACPI hardware is assumed to be not 3777present and is not initialized or accessed: 3778 3779 General Purpose Events (GPEs) 3780 Fixed Events (PM1a/PM1b and PM Control) 3781 Power Management Timer and Console Buttons (power/sleep) 3782 Real-time Clock Alarm 3783 Global Lock 3784 System Control Interrupt (SCI) 3785 The FACS is assumed to be non-existent 3786 3787ACPI Tables: 3788------------ 3789 3790All new tables and updates to existing tables are fully supported in the 3791ACPICA headers (for use by device drivers), the disassembler, and the 3792iASL 3793Data Table Compiler. ACPI 5.0 defines these new tables: 3794 3795 BGRT /* Boot Graphics Resource Table */ 3796 DRTM /* Dynamic Root of Trust for Measurement table */ 3797 FPDT /* Firmware Performance Data Table */ 3798 GTDT /* Generic Timer Description Table */ 3799 MPST /* Memory Power State Table */ 3800 PCCT /* Platform Communications Channel Table */ 3801 PMTT /* Platform Memory Topology Table */ 3802 RASF /* RAS Feature table */ 3803 3804Operation Regions/SpaceIDs: 3805--------------------------- 3806 3807All new operation regions are fully supported by the iASL compiler, the 3808disassembler, and the ACPICA runtime code (for dispatch to region 3809handlers.) 3810The new operation region Space IDs are: 3811 3812 GeneralPurposeIo 3813 GenericSerialBus 3814 3815Resource Descriptors: 3816--------------------- 3817 3818All new ASL resource descriptors are fully supported by the iASL 3819compiler, 3820the 3821ASL/AML disassembler, and the ACPICA runtime Resource Manager code 3822(including 3823all new predefined resource tags). New descriptors are: 3824 3825 FixedDma 3826 GpioIo 3827 GpioInt 3828 I2cSerialBus 3829 SpiSerialBus 3830 UartSerialBus 3831 3832ASL/AML Operators, New and Modified: 3833------------------------------------ 3834 3835One new operator is added, the Connection operator, which is used to 3836associate 3837a GeneralPurposeIo or GenericSerialBus resource descriptor with 3838individual 3839field objects within an operation region. Several new protocols are 3840associated 3841with the AccessAs operator. All are fully supported by the iASL compiler, 3842disassembler, and runtime ACPICA AML interpreter: 3843 3844 Connection // Declare Field Connection 3845attributes 3846 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 3847 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 3848Protocol 3849 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 3850 RawDataBuffer // Data type for Vendor Data 3851fields 3852 3853Predefined ASL/AML Objects: 3854--------------------------- 3855 3856All new predefined objects/control-methods are supported by the iASL 3857compiler 3858and the ACPICA runtime validation/repair (arguments and return values.) 3859New 3860predefined names include the following: 3861 3862Standard Predefined Names (Objects or Control Methods): 3863 _AEI, _CLS, _CPC, _CWS, _DEP, 3864 _DLM, _EVT, _GCP, _CRT, _GWS, 3865 _HRV, _PRE, _PSE, _SRT, _SUB. 3866 3867Resource Tags (Names used to access individual fields within resource 3868descriptors): 3869 _DBT, _DPL, _DRS, _END, _FLC, 3870 _IOR, _LIN, _MOD, _PAR, _PHA, 3871 _PIN, _PPI, _POL, _RXL, _SLV, 3872 _SPE, _STB, _TXL, _VEN. 3873 3874ACPICA External Interfaces: 3875--------------------------- 3876 3877Several new interfaces have been defined for use by ACPI-related device 3878drivers and other host OS services: 3879 3880AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 3881to 3882acquire and release AML mutexes that are defined in the DSDT/SSDT tables 3883provided by the BIOS. They are intended to be used in conjunction with 3884the 3885ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 3886mutual exclusion with the AML code/interpreter. 3887 3888AcpiGetEventResources: Returns the (formatted) resource descriptors as 3889defined 3890by the ACPI 5.0 _AEI object (ACPI Event Information). This object 3891provides 3892resource descriptors associated with hardware-reduced platform events, 3893similar 3894to the AcpiGetCurrentResources interface. 3895 3896Operation Region Handlers: For General Purpose IO and Generic Serial Bus 3897operation regions, information about the Connection() object and any 3898optional 3899length information is passed to the region handler within the Context 3900parameter. 3901 3902AcpiBufferToResource: This interface converts a raw AML buffer containing 3903a 3904resource template or resource descriptor to the ACPI_RESOURCE internal 3905format 3906suitable for use by device drivers. Can be used by an operation region 3907handler 3908to convert the Connection() buffer object into a ACPI_RESOURCE. 3909 3910Miscellaneous/Tools/TestSuites: 3911------------------------------- 3912 3913Support for extended _HID names (Four alpha characters instead of three). 3914Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 3915Support for ACPI 5.0 features in the ASLTS test suite. 3916Fully updated documentation (ACPICA and iASL reference documents.) 3917 3918ACPI Table Definition Language: 3919------------------------------- 3920 3921Support for this language was implemented and released as a subsystem of 3922the 3923iASL compiler in 2010. (See the iASL compiler User Guide.) 3924 3925 3926Non-ACPI 5.0 changes for this release: 3927-------------------------------------- 3928 39291) ACPICA Core Subsystem: 3930 3931Fix a problem with operation region declarations where a failure can 3932occur 3933if 3934the region name and an argument that evaluates to an object (such as the 3935region address) are in different namespace scopes. Lin Ming, ACPICA BZ 3936937. 3937 3938Do not abort an ACPI table load if an invalid space ID is found within. 3939This 3940will be caught later if the offending method is executed. ACPICA BZ 925. 3941 3942Fixed an issue with the FFixedHW space ID where the ID was not always 3943recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 3944 3945Fixed a problem with the 32-bit generation of the unix-specific OSL 3946(osunixxf.c). Lin Ming, ACPICA BZ 936. 3947 3948Several changes made to enable generation with the GCC 4.6 compiler. 3949ACPICA BZ 3950935. 3951 3952New error messages: Unsupported I/O requests (not 8/16/32 bit), and 3953Index/Bank 3954field registers out-of-range. 3955 39562) iASL Compiler/Disassembler and Tools: 3957 3958iASL: Implemented the __PATH__ operator, which returns the full pathname 3959of 3960the current source file. 3961 3962AcpiHelp: Automatically display expanded keyword information for all ASL 3963operators. 3964 3965Debugger: Add "Template" command to disassemble/dump resource template 3966buffers. 3967 3968Added a new master script to generate and execute the ASLTS test suite. 3969Automatically handles 32- and 64-bit generation. See tests/aslts.sh 3970 3971iASL: Fix problem with listing generation during processing of the 3972Switch() 3973operator where AML listing was disabled until the entire Switch block was 3974completed. 3975 3976iASL: Improve support for semicolon statement terminators. Fix "invalid 3977character" message for some cases when the semicolon is used. Semicolons 3978are 3979now allowed after every <Term> grammar element. ACPICA BZ 927. 3980 3981iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 3982923. 3983 3984Disassembler: Fix problem with disassembly of the DataTableRegion 3985operator 3986where an inadvertent "Unhandled deferred opcode" message could be 3987generated. 3988 39893) Example Code and Data Size 3990 3991These are the sizes for the OS-independent acpica.lib produced by the 3992Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 3993includes the debug output trace mechanism and has a much larger code and 3994data 3995size. 3996 3997 Previous Release: 3998 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3999 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4000 Current Release: 4001 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4002 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4003 4004---------------------------------------- 400522 September 2011. Summary of changes for version 20110922: 4006 40070) ACPI 5.0 News: 4008 4009Support for ACPI 5.0 in ACPICA has been underway for several months and 4010will 4011be released at the same time that ACPI 5.0 is officially released. 4012 4013The ACPI 5.0 specification is on track for release in the next few 4014months. 4015 40161) ACPICA Core Subsystem: 4017 4018Fixed a problem where the maximum sleep time for the Sleep() operator was 4019intended to be limited to two seconds, but was inadvertently limited to 402020 4021seconds instead. 4022 4023Linux and Unix makefiles: Added header file dependencies to ensure 4024correct 4025generation of ACPICA core code and utilities. Also simplified the 4026makefiles 4027considerably through the use of the vpath variable to specify search 4028paths. 4029ACPICA BZ 924. 4030 40312) iASL Compiler/Disassembler and Tools: 4032 4033iASL: Implemented support to check the access length for all fields 4034created to 4035access named Resource Descriptor fields. For example, if a resource field 4036is 4037defined to be two bits, a warning is issued if a CreateXxxxField() is 4038used 4039with an incorrect bit length. This is implemented for all current 4040resource 4041descriptor names. ACPICA BZ 930. 4042 4043Disassembler: Fixed a byte ordering problem with the output of 24-bit and 404456- 4045bit integers. 4046 4047iASL: Fixed a couple of issues associated with variable-length package 4048objects. 1) properly handle constants like One, Ones, Zero -- do not make 4049a 4050VAR_PACKAGE when these are used as a package length. 2) Allow the 4051VAR_PACKAGE 4052opcode (in addition to PACKAGE) when validating object types for 4053predefined 4054names. 4055 4056iASL: Emit statistics for all output files (instead of just the ASL input 4057and 4058AML output). Includes listings, hex files, etc. 4059 4060iASL: Added -G option to the table compiler to allow the compilation of 4061custom 4062ACPI tables. The only part of a table that is required is the standard 406336- 4064byte 4065ACPI header. 4066 4067AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 4068headers), 4069which also adds correct 64-bit support. Also, now all output filenames 4070are 4071completely lower case. 4072 4073AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 4074loading table files. A warning is issued for any such tables. The only 4075exception is an FADT. This also fixes a possible fault when attempting to 4076load 4077non-AML tables. ACPICA BZ 932. 4078 4079AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 4080a 4081missing table terminator could cause a fault when using the -p option. 4082 4083AcpiSrc: Fixed a possible divide-by-zero fault when generating file 4084statistics. 4085 40863) Example Code and Data Size 4087 4088These are the sizes for the OS-independent acpica.lib produced by the 4089Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4090includes the debug output trace mechanism and has a much larger code and 4091data 4092size. 4093 4094 Previous Release (VC 9.0): 4095 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4096 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4097 Current Release (VC 9.0): 4098 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4099 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4100 4101 4102---------------------------------------- 410323 June 2011. Summary of changes for version 20110623: 4104 41051) ACPI CA Core Subsystem: 4106 4107Updated the predefined name repair mechanism to not attempt repair of a 4108_TSS 4109return object if a _PSS object is present. We can only sort the _TSS 4110return 4111package if there is no _PSS within the same scope. This is because if 4112_PSS 4113is 4114present, the ACPI specification dictates that the _TSS Power Dissipation 4115field 4116is to be ignored, and therefore some BIOSs leave garbage values in the 4117_TSS 4118Power field(s). In this case, it is best to just return the _TSS package 4119as- 4120is. Reported by, and fixed with assistance from Fenghua Yu. 4121 4122Added an option to globally disable the control method return value 4123validation 4124and repair. This runtime option can be used to disable return value 4125repair 4126if 4127this is causing a problem on a particular machine. Also added an option 4128to 4129AcpiExec (-dr) to set this disable flag. 4130 4131All makefiles and project files: Major changes to improve generation of 4132ACPICA 4133tools. ACPICA BZ 912: 4134 Reduce default optimization levels to improve compatibility 4135 For Linux, add strict-aliasing=0 for gcc 4 4136 Cleanup and simplify use of command line defines 4137 Cleanup multithread library support 4138 Improve usage messages 4139 4140Linux-specific header: update handling of THREAD_ID and pthread. For the 414132- 4142bit case, improve casting to eliminate possible warnings, especially with 4143the 4144acpica tools. 4145 4146Example Code and Data Size: These are the sizes for the OS-independent 4147acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4148debug 4149version of the code includes the debug output trace mechanism and has a 4150much 4151larger code and data size. 4152 4153 Previous Release (VC 9.0): 4154 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4155 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4156 Current Release (VC 9.0): 4157 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4158 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4159 41602) iASL Compiler/Disassembler and Tools: 4161 4162With this release, a new utility named "acpihelp" has been added to the 4163ACPICA 4164package. This utility summarizes the ACPI specification chapters for the 4165ASL 4166and AML languages. It generates under Linux/Unix as well as Windows, and 4167provides the following functionality: 4168 Find/display ASL operator(s) -- with description and syntax. 4169 Find/display ASL keyword(s) -- with exact spelling and descriptions. 4170 Find/display ACPI predefined name(s) -- with description, number 4171 of arguments, and the return value data type. 4172 Find/display AML opcode name(s) -- with opcode, arguments, and 4173grammar. 4174 Decode/display AML opcode -- with opcode name, arguments, and 4175grammar. 4176 4177Service Layers: Make multi-thread support configurable. Conditionally 4178compile 4179the multi-thread support so that threading libraries will not be linked 4180if 4181not 4182necessary. The only tool that requires multi-thread support is AcpiExec. 4183 4184iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 4185of 4186Bison appear to want the interface to yyerror to be a const char * (or at 4187least this is a problem when generating iASL on some systems.) ACPICA BZ 4188923 4189Pierre Lejeune. 4190 4191Tools: Fix for systems where O_BINARY is not defined. Only used for 4192Windows 4193versions of the tools. 4194 4195---------------------------------------- 419627 May 2011. Summary of changes for version 20110527: 4197 41981) ACPI CA Core Subsystem: 4199 4200ASL Load() operator: Reinstate most restrictions on the incoming ACPI 4201table 4202signature. Now, only allow SSDT, OEMx, and a null signature. History: 4203 1) Originally, we checked the table signature for "SSDT" or "PSDT". 4204 (PSDT is now obsolete.) 4205 2) We added support for OEMx tables, signature "OEM" plus a fourth 4206 "don't care" character. 4207 3) Valid tables were encountered with a null signature, so we just 4208 gave up on validating the signature, (05/2008). 4209 4) We encountered non-AML tables such as the MADT, which caused 4210 interpreter errors and kernel faults. So now, we once again allow 4211 only SSDT, OEMx, and now, also a null signature. (05/2011). 4212 4213Added the missing _TDL predefined name to the global name list in order 4214to 4215enable validation. Affects both the core ACPICA code and the iASL 4216compiler. 4217 4218Example Code and Data Size: These are the sizes for the OS-independent 4219acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4220debug 4221version of the code includes the debug output trace mechanism and has a 4222much 4223larger code and data size. 4224 4225 Previous Release (VC 9.0): 4226 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4227 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4228 Current Release (VC 9.0): 4229 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4230 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4231 42322) iASL Compiler/Disassembler and Tools: 4233 4234Debugger/AcpiExec: Implemented support for "complex" method arguments on 4235the 4236debugger command line. This adds support beyond simple integers -- 4237including 4238Strings, Buffers, and Packages. Includes support for nested packages. 4239Increased the default command line buffer size to accommodate these 4240arguments. 4241See the ACPICA reference for details and syntax. ACPICA BZ 917. 4242 4243Debugger/AcpiExec: Implemented support for "default" method arguments for 4244the 4245Execute/Debug command. Now, the debugger will always invoke a control 4246method 4247with the required number of arguments -- even if the command line 4248specifies 4249none or insufficient arguments. It uses default integer values for any 4250missing 4251arguments. Also fixes a bug where only six method arguments maximum were 4252supported instead of the required seven. 4253 4254Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 4255and 4256also return status in order to prevent buffer overruns. See the ACPICA 4257reference for details and syntax. ACPICA BZ 921 4258 4259iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 4260makefiles to simplify support for the two different but similar parser 4261generators, bison and yacc. 4262 4263Updated the generic unix makefile for gcc 4. The default gcc version is 4264now 4265expected to be 4 or greater, since options specific to gcc 4 are used. 4266 4267---------------------------------------- 426813 April 2011. Summary of changes for version 20110413: 4269 42701) ACPI CA Core Subsystem: 4271 4272Implemented support to execute a so-called "orphan" _REG method under the 4273EC 4274device. This change will force the execution of a _REG method underneath 4275the 4276EC 4277device even if there is no corresponding operation region of type 4278EmbeddedControl. Fixes a problem seen on some machines and apparently is 4279compatible with Windows behavior. ACPICA BZ 875. 4280 4281Added more predefined methods that are eligible for automatic NULL 4282package 4283element removal. This change adds another group of predefined names to 4284the 4285list 4286of names that can be repaired by having NULL package elements dynamically 4287removed. This group are those methods that return a single variable- 4288length 4289package containing simple data types such as integers, buffers, strings. 4290This 4291includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 4292_PSL, 4293_Sx, 4294and _TZD. ACPICA BZ 914. 4295 4296Split and segregated all internal global lock functions to a new file, 4297evglock.c. 4298 4299Updated internal address SpaceID for DataTable regions. Moved this 4300internal 4301space 4302id in preparation for ACPI 5.0 changes that will include some new space 4303IDs. 4304This 4305change should not affect user/host code. 4306 4307Example Code and Data Size: These are the sizes for the OS-independent 4308acpica.lib 4309produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 4310version of 4311the code includes the debug output trace mechanism and has a much larger 4312code 4313and 4314data size. 4315 4316 Previous Release (VC 9.0): 4317 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 4318 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 4319 Current Release (VC 9.0): 4320 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4321 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4322 43232) iASL Compiler/Disassembler and Tools: 4324 4325iASL/DTC: Major update for new grammar features. Allow generic data types 4326in 4327custom ACPI tables. Field names are now optional. Any line can be split 4328to 4329multiple lines using the continuation char (\). Large buffers now use 4330line- 4331continuation character(s) and no colon on the continuation lines. See the 4332grammar 4333update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 4334Moore. 4335 4336iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 4337statements. 4338Since the parser stuffs a "zero" as the return value for these statements 4339(due 4340to 4341the underlying AML grammar), they were seen as "return with value" by the 4342iASL 4343semantic checking. They are now seen correctly as "null" return 4344statements. 4345 4346iASL: Check if a_REG declaration has a corresponding Operation Region. 4347Adds a 4348check for each _REG to ensure that there is in fact a corresponding 4349operation 4350region declaration in the same scope. If not, the _REG method is not very 4351useful 4352since it probably won't be executed. ACPICA BZ 915. 4353 4354iASL/DTC: Finish support for expression evaluation. Added a new 4355expression 4356parser 4357that implements c-style operator precedence and parenthesization. ACPICA 4358bugzilla 4359908. 4360 4361Disassembler/DTC: Remove support for () and <> style comments in data 4362tables. 4363Now 4364that DTC has full expression support, we don't want to have comment 4365strings 4366that 4367start with a parentheses or a less-than symbol. Now, only the standard /* 4368and 4369// 4370comments are supported, as well as the bracket [] comments. 4371 4372AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 4373"unusual" 4374headers in the acpidump file. Update the header validation to support 4375these 4376tables. Problem introduced in previous AcpiXtract version in the change 4377to 4378support "wrong checksum" error messages emitted by acpidump utility. 4379 4380iASL: Add a * option to generate all template files (as a synonym for 4381ALL) 4382as 4383in 4384"iasl -T *" or "iasl -T ALL". 4385 4386iASL/DTC: Do not abort compiler on fatal errors. We do not want to 4387completely 4388abort the compiler on "fatal" errors, simply should abort the current 4389compile. 4390This allows multiple compiles with a single (possibly wildcard) compiler 4391invocation. 4392 4393---------------------------------------- 439416 March 2011. Summary of changes for version 20110316: 4395 43961) ACPI CA Core Subsystem: 4397 4398Fixed a problem caused by a _PRW method appearing at the namespace root 4399scope 4400during the setup of wake GPEs. A fault could occur if a _PRW directly 4401under 4402the 4403root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 4404 4405Implemented support for "spurious" Global Lock interrupts. On some 4406systems, a 4407global lock interrupt can occur without the pending flag being set. Upon 4408a 4409GL 4410interrupt, we now ensure that a thread is actually waiting for the lock 4411before 4412signaling GL availability. Rafael Wysocki, Bob Moore. 4413 4414Example Code and Data Size: These are the sizes for the OS-independent 4415acpica.lib 4416produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 4417version of 4418the code includes the debug output trace mechanism and has a much larger 4419code 4420and 4421data size. 4422 4423 Previous Release (VC 9.0): 4424 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4425 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4426 Current Release (VC 9.0): 4427 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 4428 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 4429 44302) iASL Compiler/Disassembler and Tools: 4431 4432Implemented full support for the "SLIC" ACPI table. Includes support in 4433the 4434header files, disassembler, table compiler, and template generator. Bob 4435Moore, 4436Lin Ming. 4437 4438AcpiXtract: Correctly handle embedded comments and messages from 4439AcpiDump. 4440Apparently some or all versions of acpidump will occasionally emit a 4441comment 4442like 4443"Wrong checksum", etc., into the dump file. This was causing problems for 4444AcpiXtract. ACPICA BZ 905. 4445 4446iASL: Fix the Linux makefile by removing an inadvertent double file 4447inclusion. 4448ACPICA BZ 913. 4449 4450AcpiExec: Update installation of operation region handlers. Install one 4451handler 4452for a user-defined address space. This is used by the ASL test suite 4453(ASLTS). 4454 4455---------------------------------------- 445611 February 2011. Summary of changes for version 20110211: 4457 44581) ACPI CA Core Subsystem: 4459 4460Added a mechanism to defer _REG methods for some early-installed 4461handlers. 4462Most user handlers should be installed before call to 4463AcpiEnableSubsystem. 4464However, Event handlers and region handlers should be installed after 4465AcpiInitializeObjects. Override handlers for the "default" regions should 4466be 4467installed early, however. This change executes all _REG methods for the 4468default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 4469chicken/egg issues between them. ACPICA BZ 848. 4470 4471Implemented an optimization for GPE detection. This optimization will 4472simply 4473ignore GPE registers that contain no enabled GPEs -- there is no need to 4474read the register since this information is available internally. This 4475becomes more important on machines with a large GPE space. ACPICA 4476bugzilla 4477884. Lin Ming. Suggestion from Joe Liu. 4478 4479Removed all use of the highly unreliable FADT revision field. The 4480revision 4481number in the FADT has been found to be completely unreliable and cannot 4482be 4483trusted. Only the actual table length can be used to infer the version. 4484This 4485change updates the ACPICA core and the disassembler so that both no 4486longer 4487even look at the FADT version and instead depend solely upon the FADT 4488length. 4489 4490Fix an unresolved name issue for the no-debug and no-error-message source 4491generation cases. The _AcpiModuleName was left undefined in these cases, 4492but 4493it is actually needed as a parameter to some interfaces. Define 4494_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 4495 4496Split several large files (makefiles and project files updated) 4497 utglobal.c -> utdecode.c 4498 dbcomds.c -> dbmethod.c dbnames.c 4499 dsopcode.c -> dsargs.c dscontrol.c 4500 dsload.c -> dsload2.c 4501 aslanalyze.c -> aslbtypes.c aslwalks.c 4502 4503Example Code and Data Size: These are the sizes for the OS-independent 4504acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4505debug version of the code includes the debug output trace mechanism and 4506has 4507a much larger code and data size. 4508 4509 Previous Release (VC 9.0): 4510 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4511 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4512 Current Release (VC 9.0): 4513 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4514 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4515 45162) iASL Compiler/Disassembler and Tools: 4517 4518iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 4519These are useful C-style macros with the standard definitions. ACPICA 4520bugzilla 898. 4521 4522iASL/DTC: Added support for integer expressions and labels. Support for 4523full 4524expressions for all integer fields in all ACPI tables. Support for labels 4525in 4526"generic" portions of tables such as UEFI. See the iASL reference manual. 4527 4528Debugger: Added a command to display the status of global handlers. The 4529"handlers" command will display op region, fixed event, and miscellaneous 4530global handlers. installation status -- and for op regions, whether 4531default 4532or user-installed handler will be used. 4533 4534iASL: Warn if reserved method incorrectly returns a value. Many 4535predefined 4536names are defined such that they do not return a value. If implemented as 4537a 4538method, issue a warning if such a name explicitly returns a value. ACPICA 4539Bugzilla 855. 4540 4541iASL: Added detection of GPE method name conflicts. Detects a conflict 4542where 4543there are two GPE methods of the form _Lxy and _Exy in the same scope. 4544(For 4545example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 4546 4547iASL/DTC: Fixed a couple input scanner issues with comments and line 4548numbers. Comment remover could get confused and miss a comment ending. 4549Fixed 4550a problem with line counter maintenance. 4551 4552iASL/DTC: Reduced the severity of some errors from fatal to error. There 4553is 4554no need to abort on simple errors within a field definition. 4555 4556Debugger: Simplified the output of the help command. All help output now 4557in 4558a single screen, instead of help subcommands. ACPICA Bugzilla 897. 4559 4560---------------------------------------- 456112 January 2011. Summary of changes for version 20110112: 4562 45631) ACPI CA Core Subsystem: 4564 4565Fixed a race condition between method execution and namespace walks that 4566can 4567possibly cause a fault. The problem was apparently introduced in version 456820100528 as a result of a performance optimization that reduces the 4569number 4570of 4571namespace walks upon method exit by using the delete_namespace_subtree 4572function instead of the delete_namespace_by_owner function used 4573previously. 4574Bug is a missing namespace lock in the delete_namespace_subtree function. 4575dana.myers@oracle.com 4576 4577Fixed several issues and a possible fault with the automatic "serialized" 4578method support. History: This support changes a method to "serialized" on 4579the 4580fly if the method generates an AE_ALREADY_EXISTS error, indicating the 4581possibility that it cannot handle reentrancy. This fix repairs a couple 4582of 4583issues seen in the field, especially on machines with many cores: 4584 4585 1) Delete method children only upon the exit of the last thread, 4586 so as to not delete objects out from under other running threads 4587 (and possibly causing a fault.) 4588 2) Set the "serialized" bit for the method only upon the exit of the 4589 Last thread, so as to not cause deadlock when running threads 4590 attempt to exit. 4591 3) Cleanup the use of the AML "MethodFlags" and internal method flags 4592 so that there is no longer any confusion between the two. 4593 4594 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 4595 4596Debugger: Now lock the namespace for duration of a namespace dump. 4597Prevents 4598issues if the namespace is changing dynamically underneath the debugger. 4599Especially affects temporary namespace nodes, since the debugger displays 4600these also. 4601 4602Updated the ordering of include files. The ACPICA headers should appear 4603before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 4604set 4605any necessary compiler-specific defines, etc. Affects the ACPI-related 4606tools 4607and utilities. 4608 4609Updated all ACPICA copyrights and signons to 2011. Added the 2011 4610copyright 4611to all module headers and signons, including the Linux header. This 4612affects 4613virtually every file in the ACPICA core subsystem, iASL compiler, and all 4614utilities. 4615 4616Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 4617project files for VC++ 6.0 are now obsolete. New project files can be 4618found 4619under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 4620details. 4621 4622Example Code and Data Size: These are the sizes for the OS-independent 4623acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4624debug version of the code includes the debug output trace mechanism and 4625has a 4626much larger code and data size. 4627 4628 Previous Release (VC 6.0): 4629 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 4630 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 4631 Current Release (VC 9.0): 4632 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4633 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4634 46352) iASL Compiler/Disassembler and Tools: 4636 4637iASL: Added generic data types to the Data Table compiler. Add "generic" 4638data 4639types such as UINT32, String, Unicode, etc., to simplify the generation 4640of 4641platform-defined tables such as UEFI. Lin Ming. 4642 4643iASL: Added listing support for the Data Table Compiler. Adds listing 4644support 4645(-l) to display actual binary output for each line of input code. 4646 4647---------------------------------------- 464809 December 2010. Summary of changes for version 20101209: 4649 46501) ACPI CA Core Subsystem: 4651 4652Completed the major overhaul of the GPE support code that was begun in 4653July 46542010. Major features include: removal of _PRW execution in ACPICA (host 4655executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 4656changes to existing interfaces, simplification of GPE handler operation, 4657and 4658a handful of new interfaces: 4659 4660 AcpiUpdateAllGpes 4661 AcpiFinishGpe 4662 AcpiSetupGpeForWake 4663 AcpiSetGpeWakeMask 4664 One new file, evxfgpe.c to consolidate all external GPE interfaces. 4665 4666See the ACPICA Programmer Reference for full details and programming 4667information. See the new section 4.4 "General Purpose Event (GPE) 4668Support" 4669for a full overview, and section 8.7 "ACPI General Purpose Event 4670Management" 4671for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 4672Ming, 4673Bob Moore, Rafael Wysocki. 4674 4675Implemented a new GPE feature for Windows compatibility, the "Implicit 4676Wake 4677GPE Notify". This feature will automatically issue a Notify(2) on a 4678device 4679when a Wake GPE is received if there is no corresponding GPE method or 4680handler. ACPICA BZ 870. 4681 4682Fixed a problem with the Scope() operator during table parse and load 4683phase. 4684During load phase (table load or method execution), the scope operator 4685should 4686not enter the target into the namespace. Instead, it should open a new 4687scope 4688at the target location. Linux BZ 19462, ACPICA BZ 882. 4689 4690Example Code and Data Size: These are the sizes for the OS-independent 4691acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4692debug version of the code includes the debug output trace mechanism and 4693has a 4694much larger code and data size. 4695 4696 Previous Release: 4697 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 4698 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 4699 Current Release: 4700 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4701 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4702 47032) iASL Compiler/Disassembler and Tools: 4704 4705iASL: Relax the alphanumeric restriction on _CID strings. These strings 4706are 4707"bus-specific" per the ACPI specification, and therefore any characters 4708are 4709acceptable. The only checks that can be performed are for a null string 4710and 4711perhaps for a leading asterisk. ACPICA BZ 886. 4712 4713iASL: Fixed a problem where a syntax error that caused a premature EOF 4714condition on the source file emitted a very confusing error message. The 4715premature EOF is now detected correctly. ACPICA BZ 891. 4716 4717Disassembler: Decode the AccessSize within a Generic Address Structure 4718(byte 4719access, word access, etc.) Note, this field does not allow arbitrary bit 4720access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 4721 4722New: AcpiNames utility - Example namespace dump utility. Shows an example 4723of 4724ACPICA configuration for a minimal namespace dump utility. Uses table and 4725namespace managers, but no AML interpreter. Does not add any 4726functionality 4727over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 4728partition and configure ACPICA. ACPICA BZ 883. 4729 4730AML Debugger: Increased the debugger buffer size for method return 4731objects. 4732Was 4K, increased to 16K. Also enhanced error messages for debugger 4733method 4734execution, including the buffer overflow case. 4735 4736---------------------------------------- 473713 October 2010. Summary of changes for version 20101013: 4738 47391) ACPI CA Core Subsystem: 4740 4741Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 4742now 4743clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 4744HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 4745 4746Changed the type of the predefined namespace object _TZ from ThermalZone 4747to 4748Device. This was found to be confusing to the host software that 4749processes 4750the various thermal zones, since _TZ is not really a ThermalZone. 4751However, 4752a 4753Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 4754Zhang. 4755 4756Added Windows Vista SP2 to the list of supported _OSI strings. The actual 4757string is "Windows 2006 SP2". 4758 4759Eliminated duplicate code in AcpiUtExecute* functions. Now that the 4760nsrepair 4761code automatically repairs _HID-related strings, this type of code is no 4762longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 4763878. 4764 4765Example Code and Data Size: These are the sizes for the OS-independent 4766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4767debug version of the code includes the debug output trace mechanism and 4768has a 4769much larger code and data size. 4770 4771 Previous Release: 4772 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4773 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4774 Current Release: 4775 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4776 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4777 47782) iASL Compiler/Disassembler and Tools: 4779 4780iASL: Implemented additional compile-time validation for _HID strings. 4781The 4782non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 4783length 4784of 4785the string must be exactly seven or eight characters. For both _HID and 4786_CID 4787strings, all characters must be alphanumeric. ACPICA BZ 874. 4788 4789iASL: Allow certain "null" resource descriptors. Some BIOS code creates 4790descriptors that are mostly or all zeros, with the expectation that they 4791will 4792be filled in at runtime. iASL now allows this as long as there is a 4793"resource 4794tag" (name) associated with the descriptor, which gives the ASL a handle 4795needed to modify the descriptor. ACPICA BZ 873. 4796 4797Added single-thread support to the generic Unix application OSL. 4798Primarily 4799for iASL support, this change removes the use of semaphores in the 4800single- 4801threaded ACPICA tools/applications - increasing performance. The 4802_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 4803option. ACPICA BZ 879. 4804 4805AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 4806support 4807for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 4808 4809iASL: Moved all compiler messages to a new file, aslmessages.h. 4810 4811---------------------------------------- 481215 September 2010. Summary of changes for version 20100915: 4813 48141) ACPI CA Core Subsystem: 4815 4816Removed the AcpiOsDerivePciId OSL interface. The various host 4817implementations 4818of this function were not OS-dependent and are now obsolete and can be 4819removed from all host OSLs. This function has been replaced by 4820AcpiHwDerivePciId, which is now part of the ACPICA core code. 4821AcpiHwDerivePciId has been implemented without recursion. Adds one new 4822module, hwpci.c. ACPICA BZ 857. 4823 4824Implemented a dynamic repair for _HID and _CID strings. The following 4825problems are now repaired at runtime: 1) Remove a leading asterisk in the 4826string, and 2) the entire string is uppercased. Both repairs are in 4827accordance with the ACPI specification and will simplify host driver 4828code. 4829ACPICA BZ 871. 4830 4831The ACPI_THREAD_ID type is no longer configurable, internally it is now 4832always UINT64. This simplifies the ACPICA code, especially any printf 4833output. 4834UINT64 is the only common data type for all thread_id types across all 4835operating systems. It is now up to the host OSL to cast the native 4836thread_id 4837type to UINT64 before returning the value to ACPICA (via 4838AcpiOsGetThreadId). 4839Lin Ming, Bob Moore. 4840 4841Added the ACPI_INLINE type to enhance the ACPICA configuration. The 4842"inline" 4843keyword is not standard across compilers, and this type allows inline to 4844be 4845configured on a per-compiler basis. Lin Ming. 4846 4847Made the system global AcpiGbl_SystemAwakeAndRunning publically 4848available. 4849Added an extern for this boolean in acpixf.h. Some hosts utilize this 4850value 4851during suspend/restore operations. ACPICA BZ 869. 4852 4853All code that implements error/warning messages with the "ACPI:" prefix 4854has 4855been moved to a new module, utxferror.c. 4856 4857The UINT64_OVERLAY was moved to utmath.c, which is the only module where 4858it 4859is used. ACPICA BZ 829. Lin Ming, Bob Moore. 4860 4861Example Code and Data Size: These are the sizes for the OS-independent 4862acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4863debug version of the code includes the debug output trace mechanism and 4864has a 4865much larger code and data size. 4866 4867 Previous Release: 4868 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 4869 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 4870 Current Release: 4871 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4872 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4873 48742) iASL Compiler/Disassembler and Tools: 4875 4876iASL/Disassembler: Write ACPI errors to stderr instead of the output 4877file. 4878This keeps the output files free of random error messages that may 4879originate 4880from within the namespace/interpreter code. Used this opportunity to 4881merge 4882all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 4883866. Lin Ming, Bob Moore. 4884 4885Tools: update some printfs for ansi warnings on size_t. Handle width 4886change 4887of size_t on 32-bit versus 64-bit generations. Lin Ming. 4888 4889---------------------------------------- 489006 August 2010. Summary of changes for version 20100806: 4891 48921) ACPI CA Core Subsystem: 4893 4894Designed and implemented a new host interface to the _OSI support code. 4895This 4896will allow the host to dynamically add or remove multiple _OSI strings, 4897as 4898well as install an optional handler that is called for each _OSI 4899invocation. 4900Also added a new AML debugger command, 'osi' to display and modify the 4901global 4902_OSI string table, and test support in the AcpiExec utility. See the 4903ACPICA 4904reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 4905New Functions: 4906 AcpiInstallInterface - Add an _OSI string. 4907 AcpiRemoveInterface - Delete an _OSI string. 4908 AcpiInstallInterfaceHandler - Install optional _OSI handler. 4909Obsolete Functions: 4910 AcpiOsValidateInterface - no longer used. 4911New Files: 4912 source/components/utilities/utosi.c 4913 4914Re-introduced the support to enable multi-byte transfers for Embedded 4915Controller (EC) operation regions. A reported problem was found to be a 4916bug 4917in the host OS, not in the multi-byte support. Previously, the maximum 4918data 4919size passed to the EC operation region handler was a single byte. There 4920are 4921often EC Fields larger than one byte that need to be transferred, and it 4922is 4923useful for the EC driver to lock these as a single transaction. This 4924change 4925enables single transfers larger than 8 bits. This effectively changes the 4926access to the EC space from ByteAcc to AnyAcc, and will probably require 4927changes to the host OS Embedded Controller driver to enable 16/32/64/256- 4928bit 4929transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 4930 4931Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 4932prototype in acpiosxf.h had the output value pointer as a (void *). 4933It should be a (UINT64 *). This may affect some host OSL code. 4934 4935Fixed a couple problems with the recently modified Linux makefiles for 4936iASL 4937and AcpiExec. These new makefiles place the generated object files in the 4938local directory so that there can be no collisions between the files that 4939are 4940shared between them that are compiled with different options. 4941 4942Example Code and Data Size: These are the sizes for the OS-independent 4943acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4944debug version of the code includes the debug output trace mechanism and 4945has a 4946much larger code and data size. 4947 4948 Previous Release: 4949 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4950 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 4951 Current Release: 4952 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 4953 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 4954 49552) iASL Compiler/Disassembler and Tools: 4956 4957iASL/Disassembler: Added a new option (-da, "disassemble all") to load 4958the 4959namespace from and disassemble an entire group of AML files. Useful for 4960loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 4961and 4962disassembling with one simple command. ACPICA BZ 865. Lin Ming. 4963 4964iASL: Allow multiple invocations of -e option. This change allows 4965multiple 4966uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 4967834. 4968Lin Ming. 4969 4970---------------------------------------- 497102 July 2010. Summary of changes for version 20100702: 4972 49731) ACPI CA Core Subsystem: 4974 4975Implemented several updates to the recently added GPE reference count 4976support. The model for "wake" GPEs is changing to give the host OS 4977complete 4978control of these GPEs. Eventually, the ACPICA core will not execute any 4979_PRW 4980methods, since the host already must execute them. Also, additional 4981changes 4982were made to help ensure that the reference counts are kept in proper 4983synchronization with reality. Rafael J. Wysocki. 4984 49851) Ensure that GPEs are not enabled twice during initialization. 49862) Ensure that GPE enable masks stay in sync with the reference count. 49873) Do not inadvertently enable GPEs when writing GPE registers. 49884) Remove the internal wake reference counter and add new AcpiGpeWakeup 4989interface. This interface will set or clear individual GPEs for wakeup. 49905) Remove GpeType argument from AcpiEnable and AcpiDisable. These 4991interfaces 4992are now used for "runtime" GPEs only. 4993 4994Changed the behavior of the GPE install/remove handler interfaces. The 4995GPE 4996is 4997no longer disabled during this process, as it was found to cause problems 4998on 4999some machines. Rafael J. Wysocki. 5000 5001Reverted a change introduced in version 20100528 to enable Embedded 5002Controller multi-byte transfers. This change was found to cause problems 5003with 5004Index Fields and possibly Bank Fields. It will be reintroduced when these 5005problems have been resolved. 5006 5007Fixed a problem with references to Alias objects within Package Objects. 5008A 5009reference to an Alias within the definition of a Package was not always 5010resolved properly. Aliases to objects like Processors, Thermal zones, 5011etc. 5012were resolved to the actual object instead of a reference to the object 5013as 5014it 5015should be. Package objects are only allowed to contain integer, string, 5016buffer, package, and reference objects. Redhat bugzilla 608648. 5017 5018Example Code and Data Size: These are the sizes for the OS-independent 5019acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5020debug version of the code includes the debug output trace mechanism and 5021has a 5022much larger code and data size. 5023 5024 Previous Release: 5025 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5026 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5027 Current Release: 5028 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5029 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5030 50312) iASL Compiler/Disassembler and Tools: 5032 5033iASL: Implemented a new compiler subsystem to allow definition and 5034compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 5035These 5036are called "ACPI Data Tables", and the new compiler is the "Data Table 5037Compiler". This compiler is intended to simplify the existing error-prone 5038process of creating these tables for the BIOS, as well as allowing the 5039disassembly, modification, recompilation, and override of existing ACPI 5040data 5041tables. See the iASL User Guide for detailed information. 5042 5043iASL: Implemented a new Template Generator option in support of the new 5044Data 5045Table Compiler. This option will create examples of all known ACPI tables 5046that can be used as the basis for table development. See the iASL 5047documentation and the -T option. 5048 5049Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 5050Descriptor Table). 5051 5052Updated the Linux makefiles for iASL and AcpiExec to place the generated 5053object files in the local directory so that there can be no collisions 5054between the shared files between them that are generated with different 5055options. 5056 5057Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 5058Use 5059the #define __APPLE__ to enable this support. 5060 5061---------------------------------------- 506228 May 2010. Summary of changes for version 20100528: 5063 5064Note: The ACPI 4.0a specification was released on April 5, 2010 and is 5065available at www.acpi.info. This is primarily an errata release. 5066 50671) ACPI CA Core Subsystem: 5068 5069Undefined ACPI tables: We are looking for the definitions for the 5070following 5071ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 5072 5073Implemented support to enable multi-byte transfers for Embedded 5074Controller 5075(EC) operation regions. Previously, the maximum data size passed to the 5076EC 5077operation region handler was a single byte. There are often EC Fields 5078larger 5079than one byte that need to be transferred, and it is useful for the EC 5080driver 5081to lock these as a single transaction. This change enables single 5082transfers 5083larger than 8 bits. This effectively changes the access to the EC space 5084from 5085ByteAcc to AnyAcc, and will probably require changes to the host OS 5086Embedded 5087Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 5088bit 5089transfers. Alexey Starikovskiy, Lin Ming 5090 5091Implemented a performance enhancement for namespace search and access. 5092This 5093change enhances the performance of namespace searches and walks by adding 5094a 5095backpointer to the parent in each namespace node. On large namespaces, 5096this 5097change can improve overall ACPI performance by up to 9X. Adding a pointer 5098to 5099each namespace node increases the overall size of the internal namespace 5100by 5101about 5%, since each namespace entry usually consists of both a namespace 5102node and an ACPI operand object. However, this is the first growth of the 5103namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 5104 5105Implemented a performance optimization that reduces the number of 5106namespace 5107walks. On control method exit, only walk the namespace if the method is 5108known 5109to have created namespace objects outside of its local scope. Previously, 5110the 5111entire namespace was traversed on each control method exit. This change 5112can 5113improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 5114Moore. 5115 5116Added support to truncate I/O addresses to 16 bits for Windows 5117compatibility. 5118Some ASL code has been seen in the field that inadvertently has bits set 5119above bit 15. This feature is optional and is enabled if the BIOS 5120requests 5121any Windows OSI strings. It can also be enabled by the host OS. Matthew 5122Garrett, Bob Moore. 5123 5124Added support to limit the maximum time for the ASL Sleep() operator. To 5125prevent accidental deep sleeps, limit the maximum time that Sleep() will 5126actually sleep. Configurable, the default maximum is two seconds. ACPICA 5127bugzilla 854. 5128 5129Added run-time validation support for the _WDG and_WED Microsoft 5130predefined 5131methods. These objects are defined by "Windows Instrumentation", and are 5132not 5133part of the ACPI spec. ACPICA BZ 860. 5134 5135Expanded all statistic counters used during namespace and device 5136initialization from 16 to 32 bits in order to support very large 5137namespaces. 5138 5139Replaced all instances of %d in printf format specifiers with %u since 5140nearly 5141all integers in ACPICA are unsigned. 5142 5143Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 5144returned 5145as AE_NO_HANDLER. 5146 5147Example Code and Data Size: These are the sizes for the OS-independent 5148acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5149debug version of the code includes the debug output trace mechanism and 5150has a 5151much larger code and data size. 5152 5153 Previous Release: 5154 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5155 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5156 Current Release: 5157 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5158 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5159 51602) iASL Compiler/Disassembler and Tools: 5161 5162iASL: Added compiler support for the _WDG and_WED Microsoft predefined 5163methods. These objects are defined by "Windows Instrumentation", and are 5164not 5165part of the ACPI spec. ACPICA BZ 860. 5166 5167AcpiExec: added option to disable the memory tracking mechanism. The -dt 5168option will disable the tracking mechanism, which improves performance 5169considerably. 5170 5171AcpiExec: Restructured the command line options into -d (disable) and -e 5172(enable) options. 5173 5174---------------------------------------- 517528 April 2010. Summary of changes for version 20100428: 5176 51771) ACPI CA Core Subsystem: 5178 5179Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 5180including FADT-based and GPE Block Devices, execute any _PRW methods in 5181the 5182new table, and process any _Lxx/_Exx GPE methods in the new table. Any 5183runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 5184immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 5185Devices. Provides compatibility with other ACPI implementations. Two new 5186files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 5187Moore. 5188 5189Fixed a regression introduced in version 20100331 within the table 5190manager 5191where initial table loading could fail. This was introduced in the fix 5192for 5193AcpiReallocateRootTable. Also, renamed some of fields in the table 5194manager 5195data structures to clarify their meaning and use. 5196 5197Fixed a possible allocation overrun during internal object copy in 5198AcpiUtCopySimpleObject. The original code did not correctly handle the 5199case 5200where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 5201847. 5202 5203Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 5204possible access beyond end-of-allocation. Also, now fully validate 5205descriptor 5206(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 5207 5208Example Code and Data Size: These are the sizes for the OS-independent 5209acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5210debug version of the code includes the debug output trace mechanism and 5211has a 5212much larger code and data size. 5213 5214 Previous Release: 5215 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5216 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5217 Current Release: 5218 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5219 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5220 52212) iASL Compiler/Disassembler and Tools: 5222 5223iASL: Implemented Min/Max/Len/Gran validation for address resource 5224descriptors. This change implements validation for the address fields 5225that 5226are common to all address-type resource descriptors. These checks are 5227implemented: Checks for valid Min/Max, length within the Min/Max window, 5228valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 5229per 5230table 6-40 in the ACPI 4.0a specification. Also split the large 5231aslrestype1.c 5232and aslrestype2.c files into five new files. ACPICA BZ 840. 5233 5234iASL: Added support for the _Wxx predefined names. This support was 5235missing 5236and these names were not recognized by the compiler as valid predefined 5237names. ACPICA BZ 851. 5238 5239iASL: Added an error for all predefined names that are defined to return 5240no 5241value and thus must be implemented as Control Methods. These include all 5242of 5243the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 5244names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 5245 5246iASL: Implemented the -ts option to emit hex AML data in ASL format, as 5247an 5248ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 5249be 5250dynamically loaded via the Load() operator. Also cleaned up output for 5251the 5252- 5253ta and -tc options. ACPICA BZ 853. 5254 5255Tests: Added a new file with examples of extended iASL error checking. 5256Demonstrates the advanced error checking ability of the iASL compiler. 5257Available at tests/misc/badcode.asl. 5258 5259---------------------------------------- 526031 March 2010. Summary of changes for version 20100331: 5261 52621) ACPI CA Core Subsystem: 5263 5264Completed a major update for the GPE support in order to improve support 5265for 5266shared GPEs and to simplify both host OS and ACPICA code. Added a 5267reference 5268count mechanism to support shared GPEs that require multiple device 5269drivers. 5270Several external interfaces have changed. One external interface has been 5271removed. One new external interface was added. Most of the GPE external 5272interfaces now use the GPE spinlock instead of the events mutex (and the 5273Flags parameter for many GPE interfaces has been removed.) See the 5274updated 5275ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 5276Rafael 5277Wysocki. ACPICA BZ 831. 5278 5279Changed: 5280 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 5281Removed: 5282 AcpiSetGpeType 5283New: 5284 AcpiSetGpe 5285 5286Implemented write support for DataTable operation regions. These regions 5287are 5288defined via the DataTableRegion() operator. Previously, only read support 5289was 5290implemented. The ACPI specification allows DataTableRegions to be 5291read/write, 5292however. 5293 5294Implemented a new subsystem option to force a copy of the DSDT to local 5295memory. Optionally copy the entire DSDT to local memory (instead of 5296simply 5297mapping it.) There are some (albeit very rare) BIOSs that corrupt or 5298replace 5299the original DSDT, creating the need for this option. Default is FALSE, 5300do 5301not copy the DSDT. 5302 5303Implemented detection of a corrupted or replaced DSDT. This change adds 5304support to detect a DSDT that has been corrupted and/or replaced from 5305outside 5306the OS (by firmware). This is typically catastrophic for the system, but 5307has 5308been seen on some machines. Once this problem has been detected, the DSDT 5309copy option can be enabled via system configuration. Lin Ming, Bob Moore. 5310 5311Fixed two problems with AcpiReallocateRootTable during the root table 5312copy. 5313When copying the root table to the new allocation, the length used was 5314incorrect. The new size was used instead of the current table size, 5315meaning 5316too much data was copied. Also, the count of available slots for ACPI 5317tables 5318was not set correctly. Alexey Starikovskiy, Bob Moore. 5319 5320Example Code and Data Size: These are the sizes for the OS-independent 5321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5322debug version of the code includes the debug output trace mechanism and 5323has a 5324much larger code and data size. 5325 5326 Previous Release: 5327 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 5328 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 5329 Current Release: 5330 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5331 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5332 53332) iASL Compiler/Disassembler and Tools: 5334 5335iASL: Implement limited typechecking for values returned from predefined 5336control methods. The type of any returned static (unnamed) object is now 5337validated. For example, Return(1). ACPICA BZ 786. 5338 5339iASL: Fixed a predefined name object verification regression. Fixes a 5340problem 5341introduced in version 20100304. An error is incorrectly generated if a 5342predefined name is declared as a static named object with a value defined 5343using the keywords "Zero", "One", or "Ones". Lin Ming. 5344 5345iASL: Added Windows 7 support for the -g option (get local ACPI tables) 5346by 5347reducing the requested registry access rights. ACPICA BZ 842. 5348 5349Disassembler: fixed a possible fault when generating External() 5350statements. 5351Introduced in commit ae7d6fd: Properly handle externals with parent- 5352prefix 5353(carat). Fixes a string length allocation calculation. Lin Ming. 5354 5355---------------------------------------- 535604 March 2010. Summary of changes for version 20100304: 5357 53581) ACPI CA Core Subsystem: 5359 5360Fixed a possible problem with the AML Mutex handling function 5361AcpiExReleaseMutex where the function could fault under the very rare 5362condition when the interpreter has blocked, the interpreter lock is 5363released, 5364the interpreter is then reentered via the same thread, and attempts to 5365acquire an AML mutex that was previously acquired. FreeBSD report 140979. 5366Lin 5367Ming. 5368 5369Implemented additional configuration support for the AML "Debug Object". 5370Output from the debug object can now be enabled via a global variable, 5371AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 5372debugging. 5373This debug output is now available in the release version of ACPICA 5374instead 5375of just the debug version. Also, the entire debug output module can now 5376be 5377configured out of the ACPICA build if desired. One new file added, 5378executer/exdebug.c. Lin Ming, Bob Moore. 5379 5380Added header support for the ACPI MCHI table (Management Controller Host 5381Interface Table). This table was added in ACPI 4.0, but the defining 5382document 5383has only recently become available. 5384 5385Standardized output of integer values for ACPICA warnings/errors. Always 5386use 53870x prefix for hex output, always use %u for unsigned integer decimal 5388output. 5389Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 5390400 5391invocations.) These invocations were converted from the original 5392ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 5393 5394Example Code and Data Size: These are the sizes for the OS-independent 5395acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5396debug version of the code includes the debug output trace mechanism and 5397has a 5398much larger code and data size. 5399 5400 Previous Release: 5401 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 5402 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 5403 Current Release: 5404 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 5405 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 5406 54072) iASL Compiler/Disassembler and Tools: 5408 5409iASL: Implemented typechecking support for static (non-control method) 5410predefined named objects that are declared with the Name() operator. For 5411example, the type of this object is now validated to be of type Integer: 5412Name(_BBN, 1). This change migrates the compiler to using the core 5413predefined 5414name table instead of maintaining a local version. Added a new file, 5415aslpredef.c. ACPICA BZ 832. 5416 5417Disassembler: Added support for the ACPI 4.0 MCHI table. 5418 5419---------------------------------------- 542021 January 2010. Summary of changes for version 20100121: 5421 54221) ACPI CA Core Subsystem: 5423 5424Added the 2010 copyright to all module headers and signons. This affects 5425virtually every file in the ACPICA core subsystem, the iASL compiler, the 5426tools/utilities, and the test suites. 5427 5428Implemented a change to the AcpiGetDevices interface to eliminate 5429unnecessary 5430invocations of the _STA method. In the case where a specific _HID is 5431requested, do not run _STA until a _HID match is found. This eliminates 5432potentially dozens of _STA calls during a search for a particular 5433device/HID, 5434which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 5435 5436Implemented an additional repair for predefined method return values. 5437Attempt 5438to repair unexpected NULL elements within returned Package objects. 5439Create 5440an 5441Integer of value zero, a NULL String, or a zero-length Buffer as 5442appropriate. 5443ACPICA BZ 818. Lin Ming, Bob Moore. 5444 5445Removed the obsolete ACPI_INTEGER data type. This type was introduced as 5446the 5447code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 5448(with 544964-bit AML integers). It is now obsolete and this change removes it from 5450the 5451ACPICA code base, replaced by UINT64. The original typedef has been 5452retained 5453for now for compatibility with existing device driver code. ACPICA BZ 5454824. 5455 5456Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 5457in 5458the parse tree object. 5459 5460Added additional warning options for the gcc-4 generation. Updated the 5461source 5462accordingly. This includes some code restructuring to eliminate 5463unreachable 5464code, elimination of some gotos, elimination of unused return values, 5465some 5466additional casting, and removal of redundant declarations. 5467 5468Example Code and Data Size: These are the sizes for the OS-independent 5469acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5470debug version of the code includes the debug output trace mechanism and 5471has a 5472much larger code and data size. 5473 5474 Previous Release: 5475 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5476 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5477 Current Release: 5478 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 5479 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 5480 54812) iASL Compiler/Disassembler and Tools: 5482 5483No functional changes for this release. 5484 5485---------------------------------------- 548614 December 2009. Summary of changes for version 20091214: 5487 54881) ACPI CA Core Subsystem: 5489 5490Enhanced automatic data type conversions for predefined name repairs. 5491This 5492change expands the automatic repairs/conversions for predefined name 5493return 5494values to make Integers, Strings, and Buffers fully interchangeable. 5495Also, 5496a 5497Buffer can be converted to a Package of Integers if necessary. The 5498nsrepair.c 5499module was completely restructured. Lin Ming, Bob Moore. 5500 5501Implemented automatic removal of null package elements during predefined 5502name 5503repairs. This change will automatically remove embedded and trailing NULL 5504package elements from returned package objects that are defined to 5505contain 5506a 5507variable number of sub-packages. The driver is then presented with a 5508package 5509with no null elements to deal with. ACPICA BZ 819. 5510 5511Implemented a repair for the predefined _FDE and _GTM names. The expected 5512return value for both names is a Buffer of 5 DWORDs. This repair fixes 5513two 5514possible problems (both seen in the field), where a package of integers 5515is 5516returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 5517Kim. 5518 5519Implemented additional module-level code support. This change will 5520properly 5521execute module-level code that is not at the root of the namespace (under 5522a 5523Device object, etc.). Now executes the code within the current scope 5524instead 5525of the root. ACPICA BZ 762. Lin Ming. 5526 5527Fixed possible mutex acquisition errors when running _REG methods. Fixes 5528a 5529problem where mutex errors can occur when running a _REG method that is 5530in 5531the same scope as a method-defined operation region or an operation 5532region 5533under a module-level IF block. This type of code is rare, so the problem 5534has 5535not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 5536 5537Fixed a possible memory leak during module-level code execution. An 5538object 5539could be leaked for each block of executed module-level code if the 5540interpreter slack mode is enabled This change deletes any implicitly 5541returned 5542object from the module-level code block. Lin Ming. 5543 5544Removed messages for successful predefined repair(s). The repair 5545mechanism 5546was considered too wordy. Now, messages are only unconditionally emitted 5547if 5548the return object cannot be repaired. Existing messages for successful 5549repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 5550827. 5551 5552Example Code and Data Size: These are the sizes for the OS-independent 5553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5554debug version of the code includes the debug output trace mechanism and 5555has a 5556much larger code and data size. 5557 5558 Previous Release: 5559 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 5560 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 5561 Current Release: 5562 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5563 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5564 55652) iASL Compiler/Disassembler and Tools: 5566 5567iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 5568files 5569were no longer automatically removed at the termination of the compile. 5570 5571acpiexec: Implemented the -f option to specify default region fill value. 5572This option specifies the value used to initialize buffers that simulate 5573operation regions. Default value is zero. Useful for debugging problems 5574that 5575depend on a specific initial value for a region or field. 5576 5577---------------------------------------- 557812 November 2009. Summary of changes for version 20091112: 5579 55801) ACPI CA Core Subsystem: 5581 5582Implemented a post-order callback to AcpiWalkNamespace. The existing 5583interface only has a pre-order callback. This change adds an additional 5584parameter for a post-order callback which will be more useful for bus 5585scans. 5586ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 5587 5588Modified the behavior of the operation region memory mapping cache for 5589SystemMemory. Ensure that the memory mappings created for operation 5590regions 5591do not cross 4K page boundaries. Crossing a page boundary while mapping 5592regions can cause kernel warnings on some hosts if the pages have 5593different 5594attributes. Such regions are probably BIOS bugs, and this is the 5595workaround. 5596Linux BZ 14445. Lin Ming. 5597 5598Implemented an automatic repair for predefined methods that must return 5599sorted lists. This change will repair (by sorting) packages returned by 5600_ALR, 5601_PSS, and _TSS. Drivers can now assume that the packages are correctly 5602sorted 5603and do not contain NULL package elements. Adds one new file, 5604namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 5605 5606Fixed a possible fault during predefined name validation if a return 5607Package 5608object contains NULL elements. Also adds a warning if a NULL element is 5609followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 5610may 5611include repair or removal of all such NULL elements where possible. 5612 5613Implemented additional module-level executable AML code support. This 5614change 5615will execute module-level code that is not at the root of the namespace 5616(under a Device object, etc.) at table load time. Module-level executable 5617AML 5618code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 5619 5620Implemented a new internal function to create Integer objects. This 5621function 5622simplifies miscellaneous object creation code. ACPICA BZ 823. 5623 5624Reduced the severity of predefined repair messages, Warning to Info. 5625Since 5626the object was successfully repaired, a warning is too severe. Reduced to 5627an 5628info message for now. These messages may eventually be changed to debug- 5629only. 5630ACPICA BZ 812. 5631 5632Example Code and Data Size: These are the sizes for the OS-independent 5633acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5634debug version of the code includes the debug output trace mechanism and 5635has a 5636much larger code and data size. 5637 5638 Previous Release: 5639 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 5640 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 5641 Current Release: 5642 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 5643 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 5644 56452) iASL Compiler/Disassembler and Tools: 5646 5647iASL: Implemented Switch() with While(1) so that Break works correctly. 5648This 5649change correctly implements the Switch operator with a surrounding 5650While(1) 5651so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 5652 5653iASL: Added a message if a package initializer list is shorter than 5654package 5655length. Adds a new remark for a Package() declaration if an initializer 5656list 5657exists, but is shorter than the declared length of the package. Although 5658technically legal, this is probably a coding error and it is seen in the 5659field. ACPICA BZ 815. Lin Ming, Bob Moore. 5660 5661iASL: Fixed a problem where the compiler could fault after the maximum 5662number 5663of errors was reached (200). 5664 5665acpixtract: Fixed a possible warning for pointer cast if the compiler 5666warning 5667level set very high. 5668 5669---------------------------------------- 567013 October 2009. Summary of changes for version 20091013: 5671 56721) ACPI CA Core Subsystem: 5673 5674Fixed a problem where an Operation Region _REG method could be executed 5675more 5676than once. If a custom address space handler is installed by the host 5677before 5678the "initialize operation regions" phase of the ACPICA initialization, 5679any 5680_REG methods for that address space could be executed twice. This change 5681fixes the problem. ACPICA BZ 427. Lin Ming. 5682 5683Fixed a possible memory leak for the Scope() ASL operator. When the exact 5684invocation of "Scope(\)" is executed (change scope to root), one internal 5685operand object was leaked. Lin Ming. 5686 5687Implemented a run-time repair for the _MAT predefined method. If the _MAT 5688return value is defined as a Field object in the AML, and the field 5689size is less than or equal to the default width of an integer (32 or 569064),_MAT 5691can incorrectly return an Integer instead of a Buffer. ACPICA now 5692automatically repairs this problem. ACPICA BZ 810. 5693 5694Implemented a run-time repair for the _BIF and _BIX predefined methods. 5695The 5696"OEM Information" field is often incorrectly returned as an Integer with 5697value zero if the field is not supported by the platform. This is due to 5698an 5699ambiguity in the ACPI specification. The field should always be a string. 5700ACPICA now automatically repairs this problem by returning a NULL string 5701within the returned Package. ACPICA BZ 807. 5702 5703Example Code and Data Size: These are the sizes for the OS-independent 5704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5705debug version of the code includes the debug output trace mechanism and 5706has a 5707much larger code and data size. 5708 5709 Previous Release: 5710 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5711 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5712 Current Release: 5713 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 5714 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 5715 57162) iASL Compiler/Disassembler and Tools: 5717 5718Disassembler: Fixed a problem where references to external symbols that 5719contained one or more parent-prefixes (carats) were not handled 5720correctly, 5721possibly causing a fault. ACPICA BZ 806. Lin Ming. 5722 5723Disassembler: Restructured the code so that all functions that handle 5724external symbols are in a single module. One new file is added, 5725common/dmextern.c. 5726 5727AML Debugger: Added a max count argument for the Batch command (which 5728executes multiple predefined methods within the namespace.) 5729 5730iASL: Updated the compiler documentation (User Reference.) Available at 5731http://www.acpica.org/documentation/. ACPICA BZ 750. 5732 5733AcpiXtract: Updated for Lint and other formatting changes. Close all open 5734files. 5735 5736---------------------------------------- 573703 September 2009. Summary of changes for version 20090903: 5738 57391) ACPI CA Core Subsystem: 5740 5741For Windows Vista compatibility, added the automatic execution of an _INI 5742method located at the namespace root (\_INI). This method is executed at 5743table load time. This support is in addition to the automatic execution 5744of 5745\_SB._INI. Lin Ming. 5746 5747Fixed a possible memory leak in the interpreter for AML package objects 5748if 5749the package initializer list is longer than the defined size of the 5750package. 5751This apparently can only happen if the BIOS changes the package size on 5752the 5753fly (seen in a _PSS object), as ASL compilers do not allow this. The 5754interpreter will truncate the package to the defined size (and issue an 5755error 5756message), but previously could leave the extra objects undeleted if they 5757were 5758pre-created during the argument processing (such is the case if the 5759package 5760consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 5761 5762Fixed a problem seen when a Buffer or String is stored to itself via ASL. 5763This has been reported in the field. Previously, ACPICA would zero out 5764the 5765buffer/string. Now, the operation is treated as a noop. Provides Windows 5766compatibility. ACPICA BZ 803. Lin Ming. 5767 5768Removed an extraneous error message for ASL constructs of the form 5769Store(LocalX,LocalX) when LocalX is uninitialized. These curious 5770statements 5771are seen in many BIOSs and are once again treated as NOOPs and no error 5772is 5773emitted when they are encountered. ACPICA BZ 785. 5774 5775Fixed an extraneous warning message if a _DSM reserved method returns a 5776Package object. _DSM can return any type of object, so validation on the 5777return type cannot be performed. ACPICA BZ 802. 5778 5779Example Code and Data Size: These are the sizes for the OS-independent 5780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5781debug version of the code includes the debug output trace mechanism and 5782has a 5783much larger code and data size. 5784 5785 Previous Release: 5786 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5787 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5788 Current Release: 5789 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5790 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5791 57922) iASL Compiler/Disassembler and Tools: 5793 5794iASL: Fixed a problem with the use of the Alias operator and Resource 5795Templates. The correct alias is now constructed and no error is emitted. 5796ACPICA BZ 738. 5797 5798iASL: Implemented the -I option to specify additional search directories 5799for 5800include files. Allows multiple additional search paths for include files. 5801Directories are searched in the order specified on the command line 5802(after 5803the local directory is searched.) ACPICA BZ 800. 5804 5805iASL: Fixed a problem where the full pathname for include files was not 5806emitted for warnings/errors. This caused the IDE support to not work 5807properly. ACPICA BZ 765. 5808 5809iASL: Implemented the -@ option to specify a Windows-style response file 5810containing additional command line options. ACPICA BZ 801. 5811 5812AcpiExec: Added support to load multiple AML files simultaneously (such 5813as 5814a 5815DSDT and multiple SSDTs). Also added support for wildcards within the AML 5816pathname. These features allow all machine tables to be easily loaded and 5817debugged together. ACPICA BZ 804. 5818 5819Disassembler: Added missing support for disassembly of HEST table Error 5820Bank 5821subtables. 5822 5823---------------------------------------- 582430 July 2009. Summary of changes for version 20090730: 5825 5826The ACPI 4.0 implementation for ACPICA is complete with this release. 5827 58281) ACPI CA Core Subsystem: 5829 5830ACPI 4.0: Added header file support for all new and changed ACPI tables. 5831Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 5832new 5833for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 5834BERT, 5835EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 5836There 5837have been some ACPI 4.0 changes to other existing tables. Split the large 5838actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 5839 5840ACPI 4.0: Implemented predefined name validation for all new names. There 5841are 584231 new names in ACPI 4.0. The predefined validation module was split into 5843two 5844files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 5845 5846Implemented support for so-called "module-level executable code". This is 5847executable AML code that exists outside of any control method and is 5848intended 5849to be executed at table load time. Although illegal since ACPI 2.0, this 5850type 5851of code still exists and is apparently still being created. Blocks of 5852this 5853code are now detected and executed as intended. Currently, the code 5854blocks 5855must exist under either an If, Else, or While construct; these are the 5856typical cases seen in the field. ACPICA BZ 762. Lin Ming. 5857 5858Implemented an automatic dynamic repair for predefined names that return 5859nested Package objects. This applies to predefined names that are defined 5860to 5861return a variable-length Package of sub-packages. If the number of sub- 5862packages is one, BIOS code is occasionally seen that creates a simple 5863single 5864package with no sub-packages. This code attempts to fix the problem by 5865wrapping a new package object around the existing package. These methods 5866can 5867be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 5868BZ 5869790. 5870 5871Fixed a regression introduced in 20090625 for the AcpiGetDevices 5872interface. 5873The _HID/_CID matching was broken and no longer matched IDs correctly. 5874ACPICA 5875BZ 793. 5876 5877Fixed a problem with AcpiReset where the reset would silently fail if the 5878register was one of the protected I/O ports. AcpiReset now bypasses the 5879port 5880validation mechanism. This may eventually be driven into the 5881AcpiRead/Write 5882interfaces. 5883 5884Fixed a regression related to the recent update of the AcpiRead/Write 5885interfaces. A sleep/suspend could fail if the optional PM2 Control 5886register 5887does not exist during an attempt to write the Bus Master Arbitration bit. 5888(However, some hosts already delete the code that writes this bit, and 5889the 5890code may in fact be obsolete at this date.) ACPICA BZ 799. 5891 5892Fixed a problem where AcpiTerminate could fault if inadvertently called 5893twice 5894in succession. ACPICA BZ 795. 5895 5896Example Code and Data Size: These are the sizes for the OS-independent 5897acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5898debug version of the code includes the debug output trace mechanism and 5899has a 5900much larger code and data size. 5901 5902 Previous Release: 5903 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 5904 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 5905 Current Release: 5906 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5907 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5908 59092) iASL Compiler/Disassembler and Tools: 5910 5911ACPI 4.0: Implemented disassembler support for all new ACPI tables and 5912changes to existing tables. ACPICA BZ 775. 5913 5914---------------------------------------- 591525 June 2009. Summary of changes for version 20090625: 5916 5917The ACPI 4.0 Specification was released on June 16 and is available at 5918www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 5919continue for the next few releases. 5920 59211) ACPI CA Core Subsystem: 5922 5923ACPI 4.0: Implemented interpreter support for the IPMI operation region 5924address space. Includes support for bi-directional data buffers and an 5925IPMI 5926address space handler (to be installed by an IPMI device driver.) ACPICA 5927BZ 5928773. Lin Ming. 5929 5930ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 5931Includes 5932support in both the header files and the disassembler. 5933 5934Completed a major update for the AcpiGetObjectInfo external interface. 5935Changes include: 5936 - Support for variable, unlimited length HID, UID, and CID strings. 5937 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 5938etc.) 5939 - Call the _SxW power methods on behalf of a device object. 5940 - Determine if a device is a PCI root bridge. 5941 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 5942These changes will require an update to all callers of this interface. 5943See 5944the updated ACPICA Programmer Reference for details. One new source file 5945has 5946been added - utilities/utids.c. ACPICA BZ 368, 780. 5947 5948Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 5949transfers. The Value parameter has been extended from 32 bits to 64 bits 5950in 5951order to support new ACPI 4.0 tables. These changes will require an 5952update 5953to 5954all callers of these interfaces. See the ACPICA Programmer Reference for 5955details. ACPICA BZ 768. 5956 5957Fixed several problems with AcpiAttachData. The handler was not invoked 5958when 5959the host node was deleted. The data sub-object was not automatically 5960deleted 5961when the host node was deleted. The interface to the handler had an 5962unused 5963parameter, this was removed. ACPICA BZ 778. 5964 5965Enhanced the function that dumps ACPI table headers. All non-printable 5966characters in the string fields are now replaced with '?' (Signature, 5967OemId, 5968OemTableId, and CompilerId.) ACPI tables with non-printable characters in 5969these fields are occasionally seen in the field. ACPICA BZ 788. 5970 5971Fixed a problem with predefined method repair code where the code that 5972attempts to repair/convert an object of incorrect type is only executed 5973on 5974the first time the predefined method is called. The mechanism that 5975disables 5976warnings on subsequent calls was interfering with the repair mechanism. 5977ACPICA BZ 781. 5978 5979Fixed a possible memory leak in the predefined validation/repair code 5980when 5981a 5982buffer is automatically converted to an expected string object. 5983 5984Removed obsolete 16-bit files from the distribution and from the current 5985git 5986tree head. ACPICA BZ 776. 5987 5988Example Code and Data Size: These are the sizes for the OS-independent 5989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5990debug version of the code includes the debug output trace mechanism and 5991has a 5992much larger code and data size. 5993 5994 Previous Release: 5995 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 5996 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 5997 Current Release: 5998 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 5999 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6000 60012) iASL Compiler/Disassembler and Tools: 6002 6003ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 6004operation region keyword. ACPICA BZ 771, 772. Lin Ming. 6005 6006ACPI 4.0: iASL - implemented compile-time validation support for all new 6007predefined names and control methods (31 total). ACPICA BZ 769. 6008 6009---------------------------------------- 601021 May 2009. Summary of changes for version 20090521: 6011 60121) ACPI CA Core Subsystem: 6013 6014Disabled the preservation of the SCI enable bit in the PM1 control 6015register. 6016The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 6017to 6018be 6019a "preserved" bit - "OSPM always preserves this bit position", section 60204.7.3.2.1. However, some machines fail if this bit is in fact preserved 6021because the bit needs to be explicitly set by the OS as a workaround. No 6022machines fail if the bit is not preserved. Therefore, ACPICA no longer 6023attempts to preserve this bit. 6024 6025Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 6026incorrectly formed _PRT package could cause a fault. Added validation to 6027ensure that each package element is actually a sub-package. 6028 6029Implemented a new interface to install or override a single control 6030method, 6031AcpiInstallMethod. This interface is useful when debugging in order to 6032repair 6033an existing method or to install a missing method without having to 6034override 6035the entire ACPI table. See the ACPICA Programmer Reference for use and 6036examples. Lin Ming, Bob Moore. 6037 6038Fixed several reference count issues with the DdbHandle object that is 6039created from a Load or LoadTable operator. Prevent premature deletion of 6040the 6041object. Also, mark the object as invalid once the table has been 6042unloaded. 6043This is needed because the handle itself may not be deleted after the 6044table 6045unload, depending on whether it has been stored in a named object by the 6046caller. Lin Ming. 6047 6048Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 6049mutexes of the same sync level are acquired but then not released in 6050strict 6051opposite order, the internally maintained Current Sync Level becomes 6052confused 6053and can cause subsequent execution errors. ACPICA BZ 471. 6054 6055Changed the allowable release order for ASL mutex objects. The ACPI 4.0 6056specification has been changed to make the SyncLevel for mutex objects 6057more 6058useful. When releasing a mutex, the SyncLevel of the mutex must now be 6059the 6060same as the current sync level. This makes more sense than the previous 6061rule 6062(SyncLevel less than or equal). This change updates the code to match the 6063specification. 6064 6065Fixed a problem with the local version of the AcpiOsPurgeCache function. 6066The 6067(local) cache must be locked during all cache object deletions. Andrew 6068Baumann. 6069 6070Updated the Load operator to use operation region interfaces. This 6071replaces 6072direct memory mapping with region access calls. Now, all region accesses 6073go 6074through the installed region handler as they should. 6075 6076Simplified and optimized the NsGetNextNode function. Reduced parameter 6077count 6078and reduced code for this frequently used function. 6079 6080Example Code and Data Size: These are the sizes for the OS-independent 6081acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6082debug version of the code includes the debug output trace mechanism and 6083has a 6084much larger code and data size. 6085 6086 Previous Release: 6087 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6088 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6089 Current Release: 6090 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6091 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6092 60932) iASL Compiler/Disassembler and Tools: 6094 6095Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 6096problems 6097with sub-table disassembly and handling invalid sub-tables. Attempt 6098recovery 6099after an invalid sub-table ID. 6100 6101---------------------------------------- 610222 April 2009. Summary of changes for version 20090422: 6103 61041) ACPI CA Core Subsystem: 6105 6106Fixed a compatibility issue with the recently released I/O port 6107protection 6108mechanism. For windows compatibility, 1) On a port protection violation, 6109simply ignore the request and do not return an exception (allow the 6110control 6111method to continue execution.) 2) If only part of the request overlaps a 6112protected port, read/write the individual ports that are not protected. 6113Linux 6114BZ 13036. Lin Ming 6115 6116Enhanced the execution of the ASL/AML BreakPoint operator so that it 6117actually 6118breaks into the AML debugger if the debugger is present. This matches the 6119ACPI-defined behavior. 6120 6121Fixed several possible warnings related to the use of the configurable 6122ACPI_THREAD_ID. This type can now be configured as either an integer or a 6123pointer with no warnings. Also fixes several warnings in printf-like 6124statements for the 64-bit build when the type is configured as a pointer. 6125ACPICA BZ 766, 767. 6126 6127Fixed a number of possible warnings when compiling with gcc 4+ (depending 6128on 6129warning options.) Examples include printf formats, aliasing, unused 6130globals, 6131missing prototypes, missing switch default statements, use of non-ANSI 6132library functions, use of non-ANSI constructs. See generate/unix/Makefile 6133for 6134a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 6135 6136Example Code and Data Size: These are the sizes for the OS-independent 6137acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6138debug version of the code includes the debug output trace mechanism and 6139has a 6140much larger code and data size. 6141 6142 Previous Release: 6143 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6144 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6145 Current Release: 6146 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6147 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6148 61492) iASL Compiler/Disassembler and Tools: 6150 6151iASL: Fixed a generation warning from Bison 2.3 and fixed several 6152warnings 6153on 6154the 64-bit build. 6155 6156iASL: Fixed a problem where the Unix/Linux versions of the compiler could 6157not 6158correctly digest Windows/DOS formatted files (with CR/LF). 6159 6160iASL: Added a new option for "quiet mode" (-va) that produces only the 6161compilation summary, not individual errors and warnings. Useful for large 6162batch compilations. 6163 6164AcpiExec: Implemented a new option (-z) to enable a forced 6165semaphore/mutex 6166timeout that can be used to detect hang conditions during execution of 6167AML 6168code (includes both internal semaphores and AML-defined mutexes and 6169events.) 6170 6171Added new makefiles for the generation of acpica in a generic unix-like 6172environment. These makefiles are intended to generate the acpica tools 6173and 6174utilities from the original acpica git source tree structure. 6175 6176Test Suites: Updated and cleaned up the documentation files. Updated the 6177copyrights to 2009, affecting all source files. Use the new version of 6178iASL 6179with quiet mode. Increased the number of available semaphores in the 6180Windows 6181OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 6182added 6183an alternate implementation of the semaphore timeout to allow aslts to 6184execute fully on Cygwin. 6185 6186---------------------------------------- 618720 March 2009. Summary of changes for version 20090320: 6188 61891) ACPI CA Core Subsystem: 6190 6191Fixed a possible race condition between AcpiWalkNamespace and dynamic 6192table 6193unloads. Added a reader/writer locking mechanism to allow multiple 6194concurrent 6195namespace walks (readers), but block a dynamic table unload until it can 6196gain 6197exclusive write access to the namespace. This fixes a problem where a 6198table 6199unload could (possibly catastrophically) delete the portion of the 6200namespace 6201that is currently being examined by a walk. Adds a new file, utlock.c, 6202that 6203implements the reader/writer lock mechanism. ACPICA BZ 749. 6204 6205Fixed a regression introduced in version 20090220 where a change to the 6206FADT 6207handling could cause the ACPICA subsystem to access non-existent I/O 6208ports. 6209 6210Modified the handling of FADT register and table (FACS/DSDT) addresses. 6211The 6212FADT can contain both 32-bit and 64-bit versions of these addresses. 6213Previously, the 64-bit versions were favored, meaning that if both 32 and 621464 6215versions were valid, but not equal, the 64-bit version was used. This was 6216found to cause some machines to fail. Now, in this case, the 32-bit 6217version 6218is used instead. This now matches the Windows behavior. 6219 6220Implemented a new mechanism to protect certain I/O ports. Provides 6221Microsoft 6222compatibility and protects the standard PC I/O ports from access via AML 6223code. Adds a new file, hwvalid.c 6224 6225Fixed a possible extraneous warning message from the FADT support. The 6226message warns of a 32/64 length mismatch between the legacy and GAS 6227definitions for a register. 6228 6229Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 6230is 6231made obsolete by the port protection mechanism above. It was previously 6232used 6233to validate the entire address range of an operation region, which could 6234be 6235incorrect if the range included illegal ports, but fields within the 6236operation region did not actually access those ports. Validation is now 6237performed on a per-field basis instead of the entire region. 6238 6239Modified the handling of the PM1 Status Register ignored bit (bit 11.) 6240Ignored bits must be "preserved" according to the ACPI spec. Usually, 6241this 6242means a read/modify/write when writing to the register. However, for 6243status 6244registers, writing a one means clear the event. Writing a zero means 6245preserve 6246the event (do not clear.) This behavior is clarified in the ACPI 4.0 6247spec, 6248and the ACPICA code now simply always writes a zero to the ignored bit. 6249 6250Modified the handling of ignored bits for the PM1 A/B Control Registers. 6251As 6252per the ACPI specification, for the control registers, preserve 6253(read/modify/write) all bits that are defined as either reserved or 6254ignored. 6255 6256Updated the handling of write-only bits in the PM1 A/B Control Registers. 6257When reading the register, zero the write-only bits as per the ACPI spec. 6258ACPICA BZ 443. Lin Ming. 6259 6260Removed "Linux" from the list of supported _OSI strings. Linux no longer 6261wants to reply true to this request. The Windows strings are the only 6262paths 6263through the AML that are tested and known to work properly. 6264 6265 Previous Release: 6266 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 6267 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 6268 Current Release: 6269 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6270 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6271 62722) iASL Compiler/Disassembler and Tools: 6273 6274Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 6275and 6276aetables.c 6277 6278---------------------------------------- 627920 February 2009. Summary of changes for version 20090220: 6280 62811) ACPI CA Core Subsystem: 6282 6283Optimized the ACPI register locking. Removed locking for reads from the 6284ACPI 6285bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 6286is 6287not required when reading the single-bit registers. The 6288AcpiGetRegisterUnlocked function is no longer needed and has been 6289removed. 6290This will improve performance for reads on these registers. ACPICA BZ 6291760. 6292 6293Fixed the parameter validation for AcpiRead/Write. Now return 6294AE_BAD_PARAMETER if the input register pointer is null, and 6295AE_BAD_ADDRESS 6296if 6297the register has an address of zero. Previously, these cases simply 6298returned 6299AE_OK. For optional registers such as PM1B status/enable/control, the 6300caller 6301should check for a valid register address before calling. ACPICA BZ 748. 6302 6303Renamed the external ACPI bit register access functions. Renamed 6304AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 6305functions. The new names are AcpiReadBitRegister and 6306AcpiWriteBitRegister. 6307Also, restructured the code for these functions by simplifying the code 6308path 6309and condensing duplicate code to reduce code size. 6310 6311Added new functions to transparently handle the possibly split PM1 A/B 6312registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 6313functions 6314now handle the split registers for PM1 Status, Enable, and Control. 6315ACPICA 6316BZ 6317746. 6318 6319Added a function to handle the PM1 control registers, 6320AcpiHwWritePm1Control. 6321This function writes both of the PM1 control registers (A/B). These 6322registers 6323are different than the PM1 A/B status and enable registers in that 6324different 6325values can be written to the A/B registers. Most notably, the SLP_TYP 6326bits 6327can be different, as per the values returned from the _Sx predefined 6328methods. 6329 6330Removed an extra register write within AcpiHwClearAcpiStatus. This 6331function 6332was writing an optional PM1B status register twice. The existing call to 6333the 6334low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 6335A/B 6336register. ACPICA BZ 751. 6337 6338Split out the PM1 Status registers from the FADT. Added new globals for 6339these 6340registers (A/B), similar to the way the PM1 Enable registers are handled. 6341Instead of overloading the FADT Event Register blocks. This makes the 6342code 6343clearer and less prone to error. 6344 6345Fixed the warning message for when the platform contains too many ACPI 6346tables 6347for the default size of the global root table data structure. The 6348calculation 6349for the truncation value was incorrect. 6350 6351Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 6352obsolete macro, since it is now a simple reference to ->common.type. 6353There 6354were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 6355 6356Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 6357TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 6358simply SLEEP_TYPE. ACPICA BZ 754. 6359 6360Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 6361function is only needed on 64-bit host operating systems and is thus not 6362included for 32-bit hosts. 6363 6364Debug output: print the input and result for invocations of the _OSI 6365reserved 6366control method via the ACPI_LV_INFO debug level. Also, reduced some of 6367the 6368verbosity of this debug level. Len Brown. 6369 6370Example Code and Data Size: These are the sizes for the OS-independent 6371acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6372debug version of the code includes the debug output trace mechanism and 6373has a 6374much larger code and data size. 6375 6376 Previous Release: 6377 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 6378 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 6379 Current Release: 6380 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 6381 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 6382 63832) iASL Compiler/Disassembler and Tools: 6384 6385Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 6386various legal performance profiles. 6387 6388---------------------------------------- 638923 January 2009. Summary of changes for version 20090123: 6390 63911) ACPI CA Core Subsystem: 6392 6393Added the 2009 copyright to all module headers and signons. This affects 6394virtually every file in the ACPICA core subsystem, the iASL compiler, and 6395the tools/utilities. 6396 6397Implemented a change to allow the host to override any ACPI table, 6398including 6399dynamically loaded tables. Previously, only the DSDT could be replaced by 6400the 6401host. With this change, the AcpiOsTableOverride interface is called for 6402each 6403table found in the RSDT/XSDT during ACPICA initialization, and also 6404whenever 6405a table is dynamically loaded via the AML Load operator. 6406 6407Updated FADT flag definitions, especially the Boot Architecture flags. 6408 6409Debugger: For the Find command, automatically pad the input ACPI name 6410with 6411underscores if the name is shorter than 4 characters. This enables a 6412match 6413with the actual namespace entry which is itself padded with underscores. 6414 6415Example Code and Data Size: These are the sizes for the OS-independent 6416acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6417debug version of the code includes the debug output trace mechanism and 6418has a 6419much larger code and data size. 6420 6421 Previous Release: 6422 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 6423 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 6424 Current Release: 6425 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 6426 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 6427 64282) iASL Compiler/Disassembler and Tools: 6429 6430Fix build error under Bison-2.4. 6431 6432Dissasembler: Enhanced FADT support. Added decoding of the Boot 6433Architecture 6434flags. Now decode all flags, regardless of the FADT version. Flag output 6435includes the FADT version which first defined each flag. 6436 6437The iASL -g option now dumps the RSDT to a file (in addition to the FADT 6438and 6439DSDT). Windows only. 6440 6441---------------------------------------- 644204 December 2008. Summary of changes for version 20081204: 6443 64441) ACPI CA Core Subsystem: 6445 6446The ACPICA Programmer Reference has been completely updated and revamped 6447for 6448this release. This includes updates to the external interfaces, OSL 6449interfaces, the overview sections, and the debugger reference. 6450 6451Several new ACPICA interfaces have been implemented and documented in the 6452programmer reference: 6453AcpiReset - Writes the reset value to the FADT-defined reset register. 6454AcpiDisableAllGpes - Disable all available GPEs. 6455AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 6456AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 6457AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 6458AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 6459AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 6460 6461Most of the public ACPI hardware-related interfaces have been moved to a 6462new 6463file, components/hardware/hwxface.c 6464 6465Enhanced the FADT parsing and low-level ACPI register access: The ACPI 6466register lengths within the FADT are now used, and the low level ACPI 6467register access no longer hardcodes the ACPI register lengths. Given that 6468there may be some risk in actually trusting the FADT register lengths, a 6469run- 6470time option was added to fall back to the default hardcoded lengths if 6471the 6472FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 6473option is set to true for now, and a warning is issued if a suspicious 6474FADT 6475register length is overridden with the default value. 6476 6477Fixed a reference count issue in NsRepairObject. This problem was 6478introduced 6479in version 20081031 as part of a fix to repair Buffer objects within 6480Packages. Lin Ming. 6481 6482Added semaphore support to the Linux/Unix application OS-services layer 6483(OSL). ACPICA BZ 448. Lin Ming. 6484 6485Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 6486will 6487be implemented in the OSL, or will binary semaphores be used instead. 6488 6489Example Code and Data Size: These are the sizes for the OS-independent 6490acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6491debug version of the code includes the debug output trace mechanism and 6492has a 6493much larger code and data size. 6494 6495 Previous Release: 6496 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6497 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6498 Current Release: 6499 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 6500 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 6501 65022) iASL Compiler/Disassembler and Tools: 6503 6504iASL: Completed the '-e' option to include additional ACPI tables in 6505order 6506to 6507aid with disassembly and External statement generation. ACPICA BZ 742. 6508Lin 6509Ming. 6510 6511iASL: Removed the "named object in while loop" error. The compiler cannot 6512determine how many times a loop will execute. ACPICA BZ 730. 6513 6514Disassembler: Implemented support for FADT revision 2 (MS extension). 6515ACPICA 6516BZ 743. 6517 6518Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 6519MCFG). 6520 6521---------------------------------------- 652231 October 2008. Summary of changes for version 20081031: 6523 65241) ACPI CA Core Subsystem: 6525 6526Restructured the ACPICA header files into public/private. acpi.h now 6527includes 6528only the "public" acpica headers. All other acpica headers are "private" 6529and 6530should not be included by acpica users. One new file, accommon.h is used 6531to 6532include the commonly used private headers for acpica code generation. 6533Future 6534plans include moving all private headers to a new subdirectory. 6535 6536Implemented an automatic Buffer->String return value conversion for 6537predefined ACPI methods. For these methods (such as _BIF), added 6538automatic 6539conversion for return objects that are required to be a String, but a 6540Buffer 6541was found instead. This can happen when reading string battery data from 6542an 6543operation region, because it used to be difficult to convert the data 6544from 6545buffer to string from within the ASL. Ensures that the host OS is 6546provided 6547with a valid null-terminated string. Linux BZ 11822. 6548 6549Updated the FACS waking vector interfaces. Split 6550AcpiSetFirmwareWakingVector 6551into two: one for the 32-bit vector, another for the 64-bit vector. This 6552is 6553required because the host OS must setup the wake much differently for 6554each 6555vector (real vs. protected mode, etc.) and the interface itself should 6556not 6557be 6558deciding which vector to use. Also, eliminated the 6559GetFirmwareWakingVector 6560interface, as it served no purpose (only the firmware reads the vector, 6561OS 6562only writes the vector.) ACPICA BZ 731. 6563 6564Implemented a mechanism to escape infinite AML While() loops. Added a 6565loop 6566counter to force exit from AML While loops if the count becomes too 6567large. 6568This can occur in poorly written AML when the hardware does not respond 6569within a while loop and the loop does not implement a timeout. The 6570maximum 6571loop count is configurable. A new exception code is returned when a loop 6572is 6573broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 6574 6575Optimized the execution of AML While loops. Previously, a control state 6576object was allocated and freed for each execution of the loop. The 6577optimization is to simply reuse the control state for each iteration. 6578This 6579speeds up the raw loop execution time by about 5%. 6580 6581Enhanced the implicit return mechanism. For Windows compatibility, return 6582an 6583implicit integer of value zero for methods that contain no executable 6584code. 6585Such methods are seen in the field as stubs (presumably), and can cause 6586drivers to fail if they expect a return value. Lin Ming. 6587 6588Allow multiple backslashes as root prefixes in namepaths. In a fully 6589qualified namepath, allow multiple backslash prefixes. This can happen 6590(and 6591is seen in the field) because of the use of a double-backslash in strings 6592(since backslash is the escape character) causing confusion. ACPICA BZ 6593739 6594Lin Ming. 6595 6596Emit a warning if two different FACS or DSDT tables are discovered in the 6597FADT. Checks if there are two valid but different addresses for the FACS 6598and 6599DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 6600 6601Consolidated the method argument count validation code. Merged the code 6602that 6603validates control method argument counts into the predefined validation 6604module. Eliminates possible multiple warnings for incorrect argument 6605counts. 6606 6607Implemented ACPICA example code. Includes code for ACPICA initialization, 6608handler installation, and calling a control method. Available at 6609source/tools/examples. 6610 6611Added a global pointer for FACS table to simplify internal FACS access. 6612Use 6613the global pointer instead of using AcpiGetTableByIndex for each FACS 6614access. 6615This simplifies the code for the Global Lock and the Firmware Waking 6616Vector(s). 6617 6618Example Code and Data Size: These are the sizes for the OS-independent 6619acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6620debug version of the code includes the debug output trace mechanism and 6621has a 6622much larger code and data size. 6623 6624 Previous Release: 6625 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 6626 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 6627 Current Release: 6628 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6629 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6630 66312) iASL Compiler/Disassembler and Tools: 6632 6633iASL: Improved disassembly of external method calls. Added the -e option 6634to 6635allow the inclusion of additional ACPI tables to help with the 6636disassembly 6637of 6638method invocations and the generation of external declarations during the 6639disassembly. Certain external method invocations cannot be disassembled 6640properly without the actual declaration of the method. Use the -e option 6641to 6642include the table where the external method(s) are actually declared. 6643Most 6644useful for disassembling SSDTs that make method calls back to the master 6645DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 6646-d 6647-e dsdt.aml ssdt1.aml 6648 6649iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 6650problem where the use of an alias within a namepath would result in a not 6651found error or cause the compiler to fault. Also now allows forward 6652references from the Alias operator itself. ACPICA BZ 738. 6653 6654---------------------------------------- 665526 September 2008. Summary of changes for version 20080926: 6656 66571) ACPI CA Core Subsystem: 6658 6659Designed and implemented a mechanism to validate predefined ACPI methods 6660and 6661objects. This code validates the predefined ACPI objects (objects whose 6662names 6663start with underscore) that appear in the namespace, at the time they are 6664evaluated. The argument count and the type of the returned object are 6665validated against the ACPI specification. The purpose of this validation 6666is 6667to detect problems with the BIOS-implemented predefined ACPI objects 6668before 6669the results are returned to the ACPI-related drivers. Future enhancements 6670may 6671include actual repair of incorrect return objects where possible. Two new 6672files are nspredef.c and acpredef.h. 6673 6674Fixed a fault in the AML parser if a memory allocation fails during the 6675Op 6676completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 6677 6678Fixed an issue with implicit return compatibility. This change improves 6679the 6680implicit return mechanism to be more compatible with the MS interpreter. 6681Lin 6682Ming, ACPICA BZ 349. 6683 6684Implemented support for zero-length buffer-to-string conversions. Allow 6685zero 6686length strings during interpreter buffer-to-string conversions. For 6687example, 6688during the ToDecimalString and ToHexString operators, as well as implicit 6689conversions. Fiodor Suietov, ACPICA BZ 585. 6690 6691Fixed two possible memory leaks in the error exit paths of 6692AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 6693are 6694similar in that they use a stack of state objects in order to eliminate 6695recursion. The stack must be fully unwound and deallocated if an error 6696occurs. Lin Ming. ACPICA BZ 383. 6697 6698Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 6699global 6700ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 6701Moore ACPICA BZ 442. 6702 6703Removed the obsolete version number in module headers. Removed the 6704"$Revision" number that appeared in each module header. This version 6705number 6706was useful under SourceSafe and CVS, but has no meaning under git. It is 6707not 6708only incorrect, it could also be misleading. 6709 6710Example Code and Data Size: These are the sizes for the OS-independent 6711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6712debug version of the code includes the debug output trace mechanism and 6713has a 6714much larger code and data size. 6715 6716 Previous Release: 6717 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6718 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6719 Current Release: 6720 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 6721 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 6722 6723---------------------------------------- 672429 August 2008. Summary of changes for version 20080829: 6725 67261) ACPI CA Core Subsystem: 6727 6728Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 6729Reference. Changes include the elimination of cheating on the Object 6730field 6731for the DdbHandle subtype, addition of a reference class field to 6732differentiate the various reference types (instead of an AML opcode), and 6733the 6734cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 6735 6736Reduce an error to a warning for an incorrect method argument count. 6737Previously aborted with an error if too few arguments were passed to a 6738control method via the external ACPICA interface. Now issue a warning 6739instead 6740and continue. Handles the case where the method inadvertently declares 6741too 6742many arguments, but does not actually use the extra ones. Applies mainly 6743to 6744the predefined methods. Lin Ming. Linux BZ 11032. 6745 6746Disallow the evaluation of named object types with no intrinsic value. 6747Return 6748AE_TYPE for objects that have no value and therefore evaluation is 6749undefined: 6750Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 6751of 6752these types were allowed, but an exception would be generated at some 6753point 6754during the evaluation. Now, the error is generated up front. 6755 6756Fixed a possible memory leak in the AcpiNsGetExternalPathname function 6757(nsnames.c). Fixes a leak in the error exit path. 6758 6759Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 6760debug 6761levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 6762ACPI_EXCEPTION 6763interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 6764ACPI_LV_EVENTS. 6765 6766Removed obsolete and/or unused exception codes from the acexcep.h header. 6767There is the possibility that certain device drivers may be affected if 6768they 6769use any of these exceptions. 6770 6771The ACPICA documentation has been added to the public git source tree, 6772under 6773acpica/documents. Included are the ACPICA programmer reference, the iASL 6774compiler reference, and the changes.txt release logfile. 6775 6776Example Code and Data Size: These are the sizes for the OS-independent 6777acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6778debug version of the code includes the debug output trace mechanism and 6779has a 6780much larger code and data size. 6781 6782 Previous Release: 6783 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6784 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6785 Current Release: 6786 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6787 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6788 67892) iASL Compiler/Disassembler and Tools: 6790 6791Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 6792defines _SCP with 3 arguments. Previous versions defined it with only 1 6793argument. iASL now allows both definitions. 6794 6795iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 6796zero- 6797length subtables when disassembling ACPI tables. Also fixed a couple of 6798errors where a full 16-bit table type field was not extracted from the 6799input 6800properly. 6801 6802acpisrc: Improve comment counting mechanism for generating source code 6803statistics. Count first and last lines of multi-line comments as 6804whitespace, 6805not comment lines. Handle Linux legal header in addition to standard 6806acpica 6807header. 6808 6809---------------------------------------- 6810 681129 July 2008. Summary of changes for version 20080729: 6812 68131) ACPI CA Core Subsystem: 6814 6815Fix a possible deadlock in the GPE dispatch. Remove call to 6816AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 6817attempt 6818to acquire the GPE lock but can deadlock since the GPE lock is already 6819held 6820at dispatch time. This code was introduced in version 20060831 as a 6821response 6822to Linux BZ 6881 and has since been removed from Linux. 6823 6824Add a function to dereference returned reference objects. Examines the 6825return 6826object from a call to AcpiEvaluateObject. Any Index or RefOf references 6827are 6828automatically dereferenced in an attempt to return something useful 6829(these 6830reference types cannot be converted into an external ACPI_OBJECT.) 6831Provides 6832MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 6833 6834x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 6835subtables for the MADT and one new subtable for the SRAT. Includes 6836disassembler and AcpiSrc support. Data from the Intel 64 Architecture 6837x2APIC 6838Specification, June 2008. 6839 6840Additional error checking for pathname utilities. Add error check after 6841all 6842calls to AcpiNsGetPathnameLength. Add status return from 6843AcpiNsBuildExternalPath and check after all calls. Add parameter 6844validation 6845to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 6846 6847Return status from the global init function AcpiUtGlobalInitialize. This 6848is 6849used by both the kernel subsystem and the utilities such as iASL 6850compiler. 6851The function could possibly fail when the caches are initialized. Yang 6852Yi. 6853 6854Add a function to decode reference object types to strings. Created for 6855improved error messages. 6856 6857Improve object conversion error messages. Better error messages during 6858object 6859conversion from internal to the external ACPI_OBJECT. Used for external 6860calls 6861to AcpiEvaluateObject. 6862 6863Example Code and Data Size: These are the sizes for the OS-independent 6864acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6865debug version of the code includes the debug output trace mechanism and 6866has a 6867much larger code and data size. 6868 6869 Previous Release: 6870 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 6871 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 6872 Current Release: 6873 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6874 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6875 68762) iASL Compiler/Disassembler and Tools: 6877 6878Debugger: fix a possible hang when evaluating non-methods. Fixes a 6879problem 6880introduced in version 20080701. If the object being evaluated (via 6881execute 6882command) is not a method, the debugger can hang while trying to obtain 6883non- 6884existent parameters. 6885 6886iASL: relax error for using reserved "_T_x" identifiers. These names can 6887appear in a disassembled ASL file if they were emitted by the original 6888compiler. Instead of issuing an error or warning and forcing the user to 6889manually change these names, issue a remark instead. 6890 6891iASL: error if named object created in while loop. Emit an error if any 6892named 6893object is created within a While loop. If allowed, this code will 6894generate 6895a 6896run-time error on the second iteration of the loop when an attempt is 6897made 6898to 6899create the same named object twice. ACPICA bugzilla 730. 6900 6901iASL: Support absolute pathnames for include files. Add support for 6902absolute 6903pathnames within the Include operator. previously, only relative 6904pathnames 6905were supported. 6906 6907iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 6908Descriptor. 6909The ACPI spec requires one interrupt minimum. BZ 423 6910 6911iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 6912Handles the case for the Interrupt Resource Descriptor where 6913the ResourceSource argument is omitted but ResourceSourceIndex 6914is present. Now leave room for the Index. BZ 426 6915 6916iASL: Prevent error message if CondRefOf target does not exist. Fixes 6917cases 6918where an error message is emitted if the target does not exist. BZ 516 6919 6920iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 6921(get ACPI tables on Windows). This was apparently broken in version 692220070919. 6923 6924AcpiXtract: Handle EOF while extracting data. Correctly handle the case 6925where 6926the EOF happens immediately after the last table in the input file. Print 6927completion message. Previously, no message was displayed in this case. 6928 6929---------------------------------------- 693001 July 2008. Summary of changes for version 20080701: 6931 69320) Git source tree / acpica.org 6933 6934Fixed a problem where a git-clone from http would not transfer the entire 6935source tree. 6936 69371) ACPI CA Core Subsystem: 6938 6939Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 6940enable bit. Now performs a read-change-write of the enable register 6941instead 6942of simply writing out the cached enable mask. This will prevent 6943inadvertent 6944enabling of GPEs if a rogue GPE is received during initialization (before 6945GPE 6946handlers are installed.) 6947 6948Implemented a copy for dynamically loaded tables. Previously, dynamically 6949loaded tables were simply mapped - but on some machines this memory is 6950corrupted after suspend. Now copy the table to a local buffer. For the 6951OpRegion case, added checksum verify. Use the table length from the table 6952header, not the region length. For the Buffer case, use the table length 6953also. Dennis Noordsij, Bob Moore. BZ 10734 6954 6955Fixed a problem where the same ACPI table could not be dynamically loaded 6956and 6957unloaded more than once. Without this change, a table cannot be loaded 6958again 6959once it has been loaded/unloaded one time. The current mechanism does not 6960unregister a table upon an unload. During a load, if the same table is 6961found, 6962this no longer returns an exception. BZ 722 6963 6964Fixed a problem where the wrong descriptor length was calculated for the 6965EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 6966EndTag 6967are calculated as 12 bytes long, but the actual length in the internal 6968descriptor is 16 because of the round-up to 8 on the 64-bit build. 6969Reported 6970by Linn Crosetto. BZ 728 6971 6972Fixed a possible memory leak in the Unload operator. The DdbHandle 6973returned 6974by Load() did not have its reference count decremented during unload, 6975leading 6976to a memory leak. Lin Ming. BZ 727 6977 6978Fixed a possible memory leak when deleting thermal/processor objects. Any 6979associated notify handlers (and objects) were not being deleted. Fiodor 6980Suietov. BZ 506 6981 6982Fixed the ordering of the ASCII names in the global mutex table to match 6983the 6984actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 6985only. 6986Vegard Nossum. BZ 726 6987 6988Enhanced the AcpiGetObjectInfo interface to return the number of required 6989arguments if the object is a control method. Added this call to the 6990debugger 6991so the proper number of default arguments are passed to a method. This 6992prevents a warning when executing methods from AcpiExec. 6993 6994Added a check for an invalid handle in AcpiGetObjectInfo. Return 6995AE_BAD_PARAMETER if input handle is invalid. BZ 474 6996 6997Fixed an extraneous warning from exconfig.c on the 64-bit build. 6998 6999Example Code and Data Size: These are the sizes for the OS-independent 7000acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7001debug version of the code includes the debug output trace mechanism and 7002has a 7003much larger code and data size. 7004 7005 Previous Release: 7006 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7007 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7008 Current Release: 7009 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7010 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7011 70122) iASL Compiler/Disassembler and Tools: 7013 7014iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 7015resource descriptor names. 7016 7017iASL: Detect invalid ASCII characters in input (windows version). Removed 7018the 7019"-CF" flag from the flex compile, enables correct detection of non-ASCII 7020characters in the input. BZ 441 7021 7022iASL: Eliminate warning when result of LoadTable is not used. Eliminate 7023the 7024"result of operation not used" warning when the DDB handle returned from 7025LoadTable is not used. The warning is not needed. BZ 590 7026 7027AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 7028method 7029to 7030pass address of table to the AML. Added option to disable OpRegion 7031simulation 7032to allow creation of an OpRegion with a real address that was passed to 7033_CFG. 7034All of this allows testing of the Load and Unload operators from 7035AcpiExec. 7036 7037Debugger: update tables command for unloaded tables. Handle unloaded 7038tables 7039and use the standard table header output routine. 7040 7041---------------------------------------- 704209 June 2008. Summary of changes for version 20080609: 7043 70441) ACPI CA Core Subsystem: 7045 7046Implemented a workaround for reversed _PRT entries. A significant number 7047of 7048BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 7049change dynamically detects and repairs this problem. Provides 7050compatibility 7051with MS ACPI. BZ 6859 7052 7053Simplified the internal ACPI hardware interfaces to eliminate the locking 7054flag parameter from Register Read/Write. Added a new external interface, 7055AcpiGetRegisterUnlocked. 7056 7057Fixed a problem where the invocation of a GPE control method could hang. 7058This 7059was a regression introduced in 20080514. The new method argument count 7060validation mechanism can enter an infinite loop when a GPE method is 7061dispatched. Problem fixed by removing the obsolete code that passed GPE 7062block 7063information to the notify handler via the control method parameter 7064pointer. 7065 7066Fixed a problem where the _SST execution status was incorrectly returned 7067to 7068the caller of AcpiEnterSleepStatePrep. This was a regression introduced 7069in 707020080514. _SST is optional and a NOT_FOUND exception should never be 7071returned. BZ 716 7072 7073Fixed a problem where a deleted object could be accessed from within the 7074AML 7075parser. This was a regression introduced in version 20080123 as a fix for 7076the 7077Unload operator. Lin Ming. BZ 10669 7078 7079Cleaned up the debug operand dump mechanism. Eliminated unnecessary 7080operands 7081and eliminated the use of a negative index in a loop. Operands are now 7082displayed in the correct order, not backwards. This also fixes a 7083regression 7084introduced in 20080514 on 64-bit systems where the elimination of 7085ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 7086715 7087 7088Fixed a possible memory leak in EvPciConfigRegionSetup where the error 7089exit 7090path did not delete a locally allocated structure. 7091 7092Updated definitions for the DMAR and SRAT tables to synchronize with the 7093current specifications. Includes disassembler support. 7094 7095Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 7096loop termination value was used. Loop terminated on iteration early, 7097missing 7098one mutex. Linn Crosetto 7099 7100Example Code and Data Size: These are the sizes for the OS-independent 7101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7102debug version of the code includes the debug output trace mechanism and 7103has a 7104much larger code and data size. 7105 7106 Previous Release: 7107 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7108 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7109 Current Release: 7110 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7111 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7112 71132) iASL Compiler/Disassembler and Tools: 7114 7115Disassembler: Implemented support for EisaId() within _CID objects. Now 7116disassemble integer _CID objects back to EisaId invocations, including 7117multiple integers within _CID packages. Includes single-step support for 7118debugger also. 7119 7120Disassembler: Added support for DMAR and SRAT table definition changes. 7121 7122---------------------------------------- 712314 May 2008. Summary of changes for version 20080514: 7124 71251) ACPI CA Core Subsystem: 7126 7127Fixed a problem where GPEs were enabled too early during the ACPICA 7128initialization. This could lead to "handler not installed" errors on some 7129machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 7130This 7131ensures that all operation regions and devices throughout the namespace 7132have 7133been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 7134 7135Implemented a change to the enter sleep code. Moved execution of the _GTS 7136method to just before setting sleep enable bit. The execution was moved 7137from 7138AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 7139immediately before the SLP_EN bit is set, as per the ACPI specification. 7140Luming Yu, BZ 1653. 7141 7142Implemented a fix to disable unknown GPEs (2nd version). Now always 7143disable 7144the GPE, even if ACPICA thinks that that it is already disabled. It is 7145possible that the AML or some other code has enabled the GPE unbeknownst 7146to 7147the ACPICA code. 7148 7149Fixed a problem with the Field operator where zero-length fields would 7150return 7151an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 7152ASL 7153field declarations in Field(), BankField(), and IndexField(). BZ 10606. 7154 7155Implemented a fix for the Load operator, now load the table at the 7156namespace 7157root. This reverts a change introduced in version 20071019. The table is 7158now 7159loaded at the namespace root even though this goes against the ACPI 7160specification. This provides compatibility with other ACPI 7161implementations. 7162The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 7163Ming. 7164 7165Fixed a problem where ACPICA would not Load() tables with unusual 7166signatures. 7167Now ignore ACPI table signature for Load() operator. Only "SSDT" is 7168acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 7169Therefore, signature validation is worthless. Apparently MS ACPI accepts 7170such 7171signatures, ACPICA must be compatible. BZ 10454. 7172 7173Fixed a possible negative array index in AcpiUtValidateException. Added 7174NULL 7175fields to the exception string arrays to eliminate a -1 subtraction on 7176the 7177SubStatus field. 7178 7179Updated the debug tracking macros to reduce overall code and data size. 7180Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 7181instead of pointers to static strings. Jan Beulich and Bob Moore. 7182 7183Implemented argument count checking in control method invocation via 7184AcpiEvaluateObject. Now emit an error if too few arguments, warning if 7185too 7186many. This applies only to extern programmatic control method execution, 7187not 7188method-to-method calls within the AML. Lin Ming. 7189 7190Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 7191no 7192longer needed, especially with the removal of 16-bit support. It was 7193replaced 7194mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 7195bit 7196on 719732/64-bit platforms is required. 7198 7199Added the C const qualifier for appropriate string constants -- mostly 7200MODULE_NAME and printf format strings. Jan Beulich. 7201 7202Example Code and Data Size: These are the sizes for the OS-independent 7203acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7204debug version of the code includes the debug output trace mechanism and 7205has a 7206much larger code and data size. 7207 7208 Previous Release: 7209 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7210 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7211 Current Release: 7212 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7213 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7214 72152) iASL Compiler/Disassembler and Tools: 7216 7217Implemented ACPI table revision ID validation in the disassembler. Zero 7218is 7219always invalid. For DSDTs, the ID controls the interpreter integer width. 72201 7221means 32-bit and this is unusual. 2 or greater is 64-bit. 7222 7223---------------------------------------- 722421 March 2008. Summary of changes for version 20080321: 7225 72261) ACPI CA Core Subsystem: 7227 7228Implemented an additional change to the GPE support in order to suppress 7229spurious or stray GPEs. The AcpiEvDisableGpe function will now 7230permanently 7231disable incoming GPEs that are neither enabled nor disabled -- meaning 7232that 7233the GPE is unknown to the system. This should prevent future interrupt 7234floods 7235from that GPE. BZ 6217 (Zhang Rui) 7236 7237Fixed a problem where NULL package elements were not returned to the 7238AcpiEvaluateObject interface correctly. The element was simply ignored 7239instead of returning a NULL ACPI_OBJECT package element, potentially 7240causing 7241a buffer overflow and/or confusing the caller who expected a fixed number 7242of 7243elements. BZ 10132 (Lin Ming, Bob Moore) 7244 7245Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 7246Dword, 7247Qword), Field, BankField, and IndexField operators when invoked from 7248inside 7249an executing control method. In this case, these operators created 7250namespace 7251nodes that were incorrectly left marked as permanent nodes instead of 7252temporary nodes. This could cause a problem if there is race condition 7253between an exiting control method and a running namespace walk. (Reported 7254by 7255Linn Crosetto) 7256 7257Fixed a problem where the CreateField and CreateXXXField operators would 7258incorrectly allow duplicate names (the name of the field) with no 7259exception 7260generated. 7261 7262Implemented several changes for Notify handling. Added support for new 7263Notify 7264values (ACPI 2.0+) and improved the Notify debug output. Notify on 7265PowerResource objects is no longer allowed, as per the ACPI 7266specification. 7267(Bob Moore, Zhang Rui) 7268 7269All Reference Objects returned via the AcpiEvaluateObject interface are 7270now 7271marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 7272for 7273NULL objects - either NULL package elements or unresolved named 7274references. 7275 7276Fixed a problem where an extraneous debug message was produced for 7277package 7278objects (when debugging enabled). The message "Package List length larger 7279than NumElements count" is now produced in the correct case, and is now 7280an 7281error message rather than a debug message. Added a debug message for the 7282opposite case, where NumElements is larger than the Package List (the 7283package 7284will be padded out with NULL elements as per the ACPI spec.) 7285 7286Implemented several improvements for the output of the ASL "Debug" object 7287to 7288clarify and keep all data for a given object on one output line. 7289 7290Fixed two size calculation issues with the variable-length Start 7291Dependent 7292resource descriptor. 7293 7294Example Code and Data Size: These are the sizes for the OS-independent 7295acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7296debug version of the code includes the debug output trace mechanism and 7297has 7298a much larger code and data size. 7299 7300 Previous Release: 7301 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 7302 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 7303 Current Release: 7304 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7305 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7306 73072) iASL Compiler/Disassembler and Tools: 7308 7309Fixed a problem with the use of the Switch operator where execution of 7310the 7311containing method by multiple concurrent threads could cause an 7312AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 7313actual Switch opcode, it must be simulated with local named temporary 7314variables and if/else pairs. The solution chosen was to mark any method 7315that 7316uses Switch as Serialized, thus preventing multiple thread entries. BZ 7317469. 7318 7319---------------------------------------- 732013 February 2008. Summary of changes for version 20080213: 7321 73221) ACPI CA Core Subsystem: 7323 7324Implemented another MS compatibility design change for GPE/Notify 7325handling. 7326GPEs are now cleared/enabled asynchronously to allow all pending notifies 7327to 7328complete first. It is expected that the OSL will queue the enable request 7329behind all pending notify requests (may require changes to the local host 7330OSL 7331in AcpiOsExecute). Alexey Starikovskiy. 7332 7333Fixed a problem where buffer and package objects passed as arguments to a 7334control method via the external AcpiEvaluateObject interface could cause 7335an 7336AE_AML_INTERNAL exception depending on the order and type of operators 7337executed by the target control method. 7338 7339Fixed a problem where resource descriptor size optimization could cause a 7340problem when a _CRS resource template is passed to a _SRS method. The 7341_SRS 7342resource template must use the same descriptors (with the same size) as 7343returned from _CRS. This change affects the following resource 7344descriptors: 7345IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 73469487) 7347 7348Fixed a problem where a CopyObject to RegionField, BankField, and 7349IndexField 7350objects did not perform an implicit conversion as it should. These types 7351must 7352retain their initial type permanently as per the ACPI specification. 7353However, 7354a CopyObject to all other object types should not perform an implicit 7355conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 7356 7357Fixed a problem with the AcpiGetDevices interface where the mechanism to 7358match device CIDs did not examine the entire list of available CIDs, but 7359instead aborted on the first non-matching CID. Andrew Patterson. 7360 7361Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 7362was 7363inadvertently changed to return a 16-bit value instead of a 32-bit value, 7364truncating the upper dword of a 64-bit value. This macro is only used to 7365display debug output, so no incorrect calculations were made. Also, 7366reimplemented the macro so that a 64-bit shift is not performed by 7367inefficient compilers. 7368 7369Added missing va_end statements that should correspond with each va_start 7370statement. 7371 7372Example Code and Data Size: These are the sizes for the OS-independent 7373acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7374debug version of the code includes the debug output trace mechanism and 7375has 7376a much larger code and data size. 7377 7378 Previous Release: 7379 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 7380 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 7381 Current Release: 7382 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 7383 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 7384 73852) iASL Compiler/Disassembler and Tools: 7386 7387Implemented full disassembler support for the following new ACPI tables: 7388BERT, EINJ, and ERST. Implemented partial disassembler support for the 7389complicated HEST table. These tables support the Windows Hardware Error 7390Architecture (WHEA). 7391 7392---------------------------------------- 739323 January 2008. Summary of changes for version 20080123: 7394 73951) ACPI CA Core Subsystem: 7396 7397Added the 2008 copyright to all module headers and signons. This affects 7398virtually every file in the ACPICA core subsystem, the iASL compiler, and 7399the tools/utilities. 7400 7401Fixed a problem with the SizeOf operator when used with Package and 7402Buffer 7403objects. These objects have deferred execution for some arguments, and 7404the 7405execution is now completed before the SizeOf is executed. This problem 7406caused 7407unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 7408BZ 74099558 7410 7411Implemented an enhancement to the interpreter "slack mode". In the 7412absence 7413of 7414an explicit return or an implicitly returned object from the last 7415executed 7416opcode, a control method will now implicitly return an integer of value 0 7417for 7418Microsoft compatibility. (Lin Ming) BZ 392 7419 7420Fixed a problem with the Load operator where an exception was not 7421returned 7422in 7423the case where the table is already loaded. (Lin Ming) BZ 463 7424 7425Implemented support for the use of DDBHandles as an Indexed Reference, as 7426per 7427the ACPI spec. (Lin Ming) BZ 486 7428 7429Implemented support for UserTerm (Method invocation) for the Unload 7430operator 7431as per the ACPI spec. (Lin Ming) BZ 580 7432 7433Fixed a problem with the LoadTable operator where the OemId and 7434OemTableId 7435input strings could cause unexpected failures if they were shorter than 7436the 7437maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 7438 7439Implemented support for UserTerm (Method invocation) for the Unload 7440operator 7441as per the ACPI spec. (Lin Ming) BZ 580 7442 7443Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 7444HEST, 7445IBFT, UEFI, WDAT. Disassembler support is forthcoming. 7446 7447Example Code and Data Size: These are the sizes for the OS-independent 7448acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7449debug version of the code includes the debug output trace mechanism and 7450has 7451a much larger code and data size. 7452 7453 Previous Release: 7454 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7455 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7456 Current Release: 7457 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 7458 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 7459 74602) iASL Compiler/Disassembler and Tools: 7461 7462Implemented support in the disassembler for checksum validation on 7463incoming 7464binary DSDTs and SSDTs. If incorrect, a message is displayed within the 7465table 7466header dump at the start of the disassembly. 7467 7468Implemented additional debugging information in the namespace listing 7469file 7470created during compilation. In addition to the namespace hierarchy, the 7471full 7472pathname to each namespace object is displayed. 7473 7474Fixed a problem with the disassembler where invalid ACPI tables could 7475cause 7476faults or infinite loops. 7477 7478Fixed an unexpected parse error when using the optional "parameter types" 7479list in a control method declaration. (Lin Ming) BZ 397 7480 7481Fixed a problem where two External declarations with the same name did 7482not 7483cause an error (Lin Ming) BZ 509 7484 7485Implemented support for full TermArgs (adding Argx, Localx and method 7486invocation) for the ParameterData parameter to the LoadTable operator. 7487(Lin 7488Ming) BZ 583,587 7489 7490---------------------------------------- 749119 December 2007. Summary of changes for version 20071219: 7492 74931) ACPI CA Core Subsystem: 7494 7495Implemented full support for deferred execution for the TermArg string 7496arguments for DataTableRegion. This enables forward references and full 7497operand resolution for the three string arguments. Similar to 7498OperationRegion 7499deferred argument execution.) Lin Ming. BZ 430 7500 7501Implemented full argument resolution support for the BankValue argument 7502to 7503BankField. Previously, only constants were supported, now any TermArg may 7504be 7505used. Lin Ming BZ 387, 393 7506 7507Fixed a problem with AcpiGetDevices where the search of a branch of the 7508device tree could be terminated prematurely. In accordance with the ACPI 7509specification, the search down the current branch is terminated if a 7510device 7511is both not present and not functional (instead of just not present.) 7512Yakui 7513Zhao. 7514 7515Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 7516if 7517the underlying AML code changed the GPE enable registers. Now, any 7518unknown 7519incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 7520disabled 7521instead of simply ignored. Rui Zhang. 7522 7523Fixed a problem with Index Fields where the Index register was 7524incorrectly 7525limited to a maximum of 32 bits. Now any size may be used. 7526 7527Fixed a couple memory leaks associated with "implicit return" objects 7528when 7529the AML Interpreter slack mode is enabled. Lin Ming BZ 349 7530 7531Example Code and Data Size: These are the sizes for the OS-independent 7532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7533debug version of the code includes the debug output trace mechanism and 7534has 7535a much larger code and data size. 7536 7537 Previous Release: 7538 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7539 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7540 Current Release: 7541 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7542 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7543 7544---------------------------------------- 754514 November 2007. Summary of changes for version 20071114: 7546 75471) ACPI CA Core Subsystem: 7548 7549Implemented event counters for each of the Fixed Events, the ACPI SCI 7550(interrupt) itself, and control methods executed. Named 7551AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 7552These 7553should be useful for debugging and statistics. 7554 7555Implemented a new external interface, AcpiGetStatistics, to retrieve the 7556contents of the various event counters. Returns the current values for 7557AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 7558AcpiMethodCount. The interface can be expanded in the future if new 7559counters 7560are added. Device drivers should use this interface rather than access 7561the 7562counters directly. 7563 7564Fixed a problem with the FromBCD and ToBCD operators. With some 7565compilers, 7566the ShortDivide function worked incorrectly, causing problems with the 7567BCD 7568functions with large input values. A truncation from 64-bit to 32-bit 7569inadvertently occurred. Internal BZ 435. Lin Ming 7570 7571Fixed a problem with Index references passed as method arguments. 7572References 7573passed as arguments to control methods were dereferenced immediately 7574(before 7575control was passed to the called method). The references are now 7576correctly 7577passed directly to the called method. BZ 5389. Lin Ming 7578 7579Fixed a problem with CopyObject used in conjunction with the Index 7580operator. 7581The reference was incorrectly dereferenced before the copy. The reference 7582is 7583now correctly copied. BZ 5391. Lin Ming 7584 7585Fixed a problem with Control Method references within Package objects. 7586These 7587references are now correctly generated. This completes the package 7588construction overhaul that began in version 20071019. 7589 7590Example Code and Data Size: These are the sizes for the OS-independent 7591acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7592debug version of the code includes the debug output trace mechanism and 7593has 7594a much larger code and data size. 7595 7596 Previous Release: 7597 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 7598 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 7599 Current Release: 7600 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7601 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7602 7603 76042) iASL Compiler/Disassembler and Tools: 7605 7606The AcpiExec utility now installs handlers for all of the predefined 7607Operation Region types. New types supported are: PCI_Config, CMOS, and 7608PCIBARTarget. 7609 7610Fixed a problem with the 64-bit version of AcpiExec where the extended 7611(64- 7612bit) address fields for the DSDT and FACS within the FADT were not being 7613used, causing truncation of the upper 32-bits of these addresses. Lin 7614Ming 7615and Bob Moore 7616 7617---------------------------------------- 761819 October 2007. Summary of changes for version 20071019: 7619 76201) ACPI CA Core Subsystem: 7621 7622Fixed a problem with the Alias operator when the target of the alias is a 7623named ASL operator that opens a new scope -- Scope, Device, 7624PowerResource, 7625Processor, and ThermalZone. In these cases, any children of the original 7626operator could not be accessed via the alias, potentially causing 7627unexpected 7628AE_NOT_FOUND exceptions. (BZ 9067) 7629 7630Fixed a problem with the Package operator where all named references were 7631created as object references and left otherwise unresolved. According to 7632the 7633ACPI specification, a Package can only contain Data Objects or references 7634to 7635control methods. The implication is that named references to Data Objects 7636(Integer, Buffer, String, Package, BufferField, Field) should be resolved 7637immediately upon package creation. This is the approach taken with this 7638change. References to all other named objects (Methods, Devices, Scopes, 7639etc.) are all now properly created as reference objects. (BZ 5328) 7640 7641Reverted a change to Notify handling that was introduced in version 764220070508. This version changed the Notify handling from asynchronous to 7643fully synchronous (Device driver Notify handling with respect to the 7644Notify 7645ASL operator). It was found that this change caused more problems than it 7646solved and was removed by most users. 7647 7648Fixed a problem with the Increment and Decrement operators where the type 7649of 7650the target object could be unexpectedly and incorrectly changed. (BZ 353) 7651Lin Ming. 7652 7653Fixed a problem with the Load and LoadTable operators where the table 7654location within the namespace was ignored. Instead, the table was always 7655loaded into the root or current scope. Lin Ming. 7656 7657Fixed a problem with the Load operator when loading a table from a buffer 7658object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 7659 7660Fixed a problem with the Debug object where a store of a DdbHandle 7661reference 7662object to the Debug object could cause a fault. 7663 7664Added a table checksum verification for the Load operator, in the case 7665where 7666the load is from a buffer. (BZ 578). 7667 7668Implemented additional parameter validation for the LoadTable operator. 7669The 7670length of the input strings SignatureString, OemIdString, and OemTableId 7671are 7672now checked for maximum lengths. (BZ 582) Lin Ming. 7673 7674Example Code and Data Size: These are the sizes for the OS-independent 7675acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7676debug version of the code includes the debug output trace mechanism and 7677has 7678a much larger code and data size. 7679 7680 Previous Release: 7681 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 7682 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 7683 Current Release: 7684 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 7685 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 7686 7687 76882) iASL Compiler/Disassembler: 7689 7690Fixed a problem where if a single file was specified and the file did not 7691exist, no error message was emitted. (Introduced with wildcard support in 7692version 20070917.) 7693 7694---------------------------------------- 769519 September 2007. Summary of changes for version 20070919: 7696 76971) ACPI CA Core Subsystem: 7698 7699Designed and implemented new external interfaces to install and remove 7700handlers for ACPI table-related events. Current events that are defined 7701are 7702LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 7703they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 7704AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 7705 7706Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 7707(acpi_serialized option on Linux) could cause some systems to hang during 7708initialization. (Bob Moore) BZ 8171 7709 7710Fixed a problem where objects of certain types (Device, ThermalZone, 7711Processor, PowerResource) can be not found if they are declared and 7712referenced from within the same control method (Lin Ming) BZ 341 7713 7714Example Code and Data Size: These are the sizes for the OS-independent 7715acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7716debug version of the code includes the debug output trace mechanism and 7717has 7718a much larger code and data size. 7719 7720 Previous Release: 7721 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7722 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7723 Current Release: 7724 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 7725 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 7726 7727 77282) iASL Compiler/Disassembler: 7729 7730Implemented support to allow multiple files to be compiled/disassembled 7731in 7732a 7733single invocation. This includes command line wildcard support for both 7734the 7735Windows and Unix versions of the compiler. This feature simplifies the 7736disassembly and compilation of multiple ACPI tables in a single 7737directory. 7738 7739---------------------------------------- 774008 May 2007. Summary of changes for version 20070508: 7741 77421) ACPI CA Core Subsystem: 7743 7744Implemented a Microsoft compatibility design change for the handling of 7745the 7746Notify AML operator. Previously, notify handlers were dispatched and 7747executed completely asynchronously in a deferred thread. The new design 7748still executes the notify handlers in a different thread, but the 7749original 7750thread that executed the Notify() now waits at a synchronization point 7751for 7752the notify handler to complete. Some machines depend on a synchronous 7753Notify 7754operator in order to operate correctly. 7755 7756Implemented support to allow Package objects to be passed as method 7757arguments to the external AcpiEvaluateObject interface. Previously, this 7758would return the AE_NOT_IMPLEMENTED exception. This feature had not been 7759implemented since there were no reserved control methods that required it 7760until recently. 7761 7762Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 7763that 7764contained invalid non-zero values in reserved fields could cause later 7765failures because these fields have meaning in later revisions of the 7766FADT. 7767For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 7768fields 7769are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 7770 7771Fixed a problem where the Global Lock handle was not properly updated if 7772a 7773thread that acquired the Global Lock via executing AML code then 7774attempted 7775to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 7776Joe 7777Liu. 7778 7779Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 7780could be corrupted if the interrupt being removed was at the head of the 7781list. Reported by Linn Crosetto. 7782 7783Example Code and Data Size: These are the sizes for the OS-independent 7784acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7785debug version of the code includes the debug output trace mechanism and 7786has 7787a much larger code and data size. 7788 7789 Previous Release: 7790 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7791 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7792 Current Release: 7793 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7794 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7795 7796---------------------------------------- 779720 March 2007. Summary of changes for version 20070320: 7798 77991) ACPI CA Core Subsystem: 7800 7801Implemented a change to the order of interpretation and evaluation of AML 7802operand objects within the AML interpreter. The interpreter now evaluates 7803operands in the order that they appear in the AML stream (and the 7804corresponding ASL code), instead of in the reverse order (after the 7805entire 7806operand list has been parsed). The previous behavior caused several 7807subtle 7808incompatibilities with the Microsoft AML interpreter as well as being 7809somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 7810 7811Implemented a change to the ACPI Global Lock support. All interfaces to 7812the 7813global lock now allow the same thread to acquire the lock multiple times. 7814This affects the AcpiAcquireGlobalLock external interface to the global 7815lock 7816as well as the internal use of the global lock to support AML fields -- a 7817control method that is holding the global lock can now simultaneously 7818access 7819AML fields that require global lock protection. Previously, in both 7820cases, 7821this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 7822to 7823AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 7824Controller. There is no change to the behavior of the AML Acquire 7825operator, 7826as this can already be used to acquire a mutex multiple times by the same 7827thread. BZ 8066. With assistance from Alexey Starikovskiy. 7828 7829Fixed a problem where invalid objects could be referenced in the AML 7830Interpreter after error conditions. During operand evaluation, ensure 7831that 7832the internal "Return Object" field is cleared on error and only valid 7833pointers are stored there. Caused occasional access to deleted objects 7834that 7835resulted in "large reference count" warning messages. Valery Podrezov. 7836 7837Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 7838on 7839deeply nested control method invocations. BZ 7873, local BZ 487. Valery 7840Podrezov. 7841 7842Fixed an internal problem with the handling of result objects on the 7843interpreter result stack. BZ 7872. Valery Podrezov. 7844 7845Removed obsolete code that handled the case where AML_NAME_OP is the 7846target 7847of a reference (Reference.Opcode). This code was no longer necessary. BZ 78487874. Valery Podrezov. 7849 7850Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 7851was 7852a 7853remnant from the previously discontinued 16-bit support. 7854 7855Example Code and Data Size: These are the sizes for the OS-independent 7856acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7857debug version of the code includes the debug output trace mechanism and 7858has 7859a much larger code and data size. 7860 7861 Previous Release: 7862 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7863 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7864 Current Release: 7865 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7866 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7867 7868---------------------------------------- 786926 January 2007. Summary of changes for version 20070126: 7870 78711) ACPI CA Core Subsystem: 7872 7873Added the 2007 copyright to all module headers and signons. This affects 7874virtually every file in the ACPICA core subsystem, the iASL compiler, and 7875the utilities. 7876 7877Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 7878during a table load. A bad pointer was passed in the case where the DSDT 7879is 7880overridden, causing a fault in this case. 7881 7882Example Code and Data Size: These are the sizes for the OS-independent 7883acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7884debug version of the code includes the debug output trace mechanism and 7885has 7886a much larger code and data size. 7887 7888 Previous Release: 7889 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7890 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7891 Current Release: 7892 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7893 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7894 7895---------------------------------------- 789615 December 2006. Summary of changes for version 20061215: 7897 78981) ACPI CA Core Subsystem: 7899 7900Support for 16-bit ACPICA has been completely removed since it is no 7901longer 7902necessary and it clutters the code. All 16-bit macros, types, and 7903conditional compiles have been removed, cleaning up and simplifying the 7904code 7905across the entire subsystem. DOS support is no longer needed since the 7906bootable Linux firmware kit is now available. 7907 7908The handler for the Global Lock is now removed during AcpiTerminate to 7909enable a clean subsystem restart, via the implementation of the 7910AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 7911HP) 7912 7913Implemented enhancements to the multithreading support within the 7914debugger 7915to enable improved multithreading debugging and evaluation of the 7916subsystem. 7917(Valery Podrezov) 7918 7919Debugger: Enhanced the Statistics/Memory command to emit the total 7920(maximum) 7921memory used during the execution, as well as the maximum memory consumed 7922by 7923each of the various object types. (Valery Podrezov) 7924 7925Example Code and Data Size: These are the sizes for the OS-independent 7926acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7927debug version of the code includes the debug output trace mechanism and 7928has 7929a much larger code and data size. 7930 7931 Previous Release: 7932 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 7933 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 7934 Current Release: 7935 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7936 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7937 7938 79392) iASL Compiler/Disassembler and Tools: 7940 7941AcpiExec: Implemented a new option (-m) to display full memory use 7942statistics upon subsystem/program termination. (Valery Podrezov) 7943 7944---------------------------------------- 794509 November 2006. Summary of changes for version 20061109: 7946 79471) ACPI CA Core Subsystem: 7948 7949Optimized the Load ASL operator in the case where the source operand is 7950an 7951operation region. Simply map the operation region memory, instead of 7952performing a bytewise read. (Region must be of type SystemMemory, see 7953below.) 7954 7955Fixed the Load ASL operator for the case where the source operand is a 7956region field. A buffer object is also allowed as the source operand. BZ 7957480 7958 7959Fixed a problem where the Load ASL operator allowed the source operand to 7960be 7961an operation region of any type. It is now restricted to regions of type 7962SystemMemory, as per the ACPI specification. BZ 481 7963 7964Additional cleanup and optimizations for the new Table Manager code. 7965 7966AcpiEnable will now fail if all of the required ACPI tables are not 7967loaded 7968(FADT, FACS, DSDT). BZ 477 7969 7970Added #pragma pack(8/4) to acobject.h to ensure that the structures in 7971this 7972header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 7973manually optimized to be aligned and will not work if it is byte-packed. 7974 7975Example Code and Data Size: These are the sizes for the OS-independent 7976acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7977debug version of the code includes the debug output trace mechanism and 7978has 7979a much larger code and data size. 7980 7981 Previous Release: 7982 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 7983 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 7984 Current Release: 7985 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 7986 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 7987 7988 79892) iASL Compiler/Disassembler and Tools: 7990 7991Fixed a problem where the presence of the _OSI predefined control method 7992within complex expressions could cause an internal compiler error. 7993 7994AcpiExec: Implemented full region support for multiple address spaces. 7995SpaceId is now part of the REGION object. BZ 429 7996 7997---------------------------------------- 799811 October 2006. Summary of changes for version 20061011: 7999 80001) ACPI CA Core Subsystem: 8001 8002Completed an AML interpreter performance enhancement for control method 8003execution. Previously a 2-pass parse/execution, control methods are now 8004completely parsed and executed in a single pass. This improves overall 8005interpreter performance by ~25%, reduces code size, and reduces CPU stack 8006use. (Valery Podrezov + interpreter changes in version 20051202 that 8007eliminated namespace loading during the pass one parse.) 8008 8009Implemented _CID support for PCI Root Bridge detection. If the _HID does 8010not 8011match the predefined PCI Root Bridge IDs, the _CID list (if present) is 8012now 8013obtained and also checked for an ID match. 8014 8015Implemented additional support for the PCI _ADR execution: upsearch until 8016a 8017device scope is found before executing _ADR. This allows PCI_Config 8018operation regions to be declared locally within control methods 8019underneath 8020PCI device objects. 8021 8022Fixed a problem with a possible race condition between threads executing 8023AcpiWalkNamespace and the AML interpreter. This condition was removed by 8024modifying AcpiWalkNamespace to (by default) ignore all temporary 8025namespace 8026entries created during any concurrent control method execution. An 8027additional namespace race condition is known to exist between 8028AcpiWalkNamespace and the Load/Unload ASL operators and is still under 8029investigation. 8030 8031Restructured the AML ParseLoop function, breaking it into several 8032subfunctions in order to reduce CPU stack use and improve 8033maintainability. 8034(Mikhail Kouzmich) 8035 8036AcpiGetHandle: Fix for parameter validation to detect invalid 8037combinations 8038of prefix handle and pathname. BZ 478 8039 8040Example Code and Data Size: These are the sizes for the OS-independent 8041acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8042debug version of the code includes the debug output trace mechanism and 8043has 8044a much larger code and data size. 8045 8046 Previous Release: 8047 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8048 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8049 Current Release: 8050 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8051 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8052 80532) iASL Compiler/Disassembler and Tools: 8054 8055Ported the -g option (get local ACPI tables) to the new ACPICA Table 8056Manager 8057to restore original behavior. 8058 8059---------------------------------------- 806027 September 2006. Summary of changes for version 20060927: 8061 80621) ACPI CA Core Subsystem: 8063 8064Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 8065These functions now use a spinlock for mutual exclusion and the interrupt 8066level indication flag is not needed. 8067 8068Fixed a problem with the Global Lock where the lock could appear to be 8069obtained before it is actually obtained. The global lock semaphore was 8070inadvertently created with one unit instead of zero units. (BZ 464) 8071Fiodor 8072Suietov. 8073 8074Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 8075during 8076a read from a buffer or region field. (BZ 458) Fiodor Suietov. 8077 8078Example Code and Data Size: These are the sizes for the OS-independent 8079acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8080debug version of the code includes the debug output trace mechanism and 8081has 8082a much larger code and data size. 8083 8084 Previous Release: 8085 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8086 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8087 Current Release: 8088 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8089 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8090 8091 80922) iASL Compiler/Disassembler and Tools: 8093 8094Fixed a compilation problem with the pre-defined Resource Descriptor 8095field 8096names where an "object does not exist" error could be incorrectly 8097generated 8098if the parent ResourceTemplate pathname places the template within a 8099different namespace scope than the current scope. (BZ 7212) 8100 8101Fixed a problem where the compiler could hang after syntax errors 8102detected 8103in an ElseIf construct. (BZ 453) 8104 8105Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 8106operator. An incorrect output filename was produced when this parameter 8107was 8108a null string (""). Now, the original input filename is used as the AML 8109output filename, with an ".aml" extension. 8110 8111Implemented a generic batch command mode for the AcpiExec utility 8112(execute 8113any AML debugger command) (Valery Podrezov). 8114 8115---------------------------------------- 811612 September 2006. Summary of changes for version 20060912: 8117 81181) ACPI CA Core Subsystem: 8119 8120Enhanced the implementation of the "serialized mode" of the interpreter 8121(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 8122specified, instead of creating a serialization semaphore per control 8123method, 8124the interpreter lock is simply no longer released before a blocking 8125operation during control method execution. This effectively makes the AML 8126Interpreter single-threaded. The overhead of a semaphore per-method is 8127eliminated. 8128 8129Fixed a regression where an error was no longer emitted if a control 8130method 8131attempts to create 2 objects of the same name. This once again returns 8132AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 8133that 8134will dynamically serialize the control method to possible prevent future 8135errors. (BZ 440) 8136 8137Integrated a fix for a problem with PCI Express HID detection in the PCI 8138Config Space setup procedure. (BZ 7145) 8139 8140Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 8141AcpiHwInitialize function - the FADT registers are now validated when the 8142table is loaded. 8143 8144Added two new warnings during FADT verification - 1) if the FADT is 8145larger 8146than the largest known FADT version, and 2) if there is a mismatch 8147between 8148a 814932-bit block address and the 64-bit X counterpart (when both are non- 8150zero.) 8151 8152Example Code and Data Size: These are the sizes for the OS-independent 8153acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8154debug version of the code includes the debug output trace mechanism and 8155has 8156a much larger code and data size. 8157 8158 Previous Release: 8159 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8160 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8161 Current Release: 8162 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8163 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8164 8165 81662) iASL Compiler/Disassembler and Tools: 8167 8168Fixed a problem with the implementation of the Switch() operator where 8169the 8170temporary variable was declared too close to the actual Switch, instead 8171of 8172at method level. This could cause a problem if the Switch() operator is 8173within a while loop, causing an error on the second iteration. (BZ 460) 8174 8175Disassembler - fix for error emitted for unknown type for target of scope 8176operator. Now, ignore it and continue. 8177 8178Disassembly of an FADT now verifies the input FADT and reports any errors 8179found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 8180 8181Disassembly of raw data buffers with byte initialization data now 8182prefixes 8183each output line with the current buffer offset. 8184 8185Disassembly of ASF! table now includes all variable-length data fields at 8186the end of some of the subtables. 8187 8188The disassembler now emits a comment if a buffer appears to be a 8189ResourceTemplate, but cannot be disassembled as such because the EndTag 8190does 8191not appear at the very end of the buffer. 8192 8193AcpiExec - Added the "-t" command line option to enable the serialized 8194mode 8195of the AML interpreter. 8196 8197---------------------------------------- 819831 August 2006. Summary of changes for version 20060831: 8199 82001) ACPI CA Core Subsystem: 8201 8202Miscellaneous fixes for the Table Manager: 8203- Correctly initialize internal common FADT for all 64-bit "X" fields 8204- Fixed a couple table mapping issues during table load 8205- Fixed a couple alignment issues for IA64 8206- Initialize input array to zero in AcpiInitializeTables 8207- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 8208AcpiGetTableByIndex 8209 8210Change for GPE support: when a "wake" GPE is received, all wake GPEs are 8211now 8212immediately disabled to prevent the waking GPE from firing again and to 8213prevent other wake GPEs from interrupting the wake process. 8214 8215Added the AcpiGpeCount global that tracks the number of processed GPEs, 8216to 8217be used for debugging systems with a large number of ACPI interrupts. 8218 8219Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 8220both the ACPICA headers and the disassembler. 8221 8222Example Code and Data Size: These are the sizes for the OS-independent 8223acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8224debug version of the code includes the debug output trace mechanism and 8225has 8226a much larger code and data size. 8227 8228 Previous Release: 8229 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8230 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8231 Current Release: 8232 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8233 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8234 8235 82362) iASL Compiler/Disassembler and Tools: 8237 8238Disassembler support for the DMAR ACPI table. 8239 8240---------------------------------------- 824123 August 2006. Summary of changes for version 20060823: 8242 82431) ACPI CA Core Subsystem: 8244 8245The Table Manager component has been completely redesigned and 8246reimplemented. The new design is much simpler, and reduces the overall 8247code 8248and data size of the kernel-resident ACPICA by approximately 5%. Also, it 8249is 8250now possible to obtain the ACPI tables very early during kernel 8251initialization, even before dynamic memory management is initialized. 8252(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 8253 8254Obsolete ACPICA interfaces: 8255 8256- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 8257init 8258time). 8259- AcpiLoadTable: Not needed. 8260- AcpiUnloadTable: Not needed. 8261 8262New ACPICA interfaces: 8263 8264- AcpiInitializeTables: Must be called before the table manager can be 8265used. 8266- AcpiReallocateRootTable: Used to transfer the root table to dynamically 8267allocated memory after it becomes available. 8268- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 8269tables 8270in the RSDT/XSDT. 8271 8272Other ACPICA changes: 8273 8274- AcpiGetTableHeader returns the actual mapped table header, not a copy. 8275Use 8276AcpiOsUnmapMemory to free this mapping. 8277- AcpiGetTable returns the actual mapped table. The mapping is managed 8278internally and must not be deleted by the caller. Use of this interface 8279causes no additional dynamic memory allocation. 8280- AcpiFindRootPointer: Support for physical addressing has been 8281eliminated, 8282it appeared to be unused. 8283- The interface to AcpiOsMapMemory has changed to be consistent with the 8284other allocation interfaces. 8285- The interface to AcpiOsGetRootPointer has changed to eliminate 8286unnecessary 8287parameters. 8288- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 828964- 8290bit platforms. Was previously 64 bits on all platforms. 8291- The interface to the ACPI Global Lock acquire/release macros have 8292changed 8293slightly since ACPICA no longer keeps a local copy of the FACS with a 8294constructed pointer to the actual global lock. 8295 8296Porting to the new table manager: 8297 8298- AcpiInitializeTables: Must be called once, and can be called anytime 8299during the OS initialization process. It allows the host to specify an 8300area 8301of memory to be used to store the internal version of the RSDT/XSDT (root 8302table). This allows the host to access ACPI tables before memory 8303management 8304is initialized and running. 8305- AcpiReallocateRootTable: Can be called after memory management is 8306running 8307to copy the root table to a dynamically allocated array, freeing up the 8308scratch memory specified in the call to AcpiInitializeTables. 8309- AcpiSubsystemInitialize: This existing interface is independent of the 8310Table Manager, and does not have to be called before the Table Manager 8311can 8312be used, it only must be called before the rest of ACPICA can be used. 8313- ACPI Tables: Some changes have been made to the names and structure of 8314the 8315actbl.h and actbl1.h header files and may require changes to existing 8316code. 8317For example, bitfields have been completely removed because of their lack 8318of 8319portability across C compilers. 8320- Update interfaces to the Global Lock acquire/release macros if local 8321versions are used. (see acwin.h) 8322 8323Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 8324 8325New files: tbfind.c 8326 8327Example Code and Data Size: These are the sizes for the OS-independent 8328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8329debug version of the code includes the debug output trace mechanism and 8330has 8331a much larger code and data size. 8332 8333 Previous Release: 8334 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8335 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8336 Current Release: 8337 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8338 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8339 8340 83412) iASL Compiler/Disassembler and Tools: 8342 8343No changes for this release. 8344 8345---------------------------------------- 834621 July 2006. Summary of changes for version 20060721: 8347 83481) ACPI CA Core Subsystem: 8349 8350The full source code for the ASL test suite used to validate the iASL 8351compiler and the ACPICA core subsystem is being released with the ACPICA 8352source for the first time. The source is contained in a separate package 8353and 8354consists of over 1100 files that exercise all ASL/AML operators. The 8355package 8356should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 8357Fiodor 8358Suietov) 8359 8360Completed a new design and implementation for support of the ACPI Global 8361Lock. On the OS side, the global lock is now treated as a standard AML 8362mutex. Previously, multiple OS threads could "acquire" the global lock 8363simultaneously. However, this could cause the BIOS to be starved out of 8364the 8365lock - especially in cases such as the Embedded Controller driver where 8366there is a tight coupling between the OS and the BIOS. 8367 8368Implemented an optimization for the ACPI Global Lock interrupt mechanism. 8369The Global Lock interrupt handler no longer queues the execution of a 8370separate thread to signal the global lock semaphore. Instead, the 8371semaphore 8372is signaled directly from the interrupt handler. 8373 8374Implemented support within the AML interpreter for package objects that 8375contain a larger AML length (package list length) than the package 8376element 8377count. In this case, the length of the package is truncated to match the 8378package element count. Some BIOS code apparently modifies the package 8379length 8380on the fly, and this change supports this behavior. Provides 8381compatibility 8382with the MS AML interpreter. (With assistance from Fiodor Suietov) 8383 8384Implemented a temporary fix for the BankValue parameter of a Bank Field 8385to 8386support all constant values, now including the Zero and One opcodes. 8387Evaluation of this parameter must eventually be converted to a full 8388TermArg 8389evaluation. A not-implemented error is now returned (temporarily) for 8390non- 8391constant values for this parameter. 8392 8393Fixed problem reports (Fiodor Suietov) integrated: 8394- Fix for premature object deletion after CopyObject on Operation Region 8395(BZ 8396350) 8397 8398Example Code and Data Size: These are the sizes for the OS-independent 8399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8400debug version of the code includes the debug output trace mechanism and 8401has 8402a much larger code and data size. 8403 8404 Previous Release: 8405 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 8406 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 8407 Current Release: 8408 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8409 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8410 8411 84122) iASL Compiler/Disassembler and Tools: 8413 8414No changes for this release. 8415 8416---------------------------------------- 841707 July 2006. Summary of changes for version 20060707: 8418 84191) ACPI CA Core Subsystem: 8420 8421Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 8422that do not allow the initialization of address pointers within packed 8423structures - even though the hardware itself may support misaligned 8424transfers. Some of the debug data structures are packed by default to 8425minimize size. 8426 8427Added an error message for the case where AcpiOsGetThreadId() returns 8428zero. 8429A non-zero value is required by the core ACPICA code to ensure the proper 8430operation of AML mutexes and recursive control methods. 8431 8432The DSDT is now the only ACPI table that determines whether the AML 8433interpreter is in 32-bit or 64-bit mode. Not really a functional change, 8434but 8435the hooks for per-table 32/64 switching have been removed from the code. 8436A 8437clarification to the ACPI specification is forthcoming in ACPI 3.0B. 8438 8439Fixed a possible leak of an OwnerID in the error path of 8440AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 8441deletion to a single place in AcpiTbUninstallTable to correct possible 8442leaks 8443when using the AcpiTbDeleteTablesByType interface (with assistance from 8444Lance Ortiz.) 8445 8446Fixed a problem with Serialized control methods where the semaphore 8447associated with the method could be over-signaled after multiple method 8448invocations. 8449 8450Fixed two issues with the locking of the internal namespace data 8451structure. 8452Both the Unload() operator and AcpiUnloadTable interface now lock the 8453namespace during the namespace deletion associated with the table unload 8454(with assistance from Linn Crosetto.) 8455 8456Fixed problem reports (Valery Podrezov) integrated: 8457- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 8458 8459Fixed problem reports (Fiodor Suietov) integrated: 8460- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 8461- On Address Space handler deletion, needless deactivation call (BZ 374) 8462- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 8463375) 8464- Possible memory leak, Notify sub-objects of Processor, Power, 8465ThermalZone 8466(BZ 376) 8467- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 8468- Minimum Length of RSDT should be validated (BZ 379) 8469- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 8470Handler (BZ (380) 8471- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 8472loaded 8473(BZ 381) 8474 8475Example Code and Data Size: These are the sizes for the OS-independent 8476acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8477debug version of the code includes the debug output trace mechanism and 8478has 8479a much larger code and data size. 8480 8481 Previous Release: 8482 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8483 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8484 Current Release: 8485 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8486 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8487 8488 84892) iASL Compiler/Disassembler and Tools: 8490 8491Fixed problem reports: 8492Compiler segfault when ASL contains a long (>1024) String declaration (BZ 8493436) 8494 8495---------------------------------------- 849623 June 2006. Summary of changes for version 20060623: 8497 84981) ACPI CA Core Subsystem: 8499 8500Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 8501allows the type to be customized to the host OS for improved efficiency 8502(since a spinlock is usually a very small object.) 8503 8504Implemented support for "ignored" bits in the ACPI registers. According 8505to 8506the ACPI specification, these bits should be preserved when writing the 8507registers via a read/modify/write cycle. There are 3 bits preserved in 8508this 8509manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 8510 8511Implemented the initial deployment of new OSL mutex interfaces. Since 8512some 8513host operating systems have separate mutex and semaphore objects, this 8514feature was requested. The base code now uses mutexes (and the new mutex 8515interfaces) wherever a binary semaphore was used previously. However, for 8516the current release, the mutex interfaces are defined as macros to map 8517them 8518to the existing semaphore interfaces. Therefore, no OSL changes are 8519required 8520at this time. (See acpiosxf.h) 8521 8522Fixed several problems with the support for the control method SyncLevel 8523parameter. The SyncLevel now works according to the ACPI specification 8524and 8525in concert with the Mutex SyncLevel parameter, since the current 8526SyncLevel 8527is a property of the executing thread. Mutual exclusion for control 8528methods 8529is now implemented with a mutex instead of a semaphore. 8530 8531Fixed three instances of the use of the C shift operator in the bitfield 8532support code (exfldio.c) to avoid the use of a shift value larger than 8533the 8534target data width. The behavior of C compilers is undefined in this case 8535and 8536can cause unpredictable results, and therefore the case must be detected 8537and 8538avoided. (Fiodor Suietov) 8539 8540Added an info message whenever an SSDT or OEM table is loaded dynamically 8541via the Load() or LoadTable() ASL operators. This should improve 8542debugging 8543capability since it will show exactly what tables have been loaded 8544(beyond 8545the tables present in the RSDT/XSDT.) 8546 8547Example Code and Data Size: These are the sizes for the OS-independent 8548acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8549debug version of the code includes the debug output trace mechanism and 8550has 8551a much larger code and data size. 8552 8553 Previous Release: 8554 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8555 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8556 Current Release: 8557 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8558 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8559 8560 85612) iASL Compiler/Disassembler and Tools: 8562 8563No changes for this release. 8564 8565---------------------------------------- 856608 June 2006. Summary of changes for version 20060608: 8567 85681) ACPI CA Core Subsystem: 8569 8570Converted the locking mutex used for the ACPI hardware to a spinlock. 8571This 8572change should eliminate all problems caused by attempting to acquire a 8573semaphore at interrupt level, and it means that all ACPICA external 8574interfaces that directly access the ACPI hardware can be safely called 8575from 8576interrupt level. OSL code that implements the semaphore interfaces should 8577be 8578able to eliminate any workarounds for being called at interrupt level. 8579 8580Fixed a regression introduced in 20060526 where the ACPI device 8581initialization could be prematurely aborted with an AE_NOT_FOUND if a 8582device 8583did not have an optional _INI method. 8584 8585Fixed an IndexField issue where a write to the Data Register should be 8586limited in size to the AccessSize (width) of the IndexField itself. (BZ 8587433, 8588Fiodor Suietov) 8589 8590Fixed problem reports (Valery Podrezov) integrated: 8591- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 8592 8593Fixed problem reports (Fiodor Suietov) integrated: 8594- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 8595 8596Removed four global mutexes that were obsolete and were no longer being 8597used. 8598 8599Example Code and Data Size: These are the sizes for the OS-independent 8600acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8601debug version of the code includes the debug output trace mechanism and 8602has 8603a much larger code and data size. 8604 8605 Previous Release: 8606 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 8607 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 8608 Current Release: 8609 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8610 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8611 8612 86132) iASL Compiler/Disassembler and Tools: 8614 8615Fixed a fault when using -g option (get tables from registry) on Windows 8616machines. 8617 8618Fixed problem reports integrated: 8619- Generate error if CreateField NumBits parameter is zero. (BZ 405) 8620- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 8621Suietov) 8622- Global table revision override (-r) is ignored (BZ 413) 8623 8624---------------------------------------- 862526 May 2006. Summary of changes for version 20060526: 8626 86271) ACPI CA Core Subsystem: 8628 8629Restructured, flattened, and simplified the internal interfaces for 8630namespace object evaluation - resulting in smaller code, less CPU stack 8631use, 8632and fewer interfaces. (With assistance from Mikhail Kouzmich) 8633 8634Fixed a problem with the CopyObject operator where the first parameter 8635was 8636not typed correctly for the parser, interpreter, compiler, and 8637disassembler. 8638Caused various errors and unexpected behavior. 8639 8640Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 8641produced incorrect results with some C compilers. Since the behavior of C 8642compilers when the shift value is larger than the datatype width is 8643apparently not well defined, the interpreter now detects this condition 8644and 8645simply returns zero as expected in all such cases. (BZ 395) 8646 8647Fixed problem reports (Valery Podrezov) integrated: 8648- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 8649- Allow interpreter to handle nested method declarations (BZ 5361) 8650 8651Fixed problem reports (Fiodor Suietov) integrated: 8652- AcpiTerminate doesn't free debug memory allocation list objects (BZ 8653355) 8654- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 8655356) 8656- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 8657- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 8658- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 8659- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 8660- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 8661- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 8662- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 8663365) 8664- Status of the Global Initialization Handler call not used (BZ 366) 8665- Incorrect object parameter to Global Initialization Handler (BZ 367) 8666 8667Example Code and Data Size: These are the sizes for the OS-independent 8668acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8669debug version of the code includes the debug output trace mechanism and 8670has 8671a much larger code and data size. 8672 8673 Previous Release: 8674 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8675 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8676 Current Release: 8677 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 8678 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 8679 8680 86812) iASL Compiler/Disassembler and Tools: 8682 8683Modified the parser to allow the names IO, DMA, and IRQ to be used as 8684namespace identifiers with no collision with existing resource descriptor 8685macro names. This provides compatibility with other ASL compilers and is 8686most useful for disassembly/recompilation of existing tables without 8687parse 8688errors. (With assistance from Thomas Renninger) 8689 8690Disassembler: fixed an incorrect disassembly problem with the 8691DataTableRegion and CopyObject operators. Fixed a possible fault during 8692disassembly of some Alias operators. 8693 8694---------------------------------------- 869512 May 2006. Summary of changes for version 20060512: 8696 86971) ACPI CA Core Subsystem: 8698 8699Replaced the AcpiOsQueueForExecution interface with a new interface named 8700AcpiOsExecute. The major difference is that the new interface does not 8701have 8702a Priority parameter, this appeared to be useless and has been replaced 8703by 8704a 8705Type parameter. The Type tells the host what type of execution is being 8706requested, such as global lock handler, notify handler, GPE handler, etc. 8707This allows the host to queue and execute the request as appropriate for 8708the 8709request type, possibly using different work queues and different 8710priorities 8711for the various request types. This enables fixes for multithreading 8712deadlock problems such as BZ #5534, and will require changes to all 8713existing 8714OS interface layers. (Alexey Starikovskiy and Bob Moore) 8715 8716Fixed a possible memory leak associated with the support for the so- 8717called 8718"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 8719Suietov) 8720 8721Fixed a problem with the Load() operator where a table load from an 8722operation region could overwrite an internal table buffer by up to 7 8723bytes 8724and cause alignment faults on IPF systems. (With assistance from Luming 8725Yu) 8726 8727Example Code and Data Size: These are the sizes for the OS-independent 8728acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8729debug version of the code includes the debug output trace mechanism and 8730has 8731a much larger code and data size. 8732 8733 Previous Release: 8734 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8735 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8736 Current Release: 8737 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8738 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8739 8740 8741 87422) iASL Compiler/Disassembler and Tools: 8743 8744Disassembler: Implemented support to cross reference the internal 8745namespace 8746and automatically generate ASL External() statements for symbols not 8747defined 8748within the current table being disassembled. This will simplify the 8749disassembly and recompilation of interdependent tables such as SSDTs 8750since 8751these statements will no longer have to be added manually. 8752 8753Disassembler: Implemented experimental support to automatically detect 8754invocations of external control methods and generate appropriate 8755External() 8756statements. This is problematic because the AML cannot be correctly 8757parsed 8758until the number of arguments for each control method is known. 8759Currently, 8760standalone method invocations and invocations as the source operand of a 8761Store() statement are supported. 8762 8763Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 8764LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 8765LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 8766more readable and likely closer to the original ASL source. 8767 8768---------------------------------------- 876921 April 2006. Summary of changes for version 20060421: 8770 87711) ACPI CA Core Subsystem: 8772 8773Removed a device initialization optimization introduced in 20051216 where 8774the _STA method was not run unless an _INI was also present for the same 8775device. This optimization could cause problems because it could allow 8776_INI 8777methods to be run within a not-present device subtree. (If a not-present 8778device had no _INI, _STA would not be run, the not-present status would 8779not 8780be discovered, and the children of the device would be incorrectly 8781traversed.) 8782 8783Implemented a new _STA optimization where namespace subtrees that do not 8784contain _INI are identified and ignored during device initialization. 8785Selectively running _STA can significantly improve boot time on large 8786machines (with assistance from Len Brown.) 8787 8788Implemented support for the device initialization case where the returned 8789_STA flags indicate a device not-present but functioning. In this case, 8790_INI 8791is not run, but the device children are examined for presence, as per the 8792ACPI specification. 8793 8794Implemented an additional change to the IndexField support in order to 8795conform to MS behavior. The value written to the Index Register is not 8796simply a byte offset, it is a byte offset in units of the access width of 8797the parent Index Field. (Fiodor Suietov) 8798 8799Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 8800interface is called during the creation of all AML operation regions, and 8801allows the host OS to exert control over what addresses it will allow the 8802AML code to access. Operation Regions whose addresses are disallowed will 8803cause a runtime exception when they are actually accessed (will not 8804affect 8805or abort table loading.) See oswinxf or osunixxf for an example 8806implementation. 8807 8808Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 8809interface allows the host OS to match the various "optional" 8810interface/behavior strings for the _OSI predefined control method as 8811appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 8812for an example implementation. 8813 8814Restructured and corrected various problems in the exception handling 8815code 8816paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 8817(with assistance from Takayoshi Kochi.) 8818 8819Modified the Linux source converter to ignore quoted string literals 8820while 8821converting identifiers from mixed to lower case. This will correct 8822problems 8823with the disassembler and other areas where such strings must not be 8824modified. 8825 8826The ACPI_FUNCTION_* macros no longer require quotes around the function 8827name. This allows the Linux source converter to convert the names, now 8828that 8829the converter ignores quoted strings. 8830 8831Example Code and Data Size: These are the sizes for the OS-independent 8832acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8833debug version of the code includes the debug output trace mechanism and 8834has 8835a much larger code and data size. 8836 8837 Previous Release: 8838 8839 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 8840 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 8841 Current Release: 8842 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8843 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8844 8845 88462) iASL Compiler/Disassembler and Tools: 8847 8848Implemented 3 new warnings for iASL, and implemented multiple warning 8849levels 8850(w2 flag). 8851 88521) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 8853not 8854WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 8855check for the possible timeout, a warning is issued. 8856 88572) Useless operators: If an ASL operator does not specify an optional 8858target 8859operand and it also does not use the function return value from the 8860operator, a warning is issued since the operator effectively does 8861nothing. 8862 88633) Unreferenced objects: If a namespace object is created, but never 8864referenced, a warning is issued. This is a warning level 2 since there 8865are 8866cases where this is ok, such as when a secondary table is loaded that 8867uses 8868the unreferenced objects. Even so, care is taken to only flag objects 8869that 8870don't look like they will ever be used. For example, the reserved methods 8871(starting with an underscore) are usually not referenced because it is 8872expected that the OS will invoke them. 8873 8874---------------------------------------- 887531 March 2006. Summary of changes for version 20060331: 8876 88771) ACPI CA Core Subsystem: 8878 8879Implemented header file support for the following additional ACPI tables: 8880ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 8881support, 8882all current and known ACPI tables are now defined in the ACPICA headers 8883and 8884are available for use by device drivers and other software. 8885 8886Implemented support to allow tables that contain ACPI names with invalid 8887characters to be loaded. Previously, this would cause the table load to 8888fail, but since there are several known cases of such tables on existing 8889machines, this change was made to enable ACPI support for them. Also, 8890this 8891matches the behavior of the Microsoft ACPI implementation. 8892 8893Fixed a couple regressions introduced during the memory optimization in 8894the 889520060317 release. The namespace node definition required additional 8896reorganization and an internal datatype that had been changed to 8-bit 8897was 8898restored to 32-bit. (Valery Podrezov) 8899 8900Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 8901could be passed through to AcpiOsReleaseObject which is unexpected. Such 8902null pointers are now trapped and ignored, matching the behavior of the 8903previous implementation before the deployment of AcpiOsReleaseObject. 8904(Valery Podrezov, Fiodor Suietov) 8905 8906Fixed a memory mapping leak during the deletion of a SystemMemory 8907operation 8908region where a cached memory mapping was not deleted. This became a 8909noticeable problem for operation regions that are defined within 8910frequently 8911used control methods. (Dana Meyers) 8912 8913Reorganized the ACPI table header files into two main files: one for the 8914ACPI tables consumed by the ACPICA core, and another for the 8915miscellaneous 8916ACPI tables that are consumed by the drivers and other software. The 8917various 8918FADT definitions were merged into one common section and three different 8919tables (ACPI 1.0, 1.0+, and 2.0) 8920 8921Example Code and Data Size: These are the sizes for the OS-independent 8922acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8923debug version of the code includes the debug output trace mechanism and 8924has 8925a much larger code and data size. 8926 8927 Previous Release: 8928 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 8929 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 8930 Current Release: 8931 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 8932 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 8933 8934 89352) iASL Compiler/Disassembler and Tools: 8936 8937Disassembler: Implemented support to decode and format all non-AML ACPI 8938tables (tables other than DSDTs and SSDTs.) This includes the new tables 8939added to the ACPICA headers, therefore all current and known ACPI tables 8940are 8941supported. 8942 8943Disassembler: The change to allow ACPI names with invalid characters also 8944enables the disassembly of such tables. Invalid characters within names 8945are 8946changed to '*' to make the name printable; the iASL compiler will still 8947generate an error for such names, however, since this is an invalid ACPI 8948character. 8949 8950Implemented an option for AcpiXtract (-a) to extract all tables found in 8951the 8952input file. The default invocation extracts only the DSDTs and SSDTs. 8953 8954Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 8955makefile for the AcpiXtract utility. 8956 8957---------------------------------------- 895817 March 2006. Summary of changes for version 20060317: 8959 89601) ACPI CA Core Subsystem: 8961 8962Implemented the use of a cache object for all internal namespace nodes. 8963Since there are about 1000 static nodes in a typical system, this will 8964decrease memory use for cache implementations that minimize per- 8965allocation 8966overhead (such as a slab allocator.) 8967 8968Removed the reference count mechanism for internal namespace nodes, since 8969it 8970was deemed unnecessary. This reduces the size of each namespace node by 8971about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 8972case, 8973and 32 bytes for the 64-bit case. 8974 8975Optimized several internal data structures to reduce object size on 64- 8976bit 8977platforms by packing data within the 64-bit alignment. This includes the 8978frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 8979instances corresponding to the namespace objects. 8980 8981Added two new strings for the predefined _OSI method: "Windows 2001.1 8982SP1" 8983and "Windows 2006". 8984 8985Split the allocation tracking mechanism out to a separate file, from 8986utalloc.c to uttrack.c. This mechanism appears to be only useful for 8987application-level code. Kernels may wish to not include uttrack.c in 8988distributions. 8989 8990Removed all remnants of the obsolete ACPI_REPORT_* macros and the 8991associated 8992code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 8993macros.) 8994 8995Code and Data Size: These are the sizes for the acpica.lib produced by 8996the 8997Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 8998ACPI 8999driver or OSPM code. The debug version of the code includes the debug 9000output 9001trace mechanism and has a much larger code and data size. Note that these 9002values will vary depending on the efficiency of the compiler and the 9003compiler options used during generation. 9004 9005 Previous Release: 9006 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9007 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9008 Current Release: 9009 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9010 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9011 9012 90132) iASL Compiler/Disassembler and Tools: 9014 9015Implemented an ANSI C version of the acpixtract utility. This version 9016will 9017automatically extract the DSDT and all SSDTs from the input acpidump text 9018file and dump the binary output to separate files. It can also display a 9019summary of the input file including the headers for each table found and 9020will extract any single ACPI table, with any signature. (See 9021source/tools/acpixtract) 9022 9023---------------------------------------- 902410 March 2006. Summary of changes for version 20060310: 9025 90261) ACPI CA Core Subsystem: 9027 9028Tagged all external interfaces to the subsystem with the new 9029ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 9030assist 9031kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 9032macro. The default definition is NULL. 9033 9034Added the ACPI_THREAD_ID type for the return value from 9035AcpiOsGetThreadId. 9036This allows the host to define this as necessary to simplify kernel 9037integration. The default definition is ACPI_NATIVE_UINT. 9038 9039Fixed two interpreter problems related to error processing, the deletion 9040of 9041objects, and placing invalid pointers onto the internal operator result 9042stack. BZ 6028, 6151 (Valery Podrezov) 9043 9044Increased the reference count threshold where a warning is emitted for 9045large 9046reference counts in order to eliminate unnecessary warnings on systems 9047with 9048large namespaces (especially 64-bit.) Increased the value from 0x400 to 90490x800. 9050 9051Due to universal disagreement as to the meaning of the 'c' in the 9052calloc() 9053function, the ACPI_MEM_CALLOCATE macro has been renamed to 9054ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 9055ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 9056ACPI_FREE. 9057 9058Code and Data Size: These are the sizes for the acpica.lib produced by 9059the 9060Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9061ACPI 9062driver or OSPM code. The debug version of the code includes the debug 9063output 9064trace mechanism and has a much larger code and data size. Note that these 9065values will vary depending on the efficiency of the compiler and the 9066compiler options used during generation. 9067 9068 Previous Release: 9069 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9070 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9071 Current Release: 9072 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9073 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9074 9075 90762) iASL Compiler/Disassembler: 9077 9078Disassembler: implemented support for symbolic resource descriptor 9079references. If a CreateXxxxField operator references a fixed offset 9080within 9081a 9082resource descriptor, a name is assigned to the descriptor and the offset 9083is 9084translated to the appropriate resource tag and pathname. The addition of 9085this support brings the disassembled code very close to the original ASL 9086source code and helps eliminate run-time errors when the disassembled 9087code 9088is modified (and recompiled) in such a way as to invalidate the original 9089fixed offsets. 9090 9091Implemented support for a Descriptor Name as the last parameter to the 9092ASL 9093Register() macro. This parameter was inadvertently left out of the ACPI 9094specification, and will be added for ACPI 3.0b. 9095 9096Fixed a problem where the use of the "_OSI" string (versus the full path 9097"\_OSI") caused an internal compiler error. ("No back ptr to op") 9098 9099Fixed a problem with the error message that occurs when an invalid string 9100is 9101used for a _HID object (such as one with an embedded asterisk: 9102"*PNP010A".) 9103The correct message is now displayed. 9104 9105---------------------------------------- 910617 February 2006. Summary of changes for version 20060217: 9107 91081) ACPI CA Core Subsystem: 9109 9110Implemented a change to the IndexField support to match the behavior of 9111the 9112Microsoft AML interpreter. The value written to the Index register is now 9113a 9114byte offset, no longer an index based upon the width of the Data 9115register. 9116This should fix IndexField problems seen on some machines where the Data 9117register is not exactly one byte wide. The ACPI specification will be 9118clarified on this point. 9119 9120Fixed a problem where several resource descriptor types could overrun the 9121internal descriptor buffer due to size miscalculation: VendorShort, 9122VendorLong, and Interrupt. This was noticed on IA64 machines, but could 9123affect all platforms. 9124 9125Fixed a problem where individual resource descriptors were misaligned 9126within 9127the internal buffer, causing alignment faults on IA64 platforms. 9128 9129Code and Data Size: These are the sizes for the acpica.lib produced by 9130the 9131Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9132ACPI 9133driver or OSPM code. The debug version of the code includes the debug 9134output 9135trace mechanism and has a much larger code and data size. Note that these 9136values will vary depending on the efficiency of the compiler and the 9137compiler options used during generation. 9138 9139 Previous Release: 9140 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9141 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9142 Current Release: 9143 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9144 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9145 9146 91472) iASL Compiler/Disassembler: 9148 9149Implemented support for new reserved names: _WDG and _WED are Microsoft 9150extensions for Windows Instrumentation Management, _TDL is a new ACPI- 9151defined method (Throttling Depth Limit.) 9152 9153Fixed a problem where a zero-length VendorShort or VendorLong resource 9154descriptor was incorrectly emitted as a descriptor of length one. 9155 9156---------------------------------------- 915710 February 2006. Summary of changes for version 20060210: 9158 91591) ACPI CA Core Subsystem: 9160 9161Removed a couple of extraneous ACPI_ERROR messages that appeared during 9162normal execution. These became apparent after the conversion from 9163ACPI_DEBUG_PRINT. 9164 9165Fixed a problem where the CreateField operator could hang if the BitIndex 9166or 9167NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 9168 9169Fixed a problem where a DeRefOf operation on a buffer object incorrectly 9170failed with an exception. This also fixes a couple of related RefOf and 9171DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 9172 9173Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 9174of 9175AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 9176BZ 91775480) 9178 9179Implemented a memory cleanup at the end of the execution of each 9180iteration 9181of an AML While() loop, preventing the accumulation of outstanding 9182objects. 9183(Valery Podrezov, BZ 5427) 9184 9185Eliminated a chunk of duplicate code in the object resolution code. 9186(Valery 9187Podrezov, BZ 5336) 9188 9189Fixed several warnings during the 64-bit code generation. 9190 9191The AcpiSrc source code conversion tool now inserts one line of 9192whitespace 9193after an if() statement that is followed immediately by a comment, 9194improving 9195readability of the Linux code. 9196 9197Code and Data Size: The current and previous library sizes for the core 9198subsystem are shown below. These are the code and data sizes for the 9199acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9200These 9201values do not include any ACPI driver or OSPM code. The debug version of 9202the 9203code includes the debug output trace mechanism and has a much larger code 9204and data size. Note that these values will vary depending on the 9205efficiency 9206of the compiler and the compiler options used during generation. 9207 9208 Previous Release: 9209 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9210 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9211 Current Release: 9212 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9213 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9214 9215 92162) iASL Compiler/Disassembler: 9217 9218Fixed a problem with the disassembly of a BankField operator with a 9219complex 9220expression for the BankValue parameter. 9221 9222---------------------------------------- 922327 January 2006. Summary of changes for version 20060127: 9224 92251) ACPI CA Core Subsystem: 9226 9227Implemented support in the Resource Manager to allow unresolved 9228namestring 9229references within resource package objects for the _PRT method. This 9230support 9231is in addition to the previously implemented unresolved reference support 9232within the AML parser. If the interpreter slack mode is enabled, these 9233unresolved references will be passed through to the caller as a NULL 9234package 9235entry. 9236 9237Implemented and deployed new macros and functions for error and warning 9238messages across the subsystem. These macros are simpler and generate less 9239code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 9240ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 9241macros remain defined to allow ACPI drivers time to migrate to the new 9242macros. 9243 9244Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 9245the 9246Acquire/Release Lock OSL interfaces. 9247 9248Fixed a problem where Alias ASL operators are sometimes not correctly 9249resolved, in both the interpreter and the iASL compiler. 9250 9251Fixed several problems with the implementation of the 9252ConcatenateResTemplate 9253ASL operator. As per the ACPI specification, zero length buffers are now 9254treated as a single EndTag. One-length buffers always cause a fatal 9255exception. Non-zero length buffers that do not end with a full 2-byte 9256EndTag 9257cause a fatal exception. 9258 9259Fixed a possible structure overwrite in the AcpiGetObjectInfo external 9260interface. (With assistance from Thomas Renninger) 9261 9262Code and Data Size: The current and previous library sizes for the core 9263subsystem are shown below. These are the code and data sizes for the 9264acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9265These 9266values do not include any ACPI driver or OSPM code. The debug version of 9267the 9268code includes the debug output trace mechanism and has a much larger code 9269and data size. Note that these values will vary depending on the 9270efficiency 9271of the compiler and the compiler options used during generation. 9272 9273 Previous Release: 9274 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9275 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9276 Current Release: 9277 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9278 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9279 9280 92812) iASL Compiler/Disassembler: 9282 9283Fixed an internal error that was generated for any forward references to 9284ASL 9285Alias objects. 9286 9287---------------------------------------- 928813 January 2006. Summary of changes for version 20060113: 9289 92901) ACPI CA Core Subsystem: 9291 9292Added 2006 copyright to all module headers and signons. This affects 9293virtually every file in the ACPICA core subsystem, iASL compiler, and the 9294utilities. 9295 9296Enhanced the ACPICA error reporting in order to simplify user migration 9297to 9298the non-debug version of ACPICA. Replaced all instances of the 9299ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 9300debug 9301levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 9302respectively. This preserves all error and warning messages in the non- 9303debug 9304version of the ACPICA code (this has been referred to as the "debug lite" 9305option.) Over 200 cases were converted to create a total of over 380 9306error/warning messages across the ACPICA code. This increases the code 9307and 9308data size of the default non-debug version of the code somewhat (about 930913K), 9310but all error/warning reporting may be disabled if desired (and code 9311eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 9312configuration option. The size of the debug version of ACPICA remains 9313about 9314the same. 9315 9316Fixed a memory leak within the AML Debugger "Set" command. One object was 9317not properly deleted for every successful invocation of the command. 9318 9319Code and Data Size: The current and previous library sizes for the core 9320subsystem are shown below. These are the code and data sizes for the 9321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9322These 9323values do not include any ACPI driver or OSPM code. The debug version of 9324the 9325code includes the debug output trace mechanism and has a much larger code 9326and data size. Note that these values will vary depending on the 9327efficiency 9328of the compiler and the compiler options used during generation. 9329 9330 Previous Release: 9331 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 9332 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 9333 Current Release: 9334 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9335 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9336 9337 93382) iASL Compiler/Disassembler: 9339 9340The compiler now officially supports the ACPI 3.0a specification that was 9341released on December 30, 2005. (Specification is available at 9342www.acpi.info) 9343 9344---------------------------------------- 934516 December 2005. Summary of changes for version 20051216: 9346 93471) ACPI CA Core Subsystem: 9348 9349Implemented optional support to allow unresolved names within ASL Package 9350objects. A null object is inserted in the package when a named reference 9351cannot be located in the current namespace. Enabled via the interpreter 9352slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 9353machines 9354that contain such code. 9355 9356Implemented an optimization to the initialization sequence that can 9357improve 9358boot time. During ACPI device initialization, the _STA method is now run 9359if 9360and only if the _INI method exists. The _STA method is used to determine 9361if 9362the device is present; An _INI can only be run if _STA returns present, 9363but 9364it is a waste of time to run the _STA method if the _INI does not exist. 9365(Prototype and assistance from Dong Wei) 9366 9367Implemented use of the C99 uintptr_t for the pointer casting macros if it 9368is 9369available in the current compiler. Otherwise, the default (void *) cast 9370is 9371used as before. 9372 9373Fixed some possible memory leaks found within the execution path of the 9374Break, Continue, If, and CreateField operators. (Valery Podrezov) 9375 9376Fixed a problem introduced in the 20051202 release where an exception is 9377generated during method execution if a control method attempts to declare 9378another method. 9379 9380Moved resource descriptor string constants that are used by both the AML 9381disassembler and AML debugger to the common utilities directory so that 9382these components are independent. 9383 9384Implemented support in the AcpiExec utility (-e switch) to globally 9385ignore 9386exceptions during control method execution (method is not aborted.) 9387 9388Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 9389generation. 9390 9391Code and Data Size: The current and previous library sizes for the core 9392subsystem are shown below. These are the code and data sizes for the 9393acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9394These 9395values do not include any ACPI driver or OSPM code. The debug version of 9396the 9397code includes the debug output trace mechanism and has a much larger code 9398and data size. Note that these values will vary depending on the 9399efficiency 9400of the compiler and the compiler options used during generation. 9401 9402 Previous Release: 9403 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9404 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 9405 Current Release: 9406 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 9407 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 9408 9409 94102) iASL Compiler/Disassembler: 9411 9412Fixed a problem where a CPU stack overflow fault could occur if a 9413recursive 9414method call was made from within a Return statement. 9415 9416---------------------------------------- 941702 December 2005. Summary of changes for version 20051202: 9418 94191) ACPI CA Core Subsystem: 9420 9421Modified the parsing of control methods to no longer create namespace 9422objects during the first pass of the parse. Objects are now created only 9423during the execute phase, at the moment the namespace creation operator 9424is 9425encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 9426This 9427should eliminate ALREADY_EXISTS exceptions seen on some machines where 9428reentrant control methods are protected by an AML mutex. The mutex will 9429now 9430correctly block multiple threads from attempting to create the same 9431object 9432more than once. 9433 9434Increased the number of available Owner Ids for namespace object tracking 9435from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 9436on 9437some machines with a large number of ACPI tables (either static or 9438dynamic). 9439 9440Fixed a problem with the AcpiExec utility where a fault could occur when 9441the 9442-b switch (batch mode) is used. 9443 9444Enhanced the namespace dump routine to output the owner ID for each 9445namespace object. 9446 9447Code and Data Size: The current and previous library sizes for the core 9448subsystem are shown below. These are the code and data sizes for the 9449acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9450These 9451values do not include any ACPI driver or OSPM code. The debug version of 9452the 9453code includes the debug output trace mechanism and has a much larger code 9454and data size. Note that these values will vary depending on the 9455efficiency 9456of the compiler and the compiler options used during generation. 9457 9458 Previous Release: 9459 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9460 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9461 Current Release: 9462 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9463 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 9464 9465 94662) iASL Compiler/Disassembler: 9467 9468Fixed a parse error during compilation of certain Switch/Case constructs. 9469To 9470simplify the parse, the grammar now allows for multiple Default 9471statements 9472and this error is now detected and flagged during the analysis phase. 9473 9474Disassembler: The disassembly now includes the contents of the original 9475table header within a comment at the start of the file. This includes the 9476name and version of the original ASL compiler. 9477 9478---------------------------------------- 947917 November 2005. Summary of changes for version 20051117: 9480 94811) ACPI CA Core Subsystem: 9482 9483Fixed a problem in the AML parser where the method thread count could be 9484decremented below zero if any errors occurred during the method parse 9485phase. 9486This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 9487machines. 9488This also fixed a related regression with the mechanism that detects and 9489corrects methods that cannot properly handle reentrancy (related to the 9490deployment of the new OwnerId mechanism.) 9491 9492Eliminated the pre-parsing of control methods (to detect errors) during 9493table load. Related to the problem above, this was causing unwind issues 9494if 9495any errors occurred during the parse, and it seemed to be overkill. A 9496table 9497load should not be aborted if there are problems with any single control 9498method, thus rendering this feature rather pointless. 9499 9500Fixed a problem with the new table-driven resource manager where an 9501internal 9502buffer overflow could occur for small resource templates. 9503 9504Implemented a new external interface, AcpiGetVendorResource. This 9505interface 9506will find and return a vendor-defined resource descriptor within a _CRS 9507or 9508_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 9509Helgaas. 9510 9511Removed the length limit (200) on string objects as per the upcoming ACPI 95123.0A specification. This affects the following areas of the interpreter: 95131) 9514any implicit conversion of a Buffer to a String, 2) a String object 9515result 9516of the ASL Concatentate operator, 3) the String object result of the ASL 9517ToString operator. 9518 9519Fixed a problem in the Windows OS interface layer (OSL) where a 9520WAIT_FOREVER 9521on a semaphore object would incorrectly timeout. This allows the 9522multithreading features of the AcpiExec utility to work properly under 9523Windows. 9524 9525Updated the Linux makefiles for the iASL compiler and AcpiExec to include 9526the recently added file named "utresrc.c". 9527 9528Code and Data Size: The current and previous library sizes for the core 9529subsystem are shown below. These are the code and data sizes for the 9530acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9531These 9532values do not include any ACPI driver or OSPM code. The debug version of 9533the 9534code includes the debug output trace mechanism and has a much larger code 9535and data size. Note that these values will vary depending on the 9536efficiency 9537of the compiler and the compiler options used during generation. 9538 9539 Previous Release: 9540 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9541 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9542 Current Release: 9543 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9544 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9545 9546 95472) iASL Compiler/Disassembler: 9548 9549Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 9550specification. For the iASL compiler, this means that string literals 9551within 9552the source ASL can be of any length. 9553 9554Enhanced the listing output to dump the AML code for resource descriptors 9555immediately after the ASL code for each descriptor, instead of in a block 9556at 9557the end of the entire resource template. 9558 9559Enhanced the compiler debug output to dump the entire original parse tree 9560constructed during the parse phase, before any transforms are applied to 9561the 9562tree. The transformed tree is dumped also. 9563 9564---------------------------------------- 956502 November 2005. Summary of changes for version 20051102: 9566 95671) ACPI CA Core Subsystem: 9568 9569Modified the subsystem initialization sequence to improve GPE support. 9570The 9571GPE initialization has been split into two parts in order to defer 9572execution 9573of the _PRW methods (Power Resources for Wake) until after the hardware 9574is 9575fully initialized and the SCI handler is installed. This allows the _PRW 9576methods to access fields protected by the Global Lock. This will fix 9577systems 9578where a NO_GLOBAL_LOCK exception has been seen during initialization. 9579 9580Converted the ACPI internal object disassemble and display code within 9581the 9582AML debugger to fully table-driven operation, reducing code size and 9583increasing maintainability. 9584 9585Fixed a regression with the ConcatenateResTemplate() ASL operator 9586introduced 9587in the 20051021 release. 9588 9589Implemented support for "local" internal ACPI object types within the 9590debugger "Object" command and the AcpiWalkNamespace external interfaces. 9591These local types include RegionFields, BankFields, IndexFields, Alias, 9592and 9593reference objects. 9594 9595Moved common AML resource handling code into a new file, "utresrc.c". 9596This 9597code is shared by both the Resource Manager and the AML Debugger. 9598 9599Code and Data Size: The current and previous library sizes for the core 9600subsystem are shown below. These are the code and data sizes for the 9601acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9602These 9603values do not include any ACPI driver or OSPM code. The debug version of 9604the 9605code includes the debug output trace mechanism and has a much larger code 9606and data size. Note that these values will vary depending on the 9607efficiency 9608of the compiler and the compiler options used during generation. 9609 9610 Previous Release: 9611 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 9612 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 9613 Current Release: 9614 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9615 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9616 9617 96182) iASL Compiler/Disassembler: 9619 9620Fixed a problem with very large initializer lists (more than 4000 9621elements) 9622for both Buffer and Package objects where the parse stack could overflow. 9623 9624Enhanced the pre-compile source code scan for non-ASCII characters to 9625ignore 9626characters within comment fields. The scan is now always performed and is 9627no 9628longer optional, detecting invalid characters within a source file 9629immediately rather than during the parse phase or later. 9630 9631Enhanced the ASL grammar definition to force early reductions on all 9632list- 9633style grammar elements so that the overall parse stack usage is greatly 9634reduced. This should improve performance and reduce the possibility of 9635parse 9636stack overflow. 9637 9638Eliminated all reduce/reduce conflicts in the iASL parser generation. 9639Also, 9640with the addition of a %expected statement, the compiler generates from 9641source with no warnings. 9642 9643Fixed a possible segment fault in the disassembler if the input filename 9644does not contain a "dot" extension (Thomas Renninger). 9645 9646---------------------------------------- 964721 October 2005. Summary of changes for version 20051021: 9648 96491) ACPI CA Core Subsystem: 9650 9651Implemented support for the EM64T and other x86-64 processors. This 9652essentially entails recognizing that these processors support non-aligned 9653memory transfers. Previously, all 64-bit processors were assumed to lack 9654hardware support for non-aligned transfers. 9655 9656Completed conversion of the Resource Manager to nearly full table-driven 9657operation. Specifically, the resource conversion code (convert AML to 9658internal format and the reverse) and the debug code to dump internal 9659resource descriptors are fully table-driven, reducing code and data size 9660and 9661improving maintainability. 9662 9663The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 9664word 9665on 64-bit processors instead of a fixed 32-bit word. (With assistance 9666from 9667Alexey Starikovskiy) 9668 9669Implemented support within the resource conversion code for the Type- 9670Specific byte within the various ACPI 3.0 *WordSpace macros. 9671 9672Fixed some issues within the resource conversion code for the type- 9673specific 9674flags for both Memory and I/O address resource descriptors. For Memory, 9675implemented support for the MTP and TTP flags. For I/O, split the TRS and 9676TTP flags into two separate fields. 9677 9678Code and Data Size: The current and previous library sizes for the core 9679subsystem are shown below. These are the code and data sizes for the 9680acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9681These 9682values do not include any ACPI driver or OSPM code. The debug version of 9683the 9684code includes the debug output trace mechanism and has a much larger code 9685and data size. Note that these values will vary depending on the 9686efficiency 9687of the compiler and the compiler options used during generation. 9688 9689 Previous Release: 9690 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9691 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9692 Current Release: 9693 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 9694 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 9695 9696 9697 96982) iASL Compiler/Disassembler: 9699 9700Relaxed a compiler restriction that disallowed a ResourceIndex byte if 9701the 9702corresponding ResourceSource string was not also present in a resource 9703descriptor declaration. This restriction caused problems with existing 9704AML/ASL code that includes the Index byte without the string. When such 9705AML 9706was disassembled, it could not be compiled without modification. Further, 9707the modified code created a resource template with a different size than 9708the 9709original, breaking code that used fixed offsets into the resource 9710template 9711buffer. 9712 9713Removed a recent feature of the disassembler to ignore a lone 9714ResourceIndex 9715byte. This byte is now emitted if present so that the exact AML can be 9716reproduced when the disassembled code is recompiled. 9717 9718Improved comments and text alignment for the resource descriptor code 9719emitted by the disassembler. 9720 9721Implemented disassembler support for the ACPI 3.0 AccessSize field within 9722a 9723Register() resource descriptor. 9724 9725---------------------------------------- 972630 September 2005. Summary of changes for version 20050930: 9727 97281) ACPI CA Core Subsystem: 9729 9730Completed a major overhaul of the Resource Manager code - specifically, 9731optimizations in the area of the AML/internal resource conversion code. 9732The 9733code has been optimized to simplify and eliminate duplicated code, CPU 9734stack 9735use has been decreased by optimizing function parameters and local 9736variables, and naming conventions across the manager have been 9737standardized 9738for clarity and ease of maintenance (this includes function, parameter, 9739variable, and struct/typedef names.) The update may force changes in some 9740driver code, depending on how resources are handled by the host OS. 9741 9742All Resource Manager dispatch and information tables have been moved to a 9743single location for clarity and ease of maintenance. One new file was 9744created, named "rsinfo.c". 9745 9746The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 9747guarantee that the argument is not evaluated twice, making them less 9748prone 9749to macro side-effects. However, since there exists the possibility of 9750additional stack use if a particular compiler cannot optimize them (such 9751as 9752in the debug generation case), the original macros are optionally 9753available. 9754Note that some invocations of the return_VALUE macro may now cause size 9755mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 9756to 9757eliminate these. (From Randy Dunlap) 9758 9759Implemented a new mechanism to enable debug tracing for individual 9760control 9761methods. A new external interface, AcpiDebugTrace, is provided to enable 9762this mechanism. The intent is to allow the host OS to easily enable and 9763disable tracing for problematic control methods. This interface can be 9764easily exposed to a user or debugger interface if desired. See the file 9765psxface.c for details. 9766 9767AcpiUtCallocate will now return a valid pointer if a length of zero is 9768specified - a length of one is used and a warning is issued. This matches 9769the behavior of AcpiUtAllocate. 9770 9771Code and Data Size: The current and previous library sizes for the core 9772subsystem are shown below. These are the code and data sizes for the 9773acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9774These 9775values do not include any ACPI driver or OSPM code. The debug version of 9776the 9777code includes the debug output trace mechanism and has a much larger code 9778and data size. Note that these values will vary depending on the 9779efficiency 9780of the compiler and the compiler options used during generation. 9781 9782 Previous Release: 9783 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9784 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9785 Current Release: 9786 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9787 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9788 9789 97902) iASL Compiler/Disassembler: 9791 9792A remark is issued if the effective compile-time length of a package or 9793buffer is zero. Previously, this was a warning. 9794 9795---------------------------------------- 979616 September 2005. Summary of changes for version 20050916: 9797 97981) ACPI CA Core Subsystem: 9799 9800Fixed a problem within the Resource Manager where support for the Generic 9801Register descriptor was not fully implemented. This descriptor is now 9802fully 9803recognized, parsed, disassembled, and displayed. 9804 9805Completely restructured the Resource Manager code to utilize table-driven 9806dispatch and lookup, eliminating many of the large switch() statements. 9807This 9808reduces overall subsystem code size and code complexity. Affects the 9809resource parsing and construction, disassembly, and debug dump output. 9810 9811Cleaned up and restructured the debug dump output for all resource 9812descriptors. Improved readability of the output and reduced code size. 9813 9814Fixed a problem where changes to internal data structures caused the 9815optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 9816 9817Code and Data Size: The current and previous library sizes for the core 9818subsystem are shown below. These are the code and data sizes for the 9819acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9820These 9821values do not include any ACPI driver or OSPM code. The debug version of 9822the 9823code includes the debug output trace mechanism and has a much larger code 9824and data size. Note that these values will vary depending on the 9825efficiency 9826of the compiler and the compiler options used during generation. 9827 9828 Previous Release: 9829 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 9830 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 9831 Current Release: 9832 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9833 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9834 9835 98362) iASL Compiler/Disassembler: 9837 9838Updated the disassembler to automatically insert an EndDependentFn() 9839macro 9840into the ASL stream if this macro is missing in the original AML code, 9841simplifying compilation of the resulting ASL module. 9842 9843Fixed a problem in the disassembler where a disassembled ResourceSource 9844string (within a large resource descriptor) was not surrounded by quotes 9845and 9846not followed by a comma, causing errors when the resulting ASL module was 9847compiled. Also, escape sequences within a ResourceSource string are now 9848handled correctly (especially "\\") 9849 9850---------------------------------------- 985102 September 2005. Summary of changes for version 20050902: 9852 98531) ACPI CA Core Subsystem: 9854 9855Fixed a problem with the internal Owner ID allocation and deallocation 9856mechanisms for control method execution and recursive method invocation. 9857This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 9858messages seen on some systems. Recursive method invocation depth is 9859currently limited to 255. (Alexey Starikovskiy) 9860 9861Completely eliminated all vestiges of support for the "module-level 9862executable code" until this support is fully implemented and debugged. 9863This 9864should eliminate the NO_RETURN_VALUE exceptions seen during table load on 9865some systems that invoke this support. 9866 9867Fixed a problem within the resource manager code where the transaction 9868flags 9869for a 64-bit address descriptor were handled incorrectly in the type- 9870specific flag byte. 9871 9872Consolidated duplicate code within the address descriptor resource 9873manager 9874code, reducing overall subsystem code size. 9875 9876Fixed a fault when using the AML debugger "disassemble" command to 9877disassemble individual control methods. 9878 9879Removed references to the "release_current" directory within the Unix 9880release package. 9881 9882Code and Data Size: The current and previous core subsystem library sizes 9883are shown below. These are the code and data sizes for the acpica.lib 9884produced by the Microsoft Visual C++ 6.0 compiler. These values do not 9885include any ACPI driver or OSPM code. The debug version of the code 9886includes 9887the debug output trace mechanism and has a much larger code and data 9888size. 9889Note that these values will vary depending on the efficiency of the 9890compiler 9891and the compiler options used during generation. 9892 9893 Previous Release: 9894 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9895 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 9896 Current Release: 9897 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 9898 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 9899 9900 99012) iASL Compiler/Disassembler: 9902 9903Implemented an error check for illegal duplicate values in the interrupt 9904and 9905dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 9906Interrupt(). 9907 9908Implemented error checking for the Irq() and IrqNoFlags() macros to 9909detect 9910too many values in the interrupt list (16 max) and invalid values in the 9911list (range 0 - 15) 9912 9913The maximum length string literal within an ASL file is now restricted to 9914200 characters as per the ACPI specification. 9915 9916Fixed a fault when using the -ln option (generate namespace listing). 9917 9918Implemented an error check to determine if a DescriptorName within a 9919resource descriptor has already been used within the current scope. 9920 9921---------------------------------------- 992215 August 2005. Summary of changes for version 20050815: 9923 99241) ACPI CA Core Subsystem: 9925 9926Implemented a full bytewise compare to determine if a table load request 9927is 9928attempting to load a duplicate table. The compare is performed if the 9929table 9930signatures and table lengths match. This will allow different tables with 9931the same OEM Table ID and revision to be loaded - probably against the 9932ACPI 9933specification, but discovered in the field nonetheless. 9934 9935Added the changes.txt logfile to each of the zipped release packages. 9936 9937Code and Data Size: Current and previous core subsystem library sizes are 9938shown below. These are the code and data sizes for the acpica.lib 9939produced 9940by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9941any ACPI driver or OSPM code. The debug version of the code includes the 9942debug output trace mechanism and has a much larger code and data size. 9943Note 9944that these values will vary depending on the efficiency of the compiler 9945and 9946the compiler options used during generation. 9947 9948 Previous Release: 9949 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9950 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 9951 Current Release: 9952 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9953 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 9954 9955 99562) iASL Compiler/Disassembler: 9957 9958Fixed a problem where incorrect AML code could be generated for Package 9959objects if optimization is disabled (via the -oa switch). 9960 9961Fixed a problem with where incorrect AML code is generated for variable- 9962length packages when the package length is not specified and the number 9963of 9964initializer values is greater than 255. 9965 9966 9967---------------------------------------- 996829 July 2005. Summary of changes for version 20050729: 9969 99701) ACPI CA Core Subsystem: 9971 9972Implemented support to ignore an attempt to install/load a particular 9973ACPI 9974table more than once. Apparently there exists BIOS code that repeatedly 9975attempts to load the same SSDT upon certain events. With assistance from 9976Venkatesh Pallipadi. 9977 9978Restructured the main interface to the AML parser in order to correctly 9979handle all exceptional conditions. This will prevent leakage of the 9980OwnerId 9981resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 9982some 9983machines. With assistance from Alexey Starikovskiy. 9984 9985Support for "module level code" has been disabled in this version due to 9986a 9987number of issues that have appeared on various machines. The support can 9988be 9989enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 9990compilation. When the issues are fully resolved, the code will be enabled 9991by 9992default again. 9993 9994Modified the internal functions for debug print support to define the 9995FunctionName parameter as a (const char *) for compatibility with 9996compiler 9997built-in macros such as __FUNCTION__, etc. 9998 9999Linted the entire ACPICA source tree for both 32-bit and 64-bit. 10000 10001Implemented support to display an object count summary for the AML 10002Debugger 10003commands Object and Methods. 10004 10005Code and Data Size: Current and previous core subsystem library sizes are 10006shown below. These are the code and data sizes for the acpica.lib 10007produced 10008by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10009any ACPI driver or OSPM code. The debug version of the code includes the 10010debug output trace mechanism and has a much larger code and data size. 10011Note 10012that these values will vary depending on the efficiency of the compiler 10013and 10014the compiler options used during generation. 10015 10016 Previous Release: 10017 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10018 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10019 Current Release: 10020 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10021 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10022 10023 100242) iASL Compiler/Disassembler: 10025 10026Fixed a regression that appeared in the 20050708 version of the compiler 10027where an error message was inadvertently emitted for invocations of the 10028_OSI 10029reserved control method. 10030 10031---------------------------------------- 1003208 July 2005. Summary of changes for version 20050708: 10033 100341) ACPI CA Core Subsystem: 10035 10036The use of the CPU stack in the debug version of the subsystem has been 10037considerably reduced. Previously, a debug structure was declared in every 10038function that used the debug macros. This structure has been removed in 10039favor of declaring the individual elements as parameters to the debug 10040functions. This reduces the cumulative stack use during nested execution 10041of 10042ACPI function calls at the cost of a small increase in the code size of 10043the 10044debug version of the subsystem. With assistance from Alexey Starikovskiy 10045and 10046Len Brown. 10047 10048Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 10049headers to define a macro that will return the current function name at 10050runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 10051by 10052the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 10053compiler-dependent header, the function name is saved on the CPU stack 10054(one 10055pointer per function.) This mechanism is used because apparently there 10056exists no standard ANSI-C defined macro that that returns the function 10057name. 10058 10059Redesigned and reimplemented the "Owner ID" mechanism used to track 10060namespace objects created/deleted by ACPI tables and control method 10061execution. A bitmap is now used to allocate and free the IDs, thus 10062solving 10063the wraparound problem present in the previous implementation. The size 10064of 10065the namespace node descriptor was reduced by 2 bytes as a result (Alexey 10066Starikovskiy). 10067 10068Removed the UINT32_BIT and UINT16_BIT types that were used for the 10069bitfield 10070flag definitions within the headers for the predefined ACPI tables. These 10071have been replaced by UINT8_BIT in order to increase the code portability 10072of 10073the subsystem. If the use of UINT8 remains a problem, we may be forced to 10074eliminate bitfields entirely because of a lack of portability. 10075 10076Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 10077This 10078is a frequently used function and this improvement increases the 10079performance 10080of the entire subsystem (Alexey Starikovskiy). 10081 10082Fixed several possible memory leaks and the inverse - premature object 10083deletion (Alexey Starikovskiy). 10084 10085Code and Data Size: Current and previous core subsystem library sizes are 10086shown below. These are the code and data sizes for the acpica.lib 10087produced 10088by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10089any ACPI driver or OSPM code. The debug version of the code includes the 10090debug output trace mechanism and has a much larger code and data size. 10091Note 10092that these values will vary depending on the efficiency of the compiler 10093and 10094the compiler options used during generation. 10095 10096 Previous Release: 10097 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10098 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10099 Current Release: 10100 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10101 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10102 10103---------------------------------------- 1010424 June 2005. Summary of changes for version 20050624: 10105 101061) ACPI CA Core Subsystem: 10107 10108Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 10109the host-defined cache object. This allows the OSL implementation to 10110define 10111and type this object in any manner desired, simplifying the OSL 10112implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 10113Linux, and should be defined in the OS-specific header file for other 10114operating systems as required. 10115 10116Changed the interface to AcpiOsAcquireObject to directly return the 10117requested object as the function return (instead of ACPI_STATUS.) This 10118change was made for performance reasons, since this is the purpose of the 10119interface in the first place. AcpiOsAcquireObject is now similar to the 10120AcpiOsAllocate interface. 10121 10122Implemented a new AML debugger command named Businfo. This command 10123displays 10124information about all devices that have an associate _PRT object. The 10125_ADR, 10126_HID, _UID, and _CID are displayed for these devices. 10127 10128Modified the initialization sequence in AcpiInitializeSubsystem to call 10129the 10130OSL interface AcpiOslInitialize first, before any local initialization. 10131This 10132change was required because the global initialization now calls OSL 10133interfaces. 10134 10135Enhanced the Dump command to display the entire contents of Package 10136objects 10137(including all sub-objects and their values.) 10138 10139Restructured the code base to split some files because of size and/or 10140because the code logically belonged in a separate file. New files are 10141listed 10142below. All makefiles and project files included in the ACPI CA release 10143have 10144been updated. 10145 utilities/utcache.c /* Local cache interfaces */ 10146 utilities/utmutex.c /* Local mutex support */ 10147 utilities/utstate.c /* State object support */ 10148 interpreter/parser/psloop.c /* Main AML parse loop */ 10149 10150Code and Data Size: Current and previous core subsystem library sizes are 10151shown below. These are the code and data sizes for the acpica.lib 10152produced 10153by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10154any ACPI driver or OSPM code. The debug version of the code includes the 10155debug output trace mechanism and has a much larger code and data size. 10156Note 10157that these values will vary depending on the efficiency of the compiler 10158and 10159the compiler options used during generation. 10160 10161 Previous Release: 10162 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10163 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10164 Current Release: 10165 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10166 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10167 10168 101692) iASL Compiler/Disassembler: 10170 10171Fixed a regression introduced in version 20050513 where the use of a 10172Package 10173object within a Case() statement caused a compile time exception. The 10174original behavior has been restored (a Match() operator is emitted.) 10175 10176---------------------------------------- 1017717 June 2005. Summary of changes for version 20050617: 10178 101791) ACPI CA Core Subsystem: 10180 10181Moved the object cache operations into the OS interface layer (OSL) to 10182allow 10183the host OS to handle these operations if desired (for example, the Linux 10184OSL will invoke the slab allocator). This support is optional; the 10185compile 10186time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 10187cache 10188code in the ACPI CA core. The new OSL interfaces are shown below. See 10189utalloc.c for an example implementation, and acpiosxf.h for the exact 10190interface definitions. With assistance from Alexey Starikovskiy. 10191 AcpiOsCreateCache 10192 AcpiOsDeleteCache 10193 AcpiOsPurgeCache 10194 AcpiOsAcquireObject 10195 AcpiOsReleaseObject 10196 10197Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 10198return 10199and restore a flags parameter. This fits better with many OS lock models. 10200Note: the current execution state (interrupt handler or not) is no longer 10201passed to these interfaces. If necessary, the OSL must determine this 10202state 10203by itself, a simple and fast operation. With assistance from Alexey 10204Starikovskiy. 10205 10206Fixed a problem in the ACPI table handling where a valid XSDT was assumed 10207present if the revision of the RSDP was 2 or greater. According to the 10208ACPI 10209specification, the XSDT is optional in all cases, and the table manager 10210therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 10211Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 10212contain 10213only the RSDT. 10214 10215Fixed an interpreter problem with the Mid() operator in the case of an 10216input 10217string where the resulting output string is of zero length. It now 10218correctly 10219returns a valid, null terminated string object instead of a string object 10220with a null pointer. 10221 10222Fixed a problem with the control method argument handling to allow a 10223store 10224to an Arg object that already contains an object of type Device. The 10225Device 10226object is now correctly overwritten. Previously, an error was returned. 10227 10228 10229Enhanced the debugger Find command to emit object values in addition to 10230the 10231found object pathnames. The output format is the same as the dump 10232namespace 10233command. 10234 10235Enhanced the debugger Set command. It now has the ability to set the 10236value 10237of any Named integer object in the namespace (Previously, only method 10238locals 10239and args could be set.) 10240 10241Code and Data Size: Current and previous core subsystem library sizes are 10242shown below. These are the code and data sizes for the acpica.lib 10243produced 10244by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10245any ACPI driver or OSPM code. The debug version of the code includes the 10246debug output trace mechanism and has a much larger code and data size. 10247Note 10248that these values will vary depending on the efficiency of the compiler 10249and 10250the compiler options used during generation. 10251 10252 Previous Release: 10253 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10254 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10255 Current Release: 10256 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10257 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10258 10259 102602) iASL Compiler/Disassembler: 10261 10262Fixed a regression in the disassembler where if/else/while constructs 10263were 10264output incorrectly. This problem was introduced in the previous release 10265(20050526). This problem also affected the single-step disassembly in the 10266debugger. 10267 10268Fixed a problem where compiling the reserved _OSI method would randomly 10269(but 10270rarely) produce compile errors. 10271 10272Enhanced the disassembler to emit compilable code in the face of 10273incorrect 10274AML resource descriptors. If the optional ResourceSourceIndex is present, 10275but the ResourceSource is not, do not emit the ResourceSourceIndex in the 10276disassembly. Otherwise, the resulting code cannot be compiled without 10277errors. 10278 10279---------------------------------------- 1028026 May 2005. Summary of changes for version 20050526: 10281 102821) ACPI CA Core Subsystem: 10283 10284Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 10285the module level (not within a control method.) These opcodes are 10286executed 10287exactly once at the time the table is loaded. This type of code was legal 10288up 10289until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 10290in 10291order to provide backwards compatibility with earlier BIOS 10292implementations. 10293This eliminates the "Encountered executable code at module level" warning 10294that was previously generated upon detection of such code. 10295 10296Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 10297inadvertently be generated during the lookup of namespace objects in the 10298second pass parse of ACPI tables and control methods. It appears that 10299this 10300problem could occur during the resolution of forward references to 10301namespace 10302objects. 10303 10304Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 10305corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 10306allows the deadlock detection debug code to be compiled out in the normal 10307case, improving mutex performance (and overall subsystem performance) 10308considerably. 10309 10310Implemented a handful of miscellaneous fixes for possible memory leaks on 10311error conditions and error handling control paths. These fixes were 10312suggested by FreeBSD and the Coverity Prevent source code analysis tool. 10313 10314Added a check for a null RSDT pointer in AcpiGetFirmwareTable 10315(tbxfroot.c) 10316to prevent a fault in this error case. 10317 10318Code and Data Size: Current and previous core subsystem library sizes are 10319shown below. These are the code and data sizes for the acpica.lib 10320produced 10321by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10322any ACPI driver or OSPM code. The debug version of the code includes the 10323debug output trace mechanism and has a much larger code and data size. 10324Note 10325that these values will vary depending on the efficiency of the compiler 10326and 10327the compiler options used during generation. 10328 10329 Previous Release: 10330 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10331 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10332 Current Release: 10333 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10334 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10335 10336 103372) iASL Compiler/Disassembler: 10338 10339Implemented support to allow Type 1 and Type 2 ASL operators to appear at 10340the module level (not within a control method.) These operators will be 10341executed once at the time the table is loaded. This type of code was 10342legal 10343up until the release of ACPI 2.0B (2002) and is now supported by the iASL 10344compiler in order to provide backwards compatibility with earlier BIOS 10345ASL 10346code. 10347 10348The ACPI integer width (specified via the table revision ID or the -r 10349override, 32 or 64 bits) is now used internally during compile-time 10350constant 10351folding to ensure that constants are truncated to 32 bits if necessary. 10352Previously, the revision ID value was only emitted in the AML table 10353header. 10354 10355An error message is now generated for the Mutex and Method operators if 10356the 10357SyncLevel parameter is outside the legal range of 0 through 15. 10358 10359Fixed a problem with the Method operator ParameterTypes list handling 10360(ACPI 103613.0). Previously, more than 2 types or 2 arguments generated a syntax 10362error. 10363The actual underlying implementation of method argument typechecking is 10364still under development, however. 10365 10366---------------------------------------- 1036713 May 2005. Summary of changes for version 20050513: 10368 103691) ACPI CA Core Subsystem: 10370 10371Implemented support for PCI Express root bridges -- added support for 10372device 10373PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 10374 10375The interpreter now automatically truncates incoming 64-bit constants to 1037632 10377bits if currently executing out of a 32-bit ACPI table (Revision < 2). 10378This 10379also affects the iASL compiler constant folding. (Note: as per below, the 10380iASL compiler no longer allows 64-bit constants within 32-bit tables.) 10381 10382Fixed a problem where string and buffer objects with "static" pointers 10383(pointers to initialization data within an ACPI table) were not handled 10384consistently. The internal object copy operation now always copies the 10385data 10386to a newly allocated buffer, regardless of whether the source object is 10387static or not. 10388 10389Fixed a problem with the FromBCD operator where an implicit result 10390conversion was improperly performed while storing the result to the 10391target 10392operand. Since this is an "explicit conversion" operator, the implicit 10393conversion should never be performed on the output. 10394 10395Fixed a problem with the CopyObject operator where a copy to an existing 10396named object did not always completely overwrite the existing object 10397stored 10398at name. Specifically, a buffer-to-buffer copy did not delete the 10399existing 10400buffer. 10401 10402Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 10403and 10404structs for consistency. 10405 10406Code and Data Size: Current and previous core subsystem library sizes are 10407shown below. These are the code and data sizes for the acpica.lib 10408produced 10409by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10410any ACPI driver or OSPM code. The debug version of the code includes the 10411debug output trace mechanism and has a much larger code and data size. 10412Note 10413that these values will vary depending on the efficiency of the compiler 10414and 10415the compiler options used during generation. 10416 10417 Previous Release: 10418 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10419 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10420 Current Release: (Same sizes) 10421 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10422 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10423 10424 104252) iASL Compiler/Disassembler: 10426 10427The compiler now emits a warning if an attempt is made to generate a 64- 10428bit 10429integer constant from within a 32-bit ACPI table (Revision < 2). The 10430integer 10431is truncated to 32 bits. 10432 10433Fixed a problem with large package objects: if the static length of the 10434package is greater than 255, the "variable length package" opcode is 10435emitted. Previously, this caused an error. This requires an update to the 10436ACPI spec, since it currently (incorrectly) states that packages larger 10437than 10438255 elements are not allowed. 10439 10440The disassembler now correctly handles variable length packages and 10441packages 10442larger than 255 elements. 10443 10444---------------------------------------- 1044508 April 2005. Summary of changes for version 20050408: 10446 104471) ACPI CA Core Subsystem: 10448 10449Fixed three cases in the interpreter where an "index" argument to an ASL 10450function was still (internally) 32 bits instead of the required 64 bits. 10451This was the Index argument to the Index, Mid, and Match operators. 10452 10453The "strupr" function is now permanently local (AcpiUtStrupr), since this 10454is 10455not a POSIX-defined function and not present in most kernel-level C 10456libraries. All references to the C library strupr function have been 10457removed 10458from the headers. 10459 10460Completed the deployment of static functions/prototypes. All prototypes 10461with 10462the static attribute have been moved from the headers to the owning C 10463file. 10464 10465Implemented an extract option (-e) for the AcpiBin utility (AML binary 10466utility). This option allows the utility to extract individual ACPI 10467tables 10468from the output of AcpiDmp. It provides the same functionality of the 10469acpixtract.pl perl script without the worry of setting the correct perl 10470options. AcpiBin runs on Windows and has not yet been generated/validated 10471in 10472the Linux/Unix environment (but should be soon). 10473 10474Updated and fixed the table dump option for AcpiBin (-d). This option 10475converts a single ACPI table to a hex/ascii file, similar to the output 10476of 10477AcpiDmp. 10478 10479Code and Data Size: Current and previous core subsystem library sizes are 10480shown below. These are the code and data sizes for the acpica.lib 10481produced 10482by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10483any ACPI driver or OSPM code. The debug version of the code includes the 10484debug output trace mechanism and has a much larger code and data size. 10485Note 10486that these values will vary depending on the efficiency of the compiler 10487and 10488the compiler options used during generation. 10489 10490 Previous Release: 10491 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10492 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10493 Current Release: 10494 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10495 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10496 10497 104982) iASL Compiler/Disassembler: 10499 10500Disassembler fix: Added a check to ensure that the table length found in 10501the 10502ACPI table header within the input file is not longer than the actual 10503input 10504file size. This indicates some kind of file or table corruption. 10505 10506---------------------------------------- 1050729 March 2005. Summary of changes for version 20050329: 10508 105091) ACPI CA Core Subsystem: 10510 10511An error is now generated if an attempt is made to create a Buffer Field 10512of 10513length zero (A CreateField with a length operand of zero.) 10514 10515The interpreter now issues a warning whenever executable code at the 10516module 10517level is detected during ACPI table load. This will give some idea of the 10518prevalence of this type of code. 10519 10520Implemented support for references to named objects (other than control 10521methods) within package objects. 10522 10523Enhanced package object output for the debug object. Package objects are 10524now 10525completely dumped, showing all elements. 10526 10527Enhanced miscellaneous object output for the debug object. Any object can 10528now be written to the debug object (for example, a device object can be 10529written, and the type of the object will be displayed.) 10530 10531The "static" qualifier has been added to all local functions across both 10532the 10533core subsystem and the iASL compiler. 10534 10535The number of "long" lines (> 80 chars) within the source has been 10536significantly reduced, by about 1/3. 10537 10538Cleaned up all header files to ensure that all CA/iASL functions are 10539prototyped (even static functions) and the formatting is consistent. 10540 10541Two new header files have been added, acopcode.h and acnames.h. 10542 10543Removed several obsolete functions that were no longer used. 10544 10545Code and Data Size: Current and previous core subsystem library sizes are 10546shown below. These are the code and data sizes for the acpica.lib 10547produced 10548by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10549any ACPI driver or OSPM code. The debug version of the code includes the 10550debug output trace mechanism and has a much larger code and data size. 10551Note 10552that these values will vary depending on the efficiency of the compiler 10553and 10554the compiler options used during generation. 10555 10556 Previous Release: 10557 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10558 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 10559 Current Release: 10560 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10561 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10562 10563 10564 105652) iASL Compiler/Disassembler: 10566 10567Fixed a problem with the resource descriptor generation/support. For the 10568ResourceSourceIndex and the ResourceSource fields, both must be present, 10569or 10570both must be not present - can't have one without the other. 10571 10572The compiler now returns non-zero from the main procedure if any errors 10573have 10574occurred during the compilation. 10575 10576 10577---------------------------------------- 1057809 March 2005. Summary of changes for version 20050309: 10579 105801) ACPI CA Core Subsystem: 10581 10582The string-to-buffer implicit conversion code has been modified again 10583after 10584a change to the ACPI specification. In order to match the behavior of 10585the 10586other major ACPI implementation, the target buffer is no longer truncated 10587if 10588the source string is smaller than an existing target buffer. This change 10589requires an update to the ACPI spec, and should eliminate the recent 10590AE_AML_BUFFER_LIMIT issues. 10591 10592The "implicit return" support was rewritten to a new algorithm that 10593solves 10594the general case. Rather than attempt to determine when a method is about 10595to 10596exit, the result of every ASL operator is saved momentarily until the 10597very 10598next ASL operator is executed. Therefore, no matter how the method exits, 10599there will always be a saved implicit return value. This feature is only 10600enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 10601eliminate 10602AE_AML_NO_RETURN_VALUE errors when enabled. 10603 10604Implemented implicit conversion support for the predicate (operand) of 10605the 10606If, Else, and While operators. String and Buffer arguments are 10607automatically 10608converted to Integers. 10609 10610Changed the string-to-integer conversion behavior to match the new ACPI 10611errata: "If no integer object exists, a new integer is created. The ASCII 10612string is interpreted as a hexadecimal constant. Each string character is 10613interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 10614with the first character as the most significant digit, and ending with 10615the 10616first non-hexadecimal character or end-of-string." This means that the 10617first 10618non-hex character terminates the conversion and this is the code that was 10619changed. 10620 10621Fixed a problem where the ObjectType operator would fail (fault) when 10622used 10623on an Index of a Package which pointed to a null package element. The 10624operator now properly returns zero (Uninitialized) in this case. 10625 10626Fixed a problem where the While operator used excessive memory by not 10627properly popping the result stack during execution. There was no memory 10628leak 10629after execution, however. (Code provided by Valery Podrezov.) 10630 10631Fixed a problem where references to control methods within Package 10632objects 10633caused the method to be invoked, instead of producing a reference object 10634pointing to the method. 10635 10636Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 10637to 10638improve performance and reduce code size. (Code provided by Alexey 10639Starikovskiy.) 10640 10641Code and Data Size: Current and previous core subsystem library sizes are 10642shown below. These are the code and data sizes for the acpica.lib 10643produced 10644by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10645any ACPI driver or OSPM code. The debug version of the code includes the 10646debug output trace mechanism and has a much larger code and data size. 10647Note 10648that these values will vary depending on the efficiency of the compiler 10649and 10650the compiler options used during generation. 10651 10652 Previous Release: 10653 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10654 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10655 Current Release: 10656 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10657 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 10658 10659 106602) iASL Compiler/Disassembler: 10661 10662Fixed a problem with the Return operator with no arguments. Since the AML 10663grammar for the byte encoding requires an operand for the Return opcode, 10664the 10665compiler now emits a Return(Zero) for this case. An ACPI specification 10666update has been written for this case. 10667 10668For tables other than the DSDT, namepath optimization is automatically 10669disabled. This is because SSDTs can be loaded anywhere in the namespace, 10670the 10671compiler has no knowledge of where, and thus cannot optimize namepaths. 10672 10673Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 10674inadvertently omitted from the ACPI specification, and will require an 10675update to the spec. 10676 10677The source file scan for ASCII characters is now optional (-a). This 10678change 10679was made because some vendors place non-ascii characters within comments. 10680However, the scan is simply a brute-force byte compare to ensure all 10681characters in the file are in the range 0x00 to 0x7F. 10682 10683Fixed a problem with the CondRefOf operator where the compiler was 10684inappropriately checking for the existence of the target. Since the point 10685of 10686the operator is to check for the existence of the target at run-time, the 10687compiler no longer checks for the target existence. 10688 10689Fixed a problem where errors generated from the internal AML interpreter 10690during constant folding were not handled properly, causing a fault. 10691 10692Fixed a problem with overly aggressive range checking for the Stall 10693operator. The valid range (max 255) is now only checked if the operand is 10694of 10695type Integer. All other operand types cannot be statically checked. 10696 10697Fixed a problem where control method references within the RefOf, 10698DeRefOf, 10699and ObjectType operators were not treated properly. They are now treated 10700as 10701actual references, not method invocations. 10702 10703Fixed and enhanced the "list namespace" option (-ln). This option was 10704broken 10705a number of releases ago. 10706 10707Improved error handling for the Field, IndexField, and BankField 10708operators. 10709The compiler now cleanly reports and recovers from errors in the field 10710component (FieldUnit) list. 10711 10712Fixed a disassembler problem where the optional ResourceDescriptor fields 10713TRS and TTP were not always handled correctly. 10714 10715Disassembler - Comments in output now use "//" instead of "/*" 10716 10717---------------------------------------- 1071828 February 2005. Summary of changes for version 20050228: 10719 107201) ACPI CA Core Subsystem: 10721 10722Fixed a problem where the result of an Index() operator (an object 10723reference) must increment the reference count on the target object for 10724the 10725life of the object reference. 10726 10727Implemented AML Interpreter and Debugger support for the new ACPI 3.0 10728Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 10729WordSpace 10730resource descriptors. 10731 10732Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 10733Space Descriptor" string, indicating interpreter support for the 10734descriptors 10735above. 10736 10737Implemented header support for the new ACPI 3.0 FADT flag bits. 10738 10739Implemented header support for the new ACPI 3.0 PCI Express bits for the 10740PM1 10741status/enable registers. 10742 10743Updated header support for the MADT processor local Apic struct and MADT 10744platform interrupt source struct for new ACPI 3.0 fields. 10745 10746Implemented header support for the SRAT and SLIT ACPI tables. 10747 10748Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 10749flag 10750at runtime. 10751 10752Code and Data Size: Current and previous core subsystem library sizes are 10753shown below. These are the code and data sizes for the acpica.lib 10754produced 10755by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10756any ACPI driver or OSPM code. The debug version of the code includes the 10757debug output trace mechanism and has a much larger code and data size. 10758Note 10759that these values will vary depending on the efficiency of the compiler 10760and 10761the compiler options used during generation. 10762 10763 Previous Release: 10764 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10765 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10766 Current Release: 10767 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10768 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10769 10770 107712) iASL Compiler/Disassembler: 10772 10773Fixed a problem with the internal 64-bit String-to-integer conversion 10774with 10775strings less than two characters long. 10776 10777Fixed a problem with constant folding where the result of the Index() 10778operator can not be considered a constant. This means that Index() cannot 10779be 10780a type3 opcode and this will require an update to the ACPI specification. 10781 10782Disassembler: Implemented support for the TTP, MTP, and TRS resource 10783descriptor fields. These fields were inadvertently ignored and not output 10784in 10785the disassembly of the resource descriptor. 10786 10787 10788 ---------------------------------------- 1078911 February 2005. Summary of changes for version 20050211: 10790 107911) ACPI CA Core Subsystem: 10792 10793Implemented ACPI 3.0 support for implicit conversion within the Match() 10794operator. MatchObjects can now be of type integer, buffer, or string 10795instead 10796of just type integer. Package elements are implicitly converted to the 10797type 10798of the MatchObject. This change aligns the behavior of Match() with the 10799behavior of the other logical operators (LLess(), etc.) It also requires 10800an 10801errata change to the ACPI specification as this support was intended for 10802ACPI 3.0, but was inadvertently omitted. 10803 10804Fixed a problem with the internal implicit "to buffer" conversion. 10805Strings 10806that are converted to buffers will cause buffer truncation if the string 10807is 10808smaller than the target buffer. Integers that are converted to buffers 10809will 10810not cause buffer truncation, only zero extension (both as per the ACPI 10811spec.) The problem was introduced when code was added to truncate the 10812buffer, but this should not be performed in all cases, only the string 10813case. 10814 10815Fixed a problem with the Buffer and Package operators where the 10816interpreter 10817would get confused if two such operators were used as operands to an ASL 10818operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 10819stack was not being popped after the execution of these operators, 10820resulting 10821in an AE_NO_RETURN_VALUE exception. 10822 10823Fixed a problem with constructs of the form Store(Index(...),...). The 10824reference object returned from Index was inadvertently resolved to an 10825actual 10826value. This problem was introduced in version 20050114 when the behavior 10827of 10828Store() was modified to restrict the object types that can be used as the 10829source operand (to match the ACPI specification.) 10830 10831Reduced excessive stack use within the AcpiGetObjectInfo procedure. 10832 10833Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 10834 10835Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 10836 10837Code and Data Size: Current and previous core subsystem library sizes are 10838shown below. These are the code and data sizes for the acpica.lib 10839produced 10840by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10841any ACPI driver or OSPM code. The debug version of the code includes the 10842debug output trace mechanism and has a much larger code and data size. 10843Note 10844that these values will vary depending on the efficiency of the compiler 10845and 10846the compiler options used during generation. 10847 10848 Previous Release: 10849 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 10850 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 10851 Current Release: 10852 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10853 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10854 10855 108562) iASL Compiler/Disassembler: 10857 10858Fixed a code generation problem in the constant folding optimization code 10859where incorrect code was generated if a constant was reduced to a buffer 10860object (i.e., a reduced type 5 opcode.) 10861 10862Fixed a typechecking problem for the ToBuffer operator. Caused by an 10863incorrect return type in the internal opcode information table. 10864 10865---------------------------------------- 1086625 January 2005. Summary of changes for version 20050125: 10867 108681) ACPI CA Core Subsystem: 10869 10870Fixed a recently introduced problem with the Global Lock where the 10871underlying semaphore was not created. This problem was introduced in 10872version 20050114, and caused an AE_AML_NO_OPERAND exception during an 10873Acquire() operation on _GL. 10874 10875The local object cache is now optional, and is disabled by default. Both 10876AcpiExec and the iASL compiler enable the cache because they run in user 10877mode and this enhances their performance. #define 10878ACPI_ENABLE_OBJECT_CACHE 10879to enable the local cache. 10880 10881Fixed an issue in the internal function AcpiUtEvaluateObject concerning 10882the 10883optional "implicit return" support where an error was returned if no 10884return 10885object was expected, but one was implicitly returned. AE_OK is now 10886returned 10887in this case and the implicitly returned object is deleted. 10888AcpiUtEvaluateObject is only occasionally used, and only to execute 10889reserved 10890methods such as _STA and _INI where the return type is known up front. 10891 10892Fixed a few issues with the internal convert-to-integer code. It now 10893returns 10894an error if an attempt is made to convert a null string, a string of only 10895blanks/tabs, or a zero-length buffer. This affects both implicit 10896conversion 10897and explicit conversion via the ToInteger() operator. 10898 10899The internal debug code in AcpiUtAcquireMutex has been commented out. It 10900is 10901not needed for normal operation and should increase the performance of 10902the 10903entire subsystem. The code remains in case it is needed for debug 10904purposes 10905again. 10906 10907The AcpiExec source and makefile are included in the Unix/Linux package 10908for 10909the first time. 10910 10911Code and Data Size: Current and previous core subsystem library sizes are 10912shown below. These are the code and data sizes for the acpica.lib 10913produced 10914by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10915any ACPI driver or OSPM code. The debug version of the code includes the 10916debug output trace mechanism and has a much larger code and data size. 10917Note 10918that these values will vary depending on the efficiency of the compiler 10919and 10920the compiler options used during generation. 10921 10922 Previous Release: 10923 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 10924 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 10925 Current Release: 10926 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 10927 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 10928 109292) iASL Compiler/Disassembler: 10930 10931Switch/Case support: A warning is now issued if the type of the Switch 10932value 10933cannot be determined at compile time. For example, Switch(Arg0) will 10934generate the warning, and the type is assumed to be an integer. As per 10935the 10936ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 10937the 10938warning. 10939 10940Switch/Case support: Implemented support for buffer and string objects as 10941the switch value. This is an ACPI 3.0 feature, now that LEqual supports 10942buffers and strings. 10943 10944Switch/Case support: The emitted code for the LEqual() comparisons now 10945uses 10946the switch value as the first operand, not the second. The case value is 10947now 10948the second operand, and this allows the case value to be implicitly 10949converted to the type of the switch value, not the other way around. 10950 10951Switch/Case support: Temporary variables are now emitted immediately 10952within 10953the control method, not at the global level. This means that there are 10954now 1095536 temps available per-method, not 36 temps per-module as was the case 10956with 10957the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 10958 10959---------------------------------------- 1096014 January 2005. Summary of changes for version 20050114: 10961 10962Added 2005 copyright to all module headers. This affects every module in 10963the core subsystem, iASL compiler, and the utilities. 10964 109651) ACPI CA Core Subsystem: 10966 10967Fixed an issue with the String-to-Buffer conversion code where the string 10968null terminator was not included in the buffer after conversion, but 10969there 10970is existing ASL that assumes the string null terminator is included. This 10971is 10972the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 10973introduced in the previous version when the code was updated to correctly 10974set the converted buffer size as per the ACPI specification. The ACPI 10975spec 10976is ambiguous and will be updated to specify that the null terminator must 10977be 10978included in the converted buffer. This also affects the ToBuffer() ASL 10979operator. 10980 10981Fixed a problem with the Mid() ASL/AML operator where it did not work 10982correctly on Buffer objects. Newly created sub-buffers were not being 10983marked 10984as initialized. 10985 10986 10987Fixed a problem in AcpiTbFindTable where incorrect string compares were 10988performed on the OemId and OemTableId table header fields. These fields 10989are 10990not null terminated, so strncmp is now used instead of strcmp. 10991 10992Implemented a restriction on the Store() ASL/AML operator to align the 10993behavior with the ACPI specification. Previously, any object could be 10994used 10995as the source operand. Now, the only objects that may be used are 10996Integers, 10997Buffers, Strings, Packages, Object References, and DDB Handles. If 10998necessary, the original behavior can be restored by enabling the 10999EnableInterpreterSlack flag. 11000 11001Enhanced the optional "implicit return" support to allow an implicit 11002return 11003value from methods that are invoked externally via the AcpiEvaluateObject 11004interface. This enables implicit returns from the _STA and _INI methods, 11005for example. 11006 11007Changed the Revision() ASL/AML operator to return the current version of 11008the 11009AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 11010returned 11011the supported ACPI version (This is the function of the _REV method). 11012 11013Updated the _REV predefined method to return the currently supported 11014version 11015of ACPI, now 3. 11016 11017Implemented batch mode option for the AcpiExec utility (-b). 11018 11019Code and Data Size: Current and previous core subsystem library sizes are 11020shown below. These are the code and data sizes for the acpica.lib 11021produced 11022by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11023any ACPI driver or OSPM code. The debug version of the code includes the 11024debug output trace mechanism and has a much larger code and data size. 11025Note 11026that these values will vary depending on the efficiency of the compiler 11027and 11028the compiler options used during generation. 11029 11030 Previous Release: 11031 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11032 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11033 Current Release: 11034 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11035 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11036 11037---------------------------------------- 1103810 December 2004. Summary of changes for version 20041210: 11039 11040ACPI 3.0 support is nearing completion in both the iASL compiler and the 11041ACPI CA core subsystem. 11042 110431) ACPI CA Core Subsystem: 11044 11045Fixed a problem in the ToDecimalString operator where the resulting 11046string 11047length was incorrectly calculated. The length is now calculated exactly, 11048eliminating incorrect AE_STRING_LIMIT exceptions. 11049 11050Fixed a problem in the ToHexString operator to allow a maximum 200 11051character 11052string to be produced. 11053 11054Fixed a problem in the internal string-to-buffer and buffer-to-buffer 11055copy 11056routine where the length of the resulting buffer was not truncated to the 11057new size (if the target buffer already existed). 11058 11059Code and Data Size: Current and previous core subsystem library sizes are 11060shown below. These are the code and data sizes for the acpica.lib 11061produced 11062by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11063any ACPI driver or OSPM code. The debug version of the code includes the 11064debug output trace mechanism and has a much larger code and data size. 11065Note 11066that these values will vary depending on the efficiency of the compiler 11067and 11068the compiler options used during generation. 11069 11070 Previous Release: 11071 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11072 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11073 Current Release: 11074 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11075 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11076 11077 110782) iASL Compiler/Disassembler: 11079 11080Implemented the new ACPI 3.0 resource template macros - DWordSpace, 11081ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 11082Includes support in the disassembler. 11083 11084Implemented support for the new (ACPI 3.0) parameter to the Register 11085macro, 11086AccessSize. 11087 11088Fixed a problem where the _HE resource name for the Interrupt macro was 11089referencing bit 0 instead of bit 1. 11090 11091Implemented check for maximum 255 interrupts in the Interrupt macro. 11092 11093Fixed a problem with the predefined resource descriptor names where 11094incorrect AML code was generated if the offset within the resource buffer 11095was 0 or 1. The optimizer shortened the AML code to a single byte opcode 11096but did not update the surrounding package lengths. 11097 11098Changes to the Dma macro: All channels within the channel list must be 11099in 11100the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 11101optional (default is BusMaster). 11102 11103Implemented check for maximum 7 data bytes for the VendorShort macro. 11104 11105The ReadWrite parameter is now optional for the Memory32 and similar 11106macros. 11107 11108---------------------------------------- 1110903 December 2004. Summary of changes for version 20041203: 11110 111111) ACPI CA Core Subsystem: 11112 11113The low-level field insertion/extraction code (exfldio) has been 11114completely 11115rewritten to eliminate unnecessary complexity, bugs, and boundary 11116conditions. 11117 11118Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 11119ToDecimalString 11120operators where the input operand could be inadvertently deleted if no 11121conversion was necessary (e.g., if the input to ToInteger was an Integer 11122object.) 11123 11124Fixed a problem with the ToDecimalString and ToHexString where an 11125incorrect 11126exception code was returned if the resulting string would be > 200 chars. 11127AE_STRING_LIMIT is now returned. 11128 11129Fixed a problem with the Concatenate operator where AE_OK was always 11130returned, even if the operation failed. 11131 11132Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 11133semaphores to be allocated. 11134 11135Code and Data Size: Current and previous core subsystem library sizes are 11136shown below. These are the code and data sizes for the acpica.lib 11137produced 11138by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11139any ACPI driver or OSPM code. The debug version of the code includes the 11140debug output trace mechanism and has a much larger code and data size. 11141Note 11142that these values will vary depending on the efficiency of the compiler 11143and 11144the compiler options used during generation. 11145 11146 Previous Release: 11147 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11148 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11149 Current Release: 11150 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11151 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11152 11153 111542) iASL Compiler/Disassembler: 11155 11156Fixed typechecking for the ObjectType and SizeOf operators. Problem was 11157recently introduced in 20041119. 11158 11159Fixed a problem with the ToUUID macro where the upper nybble of each 11160buffer 11161byte was inadvertently set to zero. 11162 11163---------------------------------------- 1116419 November 2004. Summary of changes for version 20041119: 11165 111661) ACPI CA Core Subsystem: 11167 11168Fixed a problem in the internal ConvertToInteger routine where new 11169integers 11170were not truncated to 32 bits for 32-bit ACPI tables. This routine 11171converts 11172buffers and strings to integers. 11173 11174Implemented support to store a value to an Index() on a String object. 11175This 11176is an ACPI 2.0 feature that had not yet been implemented. 11177 11178Implemented new behavior for storing objects to individual package 11179elements 11180(via the Index() operator). The previous behavior was to invoke the 11181implicit 11182conversion rules if an object was already present at the index. The new 11183behavior is to simply delete any existing object and directly store the 11184new 11185object. Although the ACPI specification seems unclear on this subject, 11186other 11187ACPI implementations behave in this manner. (This is the root of the 11188AE_BAD_HEX_CONSTANT issue.) 11189 11190Modified the RSDP memory scan mechanism to support the extended checksum 11191for 11192ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 11193RSDP signature is found with a valid checksum. 11194 11195Code and Data Size: Current and previous core subsystem library sizes are 11196shown below. These are the code and data sizes for the acpica.lib 11197produced 11198by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11199any ACPI driver or OSPM code. The debug version of the code includes the 11200debug output trace mechanism and has a much larger code and data size. 11201Note 11202that these values will vary depending on the efficiency of the compiler 11203and 11204the compiler options used during generation. 11205 11206 Previous Release: 11207 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11208 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11209 Current Release: 11210 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11211 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11212 11213 112142) iASL Compiler/Disassembler: 11215 11216Fixed a missing semicolon in the aslcompiler.y file. 11217 11218---------------------------------------- 1121905 November 2004. Summary of changes for version 20041105: 11220 112211) ACPI CA Core Subsystem: 11222 11223Implemented support for FADT revision 2. This was an interim table 11224(between 11225ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 11226 11227Implemented optional support to allow uninitialized LocalX and ArgX 11228variables in a control method. The variables are initialized to an 11229Integer 11230object with a value of zero. This support is enabled by setting the 11231AcpiGbl_EnableInterpreterSlack flag to TRUE. 11232 11233Implemented support for Integer objects for the SizeOf operator. Either 112344 11235or 8 is returned, depending on the current integer size (32-bit or 64- 11236bit, 11237depending on the parent table revision). 11238 11239Fixed a problem in the implementation of the SizeOf and ObjectType 11240operators 11241where the operand was resolved to a value too early, causing incorrect 11242return values for some objects. 11243 11244Fixed some possible memory leaks during exceptional conditions. 11245 11246Code and Data Size: Current and previous core subsystem library sizes are 11247shown below. These are the code and data sizes for the acpica.lib 11248produced 11249by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11250any ACPI driver or OSPM code. The debug version of the code includes the 11251debug output trace mechanism and has a much larger code and data size. 11252Note 11253that these values will vary depending on the efficiency of the compiler 11254and 11255the compiler options used during generation. 11256 11257 Previous Release: 11258 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11259 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11260 Current Release: 11261 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11262 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11263 11264 112652) iASL Compiler/Disassembler: 11266 11267Implemented support for all ACPI 3.0 reserved names and methods. 11268 11269Implemented all ACPI 3.0 grammar elements in the front-end, including 11270support for semicolons. 11271 11272Implemented the ACPI 3.0 Function() and ToUUID() macros 11273 11274Fixed a problem in the disassembler where a Scope() operator would not be 11275emitted properly if the target of the scope was in another table. 11276 11277---------------------------------------- 1127815 October 2004. Summary of changes for version 20041015: 11279 11280Note: ACPI CA is currently undergoing an in-depth and complete formal 11281evaluation to test/verify the following areas. Other suggestions are 11282welcome. This will result in an increase in the frequency of releases and 11283the number of bug fixes in the next few months. 11284 - Functional tests for all ASL/AML operators 11285 - All implicit/explicit type conversions 11286 - Bit fields and operation regions 11287 - 64-bit math support and 32-bit-only "truncated" math support 11288 - Exceptional conditions, both compiler and interpreter 11289 - Dynamic object deletion and memory leaks 11290 - ACPI 3.0 support when implemented 11291 - External interfaces to the ACPI subsystem 11292 11293 112941) ACPI CA Core Subsystem: 11295 11296Fixed two alignment issues on 64-bit platforms - within debug statements 11297in 11298AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 11299Address 11300field within the non-aligned ACPI generic address structure. 11301 11302Fixed a problem in the Increment and Decrement operators where incorrect 11303operand resolution could result in the inadvertent modification of the 11304original integer when the integer is passed into another method as an 11305argument and the arg is then incremented/decremented. 11306 11307Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 11308bit 11309BCD number were truncated during conversion. 11310 11311Fixed a problem in the ToDecimal operator where the length of the 11312resulting 11313string could be set incorrectly too long if the input operand was a 11314Buffer 11315object. 11316 11317Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 11318(0) 11319within a buffer would prematurely terminate a compare between buffer 11320objects. 11321 11322Added a check for string overflow (>200 characters as per the ACPI 11323specification) during the Concatenate operator with two string operands. 11324 11325Code and Data Size: Current and previous core subsystem library sizes are 11326shown below. These are the code and data sizes for the acpica.lib 11327produced 11328by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11329any ACPI driver or OSPM code. The debug version of the code includes the 11330debug output trace mechanism and has a much larger code and data size. 11331Note 11332that these values will vary depending on the efficiency of the compiler 11333and 11334the compiler options used during generation. 11335 11336 Previous Release: 11337 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11338 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 11339 Current Release: 11340 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11341 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11342 11343 11344 113452) iASL Compiler/Disassembler: 11346 11347Allow the use of the ObjectType operator on uninitialized Locals and Args 11348(returns 0 as per the ACPI specification). 11349 11350Fixed a problem where the compiler would fault if there was a syntax 11351error 11352in the FieldName of all of the various CreateXXXField operators. 11353 11354Disallow the use of lower case letters within the EISAID macro, as per 11355the 11356ACPI specification. All EISAID strings must be of the form "UUUNNNN" 11357Where 11358U is an uppercase letter and N is a hex digit. 11359 11360 11361---------------------------------------- 1136206 October 2004. Summary of changes for version 20041006: 11363 113641) ACPI CA Core Subsystem: 11365 11366Implemented support for the ACPI 3.0 Timer operator. This ASL function 11367implements a 64-bit timer with 100 nanosecond granularity. 11368 11369Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 11370implement the ACPI 3.0 Timer operator. This allows the host OS to 11371implement 11372the timer with the best clock available. Also, it keeps the core 11373subsystem 11374out of the clock handling business, since the host OS (usually) performs 11375this function. 11376 11377Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 11378functions use a 64-bit address which is part of the packed ACPI Generic 11379Address Structure. Since the structure is non-aligned, the alignment 11380macros 11381are now used to extract the address to a local variable before use. 11382 11383Fixed a problem where the ToInteger operator assumed all input strings 11384were 11385hexadecimal. The operator now handles both decimal strings and hex 11386strings 11387(prefixed with "0x"). 11388 11389Fixed a problem where the string length in the string object created as a 11390result of the internal ConvertToString procedure could be incorrect. This 11391potentially affected all implicit conversions and also the 11392ToDecimalString 11393and ToHexString operators. 11394 11395Fixed two problems in the ToString operator. If the length parameter was 11396zero, an incorrect string object was created and the value of the input 11397length parameter was inadvertently changed from zero to Ones. 11398 11399Fixed a problem where the optional ResourceSource string in the 11400ExtendedIRQ 11401resource macro was ignored. 11402 11403Simplified the interfaces to the internal division functions, reducing 11404code 11405size and complexity. 11406 11407Code and Data Size: Current and previous core subsystem library sizes are 11408shown below. These are the code and data sizes for the acpica.lib 11409produced 11410by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11411any ACPI driver or OSPM code. The debug version of the code includes the 11412debug output trace mechanism and has a much larger code and data size. 11413Note 11414that these values will vary depending on the efficiency of the compiler 11415and 11416the compiler options used during generation. 11417 11418 Previous Release: 11419 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 11420 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 11421 Current Release: 11422 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11423 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 11424 11425 114262) iASL Compiler/Disassembler: 11427 11428Implemented support for the ACPI 3.0 Timer operator. 11429 11430Fixed a problem where the Default() operator was inadvertently ignored in 11431a 11432Switch/Case block. This was a problem in the translation of the Switch 11433statement to If...Else pairs. 11434 11435Added support to allow a standalone Return operator, with no parentheses 11436(or 11437operands). 11438 11439Fixed a problem with code generation for the ElseIf operator where the 11440translated Else...If parse tree was improperly constructed leading to the 11441loss of some code. 11442 11443---------------------------------------- 1144422 September 2004. Summary of changes for version 20040922: 11445 114461) ACPI CA Core Subsystem: 11447 11448Fixed a problem with the implementation of the LNot() operator where 11449"Ones" 11450was not returned for the TRUE case. Changed the code to return Ones 11451instead 11452of (!Arg) which was usually 1. This change affects iASL constant folding 11453for 11454this operator also. 11455 11456Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 11457not 11458initialized properly -- Now zero the entire buffer in this case where the 11459buffer already exists. 11460 11461Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 11462Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 11463related code considerably. This will require changes/updates to all OS 11464interface layers (OSLs.) 11465 11466Implemented a new external interface, AcpiInstallExceptionHandler, to 11467allow 11468a system exception handler to be installed. This handler is invoked upon 11469any 11470run-time exception that occurs during control method execution. 11471 11472Added support for the DSDT in AcpiTbFindTable. This allows the 11473DataTableRegion() operator to access the local copy of the DSDT. 11474 11475Code and Data Size: Current and previous core subsystem library sizes are 11476shown below. These are the code and data sizes for the acpica.lib 11477produced 11478by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11479any ACPI driver or OSPM code. The debug version of the code includes the 11480debug output trace mechanism and has a much larger code and data size. 11481Note 11482that these values will vary depending on the efficiency of the compiler 11483and 11484the compiler options used during generation. 11485 11486 Previous Release: 11487 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11488 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11489 Current Release: 11490 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 11491 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 11492 11493 114942) iASL Compiler/Disassembler: 11495 11496Fixed a problem with constant folding and the LNot operator. LNot was 11497returning 1 in the TRUE case, not Ones as per the ACPI specification. 11498This 11499could result in the generation of an incorrect folded/reduced constant. 11500 11501End-Of-File is now allowed within a "//"-style comment. A parse error no 11502longer occurs if such a comment is at the very end of the input ASL 11503source 11504file. 11505 11506Implemented the "-r" option to override the Revision in the table header. 11507The initial use of this option will be to simplify the evaluation of the 11508AML 11509interpreter by allowing a single ASL source module to be compiled for 11510either 1151132-bit or 64-bit integers. 11512 11513 11514---------------------------------------- 1151527 August 2004. Summary of changes for version 20040827: 11516 115171) ACPI CA Core Subsystem: 11518 11519- Implemented support for implicit object conversion in the non-numeric 11520logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 11521and 11522LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 11523the second operand is implicitly converted on the fly to match the type 11524of 11525the first operand. For example: 11526 11527 LEqual (Source1, Source2) 11528 11529Source1 and Source2 must each evaluate to an integer, a string, or a 11530buffer. 11531The data type of Source1 dictates the required type of Source2. Source2 11532is 11533implicitly converted if necessary to match the type of Source1. 11534 11535- Updated and corrected the behavior of the string conversion support. 11536The 11537rules concerning conversion of buffers to strings (according to the ACPI 11538specification) are as follows: 11539 11540ToDecimalString - explicit byte-wise conversion of buffer to string of 11541decimal values (0-255) separated by commas. ToHexString - explicit byte- 11542wise 11543conversion of buffer to string of hex values (0-FF) separated by commas. 11544ToString - explicit byte-wise conversion of buffer to string. Byte-by- 11545byte 11546copy with no transform except NULL terminated. Any other implicit buffer- 11547to- 11548string conversion - byte-wise conversion of buffer to string of hex 11549values 11550(0-FF) separated by spaces. 11551 11552- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 11553 11554- Fixed a problem in AcpiNsGetPathnameLength where the returned length 11555was 11556one byte too short in the case of a node in the root scope. This could 11557cause a fault during debug output. 11558 11559- Code and Data Size: Current and previous core subsystem library sizes 11560are 11561shown below. These are the code and data sizes for the acpica.lib 11562produced 11563by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11564any ACPI driver or OSPM code. The debug version of the code includes the 11565debug output trace mechanism and has a much larger code and data size. 11566Note 11567that these values will vary depending on the efficiency of the compiler 11568and 11569the compiler options used during generation. 11570 11571 Previous Release: 11572 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11573 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11574 Current Release: 11575 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11576 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11577 11578 115792) iASL Compiler/Disassembler: 11580 11581- Fixed a Linux generation error. 11582 11583 11584---------------------------------------- 1158516 August 2004. Summary of changes for version 20040816: 11586 115871) ACPI CA Core Subsystem: 11588 11589Designed and implemented support within the AML interpreter for the so- 11590called "implicit return". This support returns the result of the last 11591ASL 11592operation within a control method, in the absence of an explicit Return() 11593operator. A few machines depend on this behavior, even though it is not 11594explicitly supported by the ASL language. It is optional support that 11595can 11596be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 11597 11598Removed support for the PCI_Config address space from the internal low 11599level 11600hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 11601support was not used internally, and would not work correctly anyway 11602because 11603the PCI bus number and segment number were not supported. There are 11604separate interfaces for PCI configuration space access because of the 11605unique 11606interface. 11607 11608Code and Data Size: Current and previous core subsystem library sizes are 11609shown below. These are the code and data sizes for the acpica.lib 11610produced 11611by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11612any ACPI driver or OSPM code. The debug version of the code includes the 11613debug output trace mechanism and has a much larger code and data size. 11614Note 11615that these values will vary depending on the efficiency of the compiler 11616and 11617the compiler options used during generation. 11618 11619 Previous Release: 11620 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11621 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 11622 Current Release: 11623 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11624 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11625 11626 116272) iASL Compiler/Disassembler: 11628 11629Fixed a problem where constants in ASL expressions at the root level (not 11630within a control method) could be inadvertently truncated during code 11631generation. This problem was introduced in the 20040715 release. 11632 11633 11634---------------------------------------- 1163515 July 2004. Summary of changes for version 20040715: 11636 116371) ACPI CA Core Subsystem: 11638 11639Restructured the internal HW GPE interfaces to pass/track the current 11640state 11641of interrupts (enabled/disabled) in order to avoid possible deadlock and 11642increase flexibility of the interfaces. 11643 11644Implemented a "lexicographical compare" for String and Buffer objects 11645within 11646the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 11647- 11648as per further clarification to the ACPI specification. Behavior is 11649similar 11650to C library "strcmp". 11651 11652Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 11653external function. In the 32-bit non-debug case, the stack use has been 11654reduced from 168 bytes to 32 bytes. 11655 11656Deployed a new run-time configuration flag, 11657AcpiGbl_EnableInterpreterSlack, 11658whose purpose is to allow the AML interpreter to forgive certain bad AML 11659constructs. Default setting is FALSE. 11660 11661Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 11662IO 11663support code. If enabled, it allows field access to go beyond the end of 11664a 11665region definition if the field is within the region length rounded up to 11666the 11667next access width boundary (a common coding error.) 11668 11669Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 11670ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 11671these 11672symbols are lowercased by the latest version of the AcpiSrc tool. 11673 11674The prototypes for the PCI interfaces in acpiosxf.h have been updated to 11675rename "Register" to simply "Reg" to prevent certain compilers from 11676complaining. 11677 11678Code and Data Size: Current and previous core subsystem library sizes are 11679shown below. These are the code and data sizes for the acpica.lib 11680produced 11681by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11682any ACPI driver or OSPM code. The debug version of the code includes the 11683debug output trace mechanism and has a much larger code and data size. 11684Note 11685that these values will vary depending on the efficiency of the compiler 11686and 11687the compiler options used during generation. 11688 11689 Previous Release: 11690 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11691 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11692 Current Release: 11693 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11694 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 11695 11696 116972) iASL Compiler/Disassembler: 11698 11699Implemented full support for Package objects within the Case() operator. 11700Note: The Break() operator is currently not supported within Case blocks 11701(TermLists) as there is some question about backward compatibility with 11702ACPI 117031.0 interpreters. 11704 11705 11706Fixed a problem where complex terms were not supported properly within 11707the 11708Switch() operator. 11709 11710Eliminated extraneous warning for compiler-emitted reserved names of the 11711form "_T_x". (Used in Switch/Case operators.) 11712 11713Eliminated optimization messages for "_T_x" objects and small constants 11714within the DefinitionBlock operator. 11715 11716 11717---------------------------------------- 1171815 June 2004. Summary of changes for version 20040615: 11719 117201) ACPI CA Core Subsystem: 11721 11722Implemented support for Buffer and String objects (as per ACPI 2.0) for 11723the 11724following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11725LLessEqual. 11726 11727All directory names in the entire source package are lower case, as they 11728were in earlier releases. 11729 11730Implemented "Disassemble" command in the AML debugger that will 11731disassemble 11732a single control method. 11733 11734Code and Data Size: Current and previous core subsystem library sizes are 11735shown below. These are the code and data sizes for the acpica.lib 11736produced 11737by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11738any ACPI driver or OSPM code. The debug version of the code includes the 11739debug output trace mechanism and has a much larger code and data size. 11740Note 11741that these values will vary depending on the efficiency of the compiler 11742and 11743the compiler options used during generation. 11744 11745 Previous Release: 11746 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11747 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11748 11749 Current Release: 11750 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11751 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11752 11753 117542) iASL Compiler/Disassembler: 11755 11756Implemented support for Buffer and String objects (as per ACPI 2.0) for 11757the 11758following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11759LLessEqual. 11760 11761All directory names in the entire source package are lower case, as they 11762were in earlier releases. 11763 11764Fixed a fault when using the -g or -d<nofilename> options if the FADT was 11765not found. 11766 11767Fixed an issue with the Windows version of the compiler where later 11768versions 11769of Windows place the FADT in the registry under the name "FADT" and not 11770"FACP" as earlier versions did. This applies when using the -g or - 11771d<nofilename> options. The compiler now looks for both strings as 11772necessary. 11773 11774Fixed a problem with compiler namepath optimization where a namepath 11775within 11776the Scope() operator could not be optimized if the namepath was a subpath 11777of 11778the current scope path. 11779 11780---------------------------------------- 1178127 May 2004. Summary of changes for version 20040527: 11782 117831) ACPI CA Core Subsystem: 11784 11785Completed a new design and implementation for EBDA (Extended BIOS Data 11786Area) 11787support in the RSDP scan code. The original code improperly scanned for 11788the 11789EBDA by simply scanning from memory location 0 to 0x400. The correct 11790method 11791is to first obtain the EBDA pointer from within the BIOS data area, then 11792scan 1K of memory starting at the EBDA pointer. There appear to be few 11793if 11794any machines that place the RSDP in the EBDA, however. 11795 11796Integrated a fix for a possible fault during evaluation of BufferField 11797arguments. Obsolete code that was causing the problem was removed. 11798 11799Found and fixed a problem in the Field Support Code where data could be 11800corrupted on a bit field read that starts on an aligned boundary but does 11801not end on an aligned boundary. Merged the read/write "datum length" 11802calculation code into a common procedure. 11803 11804Rolled in a couple of changes to the FreeBSD-specific header. 11805 11806 11807Code and Data Size: Current and previous core subsystem library sizes are 11808shown below. These are the code and data sizes for the acpica.lib 11809produced 11810by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11811any ACPI driver or OSPM code. The debug version of the code includes the 11812debug output trace mechanism and has a much larger code and data size. 11813Note 11814that these values will vary depending on the efficiency of the compiler 11815and 11816the compiler options used during generation. 11817 11818 Previous Release: 11819 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11820 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 11821 Current Release: 11822 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11823 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11824 11825 118262) iASL Compiler/Disassembler: 11827 11828Fixed a generation warning produced by some overly-verbose compilers for 11829a 1183064-bit constant. 11831 11832---------------------------------------- 1183314 May 2004. Summary of changes for version 20040514: 11834 118351) ACPI CA Core Subsystem: 11836 11837Fixed a problem where hardware GPE enable bits sometimes not set properly 11838during and after GPE method execution. Result of 04/27 changes. 11839 11840Removed extra "clear all GPEs" when sleeping/waking. 11841 11842Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 11843AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 11844to 11845the new AcpiEv* calls as appropriate. 11846 11847ACPI_OS_NAME was removed from the OS-specific headers. The default name 11848is 11849now "Microsoft Windows NT" for maximum compatibility. However this can 11850be 11851changed by modifying the acconfig.h file. 11852 11853Allow a single invocation of AcpiInstallNotifyHandler for a handler that 11854traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 11855 11856Run _INI methods on ThermalZone objects. This is against the ACPI 11857specification, but there is apparently ASL code in the field that has 11858these 11859_INI methods, and apparently "other" AML interpreters execute them. 11860 11861Performed a full 16/32/64 bit lint that resulted in some small changes. 11862 11863Added a sleep simulation command to the AML debugger to test sleep code. 11864 11865Code and Data Size: Current and previous core subsystem library sizes are 11866shown below. These are the code and data sizes for the acpica.lib 11867produced 11868by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11869any ACPI driver or OSPM code. The debug version of the code includes the 11870debug output trace mechanism and has a much larger code and data size. 11871Note 11872that these values will vary depending on the efficiency of the compiler 11873and 11874the compiler options used during generation. 11875 11876 Previous Release: 11877 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11878 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 11879 Current Release: 11880 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11881 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 11882 11883---------------------------------------- 1188427 April 2004. Summary of changes for version 20040427: 11885 118861) ACPI CA Core Subsystem: 11887 11888Completed a major overhaul of the GPE handling within ACPI CA. There are 11889now three types of GPEs: wake-only, runtime-only, and combination 11890wake/run. 11891The only GPEs allowed to be combination wake/run are for button-style 11892devices such as a control-method power button, control-method sleep 11893button, 11894or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 11895not 11896referenced by any _PRW methods are marked for "runtime" and hardware 11897enabled. Any GPE that is referenced by a _PRW method is marked for 11898"wake" 11899(and disabled at runtime). However, at sleep time, only those GPEs that 11900have been specifically enabled for wake via the AcpiEnableGpe interface 11901will 11902actually be hardware enabled. 11903 11904A new external interface has been added, AcpiSetGpeType(), that is meant 11905to 11906be used by device drivers to force a GPE to a particular type. It will 11907be 11908especially useful for the drivers for the button devices mentioned above. 11909 11910Completed restructuring of the ACPI CA initialization sequence so that 11911default operation region handlers are installed before GPEs are 11912initialized 11913and the _PRW methods are executed. This will prevent errors when the 11914_PRW 11915methods attempt to access system memory or I/O space. 11916 11917GPE enable/disable no longer reads the GPE enable register. We now keep 11918the 11919enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 11920thus no longer depend on the hardware to maintain these bits. 11921 11922Always clear the wake status and fixed/GPE status bits before sleep, even 11923for state S5. 11924 11925Improved the AML debugger output for displaying the GPE blocks and their 11926current status. 11927 11928Added new strings for the _OSI method, of the form "Windows 2001 SPx" 11929where 11930x = 0,1,2,3,4. 11931 11932Fixed a problem where the physical address was incorrectly calculated 11933when 11934the Load() operator was used to directly load from an Operation Region 11935(vs. 11936loading from a Field object.) Also added check for minimum table length 11937for 11938this case. 11939 11940Fix for multiple mutex acquisition. Restore original thread SyncLevel on 11941mutex release. 11942 11943Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 11944consistency with the other fields returned. 11945 11946Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 11947structure for each GPE in the system, so the size of this structure is 11948important. 11949 11950CPU stack requirement reduction: Cleaned up the method execution and 11951object 11952evaluation paths so that now a parameter structure is passed, instead of 11953copying the various method parameters over and over again. 11954 11955In evregion.c: Correctly exit and reenter the interpreter region if and 11956only if dispatching an operation region request to a user-installed 11957handler. 11958Do not exit/reenter when dispatching to a default handler (e.g., default 11959system memory or I/O handlers) 11960 11961 11962Notes for updating drivers for the new GPE support. The following 11963changes 11964must be made to ACPI-related device drivers that are attached to one or 11965more 11966GPEs: (This information will be added to the ACPI CA Programmer 11967Reference.) 11968 119691) AcpiInstallGpeHandler no longer automatically enables the GPE, you 11970must 11971explicitly call AcpiEnableGpe. 119722) There is a new interface called AcpiSetGpeType. This should be called 11973before enabling the GPE. Also, this interface will automatically disable 11974the GPE if it is currently enabled. 119753) AcpiEnableGpe no longer supports a GPE type flag. 11976 11977Specific drivers that must be changed: 119781) EC driver: 11979 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 11980AeGpeHandler, NULL); 11981 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 11982 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 11983 119842) Button Drivers (Power, Lid, Sleep): 11985Run _PRW method under parent device 11986If _PRW exists: /* This is a control-method button */ 11987 Extract GPE number and possibly GpeDevice 11988 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 11989 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 11990 11991For all other devices that have _PRWs, we automatically set the GPE type 11992to 11993ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 11994This 11995must be done on a selective basis, usually requiring some kind of user 11996app 11997to allow the user to pick the wake devices. 11998 11999 12000Code and Data Size: Current and previous core subsystem library sizes are 12001shown below. These are the code and data sizes for the acpica.lib 12002produced 12003by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12004any ACPI driver or OSPM code. The debug version of the code includes the 12005debug output trace mechanism and has a much larger code and data size. 12006Note 12007that these values will vary depending on the efficiency of the compiler 12008and 12009the compiler options used during generation. 12010 12011 Previous Release: 12012 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12013 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12014 Current Release: 12015 12016 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12017 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12018 12019 12020 12021---------------------------------------- 1202202 April 2004. Summary of changes for version 20040402: 12023 120241) ACPI CA Core Subsystem: 12025 12026Fixed an interpreter problem where an indirect store through an ArgX 12027parameter was incorrectly applying the "implicit conversion rules" during 12028the store. From the ACPI specification: "If the target is a method local 12029or 12030argument (LocalX or ArgX), no conversion is performed and the result is 12031stored directly to the target". The new behavior is to disable implicit 12032conversion during ALL stores to an ArgX. 12033 12034Changed the behavior of the _PRW method scan to ignore any and all errors 12035returned by a given _PRW. This prevents the scan from aborting from the 12036failure of any single _PRW. 12037 12038Moved the runtime configuration parameters from the global init procedure 12039to 12040static variables in acglobal.h. This will allow the host to override the 12041default values easily. 12042 12043Code and Data Size: Current and previous core subsystem library sizes are 12044shown below. These are the code and data sizes for the acpica.lib 12045produced 12046by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12047any ACPI driver or OSPM code. The debug version of the code includes the 12048debug output trace mechanism and has a much larger code and data size. 12049Note 12050that these values will vary depending on the efficiency of the compiler 12051and 12052the compiler options used during generation. 12053 12054 Previous Release: 12055 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12056 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12057 Current Release: 12058 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12059 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12060 12061 120622) iASL Compiler/Disassembler: 12063 12064iASL now fully disassembles SSDTs. However, External() statements are 12065not 12066generated automatically for unresolved symbols at this time. This is a 12067planned feature for future implementation. 12068 12069Fixed a scoping problem in the disassembler that occurs when the type of 12070the 12071target of a Scope() operator is overridden. This problem caused an 12072incorrectly nested internal namespace to be constructed. 12073 12074Any warnings or errors that are emitted during disassembly are now 12075commented 12076out automatically so that the resulting file can be recompiled without 12077any 12078hand editing. 12079 12080---------------------------------------- 1208126 March 2004. Summary of changes for version 20040326: 12082 120831) ACPI CA Core Subsystem: 12084 12085Implemented support for "wake" GPEs via interaction between GPEs and the 12086_PRW methods. Every GPE that is pointed to by one or more _PRWs is 12087identified as a WAKE GPE and by default will no longer be enabled at 12088runtime. Previously, we were blindly enabling all GPEs with a 12089corresponding 12090_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 12091We 12092believe this has been the cause of thousands of "spurious" GPEs on some 12093systems. 12094 12095This new GPE behavior is can be reverted to the original behavior (enable 12096ALL GPEs at runtime) via a runtime flag. 12097 12098Fixed a problem where aliased control methods could not access objects 12099properly. The proper scope within the namespace was not initialized 12100(transferred to the target of the aliased method) before executing the 12101target method. 12102 12103Fixed a potential race condition on internal object deletion on the 12104return 12105object in AcpiEvaluateObject. 12106 12107Integrated a fix for resource descriptors where both _MEM and _MTP were 12108being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 12109wide, 0x0F instead of 0x03.) 12110 12111Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 12112preventing 12113a 12114fault in some cases. 12115 12116Updated Notify() values for debug statements in evmisc.c 12117 12118Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 12119 12120Code and Data Size: Current and previous core subsystem library sizes are 12121shown below. These are the code and data sizes for the acpica.lib 12122produced 12123by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12124any ACPI driver or OSPM code. The debug version of the code includes the 12125debug output trace mechanism and has a much larger code and data size. 12126Note 12127that these values will vary depending on the efficiency of the compiler 12128and 12129the compiler options used during generation. 12130 12131 Previous Release: 12132 12133 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12134 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12135 Current Release: 12136 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12137 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12138 12139---------------------------------------- 1214011 March 2004. Summary of changes for version 20040311: 12141 121421) ACPI CA Core Subsystem: 12143 12144Fixed a problem where errors occurring during the parse phase of control 12145method execution did not abort cleanly. For example, objects created and 12146installed in the namespace were not deleted. This caused all subsequent 12147invocations of the method to return the AE_ALREADY_EXISTS exception. 12148 12149Implemented a mechanism to force a control method to "Serialized" 12150execution 12151if the method attempts to create namespace objects. (The root of the 12152AE_ALREADY_EXISTS problem.) 12153 12154Implemented support for the predefined _OSI "internal" control method. 12155Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 12156and 12157"Windows 2001.1", and can be easily upgraded for new strings as 12158necessary. 12159This feature will allow "other" operating systems to execute the fully 12160tested, "Windows" code path through the ASL code 12161 12162Global Lock Support: Now allows multiple acquires and releases with any 12163internal thread. Removed concept of "owning thread" for this special 12164mutex. 12165 12166Fixed two functions that were inappropriately declaring large objects on 12167the 12168CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 12169during 12170method execution considerably. 12171 12172Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 12173S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 12174 12175Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 12176defined on the machine. 12177 12178Implemented two runtime options: One to force all control method 12179execution 12180to "Serialized" to mimic Windows behavior, another to disable _OSI 12181support 12182if it causes problems on a given machine. 12183 12184Code and Data Size: Current and previous core subsystem library sizes are 12185shown below. These are the code and data sizes for the acpica.lib 12186produced 12187by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12188any ACPI driver or OSPM code. The debug version of the code includes the 12189debug output trace mechanism and has a much larger code and data size. 12190Note 12191that these values will vary depending on the efficiency of the compiler 12192and 12193the compiler options used during generation. 12194 12195 Previous Release: 12196 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12197 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12198 Current Release: 12199 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12200 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12201 122022) iASL Compiler/Disassembler: 12203 12204Fixed an array size problem for FreeBSD that would cause the compiler to 12205fault. 12206 12207---------------------------------------- 1220820 February 2004. Summary of changes for version 20040220: 12209 12210 122111) ACPI CA Core Subsystem: 12212 12213Implemented execution of _SxD methods for Device objects in the 12214GetObjectInfo interface. 12215 12216Fixed calls to _SST method to pass the correct arguments. 12217 12218Added a call to _SST on wake to restore to "working" state. 12219 12220Check for End-Of-Buffer failure case in the WalkResources interface. 12221 12222Integrated fix for 64-bit alignment issue in acglobal.h by moving two 12223structures to the beginning of the file. 12224 12225After wake, clear GPE status register(s) before enabling GPEs. 12226 12227After wake, clear/enable power button. (Perhaps we should clear/enable 12228all 12229fixed events upon wake.) 12230 12231Fixed a couple of possible memory leaks in the Namespace manager. 12232 12233Integrated latest acnetbsd.h file. 12234 12235---------------------------------------- 1223611 February 2004. Summary of changes for version 20040211: 12237 12238 122391) ACPI CA Core Subsystem: 12240 12241Completed investigation and implementation of the call-by-reference 12242mechanism for control method arguments. 12243 12244Fixed a problem where a store of an object into an indexed package could 12245fail if the store occurs within a different method than the method that 12246created the package. 12247 12248Fixed a problem where the ToDecimal operator could return incorrect 12249results. 12250 12251Fixed a problem where the CopyObject operator could fail on some of the 12252more 12253obscure objects (e.g., Reference objects.) 12254 12255Improved the output of the Debug object to display buffer, package, and 12256index objects. 12257 12258Fixed a problem where constructs of the form "RefOf (ArgX)" did not 12259return 12260the expected result. 12261 12262Added permanent ACPI_REPORT_ERROR macros for all instances of the 12263ACPI_AML_INTERNAL exception. 12264 12265Integrated latest version of acfreebsd.h 12266 12267---------------------------------------- 1226816 January 2004. Summary of changes for version 20040116: 12269 12270The purpose of this release is primarily to update the copyright years in 12271each module, thus causing a huge number of diffs. There are a few small 12272functional changes, however. 12273 122741) ACPI CA Core Subsystem: 12275 12276Improved error messages when there is a problem finding one or more of 12277the 12278required base ACPI tables 12279 12280Reintroduced the definition of APIC_HEADER in actbl.h 12281 12282Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 12283 12284Removed extraneous reference to NewObj in dsmthdat.c 12285 122862) iASL compiler 12287 12288Fixed a problem introduced in December that disabled the correct 12289disassembly 12290of Resource Templates 12291 12292 12293---------------------------------------- 1229403 December 2003. Summary of changes for version 20031203: 12295 122961) ACPI CA Core Subsystem: 12297 12298Changed the initialization of Operation Regions during subsystem 12299init to perform two entire walks of the ACPI namespace; The first 12300to initialize the regions themselves, the second to execute the 12301_REG methods. This fixed some interdependencies across _REG 12302methods found on some machines. 12303 12304Fixed a problem where a Store(Local0, Local1) could simply update 12305the object reference count, and not create a new copy of the 12306object if the Local1 is uninitialized. 12307 12308Implemented support for the _SST reserved method during sleep 12309transitions. 12310 12311Implemented support to clear the SLP_TYP and SLP_EN bits when 12312waking up, this is apparently required by some machines. 12313 12314When sleeping, clear the wake status only if SleepState is not S5. 12315 12316Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 12317pointer arithmetic advanced a string pointer too far. 12318 12319Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 12320could be returned if the requested table has not been loaded. 12321 12322Within the support for IRQ resources, restructured the handling of 12323the active and edge/level bits. 12324 12325Fixed a few problems in AcpiPsxExecute() where memory could be 12326leaked under certain error conditions. 12327 12328Improved error messages for the cases where the ACPI mode could 12329not be entered. 12330 12331Code and Data Size: Current and previous core subsystem library 12332sizes are shown below. These are the code and data sizes for the 12333acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12334these values do not include any ACPI driver or OSPM code. The 12335debug version of the code includes the debug output trace 12336mechanism and has a much larger code and data size. Note that 12337these values will vary depending on the efficiency of the compiler 12338and the compiler options used during generation. 12339 12340 Previous Release (20031029): 12341 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 12342 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 12343 Current Release: 12344 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12345 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12346 123472) iASL Compiler/Disassembler: 12348 12349Implemented a fix for the iASL disassembler where a bad index was 12350generated. This was most noticeable on 64-bit platforms 12351 12352 12353---------------------------------------- 1235429 October 2003. Summary of changes for version 20031029: 12355 123561) ACPI CA Core Subsystem: 12357 12358 12359Fixed a problem where a level-triggered GPE with an associated 12360_Lxx control method was incorrectly cleared twice. 12361 12362Fixed a problem with the Field support code where an access can 12363occur beyond the end-of-region if the field is non-aligned but 12364extends to the very end of the parent region (resulted in an 12365AE_AML_REGION_LIMIT exception.) 12366 12367Fixed a problem with ACPI Fixed Events where an RT Clock handler 12368would not get invoked on an RTC event. The RTC event bitmasks for 12369the PM1 registers were not being initialized properly. 12370 12371Implemented support for executing _STA and _INI methods for 12372Processor objects. Although this is currently not part of the 12373ACPI specification, there is existing ASL code that depends on the 12374init-time execution of these methods. 12375 12376Implemented and deployed a GetDescriptorName function to decode 12377the various types of internal descriptors. Guards against null 12378descriptors during debug output also. 12379 12380Implemented and deployed a GetNodeName function to extract the 4- 12381character namespace node name. This function simplifies the debug 12382and error output, as well as guarding against null pointers during 12383output. 12384 12385Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 12386simplify the debug and error output of 64-bit integers. This 12387macro replaces the HIDWORD and LODWORD macros for dumping these 12388integers. 12389 12390Updated the implementation of the Stall() operator to only call 12391AcpiOsStall(), and also return an error if the operand is larger 12392than 255. This preserves the required behavior of not 12393relinquishing the processor, as would happen if AcpiOsSleep() was 12394called for "long stalls". 12395 12396Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 12397initialized are now treated as NOOPs. 12398 12399Cleaned up a handful of warnings during 64-bit generation. 12400 12401Fixed a reported error where and incorrect GPE number was passed 12402to the GPE dispatch handler. This value is only used for error 12403output, however. Used this opportunity to clean up and streamline 12404the GPE dispatch code. 12405 12406Code and Data Size: Current and previous core subsystem library 12407sizes are shown below. These are the code and data sizes for the 12408acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12409these values do not include any ACPI driver or OSPM code. The 12410 12411debug version of the code includes the debug output trace 12412mechanism and has a much larger code and data size. Note that 12413these values will vary depending on the efficiency of the compiler 12414and the compiler options used during generation. 12415 12416 Previous Release (20031002): 12417 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 12418 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 12419 Current Release: 12420 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 12421 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 12422 12423 124242) iASL Compiler/Disassembler: 12425 12426Updated the iASL compiler to return an error if the operand to the 12427Stall() operator is larger than 255. 12428 12429 12430---------------------------------------- 1243102 October 2003. Summary of changes for version 20031002: 12432 12433 124341) ACPI CA Core Subsystem: 12435 12436Fixed a problem with Index Fields where the index was not 12437incremented for fields that require multiple writes to the 12438index/data registers (Fields that are wider than the data 12439register.) 12440 12441Fixed a problem with all Field objects where a write could go 12442beyond the end-of-field if the field was larger than the access 12443granularity and therefore required multiple writes to complete the 12444request. An extra write beyond the end of the field could happen 12445inadvertently. 12446 12447Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 12448would incorrectly be returned if the width of the Data Register 12449was larger than the specified field access width. 12450 12451Completed fixes for LoadTable() and Unload() and verified their 12452operation. Implemented full support for the "DdbHandle" object 12453throughout the ACPI CA subsystem. 12454 12455Implemented full support for the MADT and ECDT tables in the ACPI 12456CA header files. Even though these tables are not directly 12457consumed by ACPI CA, the header definitions are useful for ACPI 12458device drivers. 12459 12460Integrated resource descriptor fixes posted to the Linux ACPI 12461list. This included checks for minimum descriptor length, and 12462support for trailing NULL strings within descriptors that have 12463optional string elements. 12464 12465Code and Data Size: Current and previous core subsystem library 12466sizes are shown below. These are the code and data sizes for the 12467acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12468these values do not include any ACPI driver or OSPM code. The 12469debug version of the code includes the debug output trace 12470mechanism and has a much larger code and data size. Note that 12471these values will vary depending on the efficiency of the compiler 12472and the compiler options used during generation. 12473 12474 Previous Release (20030918): 12475 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12476 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12477 Current Release: 12478 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 12479 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 12480 12481 124822) iASL Compiler: 12483 12484Implemented detection of non-ASCII characters within the input 12485source ASL file. This catches attempts to compile binary (AML) 12486files early in the compile, with an informative error message. 12487 12488Fixed a problem where the disassembler would fault if the output 12489filename could not be generated or if the output file could not be 12490opened. 12491 12492---------------------------------------- 1249318 September 2003. Summary of changes for version 20030918: 12494 12495 124961) ACPI CA Core Subsystem: 12497 12498Found and fixed a longstanding problem with the late execution of 12499the various deferred AML opcodes (such as Operation Regions, 12500Buffer Fields, Buffers, and Packages). If the name string 12501specified for the name of the new object placed the object in a 12502scope other than the current scope, the initialization/execution 12503of the opcode failed. The solution to this problem was to 12504implement a mechanism where the late execution of such opcodes 12505does not attempt to lookup/create the name a second time in an 12506incorrect scope. This fixes the "region size computed 12507incorrectly" problem. 12508 12509Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 12510Global Lock AE_BAD_PARAMETER error. 12511 12512Fixed several 64-bit issues with prototypes, casting and data 12513types. 12514 12515Removed duplicate prototype from acdisasm.h 12516 12517Fixed an issue involving EC Operation Region Detach (Shaohua Li) 12518 12519Code and Data Size: Current and previous core subsystem library 12520sizes are shown below. These are the code and data sizes for the 12521acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12522these values do not include any ACPI driver or OSPM code. The 12523debug version of the code includes the debug output trace 12524mechanism and has a much larger code and data size. Note that 12525these values will vary depending on the efficiency of the compiler 12526and the compiler options used during generation. 12527 12528 Previous Release: 12529 12530 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 12531 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 12532 Current Release: 12533 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12534 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12535 12536 125372) Linux: 12538 12539Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 12540correct sleep time in seconds. 12541 12542---------------------------------------- 1254314 July 2003. Summary of changes for version 20030619: 12544 125451) ACPI CA Core Subsystem: 12546 12547Parse SSDTs in order discovered, as opposed to reverse order 12548(Hrvoje Habjanic) 12549 12550Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 12551Klausner, 12552 Nate Lawson) 12553 12554 125552) Linux: 12556 12557Dynamically allocate SDT list (suggested by Andi Kleen) 12558 12559proc function return value cleanups (Andi Kleen) 12560 12561Correctly handle NMI watchdog during long stalls (Andrew Morton) 12562 12563Make it so acpismp=force works (reported by Andrew Morton) 12564 12565 12566---------------------------------------- 1256719 June 2003. Summary of changes for version 20030619: 12568 125691) ACPI CA Core Subsystem: 12570 12571Fix To/FromBCD, eliminating the need for an arch-specific #define. 12572 12573Do not acquire a semaphore in the S5 shutdown path. 12574 12575Fix ex_digits_needed for 0. (Takayoshi Kochi) 12576 12577Fix sleep/stall code reversal. (Andi Kleen) 12578 12579Revert a change having to do with control method calling 12580semantics. 12581 125822) Linux: 12583 12584acpiphp update (Takayoshi Kochi) 12585 12586Export acpi_disabled for sonypi (Stelian Pop) 12587 12588Mention acpismp=force in config help 12589 12590Re-add acpitable.c and acpismp=force. This improves backwards 12591 12592compatibility and also cleans up the code to a significant degree. 12593 12594Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 12595 12596---------------------------------------- 1259722 May 2003. Summary of changes for version 20030522: 12598 125991) ACPI CA Core Subsystem: 12600 12601Found and fixed a reported problem where an AE_NOT_FOUND error 12602occurred occasionally during _BST evaluation. This turned out to 12603be an Owner ID allocation issue where a called method did not get 12604a new ID assigned to it. Eventually, (after 64k calls), the Owner 12605ID UINT16 would wraparound so that the ID would be the same as the 12606caller's and the called method would delete the caller's 12607namespace. 12608 12609Implemented extended error reporting for control methods that are 12610aborted due to a run-time exception. Output includes the exact 12611AML instruction that caused the method abort, a dump of the method 12612locals and arguments at the time of the abort, and a trace of all 12613nested control method calls. 12614 12615Modified the interpreter to allow the creation of buffers of zero 12616length from the AML code. Implemented new code to ensure that no 12617attempt is made to actually allocate a memory buffer (of length 12618zero) - instead, a simple buffer object with a NULL buffer pointer 12619and length zero is created. A warning is no longer issued when 12620the AML attempts to create a zero-length buffer. 12621 12622Implemented a workaround for the "leading asterisk issue" in 12623_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 12624asterisk is automatically removed if present in any HID, UID, or 12625CID strings. The iASL compiler will still flag this asterisk as 12626an error, however. 12627 12628Implemented full support for _CID methods that return a package of 12629multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 12630now additionally returns a device _CID list if present. This 12631required a change to the external interface in order to pass an 12632ACPI_BUFFER object as a parameter since the _CID list is of 12633variable length. 12634 12635Fixed a problem with the new AE_SAME_HANDLER exception where 12636handler initialization code did not know about this exception. 12637 12638Code and Data Size: Current and previous core subsystem library 12639sizes are shown below. These are the code and data sizes for the 12640acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12641these values do not include any ACPI driver or OSPM code. The 12642debug version of the code includes the debug output trace 12643mechanism and has a much larger code and data size. Note that 12644these values will vary depending on the efficiency of the compiler 12645and the compiler options used during generation. 12646 12647 Previous Release (20030509): 12648 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12649 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12650 Current Release: 12651 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 12652 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 12653 12654 126552) Linux: 12656 12657Fixed a bug in which we would reinitialize the ACPI interrupt 12658after it was already working, thus disabling all ACPI and the IRQs 12659for any other device sharing the interrupt. (Thanks to Stian 12660Jordet) 12661 12662Toshiba driver update (John Belmonte) 12663 12664Return only 0 or 1 for our interrupt handler status (Andrew 12665Morton) 12666 12667 126683) iASL Compiler: 12669 12670Fixed a reported problem where multiple (nested) ElseIf() 12671statements were not handled correctly by the compiler, resulting 12672in incorrect warnings and incorrect AML code. This was a problem 12673in both the ASL parser and the code generator. 12674 12675 126764) Documentation: 12677 12678Added changes to existing interfaces, new exception codes, and new 12679text concerning reference count object management versus garbage 12680collection. 12681 12682---------------------------------------- 1268309 May 2003. Summary of changes for version 20030509. 12684 12685 126861) ACPI CA Core Subsystem: 12687 12688Changed the subsystem initialization sequence to hold off 12689installation of address space handlers until the hardware has been 12690initialized and the system has entered ACPI mode. This is because 12691the installation of space handlers can cause _REG methods to be 12692run. Previously, the _REG methods could potentially be run before 12693ACPI mode was enabled. 12694 12695Fixed some memory leak issues related to address space handler and 12696notify handler installation. There were some problems with the 12697reference count mechanism caused by the fact that the handler 12698objects are shared across several namespace objects. 12699 12700Fixed a reported problem where reference counts within the 12701namespace were not properly updated when named objects created by 12702method execution were deleted. 12703 12704Fixed a reported problem where multiple SSDTs caused a deletion 12705issue during subsystem termination. Restructured the table data 12706structures to simplify the linked lists and the related code. 12707 12708Fixed a problem where the table ID associated with secondary 12709tables (SSDTs) was not being propagated into the namespace objects 12710created by those tables. This would only present a problem for 12711tables that are unloaded at run-time, however. 12712 12713Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 12714type as the length parameter (instead of UINT32). 12715 12716Solved a long-standing problem where an ALREADY_EXISTS error 12717appears on various systems. This problem could happen when there 12718are multiple PCI_Config operation regions under a single PCI root 12719bus. This doesn't happen very frequently, but there are some 12720systems that do this in the ASL. 12721 12722Fixed a reported problem where the internal DeleteNode function 12723was incorrectly handling the case where a namespace node was the 12724first in the parent's child list, and had additional peers (not 12725the only child, but first in the list of children.) 12726 12727Code and Data Size: Current core subsystem library sizes are shown 12728below. These are the code and data sizes for the acpica.lib 12729produced by the Microsoft Visual C++ 6.0 compiler, and these 12730values do not include any ACPI driver or OSPM code. The debug 12731version of the code includes the debug output trace mechanism and 12732has a much larger code and data size. Note that these values will 12733vary depending on the efficiency of the compiler and the compiler 12734options used during generation. 12735 12736 Previous Release 12737 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12738 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12739 Current Release: 12740 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12741 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12742 12743 127442) Linux: 12745 12746Allow ":" in OS override string (Ducrot Bruno) 12747 12748Kobject fix (Greg KH) 12749 12750 127513 iASL Compiler/Disassembler: 12752 12753Fixed a problem in the generation of the C source code files (AML 12754is emitted in C source statements for BIOS inclusion) where the 12755Ascii dump that appears within a C comment at the end of each line 12756could cause a compile time error if the AML sequence happens to 12757have an open comment or close comment sequence embedded. 12758 12759 12760---------------------------------------- 1276124 April 2003. Summary of changes for version 20030424. 12762 12763 127641) ACPI CA Core Subsystem: 12765 12766Support for big-endian systems has been implemented. Most of the 12767support has been invisibly added behind big-endian versions of the 12768ACPI_MOVE_* macros. 12769 12770Fixed a problem in AcpiHwDisableGpeBlock() and 12771AcpiHwClearGpeBlock() where an incorrect offset was passed to the 12772low level hardware write routine. The offset parameter was 12773actually eliminated from the low level read/write routines because 12774they had become obsolete. 12775 12776Fixed a problem where a handler object was deleted twice during 12777the removal of a fixed event handler. 12778 12779 127802) Linux: 12781 12782A fix for SMP systems with link devices was contributed by 12783 12784Compaq's Dan Zink. 12785 12786(2.5) Return whether we handled the interrupt in our IRQ handler. 12787(Linux ISRs no longer return void, so we can propagate the handler 12788return value from the ACPI CA core back to the OS.) 12789 12790 12791 127923) Documentation: 12793 12794The ACPI CA Programmer Reference has been updated to reflect new 12795interfaces and changes to existing interfaces. 12796 12797---------------------------------------- 1279828 March 2003. Summary of changes for version 20030328. 12799 128001) ACPI CA Core Subsystem: 12801 12802The GPE Block Device support has been completed. New interfaces 12803are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 12804interfaces (enable, disable, clear, getstatus) have been split 12805into separate interfaces for Fixed Events and General Purpose 12806Events (GPEs) in order to support GPE Block Devices properly. 12807 12808Fixed a problem where the error message "Failed to acquire 12809semaphore" would appear during operations on the embedded 12810controller (EC). 12811 12812Code and Data Size: Current core subsystem library sizes are shown 12813below. These are the code and data sizes for the acpica.lib 12814produced by the Microsoft Visual C++ 6.0 compiler, and these 12815values do not include any ACPI driver or OSPM code. The debug 12816version of the code includes the debug output trace mechanism and 12817has a much larger code and data size. Note that these values will 12818vary depending on the efficiency of the compiler and the compiler 12819options used during generation. 12820 12821 Previous Release 12822 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 12823 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 12824 Current Release: 12825 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12826 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12827 12828 12829---------------------------------------- 1283028 February 2003. Summary of changes for version 20030228. 12831 12832 128331) ACPI CA Core Subsystem: 12834 12835The GPE handling and dispatch code has been completely overhauled 12836in preparation for support of GPE Block Devices (ID ACPI0006). 12837This affects internal data structures and code only; there should 12838be no differences visible externally. One new file has been 12839added, evgpeblk.c 12840 12841The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 12842fields that are used to determine the GPE block lengths. The 12843REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 12844structures are ignored. This is per the ACPI specification but it 12845isn't very clear. The full 256 Block 0/1 GPEs are now supported 12846(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 12847 12848In the SCI interrupt handler, removed the read of the PM1_CONTROL 12849register to look at the SCI_EN bit. On some machines, this read 12850causes an SMI event and greatly slows down SCI events. (This may 12851in fact be the cause of slow battery status response on some 12852systems.) 12853 12854Fixed a problem where a store of a NULL string to a package object 12855could cause the premature deletion of the object. This was seen 12856during execution of the battery _BIF method on some systems, 12857resulting in no battery data being returned. 12858 12859Added AcpiWalkResources interface to simplify parsing of resource 12860lists. 12861 12862Code and Data Size: Current core subsystem library sizes are shown 12863below. These are the code and data sizes for the acpica.lib 12864produced by the Microsoft Visual C++ 6.0 compiler, and these 12865values do not include any ACPI driver or OSPM code. The debug 12866version of the code includes the debug output trace mechanism and 12867has a much larger code and data size. Note that these values will 12868vary depending on the efficiency of the compiler and the compiler 12869options used during generation. 12870 12871 Previous Release 12872 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12873 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12874 Current Release: 12875 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 12876 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 12877 12878 128792) Linux 12880 12881S3 fixes (Ole Rohne) 12882 12883Update ACPI PHP driver with to use new acpi_walk_resource API 12884(Bjorn Helgaas) 12885 12886Add S4BIOS support (Pavel Machek) 12887 12888Map in entire table before performing checksum (John Stultz) 12889 12890Expand the mem= cmdline to allow the specification of reserved and 12891ACPI DATA blocks (Pavel Machek) 12892 12893Never use ACPI on VISWS 12894 12895Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 12896 12897Revert a change that allowed P_BLK lengths to be 4 or 5. This is 12898causing us to think that some systems support C2 when they really 12899don't. 12900 12901Do not count processor objects for non-present CPUs (Thanks to 12902Dominik Brodowski) 12903 12904 129053) iASL Compiler: 12906 12907Fixed a problem where ASL include files could not be found and 12908opened. 12909 12910Added support for the _PDC reserved name. 12911 12912 12913---------------------------------------- 1291422 January 2003. Summary of changes for version 20030122. 12915 12916 129171) ACPI CA Core Subsystem: 12918 12919Added a check for constructs of the form: Store (Local0, Local0) 12920where Local0 is not initialized. Apparently, some BIOS 12921programmers believe that this is a NOOP. Since this store doesn't 12922do anything anyway, the new prototype behavior will ignore this 12923error. This is a case where we can relax the strict checking in 12924the interpreter in the name of compatibility. 12925 12926 129272) Linux 12928 12929The AcpiSrc Source Conversion Utility has been released with the 12930Linux package for the first time. This is the utility that is 12931used to convert the ACPI CA base source code to the Linux version. 12932 12933(Both) Handle P_BLK lengths shorter than 6 more gracefully 12934 12935(Both) Move more headers to include/acpi, and delete an unused 12936header. 12937 12938(Both) Move drivers/acpi/include directory to include/acpi 12939 12940(Both) Boot functions don't use cmdline, so don't pass it around 12941 12942(Both) Remove include of unused header (Adrian Bunk) 12943 12944(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 12945the 12946former now also includes the latter, acpiphp.h only needs the one, 12947now. 12948 12949(2.5) Make it possible to select method of bios restoring after S3 12950resume. [=> no more ugly ifdefs] (Pavel Machek) 12951 12952(2.5) Make proc write interfaces work (Pavel Machek) 12953 12954(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 12955 12956(2.5) Break out ACPI Perf code into its own module, under cpufreq 12957(Dominik Brodowski) 12958 12959(2.4) S4BIOS support (Ducrot Bruno) 12960 12961(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 12962Visinoni) 12963 12964 129653) iASL Compiler: 12966 12967Added support to disassemble SSDT and PSDTs. 12968 12969Implemented support to obtain SSDTs from the Windows registry if 12970available. 12971 12972 12973---------------------------------------- 1297409 January 2003. Summary of changes for version 20030109. 12975 129761) ACPI CA Core Subsystem: 12977 12978Changed the behavior of the internal Buffer-to-String conversion 12979function. The current ACPI specification states that the contents 12980of the buffer are "converted to a string of two-character 12981hexadecimal numbers, each separated by a space". Unfortunately, 12982this definition is not backwards compatible with existing ACPI 1.0 12983implementations (although the behavior was not defined in the ACPI 129841.0 specification). The new behavior simply copies data from the 12985buffer to the string until a null character is found or the end of 12986the buffer is reached. The new String object is always null 12987terminated. This problem was seen during the generation of _BIF 12988battery data where incorrect strings were returned for battery 12989type, etc. This will also require an errata to the ACPI 12990specification. 12991 12992Renamed all instances of NATIVE_UINT and NATIVE_INT to 12993ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 12994 12995Copyright in all module headers (both Linux and non-Linux) has be 12996updated to 2003. 12997 12998Code and Data Size: Current core subsystem library sizes are shown 12999below. These are the code and data sizes for the acpica.lib 13000produced by the Microsoft Visual C++ 6.0 compiler, and these 13001values do not include any ACPI driver or OSPM code. The debug 13002version of the code includes the debug output trace mechanism and 13003has a much larger code and data size. Note that these values will 13004vary depending on the efficiency of the compiler and the compiler 13005options used during generation. 13006 13007 Previous Release 13008 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13009 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13010 Current Release: 13011 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13012 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13013 13014 130152) Linux 13016 13017Fixed an oops on module insertion/removal (Matthew Tippett) 13018 13019(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 13020 13021(2.5) Replace pr_debug (Randy Dunlap) 13022 13023(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 13024 13025(Both) Eliminate spawning of thread from timer callback, in favor 13026of schedule_work() 13027 13028(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 13029 13030(Both) Added define for Fixed Function HW region (Matthew Wilcox) 13031 13032(Both) Add missing statics to button.c (Pavel Machek) 13033 13034Several changes have been made to the source code translation 13035utility that generates the Linux Code in order to make the code 13036more "Linux-like": 13037 13038All typedefs on structs and unions have been removed in keeping 13039with the Linux coding style. 13040 13041Removed the non-Linux SourceSafe module revision number from each 13042module header. 13043 13044Completed major overhaul of symbols to be lowercased for linux. 13045Doubled the number of symbols that are lowercased. 13046 13047Fixed a problem where identifiers within procedure headers and 13048within quotes were not fully lower cased (they were left with a 13049starting capital.) 13050 13051Some C macros whose only purpose is to allow the generation of 16- 13052bit code are now completely removed in the Linux code, increasing 13053readability and maintainability. 13054 13055---------------------------------------- 13056 1305712 December 2002. Summary of changes for version 20021212. 13058 13059 130601) ACPI CA Core Subsystem: 13061 13062Fixed a problem where the creation of a zero-length AML Buffer 13063would cause a fault. 13064 13065Fixed a problem where a Buffer object that pointed to a static AML 13066buffer (in an ACPI table) could inadvertently be deleted, causing 13067memory corruption. 13068 13069Fixed a problem where a user buffer (passed in to the external 13070ACPI CA interfaces) could be overwritten if the buffer was too 13071small to complete the operation, causing memory corruption. 13072 13073Fixed a problem in the Buffer-to-String conversion code where a 13074string of length one was always returned, regardless of the size 13075of the input Buffer object. 13076 13077Removed the NATIVE_CHAR data type across the entire source due to 13078lack of need and lack of consistent use. 13079 13080Code and Data Size: Current core subsystem library sizes are shown 13081below. These are the code and data sizes for the acpica.lib 13082produced by the Microsoft Visual C++ 6.0 compiler, and these 13083values do not include any ACPI driver or OSPM code. The debug 13084version of the code includes the debug output trace mechanism and 13085has a much larger code and data size. Note that these values will 13086vary depending on the efficiency of the compiler and the compiler 13087options used during generation. 13088 13089 Previous Release 13090 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13091 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13092 Current Release: 13093 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13094 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13095 13096 13097---------------------------------------- 1309805 December 2002. Summary of changes for version 20021205. 13099 131001) ACPI CA Core Subsystem: 13101 13102Fixed a problem where a store to a String or Buffer object could 13103cause corruption of the DSDT if the object type being stored was 13104the same as the target object type and the length of the object 13105being stored was equal to or smaller than the original (existing) 13106target object. This was seen to cause corruption of battery _BIF 13107buffers if the _BIF method modified the buffer on the fly. 13108 13109Fixed a problem where an internal error was generated if a control 13110method invocation was used in an OperationRegion, Buffer, or 13111Package declaration. This was caused by the deferred parsing of 13112the control method and thus the deferred creation of the internal 13113method object. The solution to this problem was to create the 13114internal method object at the moment the method is encountered in 13115the first pass - so that subsequent references to the method will 13116able to obtain the required parameter count and thus properly 13117parse the method invocation. This problem presented itself as an 13118AE_AML_INTERNAL during the pass 1 parse phase during table load. 13119 13120Fixed a problem where the internal String object copy routine did 13121not always allocate sufficient memory for the target String object 13122and caused memory corruption. This problem was seen to cause 13123"Allocation already present in list!" errors as memory allocation 13124became corrupted. 13125 13126Implemented a new function for the evaluation of namespace objects 13127that allows the specification of the allowable return object 13128types. This simplifies a lot of code that checks for a return 13129object of one or more specific objects returned from the 13130evaluation (such as _STA, etc.) This may become and external 13131function if it would be useful to ACPI-related drivers. 13132 13133Completed another round of prefixing #defines with "ACPI_" for 13134clarity. 13135 13136Completed additional code restructuring to allow more modular 13137linking for iASL compiler and AcpiExec. Several files were split 13138creating new files. New files: nsparse.c dsinit.c evgpe.c 13139 13140Implemented an abort mechanism to terminate an executing control 13141method via the AML debugger. This feature is useful for debugging 13142control methods that depend (wait) for specific hardware 13143responses. 13144 13145Code and Data Size: Current core subsystem library sizes are shown 13146below. These are the code and data sizes for the acpica.lib 13147produced by the Microsoft Visual C++ 6.0 compiler, and these 13148values do not include any ACPI driver or OSPM code. The debug 13149version of the code includes the debug output trace mechanism and 13150has a much larger code and data size. Note that these values will 13151vary depending on the efficiency of the compiler and the compiler 13152options used during generation. 13153 13154 Previous Release 13155 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13156 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13157 Current Release: 13158 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13159 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13160 13161 131622) iASL Compiler/Disassembler 13163 13164Fixed a compiler code generation problem for "Interrupt" Resource 13165Descriptors. If specified in the ASL, the optional "Resource 13166Source Index" and "Resource Source" fields were not inserted into 13167the correct location within the AML resource descriptor, creating 13168an invalid descriptor. 13169 13170Fixed a disassembler problem for "Interrupt" resource descriptors. 13171The optional "Resource Source Index" and "Resource Source" fields 13172were ignored. 13173 13174 13175---------------------------------------- 1317622 November 2002. Summary of changes for version 20021122. 13177 13178 131791) ACPI CA Core Subsystem: 13180 13181Fixed a reported problem where an object stored to a Method Local 13182or Arg was not copied to a new object during the store - the 13183object pointer was simply copied to the Local/Arg. This caused 13184all subsequent operations on the Local/Arg to also affect the 13185original source of the store operation. 13186 13187Fixed a problem where a store operation to a Method Local or Arg 13188was not completed properly if the Local/Arg contained a reference 13189(from RefOf) to a named field. The general-purpose store-to- 13190namespace-node code is now used so that this case is handled 13191automatically. 13192 13193Fixed a problem where the internal object copy routine would cause 13194a protection fault if the object being copied was a Package and 13195contained either 1) a NULL package element or 2) a nested sub- 13196package. 13197 13198Fixed a problem with the GPE initialization that resulted from an 13199ambiguity in the ACPI specification. One section of the 13200specification states that both the address and length of the GPE 13201block must be zero if the block is not supported. Another section 13202implies that only the address need be zero if the block is not 13203supported. The code has been changed so that both the address and 13204the length must be non-zero to indicate a valid GPE block (i.e., 13205if either the address or the length is zero, the GPE block is 13206invalid.) 13207 13208Code and Data Size: Current core subsystem library sizes are shown 13209below. These are the code and data sizes for the acpica.lib 13210produced by the Microsoft Visual C++ 6.0 compiler, and these 13211values do not include any ACPI driver or OSPM code. The debug 13212version of the code includes the debug output trace mechanism and 13213has a much larger code and data size. Note that these values will 13214vary depending on the efficiency of the compiler and the compiler 13215options used during generation. 13216 13217 Previous Release 13218 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13219 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13220 Current Release: 13221 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13222 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13223 13224 132252) Linux 13226 13227Cleaned up EC driver. Exported an external EC read/write 13228interface. By going through this, other drivers (most notably 13229sonypi) will be able to serialize access to the EC. 13230 13231 132323) iASL Compiler/Disassembler 13233 13234Implemented support to optionally generate include files for both 13235ASM and C (the -i switch). This simplifies BIOS development by 13236automatically creating include files that contain external 13237declarations for the symbols that are created within the 13238 13239(optionally generated) ASM and C AML source files. 13240 13241 13242---------------------------------------- 1324315 November 2002. Summary of changes for version 20021115. 13244 132451) ACPI CA Core Subsystem: 13246 13247Fixed a memory leak problem where an error during resolution of 13248 13249method arguments during a method invocation from another method 13250failed to cleanup properly by deleting all successfully resolved 13251argument objects. 13252 13253Fixed a problem where the target of the Index() operator was not 13254correctly constructed if the source object was a package. This 13255problem has not been detected because the use of a target operand 13256with Index() is very rare. 13257 13258Fixed a problem with the Index() operator where an attempt was 13259made to delete the operand objects twice. 13260 13261Fixed a problem where an attempt was made to delete an operand 13262twice during execution of the CondRefOf() operator if the target 13263did not exist. 13264 13265Implemented the first of perhaps several internal create object 13266functions that create and initialize a specific object type. This 13267consolidates duplicated code wherever the object is created, thus 13268shrinking the size of the subsystem. 13269 13270Implemented improved debug/error messages for errors that occur 13271during nested method invocations. All executing method pathnames 13272are displayed (with the error) as the call stack is unwound - thus 13273simplifying debug. 13274 13275Fixed a problem introduced in the 10/02 release that caused 13276premature deletion of a buffer object if a buffer was used as an 13277ASL operand where an integer operand is required (Thus causing an 13278implicit object conversion from Buffer to Integer.) The change in 13279the 10/02 release was attempting to fix a memory leak (albeit 13280incorrectly.) 13281 13282Code and Data Size: Current core subsystem library sizes are shown 13283below. These are the code and data sizes for the acpica.lib 13284produced by the Microsoft Visual C++ 6.0 compiler, and these 13285values do not include any ACPI driver or OSPM code. The debug 13286version of the code includes the debug output trace mechanism and 13287has a much larger code and data size. Note that these values will 13288vary depending on the efficiency of the compiler and the compiler 13289options used during generation. 13290 13291 Previous Release 13292 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 13293 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 13294 Current Release: 13295 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13296 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13297 13298 132992) Linux 13300 13301Changed the implementation of the ACPI semaphores to use down() 13302instead of down_interruptable(). It is important that the 13303execution of ACPI control methods not be interrupted by signals. 13304Methods must run to completion, or the system may be left in an 13305unknown/unstable state. 13306 13307Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 13308(Shawn Starr) 13309 13310 133113) iASL Compiler/Disassembler 13312 13313 13314Changed the default location of output files. All output files 13315are now placed in the current directory by default instead of in 13316the directory of the source file. This change may affect some 13317existing makefiles, but it brings the behavior of the compiler in 13318line with other similar tools. The location of the output files 13319can be overridden with the -p command line switch. 13320 13321 13322---------------------------------------- 1332311 November 2002. Summary of changes for version 20021111. 13324 13325 133260) ACPI Specification 2.0B is released and is now available at: 13327http://www.acpi.info/index.html 13328 13329 133301) ACPI CA Core Subsystem: 13331 13332Implemented support for the ACPI 2.0 SMBus Operation Regions. 13333This includes the early detection and handoff of the request to 13334the SMBus region handler (avoiding all of the complex field 13335support code), and support for the bidirectional return packet 13336from an SMBus write operation. This paves the way for the 13337development of SMBus drivers in each host operating system. 13338 13339Fixed a problem where the semaphore WAIT_FOREVER constant was 13340defined as 32 bits, but must be 16 bits according to the ACPI 13341specification. This had the side effect of causing ASL 13342Mutex/Event timeouts even though the ASL code requested a wait 13343forever. Changed all internal references to the ACPI timeout 13344parameter to 16 bits to prevent future problems. Changed the name 13345of WAIT_FOREVER to ACPI_WAIT_FOREVER. 13346 13347Code and Data Size: Current core subsystem library sizes are shown 13348below. These are the code and data sizes for the acpica.lib 13349produced by the Microsoft Visual C++ 6.0 compiler, and these 13350values do not include any ACPI driver or OSPM code. The debug 13351version of the code includes the debug output trace mechanism and 13352has a much larger code and data size. Note that these values will 13353vary depending on the efficiency of the compiler and the compiler 13354options used during generation. 13355 13356 Previous Release 13357 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13358 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 13359 Current Release: 13360 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 13361 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 13362 13363 133642) Linux 13365 13366Module loading/unloading fixes (John Cagle) 13367 13368 133693) iASL Compiler/Disassembler 13370 13371Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 13372 13373Implemented support for the disassembly of all SMBus protocol 13374keywords (SMBQuick, SMBWord, etc.) 13375 13376---------------------------------------- 1337701 November 2002. Summary of changes for version 20021101. 13378 13379 133801) ACPI CA Core Subsystem: 13381 13382Fixed a problem where platforms that have a GPE1 block but no GPE0 13383block were not handled correctly. This resulted in a "GPE 13384overlap" error message. GPE0 is no longer required. 13385 13386Removed code added in the previous release that inserted nodes 13387into the namespace in alphabetical order. This caused some side- 13388effects on various machines. The root cause of the problem is 13389still under investigation since in theory, the internal ordering 13390of the namespace nodes should not matter. 13391 13392 13393Enhanced error reporting for the case where a named object is not 13394found during control method execution. The full ACPI namepath 13395(name reference) of the object that was not found is displayed in 13396this case. 13397 13398Note: as a result of the overhaul of the namespace object types in 13399the previous release, the namespace nodes for the predefined 13400scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 13401instead of ACPI_TYPE_ANY. This simplifies the namespace 13402management code but may affect code that walks the namespace tree 13403looking for specific object types. 13404 13405Code and Data Size: Current core subsystem library sizes are shown 13406below. These are the code and data sizes for the acpica.lib 13407produced by the Microsoft Visual C++ 6.0 compiler, and these 13408values do not include any ACPI driver or OSPM code. The debug 13409version of the code includes the debug output trace mechanism and 13410has a much larger code and data size. Note that these values will 13411vary depending on the efficiency of the compiler and the compiler 13412options used during generation. 13413 13414 Previous Release 13415 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 13416 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 13417 Current Release: 13418 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13419 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 13420 13421 134222) Linux 13423 13424Fixed a problem introduced in the previous release where the 13425Processor and Thermal objects were not recognized and installed in 13426/proc. This was related to the scope type change described above. 13427 13428 134293) iASL Compiler/Disassembler 13430 13431Implemented the -g option to get all of the required ACPI tables 13432from the registry and save them to files (Windows version of the 13433compiler only.) The required tables are the FADT, FACS, and DSDT. 13434 13435Added ACPI table checksum validation during table disassembly in 13436order to catch corrupted tables. 13437 13438 13439---------------------------------------- 1344022 October 2002. Summary of changes for version 20021022. 13441 134421) ACPI CA Core Subsystem: 13443 13444Implemented a restriction on the Scope operator that the target 13445must already exist in the namespace at the time the operator is 13446encountered (during table load or method execution). In other 13447words, forward references are not allowed and Scope() cannot 13448create a new object. This changes the previous behavior where the 13449interpreter would create the name if not found. This new behavior 13450correctly enables the search-to-root algorithm during namespace 13451lookup of the target name. Because of this upsearch, this fixes 13452the known Compaq _SB_.OKEC problem and makes both the AML 13453interpreter and iASL compiler compatible with other ACPI 13454implementations. 13455 13456Completed a major overhaul of the internal ACPI object types for 13457the ACPI Namespace and the associated operand objects. Many of 13458these types had become obsolete with the introduction of the two- 13459pass namespace load. This cleanup simplifies the code and makes 13460the entire namespace load mechanism much clearer and easier to 13461understand. 13462 13463Improved debug output for tracking scope opening/closing to help 13464diagnose scoping issues. The old scope name as well as the new 13465scope name are displayed. Also improved error messages for 13466problems with ASL Mutex objects and error messages for GPE 13467problems. 13468 13469Cleaned up the namespace dump code, removed obsolete code. 13470 13471All string output (for all namespace/object dumps) now uses the 13472common ACPI string output procedure which handles escapes properly 13473and does not emit non-printable characters. 13474 13475Fixed some issues with constants in the 64-bit version of the 13476local C library (utclib.c) 13477 13478 134792) Linux 13480 13481EC Driver: No longer attempts to acquire the Global Lock at 13482interrupt level. 13483 13484 134853) iASL Compiler/Disassembler 13486 13487Implemented ACPI 2.0B grammar change that disallows all Type 1 and 134882 opcodes outside of a control method. This means that the 13489"executable" operators (versus the "namespace" operators) cannot 13490be used at the table level; they can only be used within a control 13491method. 13492 13493Implemented the restriction on the Scope() operator where the 13494target must already exist in the namespace at the time the 13495operator is encountered (during ASL compilation). In other words, 13496forward references are not allowed and Scope() cannot create a new 13497object. This makes the iASL compiler compatible with other ACPI 13498implementations and makes the Scope() implementation adhere to the 13499ACPI specification. 13500 13501Fixed a problem where namepath optimization for the Alias operator 13502was optimizing the wrong path (of the two namepaths.) This caused 13503a "Missing alias link" error message. 13504 13505Fixed a problem where an "unknown reserved name" warning could be 13506incorrectly generated for names like "_SB" when the trailing 13507underscore is not used in the original ASL. 13508 13509Fixed a problem where the reserved name check did not handle 13510NamePaths with multiple NameSegs correctly. The first nameseg of 13511the NamePath was examined instead of the last NameSeg. 13512 13513 13514---------------------------------------- 13515 1351602 October 2002. Summary of changes for this release. 13517 13518 135191) ACPI CA Core Subsystem version 20021002: 13520 13521Fixed a problem where a store/copy of a string to an existing 13522string did not always set the string length properly in the String 13523object. 13524 13525Fixed a reported problem with the ToString operator where the 13526behavior was identical to the ToHexString operator instead of just 13527simply converting a raw buffer to a string data type. 13528 13529Fixed a problem where CopyObject and the other "explicit" 13530conversion operators were not updating the internal namespace node 13531type as part of the store operation. 13532 13533Fixed a memory leak during implicit source operand conversion 13534where the original object was not deleted if it was converted to a 13535new object of a different type. 13536 13537Enhanced error messages for all problems associated with namespace 13538lookups. Common procedure generates and prints the lookup name as 13539well as the formatted status. 13540 13541Completed implementation of a new design for the Alias support 13542within the namespace. The existing design did not handle the case 13543where a new object was assigned to one of the two names due to the 13544use of an explicit conversion operator, resulting in the two names 13545pointing to two different objects. The new design simply points 13546the Alias name to the original name node - not to the object. 13547This results in a level of indirection that must be handled in the 13548name resolution mechanism. 13549 13550Code and Data Size: Current core subsystem library sizes are shown 13551below. These are the code and data sizes for the acpica.lib 13552produced by the Microsoft Visual C++ 6.0 compiler, and these 13553values do not include any ACPI driver or OSPM code. The debug 13554version of the code includes the debug output trace mechanism and 13555has a larger code and data size. Note that these values will vary 13556depending on the efficiency of the compiler and the compiler 13557options used during generation. 13558 13559 Previous Release 13560 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13561 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13562 Current Release: 13563 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 13564 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 13565 13566 135672) Linux 13568 13569Initialize thermal driver's timer before it is used. (Knut 13570Neumann) 13571 13572Allow handling negative celsius values. (Kochi Takayoshi) 13573 13574Fix thermal management and make trip points. R/W (Pavel Machek) 13575 13576Fix /proc/acpi/sleep. (P. Christeas) 13577 13578IA64 fixes. (David Mosberger) 13579 13580Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 13581 13582Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 13583Brodowski) 13584 13585 135863) iASL Compiler/Disassembler 13587 13588Clarified some warning/error messages. 13589 13590 13591---------------------------------------- 1359218 September 2002. Summary of changes for this release. 13593 13594 135951) ACPI CA Core Subsystem version 20020918: 13596 13597Fixed a reported problem with reference chaining (via the Index() 13598and RefOf() operators) in the ObjectType() and SizeOf() operators. 13599The definition of these operators includes the dereferencing of 13600all chained references to return information on the base object. 13601 13602Fixed a problem with stores to indexed package elements - the 13603existing code would not complete the store if an "implicit 13604conversion" was not performed. In other words, if the existing 13605object (package element) was to be replaced completely, the code 13606didn't handle this case. 13607 13608Relaxed typechecking on the ASL "Scope" operator to allow the 13609target name to refer to an object of type Integer, String, or 13610Buffer, in addition to the scoping object types (Device, 13611predefined Scopes, Processor, PowerResource, and ThermalZone.) 13612This allows existing AML code that has workarounds for a bug in 13613Windows to function properly. A warning is issued, however. This 13614affects both the AML interpreter and the iASL compiler. Below is 13615an example of this type of ASL code: 13616 13617 Name(DEB,0x00) 13618 Scope(DEB) 13619 { 13620 13621Fixed some reported problems with 64-bit integer support in the 13622local implementation of C library functions (clib.c) 13623 13624 136252) Linux 13626 13627Use ACPI fix map region instead of IOAPIC region, since it is 13628undefined in non-SMP. 13629 13630Ensure that the SCI has the proper polarity and trigger, even on 13631systems that do not have an interrupt override entry in the MADT. 13632 136332.5 big driver reorganization (Pat Mochel) 13634 13635Use early table mapping code from acpitable.c (Andi Kleen) 13636 13637New blacklist entries (Andi Kleen) 13638 13639Blacklist improvements. Split blacklist code out into a separate 13640file. Move checking the blacklist to very early. Previously, we 13641would use ACPI tables, and then halfway through init, check the 13642blacklist -- too late. Now, it's early enough to completely fall- 13643back to non-ACPI. 13644 13645 136463) iASL Compiler/Disassembler version 20020918: 13647 13648Fixed a problem where the typechecking code didn't know that an 13649alias could point to a method. In other words, aliases were not 13650being dereferenced during typechecking. 13651 13652 13653---------------------------------------- 1365429 August 2002. Summary of changes for this release. 13655 136561) ACPI CA Core Subsystem Version 20020829: 13657 13658If the target of a Scope() operator already exists, it must be an 13659object type that actually opens a scope -- such as a Device, 13660Method, Scope, etc. This is a fatal runtime error. Similar error 13661check has been added to the iASL compiler also. 13662 13663Tightened up the namespace load to disallow multiple names in the 13664same scope. This previously was allowed if both objects were of 13665the same type. (i.e., a lookup was the same as entering a new 13666name). 13667 13668 136692) Linux 13670 13671Ensure that the ACPI interrupt has the proper trigger and 13672polarity. 13673 13674local_irq_disable is extraneous. (Matthew Wilcox) 13675 13676Make "acpi=off" actually do what it says, and not use the ACPI 13677interpreter *or* the tables. 13678 13679Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 13680Takayoshi) 13681 13682 136833) iASL Compiler/Disassembler Version 20020829: 13684 13685Implemented namepath optimization for name declarations. For 13686example, a declaration like "Method (\_SB_.ABCD)" would get 13687optimized to "Method (ABCD)" if the declaration is within the 13688\_SB_ scope. This optimization is in addition to the named 13689reference path optimization first released in the previous 13690version. This would seem to complete all possible optimizations 13691for namepaths within the ASL/AML. 13692 13693If the target of a Scope() operator already exists, it must be an 13694object type that actually opens a scope -- such as a Device, 13695Method, Scope, etc. 13696 13697Implemented a check and warning for unreachable code in the same 13698block below a Return() statement. 13699 13700Fixed a problem where the listing file was not generated if the 13701compiler aborted if the maximum error count was exceeded (200). 13702 13703Fixed a problem where the typechecking of method return values was 13704broken. This includes the check for a return value when the 13705method is invoked as a TermArg (a return value is expected.) 13706 13707Fixed a reported problem where EOF conditions during a quoted 13708string or comment caused a fault. 13709 13710 13711---------------------------------------- 1371215 August 2002. Summary of changes for this release. 13713 137141) ACPI CA Core Subsystem Version 20020815: 13715 13716Fixed a reported problem where a Store to a method argument that 13717contains a reference did not perform the indirect store correctly. 13718This problem was created during the conversion to the new 13719reference object model - the indirect store to a method argument 13720code was not updated to reflect the new model. 13721 13722Reworked the ACPI mode change code to better conform to ACPI 2.0, 13723handle corner cases, and improve code legibility (Kochi Takayoshi) 13724 13725Fixed a problem with the pathname parsing for the carat (^) 13726prefix. The heavy use of the carat operator by the new namepath 13727optimization in the iASL compiler uncovered a problem with the AML 13728interpreter handling of this prefix. In the case where one or 13729more carats precede a single nameseg, the nameseg was treated as 13730standalone and the search rule (to root) was inadvertently 13731applied. This could cause both the iASL compiler and the 13732interpreter to find the wrong object or to miss the error that 13733should occur if the object does not exist at that exact pathname. 13734 13735Found and fixed the problem where the HP Pavilion DSDT would not 13736load. This was a relatively minor tweak to the table loading code 13737(a problem caused by the unexpected encounter with a method 13738invocation not within a control method), but it does not solve the 13739overall issue of the execution of AML code at the table level. 13740This investigation is still ongoing. 13741 13742Code and Data Size: Current core subsystem library sizes are shown 13743below. These are the code and data sizes for the acpica.lib 13744produced by the Microsoft Visual C++ 6.0 compiler, and these 13745values do not include any ACPI driver or OSPM code. The debug 13746version of the code includes the debug output trace mechanism and 13747has a larger code and data size. Note that these values will vary 13748depending on the efficiency of the compiler and the compiler 13749options used during generation. 13750 13751 Previous Release 13752 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13753 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13754 Current Release: 13755 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13756 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13757 13758 137592) Linux 13760 13761Remove redundant slab.h include (Brad Hards) 13762 13763Fix several bugs in thermal.c (Herbert Nachtnebel) 13764 13765Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 13766 13767Change acpi_system_suspend to use updated irq functions (Pavel 13768Machek) 13769 13770Export acpi_get_firmware_table (Matthew Wilcox) 13771 13772Use proper root proc entry for ACPI (Kochi Takayoshi) 13773 13774Fix early-boot table parsing (Bjorn Helgaas) 13775 13776 137773) iASL Compiler/Disassembler 13778 13779Reworked the compiler options to make them more consistent and to 13780use two-letter options where appropriate. We were running out of 13781sensible letters. This may break some makefiles, so check the 13782current options list by invoking the compiler with no parameters. 13783 13784Completed the design and implementation of the ASL namepath 13785optimization option for the compiler. This option optimizes all 13786references to named objects to the shortest possible path. The 13787first attempt tries to utilize a single nameseg (4 characters) and 13788the "search-to-root" algorithm used by the interpreter. If that 13789cannot be used (because either the name is not in the search path 13790or there is a conflict with another object with the same name), 13791the pathname is optimized using the carat prefix (usually a 13792shorter string than specifying the entire path from the root.) 13793 13794Implemented support to obtain the DSDT from the Windows registry 13795(when the disassembly option is specified with no input file). 13796Added this code as the implementation for AcpiOsTableOverride in 13797the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 13798utility) to scan memory for the DSDT to the AcpiOsTableOverride 13799function in the DOS OSL to make the disassembler truly OS 13800independent. 13801 13802Implemented a new option to disassemble and compile in one step. 13803When used without an input filename, this option will grab the 13804DSDT from the local machine, disassemble it, and compile it in one 13805step. 13806 13807Added a warning message for invalid escapes (a backslash followed 13808by any character other than the allowable escapes). This catches 13809the quoted string error "\_SB_" (which should be "\\_SB_" ). 13810 13811Also, there are numerous instances in the ACPI specification where 13812this error occurs. 13813 13814Added a compiler option to disable all optimizations. This is 13815basically the "compatibility mode" because by using this option, 13816the AML code will come out exactly the same as other ASL 13817compilers. 13818 13819Added error messages for incorrectly ordered dependent resource 13820functions. This includes: missing EndDependentFn macro at end of 13821dependent resource list, nested dependent function macros (both 13822start and end), and missing StartDependentFn macro. These are 13823common errors that should be caught at compile time. 13824 13825Implemented _OSI support for the disassembler and compiler. _OSI 13826must be included in the namespace for proper disassembly (because 13827the disassembler must know the number of arguments.) 13828 13829Added an "optimization" message type that is optional (off by 13830default). This message is used for all optimizations - including 13831constant folding, integer optimization, and namepath optimization. 13832 13833---------------------------------------- 1383425 July 2002. Summary of changes for this release. 13835 13836 138371) ACPI CA Core Subsystem Version 20020725: 13838 13839The AML Disassembler has been enhanced to produce compilable ASL 13840code and has been integrated into the iASL compiler (see below) as 13841well as the single-step disassembly for the AML debugger and the 13842disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 13843resource templates and macros are fully supported. The 13844disassembler has been tested on over 30 different AML files, 13845producing identical AML when the resulting disassembled ASL file 13846is recompiled with the same ASL compiler. 13847 13848Modified the Resource Manager to allow zero interrupts and zero 13849dma channels during the GetCurrentResources call. This was 13850causing problems on some platforms. 13851 13852Added the AcpiOsRedirectOutput interface to the OSL to simplify 13853output redirection for the AcpiOsPrintf and AcpiOsVprintf 13854interfaces. 13855 13856Code and Data Size: Current core subsystem library sizes are shown 13857below. These are the code and data sizes for the acpica.lib 13858produced by the Microsoft Visual C++ 6.0 compiler, and these 13859values do not include any ACPI driver or OSPM code. The debug 13860version of the code includes the debug output trace mechanism and 13861has a larger code and data size. Note that these values will vary 13862depending on the efficiency of the compiler and the compiler 13863options used during generation. 13864 13865 Previous Release 13866 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 13867 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 13868 Current Release: 13869 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13870 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13871 13872 138732) Linux 13874 13875Fixed a panic in the EC driver (Dominik Brodowski) 13876 13877Implemented checksum of the R/XSDT itself during Linux table scan 13878(Richard Schaal) 13879 13880 138813) iASL compiler 13882 13883The AML disassembler is integrated into the compiler. The "-d" 13884option invokes the disassembler to completely disassemble an 13885input AML file, producing as output a text ASL file with the 13886extension ".dsl" (to avoid name collisions with existing .asl 13887source files.) A future enhancement will allow the disassembler 13888to obtain the BIOS DSDT from the registry under Windows. 13889 13890Fixed a problem with the VendorShort and VendorLong resource 13891descriptors where an invalid AML sequence was created. 13892 13893Implemented a fix for BufferData term in the ASL parser. It was 13894inadvertently defined twice, allowing invalid syntax to pass and 13895causing reduction conflicts. 13896 13897Fixed a problem where the Ones opcode could get converted to a 13898value of zero if "Ones" was used where a byte, word or dword value 13899was expected. The 64-bit value is now truncated to the correct 13900size with the correct value. 13901 13902 13903 13904---------------------------------------- 1390502 July 2002. Summary of changes for this release. 13906 13907 139081) ACPI CA Core Subsystem Version 20020702: 13909 13910The Table Manager code has been restructured to add several new 13911features. Tables that are not required by the core subsystem 13912(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 13913validated in any way and are returned from AcpiGetFirmwareTable if 13914requested. The AcpiOsTableOverride interface is now called for 13915each table that is loaded by the subsystem in order to allow the 13916host to override any table it chooses. Previously, only the DSDT 13917could be overridden. Added one new files, tbrsdt.c and 13918tbgetall.c. 13919 13920Fixed a problem with the conversion of internal package objects to 13921external objects (when a package is returned from a control 13922method.) The return buffer length was set to zero instead of the 13923proper length of the package object. 13924 13925Fixed a reported problem with the use of the RefOf and DeRefOf 13926operators when passing reference arguments to control methods. A 13927new type of Reference object is used internally for references 13928produced by the RefOf operator. 13929 13930Added additional error messages in the Resource Manager to explain 13931AE_BAD_DATA errors when they occur during resource parsing. 13932 13933Split the AcpiEnableSubsystem into two primitives to enable a 13934finer granularity initialization sequence. These two calls should 13935be called in this order: AcpiEnableSubsystem (flags), 13936AcpiInitializeObjects (flags). The flags parameter remains the 13937same. 13938 13939 139402) Linux 13941 13942Updated the ACPI utilities module to understand the new style of 13943fully resolved package objects that are now returned from the core 13944subsystem. This eliminates errors of the form: 13945 13946 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 13947 acpi_utils-0430 [145] acpi_evaluate_reference: 13948 Invalid element in package (not a device reference) 13949 13950The method evaluation utility uses the new buffer allocation 13951scheme instead of calling AcpiEvaluate Object twice. 13952 13953Added support for ECDT. This allows the use of the Embedded 13954 13955Controller before the namespace has been fully initialized, which 13956is necessary for ACPI 2.0 support, and for some laptops to 13957initialize properly. (Laptops using ECDT are still rare, so only 13958limited testing was performed of the added functionality.) 13959 13960Fixed memory leaks in the EC driver. 13961 13962Eliminated a brittle code structure in acpi_bus_init(). 13963 13964Eliminated the acpi_evaluate() helper function in utils.c. It is 13965no longer needed since acpi_evaluate_object can optionally 13966allocate memory for the return object. 13967 13968Implemented fix for keyboard hang when getting battery readings on 13969some systems (Stephen White) 13970 13971PCI IRQ routing update (Dominik Brodowski) 13972 13973Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 13974support 13975 13976---------------------------------------- 1397711 June 2002. Summary of changes for this release. 13978 13979 139801) ACPI CA Core Subsystem Version 20020611: 13981 13982Fixed a reported problem where constants such as Zero and One 13983appearing within _PRT packages were not handled correctly within 13984the resource manager code. Originally reported against the ASL 13985compiler because the code generator now optimizes integers to 13986their minimal AML representation (i.e. AML constants if possible.) 13987The _PRT code now handles all AML constant opcodes correctly 13988(Zero, One, Ones, Revision). 13989 13990Fixed a problem with the Concatenate operator in the AML 13991interpreter where a buffer result object was incorrectly marked as 13992not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 13993 13994All package sub-objects are now fully resolved before they are 13995returned from the external ACPI interfaces. This means that name 13996strings are resolved to object handles, and constant operators 13997(Zero, One, Ones, Revision) are resolved to Integers. 13998 13999Implemented immediate resolution of the AML Constant opcodes 14000(Zero, One, Ones, Revision) to Integer objects upon detection 14001within the AML stream. This has simplified and reduced the 14002generated code size of the subsystem by eliminating about 10 14003switch statements for these constants (which previously were 14004contained in Reference objects.) The complicating issues are that 14005the Zero opcode is used as a "placeholder" for unspecified 14006optional target operands and stores to constants are defined to be 14007no-ops. 14008 14009Code and Data Size: Current core subsystem library sizes are shown 14010below. These are the code and data sizes for the acpica.lib 14011produced by the Microsoft Visual C++ 6.0 compiler, and these 14012values do not include any ACPI driver or OSPM code. The debug 14013version of the code includes the debug output trace mechanism and 14014has a larger code and data size. Note that these values will vary 14015depending on the efficiency of the compiler and the compiler 14016options used during generation. 14017 14018 Previous Release 14019 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14020 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14021 Current Release: 14022 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14023 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14024 14025 140262) Linux 14027 14028 14029Added preliminary support for obtaining _TRA data for PCI root 14030bridges (Bjorn Helgaas). 14031 14032 140333) iASL Compiler Version X2046: 14034 14035Fixed a problem where the "_DDN" reserved name was defined to be a 14036control method with one argument. There are no arguments, and 14037_DDN does not have to be a control method. 14038 14039Fixed a problem with the Linux version of the compiler where the 14040source lines printed with error messages were the wrong lines. 14041This turned out to be the "LF versus CR/LF" difference between 14042Windows and Unix. This appears to be the longstanding issue 14043concerning listing output and error messages. 14044 14045Fixed a problem with the Linux version of compiler where opcode 14046names within error messages were wrong. This was caused by a 14047slight difference in the output of the Flex tool on Linux versus 14048Windows. 14049 14050Fixed a problem with the Linux compiler where the hex output files 14051contained some garbage data caused by an internal buffer overrun. 14052 14053 14054---------------------------------------- 1405517 May 2002. Summary of changes for this release. 14056 14057 140581) ACPI CA Core Subsystem Version 20020517: 14059 14060Implemented a workaround to an BIOS bug discovered on the HP 14061OmniBook where the FADT revision number and the table size are 14062inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 14063behavior is to fallback to using only the ACPI 1.0 fields of the 14064FADT if the table is too small to be a ACPI 2.0 table as claimed 14065by the revision number. Although this is a BIOS bug, this is a 14066case where the workaround is simple enough and with no side 14067effects, so it seemed prudent to add it. A warning message is 14068issued, however. 14069 14070Implemented minimum size checks for the fixed-length ACPI tables - 14071- the FADT and FACS, as well as consistency checks between the 14072revision number and the table size. 14073 14074Fixed a reported problem in the table override support where the 14075new table pointer was incorrectly treated as a physical address 14076instead of a logical address. 14077 14078Eliminated the use of the AE_AML_ERROR exception and replaced it 14079with more descriptive codes. 14080 14081Fixed a problem where an exception would occur if an ASL Field was 14082defined with no named Field Units underneath it (used by some 14083index fields). 14084 14085Code and Data Size: Current core subsystem library sizes are shown 14086below. These are the code and data sizes for the acpica.lib 14087produced by the Microsoft Visual C++ 6.0 compiler, and these 14088values do not include any ACPI driver or OSPM code. The debug 14089version of the code includes the debug output trace mechanism and 14090has a larger code and data size. Note that these values will vary 14091depending on the efficiency of the compiler and the compiler 14092options used during generation. 14093 14094 Previous Release 14095 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14096 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14097 Current Release: 14098 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14099 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14100 14101 14102 141032) Linux 14104 14105Much work done on ACPI init (MADT and PCI IRQ routing support). 14106(Paul D. and Dominik Brodowski) 14107 14108Fix PCI IRQ-related panic on boot (Sam Revitch) 14109 14110Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 14111 14112Fix "MHz" typo (Dominik Brodowski) 14113 14114Fix RTC year 2000 issue (Dominik Brodowski) 14115 14116Preclude multiple button proc entries (Eric Brunet) 14117 14118Moved arch-specific code out of include/platform/aclinux.h 14119 141203) iASL Compiler Version X2044: 14121 14122Implemented error checking for the string used in the EISAID macro 14123(Usually used in the definition of the _HID object.) The code now 14124strictly enforces the PnP format - exactly 7 characters, 3 14125uppercase letters and 4 hex digits. 14126 14127If a raw string is used in the definition of the _HID object 14128(instead of the EISAID macro), the string must contain all 14129alphanumeric characters (e.g., "*PNP0011" is not allowed because 14130of the asterisk.) 14131 14132Implemented checking for invalid use of ACPI reserved names for 14133most of the name creation operators (Name, Device, Event, Mutex, 14134OperationRegion, PowerResource, Processor, and ThermalZone.) 14135Previously, this check was only performed for control methods. 14136 14137Implemented an additional check on the Name operator to emit an 14138error if a reserved name that must be implemented in ASL as a 14139control method is used. We know that a reserved name must be a 14140method if it is defined with input arguments. 14141 14142The warning emitted when a namespace object reference is not found 14143during the cross reference phase has been changed into an error. 14144The "External" directive should be used for names defined in other 14145modules. 14146 14147 141484) Tools and Utilities 14149 14150The 16-bit tools (adump16 and aexec16) have been regenerated and 14151tested. 14152 14153Fixed a problem with the output of both acpidump and adump16 where 14154the indentation of closing parentheses and brackets was not 14155 14156aligned properly with the parent block. 14157 14158 14159---------------------------------------- 1416003 May 2002. Summary of changes for this release. 14161 14162 141631) ACPI CA Core Subsystem Version 20020503: 14164 14165Added support a new OSL interface that allows the host operating 14166 14167system software to override the DSDT found in the firmware - 14168AcpiOsTableOverride. With this interface, the OSL can examine the 14169version of the firmware DSDT and replace it with a different one 14170if desired. 14171 14172Added new external interfaces for accessing ACPI registers from 14173device drivers and other system software - AcpiGetRegister and 14174AcpiSetRegister. This was simply an externalization of the 14175existing AcpiHwBitRegister interfaces. 14176 14177Fixed a regression introduced in the previous build where the 14178ASL/AML CreateField operator always returned an error, 14179"destination must be a NS Node". 14180 14181Extended the maximum time (before failure) to successfully enable 14182ACPI mode to 3 seconds. 14183 14184Code and Data Size: Current core subsystem library sizes are shown 14185below. These are the code and data sizes for the acpica.lib 14186produced by the Microsoft Visual C++ 6.0 compiler, and these 14187values do not include any ACPI driver or OSPM code. The debug 14188version of the code includes the debug output trace mechanism and 14189has a larger code and data size. Note that these values will vary 14190depending on the efficiency of the compiler and the compiler 14191options used during generation. 14192 14193 Previous Release 14194 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14195 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14196 Current Release: 14197 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14198 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14199 14200 142012) Linux 14202 14203Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 14204free. While 3 out of 4 of our in-house systems work fine, the last 14205one still hangs when testing the LAPIC timer. 14206 14207Renamed many files in 2.5 kernel release to omit "acpi_" from the 14208name. 14209 14210Added warning on boot for Presario 711FR. 14211 14212Sleep improvements (Pavel Machek) 14213 14214ACPI can now be built without CONFIG_PCI enabled. 14215 14216IA64: Fixed memory map functions (JI Lee) 14217 14218 142193) iASL Compiler Version X2043: 14220 14221Added support to allow the compiler to be integrated into the MS 14222VC++ development environment for one-button compilation of single 14223files or entire projects -- with error-to-source-line mapping. 14224 14225Implemented support for compile-time constant folding for the 14226Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 14227specification. This allows the ASL writer to use expressions 14228instead of Integer/Buffer/String constants in terms that must 14229evaluate to constants at compile time and will also simplify the 14230emitted AML in any such sub-expressions that can be folded 14231(evaluated at compile-time.) This increases the size of the 14232compiler significantly because a portion of the ACPI CA AML 14233interpreter is included within the compiler in order to pre- 14234evaluate constant expressions. 14235 14236 14237Fixed a problem with the "Unicode" ASL macro that caused the 14238compiler to fault. (This macro is used in conjunction with the 14239_STR reserved name.) 14240 14241Implemented an AML opcode optimization to use the Zero, One, and 14242Ones opcodes where possible to further reduce the size of integer 14243constants and thus reduce the overall size of the generated AML 14244code. 14245 14246Implemented error checking for new reserved terms for ACPI version 142472.0A. 14248 14249Implemented the -qr option to display the current list of ACPI 14250reserved names known to the compiler. 14251 14252Implemented the -qc option to display the current list of ASL 14253operators that are allowed within constant expressions and can 14254therefore be folded at compile time if the operands are constants. 14255 14256 142574) Documentation 14258 14259Updated the Programmer's Reference for new interfaces, data types, 14260and memory allocation model options. 14261 14262Updated the iASL Compiler User Reference to apply new format and 14263add information about new features and options. 14264 14265---------------------------------------- 1426619 April 2002. Summary of changes for this release. 14267 142681) ACPI CA Core Subsystem Version 20020419: 14269 14270The source code base for the Core Subsystem has been completely 14271cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 14272versions. The Lint option files used are included in the 14273/acpi/generate/lint directory. 14274 14275Implemented enhanced status/error checking across the entire 14276Hardware manager subsystem. Any hardware errors (reported from 14277the OSL) are now bubbled up and will abort a running control 14278method. 14279 14280 14281Fixed a problem where the per-ACPI-table integer width (32 or 64) 14282was stored only with control method nodes, causing a fault when 14283non-control method code was executed during table loading. The 14284solution implemented uses a global variable to indicate table 14285width across the entire ACPI subsystem. Therefore, ACPI CA does 14286not support mixed integer widths across different ACPI tables 14287(DSDT, SSDT). 14288 14289Fixed a problem where NULL extended fields (X fields) in an ACPI 142902.0 ACPI FADT caused the table load to fail. Although the 14291existing ACPI specification is a bit fuzzy on this topic, the new 14292behavior is to fall back on a ACPI 1.0 field if the corresponding 14293ACPI 2.0 X field is zero (even though the table revision indicates 14294a full ACPI 2.0 table.) The ACPI specification will be updated to 14295clarify this issue. 14296 14297Fixed a problem with the SystemMemory operation region handler 14298where memory was always accessed byte-wise even if the AML- 14299specified access width was larger than a byte. This caused 14300problems on systems with memory-mapped I/O. Memory is now 14301accessed with the width specified. On systems that do not support 14302non-aligned transfers, a check is made to guarantee proper address 14303alignment before proceeding in order to avoid an AML-caused 14304alignment fault within the kernel. 14305 14306 14307Fixed a problem with the ExtendedIrq resource where only one byte 14308of the 4-byte Irq field was extracted. 14309 14310Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 14311function was out of date and required a rewrite. 14312 14313Code and Data Size: Current core subsystem library sizes are shown 14314below. These are the code and data sizes for the acpica.lib 14315produced by the Microsoft Visual C++ 6.0 compiler, and these 14316values do not include any ACPI driver or OSPM code. The debug 14317version of the code includes the debug output trace mechanism and 14318has a larger code and data size. Note that these values will vary 14319depending on the efficiency of the compiler and the compiler 14320options used during generation. 14321 14322 Previous Release 14323 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 14324 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 14325 Current Release: 14326 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14327 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14328 14329 143302) Linux 14331 14332PCI IRQ routing fixes (Dominik Brodowski) 14333 14334 143353) iASL Compiler Version X2042: 14336 14337Implemented an additional compile-time error check for a field 14338unit whose size + minimum access width would cause a run-time 14339access beyond the end-of-region. Previously, only the field size 14340itself was checked. 14341 14342The Core subsystem and iASL compiler now share a common parse 14343object in preparation for compile-time evaluation of the type 143443/4/5 ASL operators. 14345 14346 14347---------------------------------------- 14348Summary of changes for this release: 03_29_02 14349 143501) ACPI CA Core Subsystem Version 20020329: 14351 14352Implemented support for late evaluation of TermArg operands to 14353Buffer and Package objects. This allows complex expressions to be 14354used in the declarations of these object types. 14355 14356Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 143571.0, if the field was larger than 32 bits, it was returned as a 14358buffer - otherwise it was returned as an integer. In ACPI 2.0, 14359the field is returned as a buffer only if the field is larger than 1436064 bits. The TableRevision is now considered when making this 14361conversion to avoid incompatibility with existing ASL code. 14362 14363Implemented logical addressing for AcpiOsGetRootPointer. This 14364allows an RSDP with either a logical or physical address. With 14365this support, the host OS can now override all ACPI tables with 14366one logical RSDP. Includes implementation of "typed" pointer 14367support to allow a common data type for both physical and logical 14368pointers internally. This required a change to the 14369AcpiOsGetRootPointer interface. 14370 14371Implemented the use of ACPI 2.0 Generic Address Structures for all 14372GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 14373mapped I/O for these ACPI features. 14374 14375Initialization now ignores not only non-required tables (All 14376tables other than the FADT, FACS, DSDT, and SSDTs), but also does 14377not validate the table headers of unrecognized tables. 14378 14379Fixed a problem where a notify handler could only be 14380installed/removed on an object of type Device. All "notify" 14381 14382objects are now supported -- Devices, Processor, Power, and 14383Thermal. 14384 14385Removed most verbosity from the ACPI_DB_INFO debug level. Only 14386critical information is returned when this debug level is enabled. 14387 14388Code and Data Size: Current core subsystem library sizes are shown 14389below. These are the code and data sizes for the acpica.lib 14390produced by the Microsoft Visual C++ 6.0 compiler, and these 14391values do not include any ACPI driver or OSPM code. The debug 14392version of the code includes the debug output trace mechanism and 14393has a larger code and data size. Note that these values will vary 14394depending on the efficiency of the compiler and the compiler 14395options used during generation. 14396 14397 Previous Release 14398 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 14399 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 14400 Current Release: 14401 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 14402 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 14403 14404 144052) Linux: 14406 14407The processor driver (acpi_processor.c) now fully supports ACPI 144082.0-based processor performance control (e.g. Intel(R) 14409SpeedStep(TM) technology) Note that older laptops that only have 14410the Intel "applet" interface are not supported through this. The 14411'limit' and 'performance' interface (/proc) are fully functional. 14412[Note that basic policy for controlling performance state 14413transitions will be included in the next version of ospmd.] The 14414idle handler was modified to more aggressively use C2, and PIIX4 14415errata handling underwent a complete overhaul (big thanks to 14416Dominik Brodowski). 14417 14418Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 14419based devices in the ACPI namespace are now dynamically bound 14420(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 14421This allows, among other things, ACPI to resolve bus numbers for 14422subordinate PCI bridges. 14423 14424Enhanced PCI IRQ routing to get the proper bus number for _PRT 14425entries defined underneath PCI bridges. 14426 14427Added IBM 600E to bad bios list due to invalid _ADR value for 14428PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 14429 14430In the process of adding full MADT support (e.g. IOAPIC) for IA32 14431(acpi.c, mpparse.c) -- stay tuned. 14432 14433Added back visual differentiation between fixed-feature and 14434control-method buttons in dmesg. Buttons are also subtyped (e.g. 14435button/power/PWRF) to simplify button identification. 14436 14437We no longer use -Wno-unused when compiling debug. Please ignore 14438any "_THIS_MODULE defined but not used" messages. 14439 14440Can now shut down the system using "magic sysrq" key. 14441 14442 144433) iASL Compiler version 2041: 14444 14445Fixed a problem where conversion errors for hex/octal/decimal 14446constants were not reported. 14447 14448Implemented a fix for the General Register template Address field. 14449This field was 8 bits when it should be 64. 14450 14451Fixed a problem where errors/warnings were no longer being emitted 14452within the listing output file. 14453 14454Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 14455exactly 4 characters, alphanumeric only. 14456 14457 14458 14459 14460---------------------------------------- 14461Summary of changes for this release: 03_08_02 14462 14463 144641) ACPI CA Core Subsystem Version 20020308: 14465 14466Fixed a problem with AML Fields where the use of the "AccessAny" 14467keyword could cause an interpreter error due to attempting to read 14468or write beyond the end of the parent Operation Region. 14469 14470Fixed a problem in the SystemMemory Operation Region handler where 14471an attempt was made to map memory beyond the end of the region. 14472This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 14473errors on some Linux systems. 14474 14475Fixed a problem where the interpreter/namespace "search to root" 14476algorithm was not functioning for some object types. Relaxed the 14477internal restriction on the search to allow upsearches for all 14478external object types as well as most internal types. 14479 14480 144812) Linux: 14482 14483We now use safe_halt() macro versus individual calls to sti | hlt. 14484 14485Writing to the processor limit interface should now work. "echo 1" 14486will increase the limit, 2 will decrease, and 0 will reset to the 14487 14488default. 14489 14490 144913) ASL compiler: 14492 14493Fixed segfault on Linux version. 14494 14495 14496---------------------------------------- 14497Summary of changes for this release: 02_25_02 14498 144991) ACPI CA Core Subsystem: 14500 14501 14502Fixed a problem where the GPE bit masks were not initialized 14503properly, causing erratic GPE behavior. 14504 14505Implemented limited support for multiple calling conventions. The 14506code can be generated with either the VPL (variable parameter 14507list, or "C") convention, or the FPL (fixed parameter list, or 14508"Pascal") convention. The core subsystem is about 3.4% smaller 14509when generated with FPL. 14510 14511 145122) Linux 14513 14514Re-add some /proc/acpi/event functionality that was lost during 14515the rewrite 14516 14517Resolved issue with /proc events for fixed-feature buttons showing 14518up as the system device. 14519 14520Fixed checks on C2/C3 latencies to be inclusive of maximum values. 14521 14522Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 14523 14524Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 14525 14526Fixed limit interface & usage to fix bugs with passive cooling 14527hysterisis. 14528 14529Restructured PRT support. 14530 14531 14532---------------------------------------- 14533Summary of changes for this label: 02_14_02 14534 14535 145361) ACPI CA Core Subsystem: 14537 14538Implemented support in AcpiLoadTable to allow loading of FACS and 14539FADT tables. 14540 14541Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 14542been removed. All 64-bit platforms should be migrated to the ACPI 145432.0 tables. The actbl71.h header has been removed from the source 14544tree. 14545 14546All C macros defined within the subsystem have been prefixed with 14547"ACPI_" to avoid collision with other system include files. 14548 14549Removed the return value for the two AcpiOsPrint interfaces, since 14550it is never used and causes lint warnings for ignoring the return 14551value. 14552 14553Added error checking to all internal mutex acquire and release 14554calls. Although a failure from one of these interfaces is 14555probably a fatal system error, these checks will cause the 14556immediate abort of the currently executing method or interface. 14557 14558Fixed a problem where the AcpiSetCurrentResources interface could 14559fault. This was a side effect of the deployment of the new memory 14560allocation model. 14561 14562Fixed a couple of problems with the Global Lock support introduced 14563in the last major build. The "common" (1.0/2.0) internal FACS was 14564being overwritten with the FACS signature and clobbering the 14565Global Lock pointer. Also, the actual firmware FACS was being 14566unmapped after construction of the "common" FACS, preventing 14567access to the actual Global Lock field within it. The "common" 14568internal FACS is no longer installed as an actual ACPI table; it 14569is used simply as a global. 14570 14571Code and Data Size: Current core subsystem library sizes are shown 14572below. These are the code and data sizes for the acpica.lib 14573produced by the Microsoft Visual C++ 6.0 compiler, and these 14574values do not include any ACPI driver or OSPM code. The debug 14575version of the code includes the debug output trace mechanism and 14576has a larger code and data size. Note that these values will vary 14577depending on the efficiency of the compiler and the compiler 14578options used during generation. 14579 14580 Previous Release (02_07_01) 14581 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 14582 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 14583 Current Release: 14584 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 14585 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 14586 14587 145882) Linux 14589 14590Updated Linux-specific code for core macro and OSL interface 14591changes described above. 14592 14593Improved /proc/acpi/event. It now can be opened only once and has 14594proper poll functionality. 14595 14596Fixed and restructured power management (acpi_bus). 14597 14598Only create /proc "view by type" when devices of that class exist. 14599 14600Fixed "charging/discharging" bug (and others) in acpi_battery. 14601 14602Improved thermal zone code. 14603 14604 146053) ASL Compiler, version X2039: 14606 14607 14608Implemented the new compiler restriction on ASL String hex/octal 14609escapes to non-null, ASCII values. An error results if an invalid 14610value is used. (This will require an ACPI 2.0 specification 14611change.) 14612 14613AML object labels that are output to the optional C and ASM source 14614are now prefixed with both the ACPI table signature and table ID 14615to help guarantee uniqueness within a large BIOS project. 14616 14617 14618---------------------------------------- 14619Summary of changes for this label: 02_01_02 14620 146211) ACPI CA Core Subsystem: 14622 14623ACPI 2.0 support is complete in the entire Core Subsystem and the 14624ASL compiler. All new ACPI 2.0 operators are implemented and all 14625other changes for ACPI 2.0 support are complete. With 14626simultaneous code and data optimizations throughout the subsystem, 14627ACPI 2.0 support has been implemented with almost no additional 14628cost in terms of code and data size. 14629 14630Implemented a new mechanism for allocation of return buffers. If 14631the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 14632be allocated on behalf of the caller. Consolidated all return 14633buffer validation and allocation to a common procedure. Return 14634buffers will be allocated via the primary OSL allocation interface 14635since it appears that a separate pool is not needed by most users. 14636If a separate pool is required for these buffers, the caller can 14637still use the original mechanism and pre-allocate the buffer(s). 14638 14639Implemented support for string operands within the DerefOf 14640operator. 14641 14642Restructured the Hardware and Event managers to be table driven, 14643simplifying the source code and reducing the amount of generated 14644code. 14645 14646Split the common read/write low-level ACPI register bitfield 14647procedure into a separate read and write, simplifying the code 14648considerably. 14649 14650Obsoleted the AcpiOsCallocate OSL interface. This interface was 14651used only a handful of times and didn't have enough critical mass 14652for a separate interface. Replaced with a common calloc procedure 14653in the core. 14654 14655Fixed a reported problem with the GPE number mapping mechanism 14656that allows GPE1 numbers to be non-contiguous with GPE0. 14657Reorganized the GPE information and shrunk a large array that was 14658originally large enough to hold info for all possible GPEs (256) 14659to simply large enough to hold all GPEs up to the largest GPE 14660number on the machine. 14661 14662Fixed a reported problem with resource structure alignment on 64- 14663bit platforms. 14664 14665Changed the AcpiEnableEvent and AcpiDisableEvent external 14666interfaces to not require any flags for the common case of 14667enabling/disabling a GPE. 14668 14669Implemented support to allow a "Notify" on a Processor object. 14670 14671Most TBDs in comments within the source code have been resolved 14672and eliminated. 14673 14674 14675Fixed a problem in the interpreter where a standalone parent 14676prefix (^) was not handled correctly in the interpreter and 14677debugger. 14678 14679Removed obsolete and unnecessary GPE save/restore code. 14680 14681Implemented Field support in the ASL Load operator. This allows a 14682table to be loaded from a named field, in addition to loading a 14683table directly from an Operation Region. 14684 14685Implemented timeout and handle support in the external Global Lock 14686interfaces. 14687 14688Fixed a problem in the AcpiDump utility where pathnames were no 14689longer being generated correctly during the dump of named objects. 14690 14691Modified the AML debugger to give a full display of if/while 14692predicates instead of just one AML opcode at a time. (The 14693predicate can have several nested ASL statements.) The old method 14694was confusing during single stepping. 14695 14696Code and Data Size: Current core subsystem library sizes are shown 14697below. These are the code and data sizes for the acpica.lib 14698produced by the Microsoft Visual C++ 6.0 compiler, and these 14699values do not include any ACPI driver or OSPM code. The debug 14700version of the code includes the debug output trace mechanism and 14701has a larger code and data size. Note that these values will vary 14702depending on the efficiency of the compiler and the compiler 14703options used during generation. 14704 14705 Previous Release (12_18_01) 14706 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 14707 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 14708 Current Release: 14709 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 14710 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 14711 147122) Linux 14713 14714 Implemented fix for PIIX reverse throttling errata (Processor 14715driver) 14716 14717Added new Limit interface (Processor and Thermal drivers) 14718 14719New thermal policy (Thermal driver) 14720 14721Many updates to /proc 14722 14723Battery "low" event support (Battery driver) 14724 14725Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 14726 14727IA32 - IA64 initialization unification, no longer experimental 14728 14729Menuconfig options redesigned 14730 147313) ASL Compiler, version X2037: 14732 14733Implemented several new output features to simplify integration of 14734AML code into firmware: 1) Output the AML in C source code with 14735labels for each named ASL object. The original ASL source code 14736is interleaved as C comments. 2) Output the AML in ASM source code 14737with labels and interleaved ASL source. 3) Output the AML in 14738raw hex table form, in either C or ASM. 14739 14740Implemented support for optional string parameters to the 14741LoadTable operator. 14742 14743Completed support for embedded escape sequences within string 14744literals. The compiler now supports all single character escapes 14745as well as the Octal and Hex escapes. Note: the insertion of a 14746null byte into a string literal (via the hex/octal escape) causes 14747the string to be immediately terminated. A warning is issued. 14748 14749Fixed a problem where incorrect AML was generated for the case 14750where an ASL namepath consists of a single parent prefix ( 14751 14752) with no trailing name segments. 14753 14754The compiler has been successfully generated with a 64-bit C 14755compiler. 14756 14757 14758 14759 14760---------------------------------------- 14761Summary of changes for this label: 12_18_01 14762 147631) Linux 14764 14765Enhanced blacklist with reason and severity fields. Any table's 14766signature may now be used to identify a blacklisted system. 14767 14768Call _PIC control method to inform the firmware which interrupt 14769model the OS is using. Turn on any disabled link devices. 14770 14771Cleaned up busmgr /proc error handling (Andreas Dilger) 14772 14773 2) ACPI CA Core Subsystem: 14774 14775Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 14776while loop) 14777 14778Completed implementation of the ACPI 2.0 "Continue", 14779"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 14780operators. All new ACPI 2.0 operators are now implemented in both 14781the ASL compiler and the AML interpreter. The only remaining ACPI 147822.0 task is support for the String data type in the DerefOf 14783operator. Fixed a problem with AcquireMutex where the status code 14784was lost if the caller had to actually wait for the mutex. 14785 14786Increased the maximum ASL Field size from 64K bits to 4G bits. 14787 14788Completed implementation of the external Global Lock interfaces -- 14789AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 14790Handler parameters were added. 14791 14792Completed another pass at removing warnings and issues when 14793compiling with 64-bit compilers. The code now compiles cleanly 14794with the Intel 64-bit C/C++ compiler. Most notably, the pointer 14795add and subtract (diff) macros have changed considerably. 14796 14797 14798Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1479964-bit platforms, 32-bits on all others. This type is used 14800wherever memory allocation and/or the C sizeof() operator is used, 14801and affects the OSL memory allocation interfaces AcpiOsAllocate 14802and AcpiOsCallocate. 14803 14804Implemented sticky user breakpoints in the AML debugger. 14805 14806Code and Data Size: Current core subsystem library sizes are shown 14807below. These are the code and data sizes for the acpica.lib 14808produced by the Microsoft Visual C++ 6.0 compiler, and these 14809values do not include any ACPI driver or OSPM code. The debug 14810version of the code includes the debug output trace mechanism and 14811has a larger code and data size. Note that these values will vary 14812depending on the efficiency of the compiler and the compiler 14813options used during generation. 14814 14815 Previous Release (12_05_01) 14816 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 14817 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 14818 Current Release: 14819 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 14820 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 14821 14822 3) ASL Compiler, version X2034: 14823 14824Now checks for (and generates an error if detected) the use of a 14825Break or Continue statement without an enclosing While statement. 14826 14827 14828Successfully generated the compiler with the Intel 64-bit C 14829compiler. 14830 14831 ---------------------------------------- 14832Summary of changes for this label: 12_05_01 14833 14834 1) ACPI CA Core Subsystem: 14835 14836The ACPI 2.0 CopyObject operator is fully implemented. This 14837operator creates a new copy of an object (and is also used to 14838bypass the "implicit conversion" mechanism of the Store operator.) 14839 14840The ACPI 2.0 semantics for the SizeOf operator are fully 14841implemented. The change is that performing a SizeOf on a 14842reference object causes an automatic dereference of the object to 14843tha actual value before the size is evaluated. This behavior was 14844undefined in ACPI 1.0. 14845 14846The ACPI 2.0 semantics for the Extended IRQ resource descriptor 14847have been implemented. The interrupt polarity and mode are now 14848independently set. 14849 14850Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 14851appearing in Package objects were not properly converted to 14852integers when the internal Package was converted to an external 14853object (via the AcpiEvaluateObject interface.) 14854 14855Fixed a problem with the namespace object deletion mechanism for 14856objects created by control methods. There were two parts to this 14857problem: 1) Objects created during the initialization phase method 14858parse were not being deleted, and 2) The object owner ID mechanism 14859to track objects was broken. 14860 14861Fixed a problem where the use of the ASL Scope operator within a 14862control method would result in an invalid opcode exception. 14863 14864Fixed a problem introduced in the previous label where the buffer 14865length required for the _PRT structure was not being returned 14866correctly. 14867 14868Code and Data Size: Current core subsystem library sizes are shown 14869below. These are the code and data sizes for the acpica.lib 14870produced by the Microsoft Visual C++ 6.0 compiler, and these 14871values do not include any ACPI driver or OSPM code. The debug 14872version of the code includes the debug output trace mechanism and 14873has a larger code and data size. Note that these values will vary 14874depending on the efficiency of the compiler and the compiler 14875options used during generation. 14876 14877 Previous Release (11_20_01) 14878 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 14879 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 14880 14881 Current Release: 14882 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 14883 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 14884 14885 2) Linux: 14886 14887Updated all files to apply cleanly against 2.4.16. 14888 14889Added basic PCI Interrupt Routing Table (PRT) support for IA32 14890(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 14891version supports both static and dyanmic PRT entries, but dynamic 14892entries are treated as if they were static (not yet 14893reconfigurable). Architecture- specific code to use this data is 14894absent on IA32 but should be available shortly. 14895 14896Changed the initialization sequence to start the ACPI interpreter 14897(acpi_init) prior to initialization of the PCI driver (pci_init) 14898in init/main.c. This ordering is required to support PRT and 14899facilitate other (future) enhancement. A side effect is that the 14900ACPI bus driver and certain device drivers can no longer be loaded 14901as modules. 14902 14903Modified the 'make menuconfig' options to allow PCI Interrupt 14904Routing support to be included without the ACPI Bus and other 14905device drivers. 14906 14907 3) ASL Compiler, version X2033: 14908 14909Fixed some issues with the use of the new CopyObject and 14910DataTableRegion operators. Both are fully functional. 14911 14912 ---------------------------------------- 14913Summary of changes for this label: 11_20_01 14914 14915 20 November 2001. Summary of changes for this release. 14916 14917 1) ACPI CA Core Subsystem: 14918 14919Updated Index support to match ACPI 2.0 semantics. Storing a 14920Integer, String, or Buffer to an Index of a Buffer will store only 14921the least-significant byte of the source to the Indexed buffer 14922byte. Multiple writes are not performed. 14923 14924Fixed a problem where the access type used in an AccessAs ASL 14925operator was not recorded correctly into the field object. 14926 14927Fixed a problem where ASL Event objects were created in a 14928signalled state. Events are now created in an unsignalled state. 14929 14930The internal object cache is now purged after table loading and 14931initialization to reduce the use of dynamic kernel memory -- on 14932the assumption that object use is greatest during the parse phase 14933of the entire table (versus the run-time use of individual control 14934methods.) 14935 14936ACPI 2.0 variable-length packages are now fully operational. 14937 14938Code and Data Size: Code and Data optimizations have permitted new 14939feature development with an actual reduction in the library size. 14940Current core subsystem library sizes are shown below. These are 14941the code and data sizes for the acpica.lib produced by the 14942Microsoft Visual C++ 6.0 compiler, and these values do not include 14943any ACPI driver or OSPM code. The debug version of the code 14944includes the debug output trace mechanism and has a larger code 14945and data size. Note that these values will vary depending on the 14946efficiency of the compiler and the compiler options used during 14947generation. 14948 14949 Previous Release (11_09_01): 14950 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 14951 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 14952 14953 Current Release: 14954 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 14955 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 14956 14957 2) Linux: 14958 14959Enhanced the ACPI boot-time initialization code to allow the use 14960of Local APIC tables for processor enumeration on IA-32, and to 14961pave the way for a fully MPS-free boot (on SMP systems) in the 14962near future. This functionality replaces 14963arch/i386/kernel/acpitables.c, which was introduced in an earlier 149642.4.15-preX release. To enable this feature you must add 14965"acpi_boot=on" to the kernel command line -- see the help entry 14966for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 14967the works... 14968 14969Restructured the configuration options to allow boot-time table 14970parsing support without inclusion of the ACPI Interpreter (and 14971other) code. 14972 14973NOTE: This release does not include fixes for the reported events, 14974power-down, and thermal passive cooling issues (coming soon). 14975 14976 3) ASL Compiler: 14977 14978Added additional typechecking for Fields within restricted access 14979Operation Regions. All fields within EC and CMOS regions must be 14980declared with ByteAcc. All fields withing SMBus regions must be 14981declared with the BufferAcc access type. 14982 14983Fixed a problem where the listing file output of control methods 14984no longer interleaved the actual AML code with the ASL source 14985code. 14986 14987 14988 14989 14990---------------------------------------- 14991Summary of changes for this label: 11_09_01 14992 149931) ACPI CA Core Subsystem: 14994 14995Implemented ACPI 2.0-defined support for writes to fields with a 14996Buffer, String, or Integer source operand that is smaller than the 14997target field. In these cases, the source operand is zero-extended 14998to fill the target field. 14999 15000Fixed a problem where a Field starting bit offset (within the 15001parent operation region) was calculated incorrectly if the 15002 15003alignment of the field differed from the access width. This 15004affected CreateWordField, CreateDwordField, CreateQwordField, and 15005possibly other fields that use the "AccessAny" keyword. 15006 15007Fixed a problem introduced in the 11_02_01 release where indirect 15008stores through method arguments did not operate correctly. 15009 150102) Linux: 15011 15012Implemented boot-time ACPI table parsing support 15013(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 15014facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 15015legacy BIOS interfaces (e.g. MPS) for the configuration of system 15016processors, memory, and interrupts during setup_arch(). Note that 15017this patch does not include the required architecture-specific 15018changes required to apply this information -- subsequent patches 15019will be posted for both IA32 and IA64 to achieve this. 15020 15021Added low-level sleep support for IA32 platforms, courtesy of Pat 15022Mochel. This allows IA32 systems to transition to/from various 15023sleeping states (e.g. S1, S3), although the lack of a centralized 15024driver model and power-manageable drivers will prevent its 15025(successful) use on most systems. 15026 15027Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 15028submenu, unified IA32 and IA64 options, added new "Boot using ACPI 15029tables" option, etc. 15030 15031Increased the default timeout for the EC driver from 1ms to 10ms 15032(1000 cycles of 10us) to try to address AE_TIME errors during EC 15033transactions. 15034 15035 ---------------------------------------- 15036Summary of changes for this label: 11_02_01 15037 150381) ACPI CA Core Subsystem: 15039 15040ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 15041(QWordAcc keyword). All ACPI 2.0 64-bit support is now 15042implemented. 15043 15044OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 15045changes to support ACPI 2.0 Qword field access. Read/Write 15046PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 15047accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 15048the value parameter for the address space handler interface is now 15049an ACPI_INTEGER. OSL implementations of these interfaces must now 15050handle the case where the Width parameter is 64. 15051 15052Index Fields: Fixed a problem where unaligned bit assembly and 15053disassembly for IndexFields was not supported correctly. 15054 15055Index and Bank Fields: Nested Index and Bank Fields are now 15056supported. During field access, a check is performed to ensure 15057that the value written to an Index or Bank register is not out of 15058the range of the register. The Index (or Bank) register is 15059written before each access to the field data. Future support will 15060include allowing individual IndexFields to be wider than the 15061DataRegister width. 15062 15063Fields: Fixed a problem where the AML interpreter was incorrectly 15064attempting to write beyond the end of a Field/OpRegion. This was 15065a boundary case that occurred when a DWORD field was written to a 15066BYTE access OpRegion, forcing multiple writes and causing the 15067interpreter to write one datum too many. 15068 15069Fields: Fixed a problem with Field/OpRegion access where the 15070starting bit address of a field was incorrectly calculated if the 15071current access type was wider than a byte (WordAcc, DwordAcc, or 15072QwordAcc). 15073 15074Fields: Fixed a problem where forward references to individual 15075FieldUnits (individual Field names within a Field definition) were 15076not resolved during the AML table load. 15077 15078Fields: Fixed a problem where forward references from a Field 15079definition to the parent Operation Region definition were not 15080resolved during the AML table load. 15081 15082Fields: Duplicate FieldUnit names within a scope are now detected 15083during AML table load. 15084 15085Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 15086returned an incorrect name for the root node. 15087 15088Code and Data Size: Code and Data optimizations have permitted new 15089feature development with an actual reduction in the library size. 15090Current core subsystem library sizes are shown below. These are 15091the code and data sizes for the acpica.lib produced by the 15092Microsoft Visual C++ 6.0 compiler, and these values do not include 15093any ACPI driver or OSPM code. The debug version of the code 15094includes the debug output trace mechanism and has a larger code 15095and data size. Note that these values will vary depending on the 15096efficiency of the compiler and the compiler options used during 15097generation. 15098 15099 Previous Release (10_18_01): 15100 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15101 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15102 15103 Current Release: 15104 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15105 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15106 15107 2) Linux: 15108 15109Improved /proc processor output (Pavel Machek) Re-added 15110MODULE_LICENSE("GPL") to all modules. 15111 15112 3) ASL Compiler version X2030: 15113 15114Duplicate FieldUnit names within a scope are now detected and 15115flagged as errors. 15116 15117 4) Documentation: 15118 15119Programmer Reference updated to reflect OSL and address space 15120handler interface changes described above. 15121 15122---------------------------------------- 15123Summary of changes for this label: 10_18_01 15124 15125ACPI CA Core Subsystem: 15126 15127Fixed a problem with the internal object reference count mechanism 15128that occasionally caused premature object deletion. This resolves 15129all of the outstanding problem reports where an object is deleted 15130in the middle of an interpreter evaluation. Although this problem 15131only showed up in rather obscure cases, the solution to the 15132problem involved an adjustment of all reference counts involving 15133objects attached to namespace nodes. 15134 15135Fixed a problem with Field support in the interpreter where 15136writing to an aligned field whose length is an exact multiple (2 15137or greater) of the field access granularity would cause an attempt 15138to write beyond the end of the field. 15139 15140The top level AML opcode execution functions within the 15141interpreter have been renamed with a more meaningful and 15142consistent naming convention. The modules exmonad.c and 15143exdyadic.c were eliminated. New modules are exoparg1.c, 15144exoparg2.c, exoparg3.c, and exoparg6.c. 15145 15146Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 15147 15148Fixed a problem where the AML debugger was causing some internal 15149objects to not be deleted during subsystem termination. 15150 15151Fixed a problem with the external AcpiEvaluateObject interface 15152where the subsystem would fault if the named object to be 15153evaluated refered to a constant such as Zero, Ones, etc. 15154 15155Fixed a problem with IndexFields and BankFields where the 15156subsystem would fault if the index, data, or bank registers were 15157not defined in the same scope as the field itself. 15158 15159Added printf format string checking for compilers that support 15160this feature. Corrected more than 50 instances of issues with 15161format specifiers within invocations of ACPI_DEBUG_PRINT 15162throughout the core subsystem code. 15163 15164The ASL "Revision" operator now returns the ACPI support level 15165implemented in the core - the value "2" since the ACPI 2.0 support 15166is more than 50% implemented. 15167 15168Enhanced the output of the AML debugger "dump namespace" command 15169to output in a more human-readable form. 15170 15171Current core subsystem library code sizes are shown below. These 15172 15173are the code and data sizes for the acpica.lib produced by the 15174Microsoft Visual C++ 6.0 compiler, and these values do not include 15175any ACPI driver or OSPM code. The debug version of the code 15176includes the full debug trace mechanism -- leading to a much 15177 15178larger code and data size. Note that these values will vary 15179depending on the efficiency of the compiler and the compiler 15180options used during generation. 15181 15182 Previous Label (09_20_01): 15183 Non-Debug Version: 65K Code, 5K Data, 70K Total 15184 Debug Version: 138K Code, 58K Data, 196K Total 15185 15186 This Label: 15187 15188 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15189 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15190 15191Linux: 15192 15193Implemented a "Bad BIOS Blacklist" to track machines that have 15194known ASL/AML problems. 15195 15196Enhanced the /proc interface for the thermal zone driver and added 15197support for _HOT (the critical suspend trip point). The 'info' 15198file now includes threshold/policy information, and allows setting 15199of _SCP (cooling preference) and _TZP (polling frequency) values 15200to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 15201frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 15202preference to the passive/quiet mode (if supported by the ASL). 15203 15204Implemented a workaround for a gcc bug that resuted in an OOPs 15205when loading the control method battery driver. 15206 15207 ---------------------------------------- 15208Summary of changes for this label: 09_20_01 15209 15210 ACPI CA Core Subsystem: 15211 15212The AcpiEnableEvent and AcpiDisableEvent interfaces have been 15213modified to allow individual GPE levels to be flagged as wake- 15214enabled (i.e., these GPEs are to remain enabled when the platform 15215sleeps.) 15216 15217The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 15218support wake-enabled GPEs. This means that upon entering the 15219sleep state, all GPEs that are not wake-enabled are disabled. 15220When leaving the sleep state, these GPEs are reenabled. 15221 15222A local double-precision divide/modulo module has been added to 15223enhance portability to OS kernels where a 64-bit math library is 15224not available. The new module is "utmath.c". 15225 15226Several optimizations have been made to reduce the use of CPU 15227stack. Originally over 2K, the maximum stack usage is now below 152282K at 1860 bytes (1.82k) 15229 15230Fixed a problem with the AcpiGetFirmwareTable interface where the 15231root table pointer was not mapped into a logical address properly. 15232 15233Fixed a problem where a NULL pointer was being dereferenced in the 15234interpreter code for the ASL Notify operator. 15235 15236Fixed a problem where the use of the ASL Revision operator 15237returned an error. This operator now returns the current version 15238of the ACPI CA core subsystem. 15239 15240Fixed a problem where objects passed as control method parameters 15241to AcpiEvaluateObject were always deleted at method termination. 15242However, these objects may end up being stored into the namespace 15243by the called method. The object reference count mechanism was 15244applied to these objects instead of a force delete. 15245 15246Fixed a problem where static strings or buffers (contained in the 15247AML code) that are declared as package elements within the ASL 15248code could cause a fault because the interpreter would attempt to 15249delete them. These objects are now marked with the "static 15250object" flag to prevent any attempt to delete them. 15251 15252Implemented an interpreter optimization to use operands directly 15253from the state object instead of extracting the operands to local 15254variables. This reduces stack use and code size, and improves 15255performance. 15256 15257The module exxface.c was eliminated as it was an unnecessary extra 15258layer of code. 15259 15260Current core subsystem library code sizes are shown below. These 15261are the code and data sizes for the acpica.lib produced by the 15262Microsoft Visual C++ 6.0 compiler, and these values do not include 15263any ACPI driver or OSPM code. The debug version of the code 15264includes the full debug trace mechanism -- leading to a much 15265larger code and data size. Note that these values will vary 15266depending on the efficiency of the compiler and the compiler 15267options used during generation. 15268 15269 Non-Debug Version: 65K Code, 5K Data, 70K Total 15270(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 15271Total (Previously 195K) 15272 15273Linux: 15274 15275Support for ACPI 2.0 64-bit integers has been added. All ACPI 15276Integer objects are now 64 bits wide 15277 15278All Acpi data types and structures are now in lower case. Only 15279Acpi macros are upper case for differentiation. 15280 15281 Documentation: 15282 15283Changes to the external interfaces as described above. 15284 15285 ---------------------------------------- 15286Summary of changes for this label: 08_31_01 15287 15288 ACPI CA Core Subsystem: 15289 15290A bug with interpreter implementation of the ASL Divide operator 15291was found and fixed. The implicit function return value (not the 15292explicit store operands) was returning the remainder instead of 15293the quotient. This was a longstanding bug and it fixes several 15294known outstanding issues on various platforms. 15295 15296The ACPI_DEBUG_PRINT and function trace entry/exit macros have 15297been further optimized for size. There are 700 invocations of the 15298DEBUG_PRINT macro alone, so each optimization reduces the size of 15299the debug version of the subsystem significantly. 15300 15301A stack trace mechanism has been implemented. The maximum stack 15302usage is about 2K on 32-bit platforms. The debugger command "stat 15303stack" will display the current maximum stack usage. 15304 15305All public symbols and global variables within the subsystem are 15306now prefixed with the string "Acpi". This keeps all of the 15307symbols grouped together in a kernel map, and avoids conflicts 15308with other kernel subsystems. 15309 15310Most of the internal fixed lookup tables have been moved into the 15311code segment via the const operator. 15312 15313Several enhancements have been made to the interpreter to both 15314reduce the code size and improve performance. 15315 15316Current core subsystem library code sizes are shown below. These 15317are the code and data sizes for the acpica.lib produced by the 15318Microsoft Visual C++ 6.0 compiler, and these values do not include 15319any ACPI driver or OSPM code. The debug version of the code 15320includes the full debug trace mechanism which contains over 700 15321invocations of the DEBUG_PRINT macro, 500 function entry macro 15322invocations, and over 900 function exit macro invocations -- 15323leading to a much larger code and data size. Note that these 15324values will vary depending on the efficiency of the compiler and 15325the compiler options used during generation. 15326 15327 Non-Debug Version: 64K Code, 5K Data, 69K Total 15328Debug Version: 137K Code, 58K Data, 195K Total 15329 15330 Linux: 15331 15332Implemented wbinvd() macro, pending a kernel-wide definition. 15333 15334Fixed /proc/acpi/event to handle poll() and short reads. 15335 15336 ASL Compiler, version X2026: 15337 15338Fixed a problem introduced in the previous label where the AML 15339 15340code emitted for package objects produced packages with zero 15341length. 15342 15343 ---------------------------------------- 15344Summary of changes for this label: 08_16_01 15345 15346ACPI CA Core Subsystem: 15347 15348The following ACPI 2.0 ASL operators have been implemented in the 15349AML interpreter (These are already supported by the Intel ASL 15350compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 15351ToBuffer. Support for 64-bit AML constants is implemented in the 15352AML parser, debugger, and disassembler. 15353 15354The internal memory tracking mechanism (leak detection code) has 15355been upgraded to reduce the memory overhead (a separate tracking 15356block is no longer allocated for each memory allocation), and now 15357supports all of the internal object caches. 15358 15359The data structures and code for the internal object caches have 15360been coelesced and optimized so that there is a single cache and 15361memory list data structure and a single group of functions that 15362implement generic cache management. This has reduced the code 15363size in both the debug and release versions of the subsystem. 15364 15365The DEBUG_PRINT macro(s) have been optimized for size and replaced 15366by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 15367different, because it generates a single call to an internal 15368function. This results in a savings of about 90 bytes per 15369invocation, resulting in an overall code and data savings of about 1537016% in the debug version of the subsystem. 15371 15372 Linux: 15373 15374Fixed C3 disk corruption problems and re-enabled C3 on supporting 15375machines. 15376 15377Integrated low-level sleep code by Patrick Mochel. 15378 15379Further tweaked source code Linuxization. 15380 15381Other minor fixes. 15382 15383 ASL Compiler: 15384 15385Support for ACPI 2.0 variable length packages is fixed/completed. 15386 15387Fixed a problem where the optional length parameter for the ACPI 153882.0 ToString operator. 15389 15390Fixed multiple extraneous error messages when a syntax error is 15391detected within the declaration line of a control method. 15392 15393 ---------------------------------------- 15394Summary of changes for this label: 07_17_01 15395 15396ACPI CA Core Subsystem: 15397 15398Added a new interface named AcpiGetFirmwareTable to obtain any 15399ACPI table via the ACPI signature. The interface can be called at 15400any time during kernel initialization, even before the kernel 15401virtual memory manager is initialized and paging is enabled. This 15402allows kernel subsystems to obtain ACPI tables very early, even 15403before the ACPI CA subsystem is initialized. 15404 15405Fixed a problem where Fields defined with the AnyAcc attribute 15406could be resolved to the incorrect address under the following 15407conditions: 1) the field width is larger than 8 bits and 2) the 15408parent operation region is not defined on a DWORD boundary. 15409 15410Fixed a problem where the interpreter is not being locked during 15411namespace initialization (during execution of the _INI control 15412methods), causing an error when an attempt is made to release it 15413later. 15414 15415ACPI 2.0 support in the AML Interpreter has begun and will be 15416ongoing throughout the rest of this year. In this label, The Mod 15417operator is implemented. 15418 15419Added a new data type to contain full PCI addresses named 15420ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 15421and Function values. 15422 15423 Linux: 15424 15425Enhanced the Linux version of the source code to change most 15426capitalized ACPI type names to lowercase. For example, all 15427instances of ACPI_STATUS are changed to acpi_status. This will 15428result in a large diff, but the change is strictly cosmetic and 15429aligns the CA code closer to the Linux coding standard. 15430 15431OSL Interfaces: 15432 15433The interfaces to the PCI configuration space have been changed to 15434add the PCI Segment number and to split the single 32-bit combined 15435DeviceFunction field into two 16-bit fields. This was 15436accomplished by moving the four values that define an address in 15437PCI configuration space (segment, bus, device, and function) to 15438the new ACPI_PCI_ID structure. 15439 15440The changes to the PCI configuration space interfaces led to a 15441reexamination of the complete set of address space access 15442interfaces for PCI, I/O, and Memory. The previously existing 18 15443interfaces have proven difficult to maintain (any small change 15444must be propagated across at least 6 interfaces) and do not easily 15445allow for future expansion to 64 bits if necessary. Also, on some 15446systems, it would not be appropriate to demultiplex the access 15447width (8, 16, 32,or 64) before calling the OSL if the 15448corresponding native OS interfaces contain a similar access width 15449parameter. For these reasons, the 18 address space interfaces 15450have been replaced by these 6 new ones: 15451 15452AcpiOsReadPciConfiguration 15453AcpiOsWritePciConfiguration 15454AcpiOsReadMemory 15455AcpiOsWriteMemory 15456AcpiOsReadPort 15457AcpiOsWritePort 15458 15459Added a new interface named AcpiOsGetRootPointer to allow the OSL 15460to perform the platform and/or OS-specific actions necessary to 15461obtain the ACPI RSDP table pointer. On IA-32 platforms, this 15462interface will simply call down to the CA core to perform the low- 15463memory search for the table. On IA-64, the RSDP is obtained from 15464EFI. Migrating this interface to the OSL allows the CA core to 15465 15466remain OS and platform independent. 15467 15468Added a new interface named AcpiOsSignal to provide a generic 15469"function code and pointer" interface for various miscellaneous 15470signals and notifications that must be made to the host OS. The 15471first such signals are intended to support the ASL Fatal and 15472Breakpoint operators. In the latter case, the AcpiOsBreakpoint 15473interface has been obsoleted. 15474 15475The definition of the AcpiFormatException interface has been 15476changed to simplify its use. The caller no longer must supply a 15477buffer to the call; A pointer to a const string is now returned 15478directly. This allows the call to be easily used in printf 15479statements, etc. since the caller does not have to manage a local 15480buffer. 15481 15482 15483 ASL Compiler, Version X2025: 15484 15485The ACPI 2.0 Switch/Case/Default operators have been implemented 15486and are fully functional. They will work with all ACPI 1.0 15487interpreters, since the operators are simply translated to If/Else 15488pairs. 15489 15490The ACPI 2.0 ElseIf operator is implemented and will also work 15491with 1.0 interpreters, for the same reason. 15492 15493Implemented support for ACPI 2.0 variable-length packages. These 15494packages have a separate opcode, and their size is determined by 15495the interpreter at run-time. 15496 15497Documentation The ACPI CA Programmer Reference has been updated to 15498reflect the new interfaces and changes to existing interfaces. 15499 15500 ------------------------------------------ 15501Summary of changes for this label: 06_15_01 15502 15503 ACPI CA Core Subsystem: 15504 15505Fixed a problem where a DWORD-accessed field within a Buffer 15506object would get its byte address inadvertently rounded down to 15507the nearest DWORD. Buffers are always Byte-accessible. 15508 15509 ASL Compiler, version X2024: 15510 15511Fixed a problem where the Switch() operator would either fault or 15512hang the compiler. Note however, that the AML code for this ACPI 155132.0 operator is not yet implemented. 15514 15515Compiler uses the new AcpiOsGetTimer interface to obtain compile 15516timings. 15517 15518Implementation of the CreateField operator automatically converts 15519a reference to a named field within a resource descriptor from a 15520byte offset to a bit offset if required. 15521 15522Added some missing named fields from the resource descriptor 15523support. These are the names that are automatically created by the 15524compiler to reference fields within a descriptor. They are only 15525valid at compile time and are not passed through to the AML 15526interpreter. 15527 15528Resource descriptor named fields are now typed as Integers and 15529subject to compile-time typechecking when used in expressions. 15530 15531 ------------------------------------------ 15532Summary of changes for this label: 05_18_01 15533 15534 ACPI CA Core Subsystem: 15535 15536Fixed a couple of problems in the Field support code where bits 15537from adjacent fields could be returned along with the proper field 15538bits. Restructured the field support code to improve performance, 15539readability and maintainability. 15540 15541New DEBUG_PRINTP macro automatically inserts the procedure name 15542into the output, saving hundreds of copies of procedure name 15543strings within the source, shrinking the memory footprint of the 15544debug version of the core subsystem. 15545 15546 Source Code Structure: 15547 15548The source code directory tree was restructured to reflect the 15549current organization of the component architecture. Some files 15550and directories have been moved and/or renamed. 15551 15552 Linux: 15553 15554Fixed leaking kacpidpc processes. 15555 15556Fixed queueing event data even when /proc/acpi/event is not 15557opened. 15558 15559 ASL Compiler, version X2020: 15560 15561Memory allocation performance enhancement - over 24X compile time 15562improvement on large ASL files. Parse nodes and namestring 15563buffers are now allocated from a large internal compiler buffer. 15564 15565The temporary .SRC file is deleted unless the "-s" option is 15566specified 15567 15568The "-d" debug output option now sends all output to the .DBG file 15569instead of the console. 15570 15571"External" second parameter is now optional 15572 15573"ElseIf" syntax now properly allows the predicate 15574 15575Last operand to "Load" now recognized as a Target operand 15576 15577Debug object can now be used anywhere as a normal object. 15578 15579ResourceTemplate now returns an object of type BUFFER 15580 15581EISAID now returns an object of type INTEGER 15582 15583"Index" now works with a STRING operand 15584 15585"LoadTable" now accepts optional parameters 15586 15587"ToString" length parameter is now optional 15588 15589"Interrupt (ResourceType," parse error fixed. 15590 15591"Register" with a user-defined region space parse error fixed 15592 15593Escaped backslash at the end of a string ("\\") scan/parse error 15594fixed 15595 15596"Revision" is now an object of type INTEGER. 15597 15598 15599 15600------------------------------------------ 15601Summary of changes for this label: 05_02_01 15602 15603Linux: 15604 15605/proc/acpi/event now blocks properly. 15606 15607Removed /proc/sys/acpi. You can still dump your DSDT from 15608/proc/acpi/dsdt. 15609 15610 ACPI CA Core Subsystem: 15611 15612Fixed a problem introduced in the previous label where some of the 15613"small" resource descriptor types were not recognized. 15614 15615Improved error messages for the case where an ASL Field is outside 15616the range of the parent operation region. 15617 15618 ASL Compiler, version X2018: 15619 15620 15621Added error detection for ASL Fields that extend beyond the length 15622of the parent operation region (only if the length of the region 15623is known at compile time.) This includes fields that have a 15624minimum access width that is smaller than the parent region, and 15625individual field units that are partially or entirely beyond the 15626extent of the parent. 15627 15628 15629 15630------------------------------------------ 15631Summary of changes for this label: 04_27_01 15632 15633 ACPI CA Core Subsystem: 15634 15635Fixed a problem where the namespace mutex could be released at the 15636wrong time during execution of AcpiRemoveAddressSpaceHandler. 15637 15638Added optional thread ID output for debug traces, to simplify 15639debugging of multiple threads. Added context switch notification 15640when the debug code realizes that a different thread is now 15641executing ACPI code. 15642 15643Some additional external data types have been prefixed with the 15644string "ACPI_" for consistency. This may effect existing code. 15645The data types affected are the external callback typedefs - e.g., 15646 15647WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 15648 15649 Linux: 15650 15651Fixed an issue with the OSL semaphore implementation where a 15652thread was waking up with an error from receiving a SIGCHLD 15653signal. 15654 15655Linux version of ACPI CA now uses the system C library for string 15656manipulation routines instead of a local implementation. 15657 15658Cleaned up comments and removed TBDs. 15659 15660 ASL Compiler, version X2017: 15661 15662Enhanced error detection and reporting for all file I/O 15663operations. 15664 15665 Documentation: 15666 15667Programmer Reference updated to version 1.06. 15668 15669 15670 15671------------------------------------------ 15672Summary of changes for this label: 04_13_01 15673 15674 ACPI CA Core Subsystem: 15675 15676Restructured support for BufferFields and RegionFields. 15677BankFields support is now fully operational. All known 32-bit 15678limitations on field sizes have been removed. Both BufferFields 15679and (Operation) RegionFields are now supported by the same field 15680management code. 15681 15682Resource support now supports QWORD address and IO resources. The 1568316/32/64 bit address structures and the Extended IRQ structure 15684have been changed to properly handle Source Resource strings. 15685 15686A ThreadId of -1 is now used to indicate a "mutex not acquired" 15687condition internally and must never be returned by AcpiOsThreadId. 15688This reserved value was changed from 0 since Unix systems allow a 15689thread ID of 0. 15690 15691Linux: 15692 15693Driver code reorganized to enhance portability 15694 15695Added a kernel configuration option to control ACPI_DEBUG 15696 15697Fixed the EC driver to honor _GLK. 15698 15699ASL Compiler, version X2016: 15700 15701Fixed support for the "FixedHw" keyword. Previously, the FixedHw 15702address space was set to 0, not 0x7f as it should be. 15703 15704 ------------------------------------------ 15705Summary of changes for this label: 03_13_01 15706 15707 ACPI CA Core Subsystem: 15708 15709During ACPI initialization, the _SB_._INI method is now run if 15710present. 15711 15712Notify handler fix - notifies are deferred until the parent method 15713completes execution. This fixes the "mutex already acquired" 15714issue seen occasionally. 15715 15716Part of the "implicit conversion" rules in ACPI 2.0 have been 15717found to cause compatibility problems with existing ASL/AML. The 15718convert "result-to-target-type" implementation has been removed 15719for stores to method Args and Locals. Source operand conversion 15720is still fully implemented. Possible changes to ACPI 2.0 15721specification pending. 15722 15723Fix to AcpiRsCalculatePciRoutingTableLength to return correct 15724length. 15725 15726Fix for compiler warnings for 64-bit compiles. 15727 15728 Linux: 15729 15730/proc output aligned for easier parsing. 15731 15732Release-version compile problem fixed. 15733 15734New kernel configuration options documented in Configure.help. 15735 15736IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 15737context" message. 15738 15739 OSPM: 15740 15741Power resource driver integrated with bus manager. 15742 15743Fixed kernel fault during active cooling for thermal zones. 15744 15745Source Code: 15746 15747The source code tree has been restructured. 15748 15749 15750 15751------------------------------------------ 15752Summary of changes for this label: 03_02_01 15753 15754 Linux OS Services Layer (OSL): 15755 15756Major revision of all Linux-specific code. 15757 15758Modularized all ACPI-specific drivers. 15759 15760Added new thermal zone and power resource drivers. 15761 15762Revamped /proc interface (new functionality is under /proc/acpi). 15763 15764New kernel configuration options. 15765 15766 Linux known issues: 15767 15768New kernel configuration options not documented in Configure.help 15769yet. 15770 15771 15772Module dependencies not currently implemented. If used, they 15773should be loaded in this order: busmgr, power, ec, system, 15774processor, battery, ac_adapter, button, thermal. 15775 15776Modules will not load if CONFIG_MODVERSION is set. 15777 15778IBM 600E - entering S5 may reboot instead of shutting down. 15779 15780IBM 600E - Sleep button may generate "Invalid <NULL> context" 15781message. 15782 15783Some systems may fail with "execution mutex already acquired" 15784message. 15785 15786 ACPI CA Core Subsystem: 15787 15788Added a new OSL Interface, AcpiOsGetThreadId. This was required 15789for the deadlock detection code. Defined to return a non-zero, 32- 15790bit thread ID for the currently executing thread. May be a non- 15791zero constant integer on single-thread systems. 15792 15793Implemented deadlock detection for internal subsystem mutexes. We 15794may add conditional compilation for this code (debug only) later. 15795 15796ASL/AML Mutex object semantics are now fully supported. This 15797includes multiple acquires/releases by owner and support for the 15798 15799Mutex SyncLevel parameter. 15800 15801A new "Force Release" mechanism automatically frees all ASL 15802Mutexes that have been acquired but not released when a thread 15803exits the interpreter. This forces conformance to the ACPI spec 15804("All mutexes must be released when an invocation exits") and 15805prevents deadlocked ASL threads. This mechanism can be expanded 15806(later) to monitor other resource acquisitions if OEM ASL code 15807continues to misbehave (which it will). 15808 15809Several new ACPI exception codes have been added for the Mutex 15810support. 15811 15812Recursive method calls are now allowed and supported (the ACPI 15813spec does in fact allow recursive method calls.) The number of 15814recursive calls is subject to the restrictions imposed by the 15815SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 15816parameter. 15817 15818Implemented support for the SyncLevel parameter for control 15819methods (ACPI 2.0 feature) 15820 15821Fixed a deadlock problem when multiple threads attempted to use 15822the interpreter. 15823 15824Fixed a problem where the string length of a String package 15825element was not always set in a package returned from 15826AcpiEvaluateObject. 15827 15828Fixed a problem where the length of a String package element was 15829not always included in the length of the overall package returned 15830from AcpiEvaluateObject. 15831 15832Added external interfaces (Acpi*) to the ACPI debug memory 15833manager. This manager keeps a list of all outstanding 15834allocations, and can therefore detect memory leaks and attempts to 15835free memory blocks more than once. Useful for code such as the 15836power manager, etc. May not be appropriate for device drivers. 15837Performance with the debug code enabled is slow. 15838 15839The ACPI Global Lock is now an optional hardware element. 15840 15841 ASL Compiler Version X2015: 15842 15843Integrated changes to allow the compiler to be generated on 15844multiple platforms. 15845 15846Linux makefile added to generate the compiler on Linux 15847 15848 Source Code: 15849 15850All platform-specific headers have been moved to their own 15851subdirectory, Include/Platform. 15852 15853New source file added, Interpreter/ammutex.c 15854 15855New header file, Include/acstruct.h 15856 15857 Documentation: 15858 15859The programmer reference has been updated for the following new 15860interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 15861 15862 ------------------------------------------ 15863Summary of changes for this label: 02_08_01 15864 15865Core ACPI CA Subsystem: Fixed a problem where an error was 15866incorrectly returned if the return resource buffer was larger than 15867the actual data (in the resource interfaces). 15868 15869References to named objects within packages are resolved to the 15870 15871full pathname string before packages are returned directly (via 15872the AcpiEvaluateObject interface) or indirectly via the resource 15873interfaces. 15874 15875Linux OS Services Layer (OSL): 15876 15877Improved /proc battery interface. 15878 15879 15880Added C-state debugging output and other miscellaneous fixes. 15881 15882ASL Compiler Version X2014: 15883 15884All defined method arguments can now be used as local variables, 15885including the ones that are not actually passed in as parameters. 15886The compiler tracks initialization of the arguments and issues an 15887exception if they are used without prior assignment (just like 15888locals). 15889 15890The -o option now specifies a filename prefix that is used for all 15891output files, including the AML output file. Otherwise, the 15892default behavior is as follows: 1) the AML goes to the file 15893specified in the DSDT. 2) all other output files use the input 15894source filename as the base. 15895 15896 ------------------------------------------ 15897Summary of changes for this label: 01_25_01 15898 15899Core ACPI CA Subsystem: Restructured the implementation of object 15900store support within the interpreter. This includes support for 15901the Store operator as well as any ASL operators that include a 15902target operand. 15903 15904Partially implemented support for Implicit Result-to-Target 15905conversion. This is when a result object is converted on the fly 15906to the type of an existing target object. Completion of this 15907support is pending further analysis of the ACPI specification 15908concerning this matter. 15909 15910CPU-specific code has been removed from the subsystem (hardware 15911directory). 15912 15913New Power Management Timer functions added 15914 15915Linux OS Services Layer (OSL): Moved system state transition code 15916to the core, fixed it, and modified Linux OSL accordingly. 15917 15918Fixed C2 and C3 latency calculations. 15919 15920 15921We no longer use the compilation date for the version message on 15922initialization, but retrieve the version from AcpiGetSystemInfo(). 15923 15924Incorporated for fix Sony VAIO machines. 15925 15926Documentation: The Programmer Reference has been updated and 15927reformatted. 15928 15929 15930ASL Compiler: Version X2013: Fixed a problem where the line 15931numbering and error reporting could get out of sync in the 15932presence of multiple include files. 15933 15934 ------------------------------------------ 15935Summary of changes for this label: 01_15_01 15936 15937Core ACPI CA Subsystem: 15938 15939Implemented support for type conversions in the execution of the 15940ASL Concatenate operator (The second operand is converted to 15941match the type of the first operand before concatenation.) 15942 15943Support for implicit source operand conversion is partially 15944implemented. The ASL source operand types Integer, Buffer, and 15945String are freely interchangeable for most ASL operators and are 15946converted by the interpreter on the fly as required. Implicit 15947Target operand conversion (where the result is converted to the 15948target type before storing) is not yet implemented. 15949 15950Support for 32-bit and 64-bit BCD integers is implemented. 15951 15952Problem fixed where a field read on an aligned field could cause a 15953read past the end of the field. 15954 15955New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 15956does not return a value, but the caller expects one. (The ASL 15957compiler flags this as a warning.) 15958 15959ASL Compiler: 15960 15961Version X2011: 159621. Static typechecking of all operands is implemented. This 15963prevents the use of invalid objects (such as using a Package where 15964an Integer is required) at compile time instead of at interpreter 15965run-time. 159662. The ASL source line is printed with ALL errors and warnings. 159673. Bug fix for source EOF without final linefeed. 159684. Debug option is split into a parse trace and a namespace trace. 159695. Namespace output option (-n) includes initial values for 15970integers and strings. 159716. Parse-only option added for quick syntax checking. 159727. Compiler checks for duplicate ACPI name declarations 15973 15974Version X2012: 159751. Relaxed typechecking to allow interchangeability between 15976strings, integers, and buffers. These types are now converted by 15977the interpreter at runtime. 159782. Compiler reports time taken by each internal subsystem in the 15979debug output file. 15980 15981 15982 ------------------------------------------ 15983Summary of changes for this label: 12_14_00 15984 15985ASL Compiler: 15986 15987This is the first official release of the compiler. Since the 15988compiler requires elements of the Core Subsystem, this label 15989synchronizes everything. 15990 15991------------------------------------------ 15992Summary of changes for this label: 12_08_00 15993 15994 15995Fixed a problem where named references within the ASL definition 15996of both OperationRegions and CreateXXXFields did not work 15997properly. The symptom was an AE_AML_OPERAND_TYPE during 15998initialization of the region/field. This is similar (but not 15999related internally) to the problem that was fixed in the last 16000label. 16001 16002Implemented both 32-bit and 64-bit support for the BCD ASL 16003functions ToBCD and FromBCD. 16004 16005Updated all legal headers to include "2000" in the copyright 16006years. 16007 16008 ------------------------------------------ 16009Summary of changes for this label: 12_01_00 16010 16011Fixed a problem where method invocations within the ASL definition 16012of both OperationRegions and CreateXXXFields did not work 16013properly. The symptom was an AE_AML_OPERAND_TYPE during 16014initialization of the region/field: 16015 16016 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 16017[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 16018(0x3005) 16019 16020Fixed a problem where operators with more than one nested 16021subexpression would fail. The symptoms were varied, by mostly 16022AE_AML_OPERAND_TYPE errors. This was actually a rather serious 16023problem that has gone unnoticed until now. 16024 16025 Subtract (Add (1,2), Multiply (3,4)) 16026 16027Fixed a problem where AcpiGetHandle didn't quite get fixed in the 16028previous build (The prefix part of a relative path was handled 16029incorrectly). 16030 16031Fixed a problem where Operation Region initialization failed if 16032the operation region name was a "namepath" instead of a simple 16033"nameseg". Symptom was an AE_NO_OPERAND error. 16034 16035Fixed a problem where an assignment to a local variable via the 16036indirect RefOf mechanism only worked for the first such 16037assignment. Subsequent assignments were ignored. 16038 16039 ------------------------------------------ 16040Summary of changes for this label: 11_15_00 16041 16042ACPI 2.0 table support with backwards support for ACPI 1.0 and the 160430.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 16044the AML interpreter does NOT have support for the new 2.0 ASL 16045grammar terms at this time. 16046 16047All ACPI hardware access is via the GAS structures in the ACPI 2.0 16048FADT. 16049 16050All physical memory addresses across all platforms are now 64 bits 16051wide. Logical address width remains dependent on the platform 16052(i.e., "void *"). 16053 16054AcpiOsMapMemory interface changed to a 64-bit physical address. 16055 16056The AML interpreter integer size is now 64 bits, as per the ACPI 160572.0 specification. 16058 16059For backwards compatibility with ACPI 1.0, ACPI tables with a 16060revision number less than 2 use 32-bit integers only. 16061 16062Fixed a problem where the evaluation of OpRegion operands did not 16063always resolve them to numbers properly. 16064 16065------------------------------------------ 16066Summary of changes for this label: 10_20_00 16067 16068Fix for CBN_._STA issue. This fix will allow correct access to 16069CBN_ OpRegions when the _STA returns 0x8. 16070 16071Support to convert ACPI constants (Ones, Zeros, One) to actual 16072values before a package object is returned 16073 16074Fix for method call as predicate to if/while construct causing 16075incorrect if/while behavior 16076 16077Fix for Else block package lengths sometimes calculated wrong (if 16078block > 63 bytes) 16079 16080Fix for Processor object length field, was always zero 16081 16082Table load abort if FACP sanity check fails 16083 16084Fix for problem with Scope(name) if name already exists 16085 16086Warning emitted if a named object referenced cannot be found 16087(resolved) during method execution. 16088 16089 16090 16091 16092 16093------------------------------------------ 16094Summary of changes for this label: 9_29_00 16095 16096New table initialization interfaces: AcpiInitializeSubsystem no 16097longer has any parameters AcpiFindRootPointer - Find the RSDP (if 16098necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 16099>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 16100AcpiLoadTables 16101 16102Note: These interface changes require changes to all existing OSDs 16103 16104The PCI_Config default address space handler is always installed 16105at the root namespace object. 16106 16107------------------------------------------- 16108Summary of changes for this label: 09_15_00 16109 16110The new initialization architecture is implemented. New 16111interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 16112AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 16113 16114(Namespace is automatically loaded when a table is loaded) 16115 16116The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1611752 bytes to 32 bytes. There is usually one of these for every 16118namespace object, so the memory savings is significant. 16119 16120Implemented just-in-time evaluation of the CreateField operators. 16121 16122Bug fixes for IA-64 support have been integrated. 16123 16124Additional code review comments have been implemented 16125 16126The so-called "third pass parse" has been replaced by a final walk 16127through the namespace to initialize all operation regions (address 16128spaces) and fields that have not yet been initialized during the 16129execution of the various _INI and REG methods. 16130 16131New file - namespace/nsinit.c 16132 16133------------------------------------------- 16134Summary of changes for this label: 09_01_00 16135 16136Namespace manager data structures have been reworked to change the 16137primary object from a table to a single object. This has 16138resulted in dynamic memory savings of 3X within the namespace and 161392X overall in the ACPI CA subsystem. 16140 16141Fixed problem where the call to AcpiEvFindPciRootBuses was 16142inadvertently left commented out. 16143 16144Reduced the warning count when generating the source with the GCC 16145compiler. 16146 16147Revision numbers added to each module header showing the 16148SourceSafe version of the file. Please refer to this version 16149number when giving us feedback or comments on individual modules. 16150 16151The main object types within the subsystem have been renamed to 16152clarify their purpose: 16153 16154ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 16155ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 16156ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 16157 16158NOTE: no changes to the initialization sequence are included in 16159this label. 16160 16161------------------------------------------- 16162Summary of changes for this label: 08_23_00 16163 16164Fixed problem where TerminateControlMethod was being called 16165multiple times per method 16166 16167Fixed debugger problem where single stepping caused a semaphore to 16168be oversignalled 16169 16170Improved performance through additional parse object caching - 16171added ACPI_EXTENDED_OP type 16172 16173------------------------------------------- 16174Summary of changes for this label: 08_10_00 16175 16176Parser/Interpreter integration: Eliminated the creation of 16177complete parse trees for ACPI tables and control methods. 16178Instead, parse subtrees are created and then deleted as soon as 16179they are processed (Either entered into the namespace or executed 16180by the interpreter). This reduces the use of dynamic kernel 16181memory significantly. (about 10X) 16182 16183Exception codes broken into classes and renumbered. Be sure to 16184recompile all code that includes acexcep.h. Hopefully we won't 16185have to renumber the codes again now that they are split into 16186classes (environment, programmer, AML code, ACPI table, and 16187internal). 16188 16189Fixed some additional alignment issues in the Resource Manager 16190subcomponent 16191 16192Implemented semaphore tracking in the AcpiExec utility, and fixed 16193several places where mutexes/semaphores were being unlocked 16194without a corresponding lock operation. There are no known 16195semaphore or mutex "leaks" at this time. 16196 16197Fixed the case where an ASL Return operator is used to return an 16198unnamed package. 16199 16200------------------------------------------- 16201Summary of changes for this label: 07_28_00 16202 16203Fixed a problem with the way addresses were calculated in 16204AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 16205manifested itself when a Field was created with WordAccess or 16206DwordAccess, but the field unit defined within the Field was less 16207 16208than a Word or Dword. 16209 16210Fixed a problem in AmlDumpOperands() module's loop to pull 16211operands off of the operand stack to display information. The 16212problem manifested itself as a TLB error on 64-bit systems when 16213accessing an operand stack with two or more operands. 16214 16215Fixed a problem with the PCI configuration space handlers where 16216context was getting confused between accesses. This required a 16217change to the generic address space handler and address space 16218setup definitions. Handlers now get both a global handler context 16219(this is the one passed in by the user when executing 16220AcpiInstallAddressSpaceHandler() and a specific region context 16221that is unique to each region (For example, the _ADR, _SEG and 16222_BBN values associated with a specific region). The generic 16223function definitions have changed to the following: 16224 16225typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 16226UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 16227*HandlerContext, // This used to be void *Context void 16228*RegionContext); // This is an additional parameter 16229 16230typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 16231RegionHandle, UINT32 Function, void *HandlerContext, void 16232**RegionContext); // This used to be **ReturnContext 16233 16234------------------------------------------- 16235Summary of changes for this label: 07_21_00 16236 16237Major file consolidation and rename. All files within the 16238interpreter have been renamed as well as most header files. This 16239was done to prevent collisions with existing files in the host 16240OSs -- filenames such as "config.h" and "global.h" seem to be 16241quite common. The VC project files have been updated. All 16242makefiles will require modification. 16243 16244The parser/interpreter integration continues in Phase 5 with the 16245implementation of a complete 2-pass parse (the AML is parsed 16246twice) for each table; This avoids the construction of a huge 16247parse tree and therefore reduces the amount of dynamic memory 16248required by the subsystem. Greater use of the parse object cache 16249means that performance is unaffected. 16250 16251Many comments from the two code reviews have been rolled in. 16252 16253The 64-bit alignment support is complete. 16254 16255------------------------------------------- 16256Summary of changes for this label: 06_30_00 16257 16258With a nod and a tip of the hat to the technology of yesteryear, 16259we've added support in the source code for 80 column output 16260devices. The code is now mostly constrained to 80 columns or 16261less to support environments and editors that 1) cannot display 16262or print more than 80 characters on a single line, and 2) cannot 16263disable line wrapping. 16264 16265A major restructuring of the namespace data structure has been 16266completed. The result is 1) cleaner and more 16267understandable/maintainable code, and 2) a significant reduction 16268in the dynamic memory requirement for each named ACPI object 16269(almost half). 16270 16271------------------------------------------- 16272Summary of changes for this label: 06_23_00 16273 16274Linux support has been added. In order to obtain approval to get 16275the ACPI CA subsystem into the Linux kernel, we've had to make 16276quite a few changes to the base subsystem that will affect all 16277users (all the changes are generic and OS- independent). The 16278effects of these global changes have been somewhat far reaching. 16279Files have been merged and/or renamed and interfaces have been 16280renamed. The major changes are described below. 16281 16282Osd* interfaces renamed to AcpiOs* to eliminate namespace 16283pollution/confusion within our target kernels. All OSD 16284interfaces must be modified to match the new naming convention. 16285 16286Files merged across the subsystem. A number of the smaller source 16287and header files have been merged to reduce the file count and 16288increase the density of the existing files. There are too many 16289to list here. In general, makefiles that call out individual 16290files will require rebuilding. 16291 16292Interpreter files renamed. All interpreter files now have the 16293prefix am* instead of ie* and is*. 16294 16295Header files renamed: The acapi.h file is now acpixf.h. The 16296acpiosd.h file is now acpiosxf.h. We are removing references to 16297the acronym "API" since it is somewhat windowsy. The new name is 16298"external interface" or xface or xf in the filenames.j 16299 16300 16301All manifest constants have been forced to upper case (some were 16302mixed case.) Also, the string "ACPI_" has been prepended to many 16303(not all) of the constants, typedefs, and structs. 16304 16305The globals "DebugLevel" and "DebugLayer" have been renamed 16306"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 16307 16308All other globals within the subsystem are now prefixed with 16309"AcpiGbl_" Internal procedures within the subsystem are now 16310prefixed with "Acpi" (with only a few exceptions). The original 16311two-letter abbreviation for the subcomponent remains after "Acpi" 16312- for example, CmCallocate became AcpiCmCallocate. 16313 16314Added a source code translation/conversion utility. Used to 16315generate the Linux source code, it can be modified to generate 16316other types of source as well. Can also be used to cleanup 16317existing source by removing extraneous spaces and blank lines. 16318Found in tools/acpisrc/* 16319 16320OsdUnMapMemory was renamed to OsdUnmapMemory and then 16321AcpiOsUnmapMemory. (UnMap became Unmap). 16322 16323A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 16324When set to one, this indicates that the caller wants to use the 16325 16326semaphore as a mutex, not a counting semaphore. ACPI CA uses 16327both types. However, implementers of this call may want to use 16328different OS primitives depending on the type of semaphore 16329requested. For example, some operating systems provide separate 16330 16331"mutex" and "semaphore" interfaces - where the mutex interface is 16332much faster because it doesn't have all the overhead of a full 16333semaphore implementation. 16334 16335Fixed a deadlock problem where a method that accesses the PCI 16336address space can block forever if it is the first access to the 16337space. 16338 16339------------------------------------------- 16340Summary of changes for this label: 06_02_00 16341 16342Support for environments that cannot handle unaligned data 16343accesses (e.g. firmware and OS environments devoid of alignment 16344handler technology namely SAL/EFI and the IA-64 Linux kernel) has 16345been added (via configurable macros) in these three areas: - 16346Transfer of data from the raw AML byte stream is done via byte 16347moves instead of word/dword/qword moves. - External objects are 16348aligned within the user buffer, including package elements (sub- 16349objects). - Conversion of name strings to UINT32 Acpi Names is now 16350done byte-wise. 16351 16352The Store operator was modified to mimic Microsoft's 16353implementation when storing to a Buffer Field. 16354 16355Added a check of the BM_STS bit before entering C3. 16356 16357The methods subdirectory has been obsoleted and removed. A new 16358file, cmeval.c subsumes the functionality. 16359 16360A 16-bit (DOS) version of AcpiExec has been developed. The 16361makefile is under the acpiexec directory. 16362