1---------------------------------------- 231 August 2016. Summary of changes for version 20160831: 3 4 51) ACPICA kernel-resident subsystem: 6 7Improve support for the so-called "module-level code", which is defined 8to be math, logical and control AML opcodes that appear outside of any 9control method. This change improves the support by adding more opcodes 10that can be executed in the manner. Some other issues have been solved, 11and the ASL grammar changes to support such code under all scope 12operators (Device, etc.) are complete. Lv Zheng. 13 14UEFI support: these OSL functions have been implemented. This is an 15additional step toward supporting the AcpiExec utility natively (with 16full hardware access) under UEFI. Marcelo Ferreira. 17 AcpiOsReadPciConfiguration 18 AcpiOsWritePciConfiguration 19 20Fixed a possible mutex error during control method auto-serialization. Lv 21Zheng. 22 23Updated support for the Generic Address Structure by fully implementing 24all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 25Zheng. 26 27Updated the return value for the internal _OSI method. Instead of 280xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 29for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 30implementations, and will be reflected and clarified in the next version 31of the ACPI specification. 32 33Implemented two new table events that can be passed to an ACPICA table 34handler. These events are used to indicate a table installation or 35uninstallation. These events are used in addition to existed table load 36and unload events. Lv Zheng. 37 38Implemented a cleanup for all internal string-to-integer conversions. 39Consolidate multiple versions of this functionality and limit possible 40bases to either 10 or 16 to simplify the code. Adds a new file, 41utstrtoul64. 42 43Cleanup the inclusion order of the various compiler-specific headers. 44This simplifies build configuration management. The compiler-specific 45headers are now split out from the host-specific headers. Lv Zheng. 46 47Example Code and Data Size: These are the sizes for the OS-independent 48acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 49debug version of the code includes the debug output trace mechanism and 50has a much larger code and data size. 51 52 Current Release: 53 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 54 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 55 56 572) iASL Compiler/Disassembler and Tools: 58 59iASL/AcpiExec: Added a command line option to display the build date/time 60of the tool (-vd). This can be useful to verify that the correct version 61of the tools are being used. 62 63AML Debugger: Implemented a new subcommand ("execute predef") to execute 64all predefined control methods and names within the current namespace. 65This can be useful for debugging problems with ACPI tables and the ACPI 66namespace. 67 68---------------------------------------- 6929 July 2016. Summary of changes for version 20160729: 70 71 721) ACPICA kernel-resident subsystem: 73 74Implemented basic UEFI support for the various ACPICA tools. This 75includes: 761) An OSL to implement the various AcpiOs* interfaces on UEFI. 772) Support to obtain the ACPI tables on UEFI. 783) Local implementation of required C library functions not available on 79UEFI. 804) A front-end (main) function for the tools for UEFI-related 81initialization. 82 83The initial deployment of this support is the AcpiDump utility executing 84as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 85Current environments supported are Linux/Unix. MSVC generation is not 86supported at this time. See the generate/efi/README file for build 87instructions. Lv Zheng. 88 89Future plans include porting the AcpiExec utility to execute natively on 90the platform with I/O and memory access. This will allow viewing/dump of 91the platform namespace and native execution of ACPI control methods that 92access the actual hardware. To fully implement this support, the OSL 93functions below must be implemented with UEFI interfaces. Any community 94help in the implementation of these functions would be appreciated: 95 AcpiOsReadPort 96 AcpiOsWritePort 97 AcpiOsReadMemory 98 AcpiOsWriteMemory 99 AcpiOsReadPciConfiguration 100 AcpiOsWritePciConfiguration 101 102Restructured and standardized the C library configuration for ACPICA, 103resulting in the various configuration options below. This includes a 104global restructuring of the compiler-dependent and platform-dependent 105include files. These changes may affect the existing platform-dependent 106configuration files on some hosts. Lv Zheng. 107 108The current C library configuration options appear below. For any issues, 109it may be helpful to examine the existing compiler-dependent and 110platform-dependent files as examples. Lv Zheng. 111 1121) Linux kernel: 113 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 114library. 115 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 1162) Unix/Windows/BSD applications: 117 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 118library. 119 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 1203) UEFI applications: 121 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 122library. 123 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 1244) UEFI applications (EDK2/StdLib): 125 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 126 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 127 128 129AML interpreter: "module-level code" support. Allows for execution of so- 130called "executable" AML code (math/logical operations, etc.) outside of 131control methods not just at the module level (top level) but also within 132any scope declared outside of a control method - Scope{}, Device{}, 133Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 134 135Simplified the configuration of the "maximum AML loops" global option by 136adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 137modified at runtime. 138 139 140Example Code and Data Size: These are the sizes for the OS-independent 141acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 142debug version of the code includes the debug output trace mechanism and 143has a much larger code and data size. 144 145 Current Release: 146 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 147 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 148 149 1502) iASL Compiler/Disassembler and Tools: 151 152iASL: Add full support for the RASF ACPI table (RAS Features Table). 153Includes disassembler, data table compiler, and header support. 154 155iASL Expand "module-level code" support. Allows for 156compilation/disassembly of so-called "executable" AML code (math/logical 157operations, etc.) outside of control methods not just at the module level 158(top level) but also within any scope declared outside of a control 159method - Scope{}, Device{}, Processor{}, PowerResource{}, and 160ThermalZone{}. 161 162AcpiDump: Added support for dumping all SSDTs on newer versions of 163Windows. These tables are now easily available -- SSDTs are not available 164through the registry on older versions. 165 166---------------------------------------- 16727 May 2016. Summary of changes for version 20160527: 168 169 1701) ACPICA kernel-resident subsystem: 171 172Temporarily reverted the new arbitrary bit length/alignment support in 173AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 174a number of regressions with the new code that need to be fully resolved 175and tested before this support can be finally integrated into ACPICA. 176Apologies for any inconveniences these issues may have caused. 177 178The ACPI message macros are not configurable (ACPI_MSG_ERROR, 179ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 180and ACPI_MSG_BIOS_WARNING). Lv Zheng. 181 182Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 183option. Adds a new return macro, return_STR. Junk-uk Kim. 184 185Example Code and Data Size: These are the sizes for the OS-independent 186acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 187debug version of the code includes the debug output trace mechanism and 188has a much larger code and data size. 189 190 Current Release: 191 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 192 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 193 Previous Release: 194 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 195 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 196 197---------------------------------------- 19822 April 2016. Summary of changes for version 20160422: 199 2001) ACPICA kernel-resident subsystem: 201 202Fixed a regression in the GAS (generic address structure) arbitrary bit 203support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 204and incorrect return values. Lv Zheng. ACPICA BZ 1270. 205 206ACPI 6.0: Added support for new/renamed resource macros. One new argument 207was added to each of these macros, and the original name has been 208deprecated. The AML disassembler will always disassemble to the new 209names. Support for the new macros was added to iASL, disassembler, 210resource manager, and the acpihelp utility. ACPICA BZ 1274. 211 212 I2cSerialBus -> I2cSerialBusV2 213 SpiSerialBus -> SpiSerialBusV2 214 UartSerialBus -> UartSerialBusV2 215 216ACPI 6.0: Added support for a new integer field that was appended to the 217package object returned by the _BIX method. This adds iASL compile-time 218and AML runtime error checking. ACPICA BZ 1273. 219 220ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 221Subspace Type2" (Headers, Disassembler, and data table compiler). 222 223Example Code and Data Size: These are the sizes for the OS-independent 224acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 225debug version of the code includes the debug output trace mechanism and 226has a much larger code and data size. 227 228 Current Release: 229 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 230 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 231 Previous Release: 232 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 233 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 234 235 2362) iASL Compiler/Disassembler and Tools: 237 238iASL: Implemented an ASL grammar extension to allow/enable executable 239"module-level code" to be created and executed under the various 240operators that create new scopes. This type of AML code is already 241supported in all known AML interpreters, and the grammar change will 242appear in the next version of the ACPI specification. Simplifies the 243conditional runtime creation of named objects under these object types: 244 245 Device 246 PowerResource 247 Processor 248 Scope 249 ThermalZone 250 251iASL: Implemented a new ASL extension, a "For" loop macro to add greater 252ease-of-use to the ASL language. The syntax is similar to the 253corresponding C operator, and is implemented with the existing AML While 254opcode -- thus requiring no changes to existing AML interpreters. 255 256 For (Initialize, Predicate, Update) {TermList} 257 258Grammar: 259 ForTerm := 260 For ( 261 Initializer // Nothing | TermArg => ComputationalData 262 Predicate // Nothing | TermArg => ComputationalData 263 Update // Nothing | TermArg => ComputationalData 264 ) {TermList} 265 266 267iASL: The _HID/_ADR detection and validation has been enhanced to search 268under conditionals in order to allow these objects to be conditionally 269created at runtime. 270 271iASL: Fixed several issues with the constant folding feature. The 272improvement allows better detection and resolution of statements that can 273be folded at compile time. ACPICA BZ 1266. 274 275iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 276conversion to the ASL ElseIf operator where incorrect ASL code could be 277generated. 278 279iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 280sometimes an extra (and extraneous) set of parentheses were emitted for 281some combinations of operators. Although this did not cause any problems 282with recompilation of the disassembled code, it made the code more 283difficult to read. David Box. ACPICA BZ 1231. 284 285iASL: Changed to ignore the unreferenced detection for predefined names 286of resource descriptor elements, when the resource descriptor is 287created/defined within a control method. 288 289iASL: Disassembler: Fix a possible fault with externally declared Buffer 290objects. 291 292---------------------------------------- 29318 March 2016. Summary of changes for version 20160318: 294 2951) ACPICA kernel-resident subsystem: 296 297Added support for arbitrary bit lengths and bit offsets for registers 298defined by the Generic Address Structure. Previously, only aligned bit 299lengths of 8/16/32/64 were supported. This was sufficient for many years, 300but recently some machines have been seen that require arbitrary bit- 301level support. ACPICA BZ 1240. Lv Zheng. 302 303Fixed an issue where the \_SB._INI method sometimes must be evaluated 304before any _REG methods are evaluated. Lv Zheng. 305 306Implemented several changes related to ACPI table support 307(Headers/Disassembler/TableCompiler): 308NFIT: For ACPI 6.1, updated to add some additional new fields and 309constants. 310FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 3116). 312DMAR: Added new constants per the 10/2014 DMAR spec. 313IORT: Added new subtable per the 10/2015 IORT spec. 314HEST: For ACPI 6.1, added new constants and new subtable. 315DBG2: Added new constants per the 12/2015 DBG2 spec. 316FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 317ACPICA BZ 1249. 318ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 319 320Updated header support for the DMAR table to match the current version of 321the related spec. 322 323Added extensions to the ASL Concatenate operator to allow any ACPI object 324to be passed as an operand. Any object other than Integer/String/Buffer 325simply returns a string containing the object type. This extends the 326usefulness of the Printf macros. Previously, Concatenate would abort the 327control method if a non-data object was encountered. 328 329ACPICA source code: Deployed the C "const" keyword across the source code 330where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 331 332Example Code and Data Size: These are the sizes for the OS-independent 333acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 334debug version of the code includes the debug output trace mechanism and 335has a much larger code and data size. 336 337 Current Release: 338 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 339 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 340 Previous Release: 341 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 342 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 343 344 3452) iASL Compiler/Disassembler and Tools: 346 347iASL/Disassembler: Improved the heuristic used to determine the number of 348arguments for an externally defined control method (a method in another 349table). Although this is an improvement, there is no deterministic way to 350"guess" the number of method arguments. Only the ACPI 6.0 External opcode 351will completely solve this problem as it is deployed (automatically) in 352newer BIOS code. 353 354iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 355statements that could cause errors when the disassembled file is 356compiled. ACPICA BZ 1243. David Box. 357 358iASL: Fixed a regression caused by the merger of the two versions of the 359local strtoul64. Because of a dependency on a global variable, strtoul64 360could return an error for integers greater than a 32-bit value. ACPICA BZ 3611260. 362 363iASL: Fixed a regression where a fault could occur for an ASL Return 364statement if it invokes a control method that is not resolved. ACPICA BZ 3651264. 366 367AcpiXtract: Improved input file validation: detection of binary files and 368non-acpidump text files. 369 370---------------------------------------- 37112 February 2016. Summary of changes for version 20160212: 372 3731) ACPICA kernel-resident subsystem: 374 375Implemented full support for the ACPI 6.1 specification (released in 376January). This version of the specification is available at: 377http://www.uefi.org/specifications 378 379Only a relatively small number of changes were required in ACPICA to 380support ACPI 6.1, in these areas: 381- New predefined names 382- New _HID values 383- A new subtable for HEST 384- A few other header changes for new values 385 386Ensure \_SB_._INI is executed before any _REG methods are executed. There 387appears to be existing BIOS code that relies on this behavior. Lv Zheng. 388 389Reverted a change made in version 20151218 which enabled method 390invocations to be targets of various ASL operators (SuperName and Target 391grammar elements). While the new behavior is supported by the ACPI 392specification, other AML interpreters do not support this behavior and 393never will. The ACPI specification will be updated for ACPI 6.2 to remove 394this support. Therefore, the change was reverted to the original ACPICA 395behavior. 396 397ACPICA now supports the GCC 6 compiler. 398 399Current Release: (Note: build changes increased sizes) 400 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 401 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 402Previous Release: 403 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 404 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 405 406 4072) iASL Compiler/Disassembler and Tools: 408 409Completed full support for the ACPI 6.0 External() AML opcode. The 410compiler emits an external AML opcode for each ASL External statement. 411This opcode is used by the disassembler to assist with the disassembly of 412external control methods by specifying the required number of arguments 413for the method. AML interpreters do not use this opcode. To ensure that 414interpreters do not even see the opcode, a block of one or more external 415opcodes is surrounded by an "If(0)" construct. As this feature becomes 416commonly deployed in BIOS code, the ability of disassemblers to correctly 417disassemble AML code will be greatly improved. David Box. 418 419iASL: Implemented support for an optional cross-reference output file. 420The -lx option will create a the cross-reference file with the suffix 421"xrf". Three different types of cross-reference are created in this file: 422- List of object references made from within each control method 423- Invocation (caller) list for each user-defined control method 424- List of references to each non-method object in the namespace 425 426iASL: Method invocations as ASL Target operands are now disallowed and 427flagged as errors in preparation for ACPI 6.2 (see the description of the 428problem above). 429 430---------------------------------------- 4318 January 2016. Summary of changes for version 20160108: 432 4331) ACPICA kernel-resident subsystem: 434 435Updated all ACPICA copyrights and signons to 2016: Added the 2016 436copyright to all source code module headers and utility/tool signons. 437This includes the standard Linux dual-license header. This affects 438virtually every file in the ACPICA core subsystem, iASL compiler, all 439ACPICA utilities, and the ACPICA test suite. 440 441Fixed a regression introduced in version 20151218 concerning the 442execution of so-called module-level ASL/AML code. Namespace objects 443created under a module-level If() construct were not properly/fully 444entered into the namespace and could cause an interpreter fault when 445accessed. 446 447Example Code and Data Size: These are the sizes for the OS-independent 448acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 449debug version of the code includes the debug output trace mechanism and 450has a much larger code and data size. 451 452Current Release: 453 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 454 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 455 Previous Release: 456 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 457 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 458 459 4602) iASL Compiler/Disassembler and Tools: 461 462Fixed a problem with the compilation of the GpioIo and GpioInt resource 463descriptors. The _PIN field name was incorrectly defined to be an array 464of 32-bit values, but the _PIN values are in fact 16 bits each. This 465would cause incorrect bit width warnings when using Word (16-bit) fields 466to access the descriptors. 467 468 469---------------------------------------- 47018 December 2015. Summary of changes for version 20151218: 471 4721) ACPICA kernel-resident subsystem: 473 474Implemented per-AML-table execution of "module-level code" as individual 475ACPI tables are loaded into the namespace during ACPICA initialization. 476In other words, any module-level code within an AML table is executed 477immediately after the table is loaded, instead of batched and executed 478after all of the tables have been loaded. This provides compatibility 479with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 480David Box. 481 482To fully support the feature above, the default operation region handlers 483for the SystemMemory, SystemIO, and PCI_Config address spaces are now 484installed before any ACPI tables are loaded. This enables module-level 485code to access these address spaces during the table load and module- 486level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 487Box. 488 489Implemented several changes to the internal _REG support in conjunction 490with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 491utilities for the changes above. Although these tools were changed, host 492operating systems that simply use the default handlers for SystemMemory, 493SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 494 495For example, in the code below, DEV1 is conditionally added to the 496namespace by the DSDT via module-level code that accesses an operation 497region. The SSDT references DEV1 via the Scope operator. DEV1 must be 498created immediately after the DSDT is loaded in order for the SSDT to 499successfully reference DEV1. Previously, this code would cause an 500AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 501fully supported by ACPICA. 502 503 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 504 { 505 OperationRegion (OPR1, SystemMemory, 0x400, 32) 506 Field (OPR1, AnyAcc, NoLock, Preserve) 507 { 508 FLD1, 1 509 } 510 If (FLD1) 511 { 512 Device (\DEV1) 513 { 514 } 515 } 516 } 517 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 518 { 519 External (\DEV1, DeviceObj) 520 Scope (\DEV1) 521 { 522 } 523 } 524 525Fixed an AML interpreter problem where control method invocations were 526not handled correctly when the invocation was itself a SuperName argument 527to another ASL operator. In these cases, the method was not invoked. 528ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 529argument: 530 Store 531 Acquire, Wait 532 CondRefOf, RefOf 533 Decrement, Increment 534 Load, Unload 535 Notify 536 Signal, Release, Reset 537 SizeOf 538 539Implemented automatic String-to-ObjectReference conversion support for 540packages returned by predefined names (such as _DEP). A common BIOS error 541is to add double quotes around an ObjectReference namepath, which turns 542the reference into an unexpected string object. This support detects the 543problem and corrects it before the package is returned to the caller that 544invoked the method. Lv Zheng. 545 546Implemented extensions to the Concatenate operator. Concatenate now 547accepts any type of object, it is not restricted to simply 548Integer/String/Buffer. For objects other than these 3 basic data types, 549the argument is treated as a string containing the name of the object 550type. This expands the utility of Concatenate and the Printf/Fprintf 551macros. ACPICA BZ 1222. 552 553Cleaned up the output of the ASL Debug object. The timer() value is now 554optional and no longer emitted by default. Also, the basic data types of 555Integer/String/Buffer are simply emitted as their values, without a data 556type string -- since the data type is obvious from the output. ACPICA BZ 5571221. 558 559Example Code and Data Size: These are the sizes for the OS-independent 560acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 561debug version of the code includes the debug output trace mechanism and 562has a much larger code and data size. 563 564 Current Release: 565 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 566 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 567 Previous Release: 568 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 569 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 570 571 5722) iASL Compiler/Disassembler and Tools: 573 574iASL: Fixed some issues with the ASL Include() operator. This operator 575was incorrectly defined in the iASL parser rules, causing a new scope to 576be opened for the code within the include file. This could lead to 577several issues, including allowing ASL code that is technically illegal 578and not supported by AML interpreters. Note, this does not affect the 579related #include preprocessor operator. ACPICA BZ 1212. 580 581iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 582operator is essentially an ASL macro since there is no AML opcode 583associated with it. The code emitted by the iASL compiler for ElseIf is 584an Else opcode followed immediately by an If opcode. The disassembler 585will now emit an ElseIf if it finds an Else immediately followed by an 586If. This simplifies the decoded ASL, especially for deeply nested 587If..Else and large Switch constructs. Thus, the disassembled code more 588closely follows the original source ASL. ACPICA BZ 1211. Example: 589 590 Old disassembly: 591 Else 592 { 593 If (Arg0 == 0x02) 594 { 595 Local0 = 0x05 596 } 597 } 598 599 New disassembly: 600 ElseIf (Arg0 == 0x02) 601 { 602 Local0 = 0x05 603 } 604 605AcpiExec: Added support for the new module level code behavior and the 606early region installation. This required a small change to the 607initialization, since AcpiExec must install its own operation region 608handlers. 609 610AcpiExec: Added support to make the debug object timer optional. Default 611is timer disabled. This cleans up the debug object output -- the timer 612data is rarely used. 613 614AcpiExec: Multiple ACPI tables are now loaded in the order that they 615appear on the command line. This can be important when there are 616interdependencies/references between the tables. 617 618iASL/Templates. Add support to generate template files with multiple 619SSDTs within a single output file. Also added ommand line support to 620specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 6211223, 1225. 622 623 624---------------------------------------- 62524 November 2015. Summary of changes for version 20151124: 626 6271) ACPICA kernel-resident subsystem: 628 629Fixed a possible regression for a previous update to FADT handling. The 630FADT no longer has a fixed table ID, causing some issues with code that 631was hardwired to a specific ID. Lv Zheng. 632 633Fixed a problem where the method auto-serialization could interfere with 634the current SyncLevel. This change makes the auto-serialization support 635transparent to the SyncLevel support and management. 636 637Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 638interface is intended for early access to the namespace during the 639initial namespace device discovery walk. The _SUB method has been seen to 640access operation regions in some cases, causing errors because the 641operation regions are not fully initialized. 642 643AML Debugger: Fixed some issues with the terminate/quit/exit commands 644that can cause faults. Lv Zheng. 645 646AML Debugger: Add thread ID support so that single-step mode only applies 647to the AML Debugger thread. This prevents runtime errors within some 648kernels. Lv Zheng. 649 650Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 651methods that are invoked by this interface are optional, removed warnings 652emitted for the case where one or more of these methods do not exist. 653ACPICA BZ 1208, original change by Prarit Bhargava. 654 655Made a major pass through the entire ACPICA source code base to 656standardize formatting that has diverged a bit over time. There are no 657functional changes, but this will of course cause quite a few code 658differences from the previous ACPICA release. 659 660Example Code and Data Size: These are the sizes for the OS-independent 661acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 662debug version of the code includes the debug output trace mechanism and 663has a much larger code and data size. 664 665 Current Release: 666 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 667 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 668 Previous Release: 669 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 670 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 671 672 6732) iASL Compiler/Disassembler and Tools: 674 675iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 676definition blocks within a single ASL file and the resulting AML file. 677Support for this type of file was also added to the various tools that 678use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 679example code below shows two definition blocks within the same file: 680 681 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 6820x12345678) 683 { 684 } 685 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 686 { 687 } 688 689iASL: Enhanced typechecking for the Name() operator. All expressions for 690the value of the named object must be reduced/folded to a single constant 691at compile time, as per the ACPI specification (the AML definition of 692Name()). 693 694iASL: Fixed some code indentation issues for the -ic and -ia options (C 695and assembly headers). Now all emitted code correctly begins in column 1. 696 697iASL: Added an error message for an attempt to open a Scope() on an 698object defined in an SSDT. The DSDT is always loaded into the namespace 699first, so any attempt to open a Scope on an SSDT object will fail at 700runtime. 701 702 703---------------------------------------- 70430 September 2015. Summary of changes for version 20150930: 705 7061) ACPICA kernel-resident subsystem: 707 708Debugger: Implemented several changes and bug fixes to assist support for 709the in-kernel version of the AML debugger. Lv Zheng. 710- Fix the "predefined" command for in-kernel debugger. 711- Do not enter debug command loop for the help and version commands. 712- Disallow "execute" command during execution/single-step of a method. 713 714Interpreter: Updated runtime typechecking for all operators that have 715target operands. The operand is resolved and validated that it is legal. 716For example, the target cannot be a non-data object such as a Device, 717Mutex, ThermalZone, etc., as per the ACPI specification. 718 719Debugger: Fixed the double-mutex user I/O handshake to work when local 720deadlock detection is enabled. 721 722Debugger: limited display of method locals and arguments (LocalX and 723ArgX) to only those that have actually been initialized. This prevents 724lines of extraneous output. 725 726Updated the definition of the NFIT table to correct the bit polarity of 727one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 728 729Example Code and Data Size: These are the sizes for the OS-independent 730acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 731debug version of the code includes the debug output trace mechanism and 732has a much larger code and data size. 733 734 Current Release: 735 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 736 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 737 Previous Release: 738 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 739 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 740 741 7422) iASL Compiler/Disassembler and Tools: 743 744iASL: Improved the compile-time typechecking for operands of many of the 745ASL operators: 746 747-- Added an option to disable compiler operand/operator typechecking (- 748ot). 749 750-- For the following operators, the TermArg operands are now validated 751when possible to be Integer data objects: BankField, OperationRegion, 752DataTableRegion, Buffer, and Package. 753 754-- Store (Source, Target): Both the source and target operands are 755resolved and checked that the operands are both legal. For example, 756neither operand can be a non-data object such as a Device, Mutex, 757ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 758operator can be used to store an object to any type of target object. 759 760-- Store (Source, Target): If the source is a Package object, the target 761must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 762is a Package, the source must also be a Package. 763 764-- Store (Source, Target): A warning is issued if the source and target 765resolve to the identical named object. 766 767-- Store (Source, <method invocation>): An error is generated for the 768target method invocation, as this construct is not supported by the AML 769interpreter. 770 771-- For all ASL math and logic operators, the target operand must be a 772data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 773includes the function return value also. 774 775-- External declarations are also included in the typechecking where 776possible. External objects defined using the UnknownObj keyword cannot be 777typechecked, however. 778 779iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 780operator: 781- Legacy code: Index(PKG1, 3) 782- New ASL+ code: PKG1[3] 783This completes the ACPI 6.0 ASL+ support as it was the only operator not 784supported. 785 786iASL: Fixed the file suffix for the preprocessor output file (.i). Two 787spaces were inadvertently appended to the filename, causing file access 788and deletion problems on some systems. 789 790ASL Test Suite (ASLTS): Updated the master makefile to generate all 791possible compiler output files when building the test suite -- thus 792exercising these features of the compiler. These files are automatically 793deleted when the test suite exits. 794 795 796---------------------------------------- 79718 August 2015. Summary of changes for version 20150818: 798 7991) ACPICA kernel-resident subsystem: 800 801Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 802Zheng. ACPICA BZ 1186. 803 804Completed development to ensure that the ACPICA Disassembler and Debugger 805are fully standalone components of ACPICA. Removed cross-component 806dependences. Lv Zheng. 807 808The max-number-of-AML-loops is now runtime configurable (previously was 809compile-time only). This is essentially a loop timeout to force-abort 810infinite AML loops. ACPCIA BZ 1192. 811 812Debugger: Cleanup output to dump ACPI names and namepaths without any 813trailing underscores. Lv Zheng. ACPICA BZ 1135. 814 815Removed unnecessary conditional compilations across the Debugger and 816Disassembler components where entire modules could be left uncompiled. 817 818The aapits test is deprecated and has been removed from the ACPICA git 819tree. The test has never been completed and has not been maintained, thus 820becoming rather useless. ACPICA BZ 1015, 794. 821 822A batch of small changes to close bugzilla and other reports: 823- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 824- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 825- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 826- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 827Moore. 828- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 829ACPICA BZ 1184. 830- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 831operators. 832- Debugger: Split debugger initialization/termination interfaces. Lv 833Zheng. 834- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 835identification. 836- AcpiExec: Add debug message during _REG method phase during table 837load/init. 838- AcpiNames: Fix a regression where some output was missing and no longer 839emitted. 840- Debugger: General cleanup and simplification. Lv Zheng. 841- Disassembler: Cleanup use of several global option variables. Lv Zheng. 842 843Example Code and Data Size: These are the sizes for the OS-independent 844acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 845debug version of the code includes the debug output trace mechanism and 846has a much larger code and data size. 847 848 Current Release: 849 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 850 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 851 Previous Release: 852 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 853 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 854 855 8562) iASL Compiler/Disassembler and Tools: 857 858AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 859were not handled properly and caused load errors. Now, properly invoke 860and use the ACPICA auto-reallocate mechanism for ACPI table data 861structures. ACPICA BZ 1188 862 863AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 864BZ 1190. 865 866AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 867AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 868executed during initialization. ACPICA BZ 1187, 1189. 869 870iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 871that corresponds to each disassembled ASL statement, to simplify 872debugging. ACPICA BZ 1191. 873 874Debugger: Add option to the "objects" command to display a summary of the 875current namespace objects (Object type and count). This is displayed if 876the command is entered with no arguments. 877 878AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 879 880 881---------------------------------------- 88217 July 2015. Summary of changes for version 20150717: 883 8841) ACPICA kernel-resident subsystem: 885 886Improved the partitioning between the Debugger and Disassembler 887components. This allows the Debugger to be used standalone within kernel 888code without the Disassembler (which is used for single stepping also). 889This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 890 891Debugger: Implemented a new command to trace the execution of control 892methods (Trace). This is especially useful for the in-kernel version of 893the debugger when file I/O may not be available for method trace output. 894See the ACPICA reference for more information. Lv Zheng. 895 896Moved all C library prototypes (used for the local versions of these 897functions when requested) to a new header, acclib.h 898Cleaned up the use of non-ANSI C library functions. These functions are 899implemented locally in ACPICA. Moved all such functions to a common 900source file, utnonansi.c 901 902Debugger: Fixed a problem with the "!!" command (get last command 903executed) where the debugger could enter an infinite loop and eventually 904crash. 905 906Removed the use of local macros that were used for some of the standard C 907library functions to automatically cast input parameters. This mostly 908affected the is* functions where the input parameter is defined to be an 909int. This required a few modifications to the main ACPICA source code to 910provide casting for these functions and eliminate possible compiler 911warnings for these parameters. 912 913Across the source code, added additional status/error checking to resolve 914issues discovered by static source code analysis tools such as Coverity. 915 916Example Code and Data Size: These are the sizes for the OS-independent 917acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 918debug version of the code includes the debug output trace mechanism and 919has a much larger code and data size. 920 921 Current Release: 922 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 923 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 924 Previous Release: 925 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 926 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 927 928 9292) iASL Compiler/Disassembler and Tools: 930 931iASL: Fixed a regression where the device map file feature no longer 932worked properly when used in conjunction with the disassembler. It only 933worked properly with the compiler itself. 934 935iASL: Implemented a new warning for method LocalX variables that are set 936but never used (similar to a C compiler such as gcc). This also applies 937to ArgX variables that are not defined by the parent method, and are 938instead (legally) used as local variables. 939 940iASL/Preprocessor: Finished the pass-through of line numbers from the 941preprocessor to the compiler. This ensures that compiler errors/warnings 942have the correct original line numbers and filenames, regardless of any 943#include files. 944 945iASL/Preprocessor: Fixed a couple of issues with comment handling and the 946pass-through of comments to the preprocessor output file (which becomes 947the compiler input file). Also fixed a problem with // comments that 948appear after a math expression. 949 950iASL: Added support for the TCPA server table to the table compiler and 951template generator. (The client table was already previously supported) 952 953iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 954identify the iASL compiler. 955 956Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 957multiple times. The new names are ACPI_SIGN_NEGATIVE and 958ACPI_SIGN_POSITIVE. 959 960AcpiHelp: Update to expand help messages for the iASL preprocessor 961directives. 962 963 964---------------------------------------- 96519 June 2015. Summary of changes for version 20150619: 966 967Two regressions in version 20150616 have been addressed: 968 969Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 970etc.) This update changes ACPICA to only use the standard headers for 971functions, or the prototypes for the local versions of the C library 972functions. Across the source code, this required some additional casts 973for some Clib invocations for portability. Moved all local prototypes to 974a new file, acclib.h 975 976Fixes several problems with recent changes to the handling of the FACS 977table that could cause some systems not to boot. 978 979 980---------------------------------------- 98116 June 2015. Summary of changes for version 20150616: 982 983 9841) ACPICA kernel-resident subsystem: 985 986Across the entire ACPICA source code base, the various macros for the C 987library functions (such as ACPI_STRLEN, etc.) have been removed and 988replaced by the standard C library names (strlen, etc.) The original 989purpose for these macros is no longer applicable. This simplification 990reduces the number of macros used in the ACPICA source code 991significantly, improving readability and maintainability. 992 993Implemented support for a new ACPI table, the OSDT. This table, the 994"override" SDT, can be loaded directly by the host OS at boot time. It 995enables the replacement of existing namespace objects that were installed 996via the DSDT and/or SSDTs. The primary purpose for this is to replace 997buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 998for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 999Moore. 1000 1001Added support for systems with (improperly) two FACS tables -- a "32-bit" 1002table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 1003X field). This change will support both automatically. There continues to 1004be systems found with this issue. This support requires a change to the 1005AcpiSetFirmwareWakingVector interface. Also, a public global variable has 1006been added to allow the host to select which FACS is desired 1007(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 1008details Lv Zheng. 1009 1010Added a new feature to allow for systems that do not contain an FACS. 1011Although this is already supported on hardware-reduced platforms, the 1012feature has been extended for all platforms. The reasoning is that we do 1013not want to abort the entire ACPICA initialization just because the 1014system is seriously buggy and has no FACS. 1015 1016Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 1017not correctly transcribed from the ACPI specification in ACPICA version 101820150515. 1019 1020Implemented support for the _CLS object in the AcpiGetObjectInfo external 1021interface. 1022 1023Updated the definitions of the TCPA and TPM2 ACPI tables to the more 1024recent TCG ACPI Specification, December 14, 2014. Table disassembler and 1025compiler also updated. Note: The TCPA "server" table is not supported by 1026the disassembler/table-compiler at this time. 1027 1028ACPI 6.0: Added definitions for the new GIC version field in the MADT. 1029 1030Example Code and Data Size: These are the sizes for the OS-independent 1031acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1032debug version of the code includes the debug output trace mechanism and 1033has a much larger code and data size. 1034 1035 Current Release: 1036 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 1037 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 1038 Previous Release: 1039 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 1040 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 1041 1042 10432) iASL Compiler/Disassembler and Tools: 1044 1045Disassembler: Fixed a problem with the new symbolic operator disassembler 1046where incorrect ASL code could be emitted in some cases for the "non- 1047commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 1048ShiftRight. The actual problem cases seem to be rather unusual in common 1049ASL code, however. David Box. 1050 1051Modified the linux version of acpidump to obtain ACPI tables from not 1052just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 1053Zheng. 1054 1055iASL: Fixed a problem where the user preprocessor output file (.i) 1056contained extra data that was not expected. The compiler was using this 1057file as a temporary file and passed through #line directives in order to 1058keep compiler error messages in sync with the input file and line number 1059across multiple include files. The (.i) is no longer a temporary file as 1060the compiler uses a new, different file for the original purpose. 1061 1062iASL: Fixed a problem where comments within the original ASL source code 1063file were not passed through to the preprocessor output file, nor any 1064listing files. 1065 1066iASL: Fixed some issues for the handling of the "#include" preprocessor 1067directive and the similar (but not the same) "Include" ASL operator. 1068 1069iASL: Add support for the new OSDT in both the disassembler and compiler. 1070 1071iASL: Fixed a problem with the constant folding support where a Buffer 1072object could be incorrectly generated (incorrectly formed) during a 1073conversion to a Store() operator. 1074 1075AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 1076description text for the _REV predefined name. _REV now permanently 1077returns 2, as per the ACPI 6.0 specification. 1078 1079Debugger: Enhanced the output of the Debug ASL object for references 1080produced by the Index operator. For Buffers and strings, only output the 1081actual byte pointed to by the index. For packages, only print the single 1082package element decoded by the index. Previously, the entire 1083buffer/string/package was emitted. 1084 1085iASL/Table-compiler: Fixed a regression where the "generic" data types 1086were no longer recognized, causing errors. 1087 1088 1089---------------------------------------- 109015 May 2015. Summary of changes for version 20150515: 1091 1092This release implements most of ACPI 6.0 as described below. 1093 10941) ACPICA kernel-resident subsystem: 1095 1096Implemented runtime argument checking and return value checking for all 1097new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 1098_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 1099 1100Example Code and Data Size: These are the sizes for the OS-independent 1101acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1102debug version of the code includes the debug output trace mechanism and 1103has a much larger code and data size. 1104 1105 Current Release: 1106 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 1107 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 1108 Previous Release: 1109 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1110 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1111 1112 11132) iASL Compiler/Disassembler and Tools: 1114 1115iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 1116names (argument count validation and return value typechecking.) 1117 1118iASL disassembler and table compiler: implemented support for all new 1119ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 1120 1121iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 1122tables: FADT, MADT. 1123 1124iASL preprocessor: Added a new directive to enable inclusion of binary 1125blobs into ASL code. The new directive is #includebuffer. It takes a 1126binary file as input and emits a named ascii buffer object into the ASL 1127code. 1128 1129AcpiHelp: Added support for all new ACPI 6.0 predefined names. 1130 1131AcpiHelp: Added a new option, -d, to display all iASL preprocessor 1132directives. 1133 1134AcpiHelp: Added a new option, -t, to display all known/supported ACPI 1135tables. 1136 1137 1138---------------------------------------- 113910 April 2015. Summary of changes for version 20150410: 1140 1141Reverted a change introduced in version 20150408 that caused 1142a regression in the disassembler where incorrect operator 1143symbols could be emitted. 1144 1145 1146---------------------------------------- 114708 April 2015. Summary of changes for version 20150408: 1148 1149 11501) ACPICA kernel-resident subsystem: 1151 1152Permanently set the return value for the _REV predefined name. It now 1153returns 2 (was 5). This matches other ACPI implementations. _REV will be 1154deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 1155for ACPI 2.0 and later. It should never be used to differentiate or 1156identify operating systems. 1157 1158Added the "Windows 2015" string to the _OSI support. ACPICA will now 1159return TRUE to a query with this string. 1160 1161Fixed several issues with the local version of the printf function. 1162 1163Added the C99 compiler option (-std=c99) to the Unix makefiles. 1164 1165 Current Release: 1166 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 1167 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 1168 Previous Release: 1169 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1170 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1171 1172 11732) iASL Compiler/Disassembler and Tools: 1174 1175iASL: Implemented an enhancement to the constant folding feature to 1176transform the parse tree to a simple Store operation whenever possible: 1177 Add (2, 3, X) ==> is converted to: Store (5, X) 1178 X = 2 + 3 ==> is converted to: Store (5, X) 1179 1180Updated support for the SLIC table (Software Licensing Description Table) 1181in both the Data Table compiler and the disassembler. The SLIC table 1182support now conforms to "Microsoft Software Licensing Tables (SLIC and 1183MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 1184following the ACPI header is now defined to be "Proprietary Data", and as 1185such, can only be entered or displayed as a hex data block. 1186 1187Implemented full support for the MSDM table as described in the document 1188above. Note: The format of MSDM is similar to SLIC. Any MSDM data 1189following the ACPI header is defined to be "Proprietary Data", and can 1190only be entered or displayed as a hex data block. 1191 1192Implemented the -Pn option for the iASL Table Compiler (was only 1193implemented for the ASL compiler). This option disables the iASL 1194preprocessor. 1195 1196Disassembler: For disassembly of Data Tables, added a comment field 1197around the Ascii equivalent data that is emitted as part of the "Raw 1198Table Data" block. This prevents the iASL Preprocessor from possible 1199confusion if/when the table is compiled. 1200 1201Disassembler: Added an option (-df) to force the disassembler to assume 1202that the table being disassembled contains valid AML. This feature is 1203useful for disassembling AML files that contain ACPI signatures other 1204than DSDT or SSDT (such as OEMx or other signatures). 1205 1206Changes for the EFI version of the tools: 12071) Fixed a build error/issue 12082) Fixed a cast warning 1209 1210iASL: Fixed a path issue with the __FILE__ operator by making the 1211directory prefix optional within the internal SplitInputFilename 1212function. 1213 1214Debugger: Removed some unused global variables. 1215 1216Tests: Updated the makefile for proper generation of the AAPITS suite. 1217 1218 1219---------------------------------------- 122004 February 2015. Summary of changes for version 20150204: 1221 1222ACPICA kernel-resident subsystem: 1223 1224Updated all ACPICA copyrights and signons to 2014. Added the 2014 1225copyright to all module headers and signons, including the standard Linux 1226header. This affects virtually every file in the ACPICA core subsystem, 1227iASL compiler, all ACPICA utilities, and the test suites. 1228 1229Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 1230A raw gpe handling mechanism was created to allow better handling of GPE 1231storms that aren't easily managed by the normal handler. The raw handler 1232allows disabling/renabling of the the GPE so that interrupt storms can be 1233avoided in cases where events cannot be timely serviced. In this 1234scenario, handlers should use the AcpiSetGpe() API to disable/enable the 1235GPE. This API will leave the reference counts undisturbed, thereby 1236preventing unintentional clearing of the GPE when the intent in only to 1237temporarily disable it. Raw handlers allow enabling and disabling of a 1238GPE by removing GPE register locking. As such, raw handlers much provide 1239their own locks while using GPE API's to protect access to GPE data 1240structures. 1241Lv Zheng 1242 1243Events: Always modify GPE registers under the GPE lock. 1244Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 1245values. Reported as bug by joe.liu@apple.com. 1246 1247Unix makefiles: Separate option to disable optimizations and 1248_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 1249NOOPT disable option and creates a separate flag (NOFORTIFY) for this 1250purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 1251errors when building ACPICA. This allows disabling the option without 1252also having to disable optimazations. 1253David Box 1254 1255 Current Release: 1256 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1257 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 1258 1259-- 1260-------------------------------------- 126107 November 2014. Summary of changes for version 20141107: 1262 1263This release is available at https://acpica.org/downloads 1264 1265This release introduces and implements language extensions to ASL that 1266provide support for symbolic ("C-style") operators and expressions. These 1267language extensions are known collectively as ASL+. 1268 1269 12701) iASL Compiler/Disassembler and Tools: 1271 1272Disassembler: Fixed a problem with disassembly of the UartSerialBus 1273macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 1274Box. 1275 1276Disassembler: Fixed the Unicode macro support to add escape sequences. 1277All non-printable ASCII values are emitted as escape sequences, as well 1278as the standard escapes for quote and backslash. Ensures that the 1279disassembled macro can be correctly recompiled. 1280 1281iASL: Added Printf/Fprintf macros for formatted output. These macros are 1282translated to existing AML Concatenate and Store operations. Printf 1283writes to the ASL Debug object. Fprintf allows the specification of an 1284ASL name as the target. Only a single format specifier is required, %o, 1285since the AML interpreter dynamically converts objects to the required 1286type. David E. Box. 1287 1288 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1289 (Concatenate (Concatenate (Concatenate ("", Arg0), 1290 ": Unexpected value for "), Arg1), ", "), Arg2), 1291 " at line "), Arg3), Debug) 1292 1293 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 1294 Arg0, Arg1, Arg2, Arg3) 1295 1296 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1297 ("", Arg1), ": "), Arg0), " Successful"), STR1) 1298 1299 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 1300 1301iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 1302ASL parse tree before the AML code is generated. This allows blocks of 1303ASL code to be removed in order to help locate and identify problem 1304devices and/or code. David E. Box. 1305 1306AcpiExec: Added support (-fi) for an optional namespace object 1307initialization file. This file specifies initial values for namespace 1308objects as necessary for debugging and testing different ASL code paths 1309that may be taken as a result of BIOS options. 1310 1311 13122) Overview of symbolic operator support for ASL (ASL+) 1313------------------------------------------------------- 1314 1315As an extension to the ASL language, iASL implements support for symbolic 1316(C-style) operators for math and logical expressions. This can greatly 1317simplify ASL code as well as improve both readability and 1318maintainability. These language extensions can exist concurrently with 1319all legacy ASL code and expressions. 1320 1321The symbolic extensions are 100% compatible with existing AML 1322interpreters, since no new AML opcodes are created. To implement the 1323extensions, the iASL compiler transforms the symbolic expressions into 1324the legacy ASL/AML equivalents at compile time. 1325 1326Full symbolic expressions are supported, along with the standard C 1327precedence and associativity rules. 1328 1329Full disassembler support for the symbolic expressions is provided, and 1330creates an automatic migration path for existing ASL code to ASL+ code 1331via the disassembly process. By default, the disassembler now emits ASL+ 1332code with symbolic expressions. An option (-dl) is provided to force the 1333disassembler to emit legacy ASL code if desired. 1334 1335Below is the complete list of the currently supported symbolic operators 1336with examples. See the iASL User Guide for additional information. 1337 1338 1339ASL+ Syntax Legacy ASL Equivalent 1340----------- --------------------- 1341 1342 // Math operators 1343 1344Z = X + Y Add (X, Y, Z) 1345Z = X - Y Subtract (X, Y, Z) 1346Z = X * Y Multiply (X, Y, Z) 1347Z = X / Y Divide (X, Y, , Z) 1348Z = X % Y Mod (X, Y, Z) 1349Z = X << Y ShiftLeft (X, Y, Z) 1350Z = X >> Y ShiftRight (X, Y, Z) 1351Z = X & Y And (X, Y, Z) 1352Z = X | Y Or (X, Y, Z) 1353Z = X ^ Y Xor (X, Y, Z) 1354Z = ~X Not (X, Z) 1355X++ Increment (X) 1356X-- Decrement (X) 1357 1358 // Logical operators 1359 1360(X == Y) LEqual (X, Y) 1361(X != Y) LNotEqual (X, Y) 1362(X < Y) LLess (X, Y) 1363(X > Y) LGreater (X, Y) 1364(X <= Y) LLessEqual (X, Y) 1365(X >= Y) LGreaterEqual (X, Y) 1366(X && Y) LAnd (X, Y) 1367(X || Y) LOr (X, Y) 1368(!X) LNot (X) 1369 1370 // Assignment and compound assignment operations 1371 1372X = Y Store (Y, X) 1373X += Y Add (X, Y, X) 1374X -= Y Subtract (X, Y, X) 1375X *= Y Multiply (X, Y, X) 1376X /= Y Divide (X, Y, , X) 1377X %= Y Mod (X, Y, X) 1378X <<= Y ShiftLeft (X, Y, X) 1379X >>= Y ShiftRight (X, Y, X) 1380X &= Y And (X, Y, X) 1381X |= Y Or (X, Y, X) 1382X ^= Y Xor (X, Y, X) 1383 1384 13853) ASL+ Examples: 1386----------------- 1387 1388Legacy ASL: 1389 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 1390 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 13910x03FB), 1392 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 1393 { 1394 And (MEMB, 0xFFFFFFF0, SRMB) 1395 Store (MEMB, Local2) 1396 Store (PDBM, Local1) 1397 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 1398 Store (SRMB, MEMB) 1399 Or (PDBM, 0x02, PDBM) 1400 } 1401 1402ASL+ version: 1403 If (((R510 & 0x03FB) == 0x02E0) || 1404 ((R520 & 0x03FB) == 0x02E0) || 1405 ((R530 & 0x03FB) == 0x02E0) || 1406 ((R540 & 0x03FB) == 0x02E0)) 1407 { 1408 SRMB = (MEMB & 0xFFFFFFF0) 1409 Local2 = MEMB 1410 Local1 = PDBM 1411 PDBM &= 0xFFFFFFFFFFFFFFF9 1412 MEMB = SRMB 1413 PDBM |= 0x02 1414 } 1415 1416Legacy ASL: 1417 Store (0x1234, Local1) 1418 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 1419 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 1420 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 1421 Store (Index (PKG1, 0x03), Local6) 1422 Store (Add (Local3, Local2), Debug) 1423 Add (Local1, 0x0F, Local2) 1424 Add (Local1, Multiply (Local2, Local3), Local2) 1425 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 1426 1427ASL+ version: 1428 Local1 = 0x1234 1429 Local3 = (((Local1 + TEST) + 0x20) * Local2) 1430 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 1431 Local3 = (Local1 + (TEST + (0x20 * Local2))) 1432 Local6 = Index (PKG1, 0x03) 1433 Debug = (Local3 + Local2) 1434 Local2 = (Local1 + 0x0F) 1435 Local2 = (Local1 + (Local2 * Local3)) 1436 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 1437 1438 1439---------------------------------------- 144026 September 2014. Summary of changes for version 20140926: 1441 14421) ACPICA kernel-resident subsystem: 1443 1444Updated the GPIO operation region handler interface (GeneralPurposeIo). 1445In order to support GPIO Connection objects with multiple pins, along 1446with the related Field objects, the following changes to the interface 1447have been made: The Address is now defined to be the offset in bits of 1448the field unit from the previous invocation of a Connection. It can be 1449viewed as a "Pin Number Index" into the connection resource descriptor. 1450The BitWidth is the exact bit width of the field. It is usually one bit, 1451but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 1452additional information and examples. 1453 1454GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 1455corresponding _Lxx/_Exx methods are disabled (they may have been enabled 1456by the firmware), so that they cannot fire until they are enabled via 1457AcpiUpdateAllGpes. Rafael J. Wysocki. 1458 1459Added a new return flag for the Event/GPE status interfaces -- 1460AcpiGetEventStatus and AcpiGetGpeStatus. The new 1461ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 1462GPE currently has a handler associated with it, and can thus actually 1463affect the system. Lv Zheng. 1464 1465Example Code and Data Size: These are the sizes for the OS-independent 1466acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1467debug version of the code includes the debug output trace mechanism and 1468has a much larger code and data size. 1469 1470 Current Release: 1471 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1472 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1473 Previous Release: 1474 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1475 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1476 14772) iASL Compiler/Disassembler and Tools: 1478 1479iASL: Fixed a memory allocation/free regression introduced in 20140828 1480that could cause the compiler to crash. This was introduced inadvertently 1481during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 14821113. 1483 1484iASL: Removed two error messages that have been found to create false 1485positives, until they can be fixed and fully validated (ACPICA BZ 1112): 14861) Illegal forward reference within a method 14872) Illegal reference across two methods 1488 1489iASL: Implemented a new option (-lm) to create a hardware mapping file 1490that summarizes all GPIO, I2C, SPI, and UART connections. This option 1491works for both the compiler and disassembler. See the iASL compiler user 1492guide for additional information and examples (section 6.4.6). 1493 1494AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 1495version 2. This corrects the AE_BAD_HEADER exception seen on systems with 1496a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 1497 1498AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 1499unless STDIN is actually a terminal. Assists with batch-mode processing. 1500ACPICA BZ 1114. 1501 1502Disassembler/AcpiHelp: Added another large group of recognized _HID 1503values. 1504 1505 1506---------------------------------------- 150728 August 2014. Summary of changes for version 20140828: 1508 15091) ACPICA kernel-resident subsystem: 1510 1511Fixed a problem related to the internal use of the Timer() operator where 1512a 64-bit divide could cause an attempted link to a double-precision math 1513library. This divide is not actually necessary, so the code was 1514restructured to eliminate it. Lv Zheng. 1515 1516ACPI 5.1: Added support for the runtime validation of the _DSD package 1517(similar to the iASL support). 1518 1519ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 1520SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 1521 1522Example Code and Data Size: These are the sizes for the OS-independent 1523acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1524debug version of the code includes the debug output trace mechanism and 1525has a much larger code and data size. 1526 1527 Current Release: 1528 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1529 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1530 Previous Release: 1531 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 1532 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1533 15342) iASL Compiler/Disassembler and Tools: 1535 1536AcpiExec: Fixed a problem on unix systems where the original terminal 1537state was not always properly restored upon exit. Seen when using the -v 1538option. ACPICA BZ 1104. 1539 1540iASL: Fixed a problem with the validation of the ranges/length within the 1541Memory24 resource descriptor. There was a boundary condition when the 1542range was equal to the (length -1) caused by the fact that these values 1543are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 1544 1545Disassembler: Fixed a problem with the GpioInt descriptor interrupt 1546polarity 1547flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 1548is 1549now supported properly. 1550 1551ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 1552in the disassembler, data table compiler, and table template generator. 1553 1554iASL: Added a requirement for Device() objects that one of either a _HID 1555or _ADR must exist within the scope of a Device, as per the ACPI 1556specification. Remove a similar requirement that was incorrectly in place 1557for the _DSD object. 1558 1559iASL: Added error detection for illegal named references within control 1560methods that would cause runtime failures. Now trapped as errors are: 1) 1561References to objects within a non-parent control method. 2) Forward 1562references (within a method) -- for control methods, AML interpreters use 1563a one-pass parse of control methods. ACPICA BZ 1008. 1564 1565iASL: Added error checking for dependencies related to the _PSx power 1566methods. ACPICA BZ 1029. 15671) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 1568_PS3. 15692) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 1570scope. 1571 1572iASL and table compiler: Cleanup miscellaneous memory leaks by fully 1573deploying the existing object and string caches and adding new caches for 1574the table compiler. 1575 1576iASL: Split the huge parser source file into multiple subfiles to improve 1577manageability. Generation now requires the M4 macro preprocessor, which 1578is part of the Bison distribution on both unix and windows platforms. 1579 1580AcpiSrc: Fixed and removed all extraneous warnings generated during 1581entire ACPICA source code scan and/or conversion. 1582 1583 1584---------------------------------------- 1585 158624 July 2014. Summary of changes for version 20140724: 1587 1588The ACPI 5.1 specification has been released and is available at: 1589http://uefi.org/specs/access 1590 1591 15920) ACPI 5.1 support in ACPICA: 1593 1594ACPI 5.1 is fully supported in ACPICA as of this release. 1595 1596New predefined names. Support includes iASL and runtime ACPICA 1597validation. 1598 _CCA (Cache Coherency Attribute). 1599 _DSD (Device-Specific Data). David Box. 1600 1601Modifications to existing ACPI tables. Support includes headers, iASL 1602Data Table compiler, disassembler, and the template generator. 1603 FADT - New fields and flags. Graeme Gregory. 1604 GTDT - One new subtable and new fields. Tomasz Nowicki. 1605 MADT - Two new subtables. Tomasz Nowicki. 1606 PCCT - One new subtable. 1607 1608Miscellaneous. 1609 New notification type for System Resource Affinity change events. 1610 1611 16121) ACPICA kernel-resident subsystem: 1613 1614Fixed a regression introduced in 20140627 where a fault can happen during 1615the deletion of Alias AML namespace objects. The problem affected both 1616the core ACPICA and the ACPICA tools including iASL and AcpiExec. 1617 1618Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 1619simple mechanism to enable wake GPEs that have no associated handler or 1620control method. Rafael Wysocki. 1621 1622Updated the AcpiEnableGpe interface to disallow the enable if there is no 1623handler or control method associated with the particular GPE. This will 1624help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 1625 1626Updated GPE handling and dispatch by disabling the GPE before clearing 1627the status bit for edge-triggered GPEs. Lv Zheng. 1628 1629Added Timer() support to the AML Debug object. The current timer value is 1630now displayed with each invocation of (Store to) the debug object to 1631enable simple generation of execution times for AML code (method 1632execution for example.) ACPICA BZ 1093. 1633 1634Example Code and Data Size: These are the sizes for the OS-independent 1635acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1636debug version of the code includes the debug output trace mechanism and 1637has a much larger code and data size. 1638 1639 Current Release: 1640 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 1641 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1642 Previous Release: 1643 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 1644 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 1645 1646 16472) iASL Compiler/Disassembler and Tools: 1648 1649Fixed an issue with the recently added local printf implementation, 1650concerning width/precision specifiers that could cause incorrect output. 1651Lv Zheng. ACPICA BZ 1094. 1652 1653Disassembler: Added support to detect buffers that contain UUIDs and 1654disassemble them to an invocation of the ToUUID operator. Also emit 1655commented descriptions of known ACPI-related UUIDs. 1656 1657AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 1658-u. Adds three new files. 1659 1660iASL: Update table compiler and disassembler for DMAR table changes that 1661were introduced in September 2013. With assistance by David Woodhouse. 1662 1663---------------------------------------- 166427 June 2014. Summary of changes for version 20140627: 1665 16661) ACPICA kernel-resident subsystem: 1667 1668Formatted Output: Implemented local versions of standard formatted output 1669utilities such as printf, etc. Over time, it has been discovered that 1670there are in fact many portability issues with printf, and the addition 1671of this feature will fix/prevent these issues once and for all. Some 1672known issues are summarized below: 1673 16741) Output of 64-bit values is not portable. For example, UINT64 is %ull 1675for the Linux kernel and is %uI64 for some MSVC versions. 16762) Invoking printf consistently in a manner that is portable across both 167732-bit and 64-bit platforms is difficult at best in many situations. 16783) The output format for pointers varies from system to system (leading 1679zeros especially), and leads to inconsistent output from ACPICA across 1680platforms. 16814) Certain platform-specific printf formats may conflict with ACPICA use. 16825) If there is no local C library available, ACPICA now has local support 1683for printf. 1684 1685-- To address these printf issues in a complete manner, ACPICA now 1686directly implements a small subset of printf format specifiers, only 1687those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 1688 1689Implemented support for ACPICA generation within the EFI environment. 1690Initially, the AcpiDump utility is supported in the UEFI shell 1691environment. Lv Zheng. 1692 1693Added a new external interface, AcpiLogError, to improve ACPICA 1694portability. This allows the host to redirect error messages from the 1695ACPICA utilities. Lv Zheng. 1696 1697Added and deployed new OSL file I/O interfaces to improve ACPICA 1698portability: 1699 AcpiOsOpenFile 1700 AcpiOsCloseFile 1701 AcpiOsReadFile 1702 AcpiOsWriteFile 1703 AcpiOsGetFileOffset 1704 AcpiOsSetFileOffset 1705There are C library implementations of these functions in the new file 1706service_layers/oslibcfs.c -- however, the functions can be implemented by 1707the local host in any way necessary. Lv Zheng. 1708 1709Implemented a mechanism to disable/enable ACPI table checksum validation 1710at runtime. This can be useful when loading tables very early during OS 1711initialization when it may not be possible to map the entire table in 1712order to compute the checksum. Lv Zheng. 1713 1714Fixed a buffer allocation issue for the Generic Serial Bus support. 1715Originally, a fixed buffer length was used. This change allows for 1716variable-length buffers based upon the protocol indicated by the field 1717access attributes. Reported by Lan Tianyu. Lv Zheng. 1718 1719Fixed a problem where an object detached from a namespace node was not 1720properly terminated/cleared and could cause a circular list problem if 1721reattached. ACPICA BZ 1063. David Box. 1722 1723Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 1724 1725Fixed a possible memory leak in an error return path within the function 1726AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 1727 1728Example Code and Data Size: These are the sizes for the OS-independent 1729acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1730debug version of the code includes the debug output trace mechanism and 1731has a much larger code and data size. 1732 1733 Current Release: 1734 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 1735 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 1736 Previous Release: 1737 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 1738 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 1739 1740 17412) iASL Compiler/Disassembler and Tools: 1742 1743Disassembler: Add dump of ASCII equivalent text within a comment at the 1744end of each line of the output for the Buffer() ASL operator. 1745 1746AcpiDump: Miscellaneous changes: 1747 Fixed repetitive table dump in -n mode. 1748 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 1749the ACPI 2.0 GUID fails. 1750 1751iASL: Fixed a problem where the compiler could fault if incorrectly given 1752an acpidump output file as input. ACPICA BZ 1088. David Box. 1753 1754AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 1755they are invoked without any arguments. 1756 1757Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 17581086. Colin Ian King. 1759 1760Disassembler: Cleaned up a block of code that extracts a parent Op 1761object. Added a comment that explains that the parent is guaranteed to be 1762valid in this case. ACPICA BZ 1069. 1763 1764 1765---------------------------------------- 176624 April 2014. Summary of changes for version 20140424: 1767 17681) ACPICA kernel-resident subsystem: 1769 1770Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 1771Some of these tables are known to contain a trailing NULL entry. Lv 1772Zheng. 1773 1774Removed an extraneous error message for the case where there are a large 1775number of system GPEs (> 124). This was the "32-bit FADT register is too 1776long to convert to GAS struct" message, which is irrelevant for GPEs 1777since the GPEx_BLK_LEN fields of the FADT are always used instead of the 1778(limited capacity) GAS bit length. Also, several changes to ensure proper 1779support for GPE numbers > 255, where some "GPE number" fields were 8-bits 1780internally. 1781 1782Implemented and deployed additional configuration support for the public 1783ACPICA external interfaces. Entire classes of interfaces can now be 1784easily modified or configured out, replaced by stubbed inline functions 1785by default. Lv Zheng. 1786 1787Moved all public ACPICA runtime configuration globals to the public 1788ACPICA external interface file for convenience. Also, removed some 1789obsolete/unused globals. See the file acpixf.h. Lv Zheng. 1790 1791Documentation: Added a new section to the ACPICA reference describing the 1792maximum number of GPEs that can be supported by the FADT-defined GPEs in 1793block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 1794reference. 1795 1796Example Code and Data Size: These are the sizes for the OS-independent 1797acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1798debug version of the code includes the debug output trace mechanism and 1799has a much larger code and data size. 1800 1801 Current Release: 1802 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 1803 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 1804 Previous Release: 1805 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1806 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1807 1808 18092) iASL Compiler/Disassembler and Tools: 1810 1811iASL and disassembler: Add full support for the LPIT table (Low Power 1812Idle Table). Includes support in the disassembler, data table compiler, 1813and template generator. 1814 1815AcpiDump utility: 18161) Add option to force the use of the RSDT (over the XSDT). 18172) Improve validation of the RSDP signature (use 8 chars instead of 4). 1818 1819iASL: Add check for predefined packages that are too large. For 1820predefined names that contain subpackages, check if each subpackage is 1821too large. (Check for too small already exists.) 1822 1823Debugger: Updated the GPE command (which simulates a GPE by executing the 1824GPE code paths in ACPICA). The GPE device is now optional, and defaults 1825to the GPE 0/1 FADT-defined blocks. 1826 1827Unix application OSL: Update line-editing support. Add additional error 1828checking and take care not to reset terminal attributes on exit if they 1829were never set. This should help guarantee that the terminal is always 1830left in the previous state on program exit. 1831 1832 1833---------------------------------------- 183425 March 2014. Summary of changes for version 20140325: 1835 18361) ACPICA kernel-resident subsystem: 1837 1838Updated the auto-serialize feature for control methods. This feature 1839automatically serializes all methods that create named objects in order 1840to prevent runtime errors. The update adds support to ignore the 1841currently executing AML SyncLevel when invoking such a method, in order 1842to prevent disruption of any existing SyncLevel priorities that may exist 1843in the AML code. Although the use of SyncLevels is relatively rare, this 1844change fixes a regression where an AE_AML_MUTEX_ORDER exception can 1845appear on some machines starting with the 20140214 release. 1846 1847Added a new external interface to allow the host to install ACPI tables 1848very early, before the namespace is even created. AcpiInstallTable gives 1849the host additional flexibility for ACPI table management. Tables can be 1850installed directly by the host as if they had originally appeared in the 1851XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 1852(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 1853with additional internal restructuring and cleanup. See the ACPICA 1854Reference for interface details. Lv Zheng. 1855 1856Added validation of the checksum for all incoming dynamically loaded 1857tables (via external interfaces or via AML Load/LoadTable operators). Lv 1858Zheng. 1859 1860Updated the use of the AcpiOsWaitEventsComplete interface during Notify 1861and GPE handler removal. Restructured calls to eliminate possible race 1862conditions. Lv Zheng. 1863 1864Added a warning for the use/execution of the ASL/AML Unload (table) 1865operator. This will help detect and identify machines that use this 1866operator if and when it is ever used. This operator has never been seen 1867in the field and the usage model and possible side-effects of the drastic 1868runtime action of a full table removal are unknown. 1869 1870Reverted the use of #pragma push/pop which was introduced in the 20140214 1871release. It appears that push and pop are not implemented by enough 1872compilers to make the use of this feature feasible for ACPICA at this 1873time. However, these operators may be deployed in a future ACPICA 1874release. 1875 1876Added the missing EXPORT_SYMBOL macros for the install and remove SCI 1877handler interfaces. 1878 1879Source code generation: 18801) Disabled the use of the "strchr" macro for the gcc-specific 1881generation. For some versions of gcc, this macro can periodically expose 1882a compiler bug which in turn causes compile-time error(s). 18832) Added support for PPC64 compilation. Colin Ian King. 1884 1885Example Code and Data Size: These are the sizes for the OS-independent 1886acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1887debug version of the code includes the debug output trace mechanism and 1888has a much larger code and data size. 1889 1890 Current Release: 1891 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1892 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1893 Previous Release: 1894 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1895 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1896 1897 18982) iASL Compiler/Disassembler and Tools: 1899 1900Disassembler: Added several new features to improve the readability of 1901the resulting ASL code. Extra information is emitted within comment 1902fields in the ASL code: 19031) Known _HID/_CID values are decoded to descriptive text. 19042) Standard values for the Notify() operator are decoded to descriptive 1905text. 19063) Target operands are expanded to full pathnames (in a comment) when 1907possible. 1908 1909Disassembler: Miscellaneous updates for extern() handling: 19101) Abort compiler if file specified by -fe option does not exist. 19112) Silence unnecessary warnings about argument count mismatches. 19123) Update warning messages concerning unresolved method externals. 19134) Emit "UnknownObj" keyword for externals whose type cannot be 1914determined. 1915 1916AcpiHelp utility: 19171) Added the -a option to display both the ASL syntax and the AML 1918encoding for an input ASL operator. This effectively displays all known 1919information about an ASL operator with one AcpiHelp invocation. 19202) Added substring match support (similar to a wildcard) for the -i 1921(_HID/PNP IDs) option. 1922 1923iASL/Disassembler: Since this tool does not yet support execution on big- 1924endian machines, added detection of endianness and an error message if 1925execution is attempted on big-endian. Support for big-endian within iASL 1926is a feature that is on the ACPICA to-be-done list. 1927 1928AcpiBin utility: 19291) Remove option to extract binary files from an acpidump; this function 1930is made obsolete by the AcpiXtract utility. 19312) General cleanup of open files and allocated buffers. 1932 1933 1934---------------------------------------- 193514 February 2014. Summary of changes for version 20140214: 1936 19371) ACPICA kernel-resident subsystem: 1938 1939Implemented a new mechanism to proactively prevent problems with ill- 1940behaved reentrant control methods that create named ACPI objects. This 1941behavior is illegal as per the ACPI specification, but is nonetheless 1942frequently seen in the field. Previously, this could lead to an 1943AE_ALREADY_EXISTS exception if the method was actually entered by more 1944than one thread. This new mechanism detects such methods at table load 1945time and marks them "serialized" to prevent reentrancy. A new global 1946option, AcpiGbl_AutoSerializeMethods, has been added to disable this 1947feature if desired. This mechanism and global option obsoletes and 1948supersedes the previous AcpiGbl_SerializeAllMethods option. 1949 1950Added the "Windows 2013" string to the _OSI support. ACPICA will now 1951respond TRUE to _OSI queries with this string. It is the stated policy of 1952ACPICA to add new strings to the _OSI support as soon as possible after 1953they are defined. See the full ACPICA _OSI policy which has been added to 1954the utilities/utosi.c file. 1955 1956Hardened/updated the _PRT return value auto-repair code: 19571) Do not abort the repair on a single subpackage failure, continue to 1958check all subpackages. 19592) Add check for the minimum subpackage length (4). 19603) Properly handle extraneous NULL package elements. 1961 1962Added support to avoid the possibility of infinite loops when traversing 1963object linked lists. Never allow an infinite loop, even in the face of 1964corrupted object lists. 1965 1966ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 1967pack(pop) directives to ensure that the ACPICA headers are independent of 1968compiler settings or other host headers. 1969 1970Example Code and Data Size: These are the sizes for the OS-independent 1971acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1972debug version of the code includes the debug output trace mechanism and 1973has a much larger code and data size. 1974 1975 Current Release: 1976 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1977 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1978 Previous Release: 1979 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 1980 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 1981 1982 19832) iASL Compiler/Disassembler and Tools: 1984 1985iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 1986first reserved field was incorrectly forced to have a value of zero. This 1987change correctly forces the field to have a value of one. ACPICA BZ 1081. 1988 1989Debugger: Added missing support for the "Extra" and "Data" subobjects 1990when displaying object data. 1991 1992Debugger: Added support to display entire object linked lists when 1993displaying object data. 1994 1995iASL: Removed the obsolete -g option to obtain ACPI tables from the 1996Windows registry. This feature has been superseded by the acpidump 1997utility. 1998 1999 2000---------------------------------------- 200114 January 2014. Summary of changes for version 20140114: 2002 20031) ACPICA kernel-resident subsystem: 2004 2005Updated all ACPICA copyrights and signons to 2014. Added the 2014 2006copyright to all module headers and signons, including the standard Linux 2007header. This affects virtually every file in the ACPICA core subsystem, 2008iASL compiler, all ACPICA utilities, and the test suites. 2009 2010Improved parameter validation for AcpiInstallGpeBlock. Added the 2011following checks: 20121) The incoming device handle refers to type ACPI_TYPE_DEVICE. 20132) There is not already a GPE block attached to the device. 2014Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 2015device. 2016 2017Correctly support "references" in the ACPI_OBJECT. This change fixes the 2018support to allow references (namespace nodes) to be passed as arguments 2019to control methods via the evaluate object interface. This is probably 2020most useful for testing purposes, however. 2021 2022Improved support for 32/64 bit physical addresses in printf()-like 2023output. This change improves the support for physical addresses in printf 2024debug statements and other output on both 32-bit and 64-bit hosts. It 2025consistently outputs the appropriate number of bytes for each host. The 2026%p specifier is unsatisfactory since it does not emit uniform output on 2027all hosts/clib implementations (on some, leading zeros are not supported, 2028leading to difficult-to-read output). 2029 2030Example Code and Data Size: These are the sizes for the OS-independent 2031acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2032debug version of the code includes the debug output trace mechanism and 2033has a much larger code and data size. 2034 2035 Current Release: 2036 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 2037 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2038 Previous Release: 2039 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 2040 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2041 2042 20432) iASL Compiler/Disassembler and Tools: 2044 2045iASL: Fix a possible fault when using the Connection() operator. Fixes a 2046problem if the parent Field definition for the Connection operator refers 2047to an operation region that does not exist. ACPICA BZ 1064. 2048 2049AcpiExec: Load of local test tables is now optional. The utility has the 2050capability to load some various tables to test features of ACPICA. 2051However, there are enough of them that the output of the utility became 2052confusing. With this change, only the required local tables are displayed 2053(RSDP, XSDT, etc.) along with the actual tables loaded via the command 2054line specification. This makes the default output simler and easier to 2055understand. The -el command line option restores the original behavior 2056for testing purposes. 2057 2058AcpiExec: Added support for overlapping operation regions. This change 2059expands the simulation of operation regions by supporting regions that 2060overlap within the given address space. Supports SystemMemory and 2061SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 2062 2063AcpiExec: Added region handler support for PCI_Config and EC spaces. This 2064allows AcpiExec to simulate these address spaces, similar to the current 2065support for SystemMemory and SystemIO. 2066 2067Debugger: Added new command to read/write/compare all namespace objects. 2068The command "test objects" will exercise the entire namespace by writing 2069new values to each data object, and ensuring that the write was 2070successful. The original value is then restored and verified. 2071 2072Debugger: Added the "test predefined" command. This change makes this 2073test public and puts it under the new "test" command. The test executes 2074each and every predefined name within the current namespace. 2075 2076 2077---------------------------------------- 207818 December 2013. Summary of changes for version 20131218: 2079 2080Global note: The ACPI 5.0A specification was released this month. There 2081are no changes needed for ACPICA since this release of ACPI is an 2082errata/clarification release. The specification is available at 2083acpi.info. 2084 2085 20861) ACPICA kernel-resident subsystem: 2087 2088Added validation of the XSDT root table if it is present. Some older 2089platforms contain an XSDT that is ill-formed or otherwise invalid (such 2090as containing some or all entries that are NULL pointers). This change 2091adds a new function to validate the XSDT before actually using it. If the 2092XSDT is found to be invalid, ACPICA will now automatically fall back to 2093using the RSDT instead. Original implementation by Zhao Yakui. Ported to 2094ACPICA and enhanced by Lv Zheng and Bob Moore. 2095 2096Added a runtime option to ignore the XSDT and force the use of the RSDT. 2097This change adds a runtime option that will force ACPICA to use the RSDT 2098instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 2099requires that an XSDT be used instead of the RSDT, the XSDT has been 2100found to be corrupt or ill-formed on some machines. Lv Zheng. 2101 2102Added a runtime option to favor 32-bit FADT register addresses over the 210364-bit addresses. This change adds an option to favor 32-bit FADT 2104addresses when there is a conflict between the 32-bit and 64-bit versions 2105of the same register. The default behavior is to use the 64-bit version 2106in accordance with the ACPI specification. This can now be overridden via 2107the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 2108 2109During the change above, the internal "Convert FADT" and "Verify FADT" 2110functions have been merged to simplify the code, making it easier to 2111understand and maintain. ACPICA BZ 933. 2112 2113Improve exception reporting and handling for GPE block installation. 2114Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 2115status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 2116 2117Added helper macros to extract bus/segment numbers from the HEST table. 2118This change adds two macros to extract the encoded bus and segment 2119numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 2120Betty Dall <betty.dall@hp.com> 2121 2122Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 2123by ACPICA. It is not a public macro, so it should have no effect on 2124existing OSV code. Lv Zheng. 2125 2126Example Code and Data Size: These are the sizes for the OS-independent 2127acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2128debug version of the code includes the debug output trace mechanism and 2129has a much larger code and data size. 2130 2131 Current Release: 2132 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 2133 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2134 Previous Release: 2135 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2136 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2137 2138 21392) iASL Compiler/Disassembler and Tools: 2140 2141Disassembler: Improved pathname support for emitted External() 2142statements. This change adds full pathname support for external names 2143that have been resolved internally by the inclusion of additional ACPI 2144tables (via the iASL -e option). Without this change, the disassembler 2145can emit multiple externals for the same object, or it become confused 2146when the Scope() operator is used on an external object. Overall, greatly 2147improves the ability to actually recompile the emitted ASL code when 2148objects a referenced across multiple ACPI tables. Reported by Michael 2149Tsirkin (mst@redhat.com). 2150 2151Tests/ASLTS: Updated functional control suite to execute with no errors. 2152David Box. Fixed several errors related to the testing of the interpreter 2153slack mode. Lv Zheng. 2154 2155iASL: Added support to detect names that are declared within a control 2156method, but are unused (these are temporary names that are only valid 2157during the time the method is executing). A remark is issued for these 2158cases. ACPICA BZ 1022. 2159 2160iASL: Added full support for the DBG2 table. Adds full disassembler, 2161table compiler, and template generator support for the DBG2 table (Debug 2162Port 2 table). 2163 2164iASL: Added full support for the PCCT table, update the table definition. 2165Updates the PCCT table definition in the actbl3.h header and adds table 2166compiler and template generator support. 2167 2168iASL: Added an option to emit only error messages (no warnings/remarks). 2169The -ve option will enable only error messages, warnings and remarks are 2170suppressed. This can simplify debugging when only the errors are 2171important, such as when an ACPI table is disassembled and there are many 2172warnings and remarks -- but only the actual errors are of real interest. 2173 2174Example ACPICA code (source/tools/examples): Updated the example code so 2175that it builds to an actual working program, not just example code. Added 2176ACPI tables and execution of an example control method in the DSDT. Added 2177makefile support for Unix generation. 2178 2179 2180---------------------------------------- 218115 November 2013. Summary of changes for version 20131115: 2182 2183This release is available at https://acpica.org/downloads 2184 2185 21861) ACPICA kernel-resident subsystem: 2187 2188Resource Manager: Fixed loop termination for the "get AML length" 2189function. The loop previously had an error termination on a NULL resource 2190pointer, which can never happen since the loop simply increments a valid 2191resource pointer. This fix changes the loop to terminate with an error on 2192an invalid end-of-buffer condition. The problem can be seen as an 2193infinite loop by callers to AcpiSetCurrentResources with an invalid or 2194corrupted resource descriptor, or a resource descriptor that is missing 2195an END_TAG descriptor. Reported by Dan Carpenter 2196<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 2197 2198Table unload and ACPICA termination: Delete all attached data objects 2199during namespace node deletion. This fix updates namespace node deletion 2200to delete the entire list of attached objects (attached via 2201AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 22021024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 2203 2204ACPICA termination: Added support to delete all objects attached to the 2205root namespace node. This fix deletes any and all objects that have been 2206attached to the root node via AcpiAttachData. Previously, none of these 2207objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 2208 2209Debug output: Do not emit the function nesting level for the in-kernel 2210build. The nesting level is really only useful during a single-thread 2211execution. Therefore, only enable this output for the AcpiExec utility. 2212Also, only emit the thread ID when executing under AcpiExec (Context 2213switches are still always detected and a message is emitted). ACPICA BZ 2214972. 2215 2216Example Code and Data Size: These are the sizes for the OS-independent 2217acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2218debug version of the code includes the debug output trace mechanism and 2219has a much larger code and data size. 2220 2221 Current Release: 2222 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2223 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2224 Previous Release: 2225 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2226 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2227 2228 22292) iASL Compiler/Disassembler and Tools: 2230 2231AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 2232correct portable POSIX header for terminal control functions. 2233 2234Disassembler: Fixed control method invocation issues related to the use 2235of the CondRefOf() operator. The problem is seen in the disassembly where 2236control method invocations may not be disassembled properly if the 2237control method name has been used previously as an argument to CondRefOf. 2238The solution is to not attempt to emit an external declaration for the 2239CondRefOf target (it is not necessary in the first place). This prevents 2240disassembler object type confusion. ACPICA BZ 988. 2241 2242Unix Makefiles: Added an option to disable compiler optimizations and the 2243_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 2244with optimizations (reportedly, gcc 4.4 for example). This change adds a 2245command line option for make (NOOPT) that disables all compiler 2246optimizations and the _FORTIFY_SOURCE compiler flag. The default 2247optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 22481034. Lv Zheng, Bob Moore. 2249 2250Tests/ASLTS: Added options to specify individual test cases and modes. 2251This allows testers running aslts.sh to optionally specify individual 2252test modes and test cases. Also added an option to disable the forced 2253generation of the ACPICA tools from source if desired. Lv Zheng. 2254 2255---------------------------------------- 225627 September 2013. Summary of changes for version 20130927: 2257 2258This release is available at https://acpica.org/downloads 2259 2260 22611) ACPICA kernel-resident subsystem: 2262 2263Fixed a problem with store operations to reference objects. This change 2264fixes a problem where a Store operation to an ArgX object that contained 2265a 2266reference to a field object did not complete the automatic dereference 2267and 2268then write to the actual field object. Instead, the object type of the 2269field object was inadvertently changed to match the type of the source 2270operand. The new behavior will actually write to the field object (buffer 2271field or field unit), thus matching the correct ACPI-defined behavior. 2272 2273Implemented support to allow the host to redefine individual OSL 2274prototypes. This change enables the host to redefine OSL prototypes found 2275in the acpiosxf.h file. This allows the host to implement OSL interfaces 2276with a macro or inlined function. Further, it allows the host to add any 2277additional required modifiers such as __iomem, __init, __exit, etc., as 2278necessary on a per-interface basis. Enables maximum flexibility for the 2279OSL interfaces. Lv Zheng. 2280 2281Hardcoded the access width for the FADT-defined reset register. The ACPI 2282specification requires the reset register width to be 8 bits. ACPICA now 2283hardcodes the width to 8 and ignores the FADT width value. This provides 2284compatibility with other ACPI implementations that have allowed BIOS code 2285with bad register width values to go unnoticed. Matthew Garett, Bob 2286Moore, 2287Lv Zheng. 2288 2289Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 2290used 2291in the OSL header (acpiosxf). The change modifies the position of this 2292macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 2293build issues if the OSL defines the implementation of the interface to be 2294an inline stub function. Lv Zheng. 2295 2296Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 2297initialization interfaces. This change adds a new macro for the main init 2298and terminate external interfaces in order to support hosts that require 2299additional or different processing for these functions. Changed from 2300ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 2301Zheng, Bob Moore. 2302 2303Cleaned up the memory allocation macros for configurability. In the 2304common 2305case, the ACPI_ALLOCATE and related macros now resolve directly to their 2306respective AcpiOs* OSL interfaces. Two options: 23071) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 2308default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 23092) For AcpiExec (and for debugging), the macros can optionally be 2310resolved 2311to the local ACPICA interfaces that track each allocation (local tracking 2312is used to immediately detect memory leaks). 2313Lv Zheng. 2314 2315Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 2316to predefine this macro to either TRUE or FALSE during the system build. 2317 2318Replaced __FUNCTION_ with __func__ in the gcc-specific header. 2319 2320Example Code and Data Size: These are the sizes for the OS-independent 2321acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2322debug version of the code includes the debug output trace mechanism and 2323has a much larger code and data size. 2324 2325 Current Release: 2326 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2327 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2328 Previous Release: 2329 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2330 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2331 2332 23332) iASL Compiler/Disassembler and Tools: 2334 2335iASL: Implemented wildcard support for the -e option. This simplifies use 2336when there are many SSDTs that must be included to resolve external 2337method 2338declarations. ACPICA BZ 1041. Example: 2339 iasl -e ssdt*.dat -d dsdt.dat 2340 2341AcpiExec: Add history/line-editing for Unix/Linux systems. This change 2342adds a portable module that implements full history and limited line 2343editing for Unix and Linux systems. It does not use readline() due to 2344portability issues. Instead it uses the POSIX termio interface to put the 2345terminal in raw input mode so that the various special keys can be 2346trapped 2347(such as up/down-arrow for history support and left/right-arrow for line 2348editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 2349 2350AcpiXtract: Add support to handle (ignore) "empty" lines containing only 2351one or more spaces. This provides compatible with early or different 2352versions of the AcpiDump utility. ACPICA BZ 1044. 2353 2354AcpiDump: Do not ignore tables that contain only an ACPI table header. 2355Apparently, some BIOSs create SSDTs that contain an ACPI table header but 2356no other data. This change adds support to dump these tables. Any tables 2357shorter than the length of an ACPI table header remain in error (an error 2358message is emitted). Reported by Yi Li. 2359 2360Debugger: Echo actual command along with the "unknown command" message. 2361 2362---------------------------------------- 236323 August 2013. Summary of changes for version 20130823: 2364 23651) ACPICA kernel-resident subsystem: 2366 2367Implemented support for host-installed System Control Interrupt (SCI) 2368handlers. Certain ACPI functionality requires the host to handle raw 2369SCIs. For example, the "SCI Doorbell" that is defined for memory power 2370state support requires the host device driver to handle SCIs to examine 2371if the doorbell has been activated. Multiple SCI handlers can be 2372installed to allow for future expansion. New external interfaces are 2373AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 2374details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 2375 2376Operation region support: Never locally free the handler "context" 2377pointer. This change removes some dangerous code that attempts to free 2378the handler context pointer in some (rare) circumstances. The owner of 2379the handler owns this pointer and the ACPICA code should never touch it. 2380Although not seen to be an issue in any kernel, it did show up as a 2381problem (fault) under AcpiExec. Also, set the internal storage field for 2382the context pointer to zero when the region is deactivated, simply for 2383sanity. David Box. ACPICA BZ 1039. 2384 2385AcpiRead: On error, do not modify the return value target location. If an 2386error happens in the middle of a split 32/32 64-bit I/O operation, do not 2387modify the target of the return value pointer. Makes the code consistent 2388with the rest of ACPICA. Bjorn Helgaas. 2389 2390Example Code and Data Size: These are the sizes for the OS-independent 2391acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2392debug version of the code includes the debug output trace mechanism and 2393has a much larger code and data size. 2394 2395 Current Release: 2396 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2397 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2398 Previous Release: 2399 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2400 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 2401 2402 24032) iASL Compiler/Disassembler and Tools: 2404 2405AcpiDump: Implemented several new features and fixed some problems: 24061) Added support to dump the RSDP, RSDT, and XSDT tables. 24072) Added support for multiple table instances (SSDT, UEFI). 24083) Added option to dump "customized" (overridden) tables (-c). 24094) Fixed a problem where some table filenames were improperly 2410constructed. 24115) Improved some error messages, removed some unnecessary messages. 2412 2413iASL: Implemented additional support for disassembly of ACPI tables that 2414contain invocations of external control methods. The -fe<file> option 2415allows the import of a file that specifies the external methods along 2416with the required number of arguments for each -- allowing for the 2417correct disassembly of the table. This is a workaround for a limitation 2418of AML code where the disassembler often cannot determine the number of 2419arguments required for an external control method and generates incorrect 2420ASL code. See the iASL reference for details. ACPICA BZ 1030. 2421 2422Debugger: Implemented a new command (paths) that displays the full 2423pathnames (namepaths) and object types of all objects in the namespace. 2424This is an alternative to the namespace command. 2425 2426Debugger: Implemented a new command (sci) that invokes the SCI dispatch 2427mechanism and any installed handlers. 2428 2429iASL: Fixed a possible segfault for "too many parent prefixes" condition. 2430This can occur if there are too many parent prefixes in a namepath (for 2431example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 2432 2433Application OSLs: Set the return value for the PCI read functions. These 2434functions simply return AE_OK, but should set the return value to zero 2435also. This change implements this. ACPICA BZ 1038. 2436 2437Debugger: Prevent possible command line buffer overflow. Increase the 2438size of a couple of the debugger line buffers, and ensure that overflow 2439cannot happen. ACPICA BZ 1037. 2440 2441iASL: Changed to abort immediately on serious errors during the parsing 2442phase. Due to the nature of ASL, there is no point in attempting to 2443compile these types of errors, and they typically end up causing a 2444cascade of hundreds of errors which obscure the original problem. 2445 2446---------------------------------------- 244725 July 2013. Summary of changes for version 20130725: 2448 24491) ACPICA kernel-resident subsystem: 2450 2451Fixed a problem with the DerefOf operator where references to FieldUnits 2452and BufferFields incorrectly returned the parent object, not the actual 2453value of the object. After this change, a dereference of a FieldUnit 2454reference results in a read operation on the field to get the value, and 2455likewise, the appropriate BufferField value is extracted from the target 2456buffer. 2457 2458Fixed a problem where the _WAK method could cause a fault under these 2459circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 2460method returned no value. The problem is rarely seen because most kernels 2461run ACPICA in slack mode. 2462 2463For the DerefOf operator, a fatal error now results if an attempt is made 2464to dereference a reference (created by the Index operator) to a NULL 2465package element. Provides compatibility with other ACPI implementations, 2466and this behavior will be added to a future version of the ACPI 2467specification. 2468 2469The ACPI Power Management Timer (defined in the FADT) is now optional. 2470This provides compatibility with other ACPI implementations and will 2471appear in the next version of the ACPI specification. If there is no PM 2472Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 2473zero in the FADT indicates no PM timer. 2474 2475Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 2476allows the host to globally enable/disable all vendor strings, all 2477feature strings, or both. Intended to be primarily used for debugging 2478purposes only. Lv Zheng. 2479 2480Expose the collected _OSI data to the host via a global variable. This 2481data tracks the highest level vendor ID that has been invoked by the BIOS 2482so that the host (and potentially ACPICA itself) can change behaviors 2483based upon the age of the BIOS. 2484 2485Example Code and Data Size: These are the sizes for the OS-independent 2486acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2487debug version of the code includes the debug output trace mechanism and 2488has a much larger code and data size. 2489 2490 Current Release: 2491 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2492 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2493 Previous Release: 2494 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2495 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2496 2497 24982) iASL Compiler/Disassembler and Tools: 2499 2500iASL: Created the following enhancements for the -so option (create 2501offset table): 25021)Add offsets for the last nameseg in each namepath for every supported 2503object type 25042)Add support for Processor, Device, Thermal Zone, and Scope objects 25053)Add the actual AML opcode for the parent object of every supported 2506object type 25074)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 2508 2509Disassembler: Emit all unresolved external symbols in a single block. 2510These are external references to control methods that could not be 2511resolved, and thus, the disassembler had to make a guess at the number of 2512arguments to parse. 2513 2514iASL: The argument to the -T option (create table template) is now 2515optional. If not specified, the default table is a DSDT, typically the 2516most common case. 2517 2518---------------------------------------- 251926 June 2013. Summary of changes for version 20130626: 2520 25211) ACPICA kernel-resident subsystem: 2522 2523Fixed an issue with runtime repair of the _CST object. Null or invalid 2524elements were not always removed properly. Lv Zheng. 2525 2526Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 2527FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 2528the maximum number of GPEs is 1016. Use of multiple GPE block devices 2529makes the system-wide number of GPEs essentially unlimited. 2530 2531Example Code and Data Size: These are the sizes for the OS-independent 2532acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2533debug version of the code includes the debug output trace mechanism and 2534has a much larger code and data size. 2535 2536 Current Release: 2537 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2538 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2539 Previous Release: 2540 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2541 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2542 2543 25442) iASL Compiler/Disassembler and Tools: 2545 2546Portable AcpiDump: Implemented full support for the Linux and FreeBSD 2547hosts. Now supports Linux, FreeBSD, and Windows. 2548 2549Disassembler: Added some missing types for the HEST and EINJ tables: "Set 2550Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 2551 2552iASL/Preprocessor: Implemented full support for nested 2553#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 2554 2555Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 2556max. The original purpose of this constraint was to limit the amount of 2557debug output. However, the string function in question (UtPrintString) is 2558now used for the disassembler also, where 256 bytes is insufficient. 2559Reported by RehabMan@GitHub. 2560 2561iASL/DataTables: Fixed some problems and issues with compilation of DMAR 2562tables. ACPICA BZ 999. Lv Zheng. 2563 2564iASL: Fixed a couple of error exit issues that could result in a "Could 2565not delete <file>" message during ASL compilation. 2566 2567AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 2568the actual signatures for these tables are "FACP" and "APIC", 2569respectively. 2570 2571AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 2572tables are allowed to have multiple instances. 2573 2574---------------------------------------- 257517 May 2013. Summary of changes for version 20130517: 2576 25771) ACPICA kernel-resident subsystem: 2578 2579Fixed a regression introduced in version 20130328 for _INI methods. This 2580change fixes a problem introduced in 20130328 where _INI methods are no 2581longer executed properly because of a memory block that was not 2582initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 2583<tomasz.nowicki@linaro.org>. 2584 2585Fixed a possible problem with the new extended sleep registers in the 2586ACPI 25875.0 FADT. Do not use these registers (even if populated) unless the HW- 2588reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 25891020. Lv Zheng. 2590 2591Implemented return value repair code for _CST predefined objects: Sort 2592the 2593list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 2594 2595Implemented a debug-only option to disable loading of SSDTs from the 2596RSDT/XSDT during ACPICA initialization. This can be useful for debugging 2597ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 2598acglobal.h - ACPICA BZ 1005. Lv Zheng. 2599 2600Fixed some issues in the ACPICA initialization and termination code: 2601Tomasz Nowicki <tomasz.nowicki@linaro.org> 26021) Clear events initialized flag upon event component termination. ACPICA 2603BZ 1013. 26042) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 26053) Delete global lock pending lock during termination. ACPICA BZ 1012. 26064) Clear debug buffer global on termination to prevent possible multiple 2607delete. ACPICA BZ 1010. 2608 2609Standardized all switch() blocks across the entire source base. After 2610many 2611years, different formatting for switch() had crept in. This change makes 2612the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 2613 2614Split some files to enhance ACPICA modularity and configurability: 26151) Split buffer dump routines into utilities/utbuffer.c 26162) Split internal error message routines into utilities/uterror.c 26173) Split table print utilities into tables/tbprint.c 26184) Split iASL command-line option processing into asloptions.c 2619 2620Makefile enhancements: 26211) Support for all new files above. 26222) Abort make on errors from any subcomponent. Chao Guan. 26233) Add build support for Apple Mac OS X. Liang Qi. 2624 2625Example Code and Data Size: These are the sizes for the OS-independent 2626acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2627debug version of the code includes the debug output trace mechanism and 2628has a much larger code and data size. 2629 2630 Current Release: 2631 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2632 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2633 Previous Release: 2634 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 2635 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 2636 2637 26382) iASL Compiler/Disassembler and Tools: 2639 2640New utility: Implemented an easily portable version of the acpidump 2641utility to extract ACPI tables from the system (or a file) in an ASCII 2642hex 2643dump format. The top-level code implements the various command line 2644options, file I/O, and table dump routines. To port to a new host, only 2645three functions need to be implemented to get tables -- since this 2646functionality is OS-dependent. See the tools/acpidump/apmain.c module and 2647the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 26481) The Windows version obtains the ACPI tables from the Registry. 26492) The Linux version is under development. 26503) Other hosts - If an OS-dependent module is submitted, it will be 2651distributed with ACPICA. 2652 2653iASL: Fixed a regression for -D preprocessor option (define symbol). A 2654restructuring/change to the initialization sequence caused this option to 2655no longer work properly. 2656 2657iASL: Implemented a mechanism to disable specific warnings and remarks. 2658Adds a new command line option, "-vw <messageid> as well as "#pragma 2659disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 2660 2661iASL: Fix for too-strict package object validation. The package object 2662validation for return values from the predefined names is a bit too 2663strict, it does not allow names references within the package (which will 2664be resolved at runtime.) These types of references cannot be validated at 2665compile time. This change ignores named references within package objects 2666for names that return or define static packages. 2667 2668Debugger: Fixed the 80-character command line limitation for the History 2669command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 2670 2671iASL: Added control method and package support for the -so option 2672(generates AML offset table for BIOS support.) 2673 2674iASL: issue a remark if a non-serialized method creates named objects. If 2675a thread blocks within the method for any reason, and another thread 2676enters the method, the method will fail because an attempt will be made 2677to 2678create the same (named) object twice. In this case, issue a remark that 2679the method should be marked serialized. NOTE: may become a warning later. 2680ACPICA BZ 909. 2681 2682---------------------------------------- 268318 April 2013. Summary of changes for version 20130418: 2684 26851) ACPICA kernel-resident subsystem: 2686 2687Fixed a possible buffer overrun during some rare but specific field unit 2688read operations. This overrun can only happen if the DSDT version is 1 -- 2689meaning that all AML integers are 32 bits -- and the field length is 2690between 33 and 55 bits long. During the read, an internal buffer object 2691is 2692created for the field unit because the field is larger than an integer 2693(32 2694bits). However, in this case, the buffer will be incorrectly written 2695beyond the end because the buffer length is less than the internal 2696minimum 2697of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 2698long, but a full 8 bytes will be written. 2699 2700Updated the Embedded Controller "orphan" _REG method support. This refers 2701to _REG methods under the EC device that have no corresponding operation 2702region. This is allowed by the ACPI specification. This update removes a 2703dependency on the existence an ECDT table. It will execute an orphan _REG 2704method as long as the operation region handler for the EC is installed at 2705the EC device node and not the namespace root. Rui Zhang (original 2706update), Bob Moore (update/integrate). 2707 2708Implemented run-time argument typechecking for all predefined ACPI names 2709(_STA, _BIF, etc.) This change performs object typechecking on all 2710incoming arguments for all predefined names executed via 2711AcpiEvaluateObject. This ensures that ACPI-related device drivers are 2712passing correct object types as well as the correct number of arguments 2713(therefore identifying any issues immediately). Also, the ASL/namespace 2714definition of the predefined name is checked against the ACPI 2715specification for the proper argument count. Adds one new file, 2716nsarguments.c 2717 2718Changed an exception code for the ASL UnLoad() operator. Changed the 2719exception code for the case where the input DdbHandle is invalid, from 2720AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 2721 2722Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 2723global makefile. The use of this flag causes compiler errors on earlier 2724versions of GCC, so it has been removed for compatibility. 2725 2726Miscellaneous cleanup: 27271) Removed some unused/obsolete macros 27282) Fixed a possible memory leak in the _OSI support 27293) Removed an unused variable in the predefined name support 27304) Windows OSL: remove obsolete reference to a memory list field 2731 2732Example Code and Data Size: These are the sizes for the OS-independent 2733acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2734debug version of the code includes the debug output trace mechanism and 2735has a much larger code and data size. 2736 2737 Current Release: 2738 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 2739 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 2740 Previous Release: 2741 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 2742 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 2743 2744 27452) iASL Compiler/Disassembler and Tools: 2746 2747AcpiExec: Added installation of a handler for the SystemCMOS address 2748space. This prevents control method abort if a method accesses this 2749space. 2750 2751AcpiExec: Added support for multiple EC devices, and now install EC 2752operation region handler(s) at the actual EC device instead of the 2753namespace root. This reflects the typical behavior of host operating 2754systems. 2755 2756AcpiExec: Updated to ensure that all operation region handlers are 2757installed before the _REG methods are executed. This prevents a _REG 2758method from aborting if it accesses an address space has no handler. 2759AcpiExec installs a handler for every possible address space. 2760 2761Debugger: Enhanced the "handlers" command to display non-root handlers. 2762This change enhances the handlers command to display handlers associated 2763with individual devices throughout the namespace, in addition to the 2764currently supported display of handlers associated with the root 2765namespace 2766node. 2767 2768ASL Test Suite: Several test suite errors have been identified and 2769resolved, reducing the total error count during execution. Chao Guan. 2770 2771---------------------------------------- 277228 March 2013. Summary of changes for version 20130328: 2773 27741) ACPICA kernel-resident subsystem: 2775 2776Fixed several possible race conditions with the internal object reference 2777counting mechanism. Some of the external ACPICA interfaces update object 2778reference counts without holding the interpreter or namespace lock. This 2779change adds a spinlock to protect reference count updates on the internal 2780ACPICA objects. Reported by and with assistance from Andriy Gapon 2781(avg@FreeBSD.org). 2782 2783FADT support: Removed an extraneous warning for very large GPE register 2784sets. This change removes a size mismatch warning if the legacy length 2785field for a GPE register set is larger than the 64-bit GAS structure can 2786accommodate. GPE register sets can be larger than the 255-bit width 2787limitation of the GAS structure. Linn Crosetto (linn@hp.com). 2788 2789_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 2790return from this interface. Handles a possible timeout case if 2791ACPI_WAIT_FOREVER is modified by the host to be a value less than 2792"forever". Jung-uk Kim. 2793 2794Predefined name support: Add allowed/required argument type information 2795to 2796the master predefined info table. This change adds the infrastructure to 2797enable typechecking on incoming arguments for all predefined 2798methods/objects. It does not actually contain the code that will fully 2799utilize this information, this is still under development. Also condenses 2800some duplicate code for the predefined names into a new module, 2801utilities/utpredef.c 2802 2803Example Code and Data Size: These are the sizes for the OS-independent 2804acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2805debug version of the code includes the debug output trace mechanism and 2806has a much larger code and data size. 2807 2808 Previous Release: 2809 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2810 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2811 Current Release: 2812 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 2813 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 2814 2815 28162) iASL Compiler/Disassembler and Tools: 2817 2818iASL: Implemented a new option to simplify the development of ACPI- 2819related 2820BIOS code. Adds support for a new "offset table" output file. The -so 2821option will create a C table containing the AML table offsets of various 2822named objects in the namespace so that BIOS code can modify them easily 2823at 2824boot time. This can simplify BIOS runtime code by eliminating expensive 2825searches for "magic values", enhancing boot times and adding greater 2826reliability. With assistance from Lee Hamel. 2827 2828iASL: Allow additional predefined names to return zero-length packages. 2829Now, all predefined names that are defined by the ACPI specification to 2830return a "variable-length package of packages" are allowed to return a 2831zero length top-level package. This allows the BIOS to tell the host that 2832the requested feature is not supported, and supports existing BIOS/ASL 2833code and practices. 2834 2835iASL: Changed the "result not used" warning to an error. This is the case 2836where an ASL operator is effectively a NOOP because the result of the 2837operation is not stored anywhere. For example: 2838 Add (4, Local0) 2839There is no target (missing 3rd argument), nor is the function return 2840value used. This is potentially a very serious problem -- since the code 2841was probably intended to do something, but for whatever reason, the value 2842was not stored. Therefore, this issue has been upgraded from a warning to 2843an error. 2844 2845AcpiHelp: Added allowable/required argument types to the predefined names 2846info display. This feature utilizes the recent update to the predefined 2847names table (above). 2848 2849---------------------------------------- 285014 February 2013. Summary of changes for version 20130214: 2851 28521) ACPICA Kernel-resident Subsystem: 2853 2854Fixed a possible regression on some hosts: Reinstated the safe return 2855macros (return_ACPI_STATUS, etc.) that ensure that the argument is 2856evaluated only once. Although these macros are not needed for the ACPICA 2857code itself, they are often used by ACPI-related host device drivers 2858where 2859the safe feature may be necessary. 2860 2861Fixed several issues related to the ACPI 5.0 reduced hardware support 2862(SOC): Now ensure that if the platform declares itself as hardware- 2863reduced 2864via the FADT, the following functions become NOOPs (and always return 2865AE_OK) because ACPI is always enabled by definition on these machines: 2866 AcpiEnable 2867 AcpiDisable 2868 AcpiHwGetMode 2869 AcpiHwSetMode 2870 2871Dynamic Object Repair: Implemented additional runtime repairs for 2872predefined name return values. Both of these repairs can simplify code in 2873the related device drivers that invoke these methods: 28741) For the _STR and _MLS names, automatically repair/convert an ASCII 2875string to a Unicode buffer. 28762) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 2877a 2878lone end tag descriptor in the following cases: A Return(0) was executed, 2879a null buffer was returned, or no object at all was returned (non-slack 2880mode only). Adds a new file, nsconvert.c 2881ACPICA BZ 998. Bob Moore, Lv Zheng. 2882 2883Resource Manager: Added additional code to prevent possible infinite 2884loops 2885while traversing corrupted or ill-formed resource template buffers. Check 2886for zero-length resource descriptors in all code that loops through 2887resource templates (the length field is used to index through the 2888template). This change also hardens the external AcpiWalkResources and 2889AcpiWalkResourceBuffer interfaces. 2890 2891Local Cache Manager: Enhanced the main data structure to eliminate an 2892unnecessary mechanism to access the next object in the list. Actually 2893provides a small performance enhancement for hosts that use the local 2894ACPICA cache manager. Jung-uk Kim. 2895 2896Example Code and Data Size: These are the sizes for the OS-independent 2897acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2898debug version of the code includes the debug output trace mechanism and 2899has a much larger code and data size. 2900 2901 Previous Release: 2902 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2903 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2904 Current Release: 2905 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2906 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2907 2908 29092) iASL Compiler/Disassembler and Tools: 2910 2911iASL/Disassembler: Fixed several issues with the definition of the ACPI 29125.0 RASF table (RAS Feature Table). This change incorporates late changes 2913that were made to the ACPI 5.0 specification. 2914 2915iASL/Disassembler: Added full support for the following new ACPI tables: 2916 1) The MTMR table (MID Timer Table) 2917 2) The VRTC table (Virtual Real Time Clock Table). 2918Includes header file, disassembler, table compiler, and template support 2919for both tables. 2920 2921iASL: Implemented compile-time validation of package objects returned by 2922predefined names. This new feature validates static package objects 2923returned by the various predefined names defined to return packages. Both 2924object types and package lengths are validated, for both parent packages 2925and sub-packages, if any. The code is similar in structure and behavior 2926to 2927the runtime repair mechanism within the AML interpreter and uses the 2928existing predefined name information table. Adds a new file, aslprepkg.c. 2929ACPICA BZ 938. 2930 2931iASL: Implemented auto-detection of binary ACPI tables for disassembly. 2932This feature detects a binary file with a valid ACPI table header and 2933invokes the disassembler automatically. Eliminates the need to 2934specifically invoke the disassembler with the -d option. ACPICA BZ 862. 2935 2936iASL/Disassembler: Added several warnings for the case where there are 2937unresolved control methods during the disassembly. This can potentially 2938cause errors when the output file is compiled, because the disassembler 2939assumes zero method arguments in these cases (it cannot determine the 2940actual number of arguments without resolution/definition of the method). 2941 2942Debugger: Added support to display all resources with a single command. 2943Invocation of the resources command with no arguments will now display 2944all 2945resources within the current namespace. 2946 2947AcpiHelp: Added descriptive text for each ACPICA exception code displayed 2948via the -e option. 2949 2950---------------------------------------- 295117 January 2013. Summary of changes for version 20130117: 2952 29531) ACPICA Kernel-resident Subsystem: 2954 2955Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 2956return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 2957objects to return a package containing one integer, most BIOS code 2958returns 2959two integers and the previous code reflects that. However, we also need 2960to 2961support BIOS code that actually implements to the ACPI spec, and this 2962change reflects this. 2963 2964Fixed two issues with the ACPI_DEBUG_PRINT macros: 29651) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 2966C compilers that require this support. 29672) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 2968ACPI_DEBUG is already used by many of the various hosts. 2969 2970Updated all ACPICA copyrights and signons to 2013. Added the 2013 2971copyright to all module headers and signons, including the standard Linux 2972header. This affects virtually every file in the ACPICA core subsystem, 2973iASL compiler, all ACPICA utilities, and the test suites. 2974 2975Example Code and Data Size: These are the sizes for the OS-independent 2976acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2977debug version of the code includes the debug output trace mechanism and 2978has a much larger code and data size. 2979 2980 Previous Release: 2981 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 2982 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 2983 Current Release: 2984 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2985 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2986 2987 29882) iASL Compiler/Disassembler and Tools: 2989 2990Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 2991prevent a possible fault on some hosts. Some C libraries modify the arg 2992pointer parameter to vfprintf making it difficult to call it twice in the 2993AcpiOsVprintf function. Use a local buffer to workaround this issue. This 2994does not affect the Windows OSL since the Win C library does not modify 2995the arg pointer. Chao Guan, Bob Moore. 2996 2997iASL: Fixed a possible infinite loop when the maximum error count is 2998reached. If an output file other than the .AML file is specified (such as 2999a listing file), and the maximum number of errors is reached, do not 3000attempt to flush data to the output file(s) as the compiler is aborting. 3001This can cause an infinite loop as the max error count code essentially 3002keeps calling itself. 3003 3004iASL/Disassembler: Added an option (-in) to ignore NOOP 3005opcodes/operators. 3006Implemented for both the compiler and the disassembler. Often, the NOOP 3007opcode is used as padding for packages that are changed dynamically by 3008the 3009BIOS. When disassembled and recompiled, these NOOPs will cause syntax 3010errors. This option causes the disassembler to ignore all NOOP opcodes 3011(0xA3), and it also causes the compiler to ignore all ASL source code 3012NOOP 3013statements as well. 3014 3015Debugger: Enhanced the Sleep command to execute all sleep states. This 3016change allows Sleep to be invoked with no arguments and causes the 3017debugger to execute all of the sleep states, 0-5, automatically. 3018 3019---------------------------------------- 302020 December 2012. Summary of changes for version 20121220: 3021 30221) ACPICA Kernel-resident Subsystem: 3023 3024Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 3025alternate entry point for AcpiWalkResources and improves the usability of 3026the resource manager by accepting as input a buffer containing the output 3027of either a _CRS, _PRS, or _AEI method. The key functionality is that the 3028input buffer is not deleted by this interface so that it can be used by 3029the host later. See the ACPICA reference for details. 3030 3031Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 3032(DSDT version < 2). The constant will be truncated and this warning 3033reflects that behavior. 3034 3035Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 3036ExtendedInterrupt, and GpioInt descriptors. This change adds support to 3037both get and set the new wake bit in these descriptors, separately from 3038the existing share bit. Reported by Aaron Lu. 3039 3040Interpreter: Fix Store() when an implicit conversion is not possible. For 3041example, in the cases such as a store of a string to an existing package 3042object, implement the store as a CopyObject(). This is a small departure 3043from the ACPI specification which states that the control method should 3044be 3045aborted in this case. However, the ASLTS suite depends on this behavior. 3046 3047Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 3048macros: check if debug output is currently enabled as soon as possible to 3049minimize performance impact if debug is in fact not enabled. 3050 3051Source code restructuring: Cleanup to improve modularity. The following 3052new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 3053psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 3054Associated makefiles and project files have been updated. 3055 3056Changed an exception code for LoadTable operator. For the case where one 3057of the input strings is too long, change the returned exception code from 3058AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 3059 3060Fixed a possible memory leak in dispatcher error path. On error, delete 3061the mutex object created during method mutex creation. Reported by 3062tim.gardner@canonical.com. 3063 3064Example Code and Data Size: These are the sizes for the OS-independent 3065acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3066debug version of the code includes the debug output trace mechanism and 3067has a much larger code and data size. 3068 3069 Previous Release: 3070 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 3071 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3072 Current Release: 3073 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 3074 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 3075 3076 30772) iASL Compiler/Disassembler and Tools: 3078 3079iASL: Disallow a method call as argument to the ObjectType ASL operator. 3080This change tracks an errata to the ACPI 5.0 document. The AML grammar 3081will not allow the interpreter to differentiate between a method and a 3082method invocation when these are used as an argument to the ObjectType 3083operator. The ACPI specification change is to disallow a method 3084invocation 3085(UserTerm) for the ObjectType operator. 3086 3087Finish support for the TPM2 and CSRT tables in the headers, table 3088compiler, and disassembler. 3089 3090Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 3091always expires immediately if the semaphore is not available. The 3092original 3093code was using a relative-time timeout, but sem_timedwait requires the 3094use 3095of an absolute time. 3096 3097iASL: Added a remark if the Timer() operator is used within a 32-bit 3098table. This operator returns a 64-bit time value that will be truncated 3099within a 32-bit table. 3100 3101iASL Source code restructuring: Cleanup to improve modularity. The 3102following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 3103aslmethod.c, and aslfileio.c. Associated makefiles and project files have 3104been updated. 3105 3106 3107---------------------------------------- 310814 November 2012. Summary of changes for version 20121114: 3109 31101) ACPICA Kernel-resident Subsystem: 3111 3112Implemented a performance enhancement for ACPI/AML Package objects. This 3113change greatly increases the performance of Package objects within the 3114interpreter. It changes the processing of reference counts for packages 3115by 3116optimizing for the most common case where the package sub-objects are 3117either Integers, Strings, or Buffers. Increases the overall performance 3118of 3119the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 31202X.) 3121Chao Guan. ACPICA BZ 943. 3122 3123Implemented and deployed common macros to extract flag bits from resource 3124descriptors. Improves readability and maintainability of the code. Fixes 3125a 3126problem with the UART serial bus descriptor for the number of data bits 3127flags (was incorrectly 2 bits, should be 3). 3128 3129Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 3130of the macros and changed the SETx macros to the style of (destination, 3131source). Also added ACPI_CASTx companion macros. Lv Zheng. 3132 3133Example Code and Data Size: These are the sizes for the OS-independent 3134acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3135debug version of the code includes the debug output trace mechanism and 3136has a much larger code and data size. 3137 3138 Previous Release: 3139 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3140 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3141 Current Release: 3142 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 3143 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3144 3145 31462) iASL Compiler/Disassembler and Tools: 3147 3148Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 3149adds the ShareAndWake and ExclusiveAndWake flags which were added to the 3150Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 3151 3152Disassembler: Fixed a problem with external declaration generation. Fixes 3153a problem where an incorrect pathname could be generated for an external 3154declaration if the original reference to the object includes leading 3155carats (^). ACPICA BZ 984. 3156 3157Debugger: Completed a major update for the Disassemble<method> command. 3158This command was out-of-date and did not properly disassemble control 3159methods that had any reasonable complexity. This fix brings the command 3160up 3161to the same level as the rest of the disassembler. Adds one new file, 3162dmdeferred.c, which is existing code that is now common with the main 3163disassembler and the debugger disassemble command. ACPICA MZ 978. 3164 3165iASL: Moved the parser entry prototype to avoid a duplicate declaration. 3166Newer versions of Bison emit this prototype, so moved the prototype out 3167of 3168the iASL header to where it is actually used in order to avoid a 3169duplicate 3170declaration. 3171 3172iASL/Tools: Standardized use of the stream I/O functions: 3173 1) Ensure check for I/O error after every fopen/fread/fwrite 3174 2) Ensure proper order of size/count arguments for fread/fwrite 3175 3) Use test of (Actual != Requested) after all fwrite, and most fread 3176 4) Standardize I/O error messages 3177Improves reliability and maintainability of the code. Bob Moore, Lv 3178Zheng. 3179ACPICA BZ 981. 3180 3181Disassembler: Prevent duplicate External() statements. During generation 3182of external statements, detect similar pathnames that are actually 3183duplicates such as these: 3184 External (\ABCD) 3185 External (ABCD) 3186Remove all leading '\' characters from pathnames during the external 3187statement generation so that duplicates will be detected and tossed. 3188ACPICA BZ 985. 3189 3190Tools: Replace low-level I/O with stream I/O functions. Replace 3191open/read/write/close with the stream I/O equivalents 3192fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 3193Moore. 3194 3195AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 3196name header so that AcpiXtract recognizes the output file/table. 3197 3198iASL: Remove obsolete -2 option flag. Originally intended to force the 3199compiler/disassembler into an ACPI 2.0 mode, this was never implemented 3200and the entire concept is now obsolete. 3201 3202---------------------------------------- 320318 October 2012. Summary of changes for version 20121018: 3204 3205 32061) ACPICA Kernel-resident Subsystem: 3207 3208Updated support for the ACPI 5.0 MPST table. Fixes some problems 3209introduced by late changes to the table as it was added to the ACPI 5.0 3210specification. Includes header, disassembler, and data table compiler 3211support as well as a new version of the MPST template. 3212 3213AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 32145.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 3215methods: _HID, _CID, and _UID. 3216 3217Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 3218ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 3219name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 3220names for their various drivers. Affects the AcpiGetObjectInfo external 3221interface, and other internal interfaces as well. 3222 3223Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 3224This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 3225on machines that support non-aligned transfers. Optimizes for this case 3226rather than using a strncpy. With assistance from Zheng Lv. 3227 3228Resource Manager: Small fix for buffer size calculation. Fixed a one byte 3229error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 3230 3231Added a new debug print message for AML mutex objects that are force- 3232released. At control method termination, any currently acquired mutex 3233objects are force-released. Adds a new debug-only message for each one 3234that is released. 3235 3236Audited/updated all ACPICA return macros and the function debug depth 3237counter: 1) Ensure that all functions that use the various TRACE macros 3238also use the appropriate ACPICA return macros. 2) Ensure that all normal 3239return statements surround the return expression (value) with parens to 3240ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 3241Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 3242 3243Global source code changes/maintenance: All extra lines at the start and 3244end of each source file have been removed for consistency. Also, within 3245comments, all new sentences start with a single space instead of a double 3246space, again for consistency across the code base. 3247 3248Example Code and Data Size: These are the sizes for the OS-independent 3249acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3250debug version of the code includes the debug output trace mechanism and 3251has a much larger code and data size. 3252 3253 Previous Release: 3254 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3255 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3256 Current Release: 3257 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3258 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3259 3260 32612) iASL Compiler/Disassembler and Tools: 3262 3263AcpiExec: Improved the algorithm used for memory leak/corruption 3264detection. Added some intelligence to the code that maintains the global 3265list of allocated memory. The list is now ordered by allocated memory 3266address, significantly improving performance. When running AcpiExec on 3267the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 3268on the platform and/or the environment. Note, this performance 3269enhancement affects the AcpiExec utility only, not the kernel-resident 3270ACPICA code. 3271 3272Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 3273the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 3274incorrect table offset reported for invalid opcodes. Report the original 327532-bit value for bad ACPI_NAMEs (as well as the repaired name.) 3276 3277Disassembler: Enhanced the -vt option to emit the binary table data in 3278hex format to assist with debugging. 3279 3280Fixed a potential filename buffer overflow in osunixdir.c. Increased the 3281size of file structure. Colin Ian King. 3282 3283---------------------------------------- 328413 September 2012. Summary of changes for version 20120913: 3285 3286 32871) ACPICA Kernel-resident Subsystem: 3288 3289ACPI 5.0: Added two new notify types for the Hardware Error Notification 3290Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 3291and 3292MCE(6). 3293 3294Table Manager: Merged/removed duplicate code in the root table resize 3295functions. One function is external, the other is internal. Lv Zheng, 3296ACPICA 3297BZ 846. 3298 3299Makefiles: Completely removed the obsolete "Linux" makefiles under 3300acpica/generate/linux. These makefiles are obsolete and have been 3301replaced 3302by 3303the generic unix makefiles under acpica/generate/unix. 3304 3305Makefiles: Ensure that binary files always copied properly. Minor rule 3306change 3307to ensure that the final binary output files are always copied up to the 3308appropriate binary directory (bin32 or bin64.) 3309 3310Example Code and Data Size: These are the sizes for the OS-independent 3311acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3312debug 3313version of the code includes the debug output trace mechanism and has a 3314much 3315larger code and data size. 3316 3317 Previous Release: 3318 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3319 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3320 Current Release: 3321 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3322 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3323 3324 33252) iASL Compiler/Disassembler and Tools: 3326 3327Disassembler: Fixed a possible fault during the disassembly of resource 3328descriptors when a second parse is required because of the invocation of 3329external control methods within the table. With assistance from 3330adq@lidskialf.net. ACPICA BZ 976. 3331 3332iASL: Fixed a namepath optimization problem. An error can occur if the 3333parse 3334node that contains the namepath to be optimized does not have a parent 3335node 3336that is a named object. This change fixes the problem. 3337 3338iASL: Fixed a regression where the AML file is not deleted on errors. The 3339AML 3340output file should be deleted if there are any errors during the 3341compiler. 3342The 3343only exception is if the -f (force output) option is used. ACPICA BZ 974. 3344 3345iASL: Added a feature to automatically increase internal line buffer 3346sizes. 3347Via realloc(), automatically increase the internal line buffer sizes as 3348necessary to support very long source code lines. The current version of 3349the 3350preprocessor requires a buffer long enough to contain full source code 3351lines. 3352This change increases the line buffer(s) if the input lines go beyond the 3353current buffer size. This eliminates errors that occurred when a source 3354code 3355line was longer than the buffer. 3356 3357iASL: Fixed a problem with constant folding in method declarations. The 3358SyncLevel term is a ByteConstExpr, and incorrect code would be generated 3359if a 3360Type3 opcode was used. 3361 3362Debugger: Improved command help support. For incorrect argument count, 3363display 3364full help for the command. For help command itself, allow an argument to 3365specify a command. 3366 3367Test Suites: Several bug fixes for the ASLTS suite reduces the number of 3368errors during execution of the suite. Guan Chao. 3369 3370---------------------------------------- 337116 August 2012. Summary of changes for version 20120816: 3372 3373 33741) ACPICA Kernel-resident Subsystem: 3375 3376Removed all use of the deprecated _GTS and _BFS predefined methods. The 3377_GTS 3378(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 3379deprecated and will probably be removed from the ACPI specification. 3380Windows 3381does not invoke them, and reportedly never will. The final nail in the 3382coffin 3383is that the ACPI specification states that these methods must be run with 3384interrupts off, which is not going to happen in a kernel interpreter. 3385Note: 3386Linux has removed all use of the methods also. It was discovered that 3387invoking these functions caused failures on some machines, probably 3388because 3389they were never tested since Windows does not call them. Affects two 3390external 3391interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 3392ACPICA BZ 969. 3393 3394Implemented support for complex bit-packed buffers returned from the _PLD 3395(Physical Location of Device) predefined method. Adds a new external 3396interface, AcpiDecodePldBuffer that parses the buffer into a more usable 3397C 3398structure. Note: C Bitfields cannot be used for this type of predefined 3399structure since the memory layout of individual bitfields is not defined 3400by 3401the C language. In addition, there are endian concerns where a compiler 3402will 3403change the bitfield ordering based on the machine type. The new ACPICA 3404interface eliminates these issues, and should be called after _PLD is 3405executed. ACPICA BZ 954. 3406 3407Implemented a change to allow a scope change to root (via "Scope (\)") 3408during 3409execution of module-level ASL code (code that is executed at table load 3410time.) Lin Ming. 3411 3412Added the Windows8/Server2012 string for the _OSI method. This change 3413adds 3414a 3415new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 34162012. 3417 3418Added header support for the new ACPI tables DBG2 (Debug Port Table Type 34192) 3420and CSRT (Core System Resource Table). 3421 3422Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 3423names. This simplifies access to the buffers returned by these predefined 3424names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 3425 3426GPE support: Removed an extraneous parameter from the various low-level 3427internal GPE functions. Tang Feng. 3428 3429Removed the linux makefiles from the unix packages. The generate/linux 3430makefiles are obsolete and have been removed from the unix tarball 3431release 3432packages. The replacement makefiles are under generate/unix, and there is 3433a 3434top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 3435 3436Updates for Unix makefiles: 34371) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 34382) Update linker flags (move to end of command line) for AcpiExec 3439utility. 3440Guan Chao. 3441 3442Split ACPICA initialization functions to new file, utxfinit.c. Split from 3443utxface.c to improve modularity and reduce file size. 3444 3445Example Code and Data Size: These are the sizes for the OS-independent 3446acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3447debug version of the code includes the debug output trace mechanism and 3448has a 3449much larger code and data size. 3450 3451 Previous Release: 3452 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3453 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3454 Current Release: 3455 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3456 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3457 3458 34592) iASL Compiler/Disassembler and Tools: 3460 3461iASL: Fixed a problem with constant folding for fixed-length constant 3462expressions. The constant-folding code was not being invoked for constant 3463expressions that allow the use of type 3/4/5 opcodes to generate 3464constants 3465for expressions such as ByteConstExpr, WordConstExpr, etc. This could 3466result 3467in the generation of invalid AML bytecode. ACPICA BZ 970. 3468 3469iASL: Fixed a generation issue on newer versions of Bison. Newer versions 3470apparently automatically emit some of the necessary externals. This 3471change 3472handles these versions in order to eliminate generation warnings. 3473 3474Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 3475 3476Disassembler: Add support to decode _PLD buffers. The decoded buffer 3477appears 3478within comments in the output file. 3479 3480Debugger: Fixed a regression with the "Threads" command where 3481AE_BAD_PARAMETER was always returned. 3482 3483---------------------------------------- 348411 July 2012. Summary of changes for version 20120711: 3485 34861) ACPICA Kernel-resident Subsystem: 3487 3488Fixed a possible fault in the return package object repair code. Fixes a 3489problem that can occur when a lone package object is wrapped with an 3490outer 3491package object in order to force conformance to the ACPI specification. 3492Can 3493affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 3494_DLM, 3495_CSD, _PSD, _TSD. 3496 3497Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 3498PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 3499ARB_DIS bit must be implemented in the host-dependent C3 processor power 3500state 3501support. Note, ARB_DIS is obsolete and only applies to older chipsets, 3502both 3503Intel and other vendors. (for Intel: ICH4-M and earlier) 3504 3505This change removes the code to disable/enable bus master arbitration 3506during 3507suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 3508causes 3509resume problems on some machines. The change has been in use for over 3510seven 3511years within Linux. 3512 3513Implemented two new external interfaces to support host-directed dynamic 3514ACPI 3515table load and unload. They are intended to simplify the host 3516implementation 3517of hot-plug support: 3518 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 3519 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 3520table. 3521See the ACPICA reference for additional details. Adds one new file, 3522components/tables/tbxfload.c 3523 3524Implemented and deployed two new interfaces for errors and warnings that 3525are 3526known to be caused by BIOS/firmware issues: 3527 AcpiBiosError: Prints "ACPI Firmware Error" message. 3528 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 3529Deployed these new interfaces in the ACPICA Table Manager code for ACPI 3530table 3531and FADT errors. Additional deployment to be completed as appropriate in 3532the 3533future. The associated conditional macros are ACPI_BIOS_ERROR and 3534ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 3535ACPICA 3536BZ 3537843. 3538 3539Implicit notify support: ensure that no memory allocation occurs within a 3540critical region. This fix moves a memory allocation outside of the time 3541that a 3542spinlock is held. Fixes issues on systems that do not allow this 3543behavior. 3544Jung-uk Kim. 3545 3546Split exception code utilities and tables into a new file, 3547utilities/utexcep.c 3548 3549Example Code and Data Size: These are the sizes for the OS-independent 3550acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3551debug 3552version of the code includes the debug output trace mechanism and has a 3553much 3554larger code and data size. 3555 3556 Previous Release: 3557 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3558 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3559 Current Release: 3560 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3561 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3562 3563 35642) iASL Compiler/Disassembler and Tools: 3565 3566iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 3567of 35680. Jung-uk Kim. 3569 3570Debugger: Enhanced the "tables" command to emit additional information 3571about 3572the current set of ACPI tables, including the owner ID and flags decode. 3573 3574Debugger: Reimplemented the "unload" command to use the new 3575AcpiUnloadParentTable external interface. This command was disable 3576previously 3577due to need for an unload interface. 3578 3579AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 3580option 3581will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 3582 3583---------------------------------------- 358420 June 2012. Summary of changes for version 20120620: 3585 3586 35871) ACPICA Kernel-resident Subsystem: 3588 3589Implemented support to expand the "implicit notify" feature to allow 3590multiple 3591devices to be notified by a single GPE. This feature automatically 3592generates a 3593runtime device notification in the absence of a BIOS-provided GPE control 3594method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 3595notify is 3596provided by ACPICA for Windows compatibility, and is a workaround for 3597BIOS 3598AML 3599code errors. See the description of the AcpiSetupGpeForWake interface in 3600the 3601APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 3602 3603Changed some comments and internal function names to simplify and ensure 3604correctness of the Linux code translation. No functional changes. 3605 3606Example Code and Data Size: These are the sizes for the OS-independent 3607acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3608debug 3609version of the code includes the debug output trace mechanism and has a 3610much 3611larger code and data size. 3612 3613 Previous Release: 3614 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3615 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3616 Current Release: 3617 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3618 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3619 3620 36212) iASL Compiler/Disassembler and Tools: 3622 3623Disassembler: Added support to emit short, commented descriptions for the 3624ACPI 3625predefined names in order to improve the readability of the disassembled 3626output. ACPICA BZ 959. Changes include: 3627 1) Emit descriptions for all standard predefined names (_INI, _STA, 3628_PRW, 3629etc.) 3630 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 3631 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 3632etc.) 3633 3634AcpiSrc: Fixed several long-standing Linux code translation issues. 3635Argument 3636descriptions in function headers are now translated properly to lower 3637case 3638and 3639underscores. ACPICA BZ 961. Also fixes translation problems such as 3640these: 3641(old -> new) 3642 i_aSL -> iASL 3643 00-7_f -> 00-7F 3644 16_k -> 16K 3645 local_fADT -> local_FADT 3646 execute_oSI -> execute_OSI 3647 3648iASL: Fixed a problem where null bytes were inadvertently emitted into 3649some 3650listing files. 3651 3652iASL: Added the existing debug options to the standard help screen. There 3653are 3654no longer two different help screens. ACPICA BZ 957. 3655 3656AcpiHelp: Fixed some typos in the various predefined name descriptions. 3657Also 3658expand some of the descriptions where appropriate. 3659 3660iASL: Fixed the -ot option (display compile times/statistics). Was not 3661working 3662properly for standard output; only worked for the debug file case. 3663 3664---------------------------------------- 366518 May 2012. Summary of changes for version 20120518: 3666 3667 36681) ACPICA Core Subsystem: 3669 3670Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 3671defined 3672to block until asynchronous events such as notifies and GPEs have 3673completed. 3674Within ACPICA, it is only called before a notify or GPE handler is 3675removed/uninstalled. It also may be useful for the host OS within related 3676drivers such as the Embedded Controller driver. See the ACPICA reference 3677for 3678additional information. ACPICA BZ 868. 3679 3680ACPI Tables: Added a new error message for a possible overflow failure 3681during 3682the conversion of FADT 32-bit legacy register addresses to internal 3683common 368464- 3685bit GAS structure representation. The GAS has a one-byte "bit length" 3686field, 3687thus limiting the register length to 255 bits. ACPICA BZ 953. 3688 3689Example Code and Data Size: These are the sizes for the OS-independent 3690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3691debug 3692version of the code includes the debug output trace mechanism and has a 3693much 3694larger code and data size. 3695 3696 Previous Release: 3697 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3698 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 3699 Current Release: 3700 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3701 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3702 3703 37042) iASL Compiler/Disassembler and Tools: 3705 3706iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 3707macro. 3708This keyword was added late in the ACPI 5.0 release cycle and was not 3709implemented until now. 3710 3711Disassembler: Added support for Operation Region externals. Adds missing 3712support for operation regions that are defined in another table, and 3713referenced locally via a Field or BankField ASL operator. Now generates 3714the 3715correct External statement. 3716 3717Disassembler: Several additional fixes for the External() statement 3718generation 3719related to some ASL operators. Also, order the External() statements 3720alphabetically in the disassembler output. Fixes the External() 3721generation 3722for 3723the Create* field, Alias, and Scope operators: 3724 1) Create* buffer field operators - fix type mismatch warning on 3725disassembly 3726 2) Alias - implement missing External support 3727 3) Scope - fix to make sure all necessary externals are emitted. 3728 3729iASL: Improved pathname support. For include files, merge the prefix 3730pathname 3731with the file pathname and eliminate unnecessary components. Convert 3732backslashes in all pathnames to forward slashes, for readability. Include 3733file 3734pathname changes affect both #include and Include() type operators. 3735 3736iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 3737end 3738of a valid line by inserting a newline and then returning the EOF during 3739the 3740next call to GetNextLine. Prevents the line from being ignored due to EOF 3741condition. 3742 3743iASL: Implemented some changes to enhance the IDE support (-vi option.) 3744Error 3745and Warning messages are now correctly recognized for both the source 3746code 3747browser and the global error and warning counts. 3748 3749---------------------------------------- 375020 April 2012. Summary of changes for version 20120420: 3751 3752 37531) ACPICA Core Subsystem: 3754 3755Implemented support for multiple notify handlers. This change adds 3756support 3757to 3758allow multiple system and device notify handlers on Device, Thermal Zone, 3759and 3760Processor objects. This can simplify the host OS notification 3761implementation. 3762Also re-worked and restructured the entire notify support code to 3763simplify 3764handler installation, handler removal, notify event queuing, and notify 3765dispatch to handler(s). Note: there can still only be two global notify 3766handlers - one for system notifies and one for device notifies. There are 3767no 3768changes to the existing handler install/remove interfaces. Lin Ming, Bob 3769Moore, Rafael Wysocki. 3770 3771Fixed a regression in the package repair code where the object reference 3772count was calculated incorrectly. Regression was introduced in the commit 3773"Support to add Package wrappers". 3774 3775Fixed a couple possible memory leaks in the AML parser, in the error 3776recovery 3777path. Jesper Juhl, Lin Ming. 3778 3779Example Code and Data Size: These are the sizes for the OS-independent 3780acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3781debug version of the code includes the debug output trace mechanism and 3782has a 3783much larger code and data size. 3784 3785 Previous Release: 3786 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3787 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3788 Current Release: 3789 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3790 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 3791 3792 37932) iASL Compiler/Disassembler and Tools: 3794 3795iASL: Fixed a problem with the resource descriptor support where the 3796length 3797of the StartDependentFn and StartDependentFnNoPrio descriptors were not 3798included in cumulative descriptor offset, resulting in incorrect values 3799for 3800resource tags within resource descriptors appearing after a 3801StartDependent* 3802descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 3803 3804iASL and Preprocessor: Implemented full support for the #line directive 3805to 3806correctly track original source file line numbers through the .i 3807preprocessor 3808output file - for error and warning messages. 3809 3810iASL: Expand the allowable byte constants for address space IDs. 3811Previously, 3812the allowable range was 0x80-0xFF (user-defined spaces), now the range is 38130x0A-0xFF to allow for custom and new IDs without changing the compiler. 3814 3815iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 3816 3817iASL: Add option to completely disable the preprocessor (-Pn). 3818 3819iASL: Now emit all error/warning messages to standard error (stderr) by 3820default (instead of the previous stdout). 3821 3822ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 3823Update 3824for resource descriptor offset fix above. Update/cleanup error output 3825routines. Enable and send iASL errors/warnings to an error logfile 3826(error.txt). Send all other iASL output to a logfile (compiler.txt). 3827Fixed 3828several extraneous "unrecognized operator" messages. 3829 3830---------------------------------------- 383120 March 2012. Summary of changes for version 20120320: 3832 3833 38341) ACPICA Core Subsystem: 3835 3836Enhanced the sleep/wake interfaces to optionally execute the _GTS method 3837(Going To Sleep) and the _BFS method (Back From Sleep). Windows 3838apparently 3839does not execute these methods, and therefore these methods are often 3840untested. It has been seen on some systems where the execution of these 3841methods causes errors and also prevents the machine from entering S5. It 3842is 3843therefore suggested that host operating systems do not execute these 3844methods 3845by default. In the future, perhaps these methods can be optionally 3846executed 3847based on the age of the system and/or what is the newest version of 3848Windows 3849that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 3850and 3851AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 3852Ming. 3853 3854Fixed a problem where the length of the local/common FADT was set too 3855early. 3856The local FADT table length cannot be set to the common length until the 3857original length has been examined. There is code that checks the table 3858length 3859and sets various fields appropriately. This can affect older machines 3860with 3861early FADT versions. For example, this can cause inadvertent writes to 3862the 3863CST_CNT register. Julian Anastasov. 3864 3865Fixed a mapping issue related to a physical table override. Use the 3866deferred 3867mapping mechanism for tables loaded via the physical override OSL 3868interface. 3869This allows for early mapping before the virtual memory manager is 3870available. 3871Thomas Renninger, Bob Moore. 3872 3873Enhanced the automatic return-object repair code: Repair a common problem 3874with 3875predefined methods that are defined to return a variable-length Package 3876of 3877sub-objects. If there is only one sub-object, some BIOS ASL code 3878mistakenly 3879simply returns the single object instead of a Package with one sub- 3880object. 3881This new support will repair this error by wrapping a Package object 3882around 3883the original object, creating the correct and expected Package with one 3884sub- 3885object. Names that can be repaired in this manner include: _ALR, _CSD, 3886_HPX, 3887_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 3888939. 3889 3890Changed the exception code returned for invalid ACPI paths passed as 3891parameters to external interfaces such as AcpiEvaluateObject. Was 3892AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 3893 3894Example Code and Data Size: These are the sizes for the OS-independent 3895acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3896debug 3897version of the code includes the debug output trace mechanism and has a 3898much 3899larger code and data size. 3900 3901 Previous Release: 3902 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 3903 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3904 Current Release: 3905 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3906 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3907 3908 39092) iASL Compiler/Disassembler and Tools: 3910 3911iASL: Added the infrastructure and initial implementation of a integrated 3912C- 3913like preprocessor. This will simplify BIOS development process by 3914eliminating 3915the need for a separate preprocessing step during builds. On Windows, it 3916also 3917eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 3918features including full #define() macro support are still under 3919development. 3920These preprocessor directives are supported: 3921 #define 3922 #elif 3923 #else 3924 #endif 3925 #error 3926 #if 3927 #ifdef 3928 #ifndef 3929 #include 3930 #pragma message 3931 #undef 3932 #warning 3933In addition, these new command line options are supported: 3934 -D <symbol> Define symbol for preprocessor use 3935 -li Create preprocessed output file (*.i) 3936 -P Preprocess only and create preprocessor output file (*.i) 3937 3938Table Compiler: Fixed a problem where the equals operator within an 3939expression 3940did not work properly. 3941 3942Updated iASL to use the current versions of Bison/Flex. Updated the 3943Windows 3944project file to invoke these tools from the standard location. ACPICA BZ 3945904. 3946Versions supported: 3947 Flex for Windows: V2.5.4 3948 Bison for Windows: V2.4.1 3949 3950---------------------------------------- 395115 February 2012. Summary of changes for version 20120215: 3952 3953 39541) ACPICA Core Subsystem: 3955 3956There have been some major changes to the sleep/wake support code, as 3957described below (a - e). 3958 3959a) The AcpiLeaveSleepState has been split into two interfaces, similar to 3960AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 3961AcpiLeaveSleepStatePrep. This allows the host to perform actions between 3962the 3963time the _BFS method is called and the _WAK method is called. NOTE: all 3964hosts 3965must update their wake/resume code or else sleep/wake will not work 3966properly. 3967Rafael Wysocki. 3968 3969b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 3970_WAK 3971method. Some machines require that the GPEs are enabled before the _WAK 3972method 3973is executed. Thomas Renninger. 3974 3975c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 3976bit. 3977Some BIOS code assumes that WAK_STS will be cleared on resume and use it 3978to 3979determine whether the system is rebooting or resuming. Matthew Garrett. 3980 3981d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 3982Sleep) to 3983match the ACPI specification requirement. Rafael Wysocki. 3984 3985e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 3986registers within the V5 FADT. This support adds two new files: 3987hardware/hwesleep.c implements the support for the new registers. Moved 3988all 3989sleep/wake external interfaces to hardware/hwxfsleep.c. 3990 3991 3992Added a new OSL interface for ACPI table overrides, 3993AcpiOsPhysicalTableOverride. This interface allows the host to override a 3994table via a physical address, instead of the logical address required by 3995AcpiOsTableOverride. This simplifies the host implementation. Initial 3996implementation by Thomas Renninger. The ACPICA implementation creates a 3997single 3998shared function for table overrides that attempts both a logical and a 3999physical override. 4000 4001Expanded the OSL memory read/write interfaces to 64-bit data 4002(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 4003transfer support for GAS register structures passed to AcpiRead and 4004AcpiWrite. 4005 4006Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 4007custom 4008build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 4009model. 4010See the ACPICA reference for details. ACPICA BZ 942. This option removes 4011about 401210% of the code and 5% of the static data, and the following hardware 4013ACPI 4014features become unavailable: 4015 PM Event and Control registers 4016 SCI interrupt (and handler) 4017 Fixed Events 4018 General Purpose Events (GPEs) 4019 Global Lock 4020 ACPI PM timer 4021 FACS table (Waking vectors and Global Lock) 4022 4023Updated the unix tarball directory structure to match the ACPICA git 4024source 4025tree. This ensures that the generic unix makefiles work properly (in 4026generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 4027867. 4028 4029Updated the return value of the _REV predefined method to integer value 5 4030to 4031reflect ACPI 5.0 support. 4032 4033Moved the external ACPI PM timer interface prototypes to the public 4034acpixf.h 4035file where they belong. 4036 4037Example Code and Data Size: These are the sizes for the OS-independent 4038acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4039debug 4040version of the code includes the debug output trace mechanism and has a 4041much 4042larger code and data size. 4043 4044 Previous Release: 4045 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 4046 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 4047 Current Release: 4048 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 4049 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4050 4051 40522) iASL Compiler/Disassembler and Tools: 4053 4054Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 4055descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 4056incorrectly displayed. 4057 4058AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 4059specification. 4060 4061---------------------------------------- 406211 January 2012. Summary of changes for version 20120111: 4063 4064 40651) ACPICA Core Subsystem: 4066 4067Implemented a new mechanism to allow host device drivers to check for 4068address 4069range conflicts with ACPI Operation Regions. Both SystemMemory and 4070SystemIO 4071address spaces are supported. A new external interface, 4072AcpiCheckAddressRange, 4073allows drivers to check an address range against the ACPI namespace. See 4074the 4075ACPICA reference for additional details. Adds one new file, 4076utilities/utaddress.c. Lin Ming, Bob Moore. 4077 4078Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 4079Control 4080and 4081Status registers, update the ACPI 5.0 flags, and update internal data 4082structures to handle an FADT larger than 256 bytes. The size of the ACPI 40835.0 4084FADT is 268 bytes. 4085 4086Updated all ACPICA copyrights and signons to 2012. Added the 2012 4087copyright to 4088all module headers and signons, including the standard Linux header. This 4089affects virtually every file in the ACPICA core subsystem, iASL compiler, 4090and 4091all ACPICA utilities. 4092 4093Example Code and Data Size: These are the sizes for the OS-independent 4094acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4095debug 4096version of the code includes the debug output trace mechanism and has a 4097much 4098larger code and data size. 4099 4100 Previous Release: 4101 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4102 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4103 Current Release: 4104 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 4105 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 4106 4107 41082) iASL Compiler/Disassembler and Tools: 4109 4110Disassembler: fixed a problem with the automatic resource tag generation 4111support. Fixes a problem where the resource tags are inadvertently not 4112constructed if the table being disassembled contains external references 4113to 4114control methods. Moved the actual construction of the tags to after the 4115final 4116namespace is constructed (after 2nd parse is invoked due to external 4117control 4118method references.) ACPICA BZ 941. 4119 4120Table Compiler: Make all "generic" operators caseless. These are the 4121operators 4122like UINT8, String, etc. Making these caseless improves ease-of-use. 4123ACPICA BZ 4124934. 4125 4126---------------------------------------- 412723 November 2011. Summary of changes for version 20111123: 4128 41290) ACPI 5.0 Support: 4130 4131This release contains full support for the ACPI 5.0 specification, as 4132summarized below. 4133 4134Reduced Hardware Support: 4135------------------------- 4136 4137This support allows for ACPI systems without the usual ACPI hardware. 4138This 4139support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 4140will 4141not attempt to initialize or use any of the usual ACPI hardware. Note, 4142when 4143this flag is set, all of the following ACPI hardware is assumed to be not 4144present and is not initialized or accessed: 4145 4146 General Purpose Events (GPEs) 4147 Fixed Events (PM1a/PM1b and PM Control) 4148 Power Management Timer and Console Buttons (power/sleep) 4149 Real-time Clock Alarm 4150 Global Lock 4151 System Control Interrupt (SCI) 4152 The FACS is assumed to be non-existent 4153 4154ACPI Tables: 4155------------ 4156 4157All new tables and updates to existing tables are fully supported in the 4158ACPICA headers (for use by device drivers), the disassembler, and the 4159iASL 4160Data Table Compiler. ACPI 5.0 defines these new tables: 4161 4162 BGRT /* Boot Graphics Resource Table */ 4163 DRTM /* Dynamic Root of Trust for Measurement table */ 4164 FPDT /* Firmware Performance Data Table */ 4165 GTDT /* Generic Timer Description Table */ 4166 MPST /* Memory Power State Table */ 4167 PCCT /* Platform Communications Channel Table */ 4168 PMTT /* Platform Memory Topology Table */ 4169 RASF /* RAS Feature table */ 4170 4171Operation Regions/SpaceIDs: 4172--------------------------- 4173 4174All new operation regions are fully supported by the iASL compiler, the 4175disassembler, and the ACPICA runtime code (for dispatch to region 4176handlers.) 4177The new operation region Space IDs are: 4178 4179 GeneralPurposeIo 4180 GenericSerialBus 4181 4182Resource Descriptors: 4183--------------------- 4184 4185All new ASL resource descriptors are fully supported by the iASL 4186compiler, 4187the 4188ASL/AML disassembler, and the ACPICA runtime Resource Manager code 4189(including 4190all new predefined resource tags). New descriptors are: 4191 4192 FixedDma 4193 GpioIo 4194 GpioInt 4195 I2cSerialBus 4196 SpiSerialBus 4197 UartSerialBus 4198 4199ASL/AML Operators, New and Modified: 4200------------------------------------ 4201 4202One new operator is added, the Connection operator, which is used to 4203associate 4204a GeneralPurposeIo or GenericSerialBus resource descriptor with 4205individual 4206field objects within an operation region. Several new protocols are 4207associated 4208with the AccessAs operator. All are fully supported by the iASL compiler, 4209disassembler, and runtime ACPICA AML interpreter: 4210 4211 Connection // Declare Field Connection 4212attributes 4213 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 4214 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 4215Protocol 4216 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 4217 RawDataBuffer // Data type for Vendor Data 4218fields 4219 4220Predefined ASL/AML Objects: 4221--------------------------- 4222 4223All new predefined objects/control-methods are supported by the iASL 4224compiler 4225and the ACPICA runtime validation/repair (arguments and return values.) 4226New 4227predefined names include the following: 4228 4229Standard Predefined Names (Objects or Control Methods): 4230 _AEI, _CLS, _CPC, _CWS, _DEP, 4231 _DLM, _EVT, _GCP, _CRT, _GWS, 4232 _HRV, _PRE, _PSE, _SRT, _SUB. 4233 4234Resource Tags (Names used to access individual fields within resource 4235descriptors): 4236 _DBT, _DPL, _DRS, _END, _FLC, 4237 _IOR, _LIN, _MOD, _PAR, _PHA, 4238 _PIN, _PPI, _POL, _RXL, _SLV, 4239 _SPE, _STB, _TXL, _VEN. 4240 4241ACPICA External Interfaces: 4242--------------------------- 4243 4244Several new interfaces have been defined for use by ACPI-related device 4245drivers and other host OS services: 4246 4247AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 4248to 4249acquire and release AML mutexes that are defined in the DSDT/SSDT tables 4250provided by the BIOS. They are intended to be used in conjunction with 4251the 4252ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 4253mutual exclusion with the AML code/interpreter. 4254 4255AcpiGetEventResources: Returns the (formatted) resource descriptors as 4256defined 4257by the ACPI 5.0 _AEI object (ACPI Event Information). This object 4258provides 4259resource descriptors associated with hardware-reduced platform events, 4260similar 4261to the AcpiGetCurrentResources interface. 4262 4263Operation Region Handlers: For General Purpose IO and Generic Serial Bus 4264operation regions, information about the Connection() object and any 4265optional 4266length information is passed to the region handler within the Context 4267parameter. 4268 4269AcpiBufferToResource: This interface converts a raw AML buffer containing 4270a 4271resource template or resource descriptor to the ACPI_RESOURCE internal 4272format 4273suitable for use by device drivers. Can be used by an operation region 4274handler 4275to convert the Connection() buffer object into a ACPI_RESOURCE. 4276 4277Miscellaneous/Tools/TestSuites: 4278------------------------------- 4279 4280Support for extended _HID names (Four alpha characters instead of three). 4281Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 4282Support for ACPI 5.0 features in the ASLTS test suite. 4283Fully updated documentation (ACPICA and iASL reference documents.) 4284 4285ACPI Table Definition Language: 4286------------------------------- 4287 4288Support for this language was implemented and released as a subsystem of 4289the 4290iASL compiler in 2010. (See the iASL compiler User Guide.) 4291 4292 4293Non-ACPI 5.0 changes for this release: 4294-------------------------------------- 4295 42961) ACPICA Core Subsystem: 4297 4298Fix a problem with operation region declarations where a failure can 4299occur 4300if 4301the region name and an argument that evaluates to an object (such as the 4302region address) are in different namespace scopes. Lin Ming, ACPICA BZ 4303937. 4304 4305Do not abort an ACPI table load if an invalid space ID is found within. 4306This 4307will be caught later if the offending method is executed. ACPICA BZ 925. 4308 4309Fixed an issue with the FFixedHW space ID where the ID was not always 4310recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 4311 4312Fixed a problem with the 32-bit generation of the unix-specific OSL 4313(osunixxf.c). Lin Ming, ACPICA BZ 936. 4314 4315Several changes made to enable generation with the GCC 4.6 compiler. 4316ACPICA BZ 4317935. 4318 4319New error messages: Unsupported I/O requests (not 8/16/32 bit), and 4320Index/Bank 4321field registers out-of-range. 4322 43232) iASL Compiler/Disassembler and Tools: 4324 4325iASL: Implemented the __PATH__ operator, which returns the full pathname 4326of 4327the current source file. 4328 4329AcpiHelp: Automatically display expanded keyword information for all ASL 4330operators. 4331 4332Debugger: Add "Template" command to disassemble/dump resource template 4333buffers. 4334 4335Added a new master script to generate and execute the ASLTS test suite. 4336Automatically handles 32- and 64-bit generation. See tests/aslts.sh 4337 4338iASL: Fix problem with listing generation during processing of the 4339Switch() 4340operator where AML listing was disabled until the entire Switch block was 4341completed. 4342 4343iASL: Improve support for semicolon statement terminators. Fix "invalid 4344character" message for some cases when the semicolon is used. Semicolons 4345are 4346now allowed after every <Term> grammar element. ACPICA BZ 927. 4347 4348iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 4349923. 4350 4351Disassembler: Fix problem with disassembly of the DataTableRegion 4352operator 4353where an inadvertent "Unhandled deferred opcode" message could be 4354generated. 4355 43563) Example Code and Data Size 4357 4358These are the sizes for the OS-independent acpica.lib produced by the 4359Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4360includes the debug output trace mechanism and has a much larger code and 4361data 4362size. 4363 4364 Previous Release: 4365 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4366 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4367 Current Release: 4368 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4369 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4370 4371---------------------------------------- 437222 September 2011. Summary of changes for version 20110922: 4373 43740) ACPI 5.0 News: 4375 4376Support for ACPI 5.0 in ACPICA has been underway for several months and 4377will 4378be released at the same time that ACPI 5.0 is officially released. 4379 4380The ACPI 5.0 specification is on track for release in the next few 4381months. 4382 43831) ACPICA Core Subsystem: 4384 4385Fixed a problem where the maximum sleep time for the Sleep() operator was 4386intended to be limited to two seconds, but was inadvertently limited to 438720 4388seconds instead. 4389 4390Linux and Unix makefiles: Added header file dependencies to ensure 4391correct 4392generation of ACPICA core code and utilities. Also simplified the 4393makefiles 4394considerably through the use of the vpath variable to specify search 4395paths. 4396ACPICA BZ 924. 4397 43982) iASL Compiler/Disassembler and Tools: 4399 4400iASL: Implemented support to check the access length for all fields 4401created to 4402access named Resource Descriptor fields. For example, if a resource field 4403is 4404defined to be two bits, a warning is issued if a CreateXxxxField() is 4405used 4406with an incorrect bit length. This is implemented for all current 4407resource 4408descriptor names. ACPICA BZ 930. 4409 4410Disassembler: Fixed a byte ordering problem with the output of 24-bit and 441156- 4412bit integers. 4413 4414iASL: Fixed a couple of issues associated with variable-length package 4415objects. 1) properly handle constants like One, Ones, Zero -- do not make 4416a 4417VAR_PACKAGE when these are used as a package length. 2) Allow the 4418VAR_PACKAGE 4419opcode (in addition to PACKAGE) when validating object types for 4420predefined 4421names. 4422 4423iASL: Emit statistics for all output files (instead of just the ASL input 4424and 4425AML output). Includes listings, hex files, etc. 4426 4427iASL: Added -G option to the table compiler to allow the compilation of 4428custom 4429ACPI tables. The only part of a table that is required is the standard 443036- 4431byte 4432ACPI header. 4433 4434AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 4435headers), 4436which also adds correct 64-bit support. Also, now all output filenames 4437are 4438completely lower case. 4439 4440AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 4441loading table files. A warning is issued for any such tables. The only 4442exception is an FADT. This also fixes a possible fault when attempting to 4443load 4444non-AML tables. ACPICA BZ 932. 4445 4446AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 4447a 4448missing table terminator could cause a fault when using the -p option. 4449 4450AcpiSrc: Fixed a possible divide-by-zero fault when generating file 4451statistics. 4452 44533) Example Code and Data Size 4454 4455These are the sizes for the OS-independent acpica.lib produced by the 4456Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4457includes the debug output trace mechanism and has a much larger code and 4458data 4459size. 4460 4461 Previous Release (VC 9.0): 4462 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4463 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4464 Current Release (VC 9.0): 4465 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4466 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4467 4468 4469---------------------------------------- 447023 June 2011. Summary of changes for version 20110623: 4471 44721) ACPI CA Core Subsystem: 4473 4474Updated the predefined name repair mechanism to not attempt repair of a 4475_TSS 4476return object if a _PSS object is present. We can only sort the _TSS 4477return 4478package if there is no _PSS within the same scope. This is because if 4479_PSS 4480is 4481present, the ACPI specification dictates that the _TSS Power Dissipation 4482field 4483is to be ignored, and therefore some BIOSs leave garbage values in the 4484_TSS 4485Power field(s). In this case, it is best to just return the _TSS package 4486as- 4487is. Reported by, and fixed with assistance from Fenghua Yu. 4488 4489Added an option to globally disable the control method return value 4490validation 4491and repair. This runtime option can be used to disable return value 4492repair 4493if 4494this is causing a problem on a particular machine. Also added an option 4495to 4496AcpiExec (-dr) to set this disable flag. 4497 4498All makefiles and project files: Major changes to improve generation of 4499ACPICA 4500tools. ACPICA BZ 912: 4501 Reduce default optimization levels to improve compatibility 4502 For Linux, add strict-aliasing=0 for gcc 4 4503 Cleanup and simplify use of command line defines 4504 Cleanup multithread library support 4505 Improve usage messages 4506 4507Linux-specific header: update handling of THREAD_ID and pthread. For the 450832- 4509bit case, improve casting to eliminate possible warnings, especially with 4510the 4511acpica tools. 4512 4513Example Code and Data Size: These are the sizes for the OS-independent 4514acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4515debug 4516version of the code includes the debug output trace mechanism and has a 4517much 4518larger code and data size. 4519 4520 Previous Release (VC 9.0): 4521 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4522 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4523 Current Release (VC 9.0): 4524 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4525 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4526 45272) iASL Compiler/Disassembler and Tools: 4528 4529With this release, a new utility named "acpihelp" has been added to the 4530ACPICA 4531package. This utility summarizes the ACPI specification chapters for the 4532ASL 4533and AML languages. It generates under Linux/Unix as well as Windows, and 4534provides the following functionality: 4535 Find/display ASL operator(s) -- with description and syntax. 4536 Find/display ASL keyword(s) -- with exact spelling and descriptions. 4537 Find/display ACPI predefined name(s) -- with description, number 4538 of arguments, and the return value data type. 4539 Find/display AML opcode name(s) -- with opcode, arguments, and 4540grammar. 4541 Decode/display AML opcode -- with opcode name, arguments, and 4542grammar. 4543 4544Service Layers: Make multi-thread support configurable. Conditionally 4545compile 4546the multi-thread support so that threading libraries will not be linked 4547if 4548not 4549necessary. The only tool that requires multi-thread support is AcpiExec. 4550 4551iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 4552of 4553Bison appear to want the interface to yyerror to be a const char * (or at 4554least this is a problem when generating iASL on some systems.) ACPICA BZ 4555923 4556Pierre Lejeune. 4557 4558Tools: Fix for systems where O_BINARY is not defined. Only used for 4559Windows 4560versions of the tools. 4561 4562---------------------------------------- 456327 May 2011. Summary of changes for version 20110527: 4564 45651) ACPI CA Core Subsystem: 4566 4567ASL Load() operator: Reinstate most restrictions on the incoming ACPI 4568table 4569signature. Now, only allow SSDT, OEMx, and a null signature. History: 4570 1) Originally, we checked the table signature for "SSDT" or "PSDT". 4571 (PSDT is now obsolete.) 4572 2) We added support for OEMx tables, signature "OEM" plus a fourth 4573 "don't care" character. 4574 3) Valid tables were encountered with a null signature, so we just 4575 gave up on validating the signature, (05/2008). 4576 4) We encountered non-AML tables such as the MADT, which caused 4577 interpreter errors and kernel faults. So now, we once again allow 4578 only SSDT, OEMx, and now, also a null signature. (05/2011). 4579 4580Added the missing _TDL predefined name to the global name list in order 4581to 4582enable validation. Affects both the core ACPICA code and the iASL 4583compiler. 4584 4585Example Code and Data Size: These are the sizes for the OS-independent 4586acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4587debug 4588version of the code includes the debug output trace mechanism and has a 4589much 4590larger code and data size. 4591 4592 Previous Release (VC 9.0): 4593 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4594 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4595 Current Release (VC 9.0): 4596 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4597 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4598 45992) iASL Compiler/Disassembler and Tools: 4600 4601Debugger/AcpiExec: Implemented support for "complex" method arguments on 4602the 4603debugger command line. This adds support beyond simple integers -- 4604including 4605Strings, Buffers, and Packages. Includes support for nested packages. 4606Increased the default command line buffer size to accommodate these 4607arguments. 4608See the ACPICA reference for details and syntax. ACPICA BZ 917. 4609 4610Debugger/AcpiExec: Implemented support for "default" method arguments for 4611the 4612Execute/Debug command. Now, the debugger will always invoke a control 4613method 4614with the required number of arguments -- even if the command line 4615specifies 4616none or insufficient arguments. It uses default integer values for any 4617missing 4618arguments. Also fixes a bug where only six method arguments maximum were 4619supported instead of the required seven. 4620 4621Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 4622and 4623also return status in order to prevent buffer overruns. See the ACPICA 4624reference for details and syntax. ACPICA BZ 921 4625 4626iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 4627makefiles to simplify support for the two different but similar parser 4628generators, bison and yacc. 4629 4630Updated the generic unix makefile for gcc 4. The default gcc version is 4631now 4632expected to be 4 or greater, since options specific to gcc 4 are used. 4633 4634---------------------------------------- 463513 April 2011. Summary of changes for version 20110413: 4636 46371) ACPI CA Core Subsystem: 4638 4639Implemented support to execute a so-called "orphan" _REG method under the 4640EC 4641device. This change will force the execution of a _REG method underneath 4642the 4643EC 4644device even if there is no corresponding operation region of type 4645EmbeddedControl. Fixes a problem seen on some machines and apparently is 4646compatible with Windows behavior. ACPICA BZ 875. 4647 4648Added more predefined methods that are eligible for automatic NULL 4649package 4650element removal. This change adds another group of predefined names to 4651the 4652list 4653of names that can be repaired by having NULL package elements dynamically 4654removed. This group are those methods that return a single variable- 4655length 4656package containing simple data types such as integers, buffers, strings. 4657This 4658includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 4659_PSL, 4660_Sx, 4661and _TZD. ACPICA BZ 914. 4662 4663Split and segregated all internal global lock functions to a new file, 4664evglock.c. 4665 4666Updated internal address SpaceID for DataTable regions. Moved this 4667internal 4668space 4669id in preparation for ACPI 5.0 changes that will include some new space 4670IDs. 4671This 4672change should not affect user/host code. 4673 4674Example Code and Data Size: These are the sizes for the OS-independent 4675acpica.lib 4676produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 4677version of 4678the code includes the debug output trace mechanism and has a much larger 4679code 4680and 4681data size. 4682 4683 Previous Release (VC 9.0): 4684 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 4685 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 4686 Current Release (VC 9.0): 4687 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4688 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4689 46902) iASL Compiler/Disassembler and Tools: 4691 4692iASL/DTC: Major update for new grammar features. Allow generic data types 4693in 4694custom ACPI tables. Field names are now optional. Any line can be split 4695to 4696multiple lines using the continuation char (\). Large buffers now use 4697line- 4698continuation character(s) and no colon on the continuation lines. See the 4699grammar 4700update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 4701Moore. 4702 4703iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 4704statements. 4705Since the parser stuffs a "zero" as the return value for these statements 4706(due 4707to 4708the underlying AML grammar), they were seen as "return with value" by the 4709iASL 4710semantic checking. They are now seen correctly as "null" return 4711statements. 4712 4713iASL: Check if a_REG declaration has a corresponding Operation Region. 4714Adds a 4715check for each _REG to ensure that there is in fact a corresponding 4716operation 4717region declaration in the same scope. If not, the _REG method is not very 4718useful 4719since it probably won't be executed. ACPICA BZ 915. 4720 4721iASL/DTC: Finish support for expression evaluation. Added a new 4722expression 4723parser 4724that implements c-style operator precedence and parenthesization. ACPICA 4725bugzilla 4726908. 4727 4728Disassembler/DTC: Remove support for () and <> style comments in data 4729tables. 4730Now 4731that DTC has full expression support, we don't want to have comment 4732strings 4733that 4734start with a parentheses or a less-than symbol. Now, only the standard /* 4735and 4736// 4737comments are supported, as well as the bracket [] comments. 4738 4739AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 4740"unusual" 4741headers in the acpidump file. Update the header validation to support 4742these 4743tables. Problem introduced in previous AcpiXtract version in the change 4744to 4745support "wrong checksum" error messages emitted by acpidump utility. 4746 4747iASL: Add a * option to generate all template files (as a synonym for 4748ALL) 4749as 4750in 4751"iasl -T *" or "iasl -T ALL". 4752 4753iASL/DTC: Do not abort compiler on fatal errors. We do not want to 4754completely 4755abort the compiler on "fatal" errors, simply should abort the current 4756compile. 4757This allows multiple compiles with a single (possibly wildcard) compiler 4758invocation. 4759 4760---------------------------------------- 476116 March 2011. Summary of changes for version 20110316: 4762 47631) ACPI CA Core Subsystem: 4764 4765Fixed a problem caused by a _PRW method appearing at the namespace root 4766scope 4767during the setup of wake GPEs. A fault could occur if a _PRW directly 4768under 4769the 4770root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 4771 4772Implemented support for "spurious" Global Lock interrupts. On some 4773systems, a 4774global lock interrupt can occur without the pending flag being set. Upon 4775a 4776GL 4777interrupt, we now ensure that a thread is actually waiting for the lock 4778before 4779signaling GL availability. Rafael Wysocki, Bob Moore. 4780 4781Example Code and Data Size: These are the sizes for the OS-independent 4782acpica.lib 4783produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 4784version of 4785the code includes the debug output trace mechanism and has a much larger 4786code 4787and 4788data size. 4789 4790 Previous Release (VC 9.0): 4791 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4792 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4793 Current Release (VC 9.0): 4794 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 4795 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 4796 47972) iASL Compiler/Disassembler and Tools: 4798 4799Implemented full support for the "SLIC" ACPI table. Includes support in 4800the 4801header files, disassembler, table compiler, and template generator. Bob 4802Moore, 4803Lin Ming. 4804 4805AcpiXtract: Correctly handle embedded comments and messages from 4806AcpiDump. 4807Apparently some or all versions of acpidump will occasionally emit a 4808comment 4809like 4810"Wrong checksum", etc., into the dump file. This was causing problems for 4811AcpiXtract. ACPICA BZ 905. 4812 4813iASL: Fix the Linux makefile by removing an inadvertent double file 4814inclusion. 4815ACPICA BZ 913. 4816 4817AcpiExec: Update installation of operation region handlers. Install one 4818handler 4819for a user-defined address space. This is used by the ASL test suite 4820(ASLTS). 4821 4822---------------------------------------- 482311 February 2011. Summary of changes for version 20110211: 4824 48251) ACPI CA Core Subsystem: 4826 4827Added a mechanism to defer _REG methods for some early-installed 4828handlers. 4829Most user handlers should be installed before call to 4830AcpiEnableSubsystem. 4831However, Event handlers and region handlers should be installed after 4832AcpiInitializeObjects. Override handlers for the "default" regions should 4833be 4834installed early, however. This change executes all _REG methods for the 4835default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 4836chicken/egg issues between them. ACPICA BZ 848. 4837 4838Implemented an optimization for GPE detection. This optimization will 4839simply 4840ignore GPE registers that contain no enabled GPEs -- there is no need to 4841read the register since this information is available internally. This 4842becomes more important on machines with a large GPE space. ACPICA 4843bugzilla 4844884. Lin Ming. Suggestion from Joe Liu. 4845 4846Removed all use of the highly unreliable FADT revision field. The 4847revision 4848number in the FADT has been found to be completely unreliable and cannot 4849be 4850trusted. Only the actual table length can be used to infer the version. 4851This 4852change updates the ACPICA core and the disassembler so that both no 4853longer 4854even look at the FADT version and instead depend solely upon the FADT 4855length. 4856 4857Fix an unresolved name issue for the no-debug and no-error-message source 4858generation cases. The _AcpiModuleName was left undefined in these cases, 4859but 4860it is actually needed as a parameter to some interfaces. Define 4861_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 4862 4863Split several large files (makefiles and project files updated) 4864 utglobal.c -> utdecode.c 4865 dbcomds.c -> dbmethod.c dbnames.c 4866 dsopcode.c -> dsargs.c dscontrol.c 4867 dsload.c -> dsload2.c 4868 aslanalyze.c -> aslbtypes.c aslwalks.c 4869 4870Example Code and Data Size: These are the sizes for the OS-independent 4871acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4872debug version of the code includes the debug output trace mechanism and 4873has 4874a much larger code and data size. 4875 4876 Previous Release (VC 9.0): 4877 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4878 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4879 Current Release (VC 9.0): 4880 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4881 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4882 48832) iASL Compiler/Disassembler and Tools: 4884 4885iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 4886These are useful C-style macros with the standard definitions. ACPICA 4887bugzilla 898. 4888 4889iASL/DTC: Added support for integer expressions and labels. Support for 4890full 4891expressions for all integer fields in all ACPI tables. Support for labels 4892in 4893"generic" portions of tables such as UEFI. See the iASL reference manual. 4894 4895Debugger: Added a command to display the status of global handlers. The 4896"handlers" command will display op region, fixed event, and miscellaneous 4897global handlers. installation status -- and for op regions, whether 4898default 4899or user-installed handler will be used. 4900 4901iASL: Warn if reserved method incorrectly returns a value. Many 4902predefined 4903names are defined such that they do not return a value. If implemented as 4904a 4905method, issue a warning if such a name explicitly returns a value. ACPICA 4906Bugzilla 855. 4907 4908iASL: Added detection of GPE method name conflicts. Detects a conflict 4909where 4910there are two GPE methods of the form _Lxy and _Exy in the same scope. 4911(For 4912example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 4913 4914iASL/DTC: Fixed a couple input scanner issues with comments and line 4915numbers. Comment remover could get confused and miss a comment ending. 4916Fixed 4917a problem with line counter maintenance. 4918 4919iASL/DTC: Reduced the severity of some errors from fatal to error. There 4920is 4921no need to abort on simple errors within a field definition. 4922 4923Debugger: Simplified the output of the help command. All help output now 4924in 4925a single screen, instead of help subcommands. ACPICA Bugzilla 897. 4926 4927---------------------------------------- 492812 January 2011. Summary of changes for version 20110112: 4929 49301) ACPI CA Core Subsystem: 4931 4932Fixed a race condition between method execution and namespace walks that 4933can 4934possibly cause a fault. The problem was apparently introduced in version 493520100528 as a result of a performance optimization that reduces the 4936number 4937of 4938namespace walks upon method exit by using the delete_namespace_subtree 4939function instead of the delete_namespace_by_owner function used 4940previously. 4941Bug is a missing namespace lock in the delete_namespace_subtree function. 4942dana.myers@oracle.com 4943 4944Fixed several issues and a possible fault with the automatic "serialized" 4945method support. History: This support changes a method to "serialized" on 4946the 4947fly if the method generates an AE_ALREADY_EXISTS error, indicating the 4948possibility that it cannot handle reentrancy. This fix repairs a couple 4949of 4950issues seen in the field, especially on machines with many cores: 4951 4952 1) Delete method children only upon the exit of the last thread, 4953 so as to not delete objects out from under other running threads 4954 (and possibly causing a fault.) 4955 2) Set the "serialized" bit for the method only upon the exit of the 4956 Last thread, so as to not cause deadlock when running threads 4957 attempt to exit. 4958 3) Cleanup the use of the AML "MethodFlags" and internal method flags 4959 so that there is no longer any confusion between the two. 4960 4961 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 4962 4963Debugger: Now lock the namespace for duration of a namespace dump. 4964Prevents 4965issues if the namespace is changing dynamically underneath the debugger. 4966Especially affects temporary namespace nodes, since the debugger displays 4967these also. 4968 4969Updated the ordering of include files. The ACPICA headers should appear 4970before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 4971set 4972any necessary compiler-specific defines, etc. Affects the ACPI-related 4973tools 4974and utilities. 4975 4976Updated all ACPICA copyrights and signons to 2011. Added the 2011 4977copyright 4978to all module headers and signons, including the Linux header. This 4979affects 4980virtually every file in the ACPICA core subsystem, iASL compiler, and all 4981utilities. 4982 4983Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 4984project files for VC++ 6.0 are now obsolete. New project files can be 4985found 4986under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 4987details. 4988 4989Example Code and Data Size: These are the sizes for the OS-independent 4990acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4991debug version of the code includes the debug output trace mechanism and 4992has a 4993much larger code and data size. 4994 4995 Previous Release (VC 6.0): 4996 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 4997 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 4998 Current Release (VC 9.0): 4999 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5000 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5001 50022) iASL Compiler/Disassembler and Tools: 5003 5004iASL: Added generic data types to the Data Table compiler. Add "generic" 5005data 5006types such as UINT32, String, Unicode, etc., to simplify the generation 5007of 5008platform-defined tables such as UEFI. Lin Ming. 5009 5010iASL: Added listing support for the Data Table Compiler. Adds listing 5011support 5012(-l) to display actual binary output for each line of input code. 5013 5014---------------------------------------- 501509 December 2010. Summary of changes for version 20101209: 5016 50171) ACPI CA Core Subsystem: 5018 5019Completed the major overhaul of the GPE support code that was begun in 5020July 50212010. Major features include: removal of _PRW execution in ACPICA (host 5022executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 5023changes to existing interfaces, simplification of GPE handler operation, 5024and 5025a handful of new interfaces: 5026 5027 AcpiUpdateAllGpes 5028 AcpiFinishGpe 5029 AcpiSetupGpeForWake 5030 AcpiSetGpeWakeMask 5031 One new file, evxfgpe.c to consolidate all external GPE interfaces. 5032 5033See the ACPICA Programmer Reference for full details and programming 5034information. See the new section 4.4 "General Purpose Event (GPE) 5035Support" 5036for a full overview, and section 8.7 "ACPI General Purpose Event 5037Management" 5038for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 5039Ming, 5040Bob Moore, Rafael Wysocki. 5041 5042Implemented a new GPE feature for Windows compatibility, the "Implicit 5043Wake 5044GPE Notify". This feature will automatically issue a Notify(2) on a 5045device 5046when a Wake GPE is received if there is no corresponding GPE method or 5047handler. ACPICA BZ 870. 5048 5049Fixed a problem with the Scope() operator during table parse and load 5050phase. 5051During load phase (table load or method execution), the scope operator 5052should 5053not enter the target into the namespace. Instead, it should open a new 5054scope 5055at the target location. Linux BZ 19462, ACPICA BZ 882. 5056 5057Example Code and Data Size: These are the sizes for the OS-independent 5058acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5059debug version of the code includes the debug output trace mechanism and 5060has a 5061much larger code and data size. 5062 5063 Previous Release: 5064 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 5065 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 5066 Current Release: 5067 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5068 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5069 50702) iASL Compiler/Disassembler and Tools: 5071 5072iASL: Relax the alphanumeric restriction on _CID strings. These strings 5073are 5074"bus-specific" per the ACPI specification, and therefore any characters 5075are 5076acceptable. The only checks that can be performed are for a null string 5077and 5078perhaps for a leading asterisk. ACPICA BZ 886. 5079 5080iASL: Fixed a problem where a syntax error that caused a premature EOF 5081condition on the source file emitted a very confusing error message. The 5082premature EOF is now detected correctly. ACPICA BZ 891. 5083 5084Disassembler: Decode the AccessSize within a Generic Address Structure 5085(byte 5086access, word access, etc.) Note, this field does not allow arbitrary bit 5087access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 5088 5089New: AcpiNames utility - Example namespace dump utility. Shows an example 5090of 5091ACPICA configuration for a minimal namespace dump utility. Uses table and 5092namespace managers, but no AML interpreter. Does not add any 5093functionality 5094over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 5095partition and configure ACPICA. ACPICA BZ 883. 5096 5097AML Debugger: Increased the debugger buffer size for method return 5098objects. 5099Was 4K, increased to 16K. Also enhanced error messages for debugger 5100method 5101execution, including the buffer overflow case. 5102 5103---------------------------------------- 510413 October 2010. Summary of changes for version 20101013: 5105 51061) ACPI CA Core Subsystem: 5107 5108Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 5109now 5110clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 5111HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 5112 5113Changed the type of the predefined namespace object _TZ from ThermalZone 5114to 5115Device. This was found to be confusing to the host software that 5116processes 5117the various thermal zones, since _TZ is not really a ThermalZone. 5118However, 5119a 5120Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 5121Zhang. 5122 5123Added Windows Vista SP2 to the list of supported _OSI strings. The actual 5124string is "Windows 2006 SP2". 5125 5126Eliminated duplicate code in AcpiUtExecute* functions. Now that the 5127nsrepair 5128code automatically repairs _HID-related strings, this type of code is no 5129longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 5130878. 5131 5132Example Code and Data Size: These are the sizes for the OS-independent 5133acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5134debug version of the code includes the debug output trace mechanism and 5135has a 5136much larger code and data size. 5137 5138 Previous Release: 5139 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5140 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5141 Current Release: 5142 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5143 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5144 51452) iASL Compiler/Disassembler and Tools: 5146 5147iASL: Implemented additional compile-time validation for _HID strings. 5148The 5149non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 5150length 5151of 5152the string must be exactly seven or eight characters. For both _HID and 5153_CID 5154strings, all characters must be alphanumeric. ACPICA BZ 874. 5155 5156iASL: Allow certain "null" resource descriptors. Some BIOS code creates 5157descriptors that are mostly or all zeros, with the expectation that they 5158will 5159be filled in at runtime. iASL now allows this as long as there is a 5160"resource 5161tag" (name) associated with the descriptor, which gives the ASL a handle 5162needed to modify the descriptor. ACPICA BZ 873. 5163 5164Added single-thread support to the generic Unix application OSL. 5165Primarily 5166for iASL support, this change removes the use of semaphores in the 5167single- 5168threaded ACPICA tools/applications - increasing performance. The 5169_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 5170option. ACPICA BZ 879. 5171 5172AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 5173support 5174for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 5175 5176iASL: Moved all compiler messages to a new file, aslmessages.h. 5177 5178---------------------------------------- 517915 September 2010. Summary of changes for version 20100915: 5180 51811) ACPI CA Core Subsystem: 5182 5183Removed the AcpiOsDerivePciId OSL interface. The various host 5184implementations 5185of this function were not OS-dependent and are now obsolete and can be 5186removed from all host OSLs. This function has been replaced by 5187AcpiHwDerivePciId, which is now part of the ACPICA core code. 5188AcpiHwDerivePciId has been implemented without recursion. Adds one new 5189module, hwpci.c. ACPICA BZ 857. 5190 5191Implemented a dynamic repair for _HID and _CID strings. The following 5192problems are now repaired at runtime: 1) Remove a leading asterisk in the 5193string, and 2) the entire string is uppercased. Both repairs are in 5194accordance with the ACPI specification and will simplify host driver 5195code. 5196ACPICA BZ 871. 5197 5198The ACPI_THREAD_ID type is no longer configurable, internally it is now 5199always UINT64. This simplifies the ACPICA code, especially any printf 5200output. 5201UINT64 is the only common data type for all thread_id types across all 5202operating systems. It is now up to the host OSL to cast the native 5203thread_id 5204type to UINT64 before returning the value to ACPICA (via 5205AcpiOsGetThreadId). 5206Lin Ming, Bob Moore. 5207 5208Added the ACPI_INLINE type to enhance the ACPICA configuration. The 5209"inline" 5210keyword is not standard across compilers, and this type allows inline to 5211be 5212configured on a per-compiler basis. Lin Ming. 5213 5214Made the system global AcpiGbl_SystemAwakeAndRunning publically 5215available. 5216Added an extern for this boolean in acpixf.h. Some hosts utilize this 5217value 5218during suspend/restore operations. ACPICA BZ 869. 5219 5220All code that implements error/warning messages with the "ACPI:" prefix 5221has 5222been moved to a new module, utxferror.c. 5223 5224The UINT64_OVERLAY was moved to utmath.c, which is the only module where 5225it 5226is used. ACPICA BZ 829. Lin Ming, Bob Moore. 5227 5228Example Code and Data Size: These are the sizes for the OS-independent 5229acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5230debug version of the code includes the debug output trace mechanism and 5231has a 5232much larger code and data size. 5233 5234 Previous Release: 5235 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5236 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5237 Current Release: 5238 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5239 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5240 52412) iASL Compiler/Disassembler and Tools: 5242 5243iASL/Disassembler: Write ACPI errors to stderr instead of the output 5244file. 5245This keeps the output files free of random error messages that may 5246originate 5247from within the namespace/interpreter code. Used this opportunity to 5248merge 5249all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 5250866. Lin Ming, Bob Moore. 5251 5252Tools: update some printfs for ansi warnings on size_t. Handle width 5253change 5254of size_t on 32-bit versus 64-bit generations. Lin Ming. 5255 5256---------------------------------------- 525706 August 2010. Summary of changes for version 20100806: 5258 52591) ACPI CA Core Subsystem: 5260 5261Designed and implemented a new host interface to the _OSI support code. 5262This 5263will allow the host to dynamically add or remove multiple _OSI strings, 5264as 5265well as install an optional handler that is called for each _OSI 5266invocation. 5267Also added a new AML debugger command, 'osi' to display and modify the 5268global 5269_OSI string table, and test support in the AcpiExec utility. See the 5270ACPICA 5271reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 5272New Functions: 5273 AcpiInstallInterface - Add an _OSI string. 5274 AcpiRemoveInterface - Delete an _OSI string. 5275 AcpiInstallInterfaceHandler - Install optional _OSI handler. 5276Obsolete Functions: 5277 AcpiOsValidateInterface - no longer used. 5278New Files: 5279 source/components/utilities/utosi.c 5280 5281Re-introduced the support to enable multi-byte transfers for Embedded 5282Controller (EC) operation regions. A reported problem was found to be a 5283bug 5284in the host OS, not in the multi-byte support. Previously, the maximum 5285data 5286size passed to the EC operation region handler was a single byte. There 5287are 5288often EC Fields larger than one byte that need to be transferred, and it 5289is 5290useful for the EC driver to lock these as a single transaction. This 5291change 5292enables single transfers larger than 8 bits. This effectively changes the 5293access to the EC space from ByteAcc to AnyAcc, and will probably require 5294changes to the host OS Embedded Controller driver to enable 16/32/64/256- 5295bit 5296transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 5297 5298Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 5299prototype in acpiosxf.h had the output value pointer as a (void *). 5300It should be a (UINT64 *). This may affect some host OSL code. 5301 5302Fixed a couple problems with the recently modified Linux makefiles for 5303iASL 5304and AcpiExec. These new makefiles place the generated object files in the 5305local directory so that there can be no collisions between the files that 5306are 5307shared between them that are compiled with different options. 5308 5309Example Code and Data Size: These are the sizes for the OS-independent 5310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5311debug version of the code includes the debug output trace mechanism and 5312has a 5313much larger code and data size. 5314 5315 Previous Release: 5316 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5317 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5318 Current Release: 5319 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5320 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5321 53222) iASL Compiler/Disassembler and Tools: 5323 5324iASL/Disassembler: Added a new option (-da, "disassemble all") to load 5325the 5326namespace from and disassemble an entire group of AML files. Useful for 5327loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 5328and 5329disassembling with one simple command. ACPICA BZ 865. Lin Ming. 5330 5331iASL: Allow multiple invocations of -e option. This change allows 5332multiple 5333uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 5334834. 5335Lin Ming. 5336 5337---------------------------------------- 533802 July 2010. Summary of changes for version 20100702: 5339 53401) ACPI CA Core Subsystem: 5341 5342Implemented several updates to the recently added GPE reference count 5343support. The model for "wake" GPEs is changing to give the host OS 5344complete 5345control of these GPEs. Eventually, the ACPICA core will not execute any 5346_PRW 5347methods, since the host already must execute them. Also, additional 5348changes 5349were made to help ensure that the reference counts are kept in proper 5350synchronization with reality. Rafael J. Wysocki. 5351 53521) Ensure that GPEs are not enabled twice during initialization. 53532) Ensure that GPE enable masks stay in sync with the reference count. 53543) Do not inadvertently enable GPEs when writing GPE registers. 53554) Remove the internal wake reference counter and add new AcpiGpeWakeup 5356interface. This interface will set or clear individual GPEs for wakeup. 53575) Remove GpeType argument from AcpiEnable and AcpiDisable. These 5358interfaces 5359are now used for "runtime" GPEs only. 5360 5361Changed the behavior of the GPE install/remove handler interfaces. The 5362GPE 5363is 5364no longer disabled during this process, as it was found to cause problems 5365on 5366some machines. Rafael J. Wysocki. 5367 5368Reverted a change introduced in version 20100528 to enable Embedded 5369Controller multi-byte transfers. This change was found to cause problems 5370with 5371Index Fields and possibly Bank Fields. It will be reintroduced when these 5372problems have been resolved. 5373 5374Fixed a problem with references to Alias objects within Package Objects. 5375A 5376reference to an Alias within the definition of a Package was not always 5377resolved properly. Aliases to objects like Processors, Thermal zones, 5378etc. 5379were resolved to the actual object instead of a reference to the object 5380as 5381it 5382should be. Package objects are only allowed to contain integer, string, 5383buffer, package, and reference objects. Redhat bugzilla 608648. 5384 5385Example Code and Data Size: These are the sizes for the OS-independent 5386acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5387debug version of the code includes the debug output trace mechanism and 5388has a 5389much larger code and data size. 5390 5391 Previous Release: 5392 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5393 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5394 Current Release: 5395 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5396 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5397 53982) iASL Compiler/Disassembler and Tools: 5399 5400iASL: Implemented a new compiler subsystem to allow definition and 5401compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 5402These 5403are called "ACPI Data Tables", and the new compiler is the "Data Table 5404Compiler". This compiler is intended to simplify the existing error-prone 5405process of creating these tables for the BIOS, as well as allowing the 5406disassembly, modification, recompilation, and override of existing ACPI 5407data 5408tables. See the iASL User Guide for detailed information. 5409 5410iASL: Implemented a new Template Generator option in support of the new 5411Data 5412Table Compiler. This option will create examples of all known ACPI tables 5413that can be used as the basis for table development. See the iASL 5414documentation and the -T option. 5415 5416Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 5417Descriptor Table). 5418 5419Updated the Linux makefiles for iASL and AcpiExec to place the generated 5420object files in the local directory so that there can be no collisions 5421between the shared files between them that are generated with different 5422options. 5423 5424Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 5425Use 5426the #define __APPLE__ to enable this support. 5427 5428---------------------------------------- 542928 May 2010. Summary of changes for version 20100528: 5430 5431Note: The ACPI 4.0a specification was released on April 5, 2010 and is 5432available at www.acpi.info. This is primarily an errata release. 5433 54341) ACPI CA Core Subsystem: 5435 5436Undefined ACPI tables: We are looking for the definitions for the 5437following 5438ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 5439 5440Implemented support to enable multi-byte transfers for Embedded 5441Controller 5442(EC) operation regions. Previously, the maximum data size passed to the 5443EC 5444operation region handler was a single byte. There are often EC Fields 5445larger 5446than one byte that need to be transferred, and it is useful for the EC 5447driver 5448to lock these as a single transaction. This change enables single 5449transfers 5450larger than 8 bits. This effectively changes the access to the EC space 5451from 5452ByteAcc to AnyAcc, and will probably require changes to the host OS 5453Embedded 5454Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 5455bit 5456transfers. Alexey Starikovskiy, Lin Ming 5457 5458Implemented a performance enhancement for namespace search and access. 5459This 5460change enhances the performance of namespace searches and walks by adding 5461a 5462backpointer to the parent in each namespace node. On large namespaces, 5463this 5464change can improve overall ACPI performance by up to 9X. Adding a pointer 5465to 5466each namespace node increases the overall size of the internal namespace 5467by 5468about 5%, since each namespace entry usually consists of both a namespace 5469node and an ACPI operand object. However, this is the first growth of the 5470namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 5471 5472Implemented a performance optimization that reduces the number of 5473namespace 5474walks. On control method exit, only walk the namespace if the method is 5475known 5476to have created namespace objects outside of its local scope. Previously, 5477the 5478entire namespace was traversed on each control method exit. This change 5479can 5480improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 5481Moore. 5482 5483Added support to truncate I/O addresses to 16 bits for Windows 5484compatibility. 5485Some ASL code has been seen in the field that inadvertently has bits set 5486above bit 15. This feature is optional and is enabled if the BIOS 5487requests 5488any Windows OSI strings. It can also be enabled by the host OS. Matthew 5489Garrett, Bob Moore. 5490 5491Added support to limit the maximum time for the ASL Sleep() operator. To 5492prevent accidental deep sleeps, limit the maximum time that Sleep() will 5493actually sleep. Configurable, the default maximum is two seconds. ACPICA 5494bugzilla 854. 5495 5496Added run-time validation support for the _WDG and_WED Microsoft 5497predefined 5498methods. These objects are defined by "Windows Instrumentation", and are 5499not 5500part of the ACPI spec. ACPICA BZ 860. 5501 5502Expanded all statistic counters used during namespace and device 5503initialization from 16 to 32 bits in order to support very large 5504namespaces. 5505 5506Replaced all instances of %d in printf format specifiers with %u since 5507nearly 5508all integers in ACPICA are unsigned. 5509 5510Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 5511returned 5512as AE_NO_HANDLER. 5513 5514Example Code and Data Size: These are the sizes for the OS-independent 5515acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5516debug version of the code includes the debug output trace mechanism and 5517has a 5518much larger code and data size. 5519 5520 Previous Release: 5521 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5522 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5523 Current Release: 5524 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5525 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5526 55272) iASL Compiler/Disassembler and Tools: 5528 5529iASL: Added compiler support for the _WDG and_WED Microsoft predefined 5530methods. These objects are defined by "Windows Instrumentation", and are 5531not 5532part of the ACPI spec. ACPICA BZ 860. 5533 5534AcpiExec: added option to disable the memory tracking mechanism. The -dt 5535option will disable the tracking mechanism, which improves performance 5536considerably. 5537 5538AcpiExec: Restructured the command line options into -d (disable) and -e 5539(enable) options. 5540 5541---------------------------------------- 554228 April 2010. Summary of changes for version 20100428: 5543 55441) ACPI CA Core Subsystem: 5545 5546Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 5547including FADT-based and GPE Block Devices, execute any _PRW methods in 5548the 5549new table, and process any _Lxx/_Exx GPE methods in the new table. Any 5550runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 5551immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 5552Devices. Provides compatibility with other ACPI implementations. Two new 5553files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 5554Moore. 5555 5556Fixed a regression introduced in version 20100331 within the table 5557manager 5558where initial table loading could fail. This was introduced in the fix 5559for 5560AcpiReallocateRootTable. Also, renamed some of fields in the table 5561manager 5562data structures to clarify their meaning and use. 5563 5564Fixed a possible allocation overrun during internal object copy in 5565AcpiUtCopySimpleObject. The original code did not correctly handle the 5566case 5567where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 5568847. 5569 5570Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 5571possible access beyond end-of-allocation. Also, now fully validate 5572descriptor 5573(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 5574 5575Example Code and Data Size: These are the sizes for the OS-independent 5576acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5577debug version of the code includes the debug output trace mechanism and 5578has a 5579much larger code and data size. 5580 5581 Previous Release: 5582 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5583 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5584 Current Release: 5585 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5586 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5587 55882) iASL Compiler/Disassembler and Tools: 5589 5590iASL: Implemented Min/Max/Len/Gran validation for address resource 5591descriptors. This change implements validation for the address fields 5592that 5593are common to all address-type resource descriptors. These checks are 5594implemented: Checks for valid Min/Max, length within the Min/Max window, 5595valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 5596per 5597table 6-40 in the ACPI 4.0a specification. Also split the large 5598aslrestype1.c 5599and aslrestype2.c files into five new files. ACPICA BZ 840. 5600 5601iASL: Added support for the _Wxx predefined names. This support was 5602missing 5603and these names were not recognized by the compiler as valid predefined 5604names. ACPICA BZ 851. 5605 5606iASL: Added an error for all predefined names that are defined to return 5607no 5608value and thus must be implemented as Control Methods. These include all 5609of 5610the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 5611names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 5612 5613iASL: Implemented the -ts option to emit hex AML data in ASL format, as 5614an 5615ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 5616be 5617dynamically loaded via the Load() operator. Also cleaned up output for 5618the 5619- 5620ta and -tc options. ACPICA BZ 853. 5621 5622Tests: Added a new file with examples of extended iASL error checking. 5623Demonstrates the advanced error checking ability of the iASL compiler. 5624Available at tests/misc/badcode.asl. 5625 5626---------------------------------------- 562731 March 2010. Summary of changes for version 20100331: 5628 56291) ACPI CA Core Subsystem: 5630 5631Completed a major update for the GPE support in order to improve support 5632for 5633shared GPEs and to simplify both host OS and ACPICA code. Added a 5634reference 5635count mechanism to support shared GPEs that require multiple device 5636drivers. 5637Several external interfaces have changed. One external interface has been 5638removed. One new external interface was added. Most of the GPE external 5639interfaces now use the GPE spinlock instead of the events mutex (and the 5640Flags parameter for many GPE interfaces has been removed.) See the 5641updated 5642ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 5643Rafael 5644Wysocki. ACPICA BZ 831. 5645 5646Changed: 5647 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 5648Removed: 5649 AcpiSetGpeType 5650New: 5651 AcpiSetGpe 5652 5653Implemented write support for DataTable operation regions. These regions 5654are 5655defined via the DataTableRegion() operator. Previously, only read support 5656was 5657implemented. The ACPI specification allows DataTableRegions to be 5658read/write, 5659however. 5660 5661Implemented a new subsystem option to force a copy of the DSDT to local 5662memory. Optionally copy the entire DSDT to local memory (instead of 5663simply 5664mapping it.) There are some (albeit very rare) BIOSs that corrupt or 5665replace 5666the original DSDT, creating the need for this option. Default is FALSE, 5667do 5668not copy the DSDT. 5669 5670Implemented detection of a corrupted or replaced DSDT. This change adds 5671support to detect a DSDT that has been corrupted and/or replaced from 5672outside 5673the OS (by firmware). This is typically catastrophic for the system, but 5674has 5675been seen on some machines. Once this problem has been detected, the DSDT 5676copy option can be enabled via system configuration. Lin Ming, Bob Moore. 5677 5678Fixed two problems with AcpiReallocateRootTable during the root table 5679copy. 5680When copying the root table to the new allocation, the length used was 5681incorrect. The new size was used instead of the current table size, 5682meaning 5683too much data was copied. Also, the count of available slots for ACPI 5684tables 5685was not set correctly. Alexey Starikovskiy, Bob Moore. 5686 5687Example Code and Data Size: These are the sizes for the OS-independent 5688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5689debug version of the code includes the debug output trace mechanism and 5690has a 5691much larger code and data size. 5692 5693 Previous Release: 5694 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 5695 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 5696 Current Release: 5697 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5698 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5699 57002) iASL Compiler/Disassembler and Tools: 5701 5702iASL: Implement limited typechecking for values returned from predefined 5703control methods. The type of any returned static (unnamed) object is now 5704validated. For example, Return(1). ACPICA BZ 786. 5705 5706iASL: Fixed a predefined name object verification regression. Fixes a 5707problem 5708introduced in version 20100304. An error is incorrectly generated if a 5709predefined name is declared as a static named object with a value defined 5710using the keywords "Zero", "One", or "Ones". Lin Ming. 5711 5712iASL: Added Windows 7 support for the -g option (get local ACPI tables) 5713by 5714reducing the requested registry access rights. ACPICA BZ 842. 5715 5716Disassembler: fixed a possible fault when generating External() 5717statements. 5718Introduced in commit ae7d6fd: Properly handle externals with parent- 5719prefix 5720(carat). Fixes a string length allocation calculation. Lin Ming. 5721 5722---------------------------------------- 572304 March 2010. Summary of changes for version 20100304: 5724 57251) ACPI CA Core Subsystem: 5726 5727Fixed a possible problem with the AML Mutex handling function 5728AcpiExReleaseMutex where the function could fault under the very rare 5729condition when the interpreter has blocked, the interpreter lock is 5730released, 5731the interpreter is then reentered via the same thread, and attempts to 5732acquire an AML mutex that was previously acquired. FreeBSD report 140979. 5733Lin 5734Ming. 5735 5736Implemented additional configuration support for the AML "Debug Object". 5737Output from the debug object can now be enabled via a global variable, 5738AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 5739debugging. 5740This debug output is now available in the release version of ACPICA 5741instead 5742of just the debug version. Also, the entire debug output module can now 5743be 5744configured out of the ACPICA build if desired. One new file added, 5745executer/exdebug.c. Lin Ming, Bob Moore. 5746 5747Added header support for the ACPI MCHI table (Management Controller Host 5748Interface Table). This table was added in ACPI 4.0, but the defining 5749document 5750has only recently become available. 5751 5752Standardized output of integer values for ACPICA warnings/errors. Always 5753use 57540x prefix for hex output, always use %u for unsigned integer decimal 5755output. 5756Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 5757400 5758invocations.) These invocations were converted from the original 5759ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 5760 5761Example Code and Data Size: These are the sizes for the OS-independent 5762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5763debug version of the code includes the debug output trace mechanism and 5764has a 5765much larger code and data size. 5766 5767 Previous Release: 5768 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 5769 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 5770 Current Release: 5771 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 5772 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 5773 57742) iASL Compiler/Disassembler and Tools: 5775 5776iASL: Implemented typechecking support for static (non-control method) 5777predefined named objects that are declared with the Name() operator. For 5778example, the type of this object is now validated to be of type Integer: 5779Name(_BBN, 1). This change migrates the compiler to using the core 5780predefined 5781name table instead of maintaining a local version. Added a new file, 5782aslpredef.c. ACPICA BZ 832. 5783 5784Disassembler: Added support for the ACPI 4.0 MCHI table. 5785 5786---------------------------------------- 578721 January 2010. Summary of changes for version 20100121: 5788 57891) ACPI CA Core Subsystem: 5790 5791Added the 2010 copyright to all module headers and signons. This affects 5792virtually every file in the ACPICA core subsystem, the iASL compiler, the 5793tools/utilities, and the test suites. 5794 5795Implemented a change to the AcpiGetDevices interface to eliminate 5796unnecessary 5797invocations of the _STA method. In the case where a specific _HID is 5798requested, do not run _STA until a _HID match is found. This eliminates 5799potentially dozens of _STA calls during a search for a particular 5800device/HID, 5801which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 5802 5803Implemented an additional repair for predefined method return values. 5804Attempt 5805to repair unexpected NULL elements within returned Package objects. 5806Create 5807an 5808Integer of value zero, a NULL String, or a zero-length Buffer as 5809appropriate. 5810ACPICA BZ 818. Lin Ming, Bob Moore. 5811 5812Removed the obsolete ACPI_INTEGER data type. This type was introduced as 5813the 5814code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 5815(with 581664-bit AML integers). It is now obsolete and this change removes it from 5817the 5818ACPICA code base, replaced by UINT64. The original typedef has been 5819retained 5820for now for compatibility with existing device driver code. ACPICA BZ 5821824. 5822 5823Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 5824in 5825the parse tree object. 5826 5827Added additional warning options for the gcc-4 generation. Updated the 5828source 5829accordingly. This includes some code restructuring to eliminate 5830unreachable 5831code, elimination of some gotos, elimination of unused return values, 5832some 5833additional casting, and removal of redundant declarations. 5834 5835Example Code and Data Size: These are the sizes for the OS-independent 5836acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5837debug version of the code includes the debug output trace mechanism and 5838has a 5839much larger code and data size. 5840 5841 Previous Release: 5842 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5843 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5844 Current Release: 5845 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 5846 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 5847 58482) iASL Compiler/Disassembler and Tools: 5849 5850No functional changes for this release. 5851 5852---------------------------------------- 585314 December 2009. Summary of changes for version 20091214: 5854 58551) ACPI CA Core Subsystem: 5856 5857Enhanced automatic data type conversions for predefined name repairs. 5858This 5859change expands the automatic repairs/conversions for predefined name 5860return 5861values to make Integers, Strings, and Buffers fully interchangeable. 5862Also, 5863a 5864Buffer can be converted to a Package of Integers if necessary. The 5865nsrepair.c 5866module was completely restructured. Lin Ming, Bob Moore. 5867 5868Implemented automatic removal of null package elements during predefined 5869name 5870repairs. This change will automatically remove embedded and trailing NULL 5871package elements from returned package objects that are defined to 5872contain 5873a 5874variable number of sub-packages. The driver is then presented with a 5875package 5876with no null elements to deal with. ACPICA BZ 819. 5877 5878Implemented a repair for the predefined _FDE and _GTM names. The expected 5879return value for both names is a Buffer of 5 DWORDs. This repair fixes 5880two 5881possible problems (both seen in the field), where a package of integers 5882is 5883returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 5884Kim. 5885 5886Implemented additional module-level code support. This change will 5887properly 5888execute module-level code that is not at the root of the namespace (under 5889a 5890Device object, etc.). Now executes the code within the current scope 5891instead 5892of the root. ACPICA BZ 762. Lin Ming. 5893 5894Fixed possible mutex acquisition errors when running _REG methods. Fixes 5895a 5896problem where mutex errors can occur when running a _REG method that is 5897in 5898the same scope as a method-defined operation region or an operation 5899region 5900under a module-level IF block. This type of code is rare, so the problem 5901has 5902not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 5903 5904Fixed a possible memory leak during module-level code execution. An 5905object 5906could be leaked for each block of executed module-level code if the 5907interpreter slack mode is enabled This change deletes any implicitly 5908returned 5909object from the module-level code block. Lin Ming. 5910 5911Removed messages for successful predefined repair(s). The repair 5912mechanism 5913was considered too wordy. Now, messages are only unconditionally emitted 5914if 5915the return object cannot be repaired. Existing messages for successful 5916repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 5917827. 5918 5919Example Code and Data Size: These are the sizes for the OS-independent 5920acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5921debug version of the code includes the debug output trace mechanism and 5922has a 5923much larger code and data size. 5924 5925 Previous Release: 5926 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 5927 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 5928 Current Release: 5929 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5930 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5931 59322) iASL Compiler/Disassembler and Tools: 5933 5934iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 5935files 5936were no longer automatically removed at the termination of the compile. 5937 5938acpiexec: Implemented the -f option to specify default region fill value. 5939This option specifies the value used to initialize buffers that simulate 5940operation regions. Default value is zero. Useful for debugging problems 5941that 5942depend on a specific initial value for a region or field. 5943 5944---------------------------------------- 594512 November 2009. Summary of changes for version 20091112: 5946 59471) ACPI CA Core Subsystem: 5948 5949Implemented a post-order callback to AcpiWalkNamespace. The existing 5950interface only has a pre-order callback. This change adds an additional 5951parameter for a post-order callback which will be more useful for bus 5952scans. 5953ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 5954 5955Modified the behavior of the operation region memory mapping cache for 5956SystemMemory. Ensure that the memory mappings created for operation 5957regions 5958do not cross 4K page boundaries. Crossing a page boundary while mapping 5959regions can cause kernel warnings on some hosts if the pages have 5960different 5961attributes. Such regions are probably BIOS bugs, and this is the 5962workaround. 5963Linux BZ 14445. Lin Ming. 5964 5965Implemented an automatic repair for predefined methods that must return 5966sorted lists. This change will repair (by sorting) packages returned by 5967_ALR, 5968_PSS, and _TSS. Drivers can now assume that the packages are correctly 5969sorted 5970and do not contain NULL package elements. Adds one new file, 5971namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 5972 5973Fixed a possible fault during predefined name validation if a return 5974Package 5975object contains NULL elements. Also adds a warning if a NULL element is 5976followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 5977may 5978include repair or removal of all such NULL elements where possible. 5979 5980Implemented additional module-level executable AML code support. This 5981change 5982will execute module-level code that is not at the root of the namespace 5983(under a Device object, etc.) at table load time. Module-level executable 5984AML 5985code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 5986 5987Implemented a new internal function to create Integer objects. This 5988function 5989simplifies miscellaneous object creation code. ACPICA BZ 823. 5990 5991Reduced the severity of predefined repair messages, Warning to Info. 5992Since 5993the object was successfully repaired, a warning is too severe. Reduced to 5994an 5995info message for now. These messages may eventually be changed to debug- 5996only. 5997ACPICA BZ 812. 5998 5999Example Code and Data Size: These are the sizes for the OS-independent 6000acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6001debug version of the code includes the debug output trace mechanism and 6002has a 6003much larger code and data size. 6004 6005 Previous Release: 6006 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6007 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6008 Current Release: 6009 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 6010 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 6011 60122) iASL Compiler/Disassembler and Tools: 6013 6014iASL: Implemented Switch() with While(1) so that Break works correctly. 6015This 6016change correctly implements the Switch operator with a surrounding 6017While(1) 6018so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 6019 6020iASL: Added a message if a package initializer list is shorter than 6021package 6022length. Adds a new remark for a Package() declaration if an initializer 6023list 6024exists, but is shorter than the declared length of the package. Although 6025technically legal, this is probably a coding error and it is seen in the 6026field. ACPICA BZ 815. Lin Ming, Bob Moore. 6027 6028iASL: Fixed a problem where the compiler could fault after the maximum 6029number 6030of errors was reached (200). 6031 6032acpixtract: Fixed a possible warning for pointer cast if the compiler 6033warning 6034level set very high. 6035 6036---------------------------------------- 603713 October 2009. Summary of changes for version 20091013: 6038 60391) ACPI CA Core Subsystem: 6040 6041Fixed a problem where an Operation Region _REG method could be executed 6042more 6043than once. If a custom address space handler is installed by the host 6044before 6045the "initialize operation regions" phase of the ACPICA initialization, 6046any 6047_REG methods for that address space could be executed twice. This change 6048fixes the problem. ACPICA BZ 427. Lin Ming. 6049 6050Fixed a possible memory leak for the Scope() ASL operator. When the exact 6051invocation of "Scope(\)" is executed (change scope to root), one internal 6052operand object was leaked. Lin Ming. 6053 6054Implemented a run-time repair for the _MAT predefined method. If the _MAT 6055return value is defined as a Field object in the AML, and the field 6056size is less than or equal to the default width of an integer (32 or 605764),_MAT 6058can incorrectly return an Integer instead of a Buffer. ACPICA now 6059automatically repairs this problem. ACPICA BZ 810. 6060 6061Implemented a run-time repair for the _BIF and _BIX predefined methods. 6062The 6063"OEM Information" field is often incorrectly returned as an Integer with 6064value zero if the field is not supported by the platform. This is due to 6065an 6066ambiguity in the ACPI specification. The field should always be a string. 6067ACPICA now automatically repairs this problem by returning a NULL string 6068within the returned Package. ACPICA BZ 807. 6069 6070Example Code and Data Size: These are the sizes for the OS-independent 6071acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6072debug version of the code includes the debug output trace mechanism and 6073has a 6074much larger code and data size. 6075 6076 Previous Release: 6077 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 6078 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 6079 Current Release: 6080 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6081 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6082 60832) iASL Compiler/Disassembler and Tools: 6084 6085Disassembler: Fixed a problem where references to external symbols that 6086contained one or more parent-prefixes (carats) were not handled 6087correctly, 6088possibly causing a fault. ACPICA BZ 806. Lin Ming. 6089 6090Disassembler: Restructured the code so that all functions that handle 6091external symbols are in a single module. One new file is added, 6092common/dmextern.c. 6093 6094AML Debugger: Added a max count argument for the Batch command (which 6095executes multiple predefined methods within the namespace.) 6096 6097iASL: Updated the compiler documentation (User Reference.) Available at 6098http://www.acpica.org/documentation/. ACPICA BZ 750. 6099 6100AcpiXtract: Updated for Lint and other formatting changes. Close all open 6101files. 6102 6103---------------------------------------- 610403 September 2009. Summary of changes for version 20090903: 6105 61061) ACPI CA Core Subsystem: 6107 6108For Windows Vista compatibility, added the automatic execution of an _INI 6109method located at the namespace root (\_INI). This method is executed at 6110table load time. This support is in addition to the automatic execution 6111of 6112\_SB._INI. Lin Ming. 6113 6114Fixed a possible memory leak in the interpreter for AML package objects 6115if 6116the package initializer list is longer than the defined size of the 6117package. 6118This apparently can only happen if the BIOS changes the package size on 6119the 6120fly (seen in a _PSS object), as ASL compilers do not allow this. The 6121interpreter will truncate the package to the defined size (and issue an 6122error 6123message), but previously could leave the extra objects undeleted if they 6124were 6125pre-created during the argument processing (such is the case if the 6126package 6127consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 6128 6129Fixed a problem seen when a Buffer or String is stored to itself via ASL. 6130This has been reported in the field. Previously, ACPICA would zero out 6131the 6132buffer/string. Now, the operation is treated as a noop. Provides Windows 6133compatibility. ACPICA BZ 803. Lin Ming. 6134 6135Removed an extraneous error message for ASL constructs of the form 6136Store(LocalX,LocalX) when LocalX is uninitialized. These curious 6137statements 6138are seen in many BIOSs and are once again treated as NOOPs and no error 6139is 6140emitted when they are encountered. ACPICA BZ 785. 6141 6142Fixed an extraneous warning message if a _DSM reserved method returns a 6143Package object. _DSM can return any type of object, so validation on the 6144return type cannot be performed. ACPICA BZ 802. 6145 6146Example Code and Data Size: These are the sizes for the OS-independent 6147acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6148debug version of the code includes the debug output trace mechanism and 6149has a 6150much larger code and data size. 6151 6152 Previous Release: 6153 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6154 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6155 Current Release: 6156 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 6157 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 6158 61592) iASL Compiler/Disassembler and Tools: 6160 6161iASL: Fixed a problem with the use of the Alias operator and Resource 6162Templates. The correct alias is now constructed and no error is emitted. 6163ACPICA BZ 738. 6164 6165iASL: Implemented the -I option to specify additional search directories 6166for 6167include files. Allows multiple additional search paths for include files. 6168Directories are searched in the order specified on the command line 6169(after 6170the local directory is searched.) ACPICA BZ 800. 6171 6172iASL: Fixed a problem where the full pathname for include files was not 6173emitted for warnings/errors. This caused the IDE support to not work 6174properly. ACPICA BZ 765. 6175 6176iASL: Implemented the -@ option to specify a Windows-style response file 6177containing additional command line options. ACPICA BZ 801. 6178 6179AcpiExec: Added support to load multiple AML files simultaneously (such 6180as 6181a 6182DSDT and multiple SSDTs). Also added support for wildcards within the AML 6183pathname. These features allow all machine tables to be easily loaded and 6184debugged together. ACPICA BZ 804. 6185 6186Disassembler: Added missing support for disassembly of HEST table Error 6187Bank 6188subtables. 6189 6190---------------------------------------- 619130 July 2009. Summary of changes for version 20090730: 6192 6193The ACPI 4.0 implementation for ACPICA is complete with this release. 6194 61951) ACPI CA Core Subsystem: 6196 6197ACPI 4.0: Added header file support for all new and changed ACPI tables. 6198Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 6199new 6200for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 6201BERT, 6202EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 6203There 6204have been some ACPI 4.0 changes to other existing tables. Split the large 6205actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 6206 6207ACPI 4.0: Implemented predefined name validation for all new names. There 6208are 620931 new names in ACPI 4.0. The predefined validation module was split into 6210two 6211files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 6212 6213Implemented support for so-called "module-level executable code". This is 6214executable AML code that exists outside of any control method and is 6215intended 6216to be executed at table load time. Although illegal since ACPI 2.0, this 6217type 6218of code still exists and is apparently still being created. Blocks of 6219this 6220code are now detected and executed as intended. Currently, the code 6221blocks 6222must exist under either an If, Else, or While construct; these are the 6223typical cases seen in the field. ACPICA BZ 762. Lin Ming. 6224 6225Implemented an automatic dynamic repair for predefined names that return 6226nested Package objects. This applies to predefined names that are defined 6227to 6228return a variable-length Package of sub-packages. If the number of sub- 6229packages is one, BIOS code is occasionally seen that creates a simple 6230single 6231package with no sub-packages. This code attempts to fix the problem by 6232wrapping a new package object around the existing package. These methods 6233can 6234be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 6235BZ 6236790. 6237 6238Fixed a regression introduced in 20090625 for the AcpiGetDevices 6239interface. 6240The _HID/_CID matching was broken and no longer matched IDs correctly. 6241ACPICA 6242BZ 793. 6243 6244Fixed a problem with AcpiReset where the reset would silently fail if the 6245register was one of the protected I/O ports. AcpiReset now bypasses the 6246port 6247validation mechanism. This may eventually be driven into the 6248AcpiRead/Write 6249interfaces. 6250 6251Fixed a regression related to the recent update of the AcpiRead/Write 6252interfaces. A sleep/suspend could fail if the optional PM2 Control 6253register 6254does not exist during an attempt to write the Bus Master Arbitration bit. 6255(However, some hosts already delete the code that writes this bit, and 6256the 6257code may in fact be obsolete at this date.) ACPICA BZ 799. 6258 6259Fixed a problem where AcpiTerminate could fault if inadvertently called 6260twice 6261in succession. ACPICA BZ 795. 6262 6263Example Code and Data Size: These are the sizes for the OS-independent 6264acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6265debug version of the code includes the debug output trace mechanism and 6266has a 6267much larger code and data size. 6268 6269 Previous Release: 6270 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6271 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6272 Current Release: 6273 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6274 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6275 62762) iASL Compiler/Disassembler and Tools: 6277 6278ACPI 4.0: Implemented disassembler support for all new ACPI tables and 6279changes to existing tables. ACPICA BZ 775. 6280 6281---------------------------------------- 628225 June 2009. Summary of changes for version 20090625: 6283 6284The ACPI 4.0 Specification was released on June 16 and is available at 6285www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 6286continue for the next few releases. 6287 62881) ACPI CA Core Subsystem: 6289 6290ACPI 4.0: Implemented interpreter support for the IPMI operation region 6291address space. Includes support for bi-directional data buffers and an 6292IPMI 6293address space handler (to be installed by an IPMI device driver.) ACPICA 6294BZ 6295773. Lin Ming. 6296 6297ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 6298Includes 6299support in both the header files and the disassembler. 6300 6301Completed a major update for the AcpiGetObjectInfo external interface. 6302Changes include: 6303 - Support for variable, unlimited length HID, UID, and CID strings. 6304 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 6305etc.) 6306 - Call the _SxW power methods on behalf of a device object. 6307 - Determine if a device is a PCI root bridge. 6308 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 6309These changes will require an update to all callers of this interface. 6310See 6311the updated ACPICA Programmer Reference for details. One new source file 6312has 6313been added - utilities/utids.c. ACPICA BZ 368, 780. 6314 6315Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 6316transfers. The Value parameter has been extended from 32 bits to 64 bits 6317in 6318order to support new ACPI 4.0 tables. These changes will require an 6319update 6320to 6321all callers of these interfaces. See the ACPICA Programmer Reference for 6322details. ACPICA BZ 768. 6323 6324Fixed several problems with AcpiAttachData. The handler was not invoked 6325when 6326the host node was deleted. The data sub-object was not automatically 6327deleted 6328when the host node was deleted. The interface to the handler had an 6329unused 6330parameter, this was removed. ACPICA BZ 778. 6331 6332Enhanced the function that dumps ACPI table headers. All non-printable 6333characters in the string fields are now replaced with '?' (Signature, 6334OemId, 6335OemTableId, and CompilerId.) ACPI tables with non-printable characters in 6336these fields are occasionally seen in the field. ACPICA BZ 788. 6337 6338Fixed a problem with predefined method repair code where the code that 6339attempts to repair/convert an object of incorrect type is only executed 6340on 6341the first time the predefined method is called. The mechanism that 6342disables 6343warnings on subsequent calls was interfering with the repair mechanism. 6344ACPICA BZ 781. 6345 6346Fixed a possible memory leak in the predefined validation/repair code 6347when 6348a 6349buffer is automatically converted to an expected string object. 6350 6351Removed obsolete 16-bit files from the distribution and from the current 6352git 6353tree head. ACPICA BZ 776. 6354 6355Example Code and Data Size: These are the sizes for the OS-independent 6356acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6357debug version of the code includes the debug output trace mechanism and 6358has a 6359much larger code and data size. 6360 6361 Previous Release: 6362 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6363 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6364 Current Release: 6365 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6366 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6367 63682) iASL Compiler/Disassembler and Tools: 6369 6370ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 6371operation region keyword. ACPICA BZ 771, 772. Lin Ming. 6372 6373ACPI 4.0: iASL - implemented compile-time validation support for all new 6374predefined names and control methods (31 total). ACPICA BZ 769. 6375 6376---------------------------------------- 637721 May 2009. Summary of changes for version 20090521: 6378 63791) ACPI CA Core Subsystem: 6380 6381Disabled the preservation of the SCI enable bit in the PM1 control 6382register. 6383The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 6384to 6385be 6386a "preserved" bit - "OSPM always preserves this bit position", section 63874.7.3.2.1. However, some machines fail if this bit is in fact preserved 6388because the bit needs to be explicitly set by the OS as a workaround. No 6389machines fail if the bit is not preserved. Therefore, ACPICA no longer 6390attempts to preserve this bit. 6391 6392Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 6393incorrectly formed _PRT package could cause a fault. Added validation to 6394ensure that each package element is actually a sub-package. 6395 6396Implemented a new interface to install or override a single control 6397method, 6398AcpiInstallMethod. This interface is useful when debugging in order to 6399repair 6400an existing method or to install a missing method without having to 6401override 6402the entire ACPI table. See the ACPICA Programmer Reference for use and 6403examples. Lin Ming, Bob Moore. 6404 6405Fixed several reference count issues with the DdbHandle object that is 6406created from a Load or LoadTable operator. Prevent premature deletion of 6407the 6408object. Also, mark the object as invalid once the table has been 6409unloaded. 6410This is needed because the handle itself may not be deleted after the 6411table 6412unload, depending on whether it has been stored in a named object by the 6413caller. Lin Ming. 6414 6415Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 6416mutexes of the same sync level are acquired but then not released in 6417strict 6418opposite order, the internally maintained Current Sync Level becomes 6419confused 6420and can cause subsequent execution errors. ACPICA BZ 471. 6421 6422Changed the allowable release order for ASL mutex objects. The ACPI 4.0 6423specification has been changed to make the SyncLevel for mutex objects 6424more 6425useful. When releasing a mutex, the SyncLevel of the mutex must now be 6426the 6427same as the current sync level. This makes more sense than the previous 6428rule 6429(SyncLevel less than or equal). This change updates the code to match the 6430specification. 6431 6432Fixed a problem with the local version of the AcpiOsPurgeCache function. 6433The 6434(local) cache must be locked during all cache object deletions. Andrew 6435Baumann. 6436 6437Updated the Load operator to use operation region interfaces. This 6438replaces 6439direct memory mapping with region access calls. Now, all region accesses 6440go 6441through the installed region handler as they should. 6442 6443Simplified and optimized the NsGetNextNode function. Reduced parameter 6444count 6445and reduced code for this frequently used function. 6446 6447Example Code and Data Size: These are the sizes for the OS-independent 6448acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6449debug version of the code includes the debug output trace mechanism and 6450has a 6451much larger code and data size. 6452 6453 Previous Release: 6454 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6455 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6456 Current Release: 6457 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6458 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6459 64602) iASL Compiler/Disassembler and Tools: 6461 6462Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 6463problems 6464with sub-table disassembly and handling invalid sub-tables. Attempt 6465recovery 6466after an invalid sub-table ID. 6467 6468---------------------------------------- 646922 April 2009. Summary of changes for version 20090422: 6470 64711) ACPI CA Core Subsystem: 6472 6473Fixed a compatibility issue with the recently released I/O port 6474protection 6475mechanism. For windows compatibility, 1) On a port protection violation, 6476simply ignore the request and do not return an exception (allow the 6477control 6478method to continue execution.) 2) If only part of the request overlaps a 6479protected port, read/write the individual ports that are not protected. 6480Linux 6481BZ 13036. Lin Ming 6482 6483Enhanced the execution of the ASL/AML BreakPoint operator so that it 6484actually 6485breaks into the AML debugger if the debugger is present. This matches the 6486ACPI-defined behavior. 6487 6488Fixed several possible warnings related to the use of the configurable 6489ACPI_THREAD_ID. This type can now be configured as either an integer or a 6490pointer with no warnings. Also fixes several warnings in printf-like 6491statements for the 64-bit build when the type is configured as a pointer. 6492ACPICA BZ 766, 767. 6493 6494Fixed a number of possible warnings when compiling with gcc 4+ (depending 6495on 6496warning options.) Examples include printf formats, aliasing, unused 6497globals, 6498missing prototypes, missing switch default statements, use of non-ANSI 6499library functions, use of non-ANSI constructs. See generate/unix/Makefile 6500for 6501a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 6502 6503Example Code and Data Size: These are the sizes for the OS-independent 6504acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6505debug version of the code includes the debug output trace mechanism and 6506has a 6507much larger code and data size. 6508 6509 Previous Release: 6510 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6511 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6512 Current Release: 6513 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6514 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6515 65162) iASL Compiler/Disassembler and Tools: 6517 6518iASL: Fixed a generation warning from Bison 2.3 and fixed several 6519warnings 6520on 6521the 64-bit build. 6522 6523iASL: Fixed a problem where the Unix/Linux versions of the compiler could 6524not 6525correctly digest Windows/DOS formatted files (with CR/LF). 6526 6527iASL: Added a new option for "quiet mode" (-va) that produces only the 6528compilation summary, not individual errors and warnings. Useful for large 6529batch compilations. 6530 6531AcpiExec: Implemented a new option (-z) to enable a forced 6532semaphore/mutex 6533timeout that can be used to detect hang conditions during execution of 6534AML 6535code (includes both internal semaphores and AML-defined mutexes and 6536events.) 6537 6538Added new makefiles for the generation of acpica in a generic unix-like 6539environment. These makefiles are intended to generate the acpica tools 6540and 6541utilities from the original acpica git source tree structure. 6542 6543Test Suites: Updated and cleaned up the documentation files. Updated the 6544copyrights to 2009, affecting all source files. Use the new version of 6545iASL 6546with quiet mode. Increased the number of available semaphores in the 6547Windows 6548OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 6549added 6550an alternate implementation of the semaphore timeout to allow aslts to 6551execute fully on Cygwin. 6552 6553---------------------------------------- 655420 March 2009. Summary of changes for version 20090320: 6555 65561) ACPI CA Core Subsystem: 6557 6558Fixed a possible race condition between AcpiWalkNamespace and dynamic 6559table 6560unloads. Added a reader/writer locking mechanism to allow multiple 6561concurrent 6562namespace walks (readers), but block a dynamic table unload until it can 6563gain 6564exclusive write access to the namespace. This fixes a problem where a 6565table 6566unload could (possibly catastrophically) delete the portion of the 6567namespace 6568that is currently being examined by a walk. Adds a new file, utlock.c, 6569that 6570implements the reader/writer lock mechanism. ACPICA BZ 749. 6571 6572Fixed a regression introduced in version 20090220 where a change to the 6573FADT 6574handling could cause the ACPICA subsystem to access non-existent I/O 6575ports. 6576 6577Modified the handling of FADT register and table (FACS/DSDT) addresses. 6578The 6579FADT can contain both 32-bit and 64-bit versions of these addresses. 6580Previously, the 64-bit versions were favored, meaning that if both 32 and 658164 6582versions were valid, but not equal, the 64-bit version was used. This was 6583found to cause some machines to fail. Now, in this case, the 32-bit 6584version 6585is used instead. This now matches the Windows behavior. 6586 6587Implemented a new mechanism to protect certain I/O ports. Provides 6588Microsoft 6589compatibility and protects the standard PC I/O ports from access via AML 6590code. Adds a new file, hwvalid.c 6591 6592Fixed a possible extraneous warning message from the FADT support. The 6593message warns of a 32/64 length mismatch between the legacy and GAS 6594definitions for a register. 6595 6596Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 6597is 6598made obsolete by the port protection mechanism above. It was previously 6599used 6600to validate the entire address range of an operation region, which could 6601be 6602incorrect if the range included illegal ports, but fields within the 6603operation region did not actually access those ports. Validation is now 6604performed on a per-field basis instead of the entire region. 6605 6606Modified the handling of the PM1 Status Register ignored bit (bit 11.) 6607Ignored bits must be "preserved" according to the ACPI spec. Usually, 6608this 6609means a read/modify/write when writing to the register. However, for 6610status 6611registers, writing a one means clear the event. Writing a zero means 6612preserve 6613the event (do not clear.) This behavior is clarified in the ACPI 4.0 6614spec, 6615and the ACPICA code now simply always writes a zero to the ignored bit. 6616 6617Modified the handling of ignored bits for the PM1 A/B Control Registers. 6618As 6619per the ACPI specification, for the control registers, preserve 6620(read/modify/write) all bits that are defined as either reserved or 6621ignored. 6622 6623Updated the handling of write-only bits in the PM1 A/B Control Registers. 6624When reading the register, zero the write-only bits as per the ACPI spec. 6625ACPICA BZ 443. Lin Ming. 6626 6627Removed "Linux" from the list of supported _OSI strings. Linux no longer 6628wants to reply true to this request. The Windows strings are the only 6629paths 6630through the AML that are tested and known to work properly. 6631 6632 Previous Release: 6633 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 6634 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 6635 Current Release: 6636 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6637 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6638 66392) iASL Compiler/Disassembler and Tools: 6640 6641Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 6642and 6643aetables.c 6644 6645---------------------------------------- 664620 February 2009. Summary of changes for version 20090220: 6647 66481) ACPI CA Core Subsystem: 6649 6650Optimized the ACPI register locking. Removed locking for reads from the 6651ACPI 6652bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 6653is 6654not required when reading the single-bit registers. The 6655AcpiGetRegisterUnlocked function is no longer needed and has been 6656removed. 6657This will improve performance for reads on these registers. ACPICA BZ 6658760. 6659 6660Fixed the parameter validation for AcpiRead/Write. Now return 6661AE_BAD_PARAMETER if the input register pointer is null, and 6662AE_BAD_ADDRESS 6663if 6664the register has an address of zero. Previously, these cases simply 6665returned 6666AE_OK. For optional registers such as PM1B status/enable/control, the 6667caller 6668should check for a valid register address before calling. ACPICA BZ 748. 6669 6670Renamed the external ACPI bit register access functions. Renamed 6671AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 6672functions. The new names are AcpiReadBitRegister and 6673AcpiWriteBitRegister. 6674Also, restructured the code for these functions by simplifying the code 6675path 6676and condensing duplicate code to reduce code size. 6677 6678Added new functions to transparently handle the possibly split PM1 A/B 6679registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 6680functions 6681now handle the split registers for PM1 Status, Enable, and Control. 6682ACPICA 6683BZ 6684746. 6685 6686Added a function to handle the PM1 control registers, 6687AcpiHwWritePm1Control. 6688This function writes both of the PM1 control registers (A/B). These 6689registers 6690are different than the PM1 A/B status and enable registers in that 6691different 6692values can be written to the A/B registers. Most notably, the SLP_TYP 6693bits 6694can be different, as per the values returned from the _Sx predefined 6695methods. 6696 6697Removed an extra register write within AcpiHwClearAcpiStatus. This 6698function 6699was writing an optional PM1B status register twice. The existing call to 6700the 6701low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 6702A/B 6703register. ACPICA BZ 751. 6704 6705Split out the PM1 Status registers from the FADT. Added new globals for 6706these 6707registers (A/B), similar to the way the PM1 Enable registers are handled. 6708Instead of overloading the FADT Event Register blocks. This makes the 6709code 6710clearer and less prone to error. 6711 6712Fixed the warning message for when the platform contains too many ACPI 6713tables 6714for the default size of the global root table data structure. The 6715calculation 6716for the truncation value was incorrect. 6717 6718Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 6719obsolete macro, since it is now a simple reference to ->common.type. 6720There 6721were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 6722 6723Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 6724TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 6725simply SLEEP_TYPE. ACPICA BZ 754. 6726 6727Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 6728function is only needed on 64-bit host operating systems and is thus not 6729included for 32-bit hosts. 6730 6731Debug output: print the input and result for invocations of the _OSI 6732reserved 6733control method via the ACPI_LV_INFO debug level. Also, reduced some of 6734the 6735verbosity of this debug level. Len Brown. 6736 6737Example Code and Data Size: These are the sizes for the OS-independent 6738acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6739debug version of the code includes the debug output trace mechanism and 6740has a 6741much larger code and data size. 6742 6743 Previous Release: 6744 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 6745 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 6746 Current Release: 6747 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 6748 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 6749 67502) iASL Compiler/Disassembler and Tools: 6751 6752Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 6753various legal performance profiles. 6754 6755---------------------------------------- 675623 January 2009. Summary of changes for version 20090123: 6757 67581) ACPI CA Core Subsystem: 6759 6760Added the 2009 copyright to all module headers and signons. This affects 6761virtually every file in the ACPICA core subsystem, the iASL compiler, and 6762the tools/utilities. 6763 6764Implemented a change to allow the host to override any ACPI table, 6765including 6766dynamically loaded tables. Previously, only the DSDT could be replaced by 6767the 6768host. With this change, the AcpiOsTableOverride interface is called for 6769each 6770table found in the RSDT/XSDT during ACPICA initialization, and also 6771whenever 6772a table is dynamically loaded via the AML Load operator. 6773 6774Updated FADT flag definitions, especially the Boot Architecture flags. 6775 6776Debugger: For the Find command, automatically pad the input ACPI name 6777with 6778underscores if the name is shorter than 4 characters. This enables a 6779match 6780with the actual namespace entry which is itself padded with underscores. 6781 6782Example Code and Data Size: These are the sizes for the OS-independent 6783acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6784debug version of the code includes the debug output trace mechanism and 6785has a 6786much larger code and data size. 6787 6788 Previous Release: 6789 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 6790 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 6791 Current Release: 6792 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 6793 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 6794 67952) iASL Compiler/Disassembler and Tools: 6796 6797Fix build error under Bison-2.4. 6798 6799Dissasembler: Enhanced FADT support. Added decoding of the Boot 6800Architecture 6801flags. Now decode all flags, regardless of the FADT version. Flag output 6802includes the FADT version which first defined each flag. 6803 6804The iASL -g option now dumps the RSDT to a file (in addition to the FADT 6805and 6806DSDT). Windows only. 6807 6808---------------------------------------- 680904 December 2008. Summary of changes for version 20081204: 6810 68111) ACPI CA Core Subsystem: 6812 6813The ACPICA Programmer Reference has been completely updated and revamped 6814for 6815this release. This includes updates to the external interfaces, OSL 6816interfaces, the overview sections, and the debugger reference. 6817 6818Several new ACPICA interfaces have been implemented and documented in the 6819programmer reference: 6820AcpiReset - Writes the reset value to the FADT-defined reset register. 6821AcpiDisableAllGpes - Disable all available GPEs. 6822AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 6823AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 6824AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 6825AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 6826AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 6827 6828Most of the public ACPI hardware-related interfaces have been moved to a 6829new 6830file, components/hardware/hwxface.c 6831 6832Enhanced the FADT parsing and low-level ACPI register access: The ACPI 6833register lengths within the FADT are now used, and the low level ACPI 6834register access no longer hardcodes the ACPI register lengths. Given that 6835there may be some risk in actually trusting the FADT register lengths, a 6836run- 6837time option was added to fall back to the default hardcoded lengths if 6838the 6839FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 6840option is set to true for now, and a warning is issued if a suspicious 6841FADT 6842register length is overridden with the default value. 6843 6844Fixed a reference count issue in NsRepairObject. This problem was 6845introduced 6846in version 20081031 as part of a fix to repair Buffer objects within 6847Packages. Lin Ming. 6848 6849Added semaphore support to the Linux/Unix application OS-services layer 6850(OSL). ACPICA BZ 448. Lin Ming. 6851 6852Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 6853will 6854be implemented in the OSL, or will binary semaphores be used instead. 6855 6856Example Code and Data Size: These are the sizes for the OS-independent 6857acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6858debug version of the code includes the debug output trace mechanism and 6859has a 6860much larger code and data size. 6861 6862 Previous Release: 6863 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6864 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6865 Current Release: 6866 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 6867 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 6868 68692) iASL Compiler/Disassembler and Tools: 6870 6871iASL: Completed the '-e' option to include additional ACPI tables in 6872order 6873to 6874aid with disassembly and External statement generation. ACPICA BZ 742. 6875Lin 6876Ming. 6877 6878iASL: Removed the "named object in while loop" error. The compiler cannot 6879determine how many times a loop will execute. ACPICA BZ 730. 6880 6881Disassembler: Implemented support for FADT revision 2 (MS extension). 6882ACPICA 6883BZ 743. 6884 6885Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 6886MCFG). 6887 6888---------------------------------------- 688931 October 2008. Summary of changes for version 20081031: 6890 68911) ACPI CA Core Subsystem: 6892 6893Restructured the ACPICA header files into public/private. acpi.h now 6894includes 6895only the "public" acpica headers. All other acpica headers are "private" 6896and 6897should not be included by acpica users. One new file, accommon.h is used 6898to 6899include the commonly used private headers for acpica code generation. 6900Future 6901plans include moving all private headers to a new subdirectory. 6902 6903Implemented an automatic Buffer->String return value conversion for 6904predefined ACPI methods. For these methods (such as _BIF), added 6905automatic 6906conversion for return objects that are required to be a String, but a 6907Buffer 6908was found instead. This can happen when reading string battery data from 6909an 6910operation region, because it used to be difficult to convert the data 6911from 6912buffer to string from within the ASL. Ensures that the host OS is 6913provided 6914with a valid null-terminated string. Linux BZ 11822. 6915 6916Updated the FACS waking vector interfaces. Split 6917AcpiSetFirmwareWakingVector 6918into two: one for the 32-bit vector, another for the 64-bit vector. This 6919is 6920required because the host OS must setup the wake much differently for 6921each 6922vector (real vs. protected mode, etc.) and the interface itself should 6923not 6924be 6925deciding which vector to use. Also, eliminated the 6926GetFirmwareWakingVector 6927interface, as it served no purpose (only the firmware reads the vector, 6928OS 6929only writes the vector.) ACPICA BZ 731. 6930 6931Implemented a mechanism to escape infinite AML While() loops. Added a 6932loop 6933counter to force exit from AML While loops if the count becomes too 6934large. 6935This can occur in poorly written AML when the hardware does not respond 6936within a while loop and the loop does not implement a timeout. The 6937maximum 6938loop count is configurable. A new exception code is returned when a loop 6939is 6940broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 6941 6942Optimized the execution of AML While loops. Previously, a control state 6943object was allocated and freed for each execution of the loop. The 6944optimization is to simply reuse the control state for each iteration. 6945This 6946speeds up the raw loop execution time by about 5%. 6947 6948Enhanced the implicit return mechanism. For Windows compatibility, return 6949an 6950implicit integer of value zero for methods that contain no executable 6951code. 6952Such methods are seen in the field as stubs (presumably), and can cause 6953drivers to fail if they expect a return value. Lin Ming. 6954 6955Allow multiple backslashes as root prefixes in namepaths. In a fully 6956qualified namepath, allow multiple backslash prefixes. This can happen 6957(and 6958is seen in the field) because of the use of a double-backslash in strings 6959(since backslash is the escape character) causing confusion. ACPICA BZ 6960739 6961Lin Ming. 6962 6963Emit a warning if two different FACS or DSDT tables are discovered in the 6964FADT. Checks if there are two valid but different addresses for the FACS 6965and 6966DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 6967 6968Consolidated the method argument count validation code. Merged the code 6969that 6970validates control method argument counts into the predefined validation 6971module. Eliminates possible multiple warnings for incorrect argument 6972counts. 6973 6974Implemented ACPICA example code. Includes code for ACPICA initialization, 6975handler installation, and calling a control method. Available at 6976source/tools/examples. 6977 6978Added a global pointer for FACS table to simplify internal FACS access. 6979Use 6980the global pointer instead of using AcpiGetTableByIndex for each FACS 6981access. 6982This simplifies the code for the Global Lock and the Firmware Waking 6983Vector(s). 6984 6985Example Code and Data Size: These are the sizes for the OS-independent 6986acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6987debug version of the code includes the debug output trace mechanism and 6988has a 6989much larger code and data size. 6990 6991 Previous Release: 6992 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 6993 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 6994 Current Release: 6995 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6996 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6997 69982) iASL Compiler/Disassembler and Tools: 6999 7000iASL: Improved disassembly of external method calls. Added the -e option 7001to 7002allow the inclusion of additional ACPI tables to help with the 7003disassembly 7004of 7005method invocations and the generation of external declarations during the 7006disassembly. Certain external method invocations cannot be disassembled 7007properly without the actual declaration of the method. Use the -e option 7008to 7009include the table where the external method(s) are actually declared. 7010Most 7011useful for disassembling SSDTs that make method calls back to the master 7012DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 7013-d 7014-e dsdt.aml ssdt1.aml 7015 7016iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 7017problem where the use of an alias within a namepath would result in a not 7018found error or cause the compiler to fault. Also now allows forward 7019references from the Alias operator itself. ACPICA BZ 738. 7020 7021---------------------------------------- 702226 September 2008. Summary of changes for version 20080926: 7023 70241) ACPI CA Core Subsystem: 7025 7026Designed and implemented a mechanism to validate predefined ACPI methods 7027and 7028objects. This code validates the predefined ACPI objects (objects whose 7029names 7030start with underscore) that appear in the namespace, at the time they are 7031evaluated. The argument count and the type of the returned object are 7032validated against the ACPI specification. The purpose of this validation 7033is 7034to detect problems with the BIOS-implemented predefined ACPI objects 7035before 7036the results are returned to the ACPI-related drivers. Future enhancements 7037may 7038include actual repair of incorrect return objects where possible. Two new 7039files are nspredef.c and acpredef.h. 7040 7041Fixed a fault in the AML parser if a memory allocation fails during the 7042Op 7043completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 7044 7045Fixed an issue with implicit return compatibility. This change improves 7046the 7047implicit return mechanism to be more compatible with the MS interpreter. 7048Lin 7049Ming, ACPICA BZ 349. 7050 7051Implemented support for zero-length buffer-to-string conversions. Allow 7052zero 7053length strings during interpreter buffer-to-string conversions. For 7054example, 7055during the ToDecimalString and ToHexString operators, as well as implicit 7056conversions. Fiodor Suietov, ACPICA BZ 585. 7057 7058Fixed two possible memory leaks in the error exit paths of 7059AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 7060are 7061similar in that they use a stack of state objects in order to eliminate 7062recursion. The stack must be fully unwound and deallocated if an error 7063occurs. Lin Ming. ACPICA BZ 383. 7064 7065Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 7066global 7067ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 7068Moore ACPICA BZ 442. 7069 7070Removed the obsolete version number in module headers. Removed the 7071"$Revision" number that appeared in each module header. This version 7072number 7073was useful under SourceSafe and CVS, but has no meaning under git. It is 7074not 7075only incorrect, it could also be misleading. 7076 7077Example Code and Data Size: These are the sizes for the OS-independent 7078acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7079debug version of the code includes the debug output trace mechanism and 7080has a 7081much larger code and data size. 7082 7083 Previous Release: 7084 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7085 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 7086 Current Release: 7087 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 7088 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 7089 7090---------------------------------------- 709129 August 2008. Summary of changes for version 20080829: 7092 70931) ACPI CA Core Subsystem: 7094 7095Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 7096Reference. Changes include the elimination of cheating on the Object 7097field 7098for the DdbHandle subtype, addition of a reference class field to 7099differentiate the various reference types (instead of an AML opcode), and 7100the 7101cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 7102 7103Reduce an error to a warning for an incorrect method argument count. 7104Previously aborted with an error if too few arguments were passed to a 7105control method via the external ACPICA interface. Now issue a warning 7106instead 7107and continue. Handles the case where the method inadvertently declares 7108too 7109many arguments, but does not actually use the extra ones. Applies mainly 7110to 7111the predefined methods. Lin Ming. Linux BZ 11032. 7112 7113Disallow the evaluation of named object types with no intrinsic value. 7114Return 7115AE_TYPE for objects that have no value and therefore evaluation is 7116undefined: 7117Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 7118of 7119these types were allowed, but an exception would be generated at some 7120point 7121during the evaluation. Now, the error is generated up front. 7122 7123Fixed a possible memory leak in the AcpiNsGetExternalPathname function 7124(nsnames.c). Fixes a leak in the error exit path. 7125 7126Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 7127debug 7128levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 7129ACPI_EXCEPTION 7130interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 7131ACPI_LV_EVENTS. 7132 7133Removed obsolete and/or unused exception codes from the acexcep.h header. 7134There is the possibility that certain device drivers may be affected if 7135they 7136use any of these exceptions. 7137 7138The ACPICA documentation has been added to the public git source tree, 7139under 7140acpica/documents. Included are the ACPICA programmer reference, the iASL 7141compiler reference, and the changes.txt release logfile. 7142 7143Example Code and Data Size: These are the sizes for the OS-independent 7144acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7145debug version of the code includes the debug output trace mechanism and 7146has a 7147much larger code and data size. 7148 7149 Previous Release: 7150 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7151 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7152 Current Release: 7153 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7154 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 7155 71562) iASL Compiler/Disassembler and Tools: 7157 7158Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 7159defines _SCP with 3 arguments. Previous versions defined it with only 1 7160argument. iASL now allows both definitions. 7161 7162iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 7163zero- 7164length subtables when disassembling ACPI tables. Also fixed a couple of 7165errors where a full 16-bit table type field was not extracted from the 7166input 7167properly. 7168 7169acpisrc: Improve comment counting mechanism for generating source code 7170statistics. Count first and last lines of multi-line comments as 7171whitespace, 7172not comment lines. Handle Linux legal header in addition to standard 7173acpica 7174header. 7175 7176---------------------------------------- 7177 717829 July 2008. Summary of changes for version 20080729: 7179 71801) ACPI CA Core Subsystem: 7181 7182Fix a possible deadlock in the GPE dispatch. Remove call to 7183AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 7184attempt 7185to acquire the GPE lock but can deadlock since the GPE lock is already 7186held 7187at dispatch time. This code was introduced in version 20060831 as a 7188response 7189to Linux BZ 6881 and has since been removed from Linux. 7190 7191Add a function to dereference returned reference objects. Examines the 7192return 7193object from a call to AcpiEvaluateObject. Any Index or RefOf references 7194are 7195automatically dereferenced in an attempt to return something useful 7196(these 7197reference types cannot be converted into an external ACPI_OBJECT.) 7198Provides 7199MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 7200 7201x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 7202subtables for the MADT and one new subtable for the SRAT. Includes 7203disassembler and AcpiSrc support. Data from the Intel 64 Architecture 7204x2APIC 7205Specification, June 2008. 7206 7207Additional error checking for pathname utilities. Add error check after 7208all 7209calls to AcpiNsGetPathnameLength. Add status return from 7210AcpiNsBuildExternalPath and check after all calls. Add parameter 7211validation 7212to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 7213 7214Return status from the global init function AcpiUtGlobalInitialize. This 7215is 7216used by both the kernel subsystem and the utilities such as iASL 7217compiler. 7218The function could possibly fail when the caches are initialized. Yang 7219Yi. 7220 7221Add a function to decode reference object types to strings. Created for 7222improved error messages. 7223 7224Improve object conversion error messages. Better error messages during 7225object 7226conversion from internal to the external ACPI_OBJECT. Used for external 7227calls 7228to AcpiEvaluateObject. 7229 7230Example Code and Data Size: These are the sizes for the OS-independent 7231acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7232debug version of the code includes the debug output trace mechanism and 7233has a 7234much larger code and data size. 7235 7236 Previous Release: 7237 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7238 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7239 Current Release: 7240 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7241 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7242 72432) iASL Compiler/Disassembler and Tools: 7244 7245Debugger: fix a possible hang when evaluating non-methods. Fixes a 7246problem 7247introduced in version 20080701. If the object being evaluated (via 7248execute 7249command) is not a method, the debugger can hang while trying to obtain 7250non- 7251existent parameters. 7252 7253iASL: relax error for using reserved "_T_x" identifiers. These names can 7254appear in a disassembled ASL file if they were emitted by the original 7255compiler. Instead of issuing an error or warning and forcing the user to 7256manually change these names, issue a remark instead. 7257 7258iASL: error if named object created in while loop. Emit an error if any 7259named 7260object is created within a While loop. If allowed, this code will 7261generate 7262a 7263run-time error on the second iteration of the loop when an attempt is 7264made 7265to 7266create the same named object twice. ACPICA bugzilla 730. 7267 7268iASL: Support absolute pathnames for include files. Add support for 7269absolute 7270pathnames within the Include operator. previously, only relative 7271pathnames 7272were supported. 7273 7274iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 7275Descriptor. 7276The ACPI spec requires one interrupt minimum. BZ 423 7277 7278iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 7279Handles the case for the Interrupt Resource Descriptor where 7280the ResourceSource argument is omitted but ResourceSourceIndex 7281is present. Now leave room for the Index. BZ 426 7282 7283iASL: Prevent error message if CondRefOf target does not exist. Fixes 7284cases 7285where an error message is emitted if the target does not exist. BZ 516 7286 7287iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 7288(get ACPI tables on Windows). This was apparently broken in version 728920070919. 7290 7291AcpiXtract: Handle EOF while extracting data. Correctly handle the case 7292where 7293the EOF happens immediately after the last table in the input file. Print 7294completion message. Previously, no message was displayed in this case. 7295 7296---------------------------------------- 729701 July 2008. Summary of changes for version 20080701: 7298 72990) Git source tree / acpica.org 7300 7301Fixed a problem where a git-clone from http would not transfer the entire 7302source tree. 7303 73041) ACPI CA Core Subsystem: 7305 7306Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 7307enable bit. Now performs a read-change-write of the enable register 7308instead 7309of simply writing out the cached enable mask. This will prevent 7310inadvertent 7311enabling of GPEs if a rogue GPE is received during initialization (before 7312GPE 7313handlers are installed.) 7314 7315Implemented a copy for dynamically loaded tables. Previously, dynamically 7316loaded tables were simply mapped - but on some machines this memory is 7317corrupted after suspend. Now copy the table to a local buffer. For the 7318OpRegion case, added checksum verify. Use the table length from the table 7319header, not the region length. For the Buffer case, use the table length 7320also. Dennis Noordsij, Bob Moore. BZ 10734 7321 7322Fixed a problem where the same ACPI table could not be dynamically loaded 7323and 7324unloaded more than once. Without this change, a table cannot be loaded 7325again 7326once it has been loaded/unloaded one time. The current mechanism does not 7327unregister a table upon an unload. During a load, if the same table is 7328found, 7329this no longer returns an exception. BZ 722 7330 7331Fixed a problem where the wrong descriptor length was calculated for the 7332EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 7333EndTag 7334are calculated as 12 bytes long, but the actual length in the internal 7335descriptor is 16 because of the round-up to 8 on the 64-bit build. 7336Reported 7337by Linn Crosetto. BZ 728 7338 7339Fixed a possible memory leak in the Unload operator. The DdbHandle 7340returned 7341by Load() did not have its reference count decremented during unload, 7342leading 7343to a memory leak. Lin Ming. BZ 727 7344 7345Fixed a possible memory leak when deleting thermal/processor objects. Any 7346associated notify handlers (and objects) were not being deleted. Fiodor 7347Suietov. BZ 506 7348 7349Fixed the ordering of the ASCII names in the global mutex table to match 7350the 7351actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 7352only. 7353Vegard Nossum. BZ 726 7354 7355Enhanced the AcpiGetObjectInfo interface to return the number of required 7356arguments if the object is a control method. Added this call to the 7357debugger 7358so the proper number of default arguments are passed to a method. This 7359prevents a warning when executing methods from AcpiExec. 7360 7361Added a check for an invalid handle in AcpiGetObjectInfo. Return 7362AE_BAD_PARAMETER if input handle is invalid. BZ 474 7363 7364Fixed an extraneous warning from exconfig.c on the 64-bit build. 7365 7366Example Code and Data Size: These are the sizes for the OS-independent 7367acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7368debug version of the code includes the debug output trace mechanism and 7369has a 7370much larger code and data size. 7371 7372 Previous Release: 7373 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7374 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7375 Current Release: 7376 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7377 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7378 73792) iASL Compiler/Disassembler and Tools: 7380 7381iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 7382resource descriptor names. 7383 7384iASL: Detect invalid ASCII characters in input (windows version). Removed 7385the 7386"-CF" flag from the flex compile, enables correct detection of non-ASCII 7387characters in the input. BZ 441 7388 7389iASL: Eliminate warning when result of LoadTable is not used. Eliminate 7390the 7391"result of operation not used" warning when the DDB handle returned from 7392LoadTable is not used. The warning is not needed. BZ 590 7393 7394AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 7395method 7396to 7397pass address of table to the AML. Added option to disable OpRegion 7398simulation 7399to allow creation of an OpRegion with a real address that was passed to 7400_CFG. 7401All of this allows testing of the Load and Unload operators from 7402AcpiExec. 7403 7404Debugger: update tables command for unloaded tables. Handle unloaded 7405tables 7406and use the standard table header output routine. 7407 7408---------------------------------------- 740909 June 2008. Summary of changes for version 20080609: 7410 74111) ACPI CA Core Subsystem: 7412 7413Implemented a workaround for reversed _PRT entries. A significant number 7414of 7415BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 7416change dynamically detects and repairs this problem. Provides 7417compatibility 7418with MS ACPI. BZ 6859 7419 7420Simplified the internal ACPI hardware interfaces to eliminate the locking 7421flag parameter from Register Read/Write. Added a new external interface, 7422AcpiGetRegisterUnlocked. 7423 7424Fixed a problem where the invocation of a GPE control method could hang. 7425This 7426was a regression introduced in 20080514. The new method argument count 7427validation mechanism can enter an infinite loop when a GPE method is 7428dispatched. Problem fixed by removing the obsolete code that passed GPE 7429block 7430information to the notify handler via the control method parameter 7431pointer. 7432 7433Fixed a problem where the _SST execution status was incorrectly returned 7434to 7435the caller of AcpiEnterSleepStatePrep. This was a regression introduced 7436in 743720080514. _SST is optional and a NOT_FOUND exception should never be 7438returned. BZ 716 7439 7440Fixed a problem where a deleted object could be accessed from within the 7441AML 7442parser. This was a regression introduced in version 20080123 as a fix for 7443the 7444Unload operator. Lin Ming. BZ 10669 7445 7446Cleaned up the debug operand dump mechanism. Eliminated unnecessary 7447operands 7448and eliminated the use of a negative index in a loop. Operands are now 7449displayed in the correct order, not backwards. This also fixes a 7450regression 7451introduced in 20080514 on 64-bit systems where the elimination of 7452ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 7453715 7454 7455Fixed a possible memory leak in EvPciConfigRegionSetup where the error 7456exit 7457path did not delete a locally allocated structure. 7458 7459Updated definitions for the DMAR and SRAT tables to synchronize with the 7460current specifications. Includes disassembler support. 7461 7462Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 7463loop termination value was used. Loop terminated on iteration early, 7464missing 7465one mutex. Linn Crosetto 7466 7467Example Code and Data Size: These are the sizes for the OS-independent 7468acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7469debug version of the code includes the debug output trace mechanism and 7470has a 7471much larger code and data size. 7472 7473 Previous Release: 7474 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7475 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7476 Current Release: 7477 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7478 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7479 74802) iASL Compiler/Disassembler and Tools: 7481 7482Disassembler: Implemented support for EisaId() within _CID objects. Now 7483disassemble integer _CID objects back to EisaId invocations, including 7484multiple integers within _CID packages. Includes single-step support for 7485debugger also. 7486 7487Disassembler: Added support for DMAR and SRAT table definition changes. 7488 7489---------------------------------------- 749014 May 2008. Summary of changes for version 20080514: 7491 74921) ACPI CA Core Subsystem: 7493 7494Fixed a problem where GPEs were enabled too early during the ACPICA 7495initialization. This could lead to "handler not installed" errors on some 7496machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 7497This 7498ensures that all operation regions and devices throughout the namespace 7499have 7500been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 7501 7502Implemented a change to the enter sleep code. Moved execution of the _GTS 7503method to just before setting sleep enable bit. The execution was moved 7504from 7505AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 7506immediately before the SLP_EN bit is set, as per the ACPI specification. 7507Luming Yu, BZ 1653. 7508 7509Implemented a fix to disable unknown GPEs (2nd version). Now always 7510disable 7511the GPE, even if ACPICA thinks that that it is already disabled. It is 7512possible that the AML or some other code has enabled the GPE unbeknownst 7513to 7514the ACPICA code. 7515 7516Fixed a problem with the Field operator where zero-length fields would 7517return 7518an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 7519ASL 7520field declarations in Field(), BankField(), and IndexField(). BZ 10606. 7521 7522Implemented a fix for the Load operator, now load the table at the 7523namespace 7524root. This reverts a change introduced in version 20071019. The table is 7525now 7526loaded at the namespace root even though this goes against the ACPI 7527specification. This provides compatibility with other ACPI 7528implementations. 7529The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 7530Ming. 7531 7532Fixed a problem where ACPICA would not Load() tables with unusual 7533signatures. 7534Now ignore ACPI table signature for Load() operator. Only "SSDT" is 7535acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 7536Therefore, signature validation is worthless. Apparently MS ACPI accepts 7537such 7538signatures, ACPICA must be compatible. BZ 10454. 7539 7540Fixed a possible negative array index in AcpiUtValidateException. Added 7541NULL 7542fields to the exception string arrays to eliminate a -1 subtraction on 7543the 7544SubStatus field. 7545 7546Updated the debug tracking macros to reduce overall code and data size. 7547Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 7548instead of pointers to static strings. Jan Beulich and Bob Moore. 7549 7550Implemented argument count checking in control method invocation via 7551AcpiEvaluateObject. Now emit an error if too few arguments, warning if 7552too 7553many. This applies only to extern programmatic control method execution, 7554not 7555method-to-method calls within the AML. Lin Ming. 7556 7557Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 7558no 7559longer needed, especially with the removal of 16-bit support. It was 7560replaced 7561mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 7562bit 7563on 756432/64-bit platforms is required. 7565 7566Added the C const qualifier for appropriate string constants -- mostly 7567MODULE_NAME and printf format strings. Jan Beulich. 7568 7569Example Code and Data Size: These are the sizes for the OS-independent 7570acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7571debug version of the code includes the debug output trace mechanism and 7572has a 7573much larger code and data size. 7574 7575 Previous Release: 7576 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7577 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7578 Current Release: 7579 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7580 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7581 75822) iASL Compiler/Disassembler and Tools: 7583 7584Implemented ACPI table revision ID validation in the disassembler. Zero 7585is 7586always invalid. For DSDTs, the ID controls the interpreter integer width. 75871 7588means 32-bit and this is unusual. 2 or greater is 64-bit. 7589 7590---------------------------------------- 759121 March 2008. Summary of changes for version 20080321: 7592 75931) ACPI CA Core Subsystem: 7594 7595Implemented an additional change to the GPE support in order to suppress 7596spurious or stray GPEs. The AcpiEvDisableGpe function will now 7597permanently 7598disable incoming GPEs that are neither enabled nor disabled -- meaning 7599that 7600the GPE is unknown to the system. This should prevent future interrupt 7601floods 7602from that GPE. BZ 6217 (Zhang Rui) 7603 7604Fixed a problem where NULL package elements were not returned to the 7605AcpiEvaluateObject interface correctly. The element was simply ignored 7606instead of returning a NULL ACPI_OBJECT package element, potentially 7607causing 7608a buffer overflow and/or confusing the caller who expected a fixed number 7609of 7610elements. BZ 10132 (Lin Ming, Bob Moore) 7611 7612Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 7613Dword, 7614Qword), Field, BankField, and IndexField operators when invoked from 7615inside 7616an executing control method. In this case, these operators created 7617namespace 7618nodes that were incorrectly left marked as permanent nodes instead of 7619temporary nodes. This could cause a problem if there is race condition 7620between an exiting control method and a running namespace walk. (Reported 7621by 7622Linn Crosetto) 7623 7624Fixed a problem where the CreateField and CreateXXXField operators would 7625incorrectly allow duplicate names (the name of the field) with no 7626exception 7627generated. 7628 7629Implemented several changes for Notify handling. Added support for new 7630Notify 7631values (ACPI 2.0+) and improved the Notify debug output. Notify on 7632PowerResource objects is no longer allowed, as per the ACPI 7633specification. 7634(Bob Moore, Zhang Rui) 7635 7636All Reference Objects returned via the AcpiEvaluateObject interface are 7637now 7638marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 7639for 7640NULL objects - either NULL package elements or unresolved named 7641references. 7642 7643Fixed a problem where an extraneous debug message was produced for 7644package 7645objects (when debugging enabled). The message "Package List length larger 7646than NumElements count" is now produced in the correct case, and is now 7647an 7648error message rather than a debug message. Added a debug message for the 7649opposite case, where NumElements is larger than the Package List (the 7650package 7651will be padded out with NULL elements as per the ACPI spec.) 7652 7653Implemented several improvements for the output of the ASL "Debug" object 7654to 7655clarify and keep all data for a given object on one output line. 7656 7657Fixed two size calculation issues with the variable-length Start 7658Dependent 7659resource descriptor. 7660 7661Example Code and Data Size: These are the sizes for the OS-independent 7662acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7663debug version of the code includes the debug output trace mechanism and 7664has 7665a much larger code and data size. 7666 7667 Previous Release: 7668 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 7669 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 7670 Current Release: 7671 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7672 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7673 76742) iASL Compiler/Disassembler and Tools: 7675 7676Fixed a problem with the use of the Switch operator where execution of 7677the 7678containing method by multiple concurrent threads could cause an 7679AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 7680actual Switch opcode, it must be simulated with local named temporary 7681variables and if/else pairs. The solution chosen was to mark any method 7682that 7683uses Switch as Serialized, thus preventing multiple thread entries. BZ 7684469. 7685 7686---------------------------------------- 768713 February 2008. Summary of changes for version 20080213: 7688 76891) ACPI CA Core Subsystem: 7690 7691Implemented another MS compatibility design change for GPE/Notify 7692handling. 7693GPEs are now cleared/enabled asynchronously to allow all pending notifies 7694to 7695complete first. It is expected that the OSL will queue the enable request 7696behind all pending notify requests (may require changes to the local host 7697OSL 7698in AcpiOsExecute). Alexey Starikovskiy. 7699 7700Fixed a problem where buffer and package objects passed as arguments to a 7701control method via the external AcpiEvaluateObject interface could cause 7702an 7703AE_AML_INTERNAL exception depending on the order and type of operators 7704executed by the target control method. 7705 7706Fixed a problem where resource descriptor size optimization could cause a 7707problem when a _CRS resource template is passed to a _SRS method. The 7708_SRS 7709resource template must use the same descriptors (with the same size) as 7710returned from _CRS. This change affects the following resource 7711descriptors: 7712IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 77139487) 7714 7715Fixed a problem where a CopyObject to RegionField, BankField, and 7716IndexField 7717objects did not perform an implicit conversion as it should. These types 7718must 7719retain their initial type permanently as per the ACPI specification. 7720However, 7721a CopyObject to all other object types should not perform an implicit 7722conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 7723 7724Fixed a problem with the AcpiGetDevices interface where the mechanism to 7725match device CIDs did not examine the entire list of available CIDs, but 7726instead aborted on the first non-matching CID. Andrew Patterson. 7727 7728Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 7729was 7730inadvertently changed to return a 16-bit value instead of a 32-bit value, 7731truncating the upper dword of a 64-bit value. This macro is only used to 7732display debug output, so no incorrect calculations were made. Also, 7733reimplemented the macro so that a 64-bit shift is not performed by 7734inefficient compilers. 7735 7736Added missing va_end statements that should correspond with each va_start 7737statement. 7738 7739Example Code and Data Size: These are the sizes for the OS-independent 7740acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7741debug version of the code includes the debug output trace mechanism and 7742has 7743a much larger code and data size. 7744 7745 Previous Release: 7746 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 7747 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 7748 Current Release: 7749 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 7750 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 7751 77522) iASL Compiler/Disassembler and Tools: 7753 7754Implemented full disassembler support for the following new ACPI tables: 7755BERT, EINJ, and ERST. Implemented partial disassembler support for the 7756complicated HEST table. These tables support the Windows Hardware Error 7757Architecture (WHEA). 7758 7759---------------------------------------- 776023 January 2008. Summary of changes for version 20080123: 7761 77621) ACPI CA Core Subsystem: 7763 7764Added the 2008 copyright to all module headers and signons. This affects 7765virtually every file in the ACPICA core subsystem, the iASL compiler, and 7766the tools/utilities. 7767 7768Fixed a problem with the SizeOf operator when used with Package and 7769Buffer 7770objects. These objects have deferred execution for some arguments, and 7771the 7772execution is now completed before the SizeOf is executed. This problem 7773caused 7774unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 7775BZ 77769558 7777 7778Implemented an enhancement to the interpreter "slack mode". In the 7779absence 7780of 7781an explicit return or an implicitly returned object from the last 7782executed 7783opcode, a control method will now implicitly return an integer of value 0 7784for 7785Microsoft compatibility. (Lin Ming) BZ 392 7786 7787Fixed a problem with the Load operator where an exception was not 7788returned 7789in 7790the case where the table is already loaded. (Lin Ming) BZ 463 7791 7792Implemented support for the use of DDBHandles as an Indexed Reference, as 7793per 7794the ACPI spec. (Lin Ming) BZ 486 7795 7796Implemented support for UserTerm (Method invocation) for the Unload 7797operator 7798as per the ACPI spec. (Lin Ming) BZ 580 7799 7800Fixed a problem with the LoadTable operator where the OemId and 7801OemTableId 7802input strings could cause unexpected failures if they were shorter than 7803the 7804maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 7805 7806Implemented support for UserTerm (Method invocation) for the Unload 7807operator 7808as per the ACPI spec. (Lin Ming) BZ 580 7809 7810Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 7811HEST, 7812IBFT, UEFI, WDAT. Disassembler support is forthcoming. 7813 7814Example Code and Data Size: These are the sizes for the OS-independent 7815acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7816debug version of the code includes the debug output trace mechanism and 7817has 7818a much larger code and data size. 7819 7820 Previous Release: 7821 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7822 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7823 Current Release: 7824 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 7825 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 7826 78272) iASL Compiler/Disassembler and Tools: 7828 7829Implemented support in the disassembler for checksum validation on 7830incoming 7831binary DSDTs and SSDTs. If incorrect, a message is displayed within the 7832table 7833header dump at the start of the disassembly. 7834 7835Implemented additional debugging information in the namespace listing 7836file 7837created during compilation. In addition to the namespace hierarchy, the 7838full 7839pathname to each namespace object is displayed. 7840 7841Fixed a problem with the disassembler where invalid ACPI tables could 7842cause 7843faults or infinite loops. 7844 7845Fixed an unexpected parse error when using the optional "parameter types" 7846list in a control method declaration. (Lin Ming) BZ 397 7847 7848Fixed a problem where two External declarations with the same name did 7849not 7850cause an error (Lin Ming) BZ 509 7851 7852Implemented support for full TermArgs (adding Argx, Localx and method 7853invocation) for the ParameterData parameter to the LoadTable operator. 7854(Lin 7855Ming) BZ 583,587 7856 7857---------------------------------------- 785819 December 2007. Summary of changes for version 20071219: 7859 78601) ACPI CA Core Subsystem: 7861 7862Implemented full support for deferred execution for the TermArg string 7863arguments for DataTableRegion. This enables forward references and full 7864operand resolution for the three string arguments. Similar to 7865OperationRegion 7866deferred argument execution.) Lin Ming. BZ 430 7867 7868Implemented full argument resolution support for the BankValue argument 7869to 7870BankField. Previously, only constants were supported, now any TermArg may 7871be 7872used. Lin Ming BZ 387, 393 7873 7874Fixed a problem with AcpiGetDevices where the search of a branch of the 7875device tree could be terminated prematurely. In accordance with the ACPI 7876specification, the search down the current branch is terminated if a 7877device 7878is both not present and not functional (instead of just not present.) 7879Yakui 7880Zhao. 7881 7882Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 7883if 7884the underlying AML code changed the GPE enable registers. Now, any 7885unknown 7886incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 7887disabled 7888instead of simply ignored. Rui Zhang. 7889 7890Fixed a problem with Index Fields where the Index register was 7891incorrectly 7892limited to a maximum of 32 bits. Now any size may be used. 7893 7894Fixed a couple memory leaks associated with "implicit return" objects 7895when 7896the AML Interpreter slack mode is enabled. Lin Ming BZ 349 7897 7898Example Code and Data Size: These are the sizes for the OS-independent 7899acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7900debug version of the code includes the debug output trace mechanism and 7901has 7902a much larger code and data size. 7903 7904 Previous Release: 7905 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7906 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7907 Current Release: 7908 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7909 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7910 7911---------------------------------------- 791214 November 2007. Summary of changes for version 20071114: 7913 79141) ACPI CA Core Subsystem: 7915 7916Implemented event counters for each of the Fixed Events, the ACPI SCI 7917(interrupt) itself, and control methods executed. Named 7918AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 7919These 7920should be useful for debugging and statistics. 7921 7922Implemented a new external interface, AcpiGetStatistics, to retrieve the 7923contents of the various event counters. Returns the current values for 7924AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 7925AcpiMethodCount. The interface can be expanded in the future if new 7926counters 7927are added. Device drivers should use this interface rather than access 7928the 7929counters directly. 7930 7931Fixed a problem with the FromBCD and ToBCD operators. With some 7932compilers, 7933the ShortDivide function worked incorrectly, causing problems with the 7934BCD 7935functions with large input values. A truncation from 64-bit to 32-bit 7936inadvertently occurred. Internal BZ 435. Lin Ming 7937 7938Fixed a problem with Index references passed as method arguments. 7939References 7940passed as arguments to control methods were dereferenced immediately 7941(before 7942control was passed to the called method). The references are now 7943correctly 7944passed directly to the called method. BZ 5389. Lin Ming 7945 7946Fixed a problem with CopyObject used in conjunction with the Index 7947operator. 7948The reference was incorrectly dereferenced before the copy. The reference 7949is 7950now correctly copied. BZ 5391. Lin Ming 7951 7952Fixed a problem with Control Method references within Package objects. 7953These 7954references are now correctly generated. This completes the package 7955construction overhaul that began in version 20071019. 7956 7957Example Code and Data Size: These are the sizes for the OS-independent 7958acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7959debug version of the code includes the debug output trace mechanism and 7960has 7961a much larger code and data size. 7962 7963 Previous Release: 7964 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 7965 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 7966 Current Release: 7967 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7968 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7969 7970 79712) iASL Compiler/Disassembler and Tools: 7972 7973The AcpiExec utility now installs handlers for all of the predefined 7974Operation Region types. New types supported are: PCI_Config, CMOS, and 7975PCIBARTarget. 7976 7977Fixed a problem with the 64-bit version of AcpiExec where the extended 7978(64- 7979bit) address fields for the DSDT and FACS within the FADT were not being 7980used, causing truncation of the upper 32-bits of these addresses. Lin 7981Ming 7982and Bob Moore 7983 7984---------------------------------------- 798519 October 2007. Summary of changes for version 20071019: 7986 79871) ACPI CA Core Subsystem: 7988 7989Fixed a problem with the Alias operator when the target of the alias is a 7990named ASL operator that opens a new scope -- Scope, Device, 7991PowerResource, 7992Processor, and ThermalZone. In these cases, any children of the original 7993operator could not be accessed via the alias, potentially causing 7994unexpected 7995AE_NOT_FOUND exceptions. (BZ 9067) 7996 7997Fixed a problem with the Package operator where all named references were 7998created as object references and left otherwise unresolved. According to 7999the 8000ACPI specification, a Package can only contain Data Objects or references 8001to 8002control methods. The implication is that named references to Data Objects 8003(Integer, Buffer, String, Package, BufferField, Field) should be resolved 8004immediately upon package creation. This is the approach taken with this 8005change. References to all other named objects (Methods, Devices, Scopes, 8006etc.) are all now properly created as reference objects. (BZ 5328) 8007 8008Reverted a change to Notify handling that was introduced in version 800920070508. This version changed the Notify handling from asynchronous to 8010fully synchronous (Device driver Notify handling with respect to the 8011Notify 8012ASL operator). It was found that this change caused more problems than it 8013solved and was removed by most users. 8014 8015Fixed a problem with the Increment and Decrement operators where the type 8016of 8017the target object could be unexpectedly and incorrectly changed. (BZ 353) 8018Lin Ming. 8019 8020Fixed a problem with the Load and LoadTable operators where the table 8021location within the namespace was ignored. Instead, the table was always 8022loaded into the root or current scope. Lin Ming. 8023 8024Fixed a problem with the Load operator when loading a table from a buffer 8025object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 8026 8027Fixed a problem with the Debug object where a store of a DdbHandle 8028reference 8029object to the Debug object could cause a fault. 8030 8031Added a table checksum verification for the Load operator, in the case 8032where 8033the load is from a buffer. (BZ 578). 8034 8035Implemented additional parameter validation for the LoadTable operator. 8036The 8037length of the input strings SignatureString, OemIdString, and OemTableId 8038are 8039now checked for maximum lengths. (BZ 582) Lin Ming. 8040 8041Example Code and Data Size: These are the sizes for the OS-independent 8042acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8043debug version of the code includes the debug output trace mechanism and 8044has 8045a much larger code and data size. 8046 8047 Previous Release: 8048 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8049 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 8050 Current Release: 8051 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 8052 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 8053 8054 80552) iASL Compiler/Disassembler: 8056 8057Fixed a problem where if a single file was specified and the file did not 8058exist, no error message was emitted. (Introduced with wildcard support in 8059version 20070917.) 8060 8061---------------------------------------- 806219 September 2007. Summary of changes for version 20070919: 8063 80641) ACPI CA Core Subsystem: 8065 8066Designed and implemented new external interfaces to install and remove 8067handlers for ACPI table-related events. Current events that are defined 8068are 8069LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 8070they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 8071AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 8072 8073Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 8074(acpi_serialized option on Linux) could cause some systems to hang during 8075initialization. (Bob Moore) BZ 8171 8076 8077Fixed a problem where objects of certain types (Device, ThermalZone, 8078Processor, PowerResource) can be not found if they are declared and 8079referenced from within the same control method (Lin Ming) BZ 341 8080 8081Example Code and Data Size: These are the sizes for the OS-independent 8082acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8083debug version of the code includes the debug output trace mechanism and 8084has 8085a much larger code and data size. 8086 8087 Previous Release: 8088 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 8089 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 8090 Current Release: 8091 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8092 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 8093 8094 80952) iASL Compiler/Disassembler: 8096 8097Implemented support to allow multiple files to be compiled/disassembled 8098in 8099a 8100single invocation. This includes command line wildcard support for both 8101the 8102Windows and Unix versions of the compiler. This feature simplifies the 8103disassembly and compilation of multiple ACPI tables in a single 8104directory. 8105 8106---------------------------------------- 810708 May 2007. Summary of changes for version 20070508: 8108 81091) ACPI CA Core Subsystem: 8110 8111Implemented a Microsoft compatibility design change for the handling of 8112the 8113Notify AML operator. Previously, notify handlers were dispatched and 8114executed completely asynchronously in a deferred thread. The new design 8115still executes the notify handlers in a different thread, but the 8116original 8117thread that executed the Notify() now waits at a synchronization point 8118for 8119the notify handler to complete. Some machines depend on a synchronous 8120Notify 8121operator in order to operate correctly. 8122 8123Implemented support to allow Package objects to be passed as method 8124arguments to the external AcpiEvaluateObject interface. Previously, this 8125would return the AE_NOT_IMPLEMENTED exception. This feature had not been 8126implemented since there were no reserved control methods that required it 8127until recently. 8128 8129Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 8130that 8131contained invalid non-zero values in reserved fields could cause later 8132failures because these fields have meaning in later revisions of the 8133FADT. 8134For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 8135fields 8136are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 8137 8138Fixed a problem where the Global Lock handle was not properly updated if 8139a 8140thread that acquired the Global Lock via executing AML code then 8141attempted 8142to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 8143Joe 8144Liu. 8145 8146Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 8147could be corrupted if the interrupt being removed was at the head of the 8148list. Reported by Linn Crosetto. 8149 8150Example Code and Data Size: These are the sizes for the OS-independent 8151acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8152debug version of the code includes the debug output trace mechanism and 8153has 8154a much larger code and data size. 8155 8156 Previous Release: 8157 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8158 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8159 Current Release: 8160 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 8161 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 8162 8163---------------------------------------- 816420 March 2007. Summary of changes for version 20070320: 8165 81661) ACPI CA Core Subsystem: 8167 8168Implemented a change to the order of interpretation and evaluation of AML 8169operand objects within the AML interpreter. The interpreter now evaluates 8170operands in the order that they appear in the AML stream (and the 8171corresponding ASL code), instead of in the reverse order (after the 8172entire 8173operand list has been parsed). The previous behavior caused several 8174subtle 8175incompatibilities with the Microsoft AML interpreter as well as being 8176somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 8177 8178Implemented a change to the ACPI Global Lock support. All interfaces to 8179the 8180global lock now allow the same thread to acquire the lock multiple times. 8181This affects the AcpiAcquireGlobalLock external interface to the global 8182lock 8183as well as the internal use of the global lock to support AML fields -- a 8184control method that is holding the global lock can now simultaneously 8185access 8186AML fields that require global lock protection. Previously, in both 8187cases, 8188this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 8189to 8190AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 8191Controller. There is no change to the behavior of the AML Acquire 8192operator, 8193as this can already be used to acquire a mutex multiple times by the same 8194thread. BZ 8066. With assistance from Alexey Starikovskiy. 8195 8196Fixed a problem where invalid objects could be referenced in the AML 8197Interpreter after error conditions. During operand evaluation, ensure 8198that 8199the internal "Return Object" field is cleared on error and only valid 8200pointers are stored there. Caused occasional access to deleted objects 8201that 8202resulted in "large reference count" warning messages. Valery Podrezov. 8203 8204Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 8205on 8206deeply nested control method invocations. BZ 7873, local BZ 487. Valery 8207Podrezov. 8208 8209Fixed an internal problem with the handling of result objects on the 8210interpreter result stack. BZ 7872. Valery Podrezov. 8211 8212Removed obsolete code that handled the case where AML_NAME_OP is the 8213target 8214of a reference (Reference.Opcode). This code was no longer necessary. BZ 82157874. Valery Podrezov. 8216 8217Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 8218was 8219a 8220remnant from the previously discontinued 16-bit support. 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: 78.0K Code, 17.1K Data, 95.1K Total 8230 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8231 Current Release: 8232 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8233 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8234 8235---------------------------------------- 823626 January 2007. Summary of changes for version 20070126: 8237 82381) ACPI CA Core Subsystem: 8239 8240Added the 2007 copyright to all module headers and signons. This affects 8241virtually every file in the ACPICA core subsystem, the iASL compiler, and 8242the utilities. 8243 8244Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 8245during a table load. A bad pointer was passed in the case where the DSDT 8246is 8247overridden, causing a fault in this case. 8248 8249Example Code and Data Size: These are the sizes for the OS-independent 8250acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8251debug version of the code includes the debug output trace mechanism and 8252has 8253a much larger code and data size. 8254 8255 Previous Release: 8256 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8257 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8258 Current Release: 8259 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8260 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8261 8262---------------------------------------- 826315 December 2006. Summary of changes for version 20061215: 8264 82651) ACPI CA Core Subsystem: 8266 8267Support for 16-bit ACPICA has been completely removed since it is no 8268longer 8269necessary and it clutters the code. All 16-bit macros, types, and 8270conditional compiles have been removed, cleaning up and simplifying the 8271code 8272across the entire subsystem. DOS support is no longer needed since the 8273bootable Linux firmware kit is now available. 8274 8275The handler for the Global Lock is now removed during AcpiTerminate to 8276enable a clean subsystem restart, via the implementation of the 8277AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 8278HP) 8279 8280Implemented enhancements to the multithreading support within the 8281debugger 8282to enable improved multithreading debugging and evaluation of the 8283subsystem. 8284(Valery Podrezov) 8285 8286Debugger: Enhanced the Statistics/Memory command to emit the total 8287(maximum) 8288memory used during the execution, as well as the maximum memory consumed 8289by 8290each of the various object types. (Valery Podrezov) 8291 8292Example Code and Data Size: These are the sizes for the OS-independent 8293acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8294debug version of the code includes the debug output trace mechanism and 8295has 8296a much larger code and data size. 8297 8298 Previous Release: 8299 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8300 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8301 Current Release: 8302 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8303 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8304 8305 83062) iASL Compiler/Disassembler and Tools: 8307 8308AcpiExec: Implemented a new option (-m) to display full memory use 8309statistics upon subsystem/program termination. (Valery Podrezov) 8310 8311---------------------------------------- 831209 November 2006. Summary of changes for version 20061109: 8313 83141) ACPI CA Core Subsystem: 8315 8316Optimized the Load ASL operator in the case where the source operand is 8317an 8318operation region. Simply map the operation region memory, instead of 8319performing a bytewise read. (Region must be of type SystemMemory, see 8320below.) 8321 8322Fixed the Load ASL operator for the case where the source operand is a 8323region field. A buffer object is also allowed as the source operand. BZ 8324480 8325 8326Fixed a problem where the Load ASL operator allowed the source operand to 8327be 8328an operation region of any type. It is now restricted to regions of type 8329SystemMemory, as per the ACPI specification. BZ 481 8330 8331Additional cleanup and optimizations for the new Table Manager code. 8332 8333AcpiEnable will now fail if all of the required ACPI tables are not 8334loaded 8335(FADT, FACS, DSDT). BZ 477 8336 8337Added #pragma pack(8/4) to acobject.h to ensure that the structures in 8338this 8339header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 8340manually optimized to be aligned and will not work if it is byte-packed. 8341 8342Example Code and Data Size: These are the sizes for the OS-independent 8343acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8344debug version of the code includes the debug output trace mechanism and 8345has 8346a much larger code and data size. 8347 8348 Previous Release: 8349 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8350 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8351 Current Release: 8352 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8353 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8354 8355 83562) iASL Compiler/Disassembler and Tools: 8357 8358Fixed a problem where the presence of the _OSI predefined control method 8359within complex expressions could cause an internal compiler error. 8360 8361AcpiExec: Implemented full region support for multiple address spaces. 8362SpaceId is now part of the REGION object. BZ 429 8363 8364---------------------------------------- 836511 October 2006. Summary of changes for version 20061011: 8366 83671) ACPI CA Core Subsystem: 8368 8369Completed an AML interpreter performance enhancement for control method 8370execution. Previously a 2-pass parse/execution, control methods are now 8371completely parsed and executed in a single pass. This improves overall 8372interpreter performance by ~25%, reduces code size, and reduces CPU stack 8373use. (Valery Podrezov + interpreter changes in version 20051202 that 8374eliminated namespace loading during the pass one parse.) 8375 8376Implemented _CID support for PCI Root Bridge detection. If the _HID does 8377not 8378match the predefined PCI Root Bridge IDs, the _CID list (if present) is 8379now 8380obtained and also checked for an ID match. 8381 8382Implemented additional support for the PCI _ADR execution: upsearch until 8383a 8384device scope is found before executing _ADR. This allows PCI_Config 8385operation regions to be declared locally within control methods 8386underneath 8387PCI device objects. 8388 8389Fixed a problem with a possible race condition between threads executing 8390AcpiWalkNamespace and the AML interpreter. This condition was removed by 8391modifying AcpiWalkNamespace to (by default) ignore all temporary 8392namespace 8393entries created during any concurrent control method execution. An 8394additional namespace race condition is known to exist between 8395AcpiWalkNamespace and the Load/Unload ASL operators and is still under 8396investigation. 8397 8398Restructured the AML ParseLoop function, breaking it into several 8399subfunctions in order to reduce CPU stack use and improve 8400maintainability. 8401(Mikhail Kouzmich) 8402 8403AcpiGetHandle: Fix for parameter validation to detect invalid 8404combinations 8405of prefix handle and pathname. BZ 478 8406 8407Example Code and Data Size: These are the sizes for the OS-independent 8408acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8409debug version of the code includes the debug output trace mechanism and 8410has 8411a much larger code and data size. 8412 8413 Previous Release: 8414 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8415 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8416 Current Release: 8417 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8418 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8419 84202) iASL Compiler/Disassembler and Tools: 8421 8422Ported the -g option (get local ACPI tables) to the new ACPICA Table 8423Manager 8424to restore original behavior. 8425 8426---------------------------------------- 842727 September 2006. Summary of changes for version 20060927: 8428 84291) ACPI CA Core Subsystem: 8430 8431Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 8432These functions now use a spinlock for mutual exclusion and the interrupt 8433level indication flag is not needed. 8434 8435Fixed a problem with the Global Lock where the lock could appear to be 8436obtained before it is actually obtained. The global lock semaphore was 8437inadvertently created with one unit instead of zero units. (BZ 464) 8438Fiodor 8439Suietov. 8440 8441Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 8442during 8443a read from a buffer or region field. (BZ 458) Fiodor Suietov. 8444 8445Example Code and Data Size: These are the sizes for the OS-independent 8446acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8447debug version of the code includes the debug output trace mechanism and 8448has 8449a much larger code and data size. 8450 8451 Previous Release: 8452 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8453 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8454 Current Release: 8455 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8456 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8457 8458 84592) iASL Compiler/Disassembler and Tools: 8460 8461Fixed a compilation problem with the pre-defined Resource Descriptor 8462field 8463names where an "object does not exist" error could be incorrectly 8464generated 8465if the parent ResourceTemplate pathname places the template within a 8466different namespace scope than the current scope. (BZ 7212) 8467 8468Fixed a problem where the compiler could hang after syntax errors 8469detected 8470in an ElseIf construct. (BZ 453) 8471 8472Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 8473operator. An incorrect output filename was produced when this parameter 8474was 8475a null string (""). Now, the original input filename is used as the AML 8476output filename, with an ".aml" extension. 8477 8478Implemented a generic batch command mode for the AcpiExec utility 8479(execute 8480any AML debugger command) (Valery Podrezov). 8481 8482---------------------------------------- 848312 September 2006. Summary of changes for version 20060912: 8484 84851) ACPI CA Core Subsystem: 8486 8487Enhanced the implementation of the "serialized mode" of the interpreter 8488(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 8489specified, instead of creating a serialization semaphore per control 8490method, 8491the interpreter lock is simply no longer released before a blocking 8492operation during control method execution. This effectively makes the AML 8493Interpreter single-threaded. The overhead of a semaphore per-method is 8494eliminated. 8495 8496Fixed a regression where an error was no longer emitted if a control 8497method 8498attempts to create 2 objects of the same name. This once again returns 8499AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 8500that 8501will dynamically serialize the control method to possible prevent future 8502errors. (BZ 440) 8503 8504Integrated a fix for a problem with PCI Express HID detection in the PCI 8505Config Space setup procedure. (BZ 7145) 8506 8507Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 8508AcpiHwInitialize function - the FADT registers are now validated when the 8509table is loaded. 8510 8511Added two new warnings during FADT verification - 1) if the FADT is 8512larger 8513than the largest known FADT version, and 2) if there is a mismatch 8514between 8515a 851632-bit block address and the 64-bit X counterpart (when both are non- 8517zero.) 8518 8519Example Code and Data Size: These are the sizes for the OS-independent 8520acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8521debug version of the code includes the debug output trace mechanism and 8522has 8523a much larger code and data size. 8524 8525 Previous Release: 8526 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8527 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8528 Current Release: 8529 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8530 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8531 8532 85332) iASL Compiler/Disassembler and Tools: 8534 8535Fixed a problem with the implementation of the Switch() operator where 8536the 8537temporary variable was declared too close to the actual Switch, instead 8538of 8539at method level. This could cause a problem if the Switch() operator is 8540within a while loop, causing an error on the second iteration. (BZ 460) 8541 8542Disassembler - fix for error emitted for unknown type for target of scope 8543operator. Now, ignore it and continue. 8544 8545Disassembly of an FADT now verifies the input FADT and reports any errors 8546found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 8547 8548Disassembly of raw data buffers with byte initialization data now 8549prefixes 8550each output line with the current buffer offset. 8551 8552Disassembly of ASF! table now includes all variable-length data fields at 8553the end of some of the subtables. 8554 8555The disassembler now emits a comment if a buffer appears to be a 8556ResourceTemplate, but cannot be disassembled as such because the EndTag 8557does 8558not appear at the very end of the buffer. 8559 8560AcpiExec - Added the "-t" command line option to enable the serialized 8561mode 8562of the AML interpreter. 8563 8564---------------------------------------- 856531 August 2006. Summary of changes for version 20060831: 8566 85671) ACPI CA Core Subsystem: 8568 8569Miscellaneous fixes for the Table Manager: 8570- Correctly initialize internal common FADT for all 64-bit "X" fields 8571- Fixed a couple table mapping issues during table load 8572- Fixed a couple alignment issues for IA64 8573- Initialize input array to zero in AcpiInitializeTables 8574- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 8575AcpiGetTableByIndex 8576 8577Change for GPE support: when a "wake" GPE is received, all wake GPEs are 8578now 8579immediately disabled to prevent the waking GPE from firing again and to 8580prevent other wake GPEs from interrupting the wake process. 8581 8582Added the AcpiGpeCount global that tracks the number of processed GPEs, 8583to 8584be used for debugging systems with a large number of ACPI interrupts. 8585 8586Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 8587both the ACPICA headers and the disassembler. 8588 8589Example Code and Data Size: These are the sizes for the OS-independent 8590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8591debug version of the code includes the debug output trace mechanism and 8592has 8593a much larger code and data size. 8594 8595 Previous Release: 8596 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8597 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8598 Current Release: 8599 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8600 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8601 8602 86032) iASL Compiler/Disassembler and Tools: 8604 8605Disassembler support for the DMAR ACPI table. 8606 8607---------------------------------------- 860823 August 2006. Summary of changes for version 20060823: 8609 86101) ACPI CA Core Subsystem: 8611 8612The Table Manager component has been completely redesigned and 8613reimplemented. The new design is much simpler, and reduces the overall 8614code 8615and data size of the kernel-resident ACPICA by approximately 5%. Also, it 8616is 8617now possible to obtain the ACPI tables very early during kernel 8618initialization, even before dynamic memory management is initialized. 8619(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 8620 8621Obsolete ACPICA interfaces: 8622 8623- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 8624init 8625time). 8626- AcpiLoadTable: Not needed. 8627- AcpiUnloadTable: Not needed. 8628 8629New ACPICA interfaces: 8630 8631- AcpiInitializeTables: Must be called before the table manager can be 8632used. 8633- AcpiReallocateRootTable: Used to transfer the root table to dynamically 8634allocated memory after it becomes available. 8635- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 8636tables 8637in the RSDT/XSDT. 8638 8639Other ACPICA changes: 8640 8641- AcpiGetTableHeader returns the actual mapped table header, not a copy. 8642Use 8643AcpiOsUnmapMemory to free this mapping. 8644- AcpiGetTable returns the actual mapped table. The mapping is managed 8645internally and must not be deleted by the caller. Use of this interface 8646causes no additional dynamic memory allocation. 8647- AcpiFindRootPointer: Support for physical addressing has been 8648eliminated, 8649it appeared to be unused. 8650- The interface to AcpiOsMapMemory has changed to be consistent with the 8651other allocation interfaces. 8652- The interface to AcpiOsGetRootPointer has changed to eliminate 8653unnecessary 8654parameters. 8655- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 865664- 8657bit platforms. Was previously 64 bits on all platforms. 8658- The interface to the ACPI Global Lock acquire/release macros have 8659changed 8660slightly since ACPICA no longer keeps a local copy of the FACS with a 8661constructed pointer to the actual global lock. 8662 8663Porting to the new table manager: 8664 8665- AcpiInitializeTables: Must be called once, and can be called anytime 8666during the OS initialization process. It allows the host to specify an 8667area 8668of memory to be used to store the internal version of the RSDT/XSDT (root 8669table). This allows the host to access ACPI tables before memory 8670management 8671is initialized and running. 8672- AcpiReallocateRootTable: Can be called after memory management is 8673running 8674to copy the root table to a dynamically allocated array, freeing up the 8675scratch memory specified in the call to AcpiInitializeTables. 8676- AcpiSubsystemInitialize: This existing interface is independent of the 8677Table Manager, and does not have to be called before the Table Manager 8678can 8679be used, it only must be called before the rest of ACPICA can be used. 8680- ACPI Tables: Some changes have been made to the names and structure of 8681the 8682actbl.h and actbl1.h header files and may require changes to existing 8683code. 8684For example, bitfields have been completely removed because of their lack 8685of 8686portability across C compilers. 8687- Update interfaces to the Global Lock acquire/release macros if local 8688versions are used. (see acwin.h) 8689 8690Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 8691 8692New files: tbfind.c 8693 8694Example Code and Data Size: These are the sizes for the OS-independent 8695acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8696debug version of the code includes the debug output trace mechanism and 8697has 8698a much larger code and data size. 8699 8700 Previous Release: 8701 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8702 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8703 Current Release: 8704 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8705 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8706 8707 87082) iASL Compiler/Disassembler and Tools: 8709 8710No changes for this release. 8711 8712---------------------------------------- 871321 July 2006. Summary of changes for version 20060721: 8714 87151) ACPI CA Core Subsystem: 8716 8717The full source code for the ASL test suite used to validate the iASL 8718compiler and the ACPICA core subsystem is being released with the ACPICA 8719source for the first time. The source is contained in a separate package 8720and 8721consists of over 1100 files that exercise all ASL/AML operators. The 8722package 8723should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 8724Fiodor 8725Suietov) 8726 8727Completed a new design and implementation for support of the ACPI Global 8728Lock. On the OS side, the global lock is now treated as a standard AML 8729mutex. Previously, multiple OS threads could "acquire" the global lock 8730simultaneously. However, this could cause the BIOS to be starved out of 8731the 8732lock - especially in cases such as the Embedded Controller driver where 8733there is a tight coupling between the OS and the BIOS. 8734 8735Implemented an optimization for the ACPI Global Lock interrupt mechanism. 8736The Global Lock interrupt handler no longer queues the execution of a 8737separate thread to signal the global lock semaphore. Instead, the 8738semaphore 8739is signaled directly from the interrupt handler. 8740 8741Implemented support within the AML interpreter for package objects that 8742contain a larger AML length (package list length) than the package 8743element 8744count. In this case, the length of the package is truncated to match the 8745package element count. Some BIOS code apparently modifies the package 8746length 8747on the fly, and this change supports this behavior. Provides 8748compatibility 8749with the MS AML interpreter. (With assistance from Fiodor Suietov) 8750 8751Implemented a temporary fix for the BankValue parameter of a Bank Field 8752to 8753support all constant values, now including the Zero and One opcodes. 8754Evaluation of this parameter must eventually be converted to a full 8755TermArg 8756evaluation. A not-implemented error is now returned (temporarily) for 8757non- 8758constant values for this parameter. 8759 8760Fixed problem reports (Fiodor Suietov) integrated: 8761- Fix for premature object deletion after CopyObject on Operation Region 8762(BZ 8763350) 8764 8765Example Code and Data Size: These are the sizes for the OS-independent 8766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8767debug version of the code includes the debug output trace mechanism and 8768has 8769a much larger code and data size. 8770 8771 Previous Release: 8772 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 8773 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 8774 Current Release: 8775 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8776 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8777 8778 87792) iASL Compiler/Disassembler and Tools: 8780 8781No changes for this release. 8782 8783---------------------------------------- 878407 July 2006. Summary of changes for version 20060707: 8785 87861) ACPI CA Core Subsystem: 8787 8788Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 8789that do not allow the initialization of address pointers within packed 8790structures - even though the hardware itself may support misaligned 8791transfers. Some of the debug data structures are packed by default to 8792minimize size. 8793 8794Added an error message for the case where AcpiOsGetThreadId() returns 8795zero. 8796A non-zero value is required by the core ACPICA code to ensure the proper 8797operation of AML mutexes and recursive control methods. 8798 8799The DSDT is now the only ACPI table that determines whether the AML 8800interpreter is in 32-bit or 64-bit mode. Not really a functional change, 8801but 8802the hooks for per-table 32/64 switching have been removed from the code. 8803A 8804clarification to the ACPI specification is forthcoming in ACPI 3.0B. 8805 8806Fixed a possible leak of an OwnerID in the error path of 8807AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 8808deletion to a single place in AcpiTbUninstallTable to correct possible 8809leaks 8810when using the AcpiTbDeleteTablesByType interface (with assistance from 8811Lance Ortiz.) 8812 8813Fixed a problem with Serialized control methods where the semaphore 8814associated with the method could be over-signaled after multiple method 8815invocations. 8816 8817Fixed two issues with the locking of the internal namespace data 8818structure. 8819Both the Unload() operator and AcpiUnloadTable interface now lock the 8820namespace during the namespace deletion associated with the table unload 8821(with assistance from Linn Crosetto.) 8822 8823Fixed problem reports (Valery Podrezov) integrated: 8824- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 8825 8826Fixed problem reports (Fiodor Suietov) integrated: 8827- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 8828- On Address Space handler deletion, needless deactivation call (BZ 374) 8829- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 8830375) 8831- Possible memory leak, Notify sub-objects of Processor, Power, 8832ThermalZone 8833(BZ 376) 8834- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 8835- Minimum Length of RSDT should be validated (BZ 379) 8836- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 8837Handler (BZ (380) 8838- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 8839loaded 8840(BZ 381) 8841 8842Example Code and Data Size: These are the sizes for the OS-independent 8843acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8844debug version of the code includes the debug output trace mechanism and 8845has 8846a much larger code and data size. 8847 8848 Previous Release: 8849 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8850 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8851 Current Release: 8852 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8853 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8854 8855 88562) iASL Compiler/Disassembler and Tools: 8857 8858Fixed problem reports: 8859Compiler segfault when ASL contains a long (>1024) String declaration (BZ 8860436) 8861 8862---------------------------------------- 886323 June 2006. Summary of changes for version 20060623: 8864 88651) ACPI CA Core Subsystem: 8866 8867Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 8868allows the type to be customized to the host OS for improved efficiency 8869(since a spinlock is usually a very small object.) 8870 8871Implemented support for "ignored" bits in the ACPI registers. According 8872to 8873the ACPI specification, these bits should be preserved when writing the 8874registers via a read/modify/write cycle. There are 3 bits preserved in 8875this 8876manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 8877 8878Implemented the initial deployment of new OSL mutex interfaces. Since 8879some 8880host operating systems have separate mutex and semaphore objects, this 8881feature was requested. The base code now uses mutexes (and the new mutex 8882interfaces) wherever a binary semaphore was used previously. However, for 8883the current release, the mutex interfaces are defined as macros to map 8884them 8885to the existing semaphore interfaces. Therefore, no OSL changes are 8886required 8887at this time. (See acpiosxf.h) 8888 8889Fixed several problems with the support for the control method SyncLevel 8890parameter. The SyncLevel now works according to the ACPI specification 8891and 8892in concert with the Mutex SyncLevel parameter, since the current 8893SyncLevel 8894is a property of the executing thread. Mutual exclusion for control 8895methods 8896is now implemented with a mutex instead of a semaphore. 8897 8898Fixed three instances of the use of the C shift operator in the bitfield 8899support code (exfldio.c) to avoid the use of a shift value larger than 8900the 8901target data width. The behavior of C compilers is undefined in this case 8902and 8903can cause unpredictable results, and therefore the case must be detected 8904and 8905avoided. (Fiodor Suietov) 8906 8907Added an info message whenever an SSDT or OEM table is loaded dynamically 8908via the Load() or LoadTable() ASL operators. This should improve 8909debugging 8910capability since it will show exactly what tables have been loaded 8911(beyond 8912the tables present in the RSDT/XSDT.) 8913 8914Example Code and Data Size: These are the sizes for the OS-independent 8915acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8916debug version of the code includes the debug output trace mechanism and 8917has 8918a much larger code and data size. 8919 8920 Previous Release: 8921 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8922 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8923 Current Release: 8924 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8925 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8926 8927 89282) iASL Compiler/Disassembler and Tools: 8929 8930No changes for this release. 8931 8932---------------------------------------- 893308 June 2006. Summary of changes for version 20060608: 8934 89351) ACPI CA Core Subsystem: 8936 8937Converted the locking mutex used for the ACPI hardware to a spinlock. 8938This 8939change should eliminate all problems caused by attempting to acquire a 8940semaphore at interrupt level, and it means that all ACPICA external 8941interfaces that directly access the ACPI hardware can be safely called 8942from 8943interrupt level. OSL code that implements the semaphore interfaces should 8944be 8945able to eliminate any workarounds for being called at interrupt level. 8946 8947Fixed a regression introduced in 20060526 where the ACPI device 8948initialization could be prematurely aborted with an AE_NOT_FOUND if a 8949device 8950did not have an optional _INI method. 8951 8952Fixed an IndexField issue where a write to the Data Register should be 8953limited in size to the AccessSize (width) of the IndexField itself. (BZ 8954433, 8955Fiodor Suietov) 8956 8957Fixed problem reports (Valery Podrezov) integrated: 8958- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 8959 8960Fixed problem reports (Fiodor Suietov) integrated: 8961- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 8962 8963Removed four global mutexes that were obsolete and were no longer being 8964used. 8965 8966Example Code and Data Size: These are the sizes for the OS-independent 8967acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8968debug version of the code includes the debug output trace mechanism and 8969has 8970a much larger code and data size. 8971 8972 Previous Release: 8973 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 8974 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 8975 Current Release: 8976 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8977 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8978 8979 89802) iASL Compiler/Disassembler and Tools: 8981 8982Fixed a fault when using -g option (get tables from registry) on Windows 8983machines. 8984 8985Fixed problem reports integrated: 8986- Generate error if CreateField NumBits parameter is zero. (BZ 405) 8987- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 8988Suietov) 8989- Global table revision override (-r) is ignored (BZ 413) 8990 8991---------------------------------------- 899226 May 2006. Summary of changes for version 20060526: 8993 89941) ACPI CA Core Subsystem: 8995 8996Restructured, flattened, and simplified the internal interfaces for 8997namespace object evaluation - resulting in smaller code, less CPU stack 8998use, 8999and fewer interfaces. (With assistance from Mikhail Kouzmich) 9000 9001Fixed a problem with the CopyObject operator where the first parameter 9002was 9003not typed correctly for the parser, interpreter, compiler, and 9004disassembler. 9005Caused various errors and unexpected behavior. 9006 9007Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 9008produced incorrect results with some C compilers. Since the behavior of C 9009compilers when the shift value is larger than the datatype width is 9010apparently not well defined, the interpreter now detects this condition 9011and 9012simply returns zero as expected in all such cases. (BZ 395) 9013 9014Fixed problem reports (Valery Podrezov) integrated: 9015- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 9016- Allow interpreter to handle nested method declarations (BZ 5361) 9017 9018Fixed problem reports (Fiodor Suietov) integrated: 9019- AcpiTerminate doesn't free debug memory allocation list objects (BZ 9020355) 9021- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 9022356) 9023- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 9024- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 9025- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 9026- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 9027- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 9028- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 9029- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 9030365) 9031- Status of the Global Initialization Handler call not used (BZ 366) 9032- Incorrect object parameter to Global Initialization Handler (BZ 367) 9033 9034Example Code and Data Size: These are the sizes for the OS-independent 9035acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9036debug version of the code includes the debug output trace mechanism and 9037has 9038a much larger code and data size. 9039 9040 Previous Release: 9041 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 9042 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 9043 Current Release: 9044 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 9045 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 9046 9047 90482) iASL Compiler/Disassembler and Tools: 9049 9050Modified the parser to allow the names IO, DMA, and IRQ to be used as 9051namespace identifiers with no collision with existing resource descriptor 9052macro names. This provides compatibility with other ASL compilers and is 9053most useful for disassembly/recompilation of existing tables without 9054parse 9055errors. (With assistance from Thomas Renninger) 9056 9057Disassembler: fixed an incorrect disassembly problem with the 9058DataTableRegion and CopyObject operators. Fixed a possible fault during 9059disassembly of some Alias operators. 9060 9061---------------------------------------- 906212 May 2006. Summary of changes for version 20060512: 9063 90641) ACPI CA Core Subsystem: 9065 9066Replaced the AcpiOsQueueForExecution interface with a new interface named 9067AcpiOsExecute. The major difference is that the new interface does not 9068have 9069a Priority parameter, this appeared to be useless and has been replaced 9070by 9071a 9072Type parameter. The Type tells the host what type of execution is being 9073requested, such as global lock handler, notify handler, GPE handler, etc. 9074This allows the host to queue and execute the request as appropriate for 9075the 9076request type, possibly using different work queues and different 9077priorities 9078for the various request types. This enables fixes for multithreading 9079deadlock problems such as BZ #5534, and will require changes to all 9080existing 9081OS interface layers. (Alexey Starikovskiy and Bob Moore) 9082 9083Fixed a possible memory leak associated with the support for the so- 9084called 9085"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 9086Suietov) 9087 9088Fixed a problem with the Load() operator where a table load from an 9089operation region could overwrite an internal table buffer by up to 7 9090bytes 9091and cause alignment faults on IPF systems. (With assistance from Luming 9092Yu) 9093 9094Example Code and Data Size: These are the sizes for the OS-independent 9095acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9096debug version of the code includes the debug output trace mechanism and 9097has 9098a much larger code and data size. 9099 9100 Previous Release: 9101 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9102 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9103 Current Release: 9104 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 9105 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 9106 9107 9108 91092) iASL Compiler/Disassembler and Tools: 9110 9111Disassembler: Implemented support to cross reference the internal 9112namespace 9113and automatically generate ASL External() statements for symbols not 9114defined 9115within the current table being disassembled. This will simplify the 9116disassembly and recompilation of interdependent tables such as SSDTs 9117since 9118these statements will no longer have to be added manually. 9119 9120Disassembler: Implemented experimental support to automatically detect 9121invocations of external control methods and generate appropriate 9122External() 9123statements. This is problematic because the AML cannot be correctly 9124parsed 9125until the number of arguments for each control method is known. 9126Currently, 9127standalone method invocations and invocations as the source operand of a 9128Store() statement are supported. 9129 9130Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 9131LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 9132LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 9133more readable and likely closer to the original ASL source. 9134 9135---------------------------------------- 913621 April 2006. Summary of changes for version 20060421: 9137 91381) ACPI CA Core Subsystem: 9139 9140Removed a device initialization optimization introduced in 20051216 where 9141the _STA method was not run unless an _INI was also present for the same 9142device. This optimization could cause problems because it could allow 9143_INI 9144methods to be run within a not-present device subtree. (If a not-present 9145device had no _INI, _STA would not be run, the not-present status would 9146not 9147be discovered, and the children of the device would be incorrectly 9148traversed.) 9149 9150Implemented a new _STA optimization where namespace subtrees that do not 9151contain _INI are identified and ignored during device initialization. 9152Selectively running _STA can significantly improve boot time on large 9153machines (with assistance from Len Brown.) 9154 9155Implemented support for the device initialization case where the returned 9156_STA flags indicate a device not-present but functioning. In this case, 9157_INI 9158is not run, but the device children are examined for presence, as per the 9159ACPI specification. 9160 9161Implemented an additional change to the IndexField support in order to 9162conform to MS behavior. The value written to the Index Register is not 9163simply a byte offset, it is a byte offset in units of the access width of 9164the parent Index Field. (Fiodor Suietov) 9165 9166Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 9167interface is called during the creation of all AML operation regions, and 9168allows the host OS to exert control over what addresses it will allow the 9169AML code to access. Operation Regions whose addresses are disallowed will 9170cause a runtime exception when they are actually accessed (will not 9171affect 9172or abort table loading.) See oswinxf or osunixxf for an example 9173implementation. 9174 9175Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 9176interface allows the host OS to match the various "optional" 9177interface/behavior strings for the _OSI predefined control method as 9178appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 9179for an example implementation. 9180 9181Restructured and corrected various problems in the exception handling 9182code 9183paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 9184(with assistance from Takayoshi Kochi.) 9185 9186Modified the Linux source converter to ignore quoted string literals 9187while 9188converting identifiers from mixed to lower case. This will correct 9189problems 9190with the disassembler and other areas where such strings must not be 9191modified. 9192 9193The ACPI_FUNCTION_* macros no longer require quotes around the function 9194name. This allows the Linux source converter to convert the names, now 9195that 9196the converter ignores quoted strings. 9197 9198Example Code and Data Size: These are the sizes for the OS-independent 9199acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9200debug version of the code includes the debug output trace mechanism and 9201has 9202a much larger code and data size. 9203 9204 Previous Release: 9205 9206 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9207 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9208 Current Release: 9209 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9210 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9211 9212 92132) iASL Compiler/Disassembler and Tools: 9214 9215Implemented 3 new warnings for iASL, and implemented multiple warning 9216levels 9217(w2 flag). 9218 92191) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 9220not 9221WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 9222check for the possible timeout, a warning is issued. 9223 92242) Useless operators: If an ASL operator does not specify an optional 9225target 9226operand and it also does not use the function return value from the 9227operator, a warning is issued since the operator effectively does 9228nothing. 9229 92303) Unreferenced objects: If a namespace object is created, but never 9231referenced, a warning is issued. This is a warning level 2 since there 9232are 9233cases where this is ok, such as when a secondary table is loaded that 9234uses 9235the unreferenced objects. Even so, care is taken to only flag objects 9236that 9237don't look like they will ever be used. For example, the reserved methods 9238(starting with an underscore) are usually not referenced because it is 9239expected that the OS will invoke them. 9240 9241---------------------------------------- 924231 March 2006. Summary of changes for version 20060331: 9243 92441) ACPI CA Core Subsystem: 9245 9246Implemented header file support for the following additional ACPI tables: 9247ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 9248support, 9249all current and known ACPI tables are now defined in the ACPICA headers 9250and 9251are available for use by device drivers and other software. 9252 9253Implemented support to allow tables that contain ACPI names with invalid 9254characters to be loaded. Previously, this would cause the table load to 9255fail, but since there are several known cases of such tables on existing 9256machines, this change was made to enable ACPI support for them. Also, 9257this 9258matches the behavior of the Microsoft ACPI implementation. 9259 9260Fixed a couple regressions introduced during the memory optimization in 9261the 926220060317 release. The namespace node definition required additional 9263reorganization and an internal datatype that had been changed to 8-bit 9264was 9265restored to 32-bit. (Valery Podrezov) 9266 9267Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 9268could be passed through to AcpiOsReleaseObject which is unexpected. Such 9269null pointers are now trapped and ignored, matching the behavior of the 9270previous implementation before the deployment of AcpiOsReleaseObject. 9271(Valery Podrezov, Fiodor Suietov) 9272 9273Fixed a memory mapping leak during the deletion of a SystemMemory 9274operation 9275region where a cached memory mapping was not deleted. This became a 9276noticeable problem for operation regions that are defined within 9277frequently 9278used control methods. (Dana Meyers) 9279 9280Reorganized the ACPI table header files into two main files: one for the 9281ACPI tables consumed by the ACPICA core, and another for the 9282miscellaneous 9283ACPI tables that are consumed by the drivers and other software. The 9284various 9285FADT definitions were merged into one common section and three different 9286tables (ACPI 1.0, 1.0+, and 2.0) 9287 9288Example Code and Data Size: These are the sizes for the OS-independent 9289acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9290debug version of the code includes the debug output trace mechanism and 9291has 9292a much larger code and data size. 9293 9294 Previous Release: 9295 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9296 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9297 Current Release: 9298 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9299 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9300 9301 93022) iASL Compiler/Disassembler and Tools: 9303 9304Disassembler: Implemented support to decode and format all non-AML ACPI 9305tables (tables other than DSDTs and SSDTs.) This includes the new tables 9306added to the ACPICA headers, therefore all current and known ACPI tables 9307are 9308supported. 9309 9310Disassembler: The change to allow ACPI names with invalid characters also 9311enables the disassembly of such tables. Invalid characters within names 9312are 9313changed to '*' to make the name printable; the iASL compiler will still 9314generate an error for such names, however, since this is an invalid ACPI 9315character. 9316 9317Implemented an option for AcpiXtract (-a) to extract all tables found in 9318the 9319input file. The default invocation extracts only the DSDTs and SSDTs. 9320 9321Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 9322makefile for the AcpiXtract utility. 9323 9324---------------------------------------- 932517 March 2006. Summary of changes for version 20060317: 9326 93271) ACPI CA Core Subsystem: 9328 9329Implemented the use of a cache object for all internal namespace nodes. 9330Since there are about 1000 static nodes in a typical system, this will 9331decrease memory use for cache implementations that minimize per- 9332allocation 9333overhead (such as a slab allocator.) 9334 9335Removed the reference count mechanism for internal namespace nodes, since 9336it 9337was deemed unnecessary. This reduces the size of each namespace node by 9338about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 9339case, 9340and 32 bytes for the 64-bit case. 9341 9342Optimized several internal data structures to reduce object size on 64- 9343bit 9344platforms by packing data within the 64-bit alignment. This includes the 9345frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 9346instances corresponding to the namespace objects. 9347 9348Added two new strings for the predefined _OSI method: "Windows 2001.1 9349SP1" 9350and "Windows 2006". 9351 9352Split the allocation tracking mechanism out to a separate file, from 9353utalloc.c to uttrack.c. This mechanism appears to be only useful for 9354application-level code. Kernels may wish to not include uttrack.c in 9355distributions. 9356 9357Removed all remnants of the obsolete ACPI_REPORT_* macros and the 9358associated 9359code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 9360macros.) 9361 9362Code and Data Size: These are the sizes for the acpica.lib produced by 9363the 9364Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9365ACPI 9366driver or OSPM code. The debug version of the code includes the debug 9367output 9368trace mechanism and has a much larger code and data size. Note that these 9369values will vary depending on the efficiency of the compiler and the 9370compiler options used during generation. 9371 9372 Previous Release: 9373 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9374 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9375 Current Release: 9376 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9377 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9378 9379 93802) iASL Compiler/Disassembler and Tools: 9381 9382Implemented an ANSI C version of the acpixtract utility. This version 9383will 9384automatically extract the DSDT and all SSDTs from the input acpidump text 9385file and dump the binary output to separate files. It can also display a 9386summary of the input file including the headers for each table found and 9387will extract any single ACPI table, with any signature. (See 9388source/tools/acpixtract) 9389 9390---------------------------------------- 939110 March 2006. Summary of changes for version 20060310: 9392 93931) ACPI CA Core Subsystem: 9394 9395Tagged all external interfaces to the subsystem with the new 9396ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 9397assist 9398kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 9399macro. The default definition is NULL. 9400 9401Added the ACPI_THREAD_ID type for the return value from 9402AcpiOsGetThreadId. 9403This allows the host to define this as necessary to simplify kernel 9404integration. The default definition is ACPI_NATIVE_UINT. 9405 9406Fixed two interpreter problems related to error processing, the deletion 9407of 9408objects, and placing invalid pointers onto the internal operator result 9409stack. BZ 6028, 6151 (Valery Podrezov) 9410 9411Increased the reference count threshold where a warning is emitted for 9412large 9413reference counts in order to eliminate unnecessary warnings on systems 9414with 9415large namespaces (especially 64-bit.) Increased the value from 0x400 to 94160x800. 9417 9418Due to universal disagreement as to the meaning of the 'c' in the 9419calloc() 9420function, the ACPI_MEM_CALLOCATE macro has been renamed to 9421ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 9422ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 9423ACPI_FREE. 9424 9425Code and Data Size: These are the sizes for the acpica.lib produced by 9426the 9427Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9428ACPI 9429driver or OSPM code. The debug version of the code includes the debug 9430output 9431trace mechanism and has a much larger code and data size. Note that these 9432values will vary depending on the efficiency of the compiler and the 9433compiler options used during generation. 9434 9435 Previous Release: 9436 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9437 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9438 Current Release: 9439 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9440 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9441 9442 94432) iASL Compiler/Disassembler: 9444 9445Disassembler: implemented support for symbolic resource descriptor 9446references. If a CreateXxxxField operator references a fixed offset 9447within 9448a 9449resource descriptor, a name is assigned to the descriptor and the offset 9450is 9451translated to the appropriate resource tag and pathname. The addition of 9452this support brings the disassembled code very close to the original ASL 9453source code and helps eliminate run-time errors when the disassembled 9454code 9455is modified (and recompiled) in such a way as to invalidate the original 9456fixed offsets. 9457 9458Implemented support for a Descriptor Name as the last parameter to the 9459ASL 9460Register() macro. This parameter was inadvertently left out of the ACPI 9461specification, and will be added for ACPI 3.0b. 9462 9463Fixed a problem where the use of the "_OSI" string (versus the full path 9464"\_OSI") caused an internal compiler error. ("No back ptr to op") 9465 9466Fixed a problem with the error message that occurs when an invalid string 9467is 9468used for a _HID object (such as one with an embedded asterisk: 9469"*PNP010A".) 9470The correct message is now displayed. 9471 9472---------------------------------------- 947317 February 2006. Summary of changes for version 20060217: 9474 94751) ACPI CA Core Subsystem: 9476 9477Implemented a change to the IndexField support to match the behavior of 9478the 9479Microsoft AML interpreter. The value written to the Index register is now 9480a 9481byte offset, no longer an index based upon the width of the Data 9482register. 9483This should fix IndexField problems seen on some machines where the Data 9484register is not exactly one byte wide. The ACPI specification will be 9485clarified on this point. 9486 9487Fixed a problem where several resource descriptor types could overrun the 9488internal descriptor buffer due to size miscalculation: VendorShort, 9489VendorLong, and Interrupt. This was noticed on IA64 machines, but could 9490affect all platforms. 9491 9492Fixed a problem where individual resource descriptors were misaligned 9493within 9494the internal buffer, causing alignment faults on IA64 platforms. 9495 9496Code and Data Size: These are the sizes for the acpica.lib produced by 9497the 9498Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9499ACPI 9500driver or OSPM code. The debug version of the code includes the debug 9501output 9502trace mechanism and has a much larger code and data size. Note that these 9503values will vary depending on the efficiency of the compiler and the 9504compiler options used during generation. 9505 9506 Previous Release: 9507 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9508 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9509 Current Release: 9510 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9511 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9512 9513 95142) iASL Compiler/Disassembler: 9515 9516Implemented support for new reserved names: _WDG and _WED are Microsoft 9517extensions for Windows Instrumentation Management, _TDL is a new ACPI- 9518defined method (Throttling Depth Limit.) 9519 9520Fixed a problem where a zero-length VendorShort or VendorLong resource 9521descriptor was incorrectly emitted as a descriptor of length one. 9522 9523---------------------------------------- 952410 February 2006. Summary of changes for version 20060210: 9525 95261) ACPI CA Core Subsystem: 9527 9528Removed a couple of extraneous ACPI_ERROR messages that appeared during 9529normal execution. These became apparent after the conversion from 9530ACPI_DEBUG_PRINT. 9531 9532Fixed a problem where the CreateField operator could hang if the BitIndex 9533or 9534NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 9535 9536Fixed a problem where a DeRefOf operation on a buffer object incorrectly 9537failed with an exception. This also fixes a couple of related RefOf and 9538DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 9539 9540Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 9541of 9542AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 9543BZ 95445480) 9545 9546Implemented a memory cleanup at the end of the execution of each 9547iteration 9548of an AML While() loop, preventing the accumulation of outstanding 9549objects. 9550(Valery Podrezov, BZ 5427) 9551 9552Eliminated a chunk of duplicate code in the object resolution code. 9553(Valery 9554Podrezov, BZ 5336) 9555 9556Fixed several warnings during the 64-bit code generation. 9557 9558The AcpiSrc source code conversion tool now inserts one line of 9559whitespace 9560after an if() statement that is followed immediately by a comment, 9561improving 9562readability of the Linux code. 9563 9564Code and Data Size: The current and previous library sizes for the core 9565subsystem are shown below. These are the code and data sizes for the 9566acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9567These 9568values do not include any ACPI driver or OSPM code. The debug version of 9569the 9570code includes the debug output trace mechanism and has a much larger code 9571and data size. Note that these values will vary depending on the 9572efficiency 9573of the compiler and the compiler options used during generation. 9574 9575 Previous Release: 9576 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9577 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9578 Current Release: 9579 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9580 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9581 9582 95832) iASL Compiler/Disassembler: 9584 9585Fixed a problem with the disassembly of a BankField operator with a 9586complex 9587expression for the BankValue parameter. 9588 9589---------------------------------------- 959027 January 2006. Summary of changes for version 20060127: 9591 95921) ACPI CA Core Subsystem: 9593 9594Implemented support in the Resource Manager to allow unresolved 9595namestring 9596references within resource package objects for the _PRT method. This 9597support 9598is in addition to the previously implemented unresolved reference support 9599within the AML parser. If the interpreter slack mode is enabled, these 9600unresolved references will be passed through to the caller as a NULL 9601package 9602entry. 9603 9604Implemented and deployed new macros and functions for error and warning 9605messages across the subsystem. These macros are simpler and generate less 9606code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 9607ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 9608macros remain defined to allow ACPI drivers time to migrate to the new 9609macros. 9610 9611Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 9612the 9613Acquire/Release Lock OSL interfaces. 9614 9615Fixed a problem where Alias ASL operators are sometimes not correctly 9616resolved, in both the interpreter and the iASL compiler. 9617 9618Fixed several problems with the implementation of the 9619ConcatenateResTemplate 9620ASL operator. As per the ACPI specification, zero length buffers are now 9621treated as a single EndTag. One-length buffers always cause a fatal 9622exception. Non-zero length buffers that do not end with a full 2-byte 9623EndTag 9624cause a fatal exception. 9625 9626Fixed a possible structure overwrite in the AcpiGetObjectInfo external 9627interface. (With assistance from Thomas Renninger) 9628 9629Code and Data Size: The current and previous library sizes for the core 9630subsystem are shown below. These are the code and data sizes for the 9631acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9632These 9633values do not include any ACPI driver or OSPM code. The debug version of 9634the 9635code includes the debug output trace mechanism and has a much larger code 9636and data size. Note that these values will vary depending on the 9637efficiency 9638of the compiler and the compiler options used during generation. 9639 9640 Previous Release: 9641 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9642 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9643 Current Release: 9644 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9645 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9646 9647 96482) iASL Compiler/Disassembler: 9649 9650Fixed an internal error that was generated for any forward references to 9651ASL 9652Alias objects. 9653 9654---------------------------------------- 965513 January 2006. Summary of changes for version 20060113: 9656 96571) ACPI CA Core Subsystem: 9658 9659Added 2006 copyright to all module headers and signons. This affects 9660virtually every file in the ACPICA core subsystem, iASL compiler, and the 9661utilities. 9662 9663Enhanced the ACPICA error reporting in order to simplify user migration 9664to 9665the non-debug version of ACPICA. Replaced all instances of the 9666ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 9667debug 9668levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 9669respectively. This preserves all error and warning messages in the non- 9670debug 9671version of the ACPICA code (this has been referred to as the "debug lite" 9672option.) Over 200 cases were converted to create a total of over 380 9673error/warning messages across the ACPICA code. This increases the code 9674and 9675data size of the default non-debug version of the code somewhat (about 967613K), 9677but all error/warning reporting may be disabled if desired (and code 9678eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 9679configuration option. The size of the debug version of ACPICA remains 9680about 9681the same. 9682 9683Fixed a memory leak within the AML Debugger "Set" command. One object was 9684not properly deleted for every successful invocation of the command. 9685 9686Code and Data Size: The current and previous library sizes for the core 9687subsystem are shown below. These are the code and data sizes for the 9688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9689These 9690values do not include any ACPI driver or OSPM code. The debug version of 9691the 9692code includes the debug output trace mechanism and has a much larger code 9693and data size. Note that these values will vary depending on the 9694efficiency 9695of the compiler and the compiler options used during generation. 9696 9697 Previous Release: 9698 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 9699 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 9700 Current Release: 9701 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9702 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9703 9704 97052) iASL Compiler/Disassembler: 9706 9707The compiler now officially supports the ACPI 3.0a specification that was 9708released on December 30, 2005. (Specification is available at 9709www.acpi.info) 9710 9711---------------------------------------- 971216 December 2005. Summary of changes for version 20051216: 9713 97141) ACPI CA Core Subsystem: 9715 9716Implemented optional support to allow unresolved names within ASL Package 9717objects. A null object is inserted in the package when a named reference 9718cannot be located in the current namespace. Enabled via the interpreter 9719slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 9720machines 9721that contain such code. 9722 9723Implemented an optimization to the initialization sequence that can 9724improve 9725boot time. During ACPI device initialization, the _STA method is now run 9726if 9727and only if the _INI method exists. The _STA method is used to determine 9728if 9729the device is present; An _INI can only be run if _STA returns present, 9730but 9731it is a waste of time to run the _STA method if the _INI does not exist. 9732(Prototype and assistance from Dong Wei) 9733 9734Implemented use of the C99 uintptr_t for the pointer casting macros if it 9735is 9736available in the current compiler. Otherwise, the default (void *) cast 9737is 9738used as before. 9739 9740Fixed some possible memory leaks found within the execution path of the 9741Break, Continue, If, and CreateField operators. (Valery Podrezov) 9742 9743Fixed a problem introduced in the 20051202 release where an exception is 9744generated during method execution if a control method attempts to declare 9745another method. 9746 9747Moved resource descriptor string constants that are used by both the AML 9748disassembler and AML debugger to the common utilities directory so that 9749these components are independent. 9750 9751Implemented support in the AcpiExec utility (-e switch) to globally 9752ignore 9753exceptions during control method execution (method is not aborted.) 9754 9755Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 9756generation. 9757 9758Code and Data Size: The current and previous library sizes for the core 9759subsystem are shown below. These are the code and data sizes for the 9760acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9761These 9762values do not include any ACPI driver or OSPM code. The debug version of 9763the 9764code includes the debug output trace mechanism and has a much larger code 9765and data size. Note that these values will vary depending on the 9766efficiency 9767of the compiler and the compiler options used during generation. 9768 9769 Previous Release: 9770 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9771 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 9772 Current Release: 9773 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 9774 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 9775 9776 97772) iASL Compiler/Disassembler: 9778 9779Fixed a problem where a CPU stack overflow fault could occur if a 9780recursive 9781method call was made from within a Return statement. 9782 9783---------------------------------------- 978402 December 2005. Summary of changes for version 20051202: 9785 97861) ACPI CA Core Subsystem: 9787 9788Modified the parsing of control methods to no longer create namespace 9789objects during the first pass of the parse. Objects are now created only 9790during the execute phase, at the moment the namespace creation operator 9791is 9792encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 9793This 9794should eliminate ALREADY_EXISTS exceptions seen on some machines where 9795reentrant control methods are protected by an AML mutex. The mutex will 9796now 9797correctly block multiple threads from attempting to create the same 9798object 9799more than once. 9800 9801Increased the number of available Owner Ids for namespace object tracking 9802from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 9803on 9804some machines with a large number of ACPI tables (either static or 9805dynamic). 9806 9807Fixed a problem with the AcpiExec utility where a fault could occur when 9808the 9809-b switch (batch mode) is used. 9810 9811Enhanced the namespace dump routine to output the owner ID for each 9812namespace object. 9813 9814Code and Data Size: The current and previous library sizes for the core 9815subsystem are shown below. These are the code and data sizes for the 9816acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9817These 9818values do not include any ACPI driver or OSPM code. The debug version of 9819the 9820code includes the debug output trace mechanism and has a much larger code 9821and data size. Note that these values will vary depending on the 9822efficiency 9823of the compiler and the compiler options used during generation. 9824 9825 Previous Release: 9826 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9827 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9828 Current Release: 9829 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9830 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 9831 9832 98332) iASL Compiler/Disassembler: 9834 9835Fixed a parse error during compilation of certain Switch/Case constructs. 9836To 9837simplify the parse, the grammar now allows for multiple Default 9838statements 9839and this error is now detected and flagged during the analysis phase. 9840 9841Disassembler: The disassembly now includes the contents of the original 9842table header within a comment at the start of the file. This includes the 9843name and version of the original ASL compiler. 9844 9845---------------------------------------- 984617 November 2005. Summary of changes for version 20051117: 9847 98481) ACPI CA Core Subsystem: 9849 9850Fixed a problem in the AML parser where the method thread count could be 9851decremented below zero if any errors occurred during the method parse 9852phase. 9853This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 9854machines. 9855This also fixed a related regression with the mechanism that detects and 9856corrects methods that cannot properly handle reentrancy (related to the 9857deployment of the new OwnerId mechanism.) 9858 9859Eliminated the pre-parsing of control methods (to detect errors) during 9860table load. Related to the problem above, this was causing unwind issues 9861if 9862any errors occurred during the parse, and it seemed to be overkill. A 9863table 9864load should not be aborted if there are problems with any single control 9865method, thus rendering this feature rather pointless. 9866 9867Fixed a problem with the new table-driven resource manager where an 9868internal 9869buffer overflow could occur for small resource templates. 9870 9871Implemented a new external interface, AcpiGetVendorResource. This 9872interface 9873will find and return a vendor-defined resource descriptor within a _CRS 9874or 9875_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 9876Helgaas. 9877 9878Removed the length limit (200) on string objects as per the upcoming ACPI 98793.0A specification. This affects the following areas of the interpreter: 98801) 9881any implicit conversion of a Buffer to a String, 2) a String object 9882result 9883of the ASL Concatentate operator, 3) the String object result of the ASL 9884ToString operator. 9885 9886Fixed a problem in the Windows OS interface layer (OSL) where a 9887WAIT_FOREVER 9888on a semaphore object would incorrectly timeout. This allows the 9889multithreading features of the AcpiExec utility to work properly under 9890Windows. 9891 9892Updated the Linux makefiles for the iASL compiler and AcpiExec to include 9893the recently added file named "utresrc.c". 9894 9895Code and Data Size: The current and previous library sizes for the core 9896subsystem are shown below. These are the code and data sizes for the 9897acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9898These 9899values do not include any ACPI driver or OSPM code. The debug version of 9900the 9901code includes the debug output trace mechanism and has a much larger code 9902and data size. Note that these values will vary depending on the 9903efficiency 9904of the compiler and the compiler options used during generation. 9905 9906 Previous Release: 9907 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9908 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9909 Current Release: 9910 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9911 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9912 9913 99142) iASL Compiler/Disassembler: 9915 9916Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 9917specification. For the iASL compiler, this means that string literals 9918within 9919the source ASL can be of any length. 9920 9921Enhanced the listing output to dump the AML code for resource descriptors 9922immediately after the ASL code for each descriptor, instead of in a block 9923at 9924the end of the entire resource template. 9925 9926Enhanced the compiler debug output to dump the entire original parse tree 9927constructed during the parse phase, before any transforms are applied to 9928the 9929tree. The transformed tree is dumped also. 9930 9931---------------------------------------- 993202 November 2005. Summary of changes for version 20051102: 9933 99341) ACPI CA Core Subsystem: 9935 9936Modified the subsystem initialization sequence to improve GPE support. 9937The 9938GPE initialization has been split into two parts in order to defer 9939execution 9940of the _PRW methods (Power Resources for Wake) until after the hardware 9941is 9942fully initialized and the SCI handler is installed. This allows the _PRW 9943methods to access fields protected by the Global Lock. This will fix 9944systems 9945where a NO_GLOBAL_LOCK exception has been seen during initialization. 9946 9947Converted the ACPI internal object disassemble and display code within 9948the 9949AML debugger to fully table-driven operation, reducing code size and 9950increasing maintainability. 9951 9952Fixed a regression with the ConcatenateResTemplate() ASL operator 9953introduced 9954in the 20051021 release. 9955 9956Implemented support for "local" internal ACPI object types within the 9957debugger "Object" command and the AcpiWalkNamespace external interfaces. 9958These local types include RegionFields, BankFields, IndexFields, Alias, 9959and 9960reference objects. 9961 9962Moved common AML resource handling code into a new file, "utresrc.c". 9963This 9964code is shared by both the Resource Manager and the AML Debugger. 9965 9966Code and Data Size: The current and previous library sizes for the core 9967subsystem are shown below. These are the code and data sizes for the 9968acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9969These 9970values do not include any ACPI driver or OSPM code. The debug version of 9971the 9972code includes the debug output trace mechanism and has a much larger code 9973and data size. Note that these values will vary depending on the 9974efficiency 9975of the compiler and the compiler options used during generation. 9976 9977 Previous Release: 9978 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 9979 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 9980 Current Release: 9981 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9982 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9983 9984 99852) iASL Compiler/Disassembler: 9986 9987Fixed a problem with very large initializer lists (more than 4000 9988elements) 9989for both Buffer and Package objects where the parse stack could overflow. 9990 9991Enhanced the pre-compile source code scan for non-ASCII characters to 9992ignore 9993characters within comment fields. The scan is now always performed and is 9994no 9995longer optional, detecting invalid characters within a source file 9996immediately rather than during the parse phase or later. 9997 9998Enhanced the ASL grammar definition to force early reductions on all 9999list- 10000style grammar elements so that the overall parse stack usage is greatly 10001reduced. This should improve performance and reduce the possibility of 10002parse 10003stack overflow. 10004 10005Eliminated all reduce/reduce conflicts in the iASL parser generation. 10006Also, 10007with the addition of a %expected statement, the compiler generates from 10008source with no warnings. 10009 10010Fixed a possible segment fault in the disassembler if the input filename 10011does not contain a "dot" extension (Thomas Renninger). 10012 10013---------------------------------------- 1001421 October 2005. Summary of changes for version 20051021: 10015 100161) ACPI CA Core Subsystem: 10017 10018Implemented support for the EM64T and other x86-64 processors. This 10019essentially entails recognizing that these processors support non-aligned 10020memory transfers. Previously, all 64-bit processors were assumed to lack 10021hardware support for non-aligned transfers. 10022 10023Completed conversion of the Resource Manager to nearly full table-driven 10024operation. Specifically, the resource conversion code (convert AML to 10025internal format and the reverse) and the debug code to dump internal 10026resource descriptors are fully table-driven, reducing code and data size 10027and 10028improving maintainability. 10029 10030The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 10031word 10032on 64-bit processors instead of a fixed 32-bit word. (With assistance 10033from 10034Alexey Starikovskiy) 10035 10036Implemented support within the resource conversion code for the Type- 10037Specific byte within the various ACPI 3.0 *WordSpace macros. 10038 10039Fixed some issues within the resource conversion code for the type- 10040specific 10041flags for both Memory and I/O address resource descriptors. For Memory, 10042implemented support for the MTP and TTP flags. For I/O, split the TRS and 10043TTP flags into two separate fields. 10044 10045Code and Data Size: The current and previous library sizes for the core 10046subsystem are shown below. These are the code and data sizes for the 10047acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10048These 10049values do not include any ACPI driver or OSPM code. The debug version of 10050the 10051code includes the debug output trace mechanism and has a much larger code 10052and data size. Note that these values will vary depending on the 10053efficiency 10054of the compiler and the compiler options used during generation. 10055 10056 Previous Release: 10057 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 10058 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 10059 Current Release: 10060 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 10061 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 10062 10063 10064 100652) iASL Compiler/Disassembler: 10066 10067Relaxed a compiler restriction that disallowed a ResourceIndex byte if 10068the 10069corresponding ResourceSource string was not also present in a resource 10070descriptor declaration. This restriction caused problems with existing 10071AML/ASL code that includes the Index byte without the string. When such 10072AML 10073was disassembled, it could not be compiled without modification. Further, 10074the modified code created a resource template with a different size than 10075the 10076original, breaking code that used fixed offsets into the resource 10077template 10078buffer. 10079 10080Removed a recent feature of the disassembler to ignore a lone 10081ResourceIndex 10082byte. This byte is now emitted if present so that the exact AML can be 10083reproduced when the disassembled code is recompiled. 10084 10085Improved comments and text alignment for the resource descriptor code 10086emitted by the disassembler. 10087 10088Implemented disassembler support for the ACPI 3.0 AccessSize field within 10089a 10090Register() resource descriptor. 10091 10092---------------------------------------- 1009330 September 2005. Summary of changes for version 20050930: 10094 100951) ACPI CA Core Subsystem: 10096 10097Completed a major overhaul of the Resource Manager code - specifically, 10098optimizations in the area of the AML/internal resource conversion code. 10099The 10100code has been optimized to simplify and eliminate duplicated code, CPU 10101stack 10102use has been decreased by optimizing function parameters and local 10103variables, and naming conventions across the manager have been 10104standardized 10105for clarity and ease of maintenance (this includes function, parameter, 10106variable, and struct/typedef names.) The update may force changes in some 10107driver code, depending on how resources are handled by the host OS. 10108 10109All Resource Manager dispatch and information tables have been moved to a 10110single location for clarity and ease of maintenance. One new file was 10111created, named "rsinfo.c". 10112 10113The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 10114guarantee that the argument is not evaluated twice, making them less 10115prone 10116to macro side-effects. However, since there exists the possibility of 10117additional stack use if a particular compiler cannot optimize them (such 10118as 10119in the debug generation case), the original macros are optionally 10120available. 10121Note that some invocations of the return_VALUE macro may now cause size 10122mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 10123to 10124eliminate these. (From Randy Dunlap) 10125 10126Implemented a new mechanism to enable debug tracing for individual 10127control 10128methods. A new external interface, AcpiDebugTrace, is provided to enable 10129this mechanism. The intent is to allow the host OS to easily enable and 10130disable tracing for problematic control methods. This interface can be 10131easily exposed to a user or debugger interface if desired. See the file 10132psxface.c for details. 10133 10134AcpiUtCallocate will now return a valid pointer if a length of zero is 10135specified - a length of one is used and a warning is issued. This matches 10136the behavior of AcpiUtAllocate. 10137 10138Code and Data Size: The current and previous library sizes for the core 10139subsystem are shown below. These are the code and data sizes for the 10140acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10141These 10142values do not include any ACPI driver or OSPM code. The debug version of 10143the 10144code includes the debug output trace mechanism and has a much larger code 10145and data size. Note that these values will vary depending on the 10146efficiency 10147of the compiler and the compiler options used during generation. 10148 10149 Previous Release: 10150 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10151 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10152 Current Release: 10153 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 10154 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 10155 10156 101572) iASL Compiler/Disassembler: 10158 10159A remark is issued if the effective compile-time length of a package or 10160buffer is zero. Previously, this was a warning. 10161 10162---------------------------------------- 1016316 September 2005. Summary of changes for version 20050916: 10164 101651) ACPI CA Core Subsystem: 10166 10167Fixed a problem within the Resource Manager where support for the Generic 10168Register descriptor was not fully implemented. This descriptor is now 10169fully 10170recognized, parsed, disassembled, and displayed. 10171 10172Completely restructured the Resource Manager code to utilize table-driven 10173dispatch and lookup, eliminating many of the large switch() statements. 10174This 10175reduces overall subsystem code size and code complexity. Affects the 10176resource parsing and construction, disassembly, and debug dump output. 10177 10178Cleaned up and restructured the debug dump output for all resource 10179descriptors. Improved readability of the output and reduced code size. 10180 10181Fixed a problem where changes to internal data structures caused the 10182optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 10183 10184Code and Data Size: The current and previous library sizes for the core 10185subsystem are shown below. These are the code and data sizes for the 10186acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10187These 10188values do not include any ACPI driver or OSPM code. The debug version of 10189the 10190code includes the debug output trace mechanism and has a much larger code 10191and data size. Note that these values will vary depending on the 10192efficiency 10193of the compiler and the compiler options used during generation. 10194 10195 Previous Release: 10196 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10197 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10198 Current Release: 10199 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10200 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10201 10202 102032) iASL Compiler/Disassembler: 10204 10205Updated the disassembler to automatically insert an EndDependentFn() 10206macro 10207into the ASL stream if this macro is missing in the original AML code, 10208simplifying compilation of the resulting ASL module. 10209 10210Fixed a problem in the disassembler where a disassembled ResourceSource 10211string (within a large resource descriptor) was not surrounded by quotes 10212and 10213not followed by a comma, causing errors when the resulting ASL module was 10214compiled. Also, escape sequences within a ResourceSource string are now 10215handled correctly (especially "\\") 10216 10217---------------------------------------- 1021802 September 2005. Summary of changes for version 20050902: 10219 102201) ACPI CA Core Subsystem: 10221 10222Fixed a problem with the internal Owner ID allocation and deallocation 10223mechanisms for control method execution and recursive method invocation. 10224This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 10225messages seen on some systems. Recursive method invocation depth is 10226currently limited to 255. (Alexey Starikovskiy) 10227 10228Completely eliminated all vestiges of support for the "module-level 10229executable code" until this support is fully implemented and debugged. 10230This 10231should eliminate the NO_RETURN_VALUE exceptions seen during table load on 10232some systems that invoke this support. 10233 10234Fixed a problem within the resource manager code where the transaction 10235flags 10236for a 64-bit address descriptor were handled incorrectly in the type- 10237specific flag byte. 10238 10239Consolidated duplicate code within the address descriptor resource 10240manager 10241code, reducing overall subsystem code size. 10242 10243Fixed a fault when using the AML debugger "disassemble" command to 10244disassemble individual control methods. 10245 10246Removed references to the "release_current" directory within the Unix 10247release package. 10248 10249Code and Data Size: The current and previous core subsystem library sizes 10250are shown below. These are the code and data sizes for the acpica.lib 10251produced by the Microsoft Visual C++ 6.0 compiler. These values do not 10252include any ACPI driver or OSPM code. The debug version of the code 10253includes 10254the debug output trace mechanism and has a much larger code and data 10255size. 10256Note that these values will vary depending on the efficiency of the 10257compiler 10258and the compiler options used during generation. 10259 10260 Previous Release: 10261 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10262 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10263 Current Release: 10264 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10265 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10266 10267 102682) iASL Compiler/Disassembler: 10269 10270Implemented an error check for illegal duplicate values in the interrupt 10271and 10272dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 10273Interrupt(). 10274 10275Implemented error checking for the Irq() and IrqNoFlags() macros to 10276detect 10277too many values in the interrupt list (16 max) and invalid values in the 10278list (range 0 - 15) 10279 10280The maximum length string literal within an ASL file is now restricted to 10281200 characters as per the ACPI specification. 10282 10283Fixed a fault when using the -ln option (generate namespace listing). 10284 10285Implemented an error check to determine if a DescriptorName within a 10286resource descriptor has already been used within the current scope. 10287 10288---------------------------------------- 1028915 August 2005. Summary of changes for version 20050815: 10290 102911) ACPI CA Core Subsystem: 10292 10293Implemented a full bytewise compare to determine if a table load request 10294is 10295attempting to load a duplicate table. The compare is performed if the 10296table 10297signatures and table lengths match. This will allow different tables with 10298the same OEM Table ID and revision to be loaded - probably against the 10299ACPI 10300specification, but discovered in the field nonetheless. 10301 10302Added the changes.txt logfile to each of the zipped release packages. 10303 10304Code and Data Size: Current and previous core subsystem library sizes are 10305shown below. These are the code and data sizes for the acpica.lib 10306produced 10307by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10308any ACPI driver or OSPM code. The debug version of the code includes the 10309debug output trace mechanism and has a much larger code and data size. 10310Note 10311that these values will vary depending on the efficiency of the compiler 10312and 10313the compiler options used during generation. 10314 10315 Previous Release: 10316 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10317 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10318 Current Release: 10319 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10320 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10321 10322 103232) iASL Compiler/Disassembler: 10324 10325Fixed a problem where incorrect AML code could be generated for Package 10326objects if optimization is disabled (via the -oa switch). 10327 10328Fixed a problem with where incorrect AML code is generated for variable- 10329length packages when the package length is not specified and the number 10330of 10331initializer values is greater than 255. 10332 10333 10334---------------------------------------- 1033529 July 2005. Summary of changes for version 20050729: 10336 103371) ACPI CA Core Subsystem: 10338 10339Implemented support to ignore an attempt to install/load a particular 10340ACPI 10341table more than once. Apparently there exists BIOS code that repeatedly 10342attempts to load the same SSDT upon certain events. With assistance from 10343Venkatesh Pallipadi. 10344 10345Restructured the main interface to the AML parser in order to correctly 10346handle all exceptional conditions. This will prevent leakage of the 10347OwnerId 10348resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 10349some 10350machines. With assistance from Alexey Starikovskiy. 10351 10352Support for "module level code" has been disabled in this version due to 10353a 10354number of issues that have appeared on various machines. The support can 10355be 10356enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 10357compilation. When the issues are fully resolved, the code will be enabled 10358by 10359default again. 10360 10361Modified the internal functions for debug print support to define the 10362FunctionName parameter as a (const char *) for compatibility with 10363compiler 10364built-in macros such as __FUNCTION__, etc. 10365 10366Linted the entire ACPICA source tree for both 32-bit and 64-bit. 10367 10368Implemented support to display an object count summary for the AML 10369Debugger 10370commands Object and Methods. 10371 10372Code and Data Size: Current and previous core subsystem library sizes are 10373shown below. These are the code and data sizes for the acpica.lib 10374produced 10375by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10376any ACPI driver or OSPM code. The debug version of the code includes the 10377debug output trace mechanism and has a much larger code and data size. 10378Note 10379that these values will vary depending on the efficiency of the compiler 10380and 10381the compiler options used during generation. 10382 10383 Previous Release: 10384 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10385 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10386 Current Release: 10387 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10388 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10389 10390 103912) iASL Compiler/Disassembler: 10392 10393Fixed a regression that appeared in the 20050708 version of the compiler 10394where an error message was inadvertently emitted for invocations of the 10395_OSI 10396reserved control method. 10397 10398---------------------------------------- 1039908 July 2005. Summary of changes for version 20050708: 10400 104011) ACPI CA Core Subsystem: 10402 10403The use of the CPU stack in the debug version of the subsystem has been 10404considerably reduced. Previously, a debug structure was declared in every 10405function that used the debug macros. This structure has been removed in 10406favor of declaring the individual elements as parameters to the debug 10407functions. This reduces the cumulative stack use during nested execution 10408of 10409ACPI function calls at the cost of a small increase in the code size of 10410the 10411debug version of the subsystem. With assistance from Alexey Starikovskiy 10412and 10413Len Brown. 10414 10415Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 10416headers to define a macro that will return the current function name at 10417runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 10418by 10419the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 10420compiler-dependent header, the function name is saved on the CPU stack 10421(one 10422pointer per function.) This mechanism is used because apparently there 10423exists no standard ANSI-C defined macro that that returns the function 10424name. 10425 10426Redesigned and reimplemented the "Owner ID" mechanism used to track 10427namespace objects created/deleted by ACPI tables and control method 10428execution. A bitmap is now used to allocate and free the IDs, thus 10429solving 10430the wraparound problem present in the previous implementation. The size 10431of 10432the namespace node descriptor was reduced by 2 bytes as a result (Alexey 10433Starikovskiy). 10434 10435Removed the UINT32_BIT and UINT16_BIT types that were used for the 10436bitfield 10437flag definitions within the headers for the predefined ACPI tables. These 10438have been replaced by UINT8_BIT in order to increase the code portability 10439of 10440the subsystem. If the use of UINT8 remains a problem, we may be forced to 10441eliminate bitfields entirely because of a lack of portability. 10442 10443Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 10444This 10445is a frequently used function and this improvement increases the 10446performance 10447of the entire subsystem (Alexey Starikovskiy). 10448 10449Fixed several possible memory leaks and the inverse - premature object 10450deletion (Alexey Starikovskiy). 10451 10452Code and Data Size: Current and previous core subsystem library sizes are 10453shown below. These are the code and data sizes for the acpica.lib 10454produced 10455by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10456any ACPI driver or OSPM code. The debug version of the code includes the 10457debug output trace mechanism and has a much larger code and data size. 10458Note 10459that these values will vary depending on the efficiency of the compiler 10460and 10461the compiler options used during generation. 10462 10463 Previous Release: 10464 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10465 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10466 Current Release: 10467 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10468 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10469 10470---------------------------------------- 1047124 June 2005. Summary of changes for version 20050624: 10472 104731) ACPI CA Core Subsystem: 10474 10475Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 10476the host-defined cache object. This allows the OSL implementation to 10477define 10478and type this object in any manner desired, simplifying the OSL 10479implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 10480Linux, and should be defined in the OS-specific header file for other 10481operating systems as required. 10482 10483Changed the interface to AcpiOsAcquireObject to directly return the 10484requested object as the function return (instead of ACPI_STATUS.) This 10485change was made for performance reasons, since this is the purpose of the 10486interface in the first place. AcpiOsAcquireObject is now similar to the 10487AcpiOsAllocate interface. 10488 10489Implemented a new AML debugger command named Businfo. This command 10490displays 10491information about all devices that have an associate _PRT object. The 10492_ADR, 10493_HID, _UID, and _CID are displayed for these devices. 10494 10495Modified the initialization sequence in AcpiInitializeSubsystem to call 10496the 10497OSL interface AcpiOslInitialize first, before any local initialization. 10498This 10499change was required because the global initialization now calls OSL 10500interfaces. 10501 10502Enhanced the Dump command to display the entire contents of Package 10503objects 10504(including all sub-objects and their values.) 10505 10506Restructured the code base to split some files because of size and/or 10507because the code logically belonged in a separate file. New files are 10508listed 10509below. All makefiles and project files included in the ACPI CA release 10510have 10511been updated. 10512 utilities/utcache.c /* Local cache interfaces */ 10513 utilities/utmutex.c /* Local mutex support */ 10514 utilities/utstate.c /* State object support */ 10515 interpreter/parser/psloop.c /* Main AML parse loop */ 10516 10517Code and Data Size: Current and previous core subsystem library sizes are 10518shown below. These are the code and data sizes for the acpica.lib 10519produced 10520by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10521any ACPI driver or OSPM code. The debug version of the code includes the 10522debug output trace mechanism and has a much larger code and data size. 10523Note 10524that these values will vary depending on the efficiency of the compiler 10525and 10526the compiler options used during generation. 10527 10528 Previous Release: 10529 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10530 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10531 Current Release: 10532 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10533 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10534 10535 105362) iASL Compiler/Disassembler: 10537 10538Fixed a regression introduced in version 20050513 where the use of a 10539Package 10540object within a Case() statement caused a compile time exception. The 10541original behavior has been restored (a Match() operator is emitted.) 10542 10543---------------------------------------- 1054417 June 2005. Summary of changes for version 20050617: 10545 105461) ACPI CA Core Subsystem: 10547 10548Moved the object cache operations into the OS interface layer (OSL) to 10549allow 10550the host OS to handle these operations if desired (for example, the Linux 10551OSL will invoke the slab allocator). This support is optional; the 10552compile 10553time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 10554cache 10555code in the ACPI CA core. The new OSL interfaces are shown below. See 10556utalloc.c for an example implementation, and acpiosxf.h for the exact 10557interface definitions. With assistance from Alexey Starikovskiy. 10558 AcpiOsCreateCache 10559 AcpiOsDeleteCache 10560 AcpiOsPurgeCache 10561 AcpiOsAcquireObject 10562 AcpiOsReleaseObject 10563 10564Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 10565return 10566and restore a flags parameter. This fits better with many OS lock models. 10567Note: the current execution state (interrupt handler or not) is no longer 10568passed to these interfaces. If necessary, the OSL must determine this 10569state 10570by itself, a simple and fast operation. With assistance from Alexey 10571Starikovskiy. 10572 10573Fixed a problem in the ACPI table handling where a valid XSDT was assumed 10574present if the revision of the RSDP was 2 or greater. According to the 10575ACPI 10576specification, the XSDT is optional in all cases, and the table manager 10577therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 10578Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 10579contain 10580only the RSDT. 10581 10582Fixed an interpreter problem with the Mid() operator in the case of an 10583input 10584string where the resulting output string is of zero length. It now 10585correctly 10586returns a valid, null terminated string object instead of a string object 10587with a null pointer. 10588 10589Fixed a problem with the control method argument handling to allow a 10590store 10591to an Arg object that already contains an object of type Device. The 10592Device 10593object is now correctly overwritten. Previously, an error was returned. 10594 10595 10596Enhanced the debugger Find command to emit object values in addition to 10597the 10598found object pathnames. The output format is the same as the dump 10599namespace 10600command. 10601 10602Enhanced the debugger Set command. It now has the ability to set the 10603value 10604of any Named integer object in the namespace (Previously, only method 10605locals 10606and args could be set.) 10607 10608Code and Data Size: Current and previous core subsystem library sizes are 10609shown below. These are the code and data sizes for the acpica.lib 10610produced 10611by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10612any ACPI driver or OSPM code. The debug version of the code includes the 10613debug output trace mechanism and has a much larger code and data size. 10614Note 10615that these values will vary depending on the efficiency of the compiler 10616and 10617the compiler options used during generation. 10618 10619 Previous Release: 10620 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10621 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10622 Current Release: 10623 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10624 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10625 10626 106272) iASL Compiler/Disassembler: 10628 10629Fixed a regression in the disassembler where if/else/while constructs 10630were 10631output incorrectly. This problem was introduced in the previous release 10632(20050526). This problem also affected the single-step disassembly in the 10633debugger. 10634 10635Fixed a problem where compiling the reserved _OSI method would randomly 10636(but 10637rarely) produce compile errors. 10638 10639Enhanced the disassembler to emit compilable code in the face of 10640incorrect 10641AML resource descriptors. If the optional ResourceSourceIndex is present, 10642but the ResourceSource is not, do not emit the ResourceSourceIndex in the 10643disassembly. Otherwise, the resulting code cannot be compiled without 10644errors. 10645 10646---------------------------------------- 1064726 May 2005. Summary of changes for version 20050526: 10648 106491) ACPI CA Core Subsystem: 10650 10651Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 10652the module level (not within a control method.) These opcodes are 10653executed 10654exactly once at the time the table is loaded. This type of code was legal 10655up 10656until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 10657in 10658order to provide backwards compatibility with earlier BIOS 10659implementations. 10660This eliminates the "Encountered executable code at module level" warning 10661that was previously generated upon detection of such code. 10662 10663Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 10664inadvertently be generated during the lookup of namespace objects in the 10665second pass parse of ACPI tables and control methods. It appears that 10666this 10667problem could occur during the resolution of forward references to 10668namespace 10669objects. 10670 10671Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 10672corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 10673allows the deadlock detection debug code to be compiled out in the normal 10674case, improving mutex performance (and overall subsystem performance) 10675considerably. 10676 10677Implemented a handful of miscellaneous fixes for possible memory leaks on 10678error conditions and error handling control paths. These fixes were 10679suggested by FreeBSD and the Coverity Prevent source code analysis tool. 10680 10681Added a check for a null RSDT pointer in AcpiGetFirmwareTable 10682(tbxfroot.c) 10683to prevent a fault in this error case. 10684 10685Code and Data Size: Current and previous core subsystem library sizes are 10686shown below. These are the code and data sizes for the acpica.lib 10687produced 10688by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10689any ACPI driver or OSPM code. The debug version of the code includes the 10690debug output trace mechanism and has a much larger code and data size. 10691Note 10692that these values will vary depending on the efficiency of the compiler 10693and 10694the compiler options used during generation. 10695 10696 Previous Release: 10697 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10698 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10699 Current Release: 10700 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10701 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10702 10703 107042) iASL Compiler/Disassembler: 10705 10706Implemented support to allow Type 1 and Type 2 ASL operators to appear at 10707the module level (not within a control method.) These operators will be 10708executed once at the time the table is loaded. This type of code was 10709legal 10710up until the release of ACPI 2.0B (2002) and is now supported by the iASL 10711compiler in order to provide backwards compatibility with earlier BIOS 10712ASL 10713code. 10714 10715The ACPI integer width (specified via the table revision ID or the -r 10716override, 32 or 64 bits) is now used internally during compile-time 10717constant 10718folding to ensure that constants are truncated to 32 bits if necessary. 10719Previously, the revision ID value was only emitted in the AML table 10720header. 10721 10722An error message is now generated for the Mutex and Method operators if 10723the 10724SyncLevel parameter is outside the legal range of 0 through 15. 10725 10726Fixed a problem with the Method operator ParameterTypes list handling 10727(ACPI 107283.0). Previously, more than 2 types or 2 arguments generated a syntax 10729error. 10730The actual underlying implementation of method argument typechecking is 10731still under development, however. 10732 10733---------------------------------------- 1073413 May 2005. Summary of changes for version 20050513: 10735 107361) ACPI CA Core Subsystem: 10737 10738Implemented support for PCI Express root bridges -- added support for 10739device 10740PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 10741 10742The interpreter now automatically truncates incoming 64-bit constants to 1074332 10744bits if currently executing out of a 32-bit ACPI table (Revision < 2). 10745This 10746also affects the iASL compiler constant folding. (Note: as per below, the 10747iASL compiler no longer allows 64-bit constants within 32-bit tables.) 10748 10749Fixed a problem where string and buffer objects with "static" pointers 10750(pointers to initialization data within an ACPI table) were not handled 10751consistently. The internal object copy operation now always copies the 10752data 10753to a newly allocated buffer, regardless of whether the source object is 10754static or not. 10755 10756Fixed a problem with the FromBCD operator where an implicit result 10757conversion was improperly performed while storing the result to the 10758target 10759operand. Since this is an "explicit conversion" operator, the implicit 10760conversion should never be performed on the output. 10761 10762Fixed a problem with the CopyObject operator where a copy to an existing 10763named object did not always completely overwrite the existing object 10764stored 10765at name. Specifically, a buffer-to-buffer copy did not delete the 10766existing 10767buffer. 10768 10769Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 10770and 10771structs for consistency. 10772 10773Code and Data Size: Current and previous core subsystem library sizes are 10774shown below. These are the code and data sizes for the acpica.lib 10775produced 10776by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10777any ACPI driver or OSPM code. The debug version of the code includes the 10778debug output trace mechanism and has a much larger code and data size. 10779Note 10780that these values will vary depending on the efficiency of the compiler 10781and 10782the compiler options used during generation. 10783 10784 Previous Release: 10785 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10786 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10787 Current Release: (Same sizes) 10788 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10789 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10790 10791 107922) iASL Compiler/Disassembler: 10793 10794The compiler now emits a warning if an attempt is made to generate a 64- 10795bit 10796integer constant from within a 32-bit ACPI table (Revision < 2). The 10797integer 10798is truncated to 32 bits. 10799 10800Fixed a problem with large package objects: if the static length of the 10801package is greater than 255, the "variable length package" opcode is 10802emitted. Previously, this caused an error. This requires an update to the 10803ACPI spec, since it currently (incorrectly) states that packages larger 10804than 10805255 elements are not allowed. 10806 10807The disassembler now correctly handles variable length packages and 10808packages 10809larger than 255 elements. 10810 10811---------------------------------------- 1081208 April 2005. Summary of changes for version 20050408: 10813 108141) ACPI CA Core Subsystem: 10815 10816Fixed three cases in the interpreter where an "index" argument to an ASL 10817function was still (internally) 32 bits instead of the required 64 bits. 10818This was the Index argument to the Index, Mid, and Match operators. 10819 10820The "strupr" function is now permanently local (AcpiUtStrupr), since this 10821is 10822not a POSIX-defined function and not present in most kernel-level C 10823libraries. All references to the C library strupr function have been 10824removed 10825from the headers. 10826 10827Completed the deployment of static functions/prototypes. All prototypes 10828with 10829the static attribute have been moved from the headers to the owning C 10830file. 10831 10832Implemented an extract option (-e) for the AcpiBin utility (AML binary 10833utility). This option allows the utility to extract individual ACPI 10834tables 10835from the output of AcpiDmp. It provides the same functionality of the 10836acpixtract.pl perl script without the worry of setting the correct perl 10837options. AcpiBin runs on Windows and has not yet been generated/validated 10838in 10839the Linux/Unix environment (but should be soon). 10840 10841Updated and fixed the table dump option for AcpiBin (-d). This option 10842converts a single ACPI table to a hex/ascii file, similar to the output 10843of 10844AcpiDmp. 10845 10846Code and Data Size: Current and previous core subsystem library sizes are 10847shown below. These are the code and data sizes for the acpica.lib 10848produced 10849by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10850any ACPI driver or OSPM code. The debug version of the code includes the 10851debug output trace mechanism and has a much larger code and data size. 10852Note 10853that these values will vary depending on the efficiency of the compiler 10854and 10855the compiler options used during generation. 10856 10857 Previous Release: 10858 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10859 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10860 Current Release: 10861 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10862 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10863 10864 108652) iASL Compiler/Disassembler: 10866 10867Disassembler fix: Added a check to ensure that the table length found in 10868the 10869ACPI table header within the input file is not longer than the actual 10870input 10871file size. This indicates some kind of file or table corruption. 10872 10873---------------------------------------- 1087429 March 2005. Summary of changes for version 20050329: 10875 108761) ACPI CA Core Subsystem: 10877 10878An error is now generated if an attempt is made to create a Buffer Field 10879of 10880length zero (A CreateField with a length operand of zero.) 10881 10882The interpreter now issues a warning whenever executable code at the 10883module 10884level is detected during ACPI table load. This will give some idea of the 10885prevalence of this type of code. 10886 10887Implemented support for references to named objects (other than control 10888methods) within package objects. 10889 10890Enhanced package object output for the debug object. Package objects are 10891now 10892completely dumped, showing all elements. 10893 10894Enhanced miscellaneous object output for the debug object. Any object can 10895now be written to the debug object (for example, a device object can be 10896written, and the type of the object will be displayed.) 10897 10898The "static" qualifier has been added to all local functions across both 10899the 10900core subsystem and the iASL compiler. 10901 10902The number of "long" lines (> 80 chars) within the source has been 10903significantly reduced, by about 1/3. 10904 10905Cleaned up all header files to ensure that all CA/iASL functions are 10906prototyped (even static functions) and the formatting is consistent. 10907 10908Two new header files have been added, acopcode.h and acnames.h. 10909 10910Removed several obsolete functions that were no longer used. 10911 10912Code and Data Size: Current and previous core subsystem library sizes are 10913shown below. These are the code and data sizes for the acpica.lib 10914produced 10915by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10916any ACPI driver or OSPM code. The debug version of the code includes the 10917debug output trace mechanism and has a much larger code and data size. 10918Note 10919that these values will vary depending on the efficiency of the compiler 10920and 10921the compiler options used during generation. 10922 10923 Previous Release: 10924 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10925 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 10926 Current Release: 10927 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10928 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10929 10930 10931 109322) iASL Compiler/Disassembler: 10933 10934Fixed a problem with the resource descriptor generation/support. For the 10935ResourceSourceIndex and the ResourceSource fields, both must be present, 10936or 10937both must be not present - can't have one without the other. 10938 10939The compiler now returns non-zero from the main procedure if any errors 10940have 10941occurred during the compilation. 10942 10943 10944---------------------------------------- 1094509 March 2005. Summary of changes for version 20050309: 10946 109471) ACPI CA Core Subsystem: 10948 10949The string-to-buffer implicit conversion code has been modified again 10950after 10951a change to the ACPI specification. In order to match the behavior of 10952the 10953other major ACPI implementation, the target buffer is no longer truncated 10954if 10955the source string is smaller than an existing target buffer. This change 10956requires an update to the ACPI spec, and should eliminate the recent 10957AE_AML_BUFFER_LIMIT issues. 10958 10959The "implicit return" support was rewritten to a new algorithm that 10960solves 10961the general case. Rather than attempt to determine when a method is about 10962to 10963exit, the result of every ASL operator is saved momentarily until the 10964very 10965next ASL operator is executed. Therefore, no matter how the method exits, 10966there will always be a saved implicit return value. This feature is only 10967enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 10968eliminate 10969AE_AML_NO_RETURN_VALUE errors when enabled. 10970 10971Implemented implicit conversion support for the predicate (operand) of 10972the 10973If, Else, and While operators. String and Buffer arguments are 10974automatically 10975converted to Integers. 10976 10977Changed the string-to-integer conversion behavior to match the new ACPI 10978errata: "If no integer object exists, a new integer is created. The ASCII 10979string is interpreted as a hexadecimal constant. Each string character is 10980interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 10981with the first character as the most significant digit, and ending with 10982the 10983first non-hexadecimal character or end-of-string." This means that the 10984first 10985non-hex character terminates the conversion and this is the code that was 10986changed. 10987 10988Fixed a problem where the ObjectType operator would fail (fault) when 10989used 10990on an Index of a Package which pointed to a null package element. The 10991operator now properly returns zero (Uninitialized) in this case. 10992 10993Fixed a problem where the While operator used excessive memory by not 10994properly popping the result stack during execution. There was no memory 10995leak 10996after execution, however. (Code provided by Valery Podrezov.) 10997 10998Fixed a problem where references to control methods within Package 10999objects 11000caused the method to be invoked, instead of producing a reference object 11001pointing to the method. 11002 11003Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 11004to 11005improve performance and reduce code size. (Code provided by Alexey 11006Starikovskiy.) 11007 11008Code and Data Size: Current and previous core subsystem library sizes are 11009shown below. These are the code and data sizes for the acpica.lib 11010produced 11011by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11012any ACPI driver or OSPM code. The debug version of the code includes the 11013debug output trace mechanism and has a much larger code and data size. 11014Note 11015that these values will vary depending on the efficiency of the compiler 11016and 11017the compiler options used during generation. 11018 11019 Previous Release: 11020 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11021 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 11022 Current Release: 11023 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11024 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 11025 11026 110272) iASL Compiler/Disassembler: 11028 11029Fixed a problem with the Return operator with no arguments. Since the AML 11030grammar for the byte encoding requires an operand for the Return opcode, 11031the 11032compiler now emits a Return(Zero) for this case. An ACPI specification 11033update has been written for this case. 11034 11035For tables other than the DSDT, namepath optimization is automatically 11036disabled. This is because SSDTs can be loaded anywhere in the namespace, 11037the 11038compiler has no knowledge of where, and thus cannot optimize namepaths. 11039 11040Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 11041inadvertently omitted from the ACPI specification, and will require an 11042update to the spec. 11043 11044The source file scan for ASCII characters is now optional (-a). This 11045change 11046was made because some vendors place non-ascii characters within comments. 11047However, the scan is simply a brute-force byte compare to ensure all 11048characters in the file are in the range 0x00 to 0x7F. 11049 11050Fixed a problem with the CondRefOf operator where the compiler was 11051inappropriately checking for the existence of the target. Since the point 11052of 11053the operator is to check for the existence of the target at run-time, the 11054compiler no longer checks for the target existence. 11055 11056Fixed a problem where errors generated from the internal AML interpreter 11057during constant folding were not handled properly, causing a fault. 11058 11059Fixed a problem with overly aggressive range checking for the Stall 11060operator. The valid range (max 255) is now only checked if the operand is 11061of 11062type Integer. All other operand types cannot be statically checked. 11063 11064Fixed a problem where control method references within the RefOf, 11065DeRefOf, 11066and ObjectType operators were not treated properly. They are now treated 11067as 11068actual references, not method invocations. 11069 11070Fixed and enhanced the "list namespace" option (-ln). This option was 11071broken 11072a number of releases ago. 11073 11074Improved error handling for the Field, IndexField, and BankField 11075operators. 11076The compiler now cleanly reports and recovers from errors in the field 11077component (FieldUnit) list. 11078 11079Fixed a disassembler problem where the optional ResourceDescriptor fields 11080TRS and TTP were not always handled correctly. 11081 11082Disassembler - Comments in output now use "//" instead of "/*" 11083 11084---------------------------------------- 1108528 February 2005. Summary of changes for version 20050228: 11086 110871) ACPI CA Core Subsystem: 11088 11089Fixed a problem where the result of an Index() operator (an object 11090reference) must increment the reference count on the target object for 11091the 11092life of the object reference. 11093 11094Implemented AML Interpreter and Debugger support for the new ACPI 3.0 11095Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 11096WordSpace 11097resource descriptors. 11098 11099Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 11100Space Descriptor" string, indicating interpreter support for the 11101descriptors 11102above. 11103 11104Implemented header support for the new ACPI 3.0 FADT flag bits. 11105 11106Implemented header support for the new ACPI 3.0 PCI Express bits for the 11107PM1 11108status/enable registers. 11109 11110Updated header support for the MADT processor local Apic struct and MADT 11111platform interrupt source struct for new ACPI 3.0 fields. 11112 11113Implemented header support for the SRAT and SLIT ACPI tables. 11114 11115Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 11116flag 11117at runtime. 11118 11119Code and Data Size: Current and previous core subsystem library sizes are 11120shown below. These are the code and data sizes for the acpica.lib 11121produced 11122by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11123any ACPI driver or OSPM code. The debug version of the code includes the 11124debug output trace mechanism and has a much larger code and data size. 11125Note 11126that these values will vary depending on the efficiency of the compiler 11127and 11128the compiler options used during generation. 11129 11130 Previous Release: 11131 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11132 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11133 Current Release: 11134 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11135 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 11136 11137 111382) iASL Compiler/Disassembler: 11139 11140Fixed a problem with the internal 64-bit String-to-integer conversion 11141with 11142strings less than two characters long. 11143 11144Fixed a problem with constant folding where the result of the Index() 11145operator can not be considered a constant. This means that Index() cannot 11146be 11147a type3 opcode and this will require an update to the ACPI specification. 11148 11149Disassembler: Implemented support for the TTP, MTP, and TRS resource 11150descriptor fields. These fields were inadvertently ignored and not output 11151in 11152the disassembly of the resource descriptor. 11153 11154 11155 ---------------------------------------- 1115611 February 2005. Summary of changes for version 20050211: 11157 111581) ACPI CA Core Subsystem: 11159 11160Implemented ACPI 3.0 support for implicit conversion within the Match() 11161operator. MatchObjects can now be of type integer, buffer, or string 11162instead 11163of just type integer. Package elements are implicitly converted to the 11164type 11165of the MatchObject. This change aligns the behavior of Match() with the 11166behavior of the other logical operators (LLess(), etc.) It also requires 11167an 11168errata change to the ACPI specification as this support was intended for 11169ACPI 3.0, but was inadvertently omitted. 11170 11171Fixed a problem with the internal implicit "to buffer" conversion. 11172Strings 11173that are converted to buffers will cause buffer truncation if the string 11174is 11175smaller than the target buffer. Integers that are converted to buffers 11176will 11177not cause buffer truncation, only zero extension (both as per the ACPI 11178spec.) The problem was introduced when code was added to truncate the 11179buffer, but this should not be performed in all cases, only the string 11180case. 11181 11182Fixed a problem with the Buffer and Package operators where the 11183interpreter 11184would get confused if two such operators were used as operands to an ASL 11185operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 11186stack was not being popped after the execution of these operators, 11187resulting 11188in an AE_NO_RETURN_VALUE exception. 11189 11190Fixed a problem with constructs of the form Store(Index(...),...). The 11191reference object returned from Index was inadvertently resolved to an 11192actual 11193value. This problem was introduced in version 20050114 when the behavior 11194of 11195Store() was modified to restrict the object types that can be used as the 11196source operand (to match the ACPI specification.) 11197 11198Reduced excessive stack use within the AcpiGetObjectInfo procedure. 11199 11200Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 11201 11202Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 11203 11204Code and Data Size: Current and previous core subsystem library sizes are 11205shown below. These are the code and data sizes for the acpica.lib 11206produced 11207by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11208any ACPI driver or OSPM code. The debug version of the code includes the 11209debug output trace mechanism and has a much larger code and data size. 11210Note 11211that these values will vary depending on the efficiency of the compiler 11212and 11213the compiler options used during generation. 11214 11215 Previous Release: 11216 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11217 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11218 Current Release: 11219 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11220 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11221 11222 112232) iASL Compiler/Disassembler: 11224 11225Fixed a code generation problem in the constant folding optimization code 11226where incorrect code was generated if a constant was reduced to a buffer 11227object (i.e., a reduced type 5 opcode.) 11228 11229Fixed a typechecking problem for the ToBuffer operator. Caused by an 11230incorrect return type in the internal opcode information table. 11231 11232---------------------------------------- 1123325 January 2005. Summary of changes for version 20050125: 11234 112351) ACPI CA Core Subsystem: 11236 11237Fixed a recently introduced problem with the Global Lock where the 11238underlying semaphore was not created. This problem was introduced in 11239version 20050114, and caused an AE_AML_NO_OPERAND exception during an 11240Acquire() operation on _GL. 11241 11242The local object cache is now optional, and is disabled by default. Both 11243AcpiExec and the iASL compiler enable the cache because they run in user 11244mode and this enhances their performance. #define 11245ACPI_ENABLE_OBJECT_CACHE 11246to enable the local cache. 11247 11248Fixed an issue in the internal function AcpiUtEvaluateObject concerning 11249the 11250optional "implicit return" support where an error was returned if no 11251return 11252object was expected, but one was implicitly returned. AE_OK is now 11253returned 11254in this case and the implicitly returned object is deleted. 11255AcpiUtEvaluateObject is only occasionally used, and only to execute 11256reserved 11257methods such as _STA and _INI where the return type is known up front. 11258 11259Fixed a few issues with the internal convert-to-integer code. It now 11260returns 11261an error if an attempt is made to convert a null string, a string of only 11262blanks/tabs, or a zero-length buffer. This affects both implicit 11263conversion 11264and explicit conversion via the ToInteger() operator. 11265 11266The internal debug code in AcpiUtAcquireMutex has been commented out. It 11267is 11268not needed for normal operation and should increase the performance of 11269the 11270entire subsystem. The code remains in case it is needed for debug 11271purposes 11272again. 11273 11274The AcpiExec source and makefile are included in the Unix/Linux package 11275for 11276the first time. 11277 11278Code and Data Size: Current and previous core subsystem library sizes are 11279shown below. These are the code and data sizes for the acpica.lib 11280produced 11281by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11282any ACPI driver or OSPM code. The debug version of the code includes the 11283debug output trace mechanism and has a much larger code and data size. 11284Note 11285that these values will vary depending on the efficiency of the compiler 11286and 11287the compiler options used during generation. 11288 11289 Previous Release: 11290 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11291 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11292 Current Release: 11293 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11294 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11295 112962) iASL Compiler/Disassembler: 11297 11298Switch/Case support: A warning is now issued if the type of the Switch 11299value 11300cannot be determined at compile time. For example, Switch(Arg0) will 11301generate the warning, and the type is assumed to be an integer. As per 11302the 11303ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 11304the 11305warning. 11306 11307Switch/Case support: Implemented support for buffer and string objects as 11308the switch value. This is an ACPI 3.0 feature, now that LEqual supports 11309buffers and strings. 11310 11311Switch/Case support: The emitted code for the LEqual() comparisons now 11312uses 11313the switch value as the first operand, not the second. The case value is 11314now 11315the second operand, and this allows the case value to be implicitly 11316converted to the type of the switch value, not the other way around. 11317 11318Switch/Case support: Temporary variables are now emitted immediately 11319within 11320the control method, not at the global level. This means that there are 11321now 1132236 temps available per-method, not 36 temps per-module as was the case 11323with 11324the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 11325 11326---------------------------------------- 1132714 January 2005. Summary of changes for version 20050114: 11328 11329Added 2005 copyright to all module headers. This affects every module in 11330the core subsystem, iASL compiler, and the utilities. 11331 113321) ACPI CA Core Subsystem: 11333 11334Fixed an issue with the String-to-Buffer conversion code where the string 11335null terminator was not included in the buffer after conversion, but 11336there 11337is existing ASL that assumes the string null terminator is included. This 11338is 11339the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 11340introduced in the previous version when the code was updated to correctly 11341set the converted buffer size as per the ACPI specification. The ACPI 11342spec 11343is ambiguous and will be updated to specify that the null terminator must 11344be 11345included in the converted buffer. This also affects the ToBuffer() ASL 11346operator. 11347 11348Fixed a problem with the Mid() ASL/AML operator where it did not work 11349correctly on Buffer objects. Newly created sub-buffers were not being 11350marked 11351as initialized. 11352 11353 11354Fixed a problem in AcpiTbFindTable where incorrect string compares were 11355performed on the OemId and OemTableId table header fields. These fields 11356are 11357not null terminated, so strncmp is now used instead of strcmp. 11358 11359Implemented a restriction on the Store() ASL/AML operator to align the 11360behavior with the ACPI specification. Previously, any object could be 11361used 11362as the source operand. Now, the only objects that may be used are 11363Integers, 11364Buffers, Strings, Packages, Object References, and DDB Handles. If 11365necessary, the original behavior can be restored by enabling the 11366EnableInterpreterSlack flag. 11367 11368Enhanced the optional "implicit return" support to allow an implicit 11369return 11370value from methods that are invoked externally via the AcpiEvaluateObject 11371interface. This enables implicit returns from the _STA and _INI methods, 11372for example. 11373 11374Changed the Revision() ASL/AML operator to return the current version of 11375the 11376AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 11377returned 11378the supported ACPI version (This is the function of the _REV method). 11379 11380Updated the _REV predefined method to return the currently supported 11381version 11382of ACPI, now 3. 11383 11384Implemented batch mode option for the AcpiExec utility (-b). 11385 11386Code and Data Size: Current and previous core subsystem library sizes are 11387shown below. These are the code and data sizes for the acpica.lib 11388produced 11389by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11390any ACPI driver or OSPM code. The debug version of the code includes the 11391debug output trace mechanism and has a much larger code and data size. 11392Note 11393that these values will vary depending on the efficiency of the compiler 11394and 11395the compiler options used during generation. 11396 11397 Previous Release: 11398 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11399 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11400 Current Release: 11401 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11402 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11403 11404---------------------------------------- 1140510 December 2004. Summary of changes for version 20041210: 11406 11407ACPI 3.0 support is nearing completion in both the iASL compiler and the 11408ACPI CA core subsystem. 11409 114101) ACPI CA Core Subsystem: 11411 11412Fixed a problem in the ToDecimalString operator where the resulting 11413string 11414length was incorrectly calculated. The length is now calculated exactly, 11415eliminating incorrect AE_STRING_LIMIT exceptions. 11416 11417Fixed a problem in the ToHexString operator to allow a maximum 200 11418character 11419string to be produced. 11420 11421Fixed a problem in the internal string-to-buffer and buffer-to-buffer 11422copy 11423routine where the length of the resulting buffer was not truncated to the 11424new size (if the target buffer already existed). 11425 11426Code and Data Size: Current and previous core subsystem library sizes are 11427shown below. These are the code and data sizes for the acpica.lib 11428produced 11429by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11430any ACPI driver or OSPM code. The debug version of the code includes the 11431debug output trace mechanism and has a much larger code and data size. 11432Note 11433that these values will vary depending on the efficiency of the compiler 11434and 11435the compiler options used during generation. 11436 11437 Previous Release: 11438 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11439 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11440 Current Release: 11441 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11442 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11443 11444 114452) iASL Compiler/Disassembler: 11446 11447Implemented the new ACPI 3.0 resource template macros - DWordSpace, 11448ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 11449Includes support in the disassembler. 11450 11451Implemented support for the new (ACPI 3.0) parameter to the Register 11452macro, 11453AccessSize. 11454 11455Fixed a problem where the _HE resource name for the Interrupt macro was 11456referencing bit 0 instead of bit 1. 11457 11458Implemented check for maximum 255 interrupts in the Interrupt macro. 11459 11460Fixed a problem with the predefined resource descriptor names where 11461incorrect AML code was generated if the offset within the resource buffer 11462was 0 or 1. The optimizer shortened the AML code to a single byte opcode 11463but did not update the surrounding package lengths. 11464 11465Changes to the Dma macro: All channels within the channel list must be 11466in 11467the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 11468optional (default is BusMaster). 11469 11470Implemented check for maximum 7 data bytes for the VendorShort macro. 11471 11472The ReadWrite parameter is now optional for the Memory32 and similar 11473macros. 11474 11475---------------------------------------- 1147603 December 2004. Summary of changes for version 20041203: 11477 114781) ACPI CA Core Subsystem: 11479 11480The low-level field insertion/extraction code (exfldio) has been 11481completely 11482rewritten to eliminate unnecessary complexity, bugs, and boundary 11483conditions. 11484 11485Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 11486ToDecimalString 11487operators where the input operand could be inadvertently deleted if no 11488conversion was necessary (e.g., if the input to ToInteger was an Integer 11489object.) 11490 11491Fixed a problem with the ToDecimalString and ToHexString where an 11492incorrect 11493exception code was returned if the resulting string would be > 200 chars. 11494AE_STRING_LIMIT is now returned. 11495 11496Fixed a problem with the Concatenate operator where AE_OK was always 11497returned, even if the operation failed. 11498 11499Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 11500semaphores to be allocated. 11501 11502Code and Data Size: Current and previous core subsystem library sizes are 11503shown below. These are the code and data sizes for the acpica.lib 11504produced 11505by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11506any ACPI driver or OSPM code. The debug version of the code includes the 11507debug output trace mechanism and has a much larger code and data size. 11508Note 11509that these values will vary depending on the efficiency of the compiler 11510and 11511the compiler options used during generation. 11512 11513 Previous Release: 11514 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11515 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11516 Current Release: 11517 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11518 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11519 11520 115212) iASL Compiler/Disassembler: 11522 11523Fixed typechecking for the ObjectType and SizeOf operators. Problem was 11524recently introduced in 20041119. 11525 11526Fixed a problem with the ToUUID macro where the upper nybble of each 11527buffer 11528byte was inadvertently set to zero. 11529 11530---------------------------------------- 1153119 November 2004. Summary of changes for version 20041119: 11532 115331) ACPI CA Core Subsystem: 11534 11535Fixed a problem in the internal ConvertToInteger routine where new 11536integers 11537were not truncated to 32 bits for 32-bit ACPI tables. This routine 11538converts 11539buffers and strings to integers. 11540 11541Implemented support to store a value to an Index() on a String object. 11542This 11543is an ACPI 2.0 feature that had not yet been implemented. 11544 11545Implemented new behavior for storing objects to individual package 11546elements 11547(via the Index() operator). The previous behavior was to invoke the 11548implicit 11549conversion rules if an object was already present at the index. The new 11550behavior is to simply delete any existing object and directly store the 11551new 11552object. Although the ACPI specification seems unclear on this subject, 11553other 11554ACPI implementations behave in this manner. (This is the root of the 11555AE_BAD_HEX_CONSTANT issue.) 11556 11557Modified the RSDP memory scan mechanism to support the extended checksum 11558for 11559ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 11560RSDP signature is found with a valid checksum. 11561 11562Code and Data Size: Current and previous core subsystem library sizes are 11563shown below. These are the code and data sizes for the acpica.lib 11564produced 11565by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11566any ACPI driver or OSPM code. The debug version of the code includes the 11567debug output trace mechanism and has a much larger code and data size. 11568Note 11569that these values will vary depending on the efficiency of the compiler 11570and 11571the compiler options used during generation. 11572 11573 Previous Release: 11574 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11575 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11576 Current Release: 11577 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11578 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11579 11580 115812) iASL Compiler/Disassembler: 11582 11583Fixed a missing semicolon in the aslcompiler.y file. 11584 11585---------------------------------------- 1158605 November 2004. Summary of changes for version 20041105: 11587 115881) ACPI CA Core Subsystem: 11589 11590Implemented support for FADT revision 2. This was an interim table 11591(between 11592ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 11593 11594Implemented optional support to allow uninitialized LocalX and ArgX 11595variables in a control method. The variables are initialized to an 11596Integer 11597object with a value of zero. This support is enabled by setting the 11598AcpiGbl_EnableInterpreterSlack flag to TRUE. 11599 11600Implemented support for Integer objects for the SizeOf operator. Either 116014 11602or 8 is returned, depending on the current integer size (32-bit or 64- 11603bit, 11604depending on the parent table revision). 11605 11606Fixed a problem in the implementation of the SizeOf and ObjectType 11607operators 11608where the operand was resolved to a value too early, causing incorrect 11609return values for some objects. 11610 11611Fixed some possible memory leaks during exceptional conditions. 11612 11613Code and Data Size: Current and previous core subsystem library sizes are 11614shown below. These are the code and data sizes for the acpica.lib 11615produced 11616by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11617any ACPI driver or OSPM code. The debug version of the code includes the 11618debug output trace mechanism and has a much larger code and data size. 11619Note 11620that these values will vary depending on the efficiency of the compiler 11621and 11622the compiler options used during generation. 11623 11624 Previous Release: 11625 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11626 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11627 Current Release: 11628 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11629 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11630 11631 116322) iASL Compiler/Disassembler: 11633 11634Implemented support for all ACPI 3.0 reserved names and methods. 11635 11636Implemented all ACPI 3.0 grammar elements in the front-end, including 11637support for semicolons. 11638 11639Implemented the ACPI 3.0 Function() and ToUUID() macros 11640 11641Fixed a problem in the disassembler where a Scope() operator would not be 11642emitted properly if the target of the scope was in another table. 11643 11644---------------------------------------- 1164515 October 2004. Summary of changes for version 20041015: 11646 11647Note: ACPI CA is currently undergoing an in-depth and complete formal 11648evaluation to test/verify the following areas. Other suggestions are 11649welcome. This will result in an increase in the frequency of releases and 11650the number of bug fixes in the next few months. 11651 - Functional tests for all ASL/AML operators 11652 - All implicit/explicit type conversions 11653 - Bit fields and operation regions 11654 - 64-bit math support and 32-bit-only "truncated" math support 11655 - Exceptional conditions, both compiler and interpreter 11656 - Dynamic object deletion and memory leaks 11657 - ACPI 3.0 support when implemented 11658 - External interfaces to the ACPI subsystem 11659 11660 116611) ACPI CA Core Subsystem: 11662 11663Fixed two alignment issues on 64-bit platforms - within debug statements 11664in 11665AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 11666Address 11667field within the non-aligned ACPI generic address structure. 11668 11669Fixed a problem in the Increment and Decrement operators where incorrect 11670operand resolution could result in the inadvertent modification of the 11671original integer when the integer is passed into another method as an 11672argument and the arg is then incremented/decremented. 11673 11674Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 11675bit 11676BCD number were truncated during conversion. 11677 11678Fixed a problem in the ToDecimal operator where the length of the 11679resulting 11680string could be set incorrectly too long if the input operand was a 11681Buffer 11682object. 11683 11684Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 11685(0) 11686within a buffer would prematurely terminate a compare between buffer 11687objects. 11688 11689Added a check for string overflow (>200 characters as per the ACPI 11690specification) during the Concatenate operator with two string operands. 11691 11692Code and Data Size: Current and previous core subsystem library sizes are 11693shown below. These are the code and data sizes for the acpica.lib 11694produced 11695by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11696any ACPI driver or OSPM code. The debug version of the code includes the 11697debug output trace mechanism and has a much larger code and data size. 11698Note 11699that these values will vary depending on the efficiency of the compiler 11700and 11701the compiler options used during generation. 11702 11703 Previous Release: 11704 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11705 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 11706 Current Release: 11707 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11708 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11709 11710 11711 117122) iASL Compiler/Disassembler: 11713 11714Allow the use of the ObjectType operator on uninitialized Locals and Args 11715(returns 0 as per the ACPI specification). 11716 11717Fixed a problem where the compiler would fault if there was a syntax 11718error 11719in the FieldName of all of the various CreateXXXField operators. 11720 11721Disallow the use of lower case letters within the EISAID macro, as per 11722the 11723ACPI specification. All EISAID strings must be of the form "UUUNNNN" 11724Where 11725U is an uppercase letter and N is a hex digit. 11726 11727 11728---------------------------------------- 1172906 October 2004. Summary of changes for version 20041006: 11730 117311) ACPI CA Core Subsystem: 11732 11733Implemented support for the ACPI 3.0 Timer operator. This ASL function 11734implements a 64-bit timer with 100 nanosecond granularity. 11735 11736Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 11737implement the ACPI 3.0 Timer operator. This allows the host OS to 11738implement 11739the timer with the best clock available. Also, it keeps the core 11740subsystem 11741out of the clock handling business, since the host OS (usually) performs 11742this function. 11743 11744Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 11745functions use a 64-bit address which is part of the packed ACPI Generic 11746Address Structure. Since the structure is non-aligned, the alignment 11747macros 11748are now used to extract the address to a local variable before use. 11749 11750Fixed a problem where the ToInteger operator assumed all input strings 11751were 11752hexadecimal. The operator now handles both decimal strings and hex 11753strings 11754(prefixed with "0x"). 11755 11756Fixed a problem where the string length in the string object created as a 11757result of the internal ConvertToString procedure could be incorrect. This 11758potentially affected all implicit conversions and also the 11759ToDecimalString 11760and ToHexString operators. 11761 11762Fixed two problems in the ToString operator. If the length parameter was 11763zero, an incorrect string object was created and the value of the input 11764length parameter was inadvertently changed from zero to Ones. 11765 11766Fixed a problem where the optional ResourceSource string in the 11767ExtendedIRQ 11768resource macro was ignored. 11769 11770Simplified the interfaces to the internal division functions, reducing 11771code 11772size and complexity. 11773 11774Code and Data Size: Current and previous core subsystem library sizes are 11775shown below. These are the code and data sizes for the acpica.lib 11776produced 11777by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11778any ACPI driver or OSPM code. The debug version of the code includes the 11779debug output trace mechanism and has a much larger code and data size. 11780Note 11781that these values will vary depending on the efficiency of the compiler 11782and 11783the compiler options used during generation. 11784 11785 Previous Release: 11786 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 11787 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 11788 Current Release: 11789 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11790 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 11791 11792 117932) iASL Compiler/Disassembler: 11794 11795Implemented support for the ACPI 3.0 Timer operator. 11796 11797Fixed a problem where the Default() operator was inadvertently ignored in 11798a 11799Switch/Case block. This was a problem in the translation of the Switch 11800statement to If...Else pairs. 11801 11802Added support to allow a standalone Return operator, with no parentheses 11803(or 11804operands). 11805 11806Fixed a problem with code generation for the ElseIf operator where the 11807translated Else...If parse tree was improperly constructed leading to the 11808loss of some code. 11809 11810---------------------------------------- 1181122 September 2004. Summary of changes for version 20040922: 11812 118131) ACPI CA Core Subsystem: 11814 11815Fixed a problem with the implementation of the LNot() operator where 11816"Ones" 11817was not returned for the TRUE case. Changed the code to return Ones 11818instead 11819of (!Arg) which was usually 1. This change affects iASL constant folding 11820for 11821this operator also. 11822 11823Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 11824not 11825initialized properly -- Now zero the entire buffer in this case where the 11826buffer already exists. 11827 11828Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 11829Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 11830related code considerably. This will require changes/updates to all OS 11831interface layers (OSLs.) 11832 11833Implemented a new external interface, AcpiInstallExceptionHandler, to 11834allow 11835a system exception handler to be installed. This handler is invoked upon 11836any 11837run-time exception that occurs during control method execution. 11838 11839Added support for the DSDT in AcpiTbFindTable. This allows the 11840DataTableRegion() operator to access the local copy of the DSDT. 11841 11842Code and Data Size: Current and previous core subsystem library sizes are 11843shown below. These are the code and data sizes for the acpica.lib 11844produced 11845by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11846any ACPI driver or OSPM code. The debug version of the code includes the 11847debug output trace mechanism and has a much larger code and data size. 11848Note 11849that these values will vary depending on the efficiency of the compiler 11850and 11851the compiler options used during generation. 11852 11853 Previous Release: 11854 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11855 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11856 Current Release: 11857 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 11858 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 11859 11860 118612) iASL Compiler/Disassembler: 11862 11863Fixed a problem with constant folding and the LNot operator. LNot was 11864returning 1 in the TRUE case, not Ones as per the ACPI specification. 11865This 11866could result in the generation of an incorrect folded/reduced constant. 11867 11868End-Of-File is now allowed within a "//"-style comment. A parse error no 11869longer occurs if such a comment is at the very end of the input ASL 11870source 11871file. 11872 11873Implemented the "-r" option to override the Revision in the table header. 11874The initial use of this option will be to simplify the evaluation of the 11875AML 11876interpreter by allowing a single ASL source module to be compiled for 11877either 1187832-bit or 64-bit integers. 11879 11880 11881---------------------------------------- 1188227 August 2004. Summary of changes for version 20040827: 11883 118841) ACPI CA Core Subsystem: 11885 11886- Implemented support for implicit object conversion in the non-numeric 11887logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 11888and 11889LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 11890the second operand is implicitly converted on the fly to match the type 11891of 11892the first operand. For example: 11893 11894 LEqual (Source1, Source2) 11895 11896Source1 and Source2 must each evaluate to an integer, a string, or a 11897buffer. 11898The data type of Source1 dictates the required type of Source2. Source2 11899is 11900implicitly converted if necessary to match the type of Source1. 11901 11902- Updated and corrected the behavior of the string conversion support. 11903The 11904rules concerning conversion of buffers to strings (according to the ACPI 11905specification) are as follows: 11906 11907ToDecimalString - explicit byte-wise conversion of buffer to string of 11908decimal values (0-255) separated by commas. ToHexString - explicit byte- 11909wise 11910conversion of buffer to string of hex values (0-FF) separated by commas. 11911ToString - explicit byte-wise conversion of buffer to string. Byte-by- 11912byte 11913copy with no transform except NULL terminated. Any other implicit buffer- 11914to- 11915string conversion - byte-wise conversion of buffer to string of hex 11916values 11917(0-FF) separated by spaces. 11918 11919- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 11920 11921- Fixed a problem in AcpiNsGetPathnameLength where the returned length 11922was 11923one byte too short in the case of a node in the root scope. This could 11924cause a fault during debug output. 11925 11926- Code and Data Size: Current and previous core subsystem library sizes 11927are 11928shown below. These are the code and data sizes for the acpica.lib 11929produced 11930by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11931any ACPI driver or OSPM code. The debug version of the code includes the 11932debug output trace mechanism and has a much larger code and data size. 11933Note 11934that these values will vary depending on the efficiency of the compiler 11935and 11936the compiler options used during generation. 11937 11938 Previous Release: 11939 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11940 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11941 Current Release: 11942 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11943 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11944 11945 119462) iASL Compiler/Disassembler: 11947 11948- Fixed a Linux generation error. 11949 11950 11951---------------------------------------- 1195216 August 2004. Summary of changes for version 20040816: 11953 119541) ACPI CA Core Subsystem: 11955 11956Designed and implemented support within the AML interpreter for the so- 11957called "implicit return". This support returns the result of the last 11958ASL 11959operation within a control method, in the absence of an explicit Return() 11960operator. A few machines depend on this behavior, even though it is not 11961explicitly supported by the ASL language. It is optional support that 11962can 11963be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 11964 11965Removed support for the PCI_Config address space from the internal low 11966level 11967hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 11968support was not used internally, and would not work correctly anyway 11969because 11970the PCI bus number and segment number were not supported. There are 11971separate interfaces for PCI configuration space access because of the 11972unique 11973interface. 11974 11975Code and Data Size: Current and previous core subsystem library sizes are 11976shown below. These are the code and data sizes for the acpica.lib 11977produced 11978by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11979any ACPI driver or OSPM code. The debug version of the code includes the 11980debug output trace mechanism and has a much larger code and data size. 11981Note 11982that these values will vary depending on the efficiency of the compiler 11983and 11984the compiler options used during generation. 11985 11986 Previous Release: 11987 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11988 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 11989 Current Release: 11990 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11991 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11992 11993 119942) iASL Compiler/Disassembler: 11995 11996Fixed a problem where constants in ASL expressions at the root level (not 11997within a control method) could be inadvertently truncated during code 11998generation. This problem was introduced in the 20040715 release. 11999 12000 12001---------------------------------------- 1200215 July 2004. Summary of changes for version 20040715: 12003 120041) ACPI CA Core Subsystem: 12005 12006Restructured the internal HW GPE interfaces to pass/track the current 12007state 12008of interrupts (enabled/disabled) in order to avoid possible deadlock and 12009increase flexibility of the interfaces. 12010 12011Implemented a "lexicographical compare" for String and Buffer objects 12012within 12013the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 12014- 12015as per further clarification to the ACPI specification. Behavior is 12016similar 12017to C library "strcmp". 12018 12019Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 12020external function. In the 32-bit non-debug case, the stack use has been 12021reduced from 168 bytes to 32 bytes. 12022 12023Deployed a new run-time configuration flag, 12024AcpiGbl_EnableInterpreterSlack, 12025whose purpose is to allow the AML interpreter to forgive certain bad AML 12026constructs. Default setting is FALSE. 12027 12028Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 12029IO 12030support code. If enabled, it allows field access to go beyond the end of 12031a 12032region definition if the field is within the region length rounded up to 12033the 12034next access width boundary (a common coding error.) 12035 12036Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 12037ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 12038these 12039symbols are lowercased by the latest version of the AcpiSrc tool. 12040 12041The prototypes for the PCI interfaces in acpiosxf.h have been updated to 12042rename "Register" to simply "Reg" to prevent certain compilers from 12043complaining. 12044 12045Code and Data Size: Current and previous core subsystem library sizes are 12046shown below. These are the code and data sizes for the acpica.lib 12047produced 12048by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12049any ACPI driver or OSPM code. The debug version of the code includes the 12050debug output trace mechanism and has a much larger code and data size. 12051Note 12052that these values will vary depending on the efficiency of the compiler 12053and 12054the compiler options used during generation. 12055 12056 Previous Release: 12057 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12058 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 12059 Current Release: 12060 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12061 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 12062 12063 120642) iASL Compiler/Disassembler: 12065 12066Implemented full support for Package objects within the Case() operator. 12067Note: The Break() operator is currently not supported within Case blocks 12068(TermLists) as there is some question about backward compatibility with 12069ACPI 120701.0 interpreters. 12071 12072 12073Fixed a problem where complex terms were not supported properly within 12074the 12075Switch() operator. 12076 12077Eliminated extraneous warning for compiler-emitted reserved names of the 12078form "_T_x". (Used in Switch/Case operators.) 12079 12080Eliminated optimization messages for "_T_x" objects and small constants 12081within the DefinitionBlock operator. 12082 12083 12084---------------------------------------- 1208515 June 2004. Summary of changes for version 20040615: 12086 120871) ACPI CA Core Subsystem: 12088 12089Implemented support for Buffer and String objects (as per ACPI 2.0) for 12090the 12091following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 12092LLessEqual. 12093 12094All directory names in the entire source package are lower case, as they 12095were in earlier releases. 12096 12097Implemented "Disassemble" command in the AML debugger that will 12098disassemble 12099a single control method. 12100 12101Code and Data Size: Current and previous core subsystem library sizes are 12102shown below. These are the code and data sizes for the acpica.lib 12103produced 12104by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12105any ACPI driver or OSPM code. The debug version of the code includes the 12106debug output trace mechanism and has a much larger code and data size. 12107Note 12108that these values will vary depending on the efficiency of the compiler 12109and 12110the compiler options used during generation. 12111 12112 Previous Release: 12113 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12114 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12115 12116 Current Release: 12117 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12118 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 12119 12120 121212) iASL Compiler/Disassembler: 12122 12123Implemented support for Buffer and String objects (as per ACPI 2.0) for 12124the 12125following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 12126LLessEqual. 12127 12128All directory names in the entire source package are lower case, as they 12129were in earlier releases. 12130 12131Fixed a fault when using the -g or -d<nofilename> options if the FADT was 12132not found. 12133 12134Fixed an issue with the Windows version of the compiler where later 12135versions 12136of Windows place the FADT in the registry under the name "FADT" and not 12137"FACP" as earlier versions did. This applies when using the -g or - 12138d<nofilename> options. The compiler now looks for both strings as 12139necessary. 12140 12141Fixed a problem with compiler namepath optimization where a namepath 12142within 12143the Scope() operator could not be optimized if the namepath was a subpath 12144of 12145the current scope path. 12146 12147---------------------------------------- 1214827 May 2004. Summary of changes for version 20040527: 12149 121501) ACPI CA Core Subsystem: 12151 12152Completed a new design and implementation for EBDA (Extended BIOS Data 12153Area) 12154support in the RSDP scan code. The original code improperly scanned for 12155the 12156EBDA by simply scanning from memory location 0 to 0x400. The correct 12157method 12158is to first obtain the EBDA pointer from within the BIOS data area, then 12159scan 1K of memory starting at the EBDA pointer. There appear to be few 12160if 12161any machines that place the RSDP in the EBDA, however. 12162 12163Integrated a fix for a possible fault during evaluation of BufferField 12164arguments. Obsolete code that was causing the problem was removed. 12165 12166Found and fixed a problem in the Field Support Code where data could be 12167corrupted on a bit field read that starts on an aligned boundary but does 12168not end on an aligned boundary. Merged the read/write "datum length" 12169calculation code into a common procedure. 12170 12171Rolled in a couple of changes to the FreeBSD-specific header. 12172 12173 12174Code and Data Size: Current and previous core subsystem library sizes are 12175shown below. These are the code and data sizes for the acpica.lib 12176produced 12177by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12178any ACPI driver or OSPM code. The debug version of the code includes the 12179debug output trace mechanism and has a much larger code and data size. 12180Note 12181that these values will vary depending on the efficiency of the compiler 12182and 12183the compiler options used during generation. 12184 12185 Previous Release: 12186 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12187 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12188 Current Release: 12189 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12190 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12191 12192 121932) iASL Compiler/Disassembler: 12194 12195Fixed a generation warning produced by some overly-verbose compilers for 12196a 1219764-bit constant. 12198 12199---------------------------------------- 1220014 May 2004. Summary of changes for version 20040514: 12201 122021) ACPI CA Core Subsystem: 12203 12204Fixed a problem where hardware GPE enable bits sometimes not set properly 12205during and after GPE method execution. Result of 04/27 changes. 12206 12207Removed extra "clear all GPEs" when sleeping/waking. 12208 12209Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 12210AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 12211to 12212the new AcpiEv* calls as appropriate. 12213 12214ACPI_OS_NAME was removed from the OS-specific headers. The default name 12215is 12216now "Microsoft Windows NT" for maximum compatibility. However this can 12217be 12218changed by modifying the acconfig.h file. 12219 12220Allow a single invocation of AcpiInstallNotifyHandler for a handler that 12221traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 12222 12223Run _INI methods on ThermalZone objects. This is against the ACPI 12224specification, but there is apparently ASL code in the field that has 12225these 12226_INI methods, and apparently "other" AML interpreters execute them. 12227 12228Performed a full 16/32/64 bit lint that resulted in some small changes. 12229 12230Added a sleep simulation command to the AML debugger to test sleep code. 12231 12232Code and Data Size: Current and previous core subsystem library sizes are 12233shown below. These are the code and data sizes for the acpica.lib 12234produced 12235by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12236any ACPI driver or OSPM code. The debug version of the code includes the 12237debug output trace mechanism and has a much larger code and data size. 12238Note 12239that these values will vary depending on the efficiency of the compiler 12240and 12241the compiler options used during generation. 12242 12243 Previous Release: 12244 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12245 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12246 Current Release: 12247 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12248 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12249 12250---------------------------------------- 1225127 April 2004. Summary of changes for version 20040427: 12252 122531) ACPI CA Core Subsystem: 12254 12255Completed a major overhaul of the GPE handling within ACPI CA. There are 12256now three types of GPEs: wake-only, runtime-only, and combination 12257wake/run. 12258The only GPEs allowed to be combination wake/run are for button-style 12259devices such as a control-method power button, control-method sleep 12260button, 12261or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 12262not 12263referenced by any _PRW methods are marked for "runtime" and hardware 12264enabled. Any GPE that is referenced by a _PRW method is marked for 12265"wake" 12266(and disabled at runtime). However, at sleep time, only those GPEs that 12267have been specifically enabled for wake via the AcpiEnableGpe interface 12268will 12269actually be hardware enabled. 12270 12271A new external interface has been added, AcpiSetGpeType(), that is meant 12272to 12273be used by device drivers to force a GPE to a particular type. It will 12274be 12275especially useful for the drivers for the button devices mentioned above. 12276 12277Completed restructuring of the ACPI CA initialization sequence so that 12278default operation region handlers are installed before GPEs are 12279initialized 12280and the _PRW methods are executed. This will prevent errors when the 12281_PRW 12282methods attempt to access system memory or I/O space. 12283 12284GPE enable/disable no longer reads the GPE enable register. We now keep 12285the 12286enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 12287thus no longer depend on the hardware to maintain these bits. 12288 12289Always clear the wake status and fixed/GPE status bits before sleep, even 12290for state S5. 12291 12292Improved the AML debugger output for displaying the GPE blocks and their 12293current status. 12294 12295Added new strings for the _OSI method, of the form "Windows 2001 SPx" 12296where 12297x = 0,1,2,3,4. 12298 12299Fixed a problem where the physical address was incorrectly calculated 12300when 12301the Load() operator was used to directly load from an Operation Region 12302(vs. 12303loading from a Field object.) Also added check for minimum table length 12304for 12305this case. 12306 12307Fix for multiple mutex acquisition. Restore original thread SyncLevel on 12308mutex release. 12309 12310Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 12311consistency with the other fields returned. 12312 12313Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 12314structure for each GPE in the system, so the size of this structure is 12315important. 12316 12317CPU stack requirement reduction: Cleaned up the method execution and 12318object 12319evaluation paths so that now a parameter structure is passed, instead of 12320copying the various method parameters over and over again. 12321 12322In evregion.c: Correctly exit and reenter the interpreter region if and 12323only if dispatching an operation region request to a user-installed 12324handler. 12325Do not exit/reenter when dispatching to a default handler (e.g., default 12326system memory or I/O handlers) 12327 12328 12329Notes for updating drivers for the new GPE support. The following 12330changes 12331must be made to ACPI-related device drivers that are attached to one or 12332more 12333GPEs: (This information will be added to the ACPI CA Programmer 12334Reference.) 12335 123361) AcpiInstallGpeHandler no longer automatically enables the GPE, you 12337must 12338explicitly call AcpiEnableGpe. 123392) There is a new interface called AcpiSetGpeType. This should be called 12340before enabling the GPE. Also, this interface will automatically disable 12341the GPE if it is currently enabled. 123423) AcpiEnableGpe no longer supports a GPE type flag. 12343 12344Specific drivers that must be changed: 123451) EC driver: 12346 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 12347AeGpeHandler, NULL); 12348 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 12349 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 12350 123512) Button Drivers (Power, Lid, Sleep): 12352Run _PRW method under parent device 12353If _PRW exists: /* This is a control-method button */ 12354 Extract GPE number and possibly GpeDevice 12355 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 12356 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 12357 12358For all other devices that have _PRWs, we automatically set the GPE type 12359to 12360ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 12361This 12362must be done on a selective basis, usually requiring some kind of user 12363app 12364to allow the user to pick the wake devices. 12365 12366 12367Code and Data Size: Current and previous core subsystem library sizes are 12368shown below. These are the code and data sizes for the acpica.lib 12369produced 12370by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12371any ACPI driver or OSPM code. The debug version of the code includes the 12372debug output trace mechanism and has a much larger code and data size. 12373Note 12374that these values will vary depending on the efficiency of the compiler 12375and 12376the compiler options used during generation. 12377 12378 Previous Release: 12379 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12380 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12381 Current Release: 12382 12383 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12384 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12385 12386 12387 12388---------------------------------------- 1238902 April 2004. Summary of changes for version 20040402: 12390 123911) ACPI CA Core Subsystem: 12392 12393Fixed an interpreter problem where an indirect store through an ArgX 12394parameter was incorrectly applying the "implicit conversion rules" during 12395the store. From the ACPI specification: "If the target is a method local 12396or 12397argument (LocalX or ArgX), no conversion is performed and the result is 12398stored directly to the target". The new behavior is to disable implicit 12399conversion during ALL stores to an ArgX. 12400 12401Changed the behavior of the _PRW method scan to ignore any and all errors 12402returned by a given _PRW. This prevents the scan from aborting from the 12403failure of any single _PRW. 12404 12405Moved the runtime configuration parameters from the global init procedure 12406to 12407static variables in acglobal.h. This will allow the host to override the 12408default values easily. 12409 12410Code and Data Size: Current and previous core subsystem library sizes are 12411shown below. These are the code and data sizes for the acpica.lib 12412produced 12413by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12414any ACPI driver or OSPM code. The debug version of the code includes the 12415debug output trace mechanism and has a much larger code and data size. 12416Note 12417that these values will vary depending on the efficiency of the compiler 12418and 12419the compiler options used during generation. 12420 12421 Previous Release: 12422 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12423 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12424 Current Release: 12425 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12426 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12427 12428 124292) iASL Compiler/Disassembler: 12430 12431iASL now fully disassembles SSDTs. However, External() statements are 12432not 12433generated automatically for unresolved symbols at this time. This is a 12434planned feature for future implementation. 12435 12436Fixed a scoping problem in the disassembler that occurs when the type of 12437the 12438target of a Scope() operator is overridden. This problem caused an 12439incorrectly nested internal namespace to be constructed. 12440 12441Any warnings or errors that are emitted during disassembly are now 12442commented 12443out automatically so that the resulting file can be recompiled without 12444any 12445hand editing. 12446 12447---------------------------------------- 1244826 March 2004. Summary of changes for version 20040326: 12449 124501) ACPI CA Core Subsystem: 12451 12452Implemented support for "wake" GPEs via interaction between GPEs and the 12453_PRW methods. Every GPE that is pointed to by one or more _PRWs is 12454identified as a WAKE GPE and by default will no longer be enabled at 12455runtime. Previously, we were blindly enabling all GPEs with a 12456corresponding 12457_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 12458We 12459believe this has been the cause of thousands of "spurious" GPEs on some 12460systems. 12461 12462This new GPE behavior is can be reverted to the original behavior (enable 12463ALL GPEs at runtime) via a runtime flag. 12464 12465Fixed a problem where aliased control methods could not access objects 12466properly. The proper scope within the namespace was not initialized 12467(transferred to the target of the aliased method) before executing the 12468target method. 12469 12470Fixed a potential race condition on internal object deletion on the 12471return 12472object in AcpiEvaluateObject. 12473 12474Integrated a fix for resource descriptors where both _MEM and _MTP were 12475being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 12476wide, 0x0F instead of 0x03.) 12477 12478Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 12479preventing 12480a 12481fault in some cases. 12482 12483Updated Notify() values for debug statements in evmisc.c 12484 12485Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 12486 12487Code and Data Size: Current and previous core subsystem library sizes are 12488shown below. These are the code and data sizes for the acpica.lib 12489produced 12490by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12491any ACPI driver or OSPM code. The debug version of the code includes the 12492debug output trace mechanism and has a much larger code and data size. 12493Note 12494that these values will vary depending on the efficiency of the compiler 12495and 12496the compiler options used during generation. 12497 12498 Previous Release: 12499 12500 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12501 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12502 Current Release: 12503 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12504 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12505 12506---------------------------------------- 1250711 March 2004. Summary of changes for version 20040311: 12508 125091) ACPI CA Core Subsystem: 12510 12511Fixed a problem where errors occurring during the parse phase of control 12512method execution did not abort cleanly. For example, objects created and 12513installed in the namespace were not deleted. This caused all subsequent 12514invocations of the method to return the AE_ALREADY_EXISTS exception. 12515 12516Implemented a mechanism to force a control method to "Serialized" 12517execution 12518if the method attempts to create namespace objects. (The root of the 12519AE_ALREADY_EXISTS problem.) 12520 12521Implemented support for the predefined _OSI "internal" control method. 12522Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 12523and 12524"Windows 2001.1", and can be easily upgraded for new strings as 12525necessary. 12526This feature will allow "other" operating systems to execute the fully 12527tested, "Windows" code path through the ASL code 12528 12529Global Lock Support: Now allows multiple acquires and releases with any 12530internal thread. Removed concept of "owning thread" for this special 12531mutex. 12532 12533Fixed two functions that were inappropriately declaring large objects on 12534the 12535CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 12536during 12537method execution considerably. 12538 12539Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 12540S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 12541 12542Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 12543defined on the machine. 12544 12545Implemented two runtime options: One to force all control method 12546execution 12547to "Serialized" to mimic Windows behavior, another to disable _OSI 12548support 12549if it causes problems on a given machine. 12550 12551Code and Data Size: Current and previous core subsystem library sizes are 12552shown below. These are the code and data sizes for the acpica.lib 12553produced 12554by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12555any ACPI driver or OSPM code. The debug version of the code includes the 12556debug output trace mechanism and has a much larger code and data size. 12557Note 12558that these values will vary depending on the efficiency of the compiler 12559and 12560the compiler options used during generation. 12561 12562 Previous Release: 12563 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12564 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12565 Current Release: 12566 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12567 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12568 125692) iASL Compiler/Disassembler: 12570 12571Fixed an array size problem for FreeBSD that would cause the compiler to 12572fault. 12573 12574---------------------------------------- 1257520 February 2004. Summary of changes for version 20040220: 12576 12577 125781) ACPI CA Core Subsystem: 12579 12580Implemented execution of _SxD methods for Device objects in the 12581GetObjectInfo interface. 12582 12583Fixed calls to _SST method to pass the correct arguments. 12584 12585Added a call to _SST on wake to restore to "working" state. 12586 12587Check for End-Of-Buffer failure case in the WalkResources interface. 12588 12589Integrated fix for 64-bit alignment issue in acglobal.h by moving two 12590structures to the beginning of the file. 12591 12592After wake, clear GPE status register(s) before enabling GPEs. 12593 12594After wake, clear/enable power button. (Perhaps we should clear/enable 12595all 12596fixed events upon wake.) 12597 12598Fixed a couple of possible memory leaks in the Namespace manager. 12599 12600Integrated latest acnetbsd.h file. 12601 12602---------------------------------------- 1260311 February 2004. Summary of changes for version 20040211: 12604 12605 126061) ACPI CA Core Subsystem: 12607 12608Completed investigation and implementation of the call-by-reference 12609mechanism for control method arguments. 12610 12611Fixed a problem where a store of an object into an indexed package could 12612fail if the store occurs within a different method than the method that 12613created the package. 12614 12615Fixed a problem where the ToDecimal operator could return incorrect 12616results. 12617 12618Fixed a problem where the CopyObject operator could fail on some of the 12619more 12620obscure objects (e.g., Reference objects.) 12621 12622Improved the output of the Debug object to display buffer, package, and 12623index objects. 12624 12625Fixed a problem where constructs of the form "RefOf (ArgX)" did not 12626return 12627the expected result. 12628 12629Added permanent ACPI_REPORT_ERROR macros for all instances of the 12630ACPI_AML_INTERNAL exception. 12631 12632Integrated latest version of acfreebsd.h 12633 12634---------------------------------------- 1263516 January 2004. Summary of changes for version 20040116: 12636 12637The purpose of this release is primarily to update the copyright years in 12638each module, thus causing a huge number of diffs. There are a few small 12639functional changes, however. 12640 126411) ACPI CA Core Subsystem: 12642 12643Improved error messages when there is a problem finding one or more of 12644the 12645required base ACPI tables 12646 12647Reintroduced the definition of APIC_HEADER in actbl.h 12648 12649Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 12650 12651Removed extraneous reference to NewObj in dsmthdat.c 12652 126532) iASL compiler 12654 12655Fixed a problem introduced in December that disabled the correct 12656disassembly 12657of Resource Templates 12658 12659 12660---------------------------------------- 1266103 December 2003. Summary of changes for version 20031203: 12662 126631) ACPI CA Core Subsystem: 12664 12665Changed the initialization of Operation Regions during subsystem 12666init to perform two entire walks of the ACPI namespace; The first 12667to initialize the regions themselves, the second to execute the 12668_REG methods. This fixed some interdependencies across _REG 12669methods found on some machines. 12670 12671Fixed a problem where a Store(Local0, Local1) could simply update 12672the object reference count, and not create a new copy of the 12673object if the Local1 is uninitialized. 12674 12675Implemented support for the _SST reserved method during sleep 12676transitions. 12677 12678Implemented support to clear the SLP_TYP and SLP_EN bits when 12679waking up, this is apparently required by some machines. 12680 12681When sleeping, clear the wake status only if SleepState is not S5. 12682 12683Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 12684pointer arithmetic advanced a string pointer too far. 12685 12686Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 12687could be returned if the requested table has not been loaded. 12688 12689Within the support for IRQ resources, restructured the handling of 12690the active and edge/level bits. 12691 12692Fixed a few problems in AcpiPsxExecute() where memory could be 12693leaked under certain error conditions. 12694 12695Improved error messages for the cases where the ACPI mode could 12696not be entered. 12697 12698Code and Data Size: Current and previous core subsystem library 12699sizes are shown below. These are the code and data sizes for the 12700acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12701these values do not include any ACPI driver or OSPM code. The 12702debug version of the code includes the debug output trace 12703mechanism and has a much larger code and data size. Note that 12704these values will vary depending on the efficiency of the compiler 12705and the compiler options used during generation. 12706 12707 Previous Release (20031029): 12708 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 12709 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 12710 Current Release: 12711 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12712 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12713 127142) iASL Compiler/Disassembler: 12715 12716Implemented a fix for the iASL disassembler where a bad index was 12717generated. This was most noticeable on 64-bit platforms 12718 12719 12720---------------------------------------- 1272129 October 2003. Summary of changes for version 20031029: 12722 127231) ACPI CA Core Subsystem: 12724 12725 12726Fixed a problem where a level-triggered GPE with an associated 12727_Lxx control method was incorrectly cleared twice. 12728 12729Fixed a problem with the Field support code where an access can 12730occur beyond the end-of-region if the field is non-aligned but 12731extends to the very end of the parent region (resulted in an 12732AE_AML_REGION_LIMIT exception.) 12733 12734Fixed a problem with ACPI Fixed Events where an RT Clock handler 12735would not get invoked on an RTC event. The RTC event bitmasks for 12736the PM1 registers were not being initialized properly. 12737 12738Implemented support for executing _STA and _INI methods for 12739Processor objects. Although this is currently not part of the 12740ACPI specification, there is existing ASL code that depends on the 12741init-time execution of these methods. 12742 12743Implemented and deployed a GetDescriptorName function to decode 12744the various types of internal descriptors. Guards against null 12745descriptors during debug output also. 12746 12747Implemented and deployed a GetNodeName function to extract the 4- 12748character namespace node name. This function simplifies the debug 12749and error output, as well as guarding against null pointers during 12750output. 12751 12752Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 12753simplify the debug and error output of 64-bit integers. This 12754macro replaces the HIDWORD and LODWORD macros for dumping these 12755integers. 12756 12757Updated the implementation of the Stall() operator to only call 12758AcpiOsStall(), and also return an error if the operand is larger 12759than 255. This preserves the required behavior of not 12760relinquishing the processor, as would happen if AcpiOsSleep() was 12761called for "long stalls". 12762 12763Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 12764initialized are now treated as NOOPs. 12765 12766Cleaned up a handful of warnings during 64-bit generation. 12767 12768Fixed a reported error where and incorrect GPE number was passed 12769to the GPE dispatch handler. This value is only used for error 12770output, however. Used this opportunity to clean up and streamline 12771the GPE dispatch code. 12772 12773Code and Data Size: Current and previous core subsystem library 12774sizes are shown below. These are the code and data sizes for the 12775acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12776these values do not include any ACPI driver or OSPM code. The 12777 12778debug version of the code includes the debug output trace 12779mechanism and has a much larger code and data size. Note that 12780these values will vary depending on the efficiency of the compiler 12781and the compiler options used during generation. 12782 12783 Previous Release (20031002): 12784 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 12785 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 12786 Current Release: 12787 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 12788 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 12789 12790 127912) iASL Compiler/Disassembler: 12792 12793Updated the iASL compiler to return an error if the operand to the 12794Stall() operator is larger than 255. 12795 12796 12797---------------------------------------- 1279802 October 2003. Summary of changes for version 20031002: 12799 12800 128011) ACPI CA Core Subsystem: 12802 12803Fixed a problem with Index Fields where the index was not 12804incremented for fields that require multiple writes to the 12805index/data registers (Fields that are wider than the data 12806register.) 12807 12808Fixed a problem with all Field objects where a write could go 12809beyond the end-of-field if the field was larger than the access 12810granularity and therefore required multiple writes to complete the 12811request. An extra write beyond the end of the field could happen 12812inadvertently. 12813 12814Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 12815would incorrectly be returned if the width of the Data Register 12816was larger than the specified field access width. 12817 12818Completed fixes for LoadTable() and Unload() and verified their 12819operation. Implemented full support for the "DdbHandle" object 12820throughout the ACPI CA subsystem. 12821 12822Implemented full support for the MADT and ECDT tables in the ACPI 12823CA header files. Even though these tables are not directly 12824consumed by ACPI CA, the header definitions are useful for ACPI 12825device drivers. 12826 12827Integrated resource descriptor fixes posted to the Linux ACPI 12828list. This included checks for minimum descriptor length, and 12829support for trailing NULL strings within descriptors that have 12830optional string elements. 12831 12832Code and Data Size: Current and previous core subsystem library 12833sizes are shown below. These are the code and data sizes for the 12834acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12835these values do not include any ACPI driver or OSPM code. The 12836debug version of the code includes the debug output trace 12837mechanism and has a much larger code and data size. Note that 12838these values will vary depending on the efficiency of the compiler 12839and the compiler options used during generation. 12840 12841 Previous Release (20030918): 12842 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12843 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12844 Current Release: 12845 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 12846 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 12847 12848 128492) iASL Compiler: 12850 12851Implemented detection of non-ASCII characters within the input 12852source ASL file. This catches attempts to compile binary (AML) 12853files early in the compile, with an informative error message. 12854 12855Fixed a problem where the disassembler would fault if the output 12856filename could not be generated or if the output file could not be 12857opened. 12858 12859---------------------------------------- 1286018 September 2003. Summary of changes for version 20030918: 12861 12862 128631) ACPI CA Core Subsystem: 12864 12865Found and fixed a longstanding problem with the late execution of 12866the various deferred AML opcodes (such as Operation Regions, 12867Buffer Fields, Buffers, and Packages). If the name string 12868specified for the name of the new object placed the object in a 12869scope other than the current scope, the initialization/execution 12870of the opcode failed. The solution to this problem was to 12871implement a mechanism where the late execution of such opcodes 12872does not attempt to lookup/create the name a second time in an 12873incorrect scope. This fixes the "region size computed 12874incorrectly" problem. 12875 12876Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 12877Global Lock AE_BAD_PARAMETER error. 12878 12879Fixed several 64-bit issues with prototypes, casting and data 12880types. 12881 12882Removed duplicate prototype from acdisasm.h 12883 12884Fixed an issue involving EC Operation Region Detach (Shaohua Li) 12885 12886Code and Data Size: Current and previous core subsystem library 12887sizes are shown below. These are the code and data sizes for the 12888acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12889these values do not include any ACPI driver or OSPM code. The 12890debug version of the code includes the debug output trace 12891mechanism and has a much larger code and data size. Note that 12892these values will vary depending on the efficiency of the compiler 12893and the compiler options used during generation. 12894 12895 Previous Release: 12896 12897 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 12898 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 12899 Current Release: 12900 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12901 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12902 12903 129042) Linux: 12905 12906Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 12907correct sleep time in seconds. 12908 12909---------------------------------------- 1291014 July 2003. Summary of changes for version 20030619: 12911 129121) ACPI CA Core Subsystem: 12913 12914Parse SSDTs in order discovered, as opposed to reverse order 12915(Hrvoje Habjanic) 12916 12917Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 12918Klausner, 12919 Nate Lawson) 12920 12921 129222) Linux: 12923 12924Dynamically allocate SDT list (suggested by Andi Kleen) 12925 12926proc function return value cleanups (Andi Kleen) 12927 12928Correctly handle NMI watchdog during long stalls (Andrew Morton) 12929 12930Make it so acpismp=force works (reported by Andrew Morton) 12931 12932 12933---------------------------------------- 1293419 June 2003. Summary of changes for version 20030619: 12935 129361) ACPI CA Core Subsystem: 12937 12938Fix To/FromBCD, eliminating the need for an arch-specific #define. 12939 12940Do not acquire a semaphore in the S5 shutdown path. 12941 12942Fix ex_digits_needed for 0. (Takayoshi Kochi) 12943 12944Fix sleep/stall code reversal. (Andi Kleen) 12945 12946Revert a change having to do with control method calling 12947semantics. 12948 129492) Linux: 12950 12951acpiphp update (Takayoshi Kochi) 12952 12953Export acpi_disabled for sonypi (Stelian Pop) 12954 12955Mention acpismp=force in config help 12956 12957Re-add acpitable.c and acpismp=force. This improves backwards 12958 12959compatibility and also cleans up the code to a significant degree. 12960 12961Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 12962 12963---------------------------------------- 1296422 May 2003. Summary of changes for version 20030522: 12965 129661) ACPI CA Core Subsystem: 12967 12968Found and fixed a reported problem where an AE_NOT_FOUND error 12969occurred occasionally during _BST evaluation. This turned out to 12970be an Owner ID allocation issue where a called method did not get 12971a new ID assigned to it. Eventually, (after 64k calls), the Owner 12972ID UINT16 would wraparound so that the ID would be the same as the 12973caller's and the called method would delete the caller's 12974namespace. 12975 12976Implemented extended error reporting for control methods that are 12977aborted due to a run-time exception. Output includes the exact 12978AML instruction that caused the method abort, a dump of the method 12979locals and arguments at the time of the abort, and a trace of all 12980nested control method calls. 12981 12982Modified the interpreter to allow the creation of buffers of zero 12983length from the AML code. Implemented new code to ensure that no 12984attempt is made to actually allocate a memory buffer (of length 12985zero) - instead, a simple buffer object with a NULL buffer pointer 12986and length zero is created. A warning is no longer issued when 12987the AML attempts to create a zero-length buffer. 12988 12989Implemented a workaround for the "leading asterisk issue" in 12990_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 12991asterisk is automatically removed if present in any HID, UID, or 12992CID strings. The iASL compiler will still flag this asterisk as 12993an error, however. 12994 12995Implemented full support for _CID methods that return a package of 12996multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 12997now additionally returns a device _CID list if present. This 12998required a change to the external interface in order to pass an 12999ACPI_BUFFER object as a parameter since the _CID list is of 13000variable length. 13001 13002Fixed a problem with the new AE_SAME_HANDLER exception where 13003handler initialization code did not know about this exception. 13004 13005Code and Data Size: Current and previous core subsystem library 13006sizes are shown below. These are the code and data sizes for the 13007acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13008these values do not include any ACPI driver or OSPM code. The 13009debug version of the code includes the debug output trace 13010mechanism and has a much larger code and data size. Note that 13011these values will vary depending on the efficiency of the compiler 13012and the compiler options used during generation. 13013 13014 Previous Release (20030509): 13015 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 13016 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 13017 Current Release: 13018 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 13019 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 13020 13021 130222) Linux: 13023 13024Fixed a bug in which we would reinitialize the ACPI interrupt 13025after it was already working, thus disabling all ACPI and the IRQs 13026for any other device sharing the interrupt. (Thanks to Stian 13027Jordet) 13028 13029Toshiba driver update (John Belmonte) 13030 13031Return only 0 or 1 for our interrupt handler status (Andrew 13032Morton) 13033 13034 130353) iASL Compiler: 13036 13037Fixed a reported problem where multiple (nested) ElseIf() 13038statements were not handled correctly by the compiler, resulting 13039in incorrect warnings and incorrect AML code. This was a problem 13040in both the ASL parser and the code generator. 13041 13042 130434) Documentation: 13044 13045Added changes to existing interfaces, new exception codes, and new 13046text concerning reference count object management versus garbage 13047collection. 13048 13049---------------------------------------- 1305009 May 2003. Summary of changes for version 20030509. 13051 13052 130531) ACPI CA Core Subsystem: 13054 13055Changed the subsystem initialization sequence to hold off 13056installation of address space handlers until the hardware has been 13057initialized and the system has entered ACPI mode. This is because 13058the installation of space handlers can cause _REG methods to be 13059run. Previously, the _REG methods could potentially be run before 13060ACPI mode was enabled. 13061 13062Fixed some memory leak issues related to address space handler and 13063notify handler installation. There were some problems with the 13064reference count mechanism caused by the fact that the handler 13065objects are shared across several namespace objects. 13066 13067Fixed a reported problem where reference counts within the 13068namespace were not properly updated when named objects created by 13069method execution were deleted. 13070 13071Fixed a reported problem where multiple SSDTs caused a deletion 13072issue during subsystem termination. Restructured the table data 13073structures to simplify the linked lists and the related code. 13074 13075Fixed a problem where the table ID associated with secondary 13076tables (SSDTs) was not being propagated into the namespace objects 13077created by those tables. This would only present a problem for 13078tables that are unloaded at run-time, however. 13079 13080Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 13081type as the length parameter (instead of UINT32). 13082 13083Solved a long-standing problem where an ALREADY_EXISTS error 13084appears on various systems. This problem could happen when there 13085are multiple PCI_Config operation regions under a single PCI root 13086bus. This doesn't happen very frequently, but there are some 13087systems that do this in the ASL. 13088 13089Fixed a reported problem where the internal DeleteNode function 13090was incorrectly handling the case where a namespace node was the 13091first in the parent's child list, and had additional peers (not 13092the only child, but first in the list of children.) 13093 13094Code and Data Size: Current core subsystem library sizes are shown 13095below. These are the code and data sizes for the acpica.lib 13096produced by the Microsoft Visual C++ 6.0 compiler, and these 13097values do not include any ACPI driver or OSPM code. The debug 13098version of the code includes the debug output trace mechanism and 13099has a much larger code and data size. Note that these values will 13100vary depending on the efficiency of the compiler and the compiler 13101options used during generation. 13102 13103 Previous Release 13104 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13105 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13106 Current Release: 13107 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 13108 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 13109 13110 131112) Linux: 13112 13113Allow ":" in OS override string (Ducrot Bruno) 13114 13115Kobject fix (Greg KH) 13116 13117 131183 iASL Compiler/Disassembler: 13119 13120Fixed a problem in the generation of the C source code files (AML 13121is emitted in C source statements for BIOS inclusion) where the 13122Ascii dump that appears within a C comment at the end of each line 13123could cause a compile time error if the AML sequence happens to 13124have an open comment or close comment sequence embedded. 13125 13126 13127---------------------------------------- 1312824 April 2003. Summary of changes for version 20030424. 13129 13130 131311) ACPI CA Core Subsystem: 13132 13133Support for big-endian systems has been implemented. Most of the 13134support has been invisibly added behind big-endian versions of the 13135ACPI_MOVE_* macros. 13136 13137Fixed a problem in AcpiHwDisableGpeBlock() and 13138AcpiHwClearGpeBlock() where an incorrect offset was passed to the 13139low level hardware write routine. The offset parameter was 13140actually eliminated from the low level read/write routines because 13141they had become obsolete. 13142 13143Fixed a problem where a handler object was deleted twice during 13144the removal of a fixed event handler. 13145 13146 131472) Linux: 13148 13149A fix for SMP systems with link devices was contributed by 13150 13151Compaq's Dan Zink. 13152 13153(2.5) Return whether we handled the interrupt in our IRQ handler. 13154(Linux ISRs no longer return void, so we can propagate the handler 13155return value from the ACPI CA core back to the OS.) 13156 13157 13158 131593) Documentation: 13160 13161The ACPI CA Programmer Reference has been updated to reflect new 13162interfaces and changes to existing interfaces. 13163 13164---------------------------------------- 1316528 March 2003. Summary of changes for version 20030328. 13166 131671) ACPI CA Core Subsystem: 13168 13169The GPE Block Device support has been completed. New interfaces 13170are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 13171interfaces (enable, disable, clear, getstatus) have been split 13172into separate interfaces for Fixed Events and General Purpose 13173Events (GPEs) in order to support GPE Block Devices properly. 13174 13175Fixed a problem where the error message "Failed to acquire 13176semaphore" would appear during operations on the embedded 13177controller (EC). 13178 13179Code and Data Size: Current core subsystem library sizes are shown 13180below. These are the code and data sizes for the acpica.lib 13181produced by the Microsoft Visual C++ 6.0 compiler, and these 13182values do not include any ACPI driver or OSPM code. The debug 13183version of the code includes the debug output trace mechanism and 13184has a much larger code and data size. Note that these values will 13185vary depending on the efficiency of the compiler and the compiler 13186options used during generation. 13187 13188 Previous Release 13189 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13190 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13191 Current Release: 13192 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13193 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13194 13195 13196---------------------------------------- 1319728 February 2003. Summary of changes for version 20030228. 13198 13199 132001) ACPI CA Core Subsystem: 13201 13202The GPE handling and dispatch code has been completely overhauled 13203in preparation for support of GPE Block Devices (ID ACPI0006). 13204This affects internal data structures and code only; there should 13205be no differences visible externally. One new file has been 13206added, evgpeblk.c 13207 13208The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 13209fields that are used to determine the GPE block lengths. The 13210REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 13211structures are ignored. This is per the ACPI specification but it 13212isn't very clear. The full 256 Block 0/1 GPEs are now supported 13213(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 13214 13215In the SCI interrupt handler, removed the read of the PM1_CONTROL 13216register to look at the SCI_EN bit. On some machines, this read 13217causes an SMI event and greatly slows down SCI events. (This may 13218in fact be the cause of slow battery status response on some 13219systems.) 13220 13221Fixed a problem where a store of a NULL string to a package object 13222could cause the premature deletion of the object. This was seen 13223during execution of the battery _BIF method on some systems, 13224resulting in no battery data being returned. 13225 13226Added AcpiWalkResources interface to simplify parsing of resource 13227lists. 13228 13229Code and Data Size: Current core subsystem library sizes are shown 13230below. These are the code and data sizes for the acpica.lib 13231produced by the Microsoft Visual C++ 6.0 compiler, and these 13232values do not include any ACPI driver or OSPM code. The debug 13233version of the code includes the debug output trace mechanism and 13234has a much larger code and data size. Note that these values will 13235vary depending on the efficiency of the compiler and the compiler 13236options used during generation. 13237 13238 Previous Release 13239 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13240 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13241 Current Release: 13242 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13243 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13244 13245 132462) Linux 13247 13248S3 fixes (Ole Rohne) 13249 13250Update ACPI PHP driver with to use new acpi_walk_resource API 13251(Bjorn Helgaas) 13252 13253Add S4BIOS support (Pavel Machek) 13254 13255Map in entire table before performing checksum (John Stultz) 13256 13257Expand the mem= cmdline to allow the specification of reserved and 13258ACPI DATA blocks (Pavel Machek) 13259 13260Never use ACPI on VISWS 13261 13262Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 13263 13264Revert a change that allowed P_BLK lengths to be 4 or 5. This is 13265causing us to think that some systems support C2 when they really 13266don't. 13267 13268Do not count processor objects for non-present CPUs (Thanks to 13269Dominik Brodowski) 13270 13271 132723) iASL Compiler: 13273 13274Fixed a problem where ASL include files could not be found and 13275opened. 13276 13277Added support for the _PDC reserved name. 13278 13279 13280---------------------------------------- 1328122 January 2003. Summary of changes for version 20030122. 13282 13283 132841) ACPI CA Core Subsystem: 13285 13286Added a check for constructs of the form: Store (Local0, Local0) 13287where Local0 is not initialized. Apparently, some BIOS 13288programmers believe that this is a NOOP. Since this store doesn't 13289do anything anyway, the new prototype behavior will ignore this 13290error. This is a case where we can relax the strict checking in 13291the interpreter in the name of compatibility. 13292 13293 132942) Linux 13295 13296The AcpiSrc Source Conversion Utility has been released with the 13297Linux package for the first time. This is the utility that is 13298used to convert the ACPI CA base source code to the Linux version. 13299 13300(Both) Handle P_BLK lengths shorter than 6 more gracefully 13301 13302(Both) Move more headers to include/acpi, and delete an unused 13303header. 13304 13305(Both) Move drivers/acpi/include directory to include/acpi 13306 13307(Both) Boot functions don't use cmdline, so don't pass it around 13308 13309(Both) Remove include of unused header (Adrian Bunk) 13310 13311(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 13312the 13313former now also includes the latter, acpiphp.h only needs the one, 13314now. 13315 13316(2.5) Make it possible to select method of bios restoring after S3 13317resume. [=> no more ugly ifdefs] (Pavel Machek) 13318 13319(2.5) Make proc write interfaces work (Pavel Machek) 13320 13321(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 13322 13323(2.5) Break out ACPI Perf code into its own module, under cpufreq 13324(Dominik Brodowski) 13325 13326(2.4) S4BIOS support (Ducrot Bruno) 13327 13328(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 13329Visinoni) 13330 13331 133323) iASL Compiler: 13333 13334Added support to disassemble SSDT and PSDTs. 13335 13336Implemented support to obtain SSDTs from the Windows registry if 13337available. 13338 13339 13340---------------------------------------- 1334109 January 2003. Summary of changes for version 20030109. 13342 133431) ACPI CA Core Subsystem: 13344 13345Changed the behavior of the internal Buffer-to-String conversion 13346function. The current ACPI specification states that the contents 13347of the buffer are "converted to a string of two-character 13348hexadecimal numbers, each separated by a space". Unfortunately, 13349this definition is not backwards compatible with existing ACPI 1.0 13350implementations (although the behavior was not defined in the ACPI 133511.0 specification). The new behavior simply copies data from the 13352buffer to the string until a null character is found or the end of 13353the buffer is reached. The new String object is always null 13354terminated. This problem was seen during the generation of _BIF 13355battery data where incorrect strings were returned for battery 13356type, etc. This will also require an errata to the ACPI 13357specification. 13358 13359Renamed all instances of NATIVE_UINT and NATIVE_INT to 13360ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 13361 13362Copyright in all module headers (both Linux and non-Linux) has be 13363updated to 2003. 13364 13365Code and Data Size: Current core subsystem library sizes are shown 13366below. These are the code and data sizes for the acpica.lib 13367produced by the Microsoft Visual C++ 6.0 compiler, and these 13368values do not include any ACPI driver or OSPM code. The debug 13369version of the code includes the debug output trace mechanism and 13370has a much larger code and data size. Note that these values will 13371vary depending on the efficiency of the compiler and the compiler 13372options used during generation. 13373 13374 Previous Release 13375 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13376 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13377 Current Release: 13378 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13379 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13380 13381 133822) Linux 13383 13384Fixed an oops on module insertion/removal (Matthew Tippett) 13385 13386(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 13387 13388(2.5) Replace pr_debug (Randy Dunlap) 13389 13390(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 13391 13392(Both) Eliminate spawning of thread from timer callback, in favor 13393of schedule_work() 13394 13395(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 13396 13397(Both) Added define for Fixed Function HW region (Matthew Wilcox) 13398 13399(Both) Add missing statics to button.c (Pavel Machek) 13400 13401Several changes have been made to the source code translation 13402utility that generates the Linux Code in order to make the code 13403more "Linux-like": 13404 13405All typedefs on structs and unions have been removed in keeping 13406with the Linux coding style. 13407 13408Removed the non-Linux SourceSafe module revision number from each 13409module header. 13410 13411Completed major overhaul of symbols to be lowercased for linux. 13412Doubled the number of symbols that are lowercased. 13413 13414Fixed a problem where identifiers within procedure headers and 13415within quotes were not fully lower cased (they were left with a 13416starting capital.) 13417 13418Some C macros whose only purpose is to allow the generation of 16- 13419bit code are now completely removed in the Linux code, increasing 13420readability and maintainability. 13421 13422---------------------------------------- 13423 1342412 December 2002. Summary of changes for version 20021212. 13425 13426 134271) ACPI CA Core Subsystem: 13428 13429Fixed a problem where the creation of a zero-length AML Buffer 13430would cause a fault. 13431 13432Fixed a problem where a Buffer object that pointed to a static AML 13433buffer (in an ACPI table) could inadvertently be deleted, causing 13434memory corruption. 13435 13436Fixed a problem where a user buffer (passed in to the external 13437ACPI CA interfaces) could be overwritten if the buffer was too 13438small to complete the operation, causing memory corruption. 13439 13440Fixed a problem in the Buffer-to-String conversion code where a 13441string of length one was always returned, regardless of the size 13442of the input Buffer object. 13443 13444Removed the NATIVE_CHAR data type across the entire source due to 13445lack of need and lack of consistent use. 13446 13447Code and Data Size: Current core subsystem library sizes are shown 13448below. These are the code and data sizes for the acpica.lib 13449produced by the Microsoft Visual C++ 6.0 compiler, and these 13450values do not include any ACPI driver or OSPM code. The debug 13451version of the code includes the debug output trace mechanism and 13452has a much larger code and data size. Note that these values will 13453vary depending on the efficiency of the compiler and the compiler 13454options used during generation. 13455 13456 Previous Release 13457 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13458 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13459 Current Release: 13460 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13461 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13462 13463 13464---------------------------------------- 1346505 December 2002. Summary of changes for version 20021205. 13466 134671) ACPI CA Core Subsystem: 13468 13469Fixed a problem where a store to a String or Buffer object could 13470cause corruption of the DSDT if the object type being stored was 13471the same as the target object type and the length of the object 13472being stored was equal to or smaller than the original (existing) 13473target object. This was seen to cause corruption of battery _BIF 13474buffers if the _BIF method modified the buffer on the fly. 13475 13476Fixed a problem where an internal error was generated if a control 13477method invocation was used in an OperationRegion, Buffer, or 13478Package declaration. This was caused by the deferred parsing of 13479the control method and thus the deferred creation of the internal 13480method object. The solution to this problem was to create the 13481internal method object at the moment the method is encountered in 13482the first pass - so that subsequent references to the method will 13483able to obtain the required parameter count and thus properly 13484parse the method invocation. This problem presented itself as an 13485AE_AML_INTERNAL during the pass 1 parse phase during table load. 13486 13487Fixed a problem where the internal String object copy routine did 13488not always allocate sufficient memory for the target String object 13489and caused memory corruption. This problem was seen to cause 13490"Allocation already present in list!" errors as memory allocation 13491became corrupted. 13492 13493Implemented a new function for the evaluation of namespace objects 13494that allows the specification of the allowable return object 13495types. This simplifies a lot of code that checks for a return 13496object of one or more specific objects returned from the 13497evaluation (such as _STA, etc.) This may become and external 13498function if it would be useful to ACPI-related drivers. 13499 13500Completed another round of prefixing #defines with "ACPI_" for 13501clarity. 13502 13503Completed additional code restructuring to allow more modular 13504linking for iASL compiler and AcpiExec. Several files were split 13505creating new files. New files: nsparse.c dsinit.c evgpe.c 13506 13507Implemented an abort mechanism to terminate an executing control 13508method via the AML debugger. This feature is useful for debugging 13509control methods that depend (wait) for specific hardware 13510responses. 13511 13512Code and Data Size: Current core subsystem library sizes are shown 13513below. These are the code and data sizes for the acpica.lib 13514produced by the Microsoft Visual C++ 6.0 compiler, and these 13515values do not include any ACPI driver or OSPM code. The debug 13516version of the code includes the debug output trace mechanism and 13517has a much larger code and data size. Note that these values will 13518vary depending on the efficiency of the compiler and the compiler 13519options used during generation. 13520 13521 Previous Release 13522 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13523 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13524 Current Release: 13525 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13526 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13527 13528 135292) iASL Compiler/Disassembler 13530 13531Fixed a compiler code generation problem for "Interrupt" Resource 13532Descriptors. If specified in the ASL, the optional "Resource 13533Source Index" and "Resource Source" fields were not inserted into 13534the correct location within the AML resource descriptor, creating 13535an invalid descriptor. 13536 13537Fixed a disassembler problem for "Interrupt" resource descriptors. 13538The optional "Resource Source Index" and "Resource Source" fields 13539were ignored. 13540 13541 13542---------------------------------------- 1354322 November 2002. Summary of changes for version 20021122. 13544 13545 135461) ACPI CA Core Subsystem: 13547 13548Fixed a reported problem where an object stored to a Method Local 13549or Arg was not copied to a new object during the store - the 13550object pointer was simply copied to the Local/Arg. This caused 13551all subsequent operations on the Local/Arg to also affect the 13552original source of the store operation. 13553 13554Fixed a problem where a store operation to a Method Local or Arg 13555was not completed properly if the Local/Arg contained a reference 13556(from RefOf) to a named field. The general-purpose store-to- 13557namespace-node code is now used so that this case is handled 13558automatically. 13559 13560Fixed a problem where the internal object copy routine would cause 13561a protection fault if the object being copied was a Package and 13562contained either 1) a NULL package element or 2) a nested sub- 13563package. 13564 13565Fixed a problem with the GPE initialization that resulted from an 13566ambiguity in the ACPI specification. One section of the 13567specification states that both the address and length of the GPE 13568block must be zero if the block is not supported. Another section 13569implies that only the address need be zero if the block is not 13570supported. The code has been changed so that both the address and 13571the length must be non-zero to indicate a valid GPE block (i.e., 13572if either the address or the length is zero, the GPE block is 13573invalid.) 13574 13575Code and Data Size: Current core subsystem library sizes are shown 13576below. These are the code and data sizes for the acpica.lib 13577produced by the Microsoft Visual C++ 6.0 compiler, and these 13578values do not include any ACPI driver or OSPM code. The debug 13579version of the code includes the debug output trace mechanism and 13580has a much larger code and data size. Note that these values will 13581vary depending on the efficiency of the compiler and the compiler 13582options used during generation. 13583 13584 Previous Release 13585 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13586 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13587 Current Release: 13588 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13589 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13590 13591 135922) Linux 13593 13594Cleaned up EC driver. Exported an external EC read/write 13595interface. By going through this, other drivers (most notably 13596sonypi) will be able to serialize access to the EC. 13597 13598 135993) iASL Compiler/Disassembler 13600 13601Implemented support to optionally generate include files for both 13602ASM and C (the -i switch). This simplifies BIOS development by 13603automatically creating include files that contain external 13604declarations for the symbols that are created within the 13605 13606(optionally generated) ASM and C AML source files. 13607 13608 13609---------------------------------------- 1361015 November 2002. Summary of changes for version 20021115. 13611 136121) ACPI CA Core Subsystem: 13613 13614Fixed a memory leak problem where an error during resolution of 13615 13616method arguments during a method invocation from another method 13617failed to cleanup properly by deleting all successfully resolved 13618argument objects. 13619 13620Fixed a problem where the target of the Index() operator was not 13621correctly constructed if the source object was a package. This 13622problem has not been detected because the use of a target operand 13623with Index() is very rare. 13624 13625Fixed a problem with the Index() operator where an attempt was 13626made to delete the operand objects twice. 13627 13628Fixed a problem where an attempt was made to delete an operand 13629twice during execution of the CondRefOf() operator if the target 13630did not exist. 13631 13632Implemented the first of perhaps several internal create object 13633functions that create and initialize a specific object type. This 13634consolidates duplicated code wherever the object is created, thus 13635shrinking the size of the subsystem. 13636 13637Implemented improved debug/error messages for errors that occur 13638during nested method invocations. All executing method pathnames 13639are displayed (with the error) as the call stack is unwound - thus 13640simplifying debug. 13641 13642Fixed a problem introduced in the 10/02 release that caused 13643premature deletion of a buffer object if a buffer was used as an 13644ASL operand where an integer operand is required (Thus causing an 13645implicit object conversion from Buffer to Integer.) The change in 13646the 10/02 release was attempting to fix a memory leak (albeit 13647incorrectly.) 13648 13649Code and Data Size: Current core subsystem library sizes are shown 13650below. These are the code and data sizes for the acpica.lib 13651produced by the Microsoft Visual C++ 6.0 compiler, and these 13652values do not include any ACPI driver or OSPM code. The debug 13653version of the code includes the debug output trace mechanism and 13654has a much larger code and data size. Note that these values will 13655vary depending on the efficiency of the compiler and the compiler 13656options used during generation. 13657 13658 Previous Release 13659 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 13660 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 13661 Current Release: 13662 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13663 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13664 13665 136662) Linux 13667 13668Changed the implementation of the ACPI semaphores to use down() 13669instead of down_interruptable(). It is important that the 13670execution of ACPI control methods not be interrupted by signals. 13671Methods must run to completion, or the system may be left in an 13672unknown/unstable state. 13673 13674Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 13675(Shawn Starr) 13676 13677 136783) iASL Compiler/Disassembler 13679 13680 13681Changed the default location of output files. All output files 13682are now placed in the current directory by default instead of in 13683the directory of the source file. This change may affect some 13684existing makefiles, but it brings the behavior of the compiler in 13685line with other similar tools. The location of the output files 13686can be overridden with the -p command line switch. 13687 13688 13689---------------------------------------- 1369011 November 2002. Summary of changes for version 20021111. 13691 13692 136930) ACPI Specification 2.0B is released and is now available at: 13694http://www.acpi.info/index.html 13695 13696 136971) ACPI CA Core Subsystem: 13698 13699Implemented support for the ACPI 2.0 SMBus Operation Regions. 13700This includes the early detection and handoff of the request to 13701the SMBus region handler (avoiding all of the complex field 13702support code), and support for the bidirectional return packet 13703from an SMBus write operation. This paves the way for the 13704development of SMBus drivers in each host operating system. 13705 13706Fixed a problem where the semaphore WAIT_FOREVER constant was 13707defined as 32 bits, but must be 16 bits according to the ACPI 13708specification. This had the side effect of causing ASL 13709Mutex/Event timeouts even though the ASL code requested a wait 13710forever. Changed all internal references to the ACPI timeout 13711parameter to 16 bits to prevent future problems. Changed the name 13712of WAIT_FOREVER to ACPI_WAIT_FOREVER. 13713 13714Code and Data Size: Current core subsystem library sizes are shown 13715below. These are the code and data sizes for the acpica.lib 13716produced by the Microsoft Visual C++ 6.0 compiler, and these 13717values do not include any ACPI driver or OSPM code. The debug 13718version of the code includes the debug output trace mechanism and 13719has a much larger code and data size. Note that these values will 13720vary depending on the efficiency of the compiler and the compiler 13721options used during generation. 13722 13723 Previous Release 13724 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13725 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 13726 Current Release: 13727 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 13728 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 13729 13730 137312) Linux 13732 13733Module loading/unloading fixes (John Cagle) 13734 13735 137363) iASL Compiler/Disassembler 13737 13738Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 13739 13740Implemented support for the disassembly of all SMBus protocol 13741keywords (SMBQuick, SMBWord, etc.) 13742 13743---------------------------------------- 1374401 November 2002. Summary of changes for version 20021101. 13745 13746 137471) ACPI CA Core Subsystem: 13748 13749Fixed a problem where platforms that have a GPE1 block but no GPE0 13750block were not handled correctly. This resulted in a "GPE 13751overlap" error message. GPE0 is no longer required. 13752 13753Removed code added in the previous release that inserted nodes 13754into the namespace in alphabetical order. This caused some side- 13755effects on various machines. The root cause of the problem is 13756still under investigation since in theory, the internal ordering 13757of the namespace nodes should not matter. 13758 13759 13760Enhanced error reporting for the case where a named object is not 13761found during control method execution. The full ACPI namepath 13762(name reference) of the object that was not found is displayed in 13763this case. 13764 13765Note: as a result of the overhaul of the namespace object types in 13766the previous release, the namespace nodes for the predefined 13767scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 13768instead of ACPI_TYPE_ANY. This simplifies the namespace 13769management code but may affect code that walks the namespace tree 13770looking for specific object types. 13771 13772Code and Data Size: Current core subsystem library sizes are shown 13773below. These are the code and data sizes for the acpica.lib 13774produced by the Microsoft Visual C++ 6.0 compiler, and these 13775values do not include any ACPI driver or OSPM code. The debug 13776version of the code includes the debug output trace mechanism and 13777has a much larger code and data size. Note that these values will 13778vary depending on the efficiency of the compiler and the compiler 13779options used during generation. 13780 13781 Previous Release 13782 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 13783 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 13784 Current Release: 13785 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13786 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 13787 13788 137892) Linux 13790 13791Fixed a problem introduced in the previous release where the 13792Processor and Thermal objects were not recognized and installed in 13793/proc. This was related to the scope type change described above. 13794 13795 137963) iASL Compiler/Disassembler 13797 13798Implemented the -g option to get all of the required ACPI tables 13799from the registry and save them to files (Windows version of the 13800compiler only.) The required tables are the FADT, FACS, and DSDT. 13801 13802Added ACPI table checksum validation during table disassembly in 13803order to catch corrupted tables. 13804 13805 13806---------------------------------------- 1380722 October 2002. Summary of changes for version 20021022. 13808 138091) ACPI CA Core Subsystem: 13810 13811Implemented a restriction on the Scope operator that the target 13812must already exist in the namespace at the time the operator is 13813encountered (during table load or method execution). In other 13814words, forward references are not allowed and Scope() cannot 13815create a new object. This changes the previous behavior where the 13816interpreter would create the name if not found. This new behavior 13817correctly enables the search-to-root algorithm during namespace 13818lookup of the target name. Because of this upsearch, this fixes 13819the known Compaq _SB_.OKEC problem and makes both the AML 13820interpreter and iASL compiler compatible with other ACPI 13821implementations. 13822 13823Completed a major overhaul of the internal ACPI object types for 13824the ACPI Namespace and the associated operand objects. Many of 13825these types had become obsolete with the introduction of the two- 13826pass namespace load. This cleanup simplifies the code and makes 13827the entire namespace load mechanism much clearer and easier to 13828understand. 13829 13830Improved debug output for tracking scope opening/closing to help 13831diagnose scoping issues. The old scope name as well as the new 13832scope name are displayed. Also improved error messages for 13833problems with ASL Mutex objects and error messages for GPE 13834problems. 13835 13836Cleaned up the namespace dump code, removed obsolete code. 13837 13838All string output (for all namespace/object dumps) now uses the 13839common ACPI string output procedure which handles escapes properly 13840and does not emit non-printable characters. 13841 13842Fixed some issues with constants in the 64-bit version of the 13843local C library (utclib.c) 13844 13845 138462) Linux 13847 13848EC Driver: No longer attempts to acquire the Global Lock at 13849interrupt level. 13850 13851 138523) iASL Compiler/Disassembler 13853 13854Implemented ACPI 2.0B grammar change that disallows all Type 1 and 138552 opcodes outside of a control method. This means that the 13856"executable" operators (versus the "namespace" operators) cannot 13857be used at the table level; they can only be used within a control 13858method. 13859 13860Implemented the restriction on the Scope() operator where the 13861target must already exist in the namespace at the time the 13862operator is encountered (during ASL compilation). In other words, 13863forward references are not allowed and Scope() cannot create a new 13864object. This makes the iASL compiler compatible with other ACPI 13865implementations and makes the Scope() implementation adhere to the 13866ACPI specification. 13867 13868Fixed a problem where namepath optimization for the Alias operator 13869was optimizing the wrong path (of the two namepaths.) This caused 13870a "Missing alias link" error message. 13871 13872Fixed a problem where an "unknown reserved name" warning could be 13873incorrectly generated for names like "_SB" when the trailing 13874underscore is not used in the original ASL. 13875 13876Fixed a problem where the reserved name check did not handle 13877NamePaths with multiple NameSegs correctly. The first nameseg of 13878the NamePath was examined instead of the last NameSeg. 13879 13880 13881---------------------------------------- 13882 1388302 October 2002. Summary of changes for this release. 13884 13885 138861) ACPI CA Core Subsystem version 20021002: 13887 13888Fixed a problem where a store/copy of a string to an existing 13889string did not always set the string length properly in the String 13890object. 13891 13892Fixed a reported problem with the ToString operator where the 13893behavior was identical to the ToHexString operator instead of just 13894simply converting a raw buffer to a string data type. 13895 13896Fixed a problem where CopyObject and the other "explicit" 13897conversion operators were not updating the internal namespace node 13898type as part of the store operation. 13899 13900Fixed a memory leak during implicit source operand conversion 13901where the original object was not deleted if it was converted to a 13902new object of a different type. 13903 13904Enhanced error messages for all problems associated with namespace 13905lookups. Common procedure generates and prints the lookup name as 13906well as the formatted status. 13907 13908Completed implementation of a new design for the Alias support 13909within the namespace. The existing design did not handle the case 13910where a new object was assigned to one of the two names due to the 13911use of an explicit conversion operator, resulting in the two names 13912pointing to two different objects. The new design simply points 13913the Alias name to the original name node - not to the object. 13914This results in a level of indirection that must be handled in the 13915name resolution mechanism. 13916 13917Code and Data Size: Current core subsystem library sizes are shown 13918below. These are the code and data sizes for the acpica.lib 13919produced by the Microsoft Visual C++ 6.0 compiler, and these 13920values do not include any ACPI driver or OSPM code. The debug 13921version of the code includes the debug output trace mechanism and 13922has a larger code and data size. Note that these values will vary 13923depending on the efficiency of the compiler and the compiler 13924options used during generation. 13925 13926 Previous Release 13927 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13928 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13929 Current Release: 13930 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 13931 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 13932 13933 139342) Linux 13935 13936Initialize thermal driver's timer before it is used. (Knut 13937Neumann) 13938 13939Allow handling negative celsius values. (Kochi Takayoshi) 13940 13941Fix thermal management and make trip points. R/W (Pavel Machek) 13942 13943Fix /proc/acpi/sleep. (P. Christeas) 13944 13945IA64 fixes. (David Mosberger) 13946 13947Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 13948 13949Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 13950Brodowski) 13951 13952 139533) iASL Compiler/Disassembler 13954 13955Clarified some warning/error messages. 13956 13957 13958---------------------------------------- 1395918 September 2002. Summary of changes for this release. 13960 13961 139621) ACPI CA Core Subsystem version 20020918: 13963 13964Fixed a reported problem with reference chaining (via the Index() 13965and RefOf() operators) in the ObjectType() and SizeOf() operators. 13966The definition of these operators includes the dereferencing of 13967all chained references to return information on the base object. 13968 13969Fixed a problem with stores to indexed package elements - the 13970existing code would not complete the store if an "implicit 13971conversion" was not performed. In other words, if the existing 13972object (package element) was to be replaced completely, the code 13973didn't handle this case. 13974 13975Relaxed typechecking on the ASL "Scope" operator to allow the 13976target name to refer to an object of type Integer, String, or 13977Buffer, in addition to the scoping object types (Device, 13978predefined Scopes, Processor, PowerResource, and ThermalZone.) 13979This allows existing AML code that has workarounds for a bug in 13980Windows to function properly. A warning is issued, however. This 13981affects both the AML interpreter and the iASL compiler. Below is 13982an example of this type of ASL code: 13983 13984 Name(DEB,0x00) 13985 Scope(DEB) 13986 { 13987 13988Fixed some reported problems with 64-bit integer support in the 13989local implementation of C library functions (clib.c) 13990 13991 139922) Linux 13993 13994Use ACPI fix map region instead of IOAPIC region, since it is 13995undefined in non-SMP. 13996 13997Ensure that the SCI has the proper polarity and trigger, even on 13998systems that do not have an interrupt override entry in the MADT. 13999 140002.5 big driver reorganization (Pat Mochel) 14001 14002Use early table mapping code from acpitable.c (Andi Kleen) 14003 14004New blacklist entries (Andi Kleen) 14005 14006Blacklist improvements. Split blacklist code out into a separate 14007file. Move checking the blacklist to very early. Previously, we 14008would use ACPI tables, and then halfway through init, check the 14009blacklist -- too late. Now, it's early enough to completely fall- 14010back to non-ACPI. 14011 14012 140133) iASL Compiler/Disassembler version 20020918: 14014 14015Fixed a problem where the typechecking code didn't know that an 14016alias could point to a method. In other words, aliases were not 14017being dereferenced during typechecking. 14018 14019 14020---------------------------------------- 1402129 August 2002. Summary of changes for this release. 14022 140231) ACPI CA Core Subsystem Version 20020829: 14024 14025If the target of a Scope() operator already exists, it must be an 14026object type that actually opens a scope -- such as a Device, 14027Method, Scope, etc. This is a fatal runtime error. Similar error 14028check has been added to the iASL compiler also. 14029 14030Tightened up the namespace load to disallow multiple names in the 14031same scope. This previously was allowed if both objects were of 14032the same type. (i.e., a lookup was the same as entering a new 14033name). 14034 14035 140362) Linux 14037 14038Ensure that the ACPI interrupt has the proper trigger and 14039polarity. 14040 14041local_irq_disable is extraneous. (Matthew Wilcox) 14042 14043Make "acpi=off" actually do what it says, and not use the ACPI 14044interpreter *or* the tables. 14045 14046Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 14047Takayoshi) 14048 14049 140503) iASL Compiler/Disassembler Version 20020829: 14051 14052Implemented namepath optimization for name declarations. For 14053example, a declaration like "Method (\_SB_.ABCD)" would get 14054optimized to "Method (ABCD)" if the declaration is within the 14055\_SB_ scope. This optimization is in addition to the named 14056reference path optimization first released in the previous 14057version. This would seem to complete all possible optimizations 14058for namepaths within the ASL/AML. 14059 14060If the target of a Scope() operator already exists, it must be an 14061object type that actually opens a scope -- such as a Device, 14062Method, Scope, etc. 14063 14064Implemented a check and warning for unreachable code in the same 14065block below a Return() statement. 14066 14067Fixed a problem where the listing file was not generated if the 14068compiler aborted if the maximum error count was exceeded (200). 14069 14070Fixed a problem where the typechecking of method return values was 14071broken. This includes the check for a return value when the 14072method is invoked as a TermArg (a return value is expected.) 14073 14074Fixed a reported problem where EOF conditions during a quoted 14075string or comment caused a fault. 14076 14077 14078---------------------------------------- 1407915 August 2002. Summary of changes for this release. 14080 140811) ACPI CA Core Subsystem Version 20020815: 14082 14083Fixed a reported problem where a Store to a method argument that 14084contains a reference did not perform the indirect store correctly. 14085This problem was created during the conversion to the new 14086reference object model - the indirect store to a method argument 14087code was not updated to reflect the new model. 14088 14089Reworked the ACPI mode change code to better conform to ACPI 2.0, 14090handle corner cases, and improve code legibility (Kochi Takayoshi) 14091 14092Fixed a problem with the pathname parsing for the carat (^) 14093prefix. The heavy use of the carat operator by the new namepath 14094optimization in the iASL compiler uncovered a problem with the AML 14095interpreter handling of this prefix. In the case where one or 14096more carats precede a single nameseg, the nameseg was treated as 14097standalone and the search rule (to root) was inadvertently 14098applied. This could cause both the iASL compiler and the 14099interpreter to find the wrong object or to miss the error that 14100should occur if the object does not exist at that exact pathname. 14101 14102Found and fixed the problem where the HP Pavilion DSDT would not 14103load. This was a relatively minor tweak to the table loading code 14104(a problem caused by the unexpected encounter with a method 14105invocation not within a control method), but it does not solve the 14106overall issue of the execution of AML code at the table level. 14107This investigation is still ongoing. 14108 14109Code and Data Size: Current core subsystem library sizes are shown 14110below. These are the code and data sizes for the acpica.lib 14111produced by the Microsoft Visual C++ 6.0 compiler, and these 14112values do not include any ACPI driver or OSPM code. The debug 14113version of the code includes the debug output trace mechanism and 14114has a larger code and data size. Note that these values will vary 14115depending on the efficiency of the compiler and the compiler 14116options used during generation. 14117 14118 Previous Release 14119 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14120 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14121 Current Release: 14122 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 14123 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 14124 14125 141262) Linux 14127 14128Remove redundant slab.h include (Brad Hards) 14129 14130Fix several bugs in thermal.c (Herbert Nachtnebel) 14131 14132Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 14133 14134Change acpi_system_suspend to use updated irq functions (Pavel 14135Machek) 14136 14137Export acpi_get_firmware_table (Matthew Wilcox) 14138 14139Use proper root proc entry for ACPI (Kochi Takayoshi) 14140 14141Fix early-boot table parsing (Bjorn Helgaas) 14142 14143 141443) iASL Compiler/Disassembler 14145 14146Reworked the compiler options to make them more consistent and to 14147use two-letter options where appropriate. We were running out of 14148sensible letters. This may break some makefiles, so check the 14149current options list by invoking the compiler with no parameters. 14150 14151Completed the design and implementation of the ASL namepath 14152optimization option for the compiler. This option optimizes all 14153references to named objects to the shortest possible path. The 14154first attempt tries to utilize a single nameseg (4 characters) and 14155the "search-to-root" algorithm used by the interpreter. If that 14156cannot be used (because either the name is not in the search path 14157or there is a conflict with another object with the same name), 14158the pathname is optimized using the carat prefix (usually a 14159shorter string than specifying the entire path from the root.) 14160 14161Implemented support to obtain the DSDT from the Windows registry 14162(when the disassembly option is specified with no input file). 14163Added this code as the implementation for AcpiOsTableOverride in 14164the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 14165utility) to scan memory for the DSDT to the AcpiOsTableOverride 14166function in the DOS OSL to make the disassembler truly OS 14167independent. 14168 14169Implemented a new option to disassemble and compile in one step. 14170When used without an input filename, this option will grab the 14171DSDT from the local machine, disassemble it, and compile it in one 14172step. 14173 14174Added a warning message for invalid escapes (a backslash followed 14175by any character other than the allowable escapes). This catches 14176the quoted string error "\_SB_" (which should be "\\_SB_" ). 14177 14178Also, there are numerous instances in the ACPI specification where 14179this error occurs. 14180 14181Added a compiler option to disable all optimizations. This is 14182basically the "compatibility mode" because by using this option, 14183the AML code will come out exactly the same as other ASL 14184compilers. 14185 14186Added error messages for incorrectly ordered dependent resource 14187functions. This includes: missing EndDependentFn macro at end of 14188dependent resource list, nested dependent function macros (both 14189start and end), and missing StartDependentFn macro. These are 14190common errors that should be caught at compile time. 14191 14192Implemented _OSI support for the disassembler and compiler. _OSI 14193must be included in the namespace for proper disassembly (because 14194the disassembler must know the number of arguments.) 14195 14196Added an "optimization" message type that is optional (off by 14197default). This message is used for all optimizations - including 14198constant folding, integer optimization, and namepath optimization. 14199 14200---------------------------------------- 1420125 July 2002. Summary of changes for this release. 14202 14203 142041) ACPI CA Core Subsystem Version 20020725: 14205 14206The AML Disassembler has been enhanced to produce compilable ASL 14207code and has been integrated into the iASL compiler (see below) as 14208well as the single-step disassembly for the AML debugger and the 14209disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 14210resource templates and macros are fully supported. The 14211disassembler has been tested on over 30 different AML files, 14212producing identical AML when the resulting disassembled ASL file 14213is recompiled with the same ASL compiler. 14214 14215Modified the Resource Manager to allow zero interrupts and zero 14216dma channels during the GetCurrentResources call. This was 14217causing problems on some platforms. 14218 14219Added the AcpiOsRedirectOutput interface to the OSL to simplify 14220output redirection for the AcpiOsPrintf and AcpiOsVprintf 14221interfaces. 14222 14223Code and Data Size: Current core subsystem library sizes are shown 14224below. These are the code and data sizes for the acpica.lib 14225produced by the Microsoft Visual C++ 6.0 compiler, and these 14226values do not include any ACPI driver or OSPM code. The debug 14227version of the code includes the debug output trace mechanism and 14228has a larger code and data size. Note that these values will vary 14229depending on the efficiency of the compiler and the compiler 14230options used during generation. 14231 14232 Previous Release 14233 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14234 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14235 Current Release: 14236 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14237 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14238 14239 142402) Linux 14241 14242Fixed a panic in the EC driver (Dominik Brodowski) 14243 14244Implemented checksum of the R/XSDT itself during Linux table scan 14245(Richard Schaal) 14246 14247 142483) iASL compiler 14249 14250The AML disassembler is integrated into the compiler. The "-d" 14251option invokes the disassembler to completely disassemble an 14252input AML file, producing as output a text ASL file with the 14253extension ".dsl" (to avoid name collisions with existing .asl 14254source files.) A future enhancement will allow the disassembler 14255to obtain the BIOS DSDT from the registry under Windows. 14256 14257Fixed a problem with the VendorShort and VendorLong resource 14258descriptors where an invalid AML sequence was created. 14259 14260Implemented a fix for BufferData term in the ASL parser. It was 14261inadvertently defined twice, allowing invalid syntax to pass and 14262causing reduction conflicts. 14263 14264Fixed a problem where the Ones opcode could get converted to a 14265value of zero if "Ones" was used where a byte, word or dword value 14266was expected. The 64-bit value is now truncated to the correct 14267size with the correct value. 14268 14269 14270 14271---------------------------------------- 1427202 July 2002. Summary of changes for this release. 14273 14274 142751) ACPI CA Core Subsystem Version 20020702: 14276 14277The Table Manager code has been restructured to add several new 14278features. Tables that are not required by the core subsystem 14279(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 14280validated in any way and are returned from AcpiGetFirmwareTable if 14281requested. The AcpiOsTableOverride interface is now called for 14282each table that is loaded by the subsystem in order to allow the 14283host to override any table it chooses. Previously, only the DSDT 14284could be overridden. Added one new files, tbrsdt.c and 14285tbgetall.c. 14286 14287Fixed a problem with the conversion of internal package objects to 14288external objects (when a package is returned from a control 14289method.) The return buffer length was set to zero instead of the 14290proper length of the package object. 14291 14292Fixed a reported problem with the use of the RefOf and DeRefOf 14293operators when passing reference arguments to control methods. A 14294new type of Reference object is used internally for references 14295produced by the RefOf operator. 14296 14297Added additional error messages in the Resource Manager to explain 14298AE_BAD_DATA errors when they occur during resource parsing. 14299 14300Split the AcpiEnableSubsystem into two primitives to enable a 14301finer granularity initialization sequence. These two calls should 14302be called in this order: AcpiEnableSubsystem (flags), 14303AcpiInitializeObjects (flags). The flags parameter remains the 14304same. 14305 14306 143072) Linux 14308 14309Updated the ACPI utilities module to understand the new style of 14310fully resolved package objects that are now returned from the core 14311subsystem. This eliminates errors of the form: 14312 14313 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 14314 acpi_utils-0430 [145] acpi_evaluate_reference: 14315 Invalid element in package (not a device reference) 14316 14317The method evaluation utility uses the new buffer allocation 14318scheme instead of calling AcpiEvaluate Object twice. 14319 14320Added support for ECDT. This allows the use of the Embedded 14321 14322Controller before the namespace has been fully initialized, which 14323is necessary for ACPI 2.0 support, and for some laptops to 14324initialize properly. (Laptops using ECDT are still rare, so only 14325limited testing was performed of the added functionality.) 14326 14327Fixed memory leaks in the EC driver. 14328 14329Eliminated a brittle code structure in acpi_bus_init(). 14330 14331Eliminated the acpi_evaluate() helper function in utils.c. It is 14332no longer needed since acpi_evaluate_object can optionally 14333allocate memory for the return object. 14334 14335Implemented fix for keyboard hang when getting battery readings on 14336some systems (Stephen White) 14337 14338PCI IRQ routing update (Dominik Brodowski) 14339 14340Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 14341support 14342 14343---------------------------------------- 1434411 June 2002. Summary of changes for this release. 14345 14346 143471) ACPI CA Core Subsystem Version 20020611: 14348 14349Fixed a reported problem where constants such as Zero and One 14350appearing within _PRT packages were not handled correctly within 14351the resource manager code. Originally reported against the ASL 14352compiler because the code generator now optimizes integers to 14353their minimal AML representation (i.e. AML constants if possible.) 14354The _PRT code now handles all AML constant opcodes correctly 14355(Zero, One, Ones, Revision). 14356 14357Fixed a problem with the Concatenate operator in the AML 14358interpreter where a buffer result object was incorrectly marked as 14359not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 14360 14361All package sub-objects are now fully resolved before they are 14362returned from the external ACPI interfaces. This means that name 14363strings are resolved to object handles, and constant operators 14364(Zero, One, Ones, Revision) are resolved to Integers. 14365 14366Implemented immediate resolution of the AML Constant opcodes 14367(Zero, One, Ones, Revision) to Integer objects upon detection 14368within the AML stream. This has simplified and reduced the 14369generated code size of the subsystem by eliminating about 10 14370switch statements for these constants (which previously were 14371contained in Reference objects.) The complicating issues are that 14372the Zero opcode is used as a "placeholder" for unspecified 14373optional target operands and stores to constants are defined to be 14374no-ops. 14375 14376Code and Data Size: Current core subsystem library sizes are shown 14377below. These are the code and data sizes for the acpica.lib 14378produced by the Microsoft Visual C++ 6.0 compiler, and these 14379values do not include any ACPI driver or OSPM code. The debug 14380version of the code includes the debug output trace mechanism and 14381has a larger code and data size. Note that these values will vary 14382depending on the efficiency of the compiler and the compiler 14383options used during generation. 14384 14385 Previous Release 14386 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14387 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14388 Current Release: 14389 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14390 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14391 14392 143932) Linux 14394 14395 14396Added preliminary support for obtaining _TRA data for PCI root 14397bridges (Bjorn Helgaas). 14398 14399 144003) iASL Compiler Version X2046: 14401 14402Fixed a problem where the "_DDN" reserved name was defined to be a 14403control method with one argument. There are no arguments, and 14404_DDN does not have to be a control method. 14405 14406Fixed a problem with the Linux version of the compiler where the 14407source lines printed with error messages were the wrong lines. 14408This turned out to be the "LF versus CR/LF" difference between 14409Windows and Unix. This appears to be the longstanding issue 14410concerning listing output and error messages. 14411 14412Fixed a problem with the Linux version of compiler where opcode 14413names within error messages were wrong. This was caused by a 14414slight difference in the output of the Flex tool on Linux versus 14415Windows. 14416 14417Fixed a problem with the Linux compiler where the hex output files 14418contained some garbage data caused by an internal buffer overrun. 14419 14420 14421---------------------------------------- 1442217 May 2002. Summary of changes for this release. 14423 14424 144251) ACPI CA Core Subsystem Version 20020517: 14426 14427Implemented a workaround to an BIOS bug discovered on the HP 14428OmniBook where the FADT revision number and the table size are 14429inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 14430behavior is to fallback to using only the ACPI 1.0 fields of the 14431FADT if the table is too small to be a ACPI 2.0 table as claimed 14432by the revision number. Although this is a BIOS bug, this is a 14433case where the workaround is simple enough and with no side 14434effects, so it seemed prudent to add it. A warning message is 14435issued, however. 14436 14437Implemented minimum size checks for the fixed-length ACPI tables - 14438- the FADT and FACS, as well as consistency checks between the 14439revision number and the table size. 14440 14441Fixed a reported problem in the table override support where the 14442new table pointer was incorrectly treated as a physical address 14443instead of a logical address. 14444 14445Eliminated the use of the AE_AML_ERROR exception and replaced it 14446with more descriptive codes. 14447 14448Fixed a problem where an exception would occur if an ASL Field was 14449defined with no named Field Units underneath it (used by some 14450index fields). 14451 14452Code and Data Size: Current core subsystem library sizes are shown 14453below. These are the code and data sizes for the acpica.lib 14454produced by the Microsoft Visual C++ 6.0 compiler, and these 14455values do not include any ACPI driver or OSPM code. The debug 14456version of the code includes the debug output trace mechanism and 14457has a larger code and data size. Note that these values will vary 14458depending on the efficiency of the compiler and the compiler 14459options used during generation. 14460 14461 Previous Release 14462 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14463 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14464 Current Release: 14465 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14466 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14467 14468 14469 144702) Linux 14471 14472Much work done on ACPI init (MADT and PCI IRQ routing support). 14473(Paul D. and Dominik Brodowski) 14474 14475Fix PCI IRQ-related panic on boot (Sam Revitch) 14476 14477Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 14478 14479Fix "MHz" typo (Dominik Brodowski) 14480 14481Fix RTC year 2000 issue (Dominik Brodowski) 14482 14483Preclude multiple button proc entries (Eric Brunet) 14484 14485Moved arch-specific code out of include/platform/aclinux.h 14486 144873) iASL Compiler Version X2044: 14488 14489Implemented error checking for the string used in the EISAID macro 14490(Usually used in the definition of the _HID object.) The code now 14491strictly enforces the PnP format - exactly 7 characters, 3 14492uppercase letters and 4 hex digits. 14493 14494If a raw string is used in the definition of the _HID object 14495(instead of the EISAID macro), the string must contain all 14496alphanumeric characters (e.g., "*PNP0011" is not allowed because 14497of the asterisk.) 14498 14499Implemented checking for invalid use of ACPI reserved names for 14500most of the name creation operators (Name, Device, Event, Mutex, 14501OperationRegion, PowerResource, Processor, and ThermalZone.) 14502Previously, this check was only performed for control methods. 14503 14504Implemented an additional check on the Name operator to emit an 14505error if a reserved name that must be implemented in ASL as a 14506control method is used. We know that a reserved name must be a 14507method if it is defined with input arguments. 14508 14509The warning emitted when a namespace object reference is not found 14510during the cross reference phase has been changed into an error. 14511The "External" directive should be used for names defined in other 14512modules. 14513 14514 145154) Tools and Utilities 14516 14517The 16-bit tools (adump16 and aexec16) have been regenerated and 14518tested. 14519 14520Fixed a problem with the output of both acpidump and adump16 where 14521the indentation of closing parentheses and brackets was not 14522 14523aligned properly with the parent block. 14524 14525 14526---------------------------------------- 1452703 May 2002. Summary of changes for this release. 14528 14529 145301) ACPI CA Core Subsystem Version 20020503: 14531 14532Added support a new OSL interface that allows the host operating 14533 14534system software to override the DSDT found in the firmware - 14535AcpiOsTableOverride. With this interface, the OSL can examine the 14536version of the firmware DSDT and replace it with a different one 14537if desired. 14538 14539Added new external interfaces for accessing ACPI registers from 14540device drivers and other system software - AcpiGetRegister and 14541AcpiSetRegister. This was simply an externalization of the 14542existing AcpiHwBitRegister interfaces. 14543 14544Fixed a regression introduced in the previous build where the 14545ASL/AML CreateField operator always returned an error, 14546"destination must be a NS Node". 14547 14548Extended the maximum time (before failure) to successfully enable 14549ACPI mode to 3 seconds. 14550 14551Code and Data Size: Current core subsystem library sizes are shown 14552below. These are the code and data sizes for the acpica.lib 14553produced by the Microsoft Visual C++ 6.0 compiler, and these 14554values do not include any ACPI driver or OSPM code. The debug 14555version of the code includes the debug output trace mechanism and 14556has a larger code and data size. Note that these values will vary 14557depending on the efficiency of the compiler and the compiler 14558options used during generation. 14559 14560 Previous Release 14561 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14562 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14563 Current Release: 14564 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14565 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14566 14567 145682) Linux 14569 14570Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 14571free. While 3 out of 4 of our in-house systems work fine, the last 14572one still hangs when testing the LAPIC timer. 14573 14574Renamed many files in 2.5 kernel release to omit "acpi_" from the 14575name. 14576 14577Added warning on boot for Presario 711FR. 14578 14579Sleep improvements (Pavel Machek) 14580 14581ACPI can now be built without CONFIG_PCI enabled. 14582 14583IA64: Fixed memory map functions (JI Lee) 14584 14585 145863) iASL Compiler Version X2043: 14587 14588Added support to allow the compiler to be integrated into the MS 14589VC++ development environment for one-button compilation of single 14590files or entire projects -- with error-to-source-line mapping. 14591 14592Implemented support for compile-time constant folding for the 14593Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 14594specification. This allows the ASL writer to use expressions 14595instead of Integer/Buffer/String constants in terms that must 14596evaluate to constants at compile time and will also simplify the 14597emitted AML in any such sub-expressions that can be folded 14598(evaluated at compile-time.) This increases the size of the 14599compiler significantly because a portion of the ACPI CA AML 14600interpreter is included within the compiler in order to pre- 14601evaluate constant expressions. 14602 14603 14604Fixed a problem with the "Unicode" ASL macro that caused the 14605compiler to fault. (This macro is used in conjunction with the 14606_STR reserved name.) 14607 14608Implemented an AML opcode optimization to use the Zero, One, and 14609Ones opcodes where possible to further reduce the size of integer 14610constants and thus reduce the overall size of the generated AML 14611code. 14612 14613Implemented error checking for new reserved terms for ACPI version 146142.0A. 14615 14616Implemented the -qr option to display the current list of ACPI 14617reserved names known to the compiler. 14618 14619Implemented the -qc option to display the current list of ASL 14620operators that are allowed within constant expressions and can 14621therefore be folded at compile time if the operands are constants. 14622 14623 146244) Documentation 14625 14626Updated the Programmer's Reference for new interfaces, data types, 14627and memory allocation model options. 14628 14629Updated the iASL Compiler User Reference to apply new format and 14630add information about new features and options. 14631 14632---------------------------------------- 1463319 April 2002. Summary of changes for this release. 14634 146351) ACPI CA Core Subsystem Version 20020419: 14636 14637The source code base for the Core Subsystem has been completely 14638cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 14639versions. The Lint option files used are included in the 14640/acpi/generate/lint directory. 14641 14642Implemented enhanced status/error checking across the entire 14643Hardware manager subsystem. Any hardware errors (reported from 14644the OSL) are now bubbled up and will abort a running control 14645method. 14646 14647 14648Fixed a problem where the per-ACPI-table integer width (32 or 64) 14649was stored only with control method nodes, causing a fault when 14650non-control method code was executed during table loading. The 14651solution implemented uses a global variable to indicate table 14652width across the entire ACPI subsystem. Therefore, ACPI CA does 14653not support mixed integer widths across different ACPI tables 14654(DSDT, SSDT). 14655 14656Fixed a problem where NULL extended fields (X fields) in an ACPI 146572.0 ACPI FADT caused the table load to fail. Although the 14658existing ACPI specification is a bit fuzzy on this topic, the new 14659behavior is to fall back on a ACPI 1.0 field if the corresponding 14660ACPI 2.0 X field is zero (even though the table revision indicates 14661a full ACPI 2.0 table.) The ACPI specification will be updated to 14662clarify this issue. 14663 14664Fixed a problem with the SystemMemory operation region handler 14665where memory was always accessed byte-wise even if the AML- 14666specified access width was larger than a byte. This caused 14667problems on systems with memory-mapped I/O. Memory is now 14668accessed with the width specified. On systems that do not support 14669non-aligned transfers, a check is made to guarantee proper address 14670alignment before proceeding in order to avoid an AML-caused 14671alignment fault within the kernel. 14672 14673 14674Fixed a problem with the ExtendedIrq resource where only one byte 14675of the 4-byte Irq field was extracted. 14676 14677Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 14678function was out of date and required a rewrite. 14679 14680Code and Data Size: Current core subsystem library sizes are shown 14681below. These are the code and data sizes for the acpica.lib 14682produced by the Microsoft Visual C++ 6.0 compiler, and these 14683values do not include any ACPI driver or OSPM code. The debug 14684version of the code includes the debug output trace mechanism and 14685has a larger code and data size. Note that these values will vary 14686depending on the efficiency of the compiler and the compiler 14687options used during generation. 14688 14689 Previous Release 14690 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 14691 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 14692 Current Release: 14693 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14694 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14695 14696 146972) Linux 14698 14699PCI IRQ routing fixes (Dominik Brodowski) 14700 14701 147023) iASL Compiler Version X2042: 14703 14704Implemented an additional compile-time error check for a field 14705unit whose size + minimum access width would cause a run-time 14706access beyond the end-of-region. Previously, only the field size 14707itself was checked. 14708 14709The Core subsystem and iASL compiler now share a common parse 14710object in preparation for compile-time evaluation of the type 147113/4/5 ASL operators. 14712 14713 14714---------------------------------------- 14715Summary of changes for this release: 03_29_02 14716 147171) ACPI CA Core Subsystem Version 20020329: 14718 14719Implemented support for late evaluation of TermArg operands to 14720Buffer and Package objects. This allows complex expressions to be 14721used in the declarations of these object types. 14722 14723Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 147241.0, if the field was larger than 32 bits, it was returned as a 14725buffer - otherwise it was returned as an integer. In ACPI 2.0, 14726the field is returned as a buffer only if the field is larger than 1472764 bits. The TableRevision is now considered when making this 14728conversion to avoid incompatibility with existing ASL code. 14729 14730Implemented logical addressing for AcpiOsGetRootPointer. This 14731allows an RSDP with either a logical or physical address. With 14732this support, the host OS can now override all ACPI tables with 14733one logical RSDP. Includes implementation of "typed" pointer 14734support to allow a common data type for both physical and logical 14735pointers internally. This required a change to the 14736AcpiOsGetRootPointer interface. 14737 14738Implemented the use of ACPI 2.0 Generic Address Structures for all 14739GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 14740mapped I/O for these ACPI features. 14741 14742Initialization now ignores not only non-required tables (All 14743tables other than the FADT, FACS, DSDT, and SSDTs), but also does 14744not validate the table headers of unrecognized tables. 14745 14746Fixed a problem where a notify handler could only be 14747installed/removed on an object of type Device. All "notify" 14748 14749objects are now supported -- Devices, Processor, Power, and 14750Thermal. 14751 14752Removed most verbosity from the ACPI_DB_INFO debug level. Only 14753critical information is returned when this debug level is enabled. 14754 14755Code and Data Size: Current core subsystem library sizes are shown 14756below. These are the code and data sizes for the acpica.lib 14757produced by the Microsoft Visual C++ 6.0 compiler, and these 14758values do not include any ACPI driver or OSPM code. The debug 14759version of the code includes the debug output trace mechanism and 14760has a larger code and data size. Note that these values will vary 14761depending on the efficiency of the compiler and the compiler 14762options used during generation. 14763 14764 Previous Release 14765 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 14766 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 14767 Current Release: 14768 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 14769 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 14770 14771 147722) Linux: 14773 14774The processor driver (acpi_processor.c) now fully supports ACPI 147752.0-based processor performance control (e.g. Intel(R) 14776SpeedStep(TM) technology) Note that older laptops that only have 14777the Intel "applet" interface are not supported through this. The 14778'limit' and 'performance' interface (/proc) are fully functional. 14779[Note that basic policy for controlling performance state 14780transitions will be included in the next version of ospmd.] The 14781idle handler was modified to more aggressively use C2, and PIIX4 14782errata handling underwent a complete overhaul (big thanks to 14783Dominik Brodowski). 14784 14785Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 14786based devices in the ACPI namespace are now dynamically bound 14787(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 14788This allows, among other things, ACPI to resolve bus numbers for 14789subordinate PCI bridges. 14790 14791Enhanced PCI IRQ routing to get the proper bus number for _PRT 14792entries defined underneath PCI bridges. 14793 14794Added IBM 600E to bad bios list due to invalid _ADR value for 14795PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 14796 14797In the process of adding full MADT support (e.g. IOAPIC) for IA32 14798(acpi.c, mpparse.c) -- stay tuned. 14799 14800Added back visual differentiation between fixed-feature and 14801control-method buttons in dmesg. Buttons are also subtyped (e.g. 14802button/power/PWRF) to simplify button identification. 14803 14804We no longer use -Wno-unused when compiling debug. Please ignore 14805any "_THIS_MODULE defined but not used" messages. 14806 14807Can now shut down the system using "magic sysrq" key. 14808 14809 148103) iASL Compiler version 2041: 14811 14812Fixed a problem where conversion errors for hex/octal/decimal 14813constants were not reported. 14814 14815Implemented a fix for the General Register template Address field. 14816This field was 8 bits when it should be 64. 14817 14818Fixed a problem where errors/warnings were no longer being emitted 14819within the listing output file. 14820 14821Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 14822exactly 4 characters, alphanumeric only. 14823 14824 14825 14826 14827---------------------------------------- 14828Summary of changes for this release: 03_08_02 14829 14830 148311) ACPI CA Core Subsystem Version 20020308: 14832 14833Fixed a problem with AML Fields where the use of the "AccessAny" 14834keyword could cause an interpreter error due to attempting to read 14835or write beyond the end of the parent Operation Region. 14836 14837Fixed a problem in the SystemMemory Operation Region handler where 14838an attempt was made to map memory beyond the end of the region. 14839This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 14840errors on some Linux systems. 14841 14842Fixed a problem where the interpreter/namespace "search to root" 14843algorithm was not functioning for some object types. Relaxed the 14844internal restriction on the search to allow upsearches for all 14845external object types as well as most internal types. 14846 14847 148482) Linux: 14849 14850We now use safe_halt() macro versus individual calls to sti | hlt. 14851 14852Writing to the processor limit interface should now work. "echo 1" 14853will increase the limit, 2 will decrease, and 0 will reset to the 14854 14855default. 14856 14857 148583) ASL compiler: 14859 14860Fixed segfault on Linux version. 14861 14862 14863---------------------------------------- 14864Summary of changes for this release: 02_25_02 14865 148661) ACPI CA Core Subsystem: 14867 14868 14869Fixed a problem where the GPE bit masks were not initialized 14870properly, causing erratic GPE behavior. 14871 14872Implemented limited support for multiple calling conventions. The 14873code can be generated with either the VPL (variable parameter 14874list, or "C") convention, or the FPL (fixed parameter list, or 14875"Pascal") convention. The core subsystem is about 3.4% smaller 14876when generated with FPL. 14877 14878 148792) Linux 14880 14881Re-add some /proc/acpi/event functionality that was lost during 14882the rewrite 14883 14884Resolved issue with /proc events for fixed-feature buttons showing 14885up as the system device. 14886 14887Fixed checks on C2/C3 latencies to be inclusive of maximum values. 14888 14889Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 14890 14891Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 14892 14893Fixed limit interface & usage to fix bugs with passive cooling 14894hysterisis. 14895 14896Restructured PRT support. 14897 14898 14899---------------------------------------- 14900Summary of changes for this label: 02_14_02 14901 14902 149031) ACPI CA Core Subsystem: 14904 14905Implemented support in AcpiLoadTable to allow loading of FACS and 14906FADT tables. 14907 14908Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 14909been removed. All 64-bit platforms should be migrated to the ACPI 149102.0 tables. The actbl71.h header has been removed from the source 14911tree. 14912 14913All C macros defined within the subsystem have been prefixed with 14914"ACPI_" to avoid collision with other system include files. 14915 14916Removed the return value for the two AcpiOsPrint interfaces, since 14917it is never used and causes lint warnings for ignoring the return 14918value. 14919 14920Added error checking to all internal mutex acquire and release 14921calls. Although a failure from one of these interfaces is 14922probably a fatal system error, these checks will cause the 14923immediate abort of the currently executing method or interface. 14924 14925Fixed a problem where the AcpiSetCurrentResources interface could 14926fault. This was a side effect of the deployment of the new memory 14927allocation model. 14928 14929Fixed a couple of problems with the Global Lock support introduced 14930in the last major build. The "common" (1.0/2.0) internal FACS was 14931being overwritten with the FACS signature and clobbering the 14932Global Lock pointer. Also, the actual firmware FACS was being 14933unmapped after construction of the "common" FACS, preventing 14934access to the actual Global Lock field within it. The "common" 14935internal FACS is no longer installed as an actual ACPI table; it 14936is used simply as a global. 14937 14938Code and Data Size: Current core subsystem library sizes are shown 14939below. These are the code and data sizes for the acpica.lib 14940produced by the Microsoft Visual C++ 6.0 compiler, and these 14941values do not include any ACPI driver or OSPM code. The debug 14942version of the code includes the debug output trace mechanism and 14943has a larger code and data size. Note that these values will vary 14944depending on the efficiency of the compiler and the compiler 14945options used during generation. 14946 14947 Previous Release (02_07_01) 14948 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 14949 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 14950 Current Release: 14951 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 14952 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 14953 14954 149552) Linux 14956 14957Updated Linux-specific code for core macro and OSL interface 14958changes described above. 14959 14960Improved /proc/acpi/event. It now can be opened only once and has 14961proper poll functionality. 14962 14963Fixed and restructured power management (acpi_bus). 14964 14965Only create /proc "view by type" when devices of that class exist. 14966 14967Fixed "charging/discharging" bug (and others) in acpi_battery. 14968 14969Improved thermal zone code. 14970 14971 149723) ASL Compiler, version X2039: 14973 14974 14975Implemented the new compiler restriction on ASL String hex/octal 14976escapes to non-null, ASCII values. An error results if an invalid 14977value is used. (This will require an ACPI 2.0 specification 14978change.) 14979 14980AML object labels that are output to the optional C and ASM source 14981are now prefixed with both the ACPI table signature and table ID 14982to help guarantee uniqueness within a large BIOS project. 14983 14984 14985---------------------------------------- 14986Summary of changes for this label: 02_01_02 14987 149881) ACPI CA Core Subsystem: 14989 14990ACPI 2.0 support is complete in the entire Core Subsystem and the 14991ASL compiler. All new ACPI 2.0 operators are implemented and all 14992other changes for ACPI 2.0 support are complete. With 14993simultaneous code and data optimizations throughout the subsystem, 14994ACPI 2.0 support has been implemented with almost no additional 14995cost in terms of code and data size. 14996 14997Implemented a new mechanism for allocation of return buffers. If 14998the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 14999be allocated on behalf of the caller. Consolidated all return 15000buffer validation and allocation to a common procedure. Return 15001buffers will be allocated via the primary OSL allocation interface 15002since it appears that a separate pool is not needed by most users. 15003If a separate pool is required for these buffers, the caller can 15004still use the original mechanism and pre-allocate the buffer(s). 15005 15006Implemented support for string operands within the DerefOf 15007operator. 15008 15009Restructured the Hardware and Event managers to be table driven, 15010simplifying the source code and reducing the amount of generated 15011code. 15012 15013Split the common read/write low-level ACPI register bitfield 15014procedure into a separate read and write, simplifying the code 15015considerably. 15016 15017Obsoleted the AcpiOsCallocate OSL interface. This interface was 15018used only a handful of times and didn't have enough critical mass 15019for a separate interface. Replaced with a common calloc procedure 15020in the core. 15021 15022Fixed a reported problem with the GPE number mapping mechanism 15023that allows GPE1 numbers to be non-contiguous with GPE0. 15024Reorganized the GPE information and shrunk a large array that was 15025originally large enough to hold info for all possible GPEs (256) 15026to simply large enough to hold all GPEs up to the largest GPE 15027number on the machine. 15028 15029Fixed a reported problem with resource structure alignment on 64- 15030bit platforms. 15031 15032Changed the AcpiEnableEvent and AcpiDisableEvent external 15033interfaces to not require any flags for the common case of 15034enabling/disabling a GPE. 15035 15036Implemented support to allow a "Notify" on a Processor object. 15037 15038Most TBDs in comments within the source code have been resolved 15039and eliminated. 15040 15041 15042Fixed a problem in the interpreter where a standalone parent 15043prefix (^) was not handled correctly in the interpreter and 15044debugger. 15045 15046Removed obsolete and unnecessary GPE save/restore code. 15047 15048Implemented Field support in the ASL Load operator. This allows a 15049table to be loaded from a named field, in addition to loading a 15050table directly from an Operation Region. 15051 15052Implemented timeout and handle support in the external Global Lock 15053interfaces. 15054 15055Fixed a problem in the AcpiDump utility where pathnames were no 15056longer being generated correctly during the dump of named objects. 15057 15058Modified the AML debugger to give a full display of if/while 15059predicates instead of just one AML opcode at a time. (The 15060predicate can have several nested ASL statements.) The old method 15061was confusing during single stepping. 15062 15063Code and Data Size: Current core subsystem library sizes are shown 15064below. These are the code and data sizes for the acpica.lib 15065produced by the Microsoft Visual C++ 6.0 compiler, and these 15066values do not include any ACPI driver or OSPM code. The debug 15067version of the code includes the debug output trace mechanism and 15068has a larger code and data size. Note that these values will vary 15069depending on the efficiency of the compiler and the compiler 15070options used during generation. 15071 15072 Previous Release (12_18_01) 15073 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15074 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15075 Current Release: 15076 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 15077 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 15078 150792) Linux 15080 15081 Implemented fix for PIIX reverse throttling errata (Processor 15082driver) 15083 15084Added new Limit interface (Processor and Thermal drivers) 15085 15086New thermal policy (Thermal driver) 15087 15088Many updates to /proc 15089 15090Battery "low" event support (Battery driver) 15091 15092Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 15093 15094IA32 - IA64 initialization unification, no longer experimental 15095 15096Menuconfig options redesigned 15097 150983) ASL Compiler, version X2037: 15099 15100Implemented several new output features to simplify integration of 15101AML code into firmware: 1) Output the AML in C source code with 15102labels for each named ASL object. The original ASL source code 15103is interleaved as C comments. 2) Output the AML in ASM source code 15104with labels and interleaved ASL source. 3) Output the AML in 15105raw hex table form, in either C or ASM. 15106 15107Implemented support for optional string parameters to the 15108LoadTable operator. 15109 15110Completed support for embedded escape sequences within string 15111literals. The compiler now supports all single character escapes 15112as well as the Octal and Hex escapes. Note: the insertion of a 15113null byte into a string literal (via the hex/octal escape) causes 15114the string to be immediately terminated. A warning is issued. 15115 15116Fixed a problem where incorrect AML was generated for the case 15117where an ASL namepath consists of a single parent prefix ( 15118 15119) with no trailing name segments. 15120 15121The compiler has been successfully generated with a 64-bit C 15122compiler. 15123 15124 15125 15126 15127---------------------------------------- 15128Summary of changes for this label: 12_18_01 15129 151301) Linux 15131 15132Enhanced blacklist with reason and severity fields. Any table's 15133signature may now be used to identify a blacklisted system. 15134 15135Call _PIC control method to inform the firmware which interrupt 15136model the OS is using. Turn on any disabled link devices. 15137 15138Cleaned up busmgr /proc error handling (Andreas Dilger) 15139 15140 2) ACPI CA Core Subsystem: 15141 15142Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 15143while loop) 15144 15145Completed implementation of the ACPI 2.0 "Continue", 15146"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 15147operators. All new ACPI 2.0 operators are now implemented in both 15148the ASL compiler and the AML interpreter. The only remaining ACPI 151492.0 task is support for the String data type in the DerefOf 15150operator. Fixed a problem with AcquireMutex where the status code 15151was lost if the caller had to actually wait for the mutex. 15152 15153Increased the maximum ASL Field size from 64K bits to 4G bits. 15154 15155Completed implementation of the external Global Lock interfaces -- 15156AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 15157Handler parameters were added. 15158 15159Completed another pass at removing warnings and issues when 15160compiling with 64-bit compilers. The code now compiles cleanly 15161with the Intel 64-bit C/C++ compiler. Most notably, the pointer 15162add and subtract (diff) macros have changed considerably. 15163 15164 15165Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1516664-bit platforms, 32-bits on all others. This type is used 15167wherever memory allocation and/or the C sizeof() operator is used, 15168and affects the OSL memory allocation interfaces AcpiOsAllocate 15169and AcpiOsCallocate. 15170 15171Implemented sticky user breakpoints in the AML debugger. 15172 15173Code and Data Size: Current core subsystem library sizes are shown 15174below. These are the code and data sizes for the acpica.lib 15175produced by the Microsoft Visual C++ 6.0 compiler, and these 15176values do not include any ACPI driver or OSPM code. The debug 15177version of the code includes the debug output trace mechanism and 15178has a larger 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 Release (12_05_01) 15183 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15184 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15185 Current Release: 15186 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15187 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15188 15189 3) ASL Compiler, version X2034: 15190 15191Now checks for (and generates an error if detected) the use of a 15192Break or Continue statement without an enclosing While statement. 15193 15194 15195Successfully generated the compiler with the Intel 64-bit C 15196compiler. 15197 15198 ---------------------------------------- 15199Summary of changes for this label: 12_05_01 15200 15201 1) ACPI CA Core Subsystem: 15202 15203The ACPI 2.0 CopyObject operator is fully implemented. This 15204operator creates a new copy of an object (and is also used to 15205bypass the "implicit conversion" mechanism of the Store operator.) 15206 15207The ACPI 2.0 semantics for the SizeOf operator are fully 15208implemented. The change is that performing a SizeOf on a 15209reference object causes an automatic dereference of the object to 15210tha actual value before the size is evaluated. This behavior was 15211undefined in ACPI 1.0. 15212 15213The ACPI 2.0 semantics for the Extended IRQ resource descriptor 15214have been implemented. The interrupt polarity and mode are now 15215independently set. 15216 15217Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 15218appearing in Package objects were not properly converted to 15219integers when the internal Package was converted to an external 15220object (via the AcpiEvaluateObject interface.) 15221 15222Fixed a problem with the namespace object deletion mechanism for 15223objects created by control methods. There were two parts to this 15224problem: 1) Objects created during the initialization phase method 15225parse were not being deleted, and 2) The object owner ID mechanism 15226to track objects was broken. 15227 15228Fixed a problem where the use of the ASL Scope operator within a 15229control method would result in an invalid opcode exception. 15230 15231Fixed a problem introduced in the previous label where the buffer 15232length required for the _PRT structure was not being returned 15233correctly. 15234 15235Code and Data Size: Current core subsystem library sizes are shown 15236below. These are the code and data sizes for the acpica.lib 15237produced by the Microsoft Visual C++ 6.0 compiler, and these 15238values do not include any ACPI driver or OSPM code. The debug 15239version of the code includes the debug output trace mechanism and 15240has a larger code and data size. Note that these values will vary 15241depending on the efficiency of the compiler and the compiler 15242options used during generation. 15243 15244 Previous Release (11_20_01) 15245 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15246 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15247 15248 Current Release: 15249 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15250 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15251 15252 2) Linux: 15253 15254Updated all files to apply cleanly against 2.4.16. 15255 15256Added basic PCI Interrupt Routing Table (PRT) support for IA32 15257(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 15258version supports both static and dyanmic PRT entries, but dynamic 15259entries are treated as if they were static (not yet 15260reconfigurable). Architecture- specific code to use this data is 15261absent on IA32 but should be available shortly. 15262 15263Changed the initialization sequence to start the ACPI interpreter 15264(acpi_init) prior to initialization of the PCI driver (pci_init) 15265in init/main.c. This ordering is required to support PRT and 15266facilitate other (future) enhancement. A side effect is that the 15267ACPI bus driver and certain device drivers can no longer be loaded 15268as modules. 15269 15270Modified the 'make menuconfig' options to allow PCI Interrupt 15271Routing support to be included without the ACPI Bus and other 15272device drivers. 15273 15274 3) ASL Compiler, version X2033: 15275 15276Fixed some issues with the use of the new CopyObject and 15277DataTableRegion operators. Both are fully functional. 15278 15279 ---------------------------------------- 15280Summary of changes for this label: 11_20_01 15281 15282 20 November 2001. Summary of changes for this release. 15283 15284 1) ACPI CA Core Subsystem: 15285 15286Updated Index support to match ACPI 2.0 semantics. Storing a 15287Integer, String, or Buffer to an Index of a Buffer will store only 15288the least-significant byte of the source to the Indexed buffer 15289byte. Multiple writes are not performed. 15290 15291Fixed a problem where the access type used in an AccessAs ASL 15292operator was not recorded correctly into the field object. 15293 15294Fixed a problem where ASL Event objects were created in a 15295signalled state. Events are now created in an unsignalled state. 15296 15297The internal object cache is now purged after table loading and 15298initialization to reduce the use of dynamic kernel memory -- on 15299the assumption that object use is greatest during the parse phase 15300of the entire table (versus the run-time use of individual control 15301methods.) 15302 15303ACPI 2.0 variable-length packages are now fully operational. 15304 15305Code and Data Size: Code and Data optimizations have permitted new 15306feature development with an actual reduction in the library size. 15307Current core subsystem library sizes are shown below. These are 15308the code and data sizes for the acpica.lib produced by the 15309Microsoft Visual C++ 6.0 compiler, and these values do not include 15310any ACPI driver or OSPM code. The debug version of the code 15311includes the debug output trace mechanism and has a larger code 15312and data size. Note that these values will vary depending on the 15313efficiency of the compiler and the compiler options used during 15314generation. 15315 15316 Previous Release (11_09_01): 15317 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15318 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15319 15320 Current Release: 15321 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15322 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15323 15324 2) Linux: 15325 15326Enhanced the ACPI boot-time initialization code to allow the use 15327of Local APIC tables for processor enumeration on IA-32, and to 15328pave the way for a fully MPS-free boot (on SMP systems) in the 15329near future. This functionality replaces 15330arch/i386/kernel/acpitables.c, which was introduced in an earlier 153312.4.15-preX release. To enable this feature you must add 15332"acpi_boot=on" to the kernel command line -- see the help entry 15333for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 15334the works... 15335 15336Restructured the configuration options to allow boot-time table 15337parsing support without inclusion of the ACPI Interpreter (and 15338other) code. 15339 15340NOTE: This release does not include fixes for the reported events, 15341power-down, and thermal passive cooling issues (coming soon). 15342 15343 3) ASL Compiler: 15344 15345Added additional typechecking for Fields within restricted access 15346Operation Regions. All fields within EC and CMOS regions must be 15347declared with ByteAcc. All fields withing SMBus regions must be 15348declared with the BufferAcc access type. 15349 15350Fixed a problem where the listing file output of control methods 15351no longer interleaved the actual AML code with the ASL source 15352code. 15353 15354 15355 15356 15357---------------------------------------- 15358Summary of changes for this label: 11_09_01 15359 153601) ACPI CA Core Subsystem: 15361 15362Implemented ACPI 2.0-defined support for writes to fields with a 15363Buffer, String, or Integer source operand that is smaller than the 15364target field. In these cases, the source operand is zero-extended 15365to fill the target field. 15366 15367Fixed a problem where a Field starting bit offset (within the 15368parent operation region) was calculated incorrectly if the 15369 15370alignment of the field differed from the access width. This 15371affected CreateWordField, CreateDwordField, CreateQwordField, and 15372possibly other fields that use the "AccessAny" keyword. 15373 15374Fixed a problem introduced in the 11_02_01 release where indirect 15375stores through method arguments did not operate correctly. 15376 153772) Linux: 15378 15379Implemented boot-time ACPI table parsing support 15380(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 15381facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 15382legacy BIOS interfaces (e.g. MPS) for the configuration of system 15383processors, memory, and interrupts during setup_arch(). Note that 15384this patch does not include the required architecture-specific 15385changes required to apply this information -- subsequent patches 15386will be posted for both IA32 and IA64 to achieve this. 15387 15388Added low-level sleep support for IA32 platforms, courtesy of Pat 15389Mochel. This allows IA32 systems to transition to/from various 15390sleeping states (e.g. S1, S3), although the lack of a centralized 15391driver model and power-manageable drivers will prevent its 15392(successful) use on most systems. 15393 15394Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 15395submenu, unified IA32 and IA64 options, added new "Boot using ACPI 15396tables" option, etc. 15397 15398Increased the default timeout for the EC driver from 1ms to 10ms 15399(1000 cycles of 10us) to try to address AE_TIME errors during EC 15400transactions. 15401 15402 ---------------------------------------- 15403Summary of changes for this label: 11_02_01 15404 154051) ACPI CA Core Subsystem: 15406 15407ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 15408(QWordAcc keyword). All ACPI 2.0 64-bit support is now 15409implemented. 15410 15411OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 15412changes to support ACPI 2.0 Qword field access. Read/Write 15413PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 15414accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 15415the value parameter for the address space handler interface is now 15416an ACPI_INTEGER. OSL implementations of these interfaces must now 15417handle the case where the Width parameter is 64. 15418 15419Index Fields: Fixed a problem where unaligned bit assembly and 15420disassembly for IndexFields was not supported correctly. 15421 15422Index and Bank Fields: Nested Index and Bank Fields are now 15423supported. During field access, a check is performed to ensure 15424that the value written to an Index or Bank register is not out of 15425the range of the register. The Index (or Bank) register is 15426written before each access to the field data. Future support will 15427include allowing individual IndexFields to be wider than the 15428DataRegister width. 15429 15430Fields: Fixed a problem where the AML interpreter was incorrectly 15431attempting to write beyond the end of a Field/OpRegion. This was 15432a boundary case that occurred when a DWORD field was written to a 15433BYTE access OpRegion, forcing multiple writes and causing the 15434interpreter to write one datum too many. 15435 15436Fields: Fixed a problem with Field/OpRegion access where the 15437starting bit address of a field was incorrectly calculated if the 15438current access type was wider than a byte (WordAcc, DwordAcc, or 15439QwordAcc). 15440 15441Fields: Fixed a problem where forward references to individual 15442FieldUnits (individual Field names within a Field definition) were 15443not resolved during the AML table load. 15444 15445Fields: Fixed a problem where forward references from a Field 15446definition to the parent Operation Region definition were not 15447resolved during the AML table load. 15448 15449Fields: Duplicate FieldUnit names within a scope are now detected 15450during AML table load. 15451 15452Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 15453returned an incorrect name for the root node. 15454 15455Code and Data Size: Code and Data optimizations have permitted new 15456feature development with an actual reduction in the library size. 15457Current core subsystem library sizes are shown below. These are 15458the code and data sizes for the acpica.lib produced by the 15459Microsoft Visual C++ 6.0 compiler, and these values do not include 15460any ACPI driver or OSPM code. The debug version of the code 15461includes the debug output trace mechanism and has a larger code 15462and data size. Note that these values will vary depending on the 15463efficiency of the compiler and the compiler options used during 15464generation. 15465 15466 Previous Release (10_18_01): 15467 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15468 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15469 15470 Current Release: 15471 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15472 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15473 15474 2) Linux: 15475 15476Improved /proc processor output (Pavel Machek) Re-added 15477MODULE_LICENSE("GPL") to all modules. 15478 15479 3) ASL Compiler version X2030: 15480 15481Duplicate FieldUnit names within a scope are now detected and 15482flagged as errors. 15483 15484 4) Documentation: 15485 15486Programmer Reference updated to reflect OSL and address space 15487handler interface changes described above. 15488 15489---------------------------------------- 15490Summary of changes for this label: 10_18_01 15491 15492ACPI CA Core Subsystem: 15493 15494Fixed a problem with the internal object reference count mechanism 15495that occasionally caused premature object deletion. This resolves 15496all of the outstanding problem reports where an object is deleted 15497in the middle of an interpreter evaluation. Although this problem 15498only showed up in rather obscure cases, the solution to the 15499problem involved an adjustment of all reference counts involving 15500objects attached to namespace nodes. 15501 15502Fixed a problem with Field support in the interpreter where 15503writing to an aligned field whose length is an exact multiple (2 15504or greater) of the field access granularity would cause an attempt 15505to write beyond the end of the field. 15506 15507The top level AML opcode execution functions within the 15508interpreter have been renamed with a more meaningful and 15509consistent naming convention. The modules exmonad.c and 15510exdyadic.c were eliminated. New modules are exoparg1.c, 15511exoparg2.c, exoparg3.c, and exoparg6.c. 15512 15513Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 15514 15515Fixed a problem where the AML debugger was causing some internal 15516objects to not be deleted during subsystem termination. 15517 15518Fixed a problem with the external AcpiEvaluateObject interface 15519where the subsystem would fault if the named object to be 15520evaluated refered to a constant such as Zero, Ones, etc. 15521 15522Fixed a problem with IndexFields and BankFields where the 15523subsystem would fault if the index, data, or bank registers were 15524not defined in the same scope as the field itself. 15525 15526Added printf format string checking for compilers that support 15527this feature. Corrected more than 50 instances of issues with 15528format specifiers within invocations of ACPI_DEBUG_PRINT 15529throughout the core subsystem code. 15530 15531The ASL "Revision" operator now returns the ACPI support level 15532implemented in the core - the value "2" since the ACPI 2.0 support 15533is more than 50% implemented. 15534 15535Enhanced the output of the AML debugger "dump namespace" command 15536to output in a more human-readable form. 15537 15538Current core subsystem library code sizes are shown below. These 15539 15540are the code and data sizes for the acpica.lib produced by the 15541Microsoft Visual C++ 6.0 compiler, and these values do not include 15542any ACPI driver or OSPM code. The debug version of the code 15543includes the full debug trace mechanism -- leading to a much 15544 15545larger code and data size. Note that these values will vary 15546depending on the efficiency of the compiler and the compiler 15547options used during generation. 15548 15549 Previous Label (09_20_01): 15550 Non-Debug Version: 65K Code, 5K Data, 70K Total 15551 Debug Version: 138K Code, 58K Data, 196K Total 15552 15553 This Label: 15554 15555 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15556 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15557 15558Linux: 15559 15560Implemented a "Bad BIOS Blacklist" to track machines that have 15561known ASL/AML problems. 15562 15563Enhanced the /proc interface for the thermal zone driver and added 15564support for _HOT (the critical suspend trip point). The 'info' 15565file now includes threshold/policy information, and allows setting 15566of _SCP (cooling preference) and _TZP (polling frequency) values 15567to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 15568frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 15569preference to the passive/quiet mode (if supported by the ASL). 15570 15571Implemented a workaround for a gcc bug that resuted in an OOPs 15572when loading the control method battery driver. 15573 15574 ---------------------------------------- 15575Summary of changes for this label: 09_20_01 15576 15577 ACPI CA Core Subsystem: 15578 15579The AcpiEnableEvent and AcpiDisableEvent interfaces have been 15580modified to allow individual GPE levels to be flagged as wake- 15581enabled (i.e., these GPEs are to remain enabled when the platform 15582sleeps.) 15583 15584The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 15585support wake-enabled GPEs. This means that upon entering the 15586sleep state, all GPEs that are not wake-enabled are disabled. 15587When leaving the sleep state, these GPEs are reenabled. 15588 15589A local double-precision divide/modulo module has been added to 15590enhance portability to OS kernels where a 64-bit math library is 15591not available. The new module is "utmath.c". 15592 15593Several optimizations have been made to reduce the use of CPU 15594stack. Originally over 2K, the maximum stack usage is now below 155952K at 1860 bytes (1.82k) 15596 15597Fixed a problem with the AcpiGetFirmwareTable interface where the 15598root table pointer was not mapped into a logical address properly. 15599 15600Fixed a problem where a NULL pointer was being dereferenced in the 15601interpreter code for the ASL Notify operator. 15602 15603Fixed a problem where the use of the ASL Revision operator 15604returned an error. This operator now returns the current version 15605of the ACPI CA core subsystem. 15606 15607Fixed a problem where objects passed as control method parameters 15608to AcpiEvaluateObject were always deleted at method termination. 15609However, these objects may end up being stored into the namespace 15610by the called method. The object reference count mechanism was 15611applied to these objects instead of a force delete. 15612 15613Fixed a problem where static strings or buffers (contained in the 15614AML code) that are declared as package elements within the ASL 15615code could cause a fault because the interpreter would attempt to 15616delete them. These objects are now marked with the "static 15617object" flag to prevent any attempt to delete them. 15618 15619Implemented an interpreter optimization to use operands directly 15620from the state object instead of extracting the operands to local 15621variables. This reduces stack use and code size, and improves 15622performance. 15623 15624The module exxface.c was eliminated as it was an unnecessary extra 15625layer of code. 15626 15627Current core subsystem library code sizes are shown below. These 15628are the code and data sizes for the acpica.lib produced by the 15629Microsoft Visual C++ 6.0 compiler, and these values do not include 15630any ACPI driver or OSPM code. The debug version of the code 15631includes the full debug trace mechanism -- leading to a much 15632larger code and data size. Note that these values will vary 15633depending on the efficiency of the compiler and the compiler 15634options used during generation. 15635 15636 Non-Debug Version: 65K Code, 5K Data, 70K Total 15637(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 15638Total (Previously 195K) 15639 15640Linux: 15641 15642Support for ACPI 2.0 64-bit integers has been added. All ACPI 15643Integer objects are now 64 bits wide 15644 15645All Acpi data types and structures are now in lower case. Only 15646Acpi macros are upper case for differentiation. 15647 15648 Documentation: 15649 15650Changes to the external interfaces as described above. 15651 15652 ---------------------------------------- 15653Summary of changes for this label: 08_31_01 15654 15655 ACPI CA Core Subsystem: 15656 15657A bug with interpreter implementation of the ASL Divide operator 15658was found and fixed. The implicit function return value (not the 15659explicit store operands) was returning the remainder instead of 15660the quotient. This was a longstanding bug and it fixes several 15661known outstanding issues on various platforms. 15662 15663The ACPI_DEBUG_PRINT and function trace entry/exit macros have 15664been further optimized for size. There are 700 invocations of the 15665DEBUG_PRINT macro alone, so each optimization reduces the size of 15666the debug version of the subsystem significantly. 15667 15668A stack trace mechanism has been implemented. The maximum stack 15669usage is about 2K on 32-bit platforms. The debugger command "stat 15670stack" will display the current maximum stack usage. 15671 15672All public symbols and global variables within the subsystem are 15673now prefixed with the string "Acpi". This keeps all of the 15674symbols grouped together in a kernel map, and avoids conflicts 15675with other kernel subsystems. 15676 15677Most of the internal fixed lookup tables have been moved into the 15678code segment via the const operator. 15679 15680Several enhancements have been made to the interpreter to both 15681reduce the code size and improve performance. 15682 15683Current core subsystem library code sizes are shown below. These 15684are the code and data sizes for the acpica.lib produced by the 15685Microsoft Visual C++ 6.0 compiler, and these values do not include 15686any ACPI driver or OSPM code. The debug version of the code 15687includes the full debug trace mechanism which contains over 700 15688invocations of the DEBUG_PRINT macro, 500 function entry macro 15689invocations, and over 900 function exit macro invocations -- 15690leading to a much larger code and data size. Note that these 15691values will vary depending on the efficiency of the compiler and 15692the compiler options used during generation. 15693 15694 Non-Debug Version: 64K Code, 5K Data, 69K Total 15695Debug Version: 137K Code, 58K Data, 195K Total 15696 15697 Linux: 15698 15699Implemented wbinvd() macro, pending a kernel-wide definition. 15700 15701Fixed /proc/acpi/event to handle poll() and short reads. 15702 15703 ASL Compiler, version X2026: 15704 15705Fixed a problem introduced in the previous label where the AML 15706 15707code emitted for package objects produced packages with zero 15708length. 15709 15710 ---------------------------------------- 15711Summary of changes for this label: 08_16_01 15712 15713ACPI CA Core Subsystem: 15714 15715The following ACPI 2.0 ASL operators have been implemented in the 15716AML interpreter (These are already supported by the Intel ASL 15717compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 15718ToBuffer. Support for 64-bit AML constants is implemented in the 15719AML parser, debugger, and disassembler. 15720 15721The internal memory tracking mechanism (leak detection code) has 15722been upgraded to reduce the memory overhead (a separate tracking 15723block is no longer allocated for each memory allocation), and now 15724supports all of the internal object caches. 15725 15726The data structures and code for the internal object caches have 15727been coelesced and optimized so that there is a single cache and 15728memory list data structure and a single group of functions that 15729implement generic cache management. This has reduced the code 15730size in both the debug and release versions of the subsystem. 15731 15732The DEBUG_PRINT macro(s) have been optimized for size and replaced 15733by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 15734different, because it generates a single call to an internal 15735function. This results in a savings of about 90 bytes per 15736invocation, resulting in an overall code and data savings of about 1573716% in the debug version of the subsystem. 15738 15739 Linux: 15740 15741Fixed C3 disk corruption problems and re-enabled C3 on supporting 15742machines. 15743 15744Integrated low-level sleep code by Patrick Mochel. 15745 15746Further tweaked source code Linuxization. 15747 15748Other minor fixes. 15749 15750 ASL Compiler: 15751 15752Support for ACPI 2.0 variable length packages is fixed/completed. 15753 15754Fixed a problem where the optional length parameter for the ACPI 157552.0 ToString operator. 15756 15757Fixed multiple extraneous error messages when a syntax error is 15758detected within the declaration line of a control method. 15759 15760 ---------------------------------------- 15761Summary of changes for this label: 07_17_01 15762 15763ACPI CA Core Subsystem: 15764 15765Added a new interface named AcpiGetFirmwareTable to obtain any 15766ACPI table via the ACPI signature. The interface can be called at 15767any time during kernel initialization, even before the kernel 15768virtual memory manager is initialized and paging is enabled. This 15769allows kernel subsystems to obtain ACPI tables very early, even 15770before the ACPI CA subsystem is initialized. 15771 15772Fixed a problem where Fields defined with the AnyAcc attribute 15773could be resolved to the incorrect address under the following 15774conditions: 1) the field width is larger than 8 bits and 2) the 15775parent operation region is not defined on a DWORD boundary. 15776 15777Fixed a problem where the interpreter is not being locked during 15778namespace initialization (during execution of the _INI control 15779methods), causing an error when an attempt is made to release it 15780later. 15781 15782ACPI 2.0 support in the AML Interpreter has begun and will be 15783ongoing throughout the rest of this year. In this label, The Mod 15784operator is implemented. 15785 15786Added a new data type to contain full PCI addresses named 15787ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 15788and Function values. 15789 15790 Linux: 15791 15792Enhanced the Linux version of the source code to change most 15793capitalized ACPI type names to lowercase. For example, all 15794instances of ACPI_STATUS are changed to acpi_status. This will 15795result in a large diff, but the change is strictly cosmetic and 15796aligns the CA code closer to the Linux coding standard. 15797 15798OSL Interfaces: 15799 15800The interfaces to the PCI configuration space have been changed to 15801add the PCI Segment number and to split the single 32-bit combined 15802DeviceFunction field into two 16-bit fields. This was 15803accomplished by moving the four values that define an address in 15804PCI configuration space (segment, bus, device, and function) to 15805the new ACPI_PCI_ID structure. 15806 15807The changes to the PCI configuration space interfaces led to a 15808reexamination of the complete set of address space access 15809interfaces for PCI, I/O, and Memory. The previously existing 18 15810interfaces have proven difficult to maintain (any small change 15811must be propagated across at least 6 interfaces) and do not easily 15812allow for future expansion to 64 bits if necessary. Also, on some 15813systems, it would not be appropriate to demultiplex the access 15814width (8, 16, 32,or 64) before calling the OSL if the 15815corresponding native OS interfaces contain a similar access width 15816parameter. For these reasons, the 18 address space interfaces 15817have been replaced by these 6 new ones: 15818 15819AcpiOsReadPciConfiguration 15820AcpiOsWritePciConfiguration 15821AcpiOsReadMemory 15822AcpiOsWriteMemory 15823AcpiOsReadPort 15824AcpiOsWritePort 15825 15826Added a new interface named AcpiOsGetRootPointer to allow the OSL 15827to perform the platform and/or OS-specific actions necessary to 15828obtain the ACPI RSDP table pointer. On IA-32 platforms, this 15829interface will simply call down to the CA core to perform the low- 15830memory search for the table. On IA-64, the RSDP is obtained from 15831EFI. Migrating this interface to the OSL allows the CA core to 15832 15833remain OS and platform independent. 15834 15835Added a new interface named AcpiOsSignal to provide a generic 15836"function code and pointer" interface for various miscellaneous 15837signals and notifications that must be made to the host OS. The 15838first such signals are intended to support the ASL Fatal and 15839Breakpoint operators. In the latter case, the AcpiOsBreakpoint 15840interface has been obsoleted. 15841 15842The definition of the AcpiFormatException interface has been 15843changed to simplify its use. The caller no longer must supply a 15844buffer to the call; A pointer to a const string is now returned 15845directly. This allows the call to be easily used in printf 15846statements, etc. since the caller does not have to manage a local 15847buffer. 15848 15849 15850 ASL Compiler, Version X2025: 15851 15852The ACPI 2.0 Switch/Case/Default operators have been implemented 15853and are fully functional. They will work with all ACPI 1.0 15854interpreters, since the operators are simply translated to If/Else 15855pairs. 15856 15857The ACPI 2.0 ElseIf operator is implemented and will also work 15858with 1.0 interpreters, for the same reason. 15859 15860Implemented support for ACPI 2.0 variable-length packages. These 15861packages have a separate opcode, and their size is determined by 15862the interpreter at run-time. 15863 15864Documentation The ACPI CA Programmer Reference has been updated to 15865reflect the new interfaces and changes to existing interfaces. 15866 15867 ------------------------------------------ 15868Summary of changes for this label: 06_15_01 15869 15870 ACPI CA Core Subsystem: 15871 15872Fixed a problem where a DWORD-accessed field within a Buffer 15873object would get its byte address inadvertently rounded down to 15874the nearest DWORD. Buffers are always Byte-accessible. 15875 15876 ASL Compiler, version X2024: 15877 15878Fixed a problem where the Switch() operator would either fault or 15879hang the compiler. Note however, that the AML code for this ACPI 158802.0 operator is not yet implemented. 15881 15882Compiler uses the new AcpiOsGetTimer interface to obtain compile 15883timings. 15884 15885Implementation of the CreateField operator automatically converts 15886a reference to a named field within a resource descriptor from a 15887byte offset to a bit offset if required. 15888 15889Added some missing named fields from the resource descriptor 15890support. These are the names that are automatically created by the 15891compiler to reference fields within a descriptor. They are only 15892valid at compile time and are not passed through to the AML 15893interpreter. 15894 15895Resource descriptor named fields are now typed as Integers and 15896subject to compile-time typechecking when used in expressions. 15897 15898 ------------------------------------------ 15899Summary of changes for this label: 05_18_01 15900 15901 ACPI CA Core Subsystem: 15902 15903Fixed a couple of problems in the Field support code where bits 15904from adjacent fields could be returned along with the proper field 15905bits. Restructured the field support code to improve performance, 15906readability and maintainability. 15907 15908New DEBUG_PRINTP macro automatically inserts the procedure name 15909into the output, saving hundreds of copies of procedure name 15910strings within the source, shrinking the memory footprint of the 15911debug version of the core subsystem. 15912 15913 Source Code Structure: 15914 15915The source code directory tree was restructured to reflect the 15916current organization of the component architecture. Some files 15917and directories have been moved and/or renamed. 15918 15919 Linux: 15920 15921Fixed leaking kacpidpc processes. 15922 15923Fixed queueing event data even when /proc/acpi/event is not 15924opened. 15925 15926 ASL Compiler, version X2020: 15927 15928Memory allocation performance enhancement - over 24X compile time 15929improvement on large ASL files. Parse nodes and namestring 15930buffers are now allocated from a large internal compiler buffer. 15931 15932The temporary .SRC file is deleted unless the "-s" option is 15933specified 15934 15935The "-d" debug output option now sends all output to the .DBG file 15936instead of the console. 15937 15938"External" second parameter is now optional 15939 15940"ElseIf" syntax now properly allows the predicate 15941 15942Last operand to "Load" now recognized as a Target operand 15943 15944Debug object can now be used anywhere as a normal object. 15945 15946ResourceTemplate now returns an object of type BUFFER 15947 15948EISAID now returns an object of type INTEGER 15949 15950"Index" now works with a STRING operand 15951 15952"LoadTable" now accepts optional parameters 15953 15954"ToString" length parameter is now optional 15955 15956"Interrupt (ResourceType," parse error fixed. 15957 15958"Register" with a user-defined region space parse error fixed 15959 15960Escaped backslash at the end of a string ("\\") scan/parse error 15961fixed 15962 15963"Revision" is now an object of type INTEGER. 15964 15965 15966 15967------------------------------------------ 15968Summary of changes for this label: 05_02_01 15969 15970Linux: 15971 15972/proc/acpi/event now blocks properly. 15973 15974Removed /proc/sys/acpi. You can still dump your DSDT from 15975/proc/acpi/dsdt. 15976 15977 ACPI CA Core Subsystem: 15978 15979Fixed a problem introduced in the previous label where some of the 15980"small" resource descriptor types were not recognized. 15981 15982Improved error messages for the case where an ASL Field is outside 15983the range of the parent operation region. 15984 15985 ASL Compiler, version X2018: 15986 15987 15988Added error detection for ASL Fields that extend beyond the length 15989of the parent operation region (only if the length of the region 15990is known at compile time.) This includes fields that have a 15991minimum access width that is smaller than the parent region, and 15992individual field units that are partially or entirely beyond the 15993extent of the parent. 15994 15995 15996 15997------------------------------------------ 15998Summary of changes for this label: 04_27_01 15999 16000 ACPI CA Core Subsystem: 16001 16002Fixed a problem where the namespace mutex could be released at the 16003wrong time during execution of AcpiRemoveAddressSpaceHandler. 16004 16005Added optional thread ID output for debug traces, to simplify 16006debugging of multiple threads. Added context switch notification 16007when the debug code realizes that a different thread is now 16008executing ACPI code. 16009 16010Some additional external data types have been prefixed with the 16011string "ACPI_" for consistency. This may effect existing code. 16012The data types affected are the external callback typedefs - e.g., 16013 16014WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 16015 16016 Linux: 16017 16018Fixed an issue with the OSL semaphore implementation where a 16019thread was waking up with an error from receiving a SIGCHLD 16020signal. 16021 16022Linux version of ACPI CA now uses the system C library for string 16023manipulation routines instead of a local implementation. 16024 16025Cleaned up comments and removed TBDs. 16026 16027 ASL Compiler, version X2017: 16028 16029Enhanced error detection and reporting for all file I/O 16030operations. 16031 16032 Documentation: 16033 16034Programmer Reference updated to version 1.06. 16035 16036 16037 16038------------------------------------------ 16039Summary of changes for this label: 04_13_01 16040 16041 ACPI CA Core Subsystem: 16042 16043Restructured support for BufferFields and RegionFields. 16044BankFields support is now fully operational. All known 32-bit 16045limitations on field sizes have been removed. Both BufferFields 16046and (Operation) RegionFields are now supported by the same field 16047management code. 16048 16049Resource support now supports QWORD address and IO resources. The 1605016/32/64 bit address structures and the Extended IRQ structure 16051have been changed to properly handle Source Resource strings. 16052 16053A ThreadId of -1 is now used to indicate a "mutex not acquired" 16054condition internally and must never be returned by AcpiOsThreadId. 16055This reserved value was changed from 0 since Unix systems allow a 16056thread ID of 0. 16057 16058Linux: 16059 16060Driver code reorganized to enhance portability 16061 16062Added a kernel configuration option to control ACPI_DEBUG 16063 16064Fixed the EC driver to honor _GLK. 16065 16066ASL Compiler, version X2016: 16067 16068Fixed support for the "FixedHw" keyword. Previously, the FixedHw 16069address space was set to 0, not 0x7f as it should be. 16070 16071 ------------------------------------------ 16072Summary of changes for this label: 03_13_01 16073 16074 ACPI CA Core Subsystem: 16075 16076During ACPI initialization, the _SB_._INI method is now run if 16077present. 16078 16079Notify handler fix - notifies are deferred until the parent method 16080completes execution. This fixes the "mutex already acquired" 16081issue seen occasionally. 16082 16083Part of the "implicit conversion" rules in ACPI 2.0 have been 16084found to cause compatibility problems with existing ASL/AML. The 16085convert "result-to-target-type" implementation has been removed 16086for stores to method Args and Locals. Source operand conversion 16087is still fully implemented. Possible changes to ACPI 2.0 16088specification pending. 16089 16090Fix to AcpiRsCalculatePciRoutingTableLength to return correct 16091length. 16092 16093Fix for compiler warnings for 64-bit compiles. 16094 16095 Linux: 16096 16097/proc output aligned for easier parsing. 16098 16099Release-version compile problem fixed. 16100 16101New kernel configuration options documented in Configure.help. 16102 16103IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 16104context" message. 16105 16106 OSPM: 16107 16108Power resource driver integrated with bus manager. 16109 16110Fixed kernel fault during active cooling for thermal zones. 16111 16112Source Code: 16113 16114The source code tree has been restructured. 16115 16116 16117 16118------------------------------------------ 16119Summary of changes for this label: 03_02_01 16120 16121 Linux OS Services Layer (OSL): 16122 16123Major revision of all Linux-specific code. 16124 16125Modularized all ACPI-specific drivers. 16126 16127Added new thermal zone and power resource drivers. 16128 16129Revamped /proc interface (new functionality is under /proc/acpi). 16130 16131New kernel configuration options. 16132 16133 Linux known issues: 16134 16135New kernel configuration options not documented in Configure.help 16136yet. 16137 16138 16139Module dependencies not currently implemented. If used, they 16140should be loaded in this order: busmgr, power, ec, system, 16141processor, battery, ac_adapter, button, thermal. 16142 16143Modules will not load if CONFIG_MODVERSION is set. 16144 16145IBM 600E - entering S5 may reboot instead of shutting down. 16146 16147IBM 600E - Sleep button may generate "Invalid <NULL> context" 16148message. 16149 16150Some systems may fail with "execution mutex already acquired" 16151message. 16152 16153 ACPI CA Core Subsystem: 16154 16155Added a new OSL Interface, AcpiOsGetThreadId. This was required 16156for the deadlock detection code. Defined to return a non-zero, 32- 16157bit thread ID for the currently executing thread. May be a non- 16158zero constant integer on single-thread systems. 16159 16160Implemented deadlock detection for internal subsystem mutexes. We 16161may add conditional compilation for this code (debug only) later. 16162 16163ASL/AML Mutex object semantics are now fully supported. This 16164includes multiple acquires/releases by owner and support for the 16165 16166Mutex SyncLevel parameter. 16167 16168A new "Force Release" mechanism automatically frees all ASL 16169Mutexes that have been acquired but not released when a thread 16170exits the interpreter. This forces conformance to the ACPI spec 16171("All mutexes must be released when an invocation exits") and 16172prevents deadlocked ASL threads. This mechanism can be expanded 16173(later) to monitor other resource acquisitions if OEM ASL code 16174continues to misbehave (which it will). 16175 16176Several new ACPI exception codes have been added for the Mutex 16177support. 16178 16179Recursive method calls are now allowed and supported (the ACPI 16180spec does in fact allow recursive method calls.) The number of 16181recursive calls is subject to the restrictions imposed by the 16182SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 16183parameter. 16184 16185Implemented support for the SyncLevel parameter for control 16186methods (ACPI 2.0 feature) 16187 16188Fixed a deadlock problem when multiple threads attempted to use 16189the interpreter. 16190 16191Fixed a problem where the string length of a String package 16192element was not always set in a package returned from 16193AcpiEvaluateObject. 16194 16195Fixed a problem where the length of a String package element was 16196not always included in the length of the overall package returned 16197from AcpiEvaluateObject. 16198 16199Added external interfaces (Acpi*) to the ACPI debug memory 16200manager. This manager keeps a list of all outstanding 16201allocations, and can therefore detect memory leaks and attempts to 16202free memory blocks more than once. Useful for code such as the 16203power manager, etc. May not be appropriate for device drivers. 16204Performance with the debug code enabled is slow. 16205 16206The ACPI Global Lock is now an optional hardware element. 16207 16208 ASL Compiler Version X2015: 16209 16210Integrated changes to allow the compiler to be generated on 16211multiple platforms. 16212 16213Linux makefile added to generate the compiler on Linux 16214 16215 Source Code: 16216 16217All platform-specific headers have been moved to their own 16218subdirectory, Include/Platform. 16219 16220New source file added, Interpreter/ammutex.c 16221 16222New header file, Include/acstruct.h 16223 16224 Documentation: 16225 16226The programmer reference has been updated for the following new 16227interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 16228 16229 ------------------------------------------ 16230Summary of changes for this label: 02_08_01 16231 16232Core ACPI CA Subsystem: Fixed a problem where an error was 16233incorrectly returned if the return resource buffer was larger than 16234the actual data (in the resource interfaces). 16235 16236References to named objects within packages are resolved to the 16237 16238full pathname string before packages are returned directly (via 16239the AcpiEvaluateObject interface) or indirectly via the resource 16240interfaces. 16241 16242Linux OS Services Layer (OSL): 16243 16244Improved /proc battery interface. 16245 16246 16247Added C-state debugging output and other miscellaneous fixes. 16248 16249ASL Compiler Version X2014: 16250 16251All defined method arguments can now be used as local variables, 16252including the ones that are not actually passed in as parameters. 16253The compiler tracks initialization of the arguments and issues an 16254exception if they are used without prior assignment (just like 16255locals). 16256 16257The -o option now specifies a filename prefix that is used for all 16258output files, including the AML output file. Otherwise, the 16259default behavior is as follows: 1) the AML goes to the file 16260specified in the DSDT. 2) all other output files use the input 16261source filename as the base. 16262 16263 ------------------------------------------ 16264Summary of changes for this label: 01_25_01 16265 16266Core ACPI CA Subsystem: Restructured the implementation of object 16267store support within the interpreter. This includes support for 16268the Store operator as well as any ASL operators that include a 16269target operand. 16270 16271Partially implemented support for Implicit Result-to-Target 16272conversion. This is when a result object is converted on the fly 16273to the type of an existing target object. Completion of this 16274support is pending further analysis of the ACPI specification 16275concerning this matter. 16276 16277CPU-specific code has been removed from the subsystem (hardware 16278directory). 16279 16280New Power Management Timer functions added 16281 16282Linux OS Services Layer (OSL): Moved system state transition code 16283to the core, fixed it, and modified Linux OSL accordingly. 16284 16285Fixed C2 and C3 latency calculations. 16286 16287 16288We no longer use the compilation date for the version message on 16289initialization, but retrieve the version from AcpiGetSystemInfo(). 16290 16291Incorporated for fix Sony VAIO machines. 16292 16293Documentation: The Programmer Reference has been updated and 16294reformatted. 16295 16296 16297ASL Compiler: Version X2013: Fixed a problem where the line 16298numbering and error reporting could get out of sync in the 16299presence of multiple include files. 16300 16301 ------------------------------------------ 16302Summary of changes for this label: 01_15_01 16303 16304Core ACPI CA Subsystem: 16305 16306Implemented support for type conversions in the execution of the 16307ASL Concatenate operator (The second operand is converted to 16308match the type of the first operand before concatenation.) 16309 16310Support for implicit source operand conversion is partially 16311implemented. The ASL source operand types Integer, Buffer, and 16312String are freely interchangeable for most ASL operators and are 16313converted by the interpreter on the fly as required. Implicit 16314Target operand conversion (where the result is converted to the 16315target type before storing) is not yet implemented. 16316 16317Support for 32-bit and 64-bit BCD integers is implemented. 16318 16319Problem fixed where a field read on an aligned field could cause a 16320read past the end of the field. 16321 16322New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 16323does not return a value, but the caller expects one. (The ASL 16324compiler flags this as a warning.) 16325 16326ASL Compiler: 16327 16328Version X2011: 163291. Static typechecking of all operands is implemented. This 16330prevents the use of invalid objects (such as using a Package where 16331an Integer is required) at compile time instead of at interpreter 16332run-time. 163332. The ASL source line is printed with ALL errors and warnings. 163343. Bug fix for source EOF without final linefeed. 163354. Debug option is split into a parse trace and a namespace trace. 163365. Namespace output option (-n) includes initial values for 16337integers and strings. 163386. Parse-only option added for quick syntax checking. 163397. Compiler checks for duplicate ACPI name declarations 16340 16341Version X2012: 163421. Relaxed typechecking to allow interchangeability between 16343strings, integers, and buffers. These types are now converted by 16344the interpreter at runtime. 163452. Compiler reports time taken by each internal subsystem in the 16346debug output file. 16347 16348 16349 ------------------------------------------ 16350Summary of changes for this label: 12_14_00 16351 16352ASL Compiler: 16353 16354This is the first official release of the compiler. Since the 16355compiler requires elements of the Core Subsystem, this label 16356synchronizes everything. 16357 16358------------------------------------------ 16359Summary of changes for this label: 12_08_00 16360 16361 16362Fixed a problem where named references within the ASL definition 16363of both OperationRegions and CreateXXXFields did not work 16364properly. The symptom was an AE_AML_OPERAND_TYPE during 16365initialization of the region/field. This is similar (but not 16366related internally) to the problem that was fixed in the last 16367label. 16368 16369Implemented both 32-bit and 64-bit support for the BCD ASL 16370functions ToBCD and FromBCD. 16371 16372Updated all legal headers to include "2000" in the copyright 16373years. 16374 16375 ------------------------------------------ 16376Summary of changes for this label: 12_01_00 16377 16378Fixed a problem where method invocations within the ASL definition 16379of both OperationRegions and CreateXXXFields did not work 16380properly. The symptom was an AE_AML_OPERAND_TYPE during 16381initialization of the region/field: 16382 16383 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 16384[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 16385(0x3005) 16386 16387Fixed a problem where operators with more than one nested 16388subexpression would fail. The symptoms were varied, by mostly 16389AE_AML_OPERAND_TYPE errors. This was actually a rather serious 16390problem that has gone unnoticed until now. 16391 16392 Subtract (Add (1,2), Multiply (3,4)) 16393 16394Fixed a problem where AcpiGetHandle didn't quite get fixed in the 16395previous build (The prefix part of a relative path was handled 16396incorrectly). 16397 16398Fixed a problem where Operation Region initialization failed if 16399the operation region name was a "namepath" instead of a simple 16400"nameseg". Symptom was an AE_NO_OPERAND error. 16401 16402Fixed a problem where an assignment to a local variable via the 16403indirect RefOf mechanism only worked for the first such 16404assignment. Subsequent assignments were ignored. 16405 16406 ------------------------------------------ 16407Summary of changes for this label: 11_15_00 16408 16409ACPI 2.0 table support with backwards support for ACPI 1.0 and the 164100.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 16411the AML interpreter does NOT have support for the new 2.0 ASL 16412grammar terms at this time. 16413 16414All ACPI hardware access is via the GAS structures in the ACPI 2.0 16415FADT. 16416 16417All physical memory addresses across all platforms are now 64 bits 16418wide. Logical address width remains dependent on the platform 16419(i.e., "void *"). 16420 16421AcpiOsMapMemory interface changed to a 64-bit physical address. 16422 16423The AML interpreter integer size is now 64 bits, as per the ACPI 164242.0 specification. 16425 16426For backwards compatibility with ACPI 1.0, ACPI tables with a 16427revision number less than 2 use 32-bit integers only. 16428 16429Fixed a problem where the evaluation of OpRegion operands did not 16430always resolve them to numbers properly. 16431 16432------------------------------------------ 16433Summary of changes for this label: 10_20_00 16434 16435Fix for CBN_._STA issue. This fix will allow correct access to 16436CBN_ OpRegions when the _STA returns 0x8. 16437 16438Support to convert ACPI constants (Ones, Zeros, One) to actual 16439values before a package object is returned 16440 16441Fix for method call as predicate to if/while construct causing 16442incorrect if/while behavior 16443 16444Fix for Else block package lengths sometimes calculated wrong (if 16445block > 63 bytes) 16446 16447Fix for Processor object length field, was always zero 16448 16449Table load abort if FACP sanity check fails 16450 16451Fix for problem with Scope(name) if name already exists 16452 16453Warning emitted if a named object referenced cannot be found 16454(resolved) during method execution. 16455 16456 16457 16458 16459 16460------------------------------------------ 16461Summary of changes for this label: 9_29_00 16462 16463New table initialization interfaces: AcpiInitializeSubsystem no 16464longer has any parameters AcpiFindRootPointer - Find the RSDP (if 16465necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 16466>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 16467AcpiLoadTables 16468 16469Note: These interface changes require changes to all existing OSDs 16470 16471The PCI_Config default address space handler is always installed 16472at the root namespace object. 16473 16474------------------------------------------- 16475Summary of changes for this label: 09_15_00 16476 16477The new initialization architecture is implemented. New 16478interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 16479AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 16480 16481(Namespace is automatically loaded when a table is loaded) 16482 16483The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1648452 bytes to 32 bytes. There is usually one of these for every 16485namespace object, so the memory savings is significant. 16486 16487Implemented just-in-time evaluation of the CreateField operators. 16488 16489Bug fixes for IA-64 support have been integrated. 16490 16491Additional code review comments have been implemented 16492 16493The so-called "third pass parse" has been replaced by a final walk 16494through the namespace to initialize all operation regions (address 16495spaces) and fields that have not yet been initialized during the 16496execution of the various _INI and REG methods. 16497 16498New file - namespace/nsinit.c 16499 16500------------------------------------------- 16501Summary of changes for this label: 09_01_00 16502 16503Namespace manager data structures have been reworked to change the 16504primary object from a table to a single object. This has 16505resulted in dynamic memory savings of 3X within the namespace and 165062X overall in the ACPI CA subsystem. 16507 16508Fixed problem where the call to AcpiEvFindPciRootBuses was 16509inadvertently left commented out. 16510 16511Reduced the warning count when generating the source with the GCC 16512compiler. 16513 16514Revision numbers added to each module header showing the 16515SourceSafe version of the file. Please refer to this version 16516number when giving us feedback or comments on individual modules. 16517 16518The main object types within the subsystem have been renamed to 16519clarify their purpose: 16520 16521ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 16522ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 16523ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 16524 16525NOTE: no changes to the initialization sequence are included in 16526this label. 16527 16528------------------------------------------- 16529Summary of changes for this label: 08_23_00 16530 16531Fixed problem where TerminateControlMethod was being called 16532multiple times per method 16533 16534Fixed debugger problem where single stepping caused a semaphore to 16535be oversignalled 16536 16537Improved performance through additional parse object caching - 16538added ACPI_EXTENDED_OP type 16539 16540------------------------------------------- 16541Summary of changes for this label: 08_10_00 16542 16543Parser/Interpreter integration: Eliminated the creation of 16544complete parse trees for ACPI tables and control methods. 16545Instead, parse subtrees are created and then deleted as soon as 16546they are processed (Either entered into the namespace or executed 16547by the interpreter). This reduces the use of dynamic kernel 16548memory significantly. (about 10X) 16549 16550Exception codes broken into classes and renumbered. Be sure to 16551recompile all code that includes acexcep.h. Hopefully we won't 16552have to renumber the codes again now that they are split into 16553classes (environment, programmer, AML code, ACPI table, and 16554internal). 16555 16556Fixed some additional alignment issues in the Resource Manager 16557subcomponent 16558 16559Implemented semaphore tracking in the AcpiExec utility, and fixed 16560several places where mutexes/semaphores were being unlocked 16561without a corresponding lock operation. There are no known 16562semaphore or mutex "leaks" at this time. 16563 16564Fixed the case where an ASL Return operator is used to return an 16565unnamed package. 16566 16567------------------------------------------- 16568Summary of changes for this label: 07_28_00 16569 16570Fixed a problem with the way addresses were calculated in 16571AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 16572manifested itself when a Field was created with WordAccess or 16573DwordAccess, but the field unit defined within the Field was less 16574 16575than a Word or Dword. 16576 16577Fixed a problem in AmlDumpOperands() module's loop to pull 16578operands off of the operand stack to display information. The 16579problem manifested itself as a TLB error on 64-bit systems when 16580accessing an operand stack with two or more operands. 16581 16582Fixed a problem with the PCI configuration space handlers where 16583context was getting confused between accesses. This required a 16584change to the generic address space handler and address space 16585setup definitions. Handlers now get both a global handler context 16586(this is the one passed in by the user when executing 16587AcpiInstallAddressSpaceHandler() and a specific region context 16588that is unique to each region (For example, the _ADR, _SEG and 16589_BBN values associated with a specific region). The generic 16590function definitions have changed to the following: 16591 16592typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 16593UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 16594*HandlerContext, // This used to be void *Context void 16595*RegionContext); // This is an additional parameter 16596 16597typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 16598RegionHandle, UINT32 Function, void *HandlerContext, void 16599**RegionContext); // This used to be **ReturnContext 16600 16601------------------------------------------- 16602Summary of changes for this label: 07_21_00 16603 16604Major file consolidation and rename. All files within the 16605interpreter have been renamed as well as most header files. This 16606was done to prevent collisions with existing files in the host 16607OSs -- filenames such as "config.h" and "global.h" seem to be 16608quite common. The VC project files have been updated. All 16609makefiles will require modification. 16610 16611The parser/interpreter integration continues in Phase 5 with the 16612implementation of a complete 2-pass parse (the AML is parsed 16613twice) for each table; This avoids the construction of a huge 16614parse tree and therefore reduces the amount of dynamic memory 16615required by the subsystem. Greater use of the parse object cache 16616means that performance is unaffected. 16617 16618Many comments from the two code reviews have been rolled in. 16619 16620The 64-bit alignment support is complete. 16621 16622------------------------------------------- 16623Summary of changes for this label: 06_30_00 16624 16625With a nod and a tip of the hat to the technology of yesteryear, 16626we've added support in the source code for 80 column output 16627devices. The code is now mostly constrained to 80 columns or 16628less to support environments and editors that 1) cannot display 16629or print more than 80 characters on a single line, and 2) cannot 16630disable line wrapping. 16631 16632A major restructuring of the namespace data structure has been 16633completed. The result is 1) cleaner and more 16634understandable/maintainable code, and 2) a significant reduction 16635in the dynamic memory requirement for each named ACPI object 16636(almost half). 16637 16638------------------------------------------- 16639Summary of changes for this label: 06_23_00 16640 16641Linux support has been added. In order to obtain approval to get 16642the ACPI CA subsystem into the Linux kernel, we've had to make 16643quite a few changes to the base subsystem that will affect all 16644users (all the changes are generic and OS- independent). The 16645effects of these global changes have been somewhat far reaching. 16646Files have been merged and/or renamed and interfaces have been 16647renamed. The major changes are described below. 16648 16649Osd* interfaces renamed to AcpiOs* to eliminate namespace 16650pollution/confusion within our target kernels. All OSD 16651interfaces must be modified to match the new naming convention. 16652 16653Files merged across the subsystem. A number of the smaller source 16654and header files have been merged to reduce the file count and 16655increase the density of the existing files. There are too many 16656to list here. In general, makefiles that call out individual 16657files will require rebuilding. 16658 16659Interpreter files renamed. All interpreter files now have the 16660prefix am* instead of ie* and is*. 16661 16662Header files renamed: The acapi.h file is now acpixf.h. The 16663acpiosd.h file is now acpiosxf.h. We are removing references to 16664the acronym "API" since it is somewhat windowsy. The new name is 16665"external interface" or xface or xf in the filenames.j 16666 16667 16668All manifest constants have been forced to upper case (some were 16669mixed case.) Also, the string "ACPI_" has been prepended to many 16670(not all) of the constants, typedefs, and structs. 16671 16672The globals "DebugLevel" and "DebugLayer" have been renamed 16673"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 16674 16675All other globals within the subsystem are now prefixed with 16676"AcpiGbl_" Internal procedures within the subsystem are now 16677prefixed with "Acpi" (with only a few exceptions). The original 16678two-letter abbreviation for the subcomponent remains after "Acpi" 16679- for example, CmCallocate became AcpiCmCallocate. 16680 16681Added a source code translation/conversion utility. Used to 16682generate the Linux source code, it can be modified to generate 16683other types of source as well. Can also be used to cleanup 16684existing source by removing extraneous spaces and blank lines. 16685Found in tools/acpisrc/* 16686 16687OsdUnMapMemory was renamed to OsdUnmapMemory and then 16688AcpiOsUnmapMemory. (UnMap became Unmap). 16689 16690A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 16691When set to one, this indicates that the caller wants to use the 16692 16693semaphore as a mutex, not a counting semaphore. ACPI CA uses 16694both types. However, implementers of this call may want to use 16695different OS primitives depending on the type of semaphore 16696requested. For example, some operating systems provide separate 16697 16698"mutex" and "semaphore" interfaces - where the mutex interface is 16699much faster because it doesn't have all the overhead of a full 16700semaphore implementation. 16701 16702Fixed a deadlock problem where a method that accesses the PCI 16703address space can block forever if it is the first access to the 16704space. 16705 16706------------------------------------------- 16707Summary of changes for this label: 06_02_00 16708 16709Support for environments that cannot handle unaligned data 16710accesses (e.g. firmware and OS environments devoid of alignment 16711handler technology namely SAL/EFI and the IA-64 Linux kernel) has 16712been added (via configurable macros) in these three areas: - 16713Transfer of data from the raw AML byte stream is done via byte 16714moves instead of word/dword/qword moves. - External objects are 16715aligned within the user buffer, including package elements (sub- 16716objects). - Conversion of name strings to UINT32 Acpi Names is now 16717done byte-wise. 16718 16719The Store operator was modified to mimic Microsoft's 16720implementation when storing to a Buffer Field. 16721 16722Added a check of the BM_STS bit before entering C3. 16723 16724The methods subdirectory has been obsoleted and removed. A new 16725file, cmeval.c subsumes the functionality. 16726 16727A 16-bit (DOS) version of AcpiExec has been developed. The 16728makefile is under the acpiexec directory. 16729